mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
mxfdemux: don't error out if VANC track only contains packets we don't handle
If the VANC track does contain packets, but we skip over all packets, just treat it the same as if there hadn't been any packets at all and send a GAP event instead of erroring out with "Failed to handle essence element". We would error out because when we reach the end of the loop without having found a closed caption packet the flow return variable is still FLOW_ERROR which is what it has been initialised to. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1518>
This commit is contained in:
parent
05ee44b62b
commit
cab0eaed1c
1 changed files with 11 additions and 5 deletions
|
@ -138,12 +138,9 @@ mxf_vanc_handle_essence_element (const MXFUL * key, GstBuffer * buffer,
|
||||||
*
|
*
|
||||||
* The same scheme can be used for ANC packets.
|
* The same scheme can be used for ANC packets.
|
||||||
*/
|
*/
|
||||||
|
goto no_data;
|
||||||
*outbuf = gst_buffer_new ();
|
|
||||||
GST_BUFFER_FLAG_SET (*outbuf, GST_BUFFER_FLAG_GAP);
|
|
||||||
ret = GST_FLOW_OK;
|
|
||||||
goto out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < num_packets; i++) {
|
for (i = 0; i < num_packets; i++) {
|
||||||
G_GNUC_UNUSED guint16 line_num;
|
G_GNUC_UNUSED guint16 line_num;
|
||||||
G_GNUC_UNUSED guint8 wrapping_type;
|
G_GNUC_UNUSED guint8 wrapping_type;
|
||||||
|
@ -190,6 +187,7 @@ mxf_vanc_handle_essence_element (const MXFUL * key, GstBuffer * buffer,
|
||||||
|
|
||||||
/* Not S334 EIA-708 */
|
/* Not S334 EIA-708 */
|
||||||
if (did != 0x61 && sdid != 0x01) {
|
if (did != 0x61 && sdid != 0x01) {
|
||||||
|
GST_TRACE ("Skipping VANC data with DID/SDID 0x%02X/0x%02X", did, sdid);
|
||||||
if (!gst_byte_reader_skip (&reader, array_count * array_item_size - 2))
|
if (!gst_byte_reader_skip (&reader, array_count * array_item_size - 2))
|
||||||
goto out;
|
goto out;
|
||||||
continue;
|
continue;
|
||||||
|
@ -215,6 +213,14 @@ mxf_vanc_handle_essence_element (const MXFUL * key, GstBuffer * buffer,
|
||||||
gst_buffer_unref (buffer);
|
gst_buffer_unref (buffer);
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
no_data:
|
||||||
|
|
||||||
|
/* No packets or we skipped over all packets */
|
||||||
|
*outbuf = gst_buffer_new ();
|
||||||
|
GST_BUFFER_FLAG_SET (*outbuf, GST_BUFFER_FLAG_GAP);
|
||||||
|
ret = GST_FLOW_OK;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
gst_buffer_unmap (buffer, &map);
|
gst_buffer_unmap (buffer, &map);
|
||||||
gst_buffer_unref (buffer);
|
gst_buffer_unref (buffer);
|
||||||
|
|
Loading…
Reference in a new issue