[vlc-commits] demux: ts: add PMT descriptors description

Francois Cartegnie git at videolan.org
Sun Jan 24 19:23:01 CET 2016


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | 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



More information about the vlc-commits mailing list