[vlc-commits] packetizer: hxxx: parse frame_packing

Francois Cartegnie git at videolan.org
Thu Jul 27 00:03:23 CEST 2017


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Wed Jul 26 21:41:51 2017 +0200| [89347c3e2d67bc0b42e24fa6fd51d2a870f41f33] | committer: Francois Cartegnie

packetizer: hxxx: parse frame_packing

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=89347c3e2d67bc0b42e24fa6fd51d2a870f41f33
---

 modules/packetizer/hxxx_sei.c | 19 +++++++++++++++++++
 modules/packetizer/hxxx_sei.h | 20 ++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/modules/packetizer/hxxx_sei.c b/modules/packetizer/hxxx_sei.c
index e1529bf654..393d07f3a7 100644
--- a/modules/packetizer/hxxx_sei.c
+++ b/modules/packetizer/hxxx_sei.c
@@ -135,6 +135,25 @@ void HxxxParseSEI(const uint8_t *p_buf, size_t i_buf,
                 free( p_t35 );
             } break;
 
+            case HXXX_SEI_FRAME_PACKING_ARRANGEMENT:
+            {
+                bs_read_ue( &s );
+                if ( !bs_read1( &s ) )
+                {
+                    sei_data.frame_packing.type = bs_read( &s, 7 );
+                    bs_read( &s, 1 );
+                    if( bs_read( &s, 6 ) == 2 ) /*intpr type*/
+                        sei_data.frame_packing.b_left_first = false;
+                    else
+                        sei_data.frame_packing.b_left_first = true;
+                    sei_data.frame_packing.b_flipped = bs_read1( &s );
+                    sei_data.frame_packing.b_fields = bs_read1( &s );
+                    sei_data.frame_packing.b_frame0 = bs_read1( &s );
+                }
+                else sei_data.frame_packing.type = FRAME_PACKING_CANCEL;
+
+            } break;
+
             /* Look for SEI recovery point */
             case HXXX_SEI_RECOVERY_POINT:
             {
diff --git a/modules/packetizer/hxxx_sei.h b/modules/packetizer/hxxx_sei.h
index e2f1603361..6691fb8b67 100644
--- a/modules/packetizer/hxxx_sei.h
+++ b/modules/packetizer/hxxx_sei.h
@@ -26,6 +26,7 @@ enum hxxx_sei_type_e
     HXXX_SEI_PIC_TIMING = 1,
     HXXX_SEI_USER_DATA_REGISTERED_ITU_T_T35 = 4,
     HXXX_SEI_RECOVERY_POINT = 6,
+    HXXX_SEI_FRAME_PACKING_ARRANGEMENT = 45,
     HXXX_SEI_MASTERING_DISPLAY_COLOUR_VOLUME = 137, /* SMPTE ST 2086 */
     HXXX_SEI_CONTENT_LIGHT_LEVEL = 144,
 };
@@ -55,6 +56,25 @@ typedef struct
         } itu_t35;
         struct
         {
+            enum
+            {
+                FRAME_PACKING_CANCEL = -1,
+                FRAME_PACKING_INTERLEAVED_CHECKERBOARD = 0,
+                FRAME_PACKING_INTERLEAVED_COLUMN,
+                FRAME_PACKING_INTERLEAVED_ROW,
+                FRAME_PACKING_SIDE_BY_SIDE,
+                FRAME_PACKING_TOP_BOTTOM,
+                FRAME_PACKING_TEMPORAL,
+                FRAME_PACKING_NONE_2D,
+                FRAME_PACKING_TILED,
+            } type;
+            bool b_flipped;
+            bool b_left_first;
+            bool b_fields;
+            bool b_frame0;
+        } frame_packing;
+        struct
+        {
             int i_frames;
         } recovery;
         struct



More information about the vlc-commits mailing list