Rémi Bernon : mf: Increase min_buffer_size to MF_MT_AUDIO_AVG_BYTES_PER_SECOND.

Alexandre Julliard julliard at winehq.org
Tue Aug 2 14:53:35 CDT 2022


Module: wine
Branch: master
Commit: 6d64e40776886a264465a9a90e5f7c81797904cf
URL:    https://gitlab.winehq.org/wine/wine/-/commit/6d64e40776886a264465a9a90e5f7c81797904cf

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Mon Jun 27 14:12:43 2022 +0200

mf: Increase min_buffer_size to MF_MT_AUDIO_AVG_BYTES_PER_SECOND.

When it is specified. The Resampler transform exposes the block
alignment in its output stream info cbSize, and the session then
otherwise reads data one audio frame at a time.

---

 dlls/mf/session.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/dlls/mf/session.c b/dlls/mf/session.c
index a78e7cfc473..87fe77a730f 100644
--- a/dlls/mf/session.c
+++ b/dlls/mf/session.c
@@ -1438,6 +1438,7 @@ static HRESULT session_set_transform_stream_info(struct topo_node *node)
     struct transform_stream *streams;
     unsigned int block_alignment;
     IMFMediaType *media_type;
+    UINT32 bytes_per_second;
     GUID major = { 0 };
     HRESULT hr;
 
@@ -1479,6 +1480,8 @@ static HRESULT session_set_transform_stream_info(struct topo_node *node)
                         && SUCCEEDED(IMFMediaType_GetUINT32(media_type, &MF_MT_AUDIO_BLOCK_ALIGNMENT, &block_alignment)))
                 {
                     streams[i].min_buffer_size = block_alignment;
+                    if (SUCCEEDED(IMFMediaType_GetUINT32(media_type, &MF_MT_AUDIO_AVG_BYTES_PER_SECOND, &bytes_per_second)))
+                        streams[i].min_buffer_size = max(streams[i].min_buffer_size, bytes_per_second);
                 }
                 IMFMediaType_Release(media_type);
             }




More information about the wine-cvs mailing list