Nikolay Sivov (@nsivov) commented about dlls/winegstreamer/media_source.c:
hr = IMFPresentationDescriptor_Clone(source->pres_desc, descriptor);
- else if (SUCCEEDED(hr = MFCreatePresentationDescriptor(source->stream_count, source->descriptors, descriptor)))
- {
if (FAILED(hr = IMFPresentationDescriptor_SetUINT64(*descriptor, &MF_PD_DURATION, source->duration)))
WARN("Failed to set presentation descriptor MF_PD_DURATION, hr %#lx\n", hr);
for (i = 0; i < source->stream_count; ++i)
{
if (!source->streams[i]->active)
continue;
if (FAILED(hr = IMFPresentationDescriptor_SelectStream(*descriptor, i)))
WARN("Failed to select stream %u, hr %#lx\n", i, hr);
}
hr = S_OK;
- }
Why does it check for "active"? Before this change all streams were selected. I don't think CreatePresentationDescriptor() should reflect source state changes.