Module: wine
Branch: master
Commit: 9706a70bdaf16203e250f9cc2254e6fb0c830848
URL:
https://gitlab.winehq.org/wine/wine/-/commit/9706a70bdaf16203e250f9cc2254e6…
Author: Nikolay Sivov <nsivov(a)codeweavers.com>
Date: Mon Oct 31 21:48:06 2022 +0300
mf/samplegrabber: Send MEStreamSinkScrubSampleComplete event.
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/mf/samplegrabber.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/dlls/mf/samplegrabber.c b/dlls/mf/samplegrabber.c
index 84b8d71d6be..e41e74d35ac 100644
--- a/dlls/mf/samplegrabber.c
+++ b/dlls/mf/samplegrabber.c
@@ -83,6 +83,7 @@ struct sample_grabber
IUnknown *cancel_key;
UINT32 ignore_clock;
UINT64 sample_time_offset;
+ float rate;
enum sink_state state;
CRITICAL_SECTION cs;
};
@@ -1138,7 +1139,13 @@ static HRESULT sample_grabber_set_state(struct sample_grabber
*grabber, enum sin
}
do_callback = state != grabber->state || state != SINK_STATE_PAUSED;
if (do_callback)
+ {
+ if (grabber->rate == 0.0f && state == SINK_STATE_RUNNING)
+ IMFStreamSink_QueueEvent(&grabber->IMFStreamSink_iface,
MEStreamSinkScrubSampleComplete,
+ &GUID_NULL, S_OK, NULL);
+
IMFStreamSink_QueueEvent(&grabber->IMFStreamSink_iface,
events[state], &GUID_NULL, S_OK, NULL);
+ }
grabber->state = state;
}
}
@@ -1212,7 +1219,10 @@ static HRESULT WINAPI
sample_grabber_clock_sink_OnClockSetRate(IMFClockStateSink
if (grabber->is_shut_down)
hr = MF_E_SHUTDOWN;
else
+ {
IMFStreamSink_QueueEvent(&grabber->IMFStreamSink_iface,
MEStreamSinkRateChanged, &GUID_NULL, S_OK, NULL);
+ grabber->rate = rate;
+ }
LeaveCriticalSection(&grabber->cs);
@@ -1433,6 +1443,7 @@ static HRESULT sample_grabber_create_object(IMFAttributes
*attributes, void *use
object->IMFMediaTypeHandler_iface.lpVtbl =
&sample_grabber_stream_type_handler_vtbl;
object->timer_callback.lpVtbl = &sample_grabber_stream_timer_callback_vtbl;
object->refcount = 1;
+ object->rate = 1.0f;
if (FAILED(IMFSampleGrabberSinkCallback_QueryInterface(context->callback,
&IID_IMFSampleGrabberSinkCallback2,
(void **)&object->callback2)))
{