FFmpeg  4.0
Data Structures | Macros | Enumerations | Functions | Variables
vf_mcdeint.c File Reference

Motion Compensation Deinterlacer Ported from MPlayer libmpcodecs/vf_mcdeint.c. More...

#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavcodec/avcodec.h"
#include "avfilter.h"
#include "formats.h"
#include "internal.h"

Go to the source code of this file.

Data Structures

struct  MCDeintContext
 

Macros

#define OFFSET(x)   offsetof(MCDeintContext, x)
 
#define FLAGS   AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
#define CONST(name, help, val, unit)   { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, INT_MIN, INT_MAX, FLAGS, unit }
 
#define DELTA(j)   av_clip(j, -x, w-1-x)
 
#define GET_SCORE_EDGE(j)
 
#define GET_SCORE(j)
 
#define CHECK_EDGE(j)
 
#define CHECK(j)
 

Enumerations

enum  MCDeintMode {
  MODE_FAST = 0, MODE_MEDIUM, MODE_SLOW, MODE_EXTRA_SLOW,
  MODE_NB
}
 
enum  MCDeintParity { PARITY_TFF = 0, PARITY_BFF = 1 }
 

Functions

 AVFILTER_DEFINE_CLASS (mcdeint)
 
static int config_props (AVFilterLink *inlink)
 
static av_cold void uninit (AVFilterContext *ctx)
 
static int query_formats (AVFilterContext *ctx)
 
static int filter_frame (AVFilterLink *inlink, AVFrame *inpic)
 
 CHECK (-1) CHECK(-2) }} }} CHECK(1) CHECK(2) }} }} } if(diff0+diff1 > 0) temp -
 
 for (y=0;y< h;y++)
 
 if (ret< 0)
 
return ff_filter_frame (outlink, outpic)
 

Variables

static const AVOption mcdeint_options []
 
 else
 
else temp = (diff0 + diff1 + FFABS(FFABS(diff0) - FFABS(diff1)) / 2) / 2
 
filp = *dstp = temp > 255U ? ~(temp>>31) : temp
 
mcdeint parity = 1
 
end __pad0__
 
av_frame_freeinpic
 
static const AVFilterPad mcdeint_inputs []
 
static const AVFilterPad mcdeint_outputs []
 
AVFilter ff_vf_mcdeint
 

Detailed Description

Motion Compensation Deinterlacer Ported from MPlayer libmpcodecs/vf_mcdeint.c.

Known Issues:

The motion estimation is somewhat at the mercy of the input, if the input frames are created purely based on spatial interpolation then for example a thin black line or another random and not interpolateable pattern will cause problems. Note: completely ignoring the "unavailable" lines during motion estimation did not look any better, so the most obvious solution would be to improve tfields or penalize problematic motion vectors.

If non iterative ME is used then snow currently ignores the OBMC window and as a result sometimes creates artifacts.

Only past frames are used, we should ideally use future frames too, something like filtering the whole movie in forward and then backward direction seems like an interesting idea but the current filter framework is FAR from supporting such things.

Combining the motion compensated image with the input image also is not as trivial as it seems, simple blindly taking even lines from one and odd ones from the other does not work at all as ME/MC sometimes has nothing in the previous frames which matches the current. The current algorithm has been found by trial and error and almost certainly can be improved...

Definition in file vf_mcdeint.c.

Macro Definition Documentation

◆ OFFSET

#define OFFSET (   x)    offsetof(MCDeintContext, x)

Definition at line 80 of file vf_mcdeint.c.

◆ FLAGS

Definition at line 81 of file vf_mcdeint.c.

◆ CONST

#define CONST (   name,
  help,
  val,
  unit 
)    { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, INT_MIN, INT_MAX, FLAGS, unit }

Definition at line 82 of file vf_mcdeint.c.

◆ DELTA

#define DELTA (   j)    av_clip(j, -x, w-1-x)

◆ GET_SCORE_EDGE

#define GET_SCORE_EDGE (   j)
Value:
FFABS(srcp[-srcs+DELTA(-1+(j))] - srcp[+srcs+DELTA(-1-(j))])+\
FFABS(srcp[-srcs+DELTA(j) ] - srcp[+srcs+DELTA( -(j))])+\
FFABS(srcp[-srcs+DELTA(1+(j)) ] - srcp[+srcs+DELTA( 1-(j))])
BYTE int const BYTE * srcp
Definition: avisynth_c.h:813
#define DELTA(j)
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
Definition: common.h:72

Referenced by filter_frame().

◆ GET_SCORE

#define GET_SCORE (   j)
Value:
FFABS(srcp[-srcs-1+(j)] - srcp[+srcs-1-(j)])+\
FFABS(srcp[-srcs +(j)] - srcp[+srcs -(j)])+\
FFABS(srcp[-srcs+1+(j)] - srcp[+srcs+1-(j)])
BYTE int const BYTE * srcp
Definition: avisynth_c.h:813
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
Definition: common.h:72

◆ CHECK_EDGE

#define CHECK_EDGE (   j)
Value:
{ int score = GET_SCORE_EDGE(j);\
if (score < spatial_score){\
spatial_score = score;\
diff0 = filp[-fils+DELTA(j)] - srcp[-srcs+DELTA(j)];\
diff1 = filp[+fils+DELTA(-(j))] - srcp[+srcs+DELTA(-(j))];\
BYTE int const BYTE * srcp
Definition: avisynth_c.h:813
#define GET_SCORE_EDGE(j)
#define DELTA(j)
* filp
Definition: vf_mcdeint.c:257

Referenced by filter_frame().

◆ CHECK

#define CHECK (   j)
Value:
{ int score = GET_SCORE(j);\
if (score < spatial_score){\
spatial_score= score;\
diff0 = filp[-fils+(j)] - srcp[-srcs+(j)];\
diff1 = filp[+fils-(j)] - srcp[+srcs-(j)];\
BYTE int const BYTE * srcp
Definition: avisynth_c.h:813
#define GET_SCORE(j)
* filp
Definition: vf_mcdeint.c:257

Enumeration Type Documentation

◆ MCDeintMode

Enumerator
MODE_FAST 
MODE_MEDIUM 
MODE_SLOW 
MODE_EXTRA_SLOW 
MODE_NB 

Definition at line 59 of file vf_mcdeint.c.

◆ MCDeintParity

Enumerator
PARITY_TFF 

top field first

PARITY_BFF 

bottom field first

Definition at line 67 of file vf_mcdeint.c.

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( mcdeint  )

◆ config_props()

static int config_props ( AVFilterLink inlink)
static

Definition at line 101 of file vf_mcdeint.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 153 of file vf_mcdeint.c.

◆ query_formats()

static int query_formats ( AVFilterContext ctx)
static

Definition at line 160 of file vf_mcdeint.c.

◆ filter_frame()

static int filter_frame ( AVFilterLink inlink,
AVFrame inpic 
)
static

Definition at line 171 of file vf_mcdeint.c.

◆ CHECK()

CHECK ( 1)

◆ for()

for ( )

Definition at line 265 of file vf_mcdeint.c.

◆ if()

uint8_t pi<< 24) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_U8,(uint64_t)((*(const uint8_t *) pi - 0x80U))<< 56) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8,(*(const uint8_t *) pi - 0x80) *(1.0f/(1<< 7))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8,(*(const uint8_t *) pi - 0x80) *(1.0/(1<< 7))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16,(*(const int16_t *) pi >>8)+0x80) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_S16,(uint64_t)(*(const int16_t *) pi)<< 48) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, *(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, *(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32,(*(const int32_t *) pi >>24)+0x80) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_S32,(uint64_t)(*(const int32_t *) pi)<< 32) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, *(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, *(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S64,(*(const int64_t *) pi >>56)+0x80) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S64, *(const int64_t *) pi *(1.0f/(INT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S64, *(const int64_t *) pi *(1.0/(INT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_FLT, llrintf(*(const float *) pi *(INT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31)))) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_DBL, llrint(*(const double *) pi *(INT64_C(1)<< 63))) #define FMT_PAIR_FUNC(out, in) static conv_func_type *const fmt_pair_to_conv_functions[AV_SAMPLE_FMT_NB *AV_SAMPLE_FMT_NB]={ FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S64), } static void cpy1(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, len) } static void cpy2(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, 2 *len) } static void cpy4(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, 4 *len) } static void cpy8(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, 8 *len) } AudioConvert *swri_audio_convert_alloc(enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, const int *ch_map, int flags) { AudioConvert *ctx conv_func_type *f=fmt_pair_to_conv_functions[av_get_packed_sample_fmt(out_fmt)+AV_SAMPLE_FMT_NB *av_get_packed_sample_fmt(in_fmt)] if(!f) return NULL ctx=av_mallocz(sizeof(*ctx)) if(!ctx) return NULL if(channels==1){ in_fmt=av_get_planar_sample_fmt(in_fmt) out_fmt=av_get_planar_sample_fmt(out_fmt) } ctx->channels=channels ctx-> conv_f f ctx ch_map ch_map if ( )
Examples:
muxing.c.

Definition at line 279 of file vf_mcdeint.c.

Referenced by aac_encode_init(), acolor16(), add_audio_device(), add_video_device(), adpcm_encode_init(), adx_encode_frame(), amf_init_context(), amr_decode_fix_avctx(), amr_wb_encode_frame(), ape_decode_value_3860(), ape_decode_value_3900(), ape_read_header(), apply_filter(), apply_lpc(), asf_read_pts(), asf_read_subpayload(), atrac3p_decode_frame(), av_hwdevice_ctx_create(), av_hwdevice_ctx_create_derived(), av_hwdevice_ctx_init(), av_hwdevice_get_hwframe_constraints(), av_hwdevice_hwconfig_alloc(), av_hwframe_ctx_create_derived(), av_hwframe_ctx_init(), av_hwframe_get_buffer(), av_hwframe_map(), av_hwframe_transfer_get_formats(), av_opt_query_ranges(), av_reduce(), av_timecode_init_from_string(), avcodec_get_hw_frames_parameters(), avcodec_open2(), avcodec_string(), average_quantized_coeffs(), avformat_find_stream_info(), avformat_open_input(), avgblur_opencl_filter_frame(), avi_write_header(), best_codebook_path_cost(), bilateral_obmc(), binkb_read_bundle(), buffer_needs_copy(), buffer_offset(), build_frame_code(), calculate_bitrate(), check_header_mismatch(), check_idct(), check_idct_dc4(), check_loopfilter_simple(), check_luma_dc_wht(), chroma16(), cinaudio_decode_frame(), cmv_decode_inter(), cng_encode_frame(), color16(), commit_bitstream_and_slice_buffer(), compressor(), config_output(), config_props(), config_video_output(), construct_perm_table(), control_port_cb(), convert_coeffs(), dash_read_header(), deblocking_filter_CTB(), decklink_autodetect(), decklink_write_video_packet(), decode_5(), decode_block(), decode_buffering_period(), decode_cabac_mb_skip(), decode_channel(), decode_exp_vlc(), decode_frame(), decode_init(), decode_mb_mode(), decode_mode(), decode_nal_sei_pic_timing(), decode_picture(), decode_picture_timing(), decode_ppc(), decode_receive_frame_internal(), decode_rgbx(), decode_slice_header(), decode_subframe(), decode_tilehdr(), decode_vop_header(), decode_ybr10(), decode_yry10(), decompress_texture_thread(), determine_signal_peak(), dnxhd_decode_frame(), dpcm_decode_frame(), dshow_cycle_pins(), dshow_set_audio_buffer_size(), dump_audioservicetype(), dump_cpb(), dump_fir(), dump_spherical(), dv_extract_audio(), dv_inject_audio(), dvdsub_parse_extradata(), dvvideo_decode_init(), ebml_parse_elem(), ebml_parse_nest(), encode_frame(), encode_init(), encode_mb_internal(), encode_mode(), encode_residual_ch(), envelope_instant16(), envelope_peak16(), event_loop(), evrc_decode_frame(), expand_timestamps(), extract_extradata_mpeg12(), failing_write_packet(), fbdev_write_packet(), ff_ac3_compute_coupling_strategy(), ff_alloc_picture(), ff_bwdif_init_x86(), ff_cavs_mv(), ff_cavs_next_mb(), ff_celt_bitalloc(), ff_combine_frame(), ff_dca_lbr_parse(), ff_decode_get_hw_frames_ctx(), ff_dxva2_common_frame_params(), ff_dxva2_decode_init(), ff_er_frame_end(), ff_estimate_p_frame_motion(), ff_filter_init_hw_frames(), ff_framesync_configure(), ff_get_format(), ff_h264_build_ref_list(), ff_h264_decode_picture_parameter_set(), ff_h264_decode_seq_parameter_set(), ff_h264_init_poc(), ff_h264_queue_decode_slice(), ff_hevc_split_coding_unit_flag_decode(), ff_id3v2_write_apic(), ff_img_read_packet(), ff_init_vscale_pfn(), ff_interleave_add_packet(), ff_intrax8_decode_picture(), ff_jpeg2000_set_significance(), ff_jpegls_decode_lse(), ff_mjpeg_decode_frame(), ff_mpeg4_encode_mb(), ff_nvdec_start_frame(), ff_nvenc_encode_init(), ff_opencl_filter_config_input(), ff_opencl_filter_work_size_from_image(), ff_qsv_enc_init(), ff_qsvvpp_create(), ff_rate_control_init(), ff_rate_estimate_qscale(), ff_read_frame_flush(), ff_slice_thread_init(), ff_sws_init_swscale_x86(), ff_thread_await_progress(), ff_thread_release_buffer(), ff_thread_report_progress(), ff_vaapi_common_frame_params(), ff_vdpau_common_frame_params(), ff_vdpau_common_init(), ff_videotoolbox_uninit(), ff_vmafmotion_init(), ff_voc_get_packet(), ff_vp9_decode_block(), ff_xvmc_decode_mb(), ff_xvmc_field_start(), ff_yadif_init_x86(), fill_picture_parameters(), filter(), filter_frame(), find_ref_mvs(), fir_channel(), fits_encode_frame(), flashsv_encode_frame(), flat(), flat16(), flic_decode_init(), flush(), flush_packet(), force_one_stream(), free_section(), g723_1_decode_frame(), gate(), generate_intervals(), generate_joint_tables(), get_audio_frame(), get_block_sizes(), get_delayed_pic(), get_surface(), gif_encode_frame(), gif_image_write_image(), h261_decode_mb_skipped(), h263_probe(), h264_init_ps(), h264_parse(), h264_probe(), h264_slice_header_parse(), handle_packet(), hds_write_packet(), hevc_parse_slice_header(), hevc_probe(), hl_decode_mb_444(), hls_coding_unit(), hls_read_header(), hls_slice_header(), hq_decode_frame(), hqx_decode_422a(), hqx_decode_444a(), hwmap_config_output(), iff_read_header(), imc_refine_bit_allocation(), init(), init_dequant_tables(), init_out_session(), init_video_param(), init_vpp_session(), input_callback(), inter_pred(), ipmovie_read_header(), ipvideo_decode_block_opcode_0x8(), ipvideo_decode_block_opcode_0xA(), ivi_dc_transform(), ivi_decode_coded_blocks(), j2kenc_init(), kempf_decode_tile(), libgsm_encode_frame(), librsvg_decode_frame(), libspeex_decode_frame(), load_palette(), loop_filter(), magy_decode_frame(), magy_decode_slice10(), matroska_probe(), mc_part_std(), mc_part_weighted(), mc_subpel(), mcompand_channel(), mlp_encode_frame(), mlp_parse(), mm_decode_inter(), mmsh_close(), motion_search(), mov_parse_mpeg2_frame(), mov_parse_vc1_frame(), mov_read_seek(), mov_realloc_extradata(), mov_write_trailer(), mp_decode_frame(), mpeg1_encode_sequence_header(), mpeg4_decode_mb(), mpeg4_decode_partitioned_mb(), mpeg4video_probe(), mpeg_decode_mb(), mpeg_decode_slice(), mpeg_mux_init(), mpegps_probe(), mtv_read_header(), multiple_resample(), mxf_interleave_get_packet(), mxf_parse_mpeg2_frame(), mxf_parse_structural_metadata(), mxf_write_mpegvideo_desc(), ndi_read_close(), ndi_write_video_packet(), normalize(), nppscale_filter_frame(), nvdec_hevc_start_frame(), nvenc_setup_device(), ogg_read_page(), open_input_file(), opencl_mem_flags_for_mapping(), optimum_use15_7(), output_segment_list(), pack_yuv(), parse_high_res_grid(), parse_mb_skip(), parse_nal_units(), parse_packet(), parse_strk(), pcm_dvd_decode_frame(), pcm_encode_frame(), piz_uncompress(), plot_cqt(), png_handle_row(), pnm_decode_frame(), postfilter(), pred_spatial_direct_motion(), pred_temp_direct_motion(), predictor_calc_error(), print_pkt_side_data(), process_float(), program_opencl_run(), put_dc(), qcelp_decode_frame(), qdm2_decode(), qdm2_fft_tone_synthesizer(), qsv_decode_init(), qsv_frame_alloc(), qsv_frame_lock(), qsv_init_child_ctx(), qsv_map_from(), qsv_transfer_data_from(), qsv_transfer_data_to(), ra144_encode_frame(), read_header(), read_major_sync(), read_old_huffman_tables(), read_var_block_data(), remove_wasted_bits(), rfc4175_handle_packet(), rkmpp_send_packet(), rpza_decode_stream(), rtmp_calc_swf_verification(), rtsp_read_packet(), s302m_decode_frame(), s337m_probe(), sbr_hf_calc_npatches(), sbr_make_f_master(), seg_write_packet(), select_input_picture(), send_next_delayed_frame(), seqvideo_decode(), set_channel_info(), set_control(), set_frame_data(), set_palette(), shorten_decode_frame(), show_frame(), smc_decode_stream(), store_packet(), submit_frame(), svq3_decode_frame(), svq3_decode_init(), svq3_decode_mb(), swr_init(), synth_block_fcb_acb(), synth_superframe(), tcp_open(), teletext_decode_frame(), tm2_decode_blocks(), uninit_options(), unpack_superblocks(), unpack_vlcs(), unpack_yuv(), update_initial_timestamps(), vaapi_encode_h264_init(), vaapi_encode_h265_init(), vaapi_encode_vp9_init_picture_params(), vaapi_frames_init(), vaapi_map_to_memory(), vaapi_vp9_start_frame(), vc1_apply_p_h_loop_filter(), vc1_apply_p_v_loop_filter(), vc1_decode_b_mb(), vc1_decode_b_mb_intfi(), vc1_decode_b_mb_intfr(), vc1_decode_i_block(), vc1_decode_p_mb_intfi(), vc1_decode_p_mb_intfr(), vc1_put_signed_blocks_clamped(), decklink_input_callback::VideoInputFrameArrived(), videotoolbox_postproc_frame(), videotoolbox_set_frame(), vmd_decode(), vmdaudio_decode_frame(), vorbis_parse_setup_hdr_codebooks(), wiener_denoise(), wma_decode_init(), wma_decode_superframe(), wsd_read_header(), XAVS_init(), xvid_ff_2pass_create(), yuv2rgb_1_c_template(), yuv2rgb_2_c_template(), and yuv4_write_packet().

◆ ff_filter_frame()

return ff_filter_frame ( outlink  ,
outpic   
)

Referenced by if().

Variable Documentation

◆ mcdeint_options

const AVOption mcdeint_options[]
static
Initial value:
= {
{ "mode", "set mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_FAST}, 0, MODE_NB-1, FLAGS, .unit="mode" },
CONST("fast", NULL, MODE_FAST, "mode"),
CONST("medium", NULL, MODE_MEDIUM, "mode"),
CONST("slow", NULL, MODE_SLOW, "mode"),
CONST("extra_slow", NULL, MODE_EXTRA_SLOW, "mode"),
{ "parity", "set the assumed picture field parity", OFFSET(parity), AV_OPT_TYPE_INT, {.i64=PARITY_BFF}, -1, 1, FLAGS, "parity" },
CONST("tff", "assume top field first", PARITY_TFF, "parity"),
CONST("bff", "assume bottom field first", PARITY_BFF, "parity"),
{ "qp", "set qp", OFFSET(qp), AV_OPT_TYPE_INT, {.i64=1}, INT_MIN, INT_MAX, FLAGS },
{ NULL }
}
#define NULL
Definition: coverity.c:32
#define OFFSET(x)
Definition: vf_mcdeint.c:80
bottom field first
Definition: vf_mcdeint.c:69
#define CONST(name, help, val, unit)
Definition: vf_mcdeint.c:82
#define FLAGS
Definition: vf_mcdeint.c:81
mcdeint parity
Definition: vf_mcdeint.c:274
top field first
Definition: vf_mcdeint.c:68
mode
Use these values in ebur128_init (or&#39;ed).
Definition: ebur128.h:83

Definition at line 84 of file vf_mcdeint.c.

◆ else

else
Initial value:
{
int spatial_score = GET_SCORE(0) - 1
#define GET_SCORE(j)

Definition at line 246 of file vf_mcdeint.c.

◆ temp

else temp = (diff0 + diff1 + FFABS(FFABS(diff0) - FFABS(diff1)) / 2) / 2

Definition at line 256 of file vf_mcdeint.c.

Referenced by a64_compress_colram(), acb_search(), adpcm_decode_frame(), at1_subband_synthesis(), av_div_sf(), backward_filter(), bink_idct_c(), bink_idct_put_c(), bit8x8_c(), celt_frame_mdct(), comp_autocorr(), comp_interp_index(), config_input(), dct_max8x8_c(), dct_sad8x8_c(), decode_8_pulses_31bits(), decode_plane(), decode_rgb_frame(), decompress_p(), encode_mode(), estimate_pitch(), ff_atrac_iqmf(), ff_avg_h264_qpel16_mc12_mmi(), ff_avg_h264_qpel16_mc21_mmi(), ff_avg_h264_qpel16_mc22_mmi(), ff_avg_h264_qpel16_mc23_mmi(), ff_avg_h264_qpel16_mc32_mmi(), ff_avg_h264_qpel8_mc12_mmi(), ff_avg_h264_qpel8_mc21_mmi(), ff_avg_h264_qpel8_mc22_mmi(), ff_avg_h264_qpel8_mc23_mmi(), ff_avg_h264_qpel8_mc32_mmi(), ff_block_permute(), ff_celt_bitalloc(), ff_ea_idct_put_c(), ff_faandct(), ff_faandct248(), ff_faanidct(), ff_faanidct_add(), ff_faanidct_put(), ff_g723_1_inverse_quant(), ff_h264_chroma422_dc_dequant_idct(), ff_h264_chroma422_dc_dequant_idct_8_mmi(), ff_h264_luma_dc_dequant_idct(), ff_mjpegenc_huffman_compute_bits(), ff_put_h264_qpel16_mc12_mmi(), ff_put_h264_qpel16_mc21_mmi(), ff_put_h264_qpel16_mc22_mmi(), ff_put_h264_qpel16_mc23_mmi(), ff_put_h264_qpel16_mc32_mmi(), ff_put_h264_qpel8_mc12_mmi(), ff_put_h264_qpel8_mc21_mmi(), ff_put_h264_qpel8_mc22_mmi(), ff_put_h264_qpel8_mc23_mmi(), ff_put_h264_qpel8_mc32_mmi(), ff_put_wav_header(), ff_simple_idct_mmi(), ff_vc1_inv_trans_8x8_dc_mmi(), ff_vorbis_inverse_coupling(), filter(), filter_frame(), find_new_headers(), flac_parse(), flac_parse_close(), formant_postfilter(), ftx_2d(), gain_scale(), gen_fcb_excitation(), get_fcb_param(), get_tilt_comp(), h261_loop_filter(), hadamard8_diff8x8_c(), hadamard8_intra8x8_c(), handle_file(), harmonic_filter(), harmonic_noise_sub(), hnm_flip_buffers(), horizontal_compose_daub97i(), horizontal_compose_dirac53i(), horizontal_compose_haar0i(), horizontal_compose_haar1i(), horizontal_compose_haari(), http_write(), hybrid6_cx(), hypot(), idct(), idct_put(), idctRowCondDC(), imdct_and_windowing(), imdct_and_windowing_960(), imdct_and_windowing_eld(), ivr_read_header(), levinson_durbin(), lpc2lsp(), ls_encode_runterm(), ls_get_code_runterm(), magy_huffman_compute_bits(), main(), matroska_parse_laces(), mkdir_p(), pack_bitstream(), postfilter(), pp_get_mode_by_name_and_quality(), qian_thresholding(), quant_psnr8x8_c(), rd8x8_c(), read16(), read32(), read_time(), render_slice(), rtmp_server_handshake(), rv34_idct_add_c(), rv34_inv_transform_noround_c(), sbc_unpack_frame(), sbr_gain_calc(), sbr_make_f_derived(), sbr_make_f_master(), scale_coefs(), set_spdif(), setup_classifs(), simple_idct_add_msa(), simple_idct_msa(), simple_idct_put_msa(), soft_thresholding(), store_slice16_c(), store_slice2_c(), store_slice_c(), sub_acb_contrib(), sub_left_prediction(), svq1_encode_plane(), svq3_luma_dc_dequant_idct_c(), synth_percept_filter(), tta_encode_frame(), unpack_bitstream(), vc1_inv_trans_8x8_c(), and wavpack_encode_block().

◆ filp

* filp = *dstp = temp > 255U ? ~(temp>>31) : temp

Definition at line 257 of file vf_mcdeint.c.

Referenced by filter_frame().

◆ parity

mcdeint parity = 1

◆ __pad0__

end __pad0__

Definition at line 277 of file vf_mcdeint.c.

◆ inpic

av_frame_free& inpic

Definition at line 278 of file vf_mcdeint.c.

Referenced by filter_frame(), and for().

◆ mcdeint_inputs

const AVFilterPad mcdeint_inputs[]
static
Initial value:
= {
{
.name = "default",
.filter_frame = filter_frame,
.config_props = config_props,
},
{ NULL }
}
#define NULL
Definition: coverity.c:32
static int config_props(AVFilterLink *inlink)
Definition: vf_mcdeint.c:101
static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
Definition: vf_mcdeint.c:171

Definition at line 286 of file vf_mcdeint.c.

◆ mcdeint_outputs

const AVFilterPad mcdeint_outputs[]
static
Initial value:
= {
{
.name = "default",
},
{ NULL }
}
#define NULL
Definition: coverity.c:32

Definition at line 296 of file vf_mcdeint.c.

◆ ff_vf_mcdeint

AVFilter ff_vf_mcdeint
Initial value:
= {
.name = "mcdeint",
.description = NULL_IF_CONFIG_SMALL("Apply motion compensating deinterlacing."),
.priv_size = sizeof(MCDeintContext),
.priv_class = &mcdeint_class,
}
static const AVFilterPad mcdeint_inputs[]
Definition: vf_mcdeint.c:286
static const AVFilterPad mcdeint_outputs[]
Definition: vf_mcdeint.c:296
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static av_cold void uninit(AVFilterContext *ctx)
Definition: vf_mcdeint.c:153
static const AVFilterPad inputs[]
Definition: af_acontrast.c:193
static const AVFilterPad outputs[]
Definition: af_acontrast.c:203
static int query_formats(AVFilterContext *ctx)
Definition: vf_mcdeint.c:160

Definition at line 304 of file vf_mcdeint.c.