[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