Browse Source

video_filter: check the input/output RGB masks match

Otherwise it's not the same chroma and extra processing is needed to do
the filtering.
pull/162/head
Steve Lhomme 3 years ago
parent
commit
8d34d0455b
  1. 3
      modules/video_filter/adjust.c
  2. 3
      modules/video_filter/canvas.c
  3. 3
      modules/video_filter/colorthres.c
  4. 3
      modules/video_filter/croppadd.c
  5. 2
      modules/video_filter/deinterlace/deinterlace.c
  6. 3
      modules/video_filter/fps.c
  7. 3
      modules/video_filter/gaussianblur.c
  8. 3
      modules/video_filter/mirror.c
  9. 3
      modules/video_filter/posterize.c
  10. 3
      modules/video_filter/postproc.c
  11. 3
      modules/video_filter/rotate.c
  12. 3
      modules/video_filter/scale.c

3
modules/video_filter/adjust.c

@ -132,7 +132,8 @@ static const struct vlc_filter_operations packed_filter_ops =
*****************************************************************************/
static int Create( filter_t *p_filter )
{
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
return VLC_EGENERIC;

3
modules/video_filter/canvas.c

@ -170,7 +170,8 @@ static int Activate( filter_t *p_filter )
return VLC_EGENERIC;
}
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
return VLC_EGENERIC;

3
modules/video_filter/colorthres.c

@ -130,7 +130,8 @@ static int Create( filter_t *p_filter )
return VLC_EGENERIC;
}
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
return VLC_EGENERIC;

3
modules/video_filter/croppadd.c

@ -154,7 +154,8 @@ static int OpenFilter( filter_t *p_filter )
return VLC_EGENERIC;
}
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
/* In fact we don't really care about this since we're allowed

2
modules/video_filter/deinterlace/deinterlace.c

@ -620,7 +620,7 @@ notsupp:
free( psz_mode );
if( !p_filter->b_allow_fmt_out_change &&
( fmt.i_chroma != p_filter->fmt_in.video.i_chroma ||
( !video_format_IsSameChroma( &fmt, &p_filter->fmt_in.video ) ||
fmt.i_height != p_filter->fmt_in.video.i_height ) )
{
Close( p_filter );

3
modules/video_filter/fps.c

@ -165,7 +165,8 @@ static int Open( filter_t *p_filter )
filter_sys_t *p_sys;
/* This filter cannot change the format. */
if( p_filter->fmt_out.video.i_chroma != p_filter->fmt_in.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
return VLC_EGENERIC;
p_sys = p_filter->p_sys = vlc_obj_malloc( VLC_OBJECT(p_filter), sizeof( *p_sys ) );

3
modules/video_filter/gaussianblur.c

@ -136,7 +136,8 @@ static int Create( filter_t *p_filter )
return VLC_EGENERIC;
}
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
return VLC_EGENERIC;

3
modules/video_filter/mirror.c

@ -130,7 +130,8 @@ static int Create( filter_t *p_filter )
return VLC_EGENERIC;
}
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
return VLC_EGENERIC;

3
modules/video_filter/posterize.c

@ -112,7 +112,8 @@ static int Create( filter_t *p_filter )
return VLC_EGENERIC;
}
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
return VLC_EGENERIC;

3
modules/video_filter/postproc.c

@ -122,7 +122,8 @@ static int OpenPostproc( filter_t *p_filter )
const char *desc;
int i_flags = PP_CPU_CAPS_AUTO;
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma ||
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) ||
p_filter->fmt_in.video.i_height != p_filter->fmt_out.video.i_height ||
p_filter->fmt_in.video.i_width != p_filter->fmt_out.video.i_width )
{

3
modules/video_filter/rotate.c

@ -117,7 +117,8 @@ static int Create( filter_t *p_filter )
{
filter_sys_t *p_sys;
if( p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
if( !video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
msg_Err( p_filter, "Input and output chromas don't match" );
return VLC_EGENERIC;

3
modules/video_filter/scale.c

@ -62,7 +62,8 @@ static int OpenFilter( filter_t *p_filter )
p_filter->fmt_in.video.i_chroma != VLC_CODEC_ARGB &&
p_filter->fmt_in.video.i_chroma != VLC_CODEC_BGRA &&
p_filter->fmt_in.video.i_chroma != VLC_CODEC_ABGR ) ||
p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
!video_format_IsSameChroma( &p_filter->fmt_in.video,
&p_filter->fmt_out.video ) )
{
return VLC_EGENERIC;
}

Loading…
Cancel
Save