[PATCH] winegstreamer: Set specific large buffer sizes for decodebin

Andrew Eikum aeikum at codeweavers.com
Wed Mar 17 13:49:25 CDT 2021


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---

Setting them to 0 just means use the default:

    https://gstreamer.freedesktop.org/documentation/playback/decodebin.html?gi-language=c#decodebin:max-size-buffers

 dlls/winegstreamer/gst_private.h  |  2 +-
 dlls/winegstreamer/media_source.c |  2 +-
 dlls/winegstreamer/wg_parser.c    | 10 +++++-----
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h
index 55a62361966..69833a40b62 100644
--- a/dlls/winegstreamer/gst_private.h
+++ b/dlls/winegstreamer/gst_private.h
@@ -173,7 +173,7 @@ struct unix_funcs
             void **data, uint64_t *offset, uint32_t *size);
     void (CDECL *wg_parser_complete_read_request)(struct wg_parser *parser, bool ret);
 
-    void (CDECL *wg_parser_set_unlimited_buffering)(struct wg_parser *parser);
+    void (CDECL *wg_parser_set_large_buffering)(struct wg_parser *parser);
 
     uint32_t (CDECL *wg_parser_get_stream_count)(struct wg_parser *parser);
     struct wg_parser_stream *(CDECL *wg_parser_get_stream)(struct wg_parser *parser, uint32_t index);
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
index 3260175f45a..828d15f906e 100644
--- a/dlls/winegstreamer/media_source.c
+++ b/dlls/winegstreamer/media_source.c
@@ -1125,7 +1125,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
      * never deselects it). Remove buffering limits from decodebin in order to
      * account for this. Note that this does leak memory, but the same memory
      * leak occurs with native. */
-    unix_funcs->wg_parser_set_unlimited_buffering(parser);
+    unix_funcs->wg_parser_set_large_buffering(parser);
 
     object->stream_count = unix_funcs->wg_parser_get_stream_count(parser);
 
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index f76ca903b80..de6396a5603 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -543,11 +543,11 @@ static void CDECL wg_parser_complete_read_request(struct wg_parser *parser, bool
     pthread_cond_signal(&parser->read_done_cond);
 }
 
-static void CDECL wg_parser_set_unlimited_buffering(struct wg_parser *parser)
+static void CDECL wg_parser_set_large_buffering(struct wg_parser *parser)
 {
-    g_object_set(parser->decodebin, "max-size-buffers", 0, NULL);
-    g_object_set(parser->decodebin, "max-size-time", G_GUINT64_CONSTANT(0), NULL);
-    g_object_set(parser->decodebin, "max-size-bytes", 0, NULL);
+    g_object_set(parser->decodebin, "max-size-buffers", UINT_MAX, NULL);
+    g_object_set(parser->decodebin, "max-size-time", G_GUINT64_CONSTANT(1000000000), NULL);
+    g_object_set(parser->decodebin, "max-size-bytes", 8 * 1024 * 1024, NULL);
 }
 
 static void CDECL wg_parser_stream_get_preferred_format(struct wg_parser_stream *stream, struct wg_format *format)
@@ -1883,7 +1883,7 @@ static const struct unix_funcs funcs =
     wg_parser_get_read_request,
     wg_parser_complete_read_request,
 
-    wg_parser_set_unlimited_buffering,
+    wg_parser_set_large_buffering,
 
     wg_parser_get_stream_count,
     wg_parser_get_stream,
-- 
2.31.0




More information about the wine-devel mailing list