Commit c4e32aad authored by Maarten Lankhorst's avatar Maarten Lankhorst Committed by Alexandre Julliard

quartz: Do timekeeping in the avi decoder.

Fixes the timestamps generated.
parent 6d751868
...@@ -78,6 +78,7 @@ static HRESULT AVIDec_ProcessSampleData(TransformFilterImpl* pTransformFilter, I ...@@ -78,6 +78,7 @@ static HRESULT AVIDec_ProcessSampleData(TransformFilterImpl* pTransformFilter, I
LPBYTE pbDstStream; LPBYTE pbDstStream;
DWORD cbSrcStream; DWORD cbSrcStream;
LPBYTE pbSrcStream; LPBYTE pbSrcStream;
LONGLONG tStart, tStop;
hr = IMediaSample_GetPointer(pSample, &pbSrcStream); hr = IMediaSample_GetPointer(pSample, &pbSrcStream);
if (FAILED(hr)) if (FAILED(hr))
...@@ -124,6 +125,16 @@ static HRESULT AVIDec_ProcessSampleData(TransformFilterImpl* pTransformFilter, I ...@@ -124,6 +125,16 @@ static HRESULT AVIDec_ProcessSampleData(TransformFilterImpl* pTransformFilter, I
if (res != ICERR_OK) if (res != ICERR_OK)
ERR("Error occurred during the decompression (%x)\n", res); ERR("Error occurred during the decompression (%x)\n", res);
IMediaSample_SetPreroll(pOutSample, (IMediaSample_IsPreroll(pSample) == S_OK));
IMediaSample_SetDiscontinuity(pOutSample, (IMediaSample_IsDiscontinuity(pSample) == S_OK));
IMediaSample_SetSyncPoint(pOutSample, (IMediaSample_IsSyncPoint(pSample) == S_OK));
if (IMediaSample_GetTime(pSample, &tStart, &tStop) == S_OK)
IMediaSample_SetTime(pOutSample, &tStart, &tStop);
else
IMediaSample_SetTime(pOutSample, NULL, NULL);
hr = OutputPin_SendSample((OutputPin*)This->tf.ppPins[1], pOutSample); hr = OutputPin_SendSample((OutputPin*)This->tf.ppPins[1], pOutSample);
if (hr != S_OK && hr != VFW_E_NOT_CONNECTED) { if (hr != S_OK && hr != VFW_E_NOT_CONNECTED) {
ERR("Error sending sample (%x)\n", hr); ERR("Error sending sample (%x)\n", hr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment