#include <vlc_common.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <vlc_filter.h>
/* ffmpeg header */
#endif
#include "avcodec.h"
-#include "chroma.h"
static picture_t *Deinterlace( filter_t *p_filter, picture_t *p_pic );
filter_sys_t *p_sys;
/* Check if we can handle that formats */
- if( GetFfmpegChroma( p_filter->fmt_in.video.i_chroma ) < 0 )
+ if( TestFfmpegChroma( -1, p_filter->fmt_in.i_codec ) != VLC_SUCCESS )
{
+ msg_Err( p_filter, "Failed to match chroma type" );
return VLC_EGENERIC;
}
}
/* Misc init */
- p_sys->i_src_ffmpeg_chroma =
- GetFfmpegChroma( p_filter->fmt_in.video.i_chroma );
+ p_filter->fmt_in.video.i_chroma = p_filter->fmt_in.i_codec;
+ if( GetFfmpegChroma( &p_sys->i_src_ffmpeg_chroma, p_filter->fmt_in.video ) != VLC_SUCCESS )
+ {
+ msg_Err( p_filter, "Failed to match chroma type" );
+ return VLC_EGENERIC;
+ }
p_filter->pf_video_filter = Deinterlace;
msg_Dbg( p_filter, "deinterlacing" );
int i, i_res = -1;
/* Request output picture */
- p_pic_dst = p_filter->pf_vout_buffer_new( p_filter );
+ p_pic_dst = filter_NewPicture( p_filter );
if( !p_pic_dst )
+ {
+ picture_Release( p_pic );
return NULL;
+ }
/* Prepare the AVPictures for the conversion */
for( i = 0; i < p_pic->i_planes; i++ )
if( i_res == -1 )
{
msg_Err( p_filter, "deinterlacing picture failed" );
- p_filter->pf_vout_buffer_del( p_filter, p_pic_dst );
+ filter_DeletePicture( p_filter, p_pic_dst );
+ picture_Release( p_pic );
return NULL;
}
- p_pic_dst->date = p_pic->date;
- p_pic_dst->b_force = p_pic->b_force;
- p_pic_dst->i_nb_fields = p_pic->i_nb_fields;
- p_pic_dst->b_progressive = true;
- p_pic_dst->b_top_field_first = p_pic->b_top_field_first;
- p_pic->pf_release( p_pic );
+ picture_CopyProperties( p_pic_dst, p_pic );
+ p_pic_dst->b_progressive = true;
+ picture_Release( p_pic );
return p_pic_dst;
}