From: Rémi Bernon rbernon@codeweavers.com
--- dlls/mfreadwrite/reader.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c index 58de40c772b..5cd4641a0d4 100644 --- a/dlls/mfreadwrite/reader.c +++ b/dlls/mfreadwrite/reader.c @@ -1912,9 +1912,14 @@ static HRESULT source_reader_create_transform(struct source_reader *reader, BOOL list_init(&entry->entry); entry->category = category;
- if (IsEqualGUID(&out_type.guidMajorType, &MFMediaType_Audio)) - IMFMediaType_GetUINT32(output_type, &MF_MT_AUDIO_BLOCK_ALIGNMENT, - &entry->min_buffer_size); + if (IsEqualGUID(&out_type.guidMajorType, &MFMediaType_Audio) + && SUCCEEDED(IMFMediaType_GetUINT32(output_type, &MF_MT_AUDIO_BLOCK_ALIGNMENT, &entry->min_buffer_size))) + { + UINT32 bytes_per_second; + + if (SUCCEEDED(IMFMediaType_GetUINT32(output_type, &MF_MT_AUDIO_AVG_BYTES_PER_SECOND, &bytes_per_second))) + entry->min_buffer_size = max(entry->min_buffer_size, bytes_per_second); + }
count = 0; if (SUCCEEDED(hr = MFTEnum(category, 0, &in_type, allow_processor ? NULL : &out_type, NULL, &classes, &count)))