Aric Stewart : wineqtdecoder: Improve and differentiate Sample Time and MediaTime.
Alexandre Julliard
julliard at winehq.org
Mon Jan 16 13:01:33 CST 2012
Module: wine
Branch: master
Commit: 2ea8f8a4a062b2f2832d60afce377bcc1da7725c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ea8f8a4a062b2f2832d60afce377bcc1da7725c
Author: Aric Stewart <aric at codeweavers.com>
Date: Mon Jan 16 10:13:12 2012 -0600
wineqtdecoder: Improve and differentiate Sample Time and MediaTime.
---
dlls/wineqtdecoder/qtsplitter.c | 18 ++++++++----------
1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c
index a42f984..17f173c 100644
--- a/dlls/wineqtdecoder/qtsplitter.c
+++ b/dlls/wineqtdecoder/qtsplitter.c
@@ -467,6 +467,7 @@ static DWORD WINAPI QTSplitter_thread(LPVOID data)
do
{
LONGLONG tStart=0, tStop=0;
+ LONGLONG mStart=0, mStop=0;
float time;
GetMovieNextInterestingTime(This->pQTMovie, nextTimeStep, 0, NULL, movie_time, 1, &next_time, NULL);
@@ -485,6 +486,9 @@ static DWORD WINAPI QTSplitter_thread(LPVOID data)
TRACE("In loop at time %ld\n",movie_time);
TRACE("In Next time %ld\n",next_time);
+ mStart = movie_time;
+ mStop = next_time;
+
time = (float)movie_time / tr.scale;
tStart = time * 10000000;
time = (float)next_time / tr.scale;
@@ -539,11 +543,8 @@ static DWORD WINAPI QTSplitter_thread(LPVOID data)
IMediaSample_SetActualDataLength(sample, frames * pvi->nBlockAlign);
- IMediaSample_SetMediaTime(sample, &tStart, &tStop);
- if (tStart)
- IMediaSample_SetTime(sample, &tStart, &tStop);
- else
- IMediaSample_SetTime(sample, NULL, NULL);
+ IMediaSample_SetMediaTime(sample, &mStart, &mStop);
+ IMediaSample_SetTime(sample, &tStart, &tStop);
hr = OutputQueue_Receive(This->pAudio_Pin->queue, sample);
TRACE("Audio Delivered (%x)\n",hr);
@@ -597,11 +598,8 @@ audio_error:
IMediaSample_SetActualDataLength(sample, This->outputSize);
- IMediaSample_SetMediaTime(sample, &tStart, &tStop);
- if (tStart)
- IMediaSample_SetTime(sample, &tStart, &tStop);
- else
- IMediaSample_SetTime(sample, NULL, NULL);
+ IMediaSample_SetMediaTime(sample, &mStart, &mStop);
+ IMediaSample_SetTime(sample, &tStart, &tStop);
hr = OutputQueue_Receive(This->pVideo_Pin->queue, sample);
TRACE("Video Delivered (%x)\n",hr);
More information about the wine-cvs
mailing list