vlc | branch: master | Francois Cartegnie <[email protected]> | Sun Jan 24 19:15:32 2016 +0100| [2128df3dd7c611f20b1628dadc8f3d1e3cd80085] | committer: Francois Cartegnie
demux: ts: add PMT descriptors description > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2128df3dd7c611f20b1628dadc8f3d1e3cd80085 --- modules/demux/mpeg/ts.c | 32 ++++++++--------- modules/demux/mpeg/ts_strings.h | 73 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 16 deletions(-) diff --git a/modules/demux/mpeg/ts.c b/modules/demux/mpeg/ts.c index 5af7604..fdd43ad 100644 --- a/modules/demux/mpeg/ts.c +++ b/modules/demux/mpeg/ts.c @@ -5281,6 +5281,8 @@ static void FillPESFromDvbpsiES( demux_t *p_demux, p_pes->p_es->fmt.i_id = p_dvbpsies->i_pid; } +#define PMT_DESC_PREFIX " * PMT descriptor: " +#define PMT_DESC_INDENT " : " static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t *p_firstdr, ts_pmt_t *p_pmt, ts_pmt_registration_type_t *p_registration_type ) { @@ -5291,13 +5293,19 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t for( const dvbpsi_descriptor_t *p_dr = p_firstdr; p_dr != NULL; p_dr = p_dr->p_next ) { /* general descriptors handling < 0x40 and scoring */ + if( p_dr->i_tag < 0x40 ) + { + msg_Dbg( p_demux, PMT_DESC_PREFIX "%s (0x%x)", + ISO13818_1_Get_Descriptor_Description(p_dr->i_tag), p_dr->i_tag ); + } + switch(p_dr->i_tag) { case 0x05: /* Registration Descriptor */ { if( p_dr->i_length != 4 ) { - msg_Warn( p_demux, " * PMT invalid Registration Descriptor" ); + msg_Warn( p_demux, PMT_DESC_INDENT "invalid registration descriptor" ); break; } @@ -5316,7 +5324,7 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t if( !memcmp( regs[i].rgs, p_dr->p_data, 4 ) ) { registration_type = regs[i].reg; - msg_Dbg( p_demux, " * PMT descriptor : registration %4.4s", p_dr->p_data ); + msg_Dbg( p_demux, PMT_DESC_INDENT "%4.4s registration", p_dr->p_data ); break; } } @@ -5325,19 +5333,13 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t case 0x09: { - dvbpsi_ca_dr_t *p_cadr = dvbpsi_DecodeCADr( p_dr ); - msg_Dbg( p_demux, " * PMT descriptor : CA (0x09) SysID 0x%x", - p_cadr->i_ca_system_id ); + dvbpsi_ca_dr_t *p_cadr = dvbpsi_DecodeCADr( (dvbpsi_descriptor_t *) p_dr ); + msg_Dbg( p_demux, PMT_DESC_INDENT "CA System ID 0x%x", p_cadr->i_ca_system_id ); i_arib_score_flags |= (p_cadr->i_ca_system_id == 0x05); } break; - case 0x0f: - msg_Dbg( p_demux, " * PMT descriptor : Private Data (0x0f)" ); - break; - case 0x1d: /* We have found an IOD descriptor */ - msg_Dbg( p_demux, " * PMT descriptor : IOD (0x1d)" ); p_pmt->iod = IODNew( VLC_OBJECT(p_demux), p_dr->i_length, p_dr->p_data ); break; @@ -5350,8 +5352,6 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t break; default: - if( p_dr->i_tag < 0x40 ) - msg_Dbg( p_demux, " * PMT descriptor : unknown (0x%x)", p_dr->i_tag ); break; } } @@ -5374,22 +5374,22 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t { case 0x88: /* EACEM Simulcast HD Logical channels ordering */ if( registration_type == TS_PMT_REGISTRATION_NONE ) - msg_Dbg( p_demux, " * PMT descriptor : EACEM Simulcast HD" ); + msg_Dbg( p_demux, PMT_DESC_PREFIX "EACEM Simulcast HD" ); /* TODO: apply visibility flags */ break; case 0xC1: if( registration_type == TS_PMT_REGISTRATION_ARIB ) - msg_Dbg( p_demux, " * PMT descriptor : Digital copy control (0xC1)" ); + msg_Dbg( p_demux, PMT_DESC_PREFIX "Digital copy control (0xC1)" ); break; case 0xDE: if( registration_type == TS_PMT_REGISTRATION_ARIB ) - msg_Dbg( p_demux, " * PMT descriptor : Content availability (0xDE)" ); + msg_Dbg( p_demux, PMT_DESC_PREFIX "Content availability (0xDE)" ); break; default: - msg_Dbg( p_demux, " * PMT descriptor : unknown (0x%x)", p_dr->i_tag ); + msg_Dbg( p_demux, PMT_DESC_PREFIX "Unknown Private (0x%x)", p_dr->i_tag ); break; } } diff --git a/modules/demux/mpeg/ts_strings.h b/modules/demux/mpeg/ts_strings.h index e525052..5259c4c 100644 --- a/modules/demux/mpeg/ts_strings.h +++ b/modules/demux/mpeg/ts_strings.h @@ -82,5 +82,78 @@ static const char *ISO13818_1_Get_StreamType_Description(uint8_t i_type) return ISO13818_1_other_descs[1]; } +static const char * const ISO13818_1_descriptors_descs[] = +{ + "Reserved", + "Forbidden", + "Video Stream", + "Audio Stream", + "Hierarchy", + "Registration", + "Data Stream Alignment", + "Target Background Grid", + "Video Window", + /* ^ 0x08 */ + "CA", + "ISO 639 Language", + "System Clock", + "Multiplex Buffer Utilization", + "Copyright", + "Maximum Bitrate", + "Private Data Indicator", + /* ^ 0x0F */ + "Smoothing Buffer", + "STD", + "IBP", + "DSM CC Carousel Identifier", + "DSM CC Association Tag", + "DSM CC Deferred Association Tag", + "DSM CC Reserved", + "DSM CC NPT Reference", + "DSM CC NPT Endpoint", + "DSM CC Stream Mode", + /* ^ 0x19 */ + "DSM CC Stream Event", + "MPEG-4 Video", + "MPEG-4 Audio", + "IOD", + "SL", + "FMC", + /* ^ 0x1F */ + "External ES ID", + "MuxCode", + "FmxBufferSize", + "MultiplexBuffer", + /* ^ 0x23 */ + "Content Labeling", + "Metadata Pointer", + "Metadata", + "Metadata STD", + "AVC Video", + "IPMP", + "AVC Timing and HRD", + "MPEG-2 AAC Audio", + "FlexMux Timing", + /* ^ 0x2C */ + "MPEG-4 Text", + "MPEG-4 Audio Extension", + "Auxiliary Video Stream", + "SVC Extension", + "MVC Extension", + "J2K Video", + "MVC Operation Point", + "MPEG-2 Stereoscopic Video Format", + "Stereoscopic Program Info", + "Stereoscopic Video Info", + /* ^ 0x36 */ +}; + +static const char *ISO13818_1_Get_Descriptor_Description(uint8_t i_desc) +{ + if( i_desc < 0x36 ) + return ISO13818_1_descriptors_descs[i_desc]; + else + return ISO13818_1_other_descs[1]; +} #endif _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
