mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
flacparse: Properly propagate downstream flow returns upstream
https://bugzilla.gnome.org/show_bug.cgi?id=707229
This commit is contained in:
parent
1dfc1f2686
commit
1971c43279
1 changed files with 7 additions and 10 deletions
|
@ -1225,7 +1225,7 @@ _value_array_append_buffer (GValue * array_val, GstBuffer * buf)
|
|||
g_value_unset (&value);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static GstFlowReturn
|
||||
gst_flac_parse_handle_headers (GstFlacParse * flacparse)
|
||||
{
|
||||
GstBuffer *vorbiscomment = NULL;
|
||||
|
@ -1234,7 +1234,7 @@ gst_flac_parse_handle_headers (GstFlacParse * flacparse)
|
|||
GValue array = { 0, };
|
||||
GstCaps *caps;
|
||||
GList *l;
|
||||
gboolean res = TRUE;
|
||||
GstFlowReturn res = GST_FLOW_OK;
|
||||
|
||||
caps = gst_caps_new_simple ("audio/x-flac",
|
||||
"channels", G_TYPE_INT, flacparse->channels,
|
||||
|
@ -1336,7 +1336,6 @@ push_headers:
|
|||
* negotiated caps will change to caps that include the streamheader field */
|
||||
while (flacparse->headers) {
|
||||
GstBuffer *buf = GST_BUFFER (flacparse->headers->data);
|
||||
GstFlowReturn ret;
|
||||
GstBaseParseFrame frame;
|
||||
|
||||
flacparse->headers =
|
||||
|
@ -1347,11 +1346,9 @@ push_headers:
|
|||
gst_base_parse_frame_init (&frame);
|
||||
frame.buffer = buf;
|
||||
frame.overhead = -1;
|
||||
ret = gst_base_parse_push_frame (GST_BASE_PARSE (flacparse), &frame);
|
||||
if (ret != GST_FLOW_OK) {
|
||||
res = FALSE;
|
||||
res = gst_base_parse_push_frame (GST_BASE_PARSE (flacparse), &frame);
|
||||
if (res != GST_FLOW_OK)
|
||||
break;
|
||||
}
|
||||
gst_base_parse_frame_free (&frame);
|
||||
}
|
||||
g_list_foreach (flacparse->headers, (GFunc) gst_mini_object_unref, NULL);
|
||||
|
@ -1579,7 +1576,7 @@ gst_flac_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame,
|
|||
}
|
||||
|
||||
if (is_last) {
|
||||
if (!gst_flac_parse_handle_headers (flacparse))
|
||||
if ((res = gst_flac_parse_handle_headers (flacparse)) != GST_FLOW_OK)
|
||||
goto cleanup;
|
||||
|
||||
/* Minimal size of a frame header */
|
||||
|
@ -1618,7 +1615,7 @@ gst_flac_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame,
|
|||
GST_WARNING_OBJECT (flacparse,
|
||||
"Generating headers for variable blocksize streams not supported");
|
||||
|
||||
if (!gst_flac_parse_handle_headers (flacparse))
|
||||
if ((res = gst_flac_parse_handle_headers (flacparse)) != GST_FLOW_OK)
|
||||
goto cleanup;
|
||||
} else {
|
||||
GST_DEBUG_OBJECT (flacparse, "Generating headers");
|
||||
|
@ -1626,7 +1623,7 @@ gst_flac_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame,
|
|||
if (!gst_flac_parse_generate_headers (flacparse))
|
||||
goto cleanup;
|
||||
|
||||
if (!gst_flac_parse_handle_headers (flacparse))
|
||||
if ((res = gst_flac_parse_handle_headers (flacparse)) != GST_FLOW_OK)
|
||||
goto cleanup;
|
||||
}
|
||||
flacparse->state = GST_FLAC_PARSE_STATE_DATA;
|
||||
|
|
Loading…
Reference in a new issue