00001 00030 #ifndef _OMX_ALSASINK_COMPONENT_H_ 00031 #define _OMX_ALSASINK_COMPONENT_H_ 00032 00033 #include <OMX_Types.h> 00034 #include <OMX_Component.h> 00035 #include <OMX_Core.h> 00036 #include <OMX_Audio.h> 00037 #include <pthread.h> 00038 #include <omx_base_sink.h> 00039 #include <alsa/asoundlib.h> 00040 00050 DERIVEDCLASS(omx_alsasink_component_PrivateType, omx_base_sink_PrivateType) 00051 #define omx_alsasink_component_PrivateType_FIELDS omx_base_sink_PrivateType_FIELDS \ 00052 OMX_AUDIO_PARAM_PCMMODETYPE sPCMModeParam; \ 00053 char AudioPCMConfigured; \ 00054 snd_pcm_t* playback_handle; \ 00055 OMX_S32 xScale; \ 00056 OMX_TIME_CLOCKSTATE eState; \ 00057 snd_pcm_hw_params_t* hw_params; 00058 ENDCLASS(omx_alsasink_component_PrivateType) 00059 00060 /* Component private entry points declaration */ 00061 OMX_ERRORTYPE omx_alsasink_component_Constructor(OMX_COMPONENTTYPE *openmaxStandComp,OMX_STRING cComponentName); 00062 OMX_ERRORTYPE omx_alsasink_component_Destructor(OMX_COMPONENTTYPE *openmaxStandComp); 00063 00064 void omx_alsasink_component_BufferMgmtCallback( 00065 OMX_COMPONENTTYPE *openmaxStandComp, 00066 OMX_BUFFERHEADERTYPE* inputbuffer); 00067 00068 OMX_ERRORTYPE omx_alsasink_component_port_SendBufferFunction( 00069 omx_base_PortType *openmaxStandPort, 00070 OMX_BUFFERHEADERTYPE* pBuffer); 00071 00072 /* to handle the communication at the clock port */ 00073 OMX_BOOL omx_alsasink_component_ClockPortHandleFunction( 00074 omx_alsasink_component_PrivateType* omx_alsasink_component_Private, 00075 OMX_BUFFERHEADERTYPE* inputbuffer); 00076 00077 OMX_ERRORTYPE omx_alsasink_component_GetParameter( 00078 OMX_IN OMX_HANDLETYPE hComponent, 00079 OMX_IN OMX_INDEXTYPE nParamIndex, 00080 OMX_INOUT OMX_PTR ComponentParameterStructure); 00081 00082 OMX_ERRORTYPE omx_alsasink_component_SetParameter( 00083 OMX_IN OMX_HANDLETYPE hComponent, 00084 OMX_IN OMX_INDEXTYPE nParamIndex, 00085 OMX_IN OMX_PTR ComponentParameterStructure); 00086 00087 #endif