[libdvbpsi-devel] Dump the content labelling descriptor in dvbinfo

Daniel Kamil Kozar git at videolan.org
Mon Aug 24 12:54:41 CEST 2015


libdvbpsi | branch: master | Daniel Kamil Kozar <dkk089 at gmail.com> | Wed Jun 10 00:53:25 2015 +0200| [9607e7555879b0702b8763ac31cd40e0341c2dbc] | committer: Jean-Paul Saman

Dump the content labelling descriptor in dvbinfo

Signed-off-by: Jean-Paul Saman <jpsaman at videolan.org>

> http://git.videolan.org/gitweb.cgi/libdvbpsi.git/?a=commit;h=9607e7555879b0702b8763ac31cd40e0341c2dbc
---

 examples/dvbinfo/libdvbpsi.c |   68 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/examples/dvbinfo/libdvbpsi.c b/examples/dvbinfo/libdvbpsi.c
index ce4613c..bfdc035 100644
--- a/examples/dvbinfo/libdvbpsi.c
+++ b/examples/dvbinfo/libdvbpsi.c
@@ -772,6 +772,18 @@ static void handle_PAT(void* p_data, dvbpsi_pat_t* p_pat)
     dvbpsi_pat_delete(p_pat);
 }
 
+static void dump_hex_data(const char *prefix, const uint8_t *data,
+    unsigned int length)
+{
+    unsigned int i;
+    printf("%s : [ ", prefix);
+    for(i = 0 ; i < length ; ++i)
+    {
+        printf("0x%02" PRIx8 " ", data[i]);
+    }
+    printf("]\n");
+}
+
 /*****************************************************************************
  * GetTypeName of PMT stream_type
  *****************************************************************************/
@@ -1046,6 +1058,58 @@ static void DumpMPEG4AudioDescriptor(const void *p_descriptor)
         mpeg4_descriptor->i_mpeg4_audio_profile_and_level);
 }
 
+static void DumpContentLabellingDescriptor(const void *p_descriptor)
+{
+    const dvbpsi_content_labelling_dr_t *p_content_lbl_dr = p_descriptor;
+    printf("Metadata application format : 0x%04" PRIx16 "\n",
+        p_content_lbl_dr->i_metadata_application_format);
+    if(p_content_lbl_dr->i_metadata_application_format == 0xFFFF)
+    {
+        printf("\t\t Metadata application format identifier : 0x%08" PRIx32 "\n",
+            p_content_lbl_dr->i_metadata_application_format_identifier);
+    }
+
+    printf("\t\t Content reference ID record flag : %d\n",
+        p_content_lbl_dr->b_content_reference_id_record_flag);
+    printf("\t\t Content time base indicator : 0x%02" PRIx8 "\n",
+        p_content_lbl_dr->i_content_time_base_indicator);
+
+    if(p_content_lbl_dr->b_content_reference_id_record_flag)
+    {
+        dump_hex_data("\t\t Content reference ID",
+            p_content_lbl_dr->p_content_reference_id,
+            p_content_lbl_dr->i_content_reference_id_record_length);
+    }
+
+    if(p_content_lbl_dr->i_content_time_base_indicator == 1 ||
+        p_content_lbl_dr->i_content_time_base_indicator == 2)
+    {
+        printf("\t\t Content time base value : 0x%09" PRIx64 "\n",
+            p_content_lbl_dr->i_content_time_base_value);
+        printf("\t\t Metadata time base value : 0x%09" PRIx64 "\n",
+            p_content_lbl_dr->i_metadata_time_base_value);
+    }
+
+    if(p_content_lbl_dr->i_content_time_base_indicator == 2)
+    {
+        printf("\t\t contentId : 0x%02" PRIx8 "\n", p_content_lbl_dr->i_contentId);
+    }
+
+    if(p_content_lbl_dr->i_content_time_base_indicator >= 3 &&
+        p_content_lbl_dr->i_content_time_base_indicator <= 7)
+    {
+        dump_hex_data("\t\t Time base association data",
+            p_content_lbl_dr->p_time_base_association_data,
+            p_content_lbl_dr->i_time_base_association_data_length);
+    }
+
+    if(p_content_lbl_dr->i_private_data_len)
+    {
+        dump_hex_data("\t\t Private data", p_content_lbl_dr->p_private_data,
+            p_content_lbl_dr->i_private_data_len);
+    }
+}
+
 /*****************************************************************************
  * DumpSystemClockDescriptor
  *****************************************************************************/
@@ -1655,6 +1719,10 @@ static void DumpDescriptor(dvbpsi_descriptor_t *p_descriptor)
             p_decoded = dvbpsi_DecodeMPEG4AudioDr(p_descriptor);
             dump_dr_fn = DumpMPEG4AudioDescriptor;
             break;
+        case 0x24:
+            p_decoded = dvbpsi_DecodeContentLabellingDr(p_descriptor);
+            dump_dr_fn = DumpContentLabellingDescriptor;
+            break;
         case 0x4c:
             p_decoded = dvbpsi_DecodeTimeShiftedServiceDr(p_descriptor);
             dump_dr_fn = DumpTimeShiftedServiceDescriptor;



More information about the libdvbpsi-devel mailing list