From 25f6c78d796bc949d0ba49f833bc246a9256fa6b Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 4 Jun 2012 08:32:51 +0200 Subject: 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 --- gst/mpegtsdemux/gstmpegdefs.h | 74 ++++++++++++++++++++++++++++++++++++++++++- gst/mpegtsdemux/mpegtsbase.c | 17 +++++----- 2 files changed, 81 insertions(+), 10 deletions(-) (limited to 'gst/mpegtsdemux') 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)) -- cgit v1.2.1