00001 00031 #ifndef _OMX_VORBISDEC_COMPONENT_H_ 00032 #define _OMX_VORBISDEC_COMPONENT_H_ 00033 00034 #include <OMX_Types.h> 00035 #include <OMX_Component.h> 00036 #include <OMX_Core.h> 00037 #include <pthread.h> 00038 #include <stdlib.h> 00039 #include <string.h> 00040 #include <omx_base_filter.h> 00041 00042 /* Specific include files for vorbis decoding */ 00043 #include <vorbis/codec.h> 00044 #include <math.h> 00045 00046 #define AUDIO_DEC_BASE_NAME "OMX.st.audio_decoder" 00047 #define AUDIO_DEC_VORBIS_NAME "OMX.st.audio_decoder.ogg.single" 00048 #define AUDIO_DEC_VORBIS_ROLE "audio_decoder.ogg" 00049 00052 DERIVEDCLASS(omx_vorbisdec_component_PrivateType, omx_base_filter_PrivateType) 00053 #define omx_vorbisdec_component_PrivateType_FIELDS omx_base_filter_PrivateType_FIELDS \ 00054 \ 00055 tsem_t* avCodecSyncSem; \ 00056 \ 00057 OMX_AUDIO_PARAM_VORBISTYPE pAudioVorbis; \ 00058 \ 00059 OMX_AUDIO_PARAM_PCMMODETYPE pAudioPcmMode; \ 00060 \ 00061 OMX_U16 minBufferLength; \ 00062 \ 00063 OMX_U8* inputCurrBuffer;\ 00064 \ 00065 OMX_U32 inputCurrLength;\ 00066 \ 00067 OMX_U8* internalOutputBuffer;\ 00068 \ 00069 OMX_S32 packetNumber;\ 00070 \ 00071 OMX_S32 positionInOutBuf; \ 00072 \ 00073 OMX_S32 isNewBuffer; \ 00074 \ 00075 OMX_U32 audio_coding_type; \ 00076 \ 00077 ogg_sync_state oy; \ 00078 \ 00079 ogg_stream_state os; \ 00080 \ 00081 ogg_page og; \ 00082 \ 00083 ogg_packet op; \ 00084 \ 00085 vorbis_info vi; \ 00086 \ 00087 vorbis_comment vc; \ 00088 \ 00089 vorbis_dsp_state vd; \ 00090 \ 00091 vorbis_block vb; \ 00092 \ 00093 OMX_S32 convsize; 00094 ENDCLASS(omx_vorbisdec_component_PrivateType) 00095 00096 /* Component private entry points declaration */ 00097 OMX_ERRORTYPE omx_vorbisdec_component_Constructor(OMX_COMPONENTTYPE *openmaxStandComp,OMX_STRING cComponentName); 00098 OMX_ERRORTYPE omx_vorbisdec_component_Destructor(OMX_COMPONENTTYPE *openmaxStandComp); 00099 OMX_ERRORTYPE omx_vorbisdec_component_Init(OMX_COMPONENTTYPE *openmaxStandComp); 00100 OMX_ERRORTYPE omx_vorbisdec_component_Deinit(OMX_COMPONENTTYPE *openmaxStandComp); 00101 OMX_ERRORTYPE omx_vorbis_decoder_MessageHandler(OMX_COMPONENTTYPE*,internalRequestMessageType*); 00102 00103 void omx_vorbisdec_component_BufferMgmtCallbackVorbis( 00104 OMX_COMPONENTTYPE *openmaxStandComp, 00105 OMX_BUFFERHEADERTYPE* inputbuffer, 00106 OMX_BUFFERHEADERTYPE* outputbuffer); 00107 00108 OMX_ERRORTYPE omx_vorbisdec_component_GetParameter( 00109 OMX_IN OMX_HANDLETYPE hComponent, 00110 OMX_IN OMX_INDEXTYPE nParamIndex, 00111 OMX_INOUT OMX_PTR ComponentParameterStructure); 00112 00113 OMX_ERRORTYPE omx_vorbisdec_component_SetParameter( 00114 OMX_IN OMX_HANDLETYPE hComponent, 00115 OMX_IN OMX_INDEXTYPE nParamIndex, 00116 OMX_IN OMX_PTR ComponentParameterStructure); 00117 00118 void omx_vorbisdec_component_SetInternalParameters(OMX_COMPONENTTYPE *openmaxStandComp); 00119 00120 00121 #endif