]> git.sesse.net Git - vlc/commitdiff
Round scaled sizes to 16 (Closes:#524)
authorClément Stenac <zorglub@videolan.org>
Sat, 11 Feb 2006 14:50:37 +0000 (14:50 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 11 Feb 2006 14:50:37 +0000 (14:50 +0000)
modules/stream_out/transcode.c

index 8c79c24177248f87acda06a37fe15078e5764f6f..a6f168bae5b196009035ff494d578a8783aac2cf 100644 (file)
@@ -1547,9 +1547,24 @@ static int transcode_video_encoder_open( sout_stream_t *p_stream,
     if( id->p_encoder->fmt_out.video.i_width <= 0 &&
         id->p_encoder->fmt_out.video.i_height <= 0 && p_sys->f_scale )
     {
-        /* Apply the scaling */
+        /* Apply the scaling and round at the nearest 16. Don't allow 0 size */
         id->p_encoder->fmt_out.video.i_width = i_width * p_sys->f_scale;
+        if( id->p_encoder->fmt_out.video.i_width % 16 <= 7 &&
+            id->p_encoder->fmt_out.video.i_width >= 16 )
+            id->p_encoder->fmt_out.video.i_width -=
+                    id->p_encoder->fmt_out.video.i_width % 16;
+        else
+            id->p_encoder->fmt_out.video.i_width +=
+                    16 - id->p_encoder->fmt_out.video.i_width % 16;
+
         id->p_encoder->fmt_out.video.i_height = i_height * p_sys->f_scale;
+        if( id->p_encoder->fmt_out.video.i_height % 16 <= 7 &&
+            id->p_encoder->fmt_out.video.i_height >= 16 )
+            id->p_encoder->fmt_out.video.i_height -=
+                    id->p_encoder->fmt_out.video.i_height % 16;
+        else
+            id->p_encoder->fmt_out.video.i_height +=
+                    16 - id->p_encoder->fmt_out.video.i_height % 16;
     }
     else if( id->p_encoder->fmt_out.video.i_width > 0 &&
              id->p_encoder->fmt_out.video.i_height <= 0 )