On 5/7/21 11:56 AM, Giovanni Mascellani wrote:
static HRESULT WINAPI media_source_rate_control_SetRate(IMFRateControl *iface, BOOL thin, float rate) { + struct media_source *source = impl_from_IMFRateControl(iface); + PROPVARIANT pv; + FIXME("%p, %d, %f.\n", iface, thin, rate);
if (rate < 0.0f) return MF_E_REVERSE_UNSUPPORTED; + if (rate > 1e6) + return MF_E_UNSUPPORTED_RATE;
- if (thin) - return MF_E_THINNING_UNSUPPORTED; + source->rate = rate; + source->thinning = thin;
- if (rate != 1.0f) - return MF_E_UNSUPPORTED_RATE; + pv.vt = VT_R4; + pv.fltVal = rate; + IMFMediaEventQueue_QueueEventParamVar(source->event_queue, MESourceRateChanged, &GUID_NULL, S_OK, &pv);
return S_OK; } Does it send MESourceRateChanged even when rate hasn't changed?