49 yadif->
filter(ctx, yadif->
out, tff ^ !is_second, tff);
52 int64_t cur_pts = yadif->
cur->
pts;
53 int64_t next_pts = yadif->
next->
pts;
56 yadif->
out->
pts = cur_pts + next_pts;
180 }
else if (ret < 0) {
187 #define OFFSET(x) offsetof(YADIFContext, x)
188 #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
190 #define CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, INT_MIN, INT_MAX, FLAGS, unit }
This structure describes decoded (raw) audio or video data.
int h
agreed upon image height
int repeat_pict
When decoding, this signals how much the picture must be delayed.
send 1 frame for each frame but skips spatial interlacing check
void av_frame_move_ref(AVFrame *dst, AVFrame *src)
Move everything contained in src to dst and reset src.
AVFrame * ff_get_video_buffer(AVFilterLink *link, int w, int h)
Request a picture buffer with a specific set of permissions.
int is_disabled
the enabled state from the last expression evaluation
AVFilterLink ** inputs
array of pointers to input links
#define av_assert0(cond)
assert() equivalent, that is always enabled.
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
#define AVERROR_EOF
End of file.
#define AV_LOG_VERBOSE
Detailed information.
int interlaced_frame
The content of the picture is interlaced.
send 1 frame for each field
int ff_yadif_filter_frame(AVFilterLink *link, AVFrame *frame)
A link between two filters.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
void * priv
private data for use by the filter
simple assert() macros that are a bit more flexible than ISO C assert().
static int return_frame(AVFilterContext *ctx, int is_second)
void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4], const uint8_t *src_data[4], const int src_linesizes[4], enum AVPixelFormat pix_fmt, int width, int height)
Copy image in src_data to dst_data.
int w
agreed upon image width
uint8_t nb_components
The number of components each pixel has, (1-4)
static void fixstride(AVFilterLink *link, AVFrame *f)
AVFilterContext * src
source filter
void(* filter)(AVFilterContext *ctx, AVFrame *dstpic, int parity, int tff)
AVFrame * av_frame_clone(const AVFrame *src)
Create a new frame that references the same data as src.
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
#define CONST(name, help, val, unit)
static int checkstride(YADIFContext *yadif, const AVFrame *a, const AVFrame *b)
send 1 frame for each field but skips spatial interlacing check
AVFilterLink ** outputs
array of pointers to output links
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields.
int ff_yadif_request_frame(AVFilterLink *link)
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
AVFrame * ff_default_get_video_buffer(AVFilterLink *link, int w, int h)
const AVPixFmtDescriptor * csp
int top_field_first
If the content is interlaced, is top field displayed first.
AVFilterContext * dst
dest filter
send 1 frame for each frame
int ff_request_frame(AVFilterLink *link)
Request an input frame from the filter at the other end of the link.
only deinterlace frames marked as interlaced
mode
Use these values in ebur128_init (or'ed).
int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
Copy only "metadata" fields from src to dst.
#define AV_NOPTS_VALUE
Undefined timestamp value.
const AVOption ff_yadif_options[]