[PATCH v2] winegstreamer: Set specific large buffer sizes for decodebin
Zebediah Figura (she/her)
zfigura at codeweavers.com
Thu Mar 18 10:45:12 CDT 2021
On 3/18/21 10:25 AM, Andrew Eikum wrote:
> Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
> ---
>
> v2: Use max ints instead. I tested that it still works for my case.
>
> 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);
I think now there's not really a reason to change the function name, as
it's still effectively unlimited.
> 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 aefb097f7f0..974ed756430 100644
> --- a/dlls/winegstreamer/wg_parser.c
> +++ b/dlls/winegstreamer/wg_parser.c
> @@ -544,11 +544,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", G_MAXUINT, NULL);
> + g_object_set(parser->decodebin, "max-size-time", G_MAXUINT64, NULL);
> + g_object_set(parser->decodebin, "max-size-bytes", G_MAXUINT, NULL);
> }
>
> static void CDECL wg_parser_stream_get_preferred_format(struct wg_parser_stream *stream, struct wg_format *format)
> @@ -1915,7 +1915,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,
>
More information about the wine-devel
mailing list