winegstreamer: Do not use multiple cleanup labels in wg_transform_create().

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2022-02-25 11:42:59 -06:00 committed by Alexandre Julliard
parent d2f653a854
commit aa867c6cfb
1 changed files with 25 additions and 25 deletions

View File

@ -158,25 +158,25 @@ NTSTATUS wg_transform_create(void *args)
if (!(transform = calloc(1, sizeof(*transform)))) if (!(transform = calloc(1, sizeof(*transform))))
return STATUS_NO_MEMORY; return STATUS_NO_MEMORY;
if (!(transform->container = gst_bin_new("wg_transform"))) if (!(transform->container = gst_bin_new("wg_transform")))
goto out_free_transform; goto out;
if (!(src_caps = wg_format_to_caps(&input_format))) if (!(src_caps = wg_format_to_caps(&input_format)))
goto out_free_container; goto out;
if (!(template = gst_pad_template_new("src", GST_PAD_SRC, GST_PAD_ALWAYS, src_caps))) if (!(template = gst_pad_template_new("src", GST_PAD_SRC, GST_PAD_ALWAYS, src_caps)))
goto out_free_src_caps; goto out;
transform->my_src = gst_pad_new_from_template(template, "src"); transform->my_src = gst_pad_new_from_template(template, "src");
g_object_unref(template); g_object_unref(template);
if (!transform->my_src) if (!transform->my_src)
goto out_free_src_caps; goto out;
if (!(sink_caps = wg_format_to_caps(&output_format))) if (!(sink_caps = wg_format_to_caps(&output_format)))
goto out_free_src_pad; goto out;
if (!(template = gst_pad_template_new("sink", GST_PAD_SINK, GST_PAD_ALWAYS, sink_caps))) if (!(template = gst_pad_template_new("sink", GST_PAD_SINK, GST_PAD_ALWAYS, sink_caps)))
goto out_free_sink_caps; goto out;
transform->my_sink = gst_pad_new_from_template(template, "sink"); transform->my_sink = gst_pad_new_from_template(template, "sink");
g_object_unref(template); g_object_unref(template);
if (!transform->my_sink) if (!transform->my_sink)
goto out_free_sink_caps; goto out;
gst_pad_set_element_private(transform->my_sink, transform); gst_pad_set_element_private(transform->my_sink, transform);
gst_pad_set_chain_function(transform->my_sink, transform_sink_chain_cb); gst_pad_set_chain_function(transform->my_sink, transform_sink_chain_cb);
@ -187,7 +187,7 @@ NTSTATUS wg_transform_create(void *args)
*/ */
media_type = gst_structure_get_name(gst_caps_get_structure(sink_caps, 0)); media_type = gst_structure_get_name(gst_caps_get_structure(sink_caps, 0));
if (!(raw_caps = gst_caps_new_empty_simple(media_type))) if (!(raw_caps = gst_caps_new_empty_simple(media_type)))
goto out_free_sink_pad; goto out;
switch (input_format.major_type) switch (input_format.major_type)
{ {
@ -196,7 +196,7 @@ NTSTATUS wg_transform_create(void *args)
|| !transform_append_element(transform, element, &first, &last)) || !transform_append_element(transform, element, &first, &last))
{ {
gst_caps_unref(raw_caps); gst_caps_unref(raw_caps);
goto out_free_sink_pad; goto out;
} }
break; break;
@ -205,7 +205,7 @@ NTSTATUS wg_transform_create(void *args)
case WG_MAJOR_TYPE_UNKNOWN: case WG_MAJOR_TYPE_UNKNOWN:
GST_FIXME("Format %u not implemented!", input_format.major_type); GST_FIXME("Format %u not implemented!", input_format.major_type);
gst_caps_unref(raw_caps); gst_caps_unref(raw_caps);
goto out_free_sink_pad; goto out;
} }
gst_caps_unref(raw_caps); gst_caps_unref(raw_caps);
@ -224,22 +224,22 @@ NTSTATUS wg_transform_create(void *args)
*/ */
if (!(element = create_element("audioconvert", "base")) if (!(element = create_element("audioconvert", "base"))
|| !transform_append_element(transform, element, &first, &last)) || !transform_append_element(transform, element, &first, &last))
goto out_free_sink_pad; goto out;
if (!(element = create_element("audioresample", "base")) if (!(element = create_element("audioresample", "base"))
|| !transform_append_element(transform, element, &first, &last)) || !transform_append_element(transform, element, &first, &last))
goto out_free_sink_pad; goto out;
break; break;
case WG_MAJOR_TYPE_VIDEO: case WG_MAJOR_TYPE_VIDEO:
case WG_MAJOR_TYPE_WMA: case WG_MAJOR_TYPE_WMA:
case WG_MAJOR_TYPE_UNKNOWN: case WG_MAJOR_TYPE_UNKNOWN:
GST_FIXME("Format %u not implemented!", output_format.major_type); GST_FIXME("Format %u not implemented!", output_format.major_type);
goto out_free_sink_pad; goto out;
} }
gst_element_set_state(transform->container, GST_STATE_PAUSED); gst_element_set_state(transform->container, GST_STATE_PAUSED);
if (!gst_element_get_state(transform->container, NULL, NULL, -1)) if (!gst_element_get_state(transform->container, NULL, NULL, -1))
goto out_free_sink_pad; goto out;
gst_caps_unref(sink_caps); gst_caps_unref(sink_caps);
gst_caps_unref(src_caps); gst_caps_unref(src_caps);
@ -248,17 +248,17 @@ NTSTATUS wg_transform_create(void *args)
params->transform = transform; params->transform = transform;
return STATUS_SUCCESS; return STATUS_SUCCESS;
out_free_sink_pad: out:
if (transform->my_sink)
gst_object_unref(transform->my_sink); gst_object_unref(transform->my_sink);
out_free_sink_caps: if (sink_caps)
gst_caps_unref(sink_caps); gst_caps_unref(sink_caps);
out_free_src_pad: if (transform->my_src)
gst_object_unref(transform->my_src); gst_object_unref(transform->my_src);
out_free_src_caps: if (src_caps)
gst_caps_unref(src_caps); gst_caps_unref(src_caps);
out_free_container: if (transform->container)
gst_object_unref(transform->container); gst_object_unref(transform->container);
out_free_transform:
free(transform); free(transform);
GST_ERROR("Failed to create winegstreamer transform."); GST_ERROR("Failed to create winegstreamer transform.");
return status; return status;