54#define MOD_NAME "[deinterlace_blend] "
61static void usage(_Bool for_postprocessor)
64 " by applying linear blend on interleaved odd and even "
65 " fileds.\n\nUsage:\n");
66 if (for_postprocessor) {
72 "\t" TBOLD(
"force")
" - apply deinterlacing even if input is progressive\n");
76 if (strcmp(config,
"help") == 0) {
84 if (strcmp(config,
"force") == 0) {
86 }
else if (strlen(config) > 0) {
96 if (strcmp(config,
"help") == 0) {
101 log_msg(
LOG_LEVEL_INFO,
MOD_NAME "\"-p deinterlace\" is equivalent to \"-p deinterlace_blend\", you can choose different implementations as well.\n");
109 if (strcmp(cfg,
"help") == 0) {
void vf_free(struct video_frame *buf)
Frees video_frame structure.
struct video_desc video_desc_from_frame(const struct video_frame *frame)
Returns struct video_desc from video frame.
int vc_get_linesize(unsigned int width, codec_t codec)
struct video_frame * vf_alloc_desc_data(struct video_desc desc)
const char * get_codec_name(codec_t codec)
#define CAPTURE_FILTER_ABI_VERSION
int color_printf(const char *format,...)
void log_msg(int level, const char *format,...)
#define LOG_LEVEL_INFO
normal reporting
#define LOG_LEVEL_ERROR
general errors
static void deinterlace_done(void *state)
static void * deinterlace_blend_init(const char *config)
static void deinterlace_get_out_desc(void *state, struct video_desc *out, int *in_display_mode, int *out_frames)
static const struct capture_filter_info capture_filter_deinterlace_info
static struct video_frame * cf_deinterlace_filter(void *state, struct video_frame *f)
static bool deinterlace_get_property(void *state, int property, void *val, size_t *len)
static const struct vo_postprocess_info vo_pp_deinterlace_blend_info
static struct video_frame * deinterlace_getf(void *state)
static const struct vo_postprocess_info vo_pp_deinterlace_info
static int cf_deinterlace_init(struct module *parent, const char *cfg, void **state)
static bool deinterlace_reconfigure(void *state, struct video_desc desc)
static bool deinterlace_postprocess(void *state, struct video_frame *in, struct video_frame *out, int req_pitch)
static void * deinterlace_init(const char *config)
@ LIBRARY_CLASS_VIDEO_POSTPROCESS
@ LIBRARY_CLASS_CAPTURE_FILTER
#define REGISTER_MODULE(name, info, lclass, abi)
Registers module to global modules' registry.
struct video_frame * out
for postprocess only
char * data
Raw tile data. Pointer must be at least 4B aligned.
unsigned int data_len
length of the data
void(* dispose)(struct video_frame *)
Struct video_frame represents a video frame and contains video description.
enum interlacing_t interlacing
struct tile tiles[FLEXIBLE_ARRAY_MEMBER]
struct video_frame_callbacks callbacks
@ PROGRESSIVE
progressive frame
@ INTERLACED_MERGED
Columngs of both fields are interlaced together.
This is an umbrella header for video functions.
bool vc_deinterlace_ex(codec_t codec, unsigned char *src, size_t src_linesize, unsigned char *dst, size_t dst_pitch, size_t lines)
bool video_desc_eq_excl_param(struct video_desc a, struct video_desc b, unsigned int excluded_params)
Compares two video descriptions.
#define VIDEO_FRAME_DISPOSE(frame)
#define PARAM_INTERLACING
#define VO_PP_ABI_VERSION