Commit c393f0d7 authored by Edward Hervey's avatar Edward Hervey Committed by Edward Hervey

tsdemux: Handle quirk in jp2k es header handling

The jp2k specification (ITU-T T.800) specifies that the 'brat' box
has two fields and the second one (AUF2) can be set to 0 for progressive
streams.

The problem is that the mpeg-ts specification (ITU-T H.222.0 06/2012)
says that the AUF2 field is only present if the stream is interlaced

In order to cope with both situation, accept those next 32bit if the
stream is marked as progressive and those bits contain 0

https://bugzilla.gnome.org/show_bug.cgi?id=786111
parent 4e239a66
......@@ -2730,8 +2730,20 @@ parse_jp2k_access_unit (TSDemuxStream * stream)
goto error;
#endif
}
/* Time Code Box 'tcod' == 0x74636f64 */
/* Some progressive streams might have a AUF[1] of value 0 present */
header_tag = gst_byte_reader_get_uint32_be_unchecked (&reader);
if (header_tag == 0 && !stream->jp2kInfos.interlace) {
AUF[1] = header_tag;
header_tag = gst_byte_reader_get_uint32_be_unchecked (&reader);
/* Bump up header size and recheck */
header_size += 4;
if (stream->current_size < header_size) {
GST_ERROR_OBJECT (stream->pad, "Not enough data for header");
goto error;
}
}
if (header_tag != 0x74636f64) {
GST_ERROR_OBJECT (stream->pad,
"Expected Time code box but found %d box instead", header_tag);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment