From: Akihiro Sagawa <sagawa.aki@gmail.com> --- dlls/winegstreamer/gst_private.h | 2 +- dlls/winegstreamer/main.c | 6 +++--- dlls/winegstreamer/media_source.c | 2 +- dlls/winegstreamer/quartz_parser.c | 14 +++++++------- dlls/winegstreamer/unixlib.h | 7 ++++++- dlls/winegstreamer/wg_parser.c | 2 +- dlls/winegstreamer/wm_reader.c | 4 ++-- 7 files changed, 21 insertions(+), 16 deletions(-) diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h index 7a5c2f3f4b0..71ef17985ce 100644 --- a/dlls/winegstreamer/gst_private.h +++ b/dlls/winegstreamer/gst_private.h @@ -70,7 +70,7 @@ HRESULT wg_sample_queue_create(struct wg_sample_queue **out); void wg_sample_queue_destroy(struct wg_sample_queue *queue); void wg_sample_queue_flush(struct wg_sample_queue *queue, bool all); -wg_parser_t wg_parser_create(bool output_compressed); +wg_parser_t wg_parser_create(UINT32 flags); /* see wg_parser_create_flag */ void wg_parser_destroy(wg_parser_t parser); HRESULT wg_parser_connect(wg_parser_t parser, uint64_t file_size, const WCHAR *uri); diff --git a/dlls/winegstreamer/main.c b/dlls/winegstreamer/main.c index 6a8bd4b6413..5cafcc1491f 100644 --- a/dlls/winegstreamer/main.c +++ b/dlls/winegstreamer/main.c @@ -160,16 +160,16 @@ static HRESULT wg_media_type_to_mf(const struct wg_media_type *wg_media_type, IM return E_NOTIMPL; } -wg_parser_t wg_parser_create(bool output_compressed) +wg_parser_t wg_parser_create(UINT32 flags) { struct wg_parser_create_params params = { - .output_compressed = output_compressed, + .flags = flags, .err_on = ERR_ON(quartz), .warn_on = WARN_ON(quartz), }; - TRACE("output_compressed %d.\n", output_compressed); + TRACE("flags %#x.\n", flags); if (WINE_UNIX_CALL(unix_wg_parser_create, ¶ms)) return 0; diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c index 0735e74bdf3..145dbfd09cf 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -1670,7 +1670,7 @@ static HRESULT media_source_create(struct object_context *context, IMFMediaSourc if (FAILED(hr = MFAllocateWorkQueue(&object->async_commands_queue))) goto fail; - if (!(parser = wg_parser_create(FALSE))) + if (!(parser = wg_parser_create(0))) { hr = E_OUTOFMEMORY; goto fail; diff --git a/dlls/winegstreamer/quartz_parser.c b/dlls/winegstreamer/quartz_parser.c index 38971f2fcb9..cb8bb702bb1 100644 --- a/dlls/winegstreamer/quartz_parser.c +++ b/dlls/winegstreamer/quartz_parser.c @@ -1878,16 +1878,16 @@ static HRESULT decodebin_parser_source_get_media_type(struct parser_source *pin, return VFW_S_NO_MORE_ITEMS; } -static HRESULT parser_create(BOOL output_compressed, struct parser **parser) +static HRESULT parser_create(UINT32 flags, struct parser **parser) { struct parser *object; if (!(object = calloc(1, sizeof(*object)))) return E_OUTOFMEMORY; - object->output_compressed = output_compressed; + object->output_compressed = flags & WG_PARSER_CREATE_FLAG_OUTPUT_COMPRESSED; - if (!(object->wg_parser = wg_parser_create(output_compressed))) + if (!(object->wg_parser = wg_parser_create(flags))) { free(object); return E_OUTOFMEMORY; @@ -1907,7 +1907,7 @@ HRESULT decodebin_parser_create(IUnknown *outer, IUnknown **out) struct parser *object; HRESULT hr; - if (FAILED(hr = parser_create(FALSE, &object))) + if (FAILED(hr = parser_create(0, &object))) return hr; strmbase_filter_init(&object->filter, outer, &CLSID_decodebin_parser, &filter_ops); @@ -2481,7 +2481,7 @@ HRESULT wave_parser_create(IUnknown *outer, IUnknown **out) struct parser *object; HRESULT hr; - if (FAILED(hr = parser_create(TRUE, &object))) + if (FAILED(hr = parser_create(WG_PARSER_CREATE_FLAG_OUTPUT_COMPRESSED, &object))) return hr; strmbase_filter_init(&object->filter, outer, &CLSID_WAVEParser, &filter_ops); @@ -2590,7 +2590,7 @@ HRESULT avi_splitter_create(IUnknown *outer, IUnknown **out) struct parser *object; HRESULT hr; - if (FAILED(hr = parser_create(TRUE, &object))) + if (FAILED(hr = parser_create(WG_PARSER_CREATE_FLAG_OUTPUT_COMPRESSED, &object))) return hr; strmbase_filter_init(&object->filter, outer, &CLSID_AviSplitter, &filter_ops); @@ -2752,7 +2752,7 @@ HRESULT mpeg_splitter_create(IUnknown *outer, IUnknown **out) struct parser *object; HRESULT hr; - if (FAILED(hr = parser_create(TRUE, &object))) + if (FAILED(hr = parser_create(WG_PARSER_CREATE_FLAG_OUTPUT_COMPRESSED, &object))) return hr; strmbase_filter_init(&object->filter, outer, &CLSID_MPEG1Splitter, &mpeg_splitter_ops); diff --git a/dlls/winegstreamer/unixlib.h b/dlls/winegstreamer/unixlib.h index f545df7ad0b..42d206c32e7 100644 --- a/dlls/winegstreamer/unixlib.h +++ b/dlls/winegstreamer/unixlib.h @@ -218,10 +218,15 @@ struct wg_init_gstreamer_params UINT8 err_on; }; +enum wg_parser_create_flag +{ + WG_PARSER_CREATE_FLAG_OUTPUT_COMPRESSED = 1, +}; + struct wg_parser_create_params { wg_parser_t parser; - UINT8 output_compressed; + UINT32 flags; UINT8 err_on; UINT8 warn_on; }; diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 0fcb213d07a..05cb9e5d9fc 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -1893,7 +1893,7 @@ static NTSTATUS wg_parser_create(void *args) pthread_cond_init(&parser->init_cond, NULL); pthread_cond_init(&parser->read_cond, NULL); pthread_cond_init(&parser->read_done_cond, NULL); - parser->output_compressed = params->output_compressed; + parser->output_compressed = params->flags & WG_PARSER_CREATE_FLAG_OUTPUT_COMPRESSED; parser->err_on = params->err_on; parser->warn_on = params->warn_on; GST_DEBUG("Created winegstreamer parser %p.", parser); diff --git a/dlls/winegstreamer/wm_reader.c b/dlls/winegstreamer/wm_reader.c index 6a800e4448c..6a1ca98424c 100644 --- a/dlls/winegstreamer/wm_reader.c +++ b/dlls/winegstreamer/wm_reader.c @@ -1494,7 +1494,7 @@ static HRESULT init_stream(struct wm_reader *reader) HRESULT hr; WORD i; - if (!(wg_parser = wg_parser_create(FALSE))) + if (!(wg_parser = wg_parser_create(0))) return E_OUTOFMEMORY; reader->wg_parser = wg_parser; @@ -1621,7 +1621,7 @@ static HRESULT reinit_stream(struct wm_reader *reader, bool read_compressed) wg_parser_destroy(reader->wg_parser); reader->wg_parser = 0; - if (!(wg_parser = wg_parser_create(read_compressed))) + if (!(wg_parser = wg_parser_create(read_compressed ? WG_PARSER_CREATE_FLAG_OUTPUT_COMPRESSED : 0))) return E_OUTOFMEMORY; reader->wg_parser = wg_parser; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10864