static void CleanThread ( vout_thread_t * );
static void EndThread ( vout_thread_t * );
-static void VideoFormatImportRgb( video_format_t *, const picture_heap_t * );
-static void PictureHeapFixRgb( picture_heap_t * );
-
static void vout_Destructor ( vlc_object_t * p_this );
/* Object variables callbacks */
free( psz_filter_chain );
}
+#warning "FIXME: Check RGB masks in vout_Request"
+ /* FIXME: check RGB masks */
if( p_vout->fmt_render.i_chroma != vlc_fourcc_GetCodec( VIDEO_ES, p_fmt->i_chroma ) ||
p_vout->fmt_render.i_width != p_fmt->i_width ||
p_vout->fmt_render.i_height != p_fmt->i_height ||
p_vout->fmt_render = *p_fmt; /* FIXME palette */
p_vout->fmt_in = *p_fmt; /* FIXME palette */
+ video_format_FixRgb( &p_vout->fmt_render );
+ video_format_FixRgb( &p_vout->fmt_in );
+
p_vout->render.i_width = i_width;
p_vout->render.i_height = i_height;
p_vout->render.i_chroma = i_chroma;
p_vout->render.i_aspect = i_aspect;
- 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;
/* Zero the output heap */
p_vout->output.i_chroma = 0;
p_vout->output.i_aspect = 0;
- p_vout->output.i_rmask = 0;
- p_vout->output.i_gmask = 0;
- p_vout->output.i_bmask = 0;
-
/* Initialize misc stuff */
p_vout->i_changes = 0;
p_vout->b_fullscreen = 0;
/* FIXME removed the need of both fmt_* and heap infos */
/* Calculate shifts from system-updated masks */
- PictureHeapFixRgb( &p_vout->render );
- VideoFormatImportRgb( &p_vout->fmt_render, &p_vout->render );
-
- PictureHeapFixRgb( &p_vout->output );
- VideoFormatImportRgb( &p_vout->fmt_out, &p_vout->output );
+ video_format_FixRgb( &p_vout->fmt_render );
+ video_format_FixRgb( &p_vout->fmt_out );
/* print some usefull debug info about different vout formats
*/
/* following functions are local */
-/**
- * This function copies all RGB informations from a picture_heap_t into
- * a video_format_t
- */
-static void VideoFormatImportRgb( video_format_t *p_fmt, const picture_heap_t *p_heap )
-{
- p_fmt->i_rmask = p_heap->i_rmask;
- p_fmt->i_gmask = p_heap->i_gmask;
- p_fmt->i_bmask = p_heap->i_bmask;
- p_fmt->i_rrshift = p_heap->i_rrshift;
- p_fmt->i_lrshift = p_heap->i_lrshift;
- p_fmt->i_rgshift = p_heap->i_rgshift;
- p_fmt->i_lgshift = p_heap->i_lgshift;
- p_fmt->i_rbshift = p_heap->i_rbshift;
- p_fmt->i_lbshift = p_heap->i_lbshift;
-}
-
-/**
- * This funtion copes all RGB informations from a video_format_t into
- * a picture_heap_t
- */
-static void VideoFormatExportRgb( const video_format_t *p_fmt, picture_heap_t *p_heap )
-{
- p_heap->i_rmask = p_fmt->i_rmask;
- p_heap->i_gmask = p_fmt->i_gmask;
- p_heap->i_bmask = p_fmt->i_bmask;
- p_heap->i_rrshift = p_fmt->i_rrshift;
- p_heap->i_lrshift = p_fmt->i_lrshift;
- p_heap->i_rgshift = p_fmt->i_rgshift;
- p_heap->i_lgshift = p_fmt->i_lgshift;
- p_heap->i_rbshift = p_fmt->i_rbshift;
- p_heap->i_lbshift = p_fmt->i_lbshift;
-}
-
-/**
- * This function computes rgb shifts from masks
- */
-static void PictureHeapFixRgb( picture_heap_t *p_heap )
-{
- video_format_t fmt;
-
- /* */
- fmt.i_chroma = p_heap->i_chroma;
- VideoFormatImportRgb( &fmt, p_heap );
-
- /* */
- video_format_FixRgb( &fmt );
-
- VideoFormatExportRgb( &fmt, p_heap );
-}
-
/*****************************************************************************
* object variables callbacks: a bunch of object variables are used by the
* interfaces to interact with the vout.
vout->output.i_width = source.i_width;
vout->output.i_height = source.i_height;
vout->output.i_aspect = (int64_t)source.i_sar_num * source.i_width * VOUT_ASPECT_FACTOR / source.i_sar_den / source.i_height;
- vout->output.i_rmask = source.i_rmask;
- vout->output.i_gmask = source.i_gmask;
- vout->output.i_bmask = source.i_bmask;
/* also set fmt_out (completly broken API) */
vout->fmt_out.i_chroma = vout->output.i_chroma;
vout->fmt_out.i_sar_den = VOUT_ASPECT_FACTOR * vout->output.i_width;
vout->fmt_out.i_x_offset = 0;
vout->fmt_out.i_y_offset = 0;
+ vout->fmt_out.i_rmask = source.i_rmask;
+ vout->fmt_out.i_gmask = source.i_gmask;
+ vout->fmt_out.i_bmask = source.i_bmask;
if (vout->fmt_in.i_visible_width != source.i_visible_width ||
vout->fmt_in.i_visible_height != source.i_visible_height ||