summaryrefslogtreecommitdiff
path: root/gst/mpegtsdemux
diff options
context:
space:
mode:
authorEdward Hervey <edward.hervey@collabora.co.uk>2012-06-04 08:32:51 +0200
committerEdward Hervey <edward.hervey@collabora.co.uk>2012-06-05 10:54:26 +0200
commit25f6c78d796bc949d0ba49f833bc246a9256fa6b (patch)
treee10367fbb87dbede853b95e29ea31214e6e7bf82 /gst/mpegtsdemux
parent0e86e68c6a1c979ee36999005e539ee90916427e (diff)
downloadgstreamer-plugins-bad-25f6c78d796bc949d0ba49f833bc246a9256fa6b.tar.gz
mpegdefs: Add list of known table_id
Along with the specifications from which they come. Avoids having to search for which spec a table_id belongs to
Diffstat (limited to 'gst/mpegtsdemux')
-rw-r--r--gst/mpegtsdemux/gstmpegdefs.h74
-rw-r--r--gst/mpegtsdemux/mpegtsbase.c17
2 files changed, 81 insertions, 10 deletions
diff --git a/gst/mpegtsdemux/gstmpegdefs.h b/gst/mpegtsdemux/gstmpegdefs.h
index 62d98c75b..4aef33e00 100644
--- a/gst/mpegtsdemux/gstmpegdefs.h
+++ b/gst/mpegtsdemux/gstmpegdefs.h
@@ -194,9 +194,81 @@
/* 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)
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index f3144df87..4ef5668ee 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -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))