typefinding: mpeg-ts detection improvement

Allow AFC to be 0 for null pid packets.

https://bugzilla.gnome.org/show_bug.cgi?id=726117
This commit is contained in:
Pankaj Darak 2015-10-01 12:32:33 +01:00 committed by Tim-Philipp Müller
parent 0c992c5065
commit eaf4ce01d3

View file

@ -2338,10 +2338,15 @@ static GstStaticCaps mpegts_caps = GST_STATIC_CAPS ("video/mpegts, "
(GST_MPEGTS_TYPEFIND_MAX_SYNC * 4)
#define MPEGTS_HDR_SIZE 4
/* Check for sync byte, error_indicator == 0 and packet has payload */
/* Check for sync byte, error_indicator == 0 and packet has payload.
* Adaptation control field (data[3] & 0x30) may be zero for TS packets with
* null PIDs. Still, these streams are valid TS streams (for null packets,
* AFC is supposed to be 0x1, but the spec also says decoders should just
* discard any packets with AFC = 0x00) */
#define IS_MPEGTS_HEADER(data) (((data)[0] == 0x47) && \
(((data)[1] & 0x80) == 0x00) && \
(((data)[3] & 0x30) != 0x00))
((((data)[3] & 0x30) != 0x00) || \
((((data)[3] & 0x30) == 0x00) && (((data)[1] & 0x1f) == 0x1f) && (((data)[2] & 0xff) == 0xff))))
/* Helper function to search ahead at intervals of packet_size for mpegts
* headers */