static gboolean
seen_section_before (MpegTSPacketizerStream * stream, guint8 table_id,
guint16 subtable_extension, guint8 version_number, guint8 section_number,
- guint8 last_section_number)
+ guint8 last_section_number, guint8 * data_start, gsize to_read)
{
MpegTSPacketizerStreamSubtable *subtable;
return FALSE;
}
/* Finally return whether we saw that section or not */
- return MPEGTS_BIT_IS_SET (subtable->seen_section, section_number);
+ if (!MPEGTS_BIT_IS_SET (subtable->seen_section, section_number)) {
+ GST_DEBUG ("Different section_number");
+ return FALSE;
+ }
+
+ if (stream->section_data) {
+ /* Everything else is the same, fall back to memcmp */
+ return (memcmp (stream->section_data, data_start, to_read) != 0);
+ }
+
+ return FALSE;
}
static MpegTSPacketizerStreamSubtable *
* * same section_number was seen
*/
if (seen_section_before (stream, table_id, subtable_extension,
- version_number, section_number, last_section_number)) {
+ version_number, section_number, last_section_number, data_start,
+ to_read)) {
GST_DEBUG
("PID 0x%04x Already processed table_id:0x%02x subtable_extension:0x%04x, version_number:%d, section_number:%d",
packet->pid, table_id, subtable_extension, version_number,