<div dir="ltr"><div><div>Patch merged,<br><br></div>Thanks,<br><br></div>Jean-Paul Saman</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 15, 2015 at 4:26 PM, Daniel Kamil Kozar <span dir="ltr"><<a href="mailto:dkk089@gmail.com" target="_blank">dkk089@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">---<br>
examples/dvbinfo/libdvbpsi.c | 59 ++++++++++++++++++++++++++++++++++++++++++++<br>
1 file changed, 59 insertions(+)<br>
<br>
diff --git a/examples/dvbinfo/libdvbpsi.c b/examples/dvbinfo/libdvbpsi.c<br>
index 1d79d4c..096df28 100644<br>
--- a/examples/dvbinfo/libdvbpsi.c<br>
+++ b/examples/dvbinfo/libdvbpsi.c<br>
@@ -982,6 +982,61 @@ static void DumpIBPDescriptor(const void *p_descriptor)<br>
printf("Max GOP length: %" PRIu16 " \n", ibp_descriptor->i_max_gop_length);<br>
}<br>
<br>
+static const char* MPEG4VideoProfileToString(dvbpsi_mpeg4_visual_profile_and_level_t profile)<br>
+{<br>
+ switch(profile)<br>
+ {<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_L1: return "Simple Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_L2: return "Simple Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_L3: return "Simple Profile/Level 3";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_SCALABLE_L1: return "Simple Scalable Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_SCALABLE_L2: return "Simple Scalable Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_CORE_L1: return "Core Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_CORE_L2: return "Core Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_MAIN_L2: return "Main Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_MAIN_L3: return "Main Profile/Level 3";<br>
+ case DVBPSI_MPEG4V_PROFILE_MAIN_L4: return "Main Profile/Level 4";<br>
+ case DVBPSI_MPEG4V_PROFILE_N_BIT_L2: return "N-bit Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_SCALABLE_TEXTURE_L1: return "Scalable Texture Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_FACE_ANIMATION_L1: return "Simple Face Animation Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_FACE_ANIMATION_L2: return "Simple Face Animation Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_FBA_L1: return "Simple FBA Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_SIMPLE_FBA_L2: return "Simple FBA Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_BASIC_ANIMATED_TEXTURE_L1: return "Basic Animated Texture Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_BASIC_ANIMATED_TEXTURE_L2: return "Basic Animated Texture Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_HYBRID_L1: return "Hybrid Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_HYBRID_L2: return "Hybrid Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_REAL_TIME_SIMPLE_L1: return "Advanced Real Time Simple Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_REAL_TIME_SIMPLE_L2: return "Advanced Real Time Simple Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_REAL_TIME_SIMPLE_L3: return "Advanced Real Time Simple Profile/Level 3";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_REAL_TIME_SIMPLE_L4: return "Advanced Real Time Simple Profile/Level 4";<br>
+ case DVBPSI_MPEG4V_PROFILE_CORE_SCALABLE_L1: return "Core Scalable Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_CORE_SCALABLE_L2: return "Core Scalable Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_CORE_SCALABLE_L3: return "Core Scalable Profile/Level 3";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_CODING_EFF_L1: return "Advanced Coding Efficiency Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_CODING_EFF_L2: return "Advanced Coding Efficiency Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_CODING_EFF_L3: return "Advanced Coding Efficiency Profile/Level 3";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_CODING_EFF_L4: return "Advanced Coding Efficiency Profile/Level 4";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_CORE_L1: return "Advanced Core Profile/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_CORE_L2: return "Advanced Core Profile/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_SCALABLE_TEXTURE_L1: return "Advanced Scalable Texture/Level 1";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_SCALABLE_TEXTURE_L2: return "Advanced Scalable Texture/Level 2";<br>
+ case DVBPSI_MPEG4V_PROFILE_ADV_SCALABLE_TEXTURE_L3: return "Advanced Scalable Texture/Level 3";<br>
+<br>
+ case DVBPSI_MPEG4V_PROFILE_LAST:<br>
+ default:<br>
+ return "Reserved";<br>
+ }<br>
+}<br>
+<br>
+static void DumpMPEG4VideoDescriptor(const void *p_descriptor)<br>
+{<br>
+ const dvbpsi_mpeg4_video_dr_t *mpeg4_descriptor = p_descriptor;<br>
+ printf("MPEG-4 Video Profile and Level : %s (0x%02x) \n",<br>
+ MPEG4VideoProfileToString(mpeg4_descriptor->i_mpeg4_visual_profile_and_level),<br>
+ mpeg4_descriptor->i_mpeg4_visual_profile_and_level);<br>
+}<br>
+<br>
/*****************************************************************************<br>
* DumpSystemClockDescriptor<br>
*****************************************************************************/<br>
@@ -1564,6 +1619,10 @@ static void DumpDescriptor(dvbpsi_descriptor_t *p_descriptor)<br>
p_decoded = dvbpsi_DecodeIBPDr(p_descriptor);<br>
dump_dr_fn = DumpIBPDescriptor;<br>
break;<br>
+ case 0x1b:<br>
+ p_decoded = dvbpsi_DecodeMPEG4VideoDr(p_descriptor);<br>
+ dump_dr_fn = DumpMPEG4VideoDescriptor;<br>
+ break;<br>
case 0x4c:<br>
p_decoded = dvbpsi_DecodeTimeShiftedServiceDr(p_descriptor);<br>
dump_dr_fn = DumpTimeShiftedServiceDescriptor;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.3.2<br>
<br>
_______________________________________________<br>
libdvbpsi-devel mailing list<br>
<a href="mailto:libdvbpsi-devel@videolan.org">libdvbpsi-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/libdvbpsi-devel" target="_blank">https://mailman.videolan.org/listinfo/libdvbpsi-devel</a><br>
</font></span></blockquote></div><br></div>