Nikolay Sivov (@nsivov) commented about dlls/mfmediaengine/main.c:
LeaveCriticalSection(&engine->cs);
return hr;
}
hr = create_time_range(seekable);
if (SUCCEEDED(hr) && !isnan(engine->duration) && engine->presentation.source)
{
hr = IMFMediaSource_GetCharacteristics(engine->presentation.source, &flags);
if (SUCCEEDED(hr) && (flags & MFBYTESTREAM_IS_SEEKABLE))
hr = IMFMediaTimeRange_AddRange(*seekable, 0.0, engine->duration);
if (FAILED(hr))
IMFMediaTimeRange_Release(*seekable);
}
LeaveCriticalSection(&engine->cs);
I'd like to keep a pair of Enter/Leave, without early returns. This also needs some cleanup to make sure released non-null *seekable is returned on failure.