[vlc-commits] packetizer: h264: set interlacing flags

Francois Cartegnie git at videolan.org
Tue Apr 7 00:39:00 CEST 2015


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Wed Mar 25 23:11:28 2015 +0100| [b7b9ddb4b45f475523d202228acc43aedcec7c7a] | committer: Francois Cartegnie

packetizer: h264: set interlacing flags

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

 modules/packetizer/h264.c |   29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
index b8a9d5b..89cca0b 100644
--- a/modules/packetizer/h264.c
+++ b/modules/packetizer/h264.c
@@ -760,6 +760,35 @@ static block_t *OutputPicture( decoder_t *p_dec )
     if( !p_sys->b_header )
         p_pic->i_flags |= BLOCK_FLAG_PREROLL;
 
+    if( p_sys->b_frame_mbs_only == 0 && p_sys->b_pic_struct_present_flag )
+    {
+        switch( p_sys->i_pic_struct )
+        {
+        case 1:
+            if( p_sys->i_fields_dts == 2 )
+                p_pic->i_flags |= BLOCK_FLAG_TOP_FIELD_FIRST;
+            else
+                p_pic->i_flags |= BLOCK_FLAG_BOTTOM_FIELD_FIRST;
+            break;
+        case 3:
+        case 5:
+            p_pic->i_flags |= BLOCK_FLAG_TOP_FIELD_FIRST;
+            break;
+        case 2:
+            if( p_sys->i_fields_dts == 2 )
+                p_pic->i_flags |= BLOCK_FLAG_BOTTOM_FIELD_FIRST;
+            else
+                p_pic->i_flags |= BLOCK_FLAG_TOP_FIELD_FIRST;
+            break;
+        case 4:
+        case 6:
+            p_pic->i_flags |= BLOCK_FLAG_BOTTOM_FIELD_FIRST;
+            break;
+        default:
+            break;
+        }
+    }
+
     p_sys->slice.i_frame_type = 0;
     p_sys->p_frame = NULL;
     p_sys->i_frame_dts = VLC_TS_INVALID;



More information about the vlc-commits mailing list