[vlc-devel] commit: Propagate rgb mask/shift values on render format/heap too. ( Antoine Cellerier )

git version control git at videolan.org
Wed Jul 2 19:03:30 CEST 2008


vlc | branch: master | Antoine Cellerier <dionoea at videolan.org> | Wed Jul  2 19:05:46 2008 +0200| [7a5e0b241b09a404ca098b215387192231a812c9]

Propagate rgb mask/shift values on render format/heap too.

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

 src/video_output/video_output.c |   37 +++++++++++++++++++++++++------------
 1 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index af8fe77..b0e1eb5 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -263,9 +263,9 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
     p_vout->render.i_chroma   = i_chroma;
     p_vout->render.i_aspect   = i_aspect;
 
-    p_vout->render.i_rmask    = 0;
-    p_vout->render.i_gmask    = 0;
-    p_vout->render.i_bmask    = 0;
+    p_vout->render.i_rmask    = p_fmt->i_rmask;
+    p_vout->render.i_gmask    = p_fmt->i_gmask;
+    p_vout->render.i_bmask    = p_fmt->i_bmask;
 
     p_vout->render.i_last_used_pic = -1;
     p_vout->render.b_allow_modify_pics = 1;
@@ -589,6 +589,13 @@ static int InitThread( vout_thread_t *p_vout )
              p_vout->fmt_out.i_sar_num, p_vout->fmt_out.i_sar_den );
 
     /* Calculate shifts from system-updated masks */
+    MaskToShift( &p_vout->render.i_lrshift, &p_vout->output.i_rrshift,
+                 p_vout->render.i_rmask );
+    MaskToShift( &p_vout->render.i_lgshift, &p_vout->output.i_rgshift,
+                 p_vout->render.i_gmask );
+    MaskToShift( &p_vout->render.i_lbshift, &p_vout->output.i_rbshift,
+                 p_vout->render.i_bmask );
+
     MaskToShift( &p_vout->output.i_lrshift, &p_vout->output.i_rrshift,
                  p_vout->output.i_rmask );
     MaskToShift( &p_vout->output.i_lgshift, &p_vout->output.i_rgshift,
@@ -1219,6 +1226,19 @@ static picture_t *ChromaGetPicture( filter_t *p_filter )
     return p_pic;
 }
 
+static int ChromaCopyRgbInfo( es_format_t *p_fmt, picture_heap_t *p_heap )
+{
+    p_fmt->video.i_rmask = p_heap->i_rmask;
+    p_fmt->video.i_gmask = p_heap->i_gmask;
+    p_fmt->video.i_bmask = p_heap->i_bmask;
+    p_fmt->video.i_rrshift = p_heap->i_rrshift;
+    p_fmt->video.i_lrshift = p_heap->i_lrshift;
+    p_fmt->video.i_rgshift = p_heap->i_rgshift;
+    p_fmt->video.i_lgshift = p_heap->i_lgshift;
+    p_fmt->video.i_rbshift = p_heap->i_rbshift;
+    p_fmt->video.i_lbshift = p_heap->i_lbshift;
+}
+
 static int ChromaCreate( vout_thread_t *p_vout )
 {
     filter_t *p_chroma;
@@ -1231,16 +1251,9 @@ static int ChromaCreate( vout_thread_t *p_vout )
     /* TODO: Set the fmt_in and fmt_out stuff here */
     p_chroma->fmt_in.video = p_vout->fmt_render;
     p_chroma->fmt_out.video = p_vout->fmt_out;
+    ChromaCopyRgbInfo( &p_chroma->fmt_in, &p_vout->render );
+    ChromaCopyRgbInfo( &p_chroma->fmt_out, &p_vout->output );
 
-    p_chroma->fmt_out.video.i_rmask = p_vout->output.i_rmask;
-    p_chroma->fmt_out.video.i_gmask = p_vout->output.i_gmask;
-    p_chroma->fmt_out.video.i_bmask = p_vout->output.i_bmask;
-    p_chroma->fmt_out.video.i_rrshift = p_vout->output.i_rrshift;
-    p_chroma->fmt_out.video.i_lrshift = p_vout->output.i_lrshift;
-    p_chroma->fmt_out.video.i_rgshift = p_vout->output.i_rgshift;
-    p_chroma->fmt_out.video.i_lgshift = p_vout->output.i_lgshift;
-    p_chroma->fmt_out.video.i_rbshift = p_vout->output.i_rbshift;
-    p_chroma->fmt_out.video.i_lbshift = p_vout->output.i_lbshift;
     p_chroma->p_module = module_Need( p_chroma, "video filter2", NULL, 0 );
 
     if( p_chroma->p_module == NULL )




More information about the vlc-devel mailing list