From: Ziqing Hui <zhui(a)codeweavers.com> --- dlls/winegstreamer/gst_private.h | 1 + dlls/winegstreamer/main.c | 13 +++++++++++++ dlls/winegstreamer/unixlib.h | 7 +++++++ dlls/winegstreamer/wg_parser.c | 11 +++++++++++ 4 files changed, 32 insertions(+) diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h index 04ec84c7936..fceabaca592 100644 --- a/dlls/winegstreamer/gst_private.h +++ b/dlls/winegstreamer/gst_private.h @@ -82,6 +82,7 @@ uint32_t wg_parser_get_stream_count(struct wg_parser *parser); struct wg_parser_stream *wg_parser_get_stream(struct wg_parser *parser, uint32_t index); void wg_parser_stream_get_preferred_format(struct wg_parser_stream *stream, struct wg_format *format); +void wg_parser_stream_get_stream_format(struct wg_parser_stream *stream, struct wg_format *format); void wg_parser_stream_enable(struct wg_parser_stream *stream, const struct wg_format *format); void wg_parser_stream_disable(struct wg_parser_stream *stream); diff --git a/dlls/winegstreamer/main.c b/dlls/winegstreamer/main.c index 1e54edb2015..81da2cc7cb6 100644 --- a/dlls/winegstreamer/main.c +++ b/dlls/winegstreamer/main.c @@ -185,6 +185,19 @@ void wg_parser_stream_get_preferred_format(struct wg_parser_stream *stream, stru WINE_UNIX_CALL(unix_wg_parser_stream_get_preferred_format, ¶ms); } +void wg_parser_stream_get_stream_format(struct wg_parser_stream *stream, struct wg_format *format) +{ + struct wg_parser_stream_get_stream_format_params params = + { + .stream = stream, + .format = format, + }; + + TRACE("stream %p, format %p.\n", stream, format); + + WINE_UNIX_CALL(unix_wg_parser_stream_get_stream_format, ¶ms); +} + void wg_parser_stream_enable(struct wg_parser_stream *stream, const struct wg_format *format) { struct wg_parser_stream_enable_params params = diff --git a/dlls/winegstreamer/unixlib.h b/dlls/winegstreamer/unixlib.h index a01efb934f8..ee0bbe60b67 100644 --- a/dlls/winegstreamer/unixlib.h +++ b/dlls/winegstreamer/unixlib.h @@ -240,6 +240,12 @@ struct wg_parser_stream_get_preferred_format_params struct wg_format *format; }; +struct wg_parser_stream_get_stream_format_params +{ + struct wg_parser_stream *stream; + struct wg_format *format; +}; + struct wg_parser_stream_enable_params { struct wg_parser_stream *stream; @@ -350,6 +356,7 @@ enum unix_funcs unix_wg_parser_get_stream, unix_wg_parser_stream_get_preferred_format, + unix_wg_parser_stream_get_stream_format, unix_wg_parser_stream_enable, unix_wg_parser_stream_disable, diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 16867c0da7d..c0657e0e38a 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -216,6 +216,16 @@ static NTSTATUS wg_parser_stream_get_preferred_format(void *args) return S_OK; } +static NTSTATUS wg_parser_stream_get_stream_format(void *args) +{ + struct wg_parser_stream_get_stream_format_params *params = args; + + *params->format = format_is_compressed(¶ms->stream->stream_format) ? + params->stream->stream_format : + params->stream->preferred_format; + return S_OK; +} + static NTSTATUS wg_parser_stream_enable(void *args) { const struct wg_parser_stream_enable_params *params = args; @@ -1945,6 +1955,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = X(wg_parser_get_stream), X(wg_parser_stream_get_preferred_format), + X(wg_parser_stream_get_stream_format), X(wg_parser_stream_enable), X(wg_parser_stream_disable), -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2387