[PATCH 1/2] winegstreamer: Fix IQualityControl::Notify
Andrew Eikum
aeikum at codeweavers.com
Thu May 19 09:14:48 CDT 2016
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
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;
}
--
2.8.2
More information about the wine-patches
mailing list