[PATCH v3 2/3] mf: Generate missing MEStreamSinkPaused event in the sample grabber.
Nikolay Sivov
nsivov at codeweavers.com
Mon May 31 06:18:29 CDT 2021
On 5/31/21 1:11 PM, Giovanni Mascellani wrote:
> The following behaviors from Windows are implemented:
> * Transitions from STOPPED to PAUSED are forbidden;
> * Sample requests are only emitted for transitions from STOPPED to
> RUNNING (i.e., not when transitioning from PAUSED);
> * Transition events are emitted again when transitioning from a
> state to the same state, except when such state is PAUSED.
>
Ideally we'd be fixing such issues separately. Anyway, this looks much
closer to how it should work. One difference now is that user
OnClockPause() callback is called every time, when it should only be
called when event was fired.
> 1146 struct sample_grabber *grabber =
> impl_from_IMFClockStateSink(iface);
> 1147 HRESULT hr;
> 1148
> 1149 TRACE("%p, %s, %s.\n", iface, debugstr_time(systime),
> debugstr_time(offset));
> 1150
> 1151 hr = sample_grabber_set_state(grabber, SINK_STATE_RUNNING);
> 1152 if (FAILED(hr))
> 1153 return hr;
> 1154
> 1155 return
> IMFSampleGrabberSinkCallback_OnClockStart(sample_grabber_get_callback(grabber),
> systime, offset);
This could be nicer, without additional error paths. Maybe by invoking
callback from the helper.
More information about the wine-devel
mailing list