h265parse: fix hvcC size check

In ISO/IEC 14496-15, the minimum size of a HEVCDecoderConfigurationRecord
(i.e., the contents of a hvcC box) is 23 bytes. However, the code in h265parse
checks that the size of this data is not less than 28 bytes, and it refuses to
accept caps if the check fails. The result is that standards-conformant streams
that don't carry any parameter sets in their hvcC boxes won't play.

https://bugzilla.gnome.org//show_bug.cgi?id=731783
This commit is contained in:
Chris Bass 2014-06-17 14:23:43 +01:00 committed by Tim-Philipp Müller
parent 386e5774a7
commit d9d4a91c62

View file

@ -1767,7 +1767,7 @@ gst_h265_parse_set_caps (GstBaseParse * parse, GstCaps * caps)
size = map.size; size = map.size;
/* parse the hvcC data */ /* parse the hvcC data */
if (size < 28) { if (size < 23) {
gst_buffer_unmap (codec_data, &map); gst_buffer_unmap (codec_data, &map);
goto hvcc_too_small; goto hvcc_too_small;
} }
@ -1854,7 +1854,7 @@ gst_h265_parse_set_caps (GstBaseParse * parse, GstCaps * caps)
/* ERRORS */ /* ERRORS */
hvcc_too_small: hvcc_too_small:
{ {
GST_DEBUG_OBJECT (h265parse, "hvcC size %" G_GSIZE_FORMAT " < 8", size); GST_DEBUG_OBJECT (h265parse, "hvcC size %" G_GSIZE_FORMAT " < 23", size);
goto refuse_caps; goto refuse_caps;
} }
wrong_version: wrong_version: