Maarten Lankhorst : quartz: Set media time in the file source.

Alexandre Julliard julliard at winehq.org
Mon Apr 21 07:46:36 CDT 2008


Module: wine
Branch: master
Commit: 0458c08b95d368cba6daf1f216c0e930c6387dd6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=0458c08b95d368cba6daf1f216c0e930c6387dd6

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Fri Apr 18 16:07:40 2008 -0700

quartz: Set media time in the file source.

---

 dlls/quartz/filesource.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c
index 8704b50..930ebfc 100644
--- a/dlls/quartz/filesource.c
+++ b/dlls/quartz/filesource.c
@@ -1127,6 +1127,9 @@ static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader * iface, DWORD dw
 
     if (SUCCEEDED(hr))
     {
+        REFERENCE_TIME rtStart, rtStop;
+        REFERENCE_TIME rtSampleStart, rtSampleStop;
+
         /* get any errors */
         if (!This->bFlushing && !GetOverlappedResult(This->hFile, &pDataRq->ovl, &dwBytes, FALSE))
             hr = HRESULT_FROM_WIN32(GetLastError());
@@ -1141,7 +1144,18 @@ static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader * iface, DWORD dw
             dwBytes = 0;
         }
 
+        /* Set the time on the sample */
         IMediaSample_SetActualDataLength(pDataRq->pSample, dwBytes);
+
+        rtStart = (DWORD64)pDataRq->ovl.u.s.Offset + ((DWORD64)pDataRq->ovl.u.s.OffsetHigh << 32);
+        rtStart = MEDIATIME_FROM_BYTES(rtStart);
+        rtStop = rtStart + MEDIATIME_FROM_BYTES(dwBytes);
+
+        IMediaSample_GetTime(pDataRq->pSample, &rtSampleStart, &rtSampleStop);
+        assert(rtStart == rtSampleStart);
+        assert(rtStop <= rtSampleStop);
+
+        IMediaSample_SetTime(pDataRq->pSample, &rtStart, &rtStop);
     }
 
     /* no need to close event handle since we will close it when the pin is destroyed */




More information about the wine-cvs mailing list