Commit 7a5e0b24 authored by Antoine Cellerier's avatar Antoine Cellerier

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

parent 91a48475
...@@ -263,9 +263,9 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) ...@@ -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_chroma = i_chroma;
p_vout->render.i_aspect = i_aspect; p_vout->render.i_aspect = i_aspect;
p_vout->render.i_rmask = 0; p_vout->render.i_rmask = p_fmt->i_rmask;
p_vout->render.i_gmask = 0; p_vout->render.i_gmask = p_fmt->i_gmask;
p_vout->render.i_bmask = 0; p_vout->render.i_bmask = p_fmt->i_bmask;
p_vout->render.i_last_used_pic = -1; p_vout->render.i_last_used_pic = -1;
p_vout->render.b_allow_modify_pics = 1; p_vout->render.b_allow_modify_pics = 1;
...@@ -589,6 +589,13 @@ static int InitThread( vout_thread_t *p_vout ) ...@@ -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 ); p_vout->fmt_out.i_sar_num, p_vout->fmt_out.i_sar_den );
/* Calculate shifts from system-updated masks */ /* 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, MaskToShift( &p_vout->output.i_lrshift, &p_vout->output.i_rrshift,
p_vout->output.i_rmask ); p_vout->output.i_rmask );
MaskToShift( &p_vout->output.i_lgshift, &p_vout->output.i_rgshift, MaskToShift( &p_vout->output.i_lgshift, &p_vout->output.i_rgshift,
...@@ -1219,6 +1226,19 @@ static picture_t *ChromaGetPicture( filter_t *p_filter ) ...@@ -1219,6 +1226,19 @@ static picture_t *ChromaGetPicture( filter_t *p_filter )
return p_pic; 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 ) static int ChromaCreate( vout_thread_t *p_vout )
{ {
filter_t *p_chroma; filter_t *p_chroma;
...@@ -1231,16 +1251,9 @@ static int ChromaCreate( vout_thread_t *p_vout ) ...@@ -1231,16 +1251,9 @@ static int ChromaCreate( vout_thread_t *p_vout )
/* TODO: Set the fmt_in and fmt_out stuff here */ /* TODO: Set the fmt_in and fmt_out stuff here */
p_chroma->fmt_in.video = p_vout->fmt_render; p_chroma->fmt_in.video = p_vout->fmt_render;
p_chroma->fmt_out.video = p_vout->fmt_out; 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 ); p_chroma->p_module = module_Need( p_chroma, "video filter2", NULL, 0 );
if( p_chroma->p_module == NULL ) if( p_chroma->p_module == NULL )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment