📄 pvgsmamrdecoderinterface.h
字号:
/* ------------------------------------------------------------------ * Copyright (C) 2008 PacketVideo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * See the License for the specific language governing permissions * and limitations under the License. * ------------------------------------------------------------------- *///////////////////////////////////////////////////////////////////////////////////// //// File: pvgsmamrdecoderinterface.h //// ////////////////////////////////////////////////////////////////////////////////////#ifndef _PVGSMAMR_DECODER_INTERFACE_H#define _PVGSMAMR_DECODER_INTERFACE_H#include "oscl_base.h"/*----------------------------------------------------------------------------; ENUMERATED TYPEDEF'S----------------------------------------------------------------------------*/typedef enum{ /* * One word (2-byte) to indicate type of frame type. * One word (2-byte) to indicate frame type. * One word (2-byte) to indicate mode. * N words (2-byte) containing N bits (bit 0 = 0xff81, bit 1 = 0x007f). */ ETS = 0, /* Both AMR-Narrowband and AMR-Wideband */ /* * One word (2-byte) for sync word (good frames: 0x6b21, bad frames: 0x6b20) * One word (2-byte) for frame length N. * N words (2-byte) containing N bits (bit 0 = 0x007f, bit 1 = 0x0081). */ ITU, /* AMR-Wideband */ /* * AMR-WB MIME/storage format, see RFC 3267 (sections 5.1 and 5.3) for details */ MIME_IETF, WMF, /* AMR-Narrowband */ IF2 /* AMR-Narrowband */} bitstream_format;/*----------------------------------------------------------------------------; STRUCTURES TYPEDEF'S----------------------------------------------------------------------------*/typedef struct{ int16 prev_ft; int16 prev_mode;} RX_State;typedef struct tPVAmrDecoderExternal{ /* * INPUT: * Pointer to the input buffer that contains the encoded bistream data. * The data is filled in such that the first bit transmitted is * the most-significant bit (MSB) of the first array element. * The buffer is accessed in a linear fashion for speed, and the number of * bytes consumed varies frame to frame. This is use for mime/ietf data */ uint8 *pInputBuffer; /* * INPUT: * Pointer to the input buffer that contains the encoded stream data. * The data is filled such that the first bit transmitted is * in the first int16 element. * The buffer is accessed in a linear fashion for speed, and the number of * bytes consumed varies frame to frame. */ int16 *pInputSampleBuffer; /* * INPUT: (but what is pointed to is an output) * Pointer to the output buffer to hold the 16-bit PCM audio samples. */ int16 *pOutputBuffer; /* * INPUT: * Number of requested output audio channels. This relieves the calling * environment from having to perform stereo-to-mono or mono-to-stereo * conversions. */ int32 desiredChannels; /* * INPUT: * Format type of the encoded bitstream. */ bitstream_format input_format; /* * OUTPUT: * The sampling rate decoded from the bitstream, in units of * samples/second. For this release of the library this value does * not change from frame to frame, but future versions will. */ int32 samplingRate; /* * OUTPUT: * This value is the bitrate in units of bits/second. IT * is calculated using the number of bits consumed for the current frame, * and then multiplying by the sampling_rate, divided by points in a frame. * This value can changes frame to frame. */ int32 bitRate; /* * OUTPUT: * The number of channels decoded from the bitstream. The output data * will have be the amount specified in the variable desiredChannels, * this output is informative only, and can be ignored. */ int32 encodedChannels; /* * OUTPUT: * This value is the number of output PCM samples per channel. * It is 320. */ int16 frameLength; /* * OUTPUT: * This value is the quality indicator. 1 (good) 0 (bad) */ uint8 quality; /* * OUTPUT: * GSM AMR WB mode */ int16 mode; int16 mode_old; /* * OUTPUT: * GSM AMR WB frame type */ int16 frame_type; int16 reset_flag; int16 reset_flag_old; /* * OUTPUT: * Decoder status */ int32 status; /* * OUTPUT: * Rx status state */ RX_State rx_state;} tPVAmrDecoderExternal;// CDecoder_AMRInterfaceclass CDecoder_AMRInterface{ public: OSCL_IMPORT_REF virtual int32 StartL(tPVAmrDecoderExternal * pExt, bool aAllocateInputBuffer = false, bool aAllocateOutputBuffer = false) = 0; OSCL_IMPORT_REF virtual int32 ExecuteL(tPVAmrDecoderExternal * pExt) = 0; OSCL_IMPORT_REF virtual int32 ResetDecoderL() = 0; OSCL_IMPORT_REF virtual void StopL() = 0; OSCL_IMPORT_REF virtual void TerminateDecoderL() = 0;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -