Nikolay Sivov (@nsivov) commented about dlls/mfmediaengine/main.c:
+ 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); + *seekable = NULL; + } + } + }
LeaveCriticalSection(&engine->cs); It's slightly better to assign to *seekable once, after Leave*(), but that's not critical.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/3536#note_41939