Maarten Lankhorst : quartz: Fix timestamping in avi decoder.
Alexandre Julliard
julliard at winehq.org
Mon Nov 29 13:38:42 CST 2010
Module: wine
Branch: master
Commit: f0ebe19bfcf28ff7e7b6524165bfa0cf175273d7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f0ebe19bfcf28ff7e7b6524165bfa0cf175273d7
Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Mon Nov 29 10:44:17 2010 +0100
quartz: Fix timestamping in avi decoder.
---
dlls/quartz/avidec.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/dlls/quartz/avidec.c b/dlls/quartz/avidec.c
index 02f7674..dcd8093 100644
--- a/dlls/quartz/avidec.c
+++ b/dlls/quartz/avidec.c
@@ -160,8 +160,8 @@ static HRESULT WINAPI AVIDec_Receive(TransformFilter *tf, IMediaSample *pSample)
flags |= ICDECOMPRESS_PREROLL;
if (IMediaSample_IsSyncPoint(pSample) != S_OK)
flags |= ICDECOMPRESS_NOTKEYFRAME;
- if (IMediaSample_GetTime(pSample, &tStart, NULL) == S_OK &&
- AVIDec_DropSample(This, tStart))
+ hr = IMediaSample_GetTime(pSample, &tStart, &tStop);
+ if (hr == S_OK && AVIDec_DropSample(This, tStart))
flags |= ICDECOMPRESS_HURRYUP;
res = ICDecompress(This->hvid, flags, This->pBihIn, pbSrcStream, This->pBihOut, pbDstStream);
@@ -169,8 +169,10 @@ static HRESULT WINAPI AVIDec_Receive(TransformFilter *tf, IMediaSample *pSample)
ERR("Error occurred during the decompression (%x)\n", res);
/* Drop sample if its intended to be dropped */
- if (flags & ICDECOMPRESS_HURRYUP)
+ if (flags & ICDECOMPRESS_HURRYUP) {
+ hr = S_OK;
goto error;
+ }
IMediaSample_SetActualDataLength(pOutSample, This->pBihOut->biSizeImage);
@@ -178,8 +180,10 @@ static HRESULT WINAPI AVIDec_Receive(TransformFilter *tf, IMediaSample *pSample)
IMediaSample_SetDiscontinuity(pOutSample, (IMediaSample_IsDiscontinuity(pSample) == S_OK));
IMediaSample_SetSyncPoint(pOutSample, (IMediaSample_IsSyncPoint(pSample) == S_OK));
- if (IMediaSample_GetTime(pSample, &tStart, &tStop) == S_OK)
+ if (hr == S_OK)
IMediaSample_SetTime(pOutSample, &tStart, &tStop);
+ else if (hr == VFW_S_NO_STOP_TIME)
+ IMediaSample_SetTime(pOutSample, &tStart, NULL);
else
IMediaSample_SetTime(pOutSample, NULL, NULL);
More information about the wine-cvs
mailing list