Maarten Lankhorst : winegstreamer: Forward media time on transform filter.

Alexandre Julliard julliard at winehq.org
Mon Nov 8 11:46:21 CST 2010


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

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Sun Nov  7 15:02:50 2010 +0100

winegstreamer: Forward media time on transform filter.

---

 dlls/winegstreamer/gsttffilter.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/dlls/winegstreamer/gsttffilter.c b/dlls/winegstreamer/gsttffilter.c
index 9339299..f825a51 100644
--- a/dlls/winegstreamer/gsttffilter.c
+++ b/dlls/winegstreamer/gsttffilter.c
@@ -166,6 +166,14 @@ static GstFlowReturn got_data(GstPad *pad, GstBuffer *buf) {
     }
     else
         IMediaSample_SetTime(sample, NULL, NULL);
+    if (GST_BUFFER_OFFSET_IS_VALID(buf) &&
+        GST_BUFFER_OFFSET_END_IS_VALID(buf)) {
+        tStart = buf->offset / 100;
+        tStop = buf->offset_end / 100;
+        IMediaSample_SetMediaTime(sample, &tStart, &tStop);
+    }
+    else
+        IMediaSample_SetMediaTime(sample, NULL, NULL);
 
     IMediaSample_SetDiscontinuity(sample, GST_BUFFER_FLAG_IS_SET(buf, GST_BUFFER_FLAG_DISCONT));
     IMediaSample_SetPreroll(sample, GST_BUFFER_FLAG_IS_SET(buf, GST_BUFFER_FLAG_PREROLL));
@@ -232,6 +240,10 @@ static HRESULT WINAPI Gstreamer_transform_ProcessData(TransformFilter *iface, IM
         if (hr == S_OK)
             buf->duration = (tStop - tStart)*100;
     }
+    if (IMediaSample_GetMediaTime(sample, &tStart, &tStop) == S_OK) {
+        buf->offset = tStart * 100;
+        buf->offset_end = tStop * 100;
+    }
     if (IMediaSample_IsDiscontinuity(sample) == S_OK)
         GST_BUFFER_FLAG_SET(buf, GST_BUFFER_FLAG_DISCONT);
     if (IMediaSample_IsPreroll(sample) == S_OK)




More information about the wine-cvs mailing list