]> git.sesse.net Git - vlc/commitdiff
* modules/codec/ffmpeg/*: fix interlaced encoding (top field first + repeat field.)
authorGildas Bazin <gbazin@videolan.org>
Fri, 5 Nov 2004 14:57:53 +0000 (14:57 +0000)
committerGildas Bazin <gbazin@videolan.org>
Fri, 5 Nov 2004 14:57:53 +0000 (14:57 +0000)
modules/codec/ffmpeg/encoder.c
modules/codec/ffmpeg/video.c

index a1ae0ea66914ea0c412f09a56d29abc7b535db22..400ef58f7aa7ac6ab8a9982c12c520804a098b28 100644 (file)
@@ -608,11 +608,11 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict )
     /* Let ffmpeg select the frame type */
     frame.pict_type = 0;
 
-    frame.repeat_pict = p_pict->i_nb_fields;
+    frame.repeat_pict = 2 - p_pict->i_nb_fields;
 
 #if LIBAVCODEC_BUILD >= 4685
     frame.interlaced_frame = !p_pict->b_progressive;
-    frame.top_field_first = p_pict->b_top_field_first;
+    frame.top_field_first = !!p_pict->b_top_field_first;
 #endif
 
 #if LIBAVCODEC_BUILD < 4702
index 6025c0b49137d12061fb4316c10cd79ab6bdf295..92071388631421c7562deeccf60539295d0f7388 100644 (file)
@@ -646,7 +646,7 @@ picture_t *E_(DecodeVideo)( decoder_t *p_dec, block_t **pp_block )
                 p_pic->b_force = VLC_TRUE;
             }
 
-            p_pic->i_nb_fields = p_sys->p_ff_pic->repeat_pict;
+            p_pic->i_nb_fields = 2 + p_sys->p_ff_pic->repeat_pict;
 #if LIBAVCODEC_BUILD >= 4685
             p_pic->b_progressive = !p_sys->p_ff_pic->interlaced_frame;
             p_pic->b_top_field_first = p_sys->p_ff_pic->top_field_first;