同步播放时的几种控制处理:
采用外部时钟进行控制,时钟以计数的形式增加,播放线程中使用GetTime()-m_dwStartTime来表示播放时间。
两个时间:m_fRefClock, m_dwStartTime(播放时获取的起始时间) = GetTime()
正常播放:根据外部时钟,比较音,视频的时间戳决定音视频的播放
快进播放:把当前的视频播放时刻保存到m_fRefClock,对于m_dwStartTime重置。在快进后的播放中,时钟需加上m_fRefClock
快放播放:重置m_dwStartTime,对于重置后获取的时间差进行处理,如*2,需要对(GetTime()-m_dwStartTime)*2,然后加上
m_fRefClock再与音视频的时间戳进行比较。
DWORD GetTime()
{
struct timeval t;
struct _timeb timebuffer;
_ftime( &timebuffer );
t.tv_sec = timebuffer.time;
t.tv_usec = timebuffer.millitm; //ms
return (t.tv_sec * 1000 + t.tv_usec);
}