{
OMX_ERRORTYPE error;
clock_mutex.Lock();
- OMX_TIME_CONFIG_CLOCKSTATETYPE clock_conf;
- memset(&clock_conf,0,sizeof(clock_conf));
- clock_conf.nSize=sizeof(clock_conf);
- clock_conf.nVersion.nVersion=OMX_VERSION;
- clock_conf.eState=OMX_TIME_ClockStateRunning;
- clock_conf.nStartTime=0;
- clock_conf.nOffset=0;
- clock_conf.nWaitMask=OMX_CLOCKPORT1;
- error=OMX_SetConfig(omx_clock,OMX_IndexConfigTimeClockState,&clock_conf);
- if (error!=OMX_ErrorNone) {
- Log::getInstance()->log("Video", Log::DEBUG, "ClockUnpause IndexConfigTimeClockState failed %x", error);
+ if (clock_references>0) {
+ OMX_TIME_CONFIG_CLOCKSTATETYPE clock_conf;
+ memset(&clock_conf,0,sizeof(clock_conf));
+ clock_conf.nSize=sizeof(clock_conf);
+ clock_conf.nVersion.nVersion=OMX_VERSION;
+ clock_conf.eState=OMX_TIME_ClockStateRunning;
+ clock_conf.nStartTime=0;
+ clock_conf.nOffset=0;
+ clock_conf.nWaitMask=OMX_CLOCKPORT1;
+ error=OMX_SetConfig(omx_clock,OMX_IndexConfigTimeClockState,&clock_conf);
+ if (error!=OMX_ErrorNone) {
+ Log::getInstance()->log("Video", Log::DEBUG, "ClockUnpause IndexConfigTimeClockState failed %x", error);
+ }
}
-
clock_mutex.Unlock();
}
{
OMX_ERRORTYPE error;
clock_mutex.Lock();
- OMX_TIME_CONFIG_CLOCKSTATETYPE clock_conf;
- memset(&clock_conf,0,sizeof(clock_conf));
- clock_conf.nSize=sizeof(clock_conf);
- clock_conf.nVersion.nVersion=OMX_VERSION;
- clock_conf.eState=OMX_TIME_ClockStateStopped;
- clock_conf.nStartTime=0;
- clock_conf.nOffset=0;
- clock_conf.nWaitMask=OMX_CLOCKPORT1;
- error=OMX_SetConfig(omx_clock,OMX_IndexConfigTimeClockState,&clock_conf);
- if (error!=OMX_ErrorNone) {
- Log::getInstance()->log("Video", Log::DEBUG, "ClockUnpause IndexConfigTimeClockState failed %x", error);
+ if (clock_references>0) {
+ OMX_TIME_CONFIG_CLOCKSTATETYPE clock_conf;
+ memset(&clock_conf,0,sizeof(clock_conf));
+ clock_conf.nSize=sizeof(clock_conf);
+ clock_conf.nVersion.nVersion=OMX_VERSION;
+ clock_conf.eState=OMX_TIME_ClockStateStopped;
+ clock_conf.nStartTime=0;
+ clock_conf.nOffset=0;
+ clock_conf.nWaitMask=OMX_CLOCKPORT1;
+ error=OMX_SetConfig(omx_clock,OMX_IndexConfigTimeClockState,&clock_conf);
+ if (error!=OMX_ErrorNone) {
+ Log::getInstance()->log("Video", Log::DEBUG, "ClockUnpause IndexConfigTimeClockState failed %x", error);
+ }
}
clock_mutex.Unlock();
}
void VideoOMX::PrepareMediaSample(const MediaPacketList& mplist,UINT samplepos)
{
- mediapackets.clear();
- list<MediaPacket>::const_iterator begin=mplist.begin();
- list<MediaPacket>::const_iterator itty=mplist.begin();
- advance(itty,min(mplist.size(),50));
- mediapackets.insert(mediapackets.begin(),begin,itty);//front
+ mediapackets.clear();
+ list<MediaPacket>::const_iterator begin=mplist.begin();
+ list<MediaPacket>::const_iterator itty=mplist.begin();
+ advance(itty,min(mplist.size(),10));
+ mediapackets.insert(mediapackets.begin(),begin,itty);//front
}
UINT VideoOMX::DeliverMediaSample(UCHAR* buffer, UINT *samplepos)
if (!omx_running) return 0; // if we are not runnig do not do this
if (paused) return 0; //Block if we pause
- long long current_media_time=GetCurrentSystemTime()+playbacktimeoffset;
+ if (packet.synched && FrameSkip(packet.presentation_time)) {
+ *samplepos=packet.length;
+ Log::getInstance()->log("Video", Log::DEBUG, "DeliverMediaPacketOMX Frameskip");
+ *samplepos=packet.length;
+ return packet.length;
+ }
+ //long long current_media_time=GetCurrentSystemTime()+playbacktimeoffset;
/* if (packet.synched &&
(packet.presentation_time<0 /*|| // preroll skip frames
(packet.presentation_time+5000000LL)<(current_media_time)*)) { // we are late skip