Andrew Eikum : winegstreamer: Fix IQualityControl::Notify.

Alexandre Julliard julliard at wine.codeweavers.com
Thu May 19 10:32:08 CDT 2016


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

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Thu May 19 09:14:48 2016 -0500

winegstreamer: Fix IQualityControl::Notify.

Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winegstreamer/gstdemux.c | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index f0b30e2..97648bc 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -1663,15 +1663,28 @@ static ULONG WINAPI GST_QualityControl_Release(IQualityControl *iface)
 static HRESULT WINAPI GST_QualityControl_Notify(IQualityControl *iface, IBaseFilter *sender, Quality qm)
 {
     GSTOutPin *pin = impl_from_IQualityControl(iface);
-    REFERENCE_TIME late = qm.Late;
+    GstEvent *evt;
+
     TRACE("(%p)->(%p, { 0x%x %u %s %s })\n", pin, sender,
             qm.Type, qm.Proportion,
             wine_dbgstr_longlong(qm.Late),
             wine_dbgstr_longlong(qm.TimeStamp));
+
     mark_wine_thread();
-    if (qm.Late < 0 && -qm.Late > qm.TimeStamp)
-        late = -qm.TimeStamp;
-    gst_pad_push_event(pin->my_sink, gst_event_new_qos(late <= 0 ? GST_QOS_TYPE_OVERFLOW : GST_QOS_TYPE_UNDERFLOW, 1000./qm.Proportion, late*100, qm.TimeStamp*100));
+
+    if (qm.Type == Flood)
+        qm.Late = 0;
+
+    evt = gst_event_new_qos(qm.Type == Famine ? GST_QOS_TYPE_UNDERFLOW : GST_QOS_TYPE_OVERFLOW,
+            qm.Proportion / 1000., qm.Late * 100, qm.TimeStamp * 100);
+
+    if (!evt) {
+        WARN("Failed to create QOS event\n");
+        return E_INVALIDARG;
+    }
+
+    gst_pad_push_event(pin->my_sink, evt);
+
     return S_OK;
 }
 




More information about the wine-cvs mailing list