00001
00031 #ifndef _OMX_CLOCKSRC_COMPONENT_H_
00032 #define _OMX_CLOCKSRC_COMPONENT_H_
00033
00034 #include <OMX_Types.h>
00035 #include <OMX_Component.h>
00036 #include <OMX_Core.h>
00037 #include <OMX_Audio.h>
00038 #include <pthread.h>
00039 #include <omx_base_source.h>
00040 #include <string.h>
00041 #include <sys/time.h>
00042
00044 #define MAX_CLOCK_PORTS 8
00045
00046
00059 DERIVEDCLASS(omx_clocksrc_component_PrivateType, omx_base_source_PrivateType)
00060 #define omx_clocksrc_component_PrivateType_FIELDS omx_base_source_PrivateType_FIELDS \
00061 OMX_TIME_CONFIG_CLOCKSTATETYPE sClockState; \
00062 OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE sRefClock; \
00063 tsem_t* startTimeSem; \
00064 tsem_t* clockEventSem; \
00065 tsem_t* clockEventCompleteSem; \
00066 OMX_TICKS WallTimeBase; \
00067 OMX_TICKS MediaTimeBase; \
00068 OMX_TIME_UPDATETYPE eUpdateType; \
00069 OMX_TIME_CONFIG_TIMESTAMPTYPE sMinStartTime; \
00070 OMX_TIME_CONFIG_SCALETYPE sConfigScale;
00071 ENDCLASS(omx_clocksrc_component_PrivateType)
00072
00073
00074 OMX_ERRORTYPE omx_clocksrc_component_Constructor(OMX_COMPONENTTYPE *openmaxStandComp,OMX_STRING cComponentName);
00075 OMX_ERRORTYPE omx_clocksrc_component_Destructor(OMX_COMPONENTTYPE *openmaxStandComp);
00076
00077 void omx_clocksrc_component_BufferMgmtCallback(
00078 OMX_COMPONENTTYPE *openmaxStandComp,
00079 OMX_BUFFERHEADERTYPE* inputbuffer);
00080
00081 OMX_ERRORTYPE omx_clocksrc_component_GetParameter(
00082 OMX_IN OMX_HANDLETYPE hComponent,
00083 OMX_IN OMX_INDEXTYPE nParamIndex,
00084 OMX_INOUT OMX_PTR ComponentParameterStructure);
00085
00086 OMX_ERRORTYPE omx_clocksrc_component_SetParameter(
00087 OMX_IN OMX_HANDLETYPE hComponent,
00088 OMX_IN OMX_INDEXTYPE nParamIndex,
00089 OMX_IN OMX_PTR ComponentParameterStructure);
00090
00091 OMX_ERRORTYPE omx_clocksrc_component_SetConfig(
00092 OMX_IN OMX_HANDLETYPE hComponent,
00093 OMX_IN OMX_INDEXTYPE nIndex,
00094 OMX_IN OMX_PTR pComponentConfigStructure);
00095
00096 OMX_ERRORTYPE omx_clocksrc_component_GetConfig(
00097 OMX_IN OMX_HANDLETYPE hComponent,
00098 OMX_IN OMX_INDEXTYPE nIndex,
00099 OMX_INOUT OMX_PTR pComponentConfigStructure);
00100
00101 void* omx_clocksrc_BufferMgmtFunction (void* param);
00102
00103 OMX_ERRORTYPE omx_clocksrc_component_SendCommand(
00104 OMX_IN OMX_HANDLETYPE hComponent,
00105 OMX_IN OMX_COMMANDTYPE Cmd,
00106 OMX_IN OMX_U32 nParam,
00107 OMX_IN OMX_PTR pCmdData);
00108
00109 OMX_ERRORTYPE clocksrc_port_FlushProcessingBuffers(omx_base_PortType *openmaxStandPort);
00110
00111 #endif