]> git.sesse.net Git - vlc/commitdiff
* Merged trunk changes r9244:9250 to 0.8.1 branch.
authorGildas Bazin <gbazin@videolan.org>
Wed, 10 Nov 2004 13:01:48 +0000 (13:01 +0000)
committerGildas Bazin <gbazin@videolan.org>
Wed, 10 Nov 2004 13:01:48 +0000 (13:01 +0000)
include/vlc_es.h
modules/stream_out/transcode.c
modules/video_filter/logo.c
modules/video_output/x11/x11.c
src/video_output/vout_pictures.c
src/video_output/vout_subpictures.c

index 0685fabff25fec7d50218fcf123e44083e5e8348..e1fe3eef25708dcf98cd31be0abd983f0586774b 100644 (file)
@@ -99,6 +99,9 @@ struct video_format_t
 
     unsigned int i_bits_per_pixel;             /**< number of bits per pixel */
 
+    unsigned int i_sar_num;                   /**< sample/pixel aspect ratio */
+    unsigned int i_sar_den;
+
     unsigned int i_frame_rate;                     /**< frame rate numerator */
     unsigned int i_frame_rate_base;              /**< frame rate denominator */
 
index 9555e661d6ec947d9cca29d9aca742e618db6bef..dc8b09bf4f3f734e80901ab9993894f4da8d0096 100644 (file)
@@ -1608,6 +1608,11 @@ static int transcode_video_process( sout_stream_t *p_stream,
             else
                 p_fmt = &id->p_decoder->fmt_out.video;
 
+            /* FIXME (shouldn't have to be done here) */
+            p_fmt->i_sar_num = p_fmt->i_aspect *
+                p_fmt->i_height / p_fmt->i_width;
+            p_fmt->i_sar_den = VOUT_ASPECT_FACTOR;
+
             spu_RenderSubpictures( p_sys->p_spu, p_fmt, p_pic, p_pic, p_subpic,
                                    i_scale_width, i_scale_height );
         }
index c1851cbb3ece3274ce82513e0f20e0ff1e8029f6..3adb154af97af6debe94d87eeb7b9a366dc89fac 100644 (file)
@@ -631,6 +631,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
     memset( &fmt, 0, sizeof(video_format_t) );
     fmt.i_chroma = VLC_FOURCC('Y','U','V','A');
     fmt.i_aspect = VOUT_ASPECT_FACTOR;
+    fmt.i_sar_num = fmt.i_sar_den = 1;
     fmt.i_width = fmt.i_visible_width = p_sys->i_width;
     fmt.i_height = fmt.i_visible_height = p_sys->i_height;
     fmt.i_x_offset = fmt.i_y_offset = 0;
index 5a22e596e8b55d625eb4b3d5fbeac9aa064bd879..af84b918f899553d6b8cbf52c643b8645d1dbde6 100644 (file)
@@ -73,7 +73,7 @@ vlc_module_begin();
     add_integer ( "x11-xineramascreen", 0, NULL, SCREEN_TEXT, SCREEN_LONGTEXT, VLC_TRUE );
 #endif
     set_description( _("X11 video output") );
-    set_capability( "video output", 50 );
+    set_capability( "video output", 70 );
     set_callbacks( E_(Activate), E_(Deactivate) );
 vlc_module_end();
 
index f659cd758e8af4619ab19b99b05468d0ee7e811b..a7ff57fbfb1b45736ce42613e09805f2281decc9 100644 (file)
@@ -300,6 +300,8 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
     fmt.i_chroma = p_vout->output.i_chroma;
     fmt.i_width = p_vout->output.i_width;
     fmt.i_height = p_vout->output.i_height;
+    fmt.i_sar_num = p_vout->output.i_aspect * fmt.i_height / fmt.i_width;
+    fmt.i_sar_den = VOUT_ASPECT_FACTOR;
     i_scale_width = p_vout->output.i_width * 1000 / p_vout->render.i_width;
     i_scale_height = p_vout->output.i_height * 1000 / p_vout->render.i_height;
 
index 202349517c251a6672bd97789c6bfc2271e09a27..d8ea373375dff850fb7050b142e098fe3171f752 100644 (file)
@@ -496,6 +496,15 @@ void spu_RenderSubpictures( spu_t *p_spu, video_format_t *p_fmt,
                 p_subpic->i_original_picture_height;
         }
 
+        /* Take care of the aspect ratio */
+        if( p_region && p_region->fmt.i_sar_num * p_fmt->i_sar_den !=
+            p_region->fmt.i_sar_den * p_fmt->i_sar_num )
+        {
+            i_scale_width = i_scale_width *
+                (int64_t)p_region->fmt.i_sar_num * p_fmt->i_sar_den /
+                p_region->fmt.i_sar_den / p_fmt->i_sar_num;
+        }
+
         /* Load the scaling module */
         if( !p_spu->p_scale && (i_scale_width != 1000 ||
             i_scale_height != 1000) )