diff --git a/gst/mpegdemux/mpegtspacketizer.c b/gst/mpegdemux/mpegtspacketizer.c
index 198e3dd..8fed408 100644
--- a/gst/mpegdemux/mpegtspacketizer.c
+++ b/gst/mpegdemux/mpegtspacketizer.c
@@ -103,6 +103,7 @@ mpegts_packetizer_stream_subtable_new (guint8 table_id,
   subtable->version_number = VERSION_NUMBER_UNSET;
   subtable->table_id = table_id;
   subtable->subtable_extension = subtable_extension;
+  subtable->crc = 0;
   return subtable;
 }
 
@@ -264,7 +265,7 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer * packetizer,
     MpegTSPacketizerStream * stream, MpegTSPacketizerSection * section)
 {
   guint8 tmp;
-  guint8 *data;
+  guint8 *data, *crc_data;
   MpegTSPacketizerStreamSubtable *subtable;
   GSList *subtable_list = NULL;
 
@@ -302,21 +303,29 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer * packetizer,
   tmp = *data++;
   section->version_number = (tmp >> 1) & 0x1F;
   section->current_next_indicator = tmp & 0x01;
+
   if (!section->current_next_indicator)
     goto not_applicable;
 
-  if (section->version_number == subtable->version_number)
+  /* CRC is at the end of the section */
+  crc_data = GST_BUFFER_DATA (section->buffer) + GST_BUFFER_SIZE (section->buffer) - 4;
+  section->crc = GST_READ_UINT32_BE (crc_data);
+
+  if (section->version_number == subtable->version_number &&
+      section->crc == subtable->crc)
     goto not_applicable;
+
   subtable->version_number = section->version_number;
+  subtable->crc = section->crc;
   stream->section_table_id = section->table_id;
 
   return TRUE;
 
 not_applicable:
   GST_LOG
-      ("not applicable pid %d table_id %d subtable_extension %d, current_next %d version %d",
+      ("not applicable pid %d table_id %d subtable_extension %d, current_next %d version %d, crc 0x%x",
       section->pid, section->table_id, section->subtable_extension,
-      section->current_next_indicator, section->version_number);
+      section->current_next_indicator, section->version_number, section->crc);
   section->complete = FALSE;
   gst_buffer_unref (section->buffer);
   return TRUE;
diff --git a/gst/mpegdemux/mpegtspacketizer.h b/gst/mpegdemux/mpegtspacketizer.h
index 6a06906..4d6ea1f 100644
--- a/gst/mpegdemux/mpegtspacketizer.h
+++ b/gst/mpegdemux/mpegtspacketizer.h
@@ -103,6 +103,7 @@ typedef struct
   guint section_length;
   guint8 version_number;
   guint8 current_next_indicator;
+  guint32 crc;
 } MpegTSPacketizerSection; 
 
 typedef struct
@@ -113,6 +114,7 @@ typedef struct
    * section_syntax_indicator is 0, sub_table_extension will be set to 0 */
   guint16 subtable_extension;
   guint8 version_number;
+  guint32 crc;
 } MpegTSPacketizerStreamSubtable;
 
 typedef enum {
