Browse Source

yuvp: simplify

make use of VIDEO_FILTER_WRAPPER

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
pull/85/head
Lyndon Brown 8 years ago
committed by Jean-Baptiste Kempf
parent
commit
928bd8650c
  1. 41
      modules/video_chroma/yuvp.c

41
modules/video_chroma/yuvp.c

@ -52,7 +52,8 @@ vlc_module_end ()
/****************************************************************************
* Local prototypes
****************************************************************************/
static picture_t *Filter( filter_t *, picture_t * );
static picture_t *Convert_Filter( filter_t *, picture_t * );
static void Convert( filter_t *, picture_t *, picture_t * );
static void Yuv2Rgb( uint8_t *r, uint8_t *g, uint8_t *b, int y1, int u1, int v1 );
/*****************************************************************************
@ -76,7 +77,7 @@ static int Open( vlc_object_t *p_this )
return VLC_EGENERIC;
}
p_filter->pf_video_filter = Filter;
p_filter->pf_video_filter = Convert_Filter;
msg_Dbg( p_filter, "YUVP to %4.4s converter",
(const char*)&p_filter->fmt_out.video.i_chroma );
@ -95,13 +96,11 @@ static void Close( vlc_object_t *p_this )
/****************************************************************************
* Filter: the whole thing
****************************************************************************/
static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
{
picture_t *p_out;
if( !p_pic )
return NULL;
VIDEO_FILTER_WRAPPER( Convert )
static void Convert( filter_t *p_filter, picture_t *p_source,
picture_t *p_dest )
{
const video_palette_t *p_yuvp = p_filter->fmt_in.video.p_palette;
assert( p_yuvp != NULL );
@ -109,23 +108,15 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
assert( p_filter->fmt_in.video.i_width == p_filter->fmt_out.video.i_width );
assert( p_filter->fmt_in.video.i_height == p_filter->fmt_out.video.i_height );
/* Request output picture */
p_out = filter_NewPicture( p_filter );
if( !p_out )
{
picture_Release( p_pic );
return NULL;
}
if( p_filter->fmt_out.video.i_chroma == VLC_CODEC_YUVA )
{
for( unsigned int y = 0; y < p_filter->fmt_in.video.i_height; y++ )
{
const uint8_t *p_line = &p_pic->p->p_pixels[y*p_pic->p->i_pitch];
uint8_t *p_y = &p_out->Y_PIXELS[y*p_out->Y_PITCH];
uint8_t *p_u = &p_out->U_PIXELS[y*p_out->U_PITCH];
uint8_t *p_v = &p_out->V_PIXELS[y*p_out->V_PITCH];
uint8_t *p_a = &p_out->A_PIXELS[y*p_out->A_PITCH];
const uint8_t *p_line = &p_source->p->p_pixels[y*p_source->p->i_pitch];
uint8_t *p_y = &p_dest->Y_PIXELS[y*p_dest->Y_PITCH];
uint8_t *p_u = &p_dest->U_PIXELS[y*p_dest->U_PITCH];
uint8_t *p_v = &p_dest->V_PIXELS[y*p_dest->V_PITCH];
uint8_t *p_a = &p_dest->A_PIXELS[y*p_dest->A_PITCH];
for( unsigned int x = 0; x < p_filter->fmt_in.video.i_width; x++ )
{
@ -170,8 +161,8 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
for( unsigned int y = 0; y < p_filter->fmt_in.video.i_height; y++ )
{
const uint8_t *p_line = &p_pic->p->p_pixels[y*p_pic->p->i_pitch];
uint8_t *p_pixels = &p_out->p->p_pixels[y*p_out->p->i_pitch];
const uint8_t *p_line = &p_source->p->p_pixels[y*p_source->p->i_pitch];
uint8_t *p_pixels = &p_dest->p->p_pixels[y*p_dest->p->i_pitch];
for( unsigned int x = 0; x < p_filter->fmt_in.video.i_width; x++ )
{
@ -188,10 +179,6 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
}
}
picture_CopyProperties( p_out, p_pic );
picture_Release( p_pic );
return p_out;
}
/* FIXME copied from blend.c */

Loading…
Cancel
Save