mpegdefs: Add list of known table_id
authorEdward Hervey <edward.hervey@collabora.co.uk>
Mon, 4 Jun 2012 06:32:51 +0000 (08:32 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Tue, 5 Jun 2012 08:54:26 +0000 (10:54 +0200)
Along with the specifications from which they come. Avoids having
to search for which spec a table_id belongs to

gst/mpegtsdemux/gstmpegdefs.h
gst/mpegtsdemux/mpegtsbase.c

index 62d98c75b1550af3d018532d90f61d4acf311d2d..4aef33e00ce9e3d0e409d8df109c937d9f7781a2 100644 (file)
 
 /* Internal stream types >= 0x100 */
 #define ST_GST_AUDIO_RAWA52             0x181
-  /* Used when we don't yet know which stream type it will be in a PS stream */
+/* Used when we don't yet know which stream type it will be in a PS stream */
 #define ST_GST_VIDEO_MPEG1_OR_2         0x102
 
+
+/* Table IDs */
+/* ITU H.222.0 / IEC 13818-1 */
+#define TABLE_ID_PROGRAM_ASSOCIATION           0x00
+#define TABLE_ID_CONDITIONAL_ACCESS            0x01
+#define TABLE_ID_TS_PROGRAM_MAP                        0x02
+#define TABLE_ID_TS_DESCRIPTION                        0x03
+#define TABLE_ID_14496_SCENE_DESCRIPTION       0x04
+#define TABLE_ID_14496_OBJET_DESCRIPTOR                0x05
+#define TABLE_ID_METADATA                      0x06
+#define TABLE_ID_IPMP_CONTROL_INFORMATION      0x07
+/* IEC 13818-6 (DSM-CC) */
+#define TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA   0x3A
+#define TABLE_ID_DSM_CC_U_N_MESSAGES                   0x3B
+#define TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES         0x3C
+#define TABLE_ID_DSM_CC_STREAM_DESCRIPTORS             0x3D
+#define TABLE_ID_DSM_CC_PRIVATE_DATA                   0x3E
+#define TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS           0x3F
+/* EN 300 468 (DVB) v 1.12.1 */
+#define TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK    0x40
+#define TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK     0x41
+#define TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS         0x42
+#define TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS          0x46
+#define TABLE_ID_BOUQUET_ASSOCIATION                   0x4A
+#define TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT   0x4E
+#define TABLE_ID_EVENT_INFORMATION_OTHER_TS_PRESENT    0x4F
+#define TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_1        0x50 /* First */
+#define TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_N        0x5F /* Last */
+#define TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_1 0x60 /* First */
+#define TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_N 0x6F /* Last */
+#define TABLE_ID_TIME_DATE                             0x70
+#define TABLE_ID_RUNNING_STATUS                                0x71
+#define TABLE_ID_STUFFING                              0x72
+#define TABLE_ID_TIME_OFFSET                           0x73
+/* TS 102 812 (MHP v1.1.3) */
+#define TABLE_ID_APPLICATION_INFORMATION_TABLE         0x74
+/* TS 102 323 (DVB TV Anytime v1.5.1) */
+#define TABLE_ID_CONTAINER                             0x75
+#define TABLE_ID_RELATED_CONTENT                       0x76
+#define TABLE_ID_CONTENT_IDENTIFIER                    0x77
+/* EN 301 192 (DVB specification for data broadcasting) */
+#define TABLE_ID_MPE_FEC                               0x78
+/* TS 102 323 (DVB TV Anytime v1.5.1) */
+#define TABLE_ID_RESOLUTION_NOTIFICATION               0x79
+/* TS 102 772 (DVB-SH Multi-Protocol Encapsulation) */
+#define TABLE_ID_MPE_IFEC                              0x7A
+/* EN 300 468 (DVB) v 1.12.1 */
+#define TABLE_ID_DISCONTINUITY_INFORMATION             0x7E
+#define TABLE_ID_SELECTION_INFORMATION                 0x7F
+/* ETR 289 (DVB Support for use of scrambling and CA) */
+#define TABLE_ID_CA_MESSAGE_ECM_0                      0x80
+#define TABLE_ID_CA_MESSAGE_ECM_1                      0x81
+#define TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_1           0x82 /* First */
+#define TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_N           0x8F /* Last */
+/* ... */
+/* EN 301 790 (DVB interaction channel for satellite distribution channels) */
+#define TABLE_ID_SCT                                   0xA0
+#define TABLE_ID_FCT                                   0xA1
+#define TABLE_ID_TCT                                   0xA2
+#define TABLE_ID_SPT                                   0xA3
+#define TABLE_ID_CMT                                   0xA4
+#define TABLE_ID_TBTP                                  0xA5
+#define TABLE_ID_PCR_PACKET_PAYLOAD                    0xA6
+#define TABLE_ID_TRANSMISSION_MODE_SUPPORT_PAYLOAD     0xAA
+#define TABLE_ID_TIM                                   0xB0
+#define TABLE_ID_LL_FEC_PARITY_DATA_TABLE              0xB1
+/* ATSC (FILLME) */
+/* ISDB (FILLME) */
+/* Unset */
+#define TABLE_ID_UNSET 0xFF
+
+
 #define CLOCK_BASE 9LL
 #define CLOCK_FREQ (CLOCK_BASE * 10000)
 
index f3144df876a612d6bd591228c2a7c78f61f95ad7..4ef5668ee4781a2804c350505ea84449abd9f3a8 100644 (file)
@@ -48,7 +48,6 @@
 /* latency in mseconds */
 #define TS_LATENCY 700
 
-#define TABLE_ID_UNSET 0xFF
 #define RUNNING_STATUS_RUNNING 4
 
 GST_DEBUG_CATEGORY_STATIC (mpegts_base_debug);
@@ -1093,7 +1092,7 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
       section->pid, section->table_id);
 
   switch (section->table_id) {
-    case 0x00:
+    case TABLE_ID_PROGRAM_ASSOCIATION:
       /* PAT */
       structure = mpegts_packetizer_parse_pat (base->packetizer, section);
       if (G_LIKELY (structure)) {
@@ -1109,7 +1108,7 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
         res = FALSE;
 
       break;
-    case 0x01:
+    case TABLE_ID_CONDITIONAL_ACCESS:
       /* CAT */
       structure = mpegts_packetizer_parse_cat (base->packetizer, section);
       if (structure)
@@ -1117,7 +1116,7 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
       else
         res = FALSE;
       break;
-    case 0x02:
+    case TABLE_ID_TS_PROGRAM_MAP:
       /* PMT */
       structure = mpegts_packetizer_parse_pmt (base->packetizer, section);
       if (G_LIKELY (structure))
@@ -1126,9 +1125,9 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
         res = FALSE;
 
       break;
-    case 0x40:
+    case TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK:
       /* NIT, actual network */
-    case 0x41:
+    case TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK:
       /* NIT, other network */
       structure = mpegts_packetizer_parse_nit (base->packetizer, section);
       if (G_LIKELY (structure))
@@ -1137,8 +1136,8 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
         res = FALSE;
 
       break;
-    case 0x42:
-    case 0x46:
+    case TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS:
+    case TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS:
       structure = mpegts_packetizer_parse_sdt (base->packetizer, section);
       if (G_LIKELY (structure))
         mpegts_base_apply_sdt (base, section->pid, structure);
@@ -1187,7 +1186,7 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
       else
         res = FALSE;
       break;
-    case 0x70:
+    case TABLE_ID_TIME_DATE:
       /* TDT (Time and Date table) */
       structure = mpegts_packetizer_parse_tdt (base->packetizer, section);
       if (G_LIKELY (structure))