]> git.sesse.net Git - vlc/commitdiff
avcodec: pass aligned picture dimensions to video output
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 31 Aug 2013 15:45:32 +0000 (18:45 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Sun, 1 Sep 2013 09:37:15 +0000 (12:37 +0300)
This enables direct rendering for H.264 software decoding.

modules/codec/avcodec/video.c

index 958f9ea368313bebbb5f32f41d66ee255eed52db..db573d0489781a42640e834ae7d85bab77b71c3f 100644 (file)
@@ -126,20 +126,23 @@ static inline picture_t *ffmpeg_NewPictBuf( decoder_t *p_dec,
                                             AVCodecContext *p_context )
 {
     decoder_sys_t *p_sys = p_dec->p_sys;
+    int aligns[AV_NUM_DATA_POINTERS];
+    int width = p_context->coded_width;
+    int height = p_context->coded_height;
+
+    avcodec_align_dimensions2(p_context, &width, &height, aligns);
+
+    if( width == 0 || height == 0)
+        return NULL; /* invalid display size */
+
+    p_dec->fmt_out.video.i_width = width;
+    p_dec->fmt_out.video.i_height = height;
 
-    if( p_context->coded_width != p_context->width ||
-        p_context->coded_height != p_context->height )
+    if( width != p_context->width || height != p_context->height )
     {
         p_dec->fmt_out.video.i_visible_width = p_context->width;
         p_dec->fmt_out.video.i_visible_height = p_context->height;
     }
-    p_dec->fmt_out.video.i_width = p_context->coded_width;
-    p_dec->fmt_out.video.i_height = p_context->coded_height;
-
-    if( !p_context->width || !p_context->height )
-    {
-        return NULL; /* invalid display size */
-    }
 
     if( !p_sys->p_va && GetVlcChroma( &p_dec->fmt_out.video, p_context->pix_fmt ) )
     {