diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-05-30 11:20:32 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-06-05 09:38:16 +0200 |
commit | 803391f7195ba37a553026009ff989d6e2625d8f (patch) | |
tree | 4516f7e9e0ca7a4a15b7e610efecc4381de7814e | |
parent | fa417fcd278a003530fe6bf851f8194177a5e71f (diff) | |
download | ffmpeg-803391f7195ba37a553026009ff989d6e2625d8f.tar.gz |
lavfi: remove request/poll and drawing functions from public API on next bump
They are only useful inside filters and we don't allow user filters for
now.
45 files changed, 235 insertions, 176 deletions
diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c index 8f8ae3e340..3fc2e8499a 100644 --- a/libavfilter/af_amix.c +++ b/libavfilter/af_amix.c @@ -349,7 +349,7 @@ static int request_samples(AVFilterContext *ctx, int min_samples) if (s->input_state[i] == INPUT_OFF) continue; while (!ret && av_audio_fifo_size(s->fifos[i]) < min_samples) - ret = avfilter_request_frame(ctx->inputs[i]); + ret = ff_request_frame(ctx->inputs[i]); if (ret == AVERROR_EOF) { if (av_audio_fifo_size(s->fifos[i]) == 0) { s->input_state[i] = INPUT_OFF; @@ -410,7 +410,7 @@ static int request_frame(AVFilterLink *outlink) } if (s->frame_list->nb_frames == 0) { - ret = avfilter_request_frame(ctx->inputs[0]); + ret = ff_request_frame(ctx->inputs[0]); if (ret == AVERROR_EOF) { s->input_state[0] = INPUT_OFF; if (s->nb_inputs == 1) diff --git a/libavfilter/af_asyncts.c b/libavfilter/af_asyncts.c index adb5347a80..252b32278d 100644 --- a/libavfilter/af_asyncts.c +++ b/libavfilter/af_asyncts.c @@ -24,6 +24,7 @@ #include "audio.h" #include "avfilter.h" +#include "internal.h" typedef struct ASyncContext { const AVClass *class; @@ -116,7 +117,7 @@ static int request_frame(AVFilterLink *link) { AVFilterContext *ctx = link->src; ASyncContext *s = ctx->priv; - int ret = avfilter_request_frame(ctx->inputs[0]); + int ret = ff_request_frame(ctx->inputs[0]); int nb_samples; /* flush the fifo */ diff --git a/libavfilter/af_resample.c b/libavfilter/af_resample.c index 6b1dfbc085..8a02cfe976 100644 --- a/libavfilter/af_resample.c +++ b/libavfilter/af_resample.c @@ -130,7 +130,7 @@ static int request_frame(AVFilterLink *outlink) { AVFilterContext *ctx = outlink->src; ResampleContext *s = ctx->priv; - int ret = avfilter_request_frame(ctx->inputs[0]); + int ret = ff_request_frame(ctx->inputs[0]); /* flush the lavr delay buffer */ if (ret == AVERROR_EOF && s->avr) { diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 6b73e48d81..3dbb6920ee 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -223,18 +223,18 @@ void ff_dlog_link(void *ctx, AVFilterLink *link, int end) } } -int avfilter_request_frame(AVFilterLink *link) +int ff_request_frame(AVFilterLink *link) { FF_DPRINTF_START(NULL, request_frame); ff_dlog_link(NULL, link, 1); if (link->srcpad->request_frame) return link->srcpad->request_frame(link); else if (link->src->inputs[0]) - return avfilter_request_frame(link->src->inputs[0]); + return ff_request_frame(link->src->inputs[0]); else return -1; } -int avfilter_poll_frame(AVFilterLink *link) +int ff_poll_frame(AVFilterLink *link) { int i, min = INT_MAX; @@ -245,7 +245,7 @@ int avfilter_poll_frame(AVFilterLink *link) int val; if (!link->src->inputs[i]) return -1; - val = avfilter_poll_frame(link->src->inputs[i]); + val = ff_poll_frame(link->src->inputs[i]); min = FFMIN(min, val); } @@ -444,4 +444,12 @@ void avfilter_insert_outpad(AVFilterContext *f, unsigned index, ff_insert_pad(index, &f->output_count, offsetof(AVFilterLink, srcpad), &f->output_pads, &f->outputs, p); } +int avfilter_poll_frame(AVFilterLink *link) +{ + return ff_poll_frame(link); +} +int avfilter_request_frame(AVFilterLink *link) +{ + return ff_request_frame(link); +} #endif diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 0f5a35fc73..c592372ced 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -620,57 +620,20 @@ AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays(uint8_t **data, enum AVSampleFormat sample_fmt, uint64_t channel_layout); -/** - * Request an input frame from the filter at the other end of the link. - * - * @param link the input link - * @return zero on success - */ +#if FF_API_FILTERS_PUBLIC +attribute_deprecated int avfilter_request_frame(AVFilterLink *link); -/** - * Poll a frame from the filter chain. - * - * @param link the input link - * @return the number of immediately available frames, a negative - * number in case of error - */ +attribute_deprecated int avfilter_poll_frame(AVFilterLink *link); -/** - * Notify the next filter of the start of a frame. - * - * @param link the output link the frame will be sent over - * @param picref A reference to the frame about to be sent. The data for this - * frame need only be valid once draw_slice() is called for that - * portion. The receiving filter will free this reference when - * it no longer needs it. - */ +attribute_deprecated void avfilter_start_frame(AVFilterLink *link, AVFilterBufferRef *picref); - -/** - * Notifie the next filter that the current frame has finished. - * - * @param link the output link the frame was sent over - */ +attribute_deprecated void avfilter_end_frame(AVFilterLink *link); - -/** - * Send a slice to the next filter. - * - * Slices have to be provided in sequential order, either in - * top-bottom or bottom-top order. If slices are provided in - * non-sequential order the behavior of the function is undefined. - * - * @param link the output link over which the frame is being sent - * @param y offset in pixels from the top of the image for this slice - * @param h height of this slice in pixels - * @param slice_dir the assumed direction for sending slices, - * from the top slice to the bottom slice if the value is 1, - * from the bottom slice to the top slice if the value is -1, - * for other values the behavior of the function is undefined. - */ +attribute_deprecated void avfilter_draw_slice(AVFilterLink *link, int y, int h, int slice_dir); +#endif /** Initialize the filter system. Register all builtin filters. */ void avfilter_register_all(void); diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c index 8787268f4c..13fb2558c1 100644 --- a/libavfilter/buffersink.c +++ b/libavfilter/buffersink.c @@ -31,6 +31,7 @@ #include "audio.h" #include "avfilter.h" #include "buffersink.h" +#include "internal.h" typedef struct { AVFifoBuffer *fifo; ///< FIFO buffer of frame references @@ -102,11 +103,11 @@ int av_buffersink_read(AVFilterContext *ctx, AVFilterBufferRef **buf) if (av_fifo_size(sink->fifo)) return av_fifo_size(sink->fifo)/sizeof(*buf); else - return avfilter_poll_frame(ctx->inputs[0]); + return ff_poll_frame(ctx->inputs[0]); } if (!av_fifo_size(sink->fifo) && - (ret = avfilter_request_frame(link)) < 0) + (ret = ff_request_frame(link)) < 0) return ret; if (!av_fifo_size(sink->fifo)) diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index f78b8f6eff..7af9f6c571 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -27,6 +27,7 @@ #include "avfilter.h" #include "buffersrc.h" #include "formats.h" +#include "video.h" #include "vsrc_buffer.h" #include "libavutil/audioconvert.h" @@ -340,9 +341,9 @@ static int request_frame(AVFilterLink *link) switch (link->type) { case AVMEDIA_TYPE_VIDEO: - avfilter_start_frame(link, avfilter_ref_buffer(buf, ~0)); - avfilter_draw_slice(link, 0, link->h, 1); - avfilter_end_frame(link); + ff_start_frame(link, avfilter_ref_buffer(buf, ~0)); + ff_draw_slice(link, 0, link->h, 1); + ff_end_frame(link); break; case AVMEDIA_TYPE_AUDIO: ff_filter_samples(link, avfilter_ref_buffer(buf, ~0)); diff --git a/libavfilter/internal.h b/libavfilter/internal.h index 7f7cf45771..4b53831063 100644 --- a/libavfilter/internal.h +++ b/libavfilter/internal.h @@ -69,4 +69,21 @@ static inline void ff_insert_outpad(AVFilterContext *f, unsigned index, &f->output_pads, &f->outputs, p); } +/** + * Poll a frame from the filter chain. + * + * @param link the input link + * @return the number of immediately available frames, a negative + * number in case of error + */ +int ff_poll_frame(AVFilterLink *link); + +/** + * Request an input frame from the filter at the other end of the link. + * + * @param link the input link + * @return zero on success + */ +int ff_request_frame(AVFilterLink *link); + #endif /* AVFILTER_INTERNAL_H */ diff --git a/libavfilter/split.c b/libavfilter/split.c index 9f7890cde6..95c1b9aa1f 100644 --- a/libavfilter/split.c +++ b/libavfilter/split.c @@ -69,8 +69,8 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) int i; for (i = 0; i < ctx->output_count; i++) - avfilter_start_frame(ctx->outputs[i], - avfilter_ref_buffer(picref, ~AV_PERM_WRITE)); + ff_start_frame(ctx->outputs[i], + avfilter_ref_buffer(picref, ~AV_PERM_WRITE)); } static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) @@ -79,7 +79,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) int i; for (i = 0; i < ctx->output_count; i++) - avfilter_draw_slice(ctx->outputs[i], y, h, slice_dir); + ff_draw_slice(ctx->outputs[i], y, h, slice_dir); } static void end_frame(AVFilterLink *inlink) @@ -88,7 +88,7 @@ static void end_frame(AVFilterLink *inlink) int i; for (i = 0; i < ctx->output_count; i++) - avfilter_end_frame(ctx->outputs[i]); + ff_end_frame(ctx->outputs[i]); avfilter_unref_buffer(inlink->cur_buf); } diff --git a/libavfilter/vf_aspect.c b/libavfilter/vf_aspect.c index 4e1fdac90e..0555afe4c0 100644 --- a/libavfilter/vf_aspect.c +++ b/libavfilter/vf_aspect.c @@ -68,7 +68,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) AspectContext *aspect = link->dst->priv; picref->video->pixel_aspect = aspect->aspect; - avfilter_start_frame(link->dst->outputs[0], picref); + ff_start_frame(link->dst->outputs[0], picref); } #if CONFIG_SETDAR_FILTER diff --git a/libavfilter/vf_blackframe.c b/libavfilter/vf_blackframe.c index bdc132285e..1d9a75d502 100644 --- a/libavfilter/vf_blackframe.c +++ b/libavfilter/vf_blackframe.c @@ -87,7 +87,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) p += picref->linesize[0]; } - avfilter_draw_slice(ctx->outputs[0], y, h, slice_dir); + ff_draw_slice(ctx->outputs[0], y, h, slice_dir); } static void end_frame(AVFilterLink *inlink) @@ -105,7 +105,7 @@ static void end_frame(AVFilterLink *inlink) blackframe->frame++; blackframe->nblack = 0; - avfilter_end_frame(inlink->dst->outputs[0]); + ff_end_frame(inlink->dst->outputs[0]); } AVFilter avfilter_vf_blackframe = { diff --git a/libavfilter/vf_boxblur.c b/libavfilter/vf_boxblur.c index 04486ce1a8..21a0173ccb 100644 --- a/libavfilter/vf_boxblur.c +++ b/libavfilter/vf_boxblur.c @@ -30,6 +30,7 @@ #include "libavutil/pixdesc.h" #include "avfilter.h" #include "formats.h" +#include "video.h" static const char *const var_names[] = { "w", @@ -328,7 +329,7 @@ static void draw_slice(AVFilterLink *inlink, int y0, int h0, int slice_dir) w[plane], h[plane], boxblur->radius[plane], boxblur->power[plane], boxblur->temp); - avfilter_draw_slice(outlink, y0, h0, slice_dir); + ff_draw_slice(outlink, y0, h0, slice_dir); } AVFilter avfilter_vf_boxblur = { diff --git a/libavfilter/vf_crop.c b/libavfilter/vf_crop.c index cb8b94ef7e..f25278e79e 100644 --- a/libavfilter/vf_crop.c +++ b/libavfilter/vf_crop.c @@ -290,7 +290,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) ref2->data[3] += crop->x * crop->max_step[3]; } - avfilter_start_frame(link->dst->outputs[0], ref2); + ff_start_frame(link->dst->outputs[0], ref2); } static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) @@ -308,7 +308,7 @@ static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) if (y + h > crop->y + crop->h) h = crop->y + crop->h - y; - avfilter_draw_slice(ctx->outputs[0], y - crop->y, h, slice_dir); + ff_draw_slice(ctx->outputs[0], y - crop->y, h, slice_dir); } static void end_frame(AVFilterLink *link) @@ -317,7 +317,7 @@ static void end_frame(AVFilterLink *link) crop->var_values[VAR_N] += 1.0; avfilter_unref_buffer(link->cur_buf); - avfilter_end_frame(link->dst->outputs[0]); + ff_end_frame(link->dst->outputs[0]); } AVFilter avfilter_vf_crop = { diff --git a/libavfilter/vf_cropdetect.c b/libavfilter/vf_cropdetect.c index 20bc219d81..38fd5c1355 100644 --- a/libavfilter/vf_cropdetect.c +++ b/libavfilter/vf_cropdetect.c @@ -190,7 +190,7 @@ static void end_frame(AVFilterLink *inlink) w, h, x, y); } - avfilter_end_frame(inlink->dst->outputs[0]); + ff_end_frame(inlink->dst->outputs[0]); } AVFilter avfilter_vf_cropdetect = { diff --git a/libavfilter/vf_delogo.c b/libavfilter/vf_delogo.c index 3410982b63..6fe47306ea 100644 --- a/libavfilter/vf_delogo.c +++ b/libavfilter/vf_delogo.c @@ -228,7 +228,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) outpicref = inpicref; outlink->out_buf = outpicref; - avfilter_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); } static void null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { } @@ -257,8 +257,8 @@ static void end_frame(AVFilterLink *inlink) delogo->show, direct); } - avfilter_draw_slice(outlink, 0, inlink->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, inlink->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(inpicref); if (!direct) avfilter_unref_buffer(outpicref); diff --git a/libavfilter/vf_drawbox.c b/libavfilter/vf_drawbox.c index 46ce6979a0..47db0490a7 100644 --- a/libavfilter/vf_drawbox.c +++ b/libavfilter/vf_drawbox.c @@ -119,7 +119,7 @@ static void draw_slice(AVFilterLink *inlink, int y0, int h, int slice_dir) } } - avfilter_draw_slice(inlink->dst->outputs[0], y0, h, 1); + ff_draw_slice(inlink->dst->outputs[0], y0, h, 1); } AVFilter avfilter_vf_drawbox = { diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c index 92f14a7ba8..411bcbc781 100644 --- a/libavfilter/vf_drawtext.c +++ b/libavfilter/vf_drawtext.c @@ -849,7 +849,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) (int)dtext->var_values[VAR_N], dtext->var_values[VAR_T], dtext->x, dtext->y, dtext->x+dtext->w, dtext->y+dtext->h); - avfilter_start_frame(inlink->dst->outputs[0], inpicref); + ff_start_frame(inlink->dst->outputs[0], inpicref); } static void end_frame(AVFilterLink *inlink) @@ -863,8 +863,8 @@ static void end_frame(AVFilterLink *inlink) dtext->var_values[VAR_N] += 1.0; - avfilter_draw_slice(outlink, 0, picref->video->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, picref->video->h, 1); + ff_end_frame(outlink); } AVFilter avfilter_vf_drawtext = { diff --git a/libavfilter/vf_fade.c b/libavfilter/vf_fade.c index 8bd4074592..6b9cb66fe6 100644 --- a/libavfilter/vf_fade.c +++ b/libavfilter/vf_fade.c @@ -133,14 +133,14 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) } } - avfilter_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); + ff_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); } static void end_frame(AVFilterLink *inlink) { FadeContext *fade = inlink->dst->priv; - avfilter_end_frame(inlink->dst->outputs[0]); + ff_end_frame(inlink->dst->outputs[0]); if (fade->frame_index >= fade->start_frame && fade->frame_index <= fade->stop_frame) diff --git a/libavfilter/vf_fieldorder.c b/libavfilter/vf_fieldorder.c index d975aab974..ff1e332572 100644 --- a/libavfilter/vf_fieldorder.c +++ b/libavfilter/vf_fieldorder.c @@ -29,6 +29,7 @@ #include "libavutil/pixdesc.h" #include "avfilter.h" #include "formats.h" +#include "video.h" typedef struct { @@ -124,7 +125,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) outpicref = avfilter_ref_buffer(inpicref, ~0); outlink->out_buf = outpicref; - avfilter_start_frame(outlink, outpicref); + ff_start_frame(outlink, outpicref); } static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) @@ -141,7 +142,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) * and that complexity will be added later */ if ( !inpicref->video->interlaced || inpicref->video->top_field_first == fieldorder->dst_tff) { - avfilter_draw_slice(outlink, y, h, slice_dir); + ff_draw_slice(outlink, y, h, slice_dir); } } @@ -203,13 +204,13 @@ static void end_frame(AVFilterLink *inlink) } } outpicref->video->top_field_first = fieldorder->dst_tff; - avfilter_draw_slice(outlink, 0, h, 1); + ff_draw_slice(outlink, 0, h, 1); } else { av_dlog(ctx, "not interlaced or field order already correct\n"); } - avfilter_end_frame(outlink); + ff_end_frame(outlink); avfilter_unref_buffer(inpicref); } diff --git a/libavfilter/vf_fifo.c b/libavfilter/vf_fifo.c index b99cec38dc..1785946a4f 100644 --- a/libavfilter/vf_fifo.c +++ b/libavfilter/vf_fifo.c @@ -24,6 +24,7 @@ */ #include "avfilter.h" +#include "internal.h" #include "video.h" typedef struct BufPic { @@ -77,15 +78,15 @@ static int request_frame(AVFilterLink *outlink) int ret; if (!fifo->root.next) { - if ((ret = avfilter_request_frame(outlink->src->inputs[0]) < 0)) + if ((ret = ff_request_frame(outlink->src->inputs[0]) < 0)) return ret; } /* by doing this, we give ownership of the reference to the next filter, * so we don't have to worry about dereferencing it ourselves. */ - avfilter_start_frame(outlink, fifo->root.next->picref); - avfilter_draw_slice (outlink, 0, outlink->h, 1); - avfilter_end_frame (outlink); + ff_start_frame(outlink, fifo->root.next->picref); + ff_draw_slice (outlink, 0, outlink->h, 1); + ff_end_frame (outlink); if (fifo->last == fifo->root.next) fifo->last = &fifo->root; diff --git a/libavfilter/vf_fps.c b/libavfilter/vf_fps.c index da38af299b..18cd51a9a8 100644 --- a/libavfilter/vf_fps.c +++ b/libavfilter/vf_fps.c @@ -27,6 +27,8 @@ #include "libavutil/parseutils.h" #include "avfilter.h" +#include "internal.h" +#include "video.h" typedef struct FPSContext { const AVClass *class; @@ -129,7 +131,7 @@ static int request_frame(AVFilterLink *outlink) int ret = 0; while (ret >= 0 && s->frames_out == frames_out) - ret = avfilter_request_frame(ctx->inputs[0]); + ret = ff_request_frame(ctx->inputs[0]); /* flush the fifo */ if (ret == AVERROR_EOF && av_fifo_size(s->fifo)) { @@ -141,9 +143,9 @@ static int request_frame(AVFilterLink *outlink) buf->pts = av_rescale_q(s->first_pts, ctx->inputs[0]->time_base, outlink->time_base) + s->frames_out; - avfilter_start_frame(outlink, buf); - avfilter_draw_slice(outlink, 0, outlink->h, 1); - avfilter_end_frame(outlink); + ff_start_frame(outlink, buf); + ff_draw_slice(outlink, 0, outlink->h, 1); + ff_end_frame(outlink); s->frames_out++; } return 0; @@ -229,9 +231,9 @@ static void end_frame(AVFilterLink *inlink) buf_out->pts = av_rescale_q(s->first_pts, inlink->time_base, outlink->time_base) + s->frames_out; - avfilter_start_frame(outlink, buf_out); - avfilter_draw_slice(outlink, 0, outlink->h, 1); - avfilter_end_frame(outlink); + ff_start_frame(outlink, buf_out); + ff_draw_slice(outlink, 0, outlink->h, 1); + ff_end_frame(outlink); s->frames_out++; } flush_fifo(s->fifo); diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index 4dd6fbef09..85b4205559 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -32,6 +32,7 @@ #include "libavutil/parseutils.h" #include "avfilter.h" #include "formats.h" +#include "video.h" typedef f0r_instance_t (*f0r_construct_f)(unsigned int width, unsigned int height); typedef void (*f0r_destruct_f)(f0r_instance_t instance); @@ -351,8 +352,8 @@ static void end_frame(AVFilterLink *inlink) (const uint32_t *)inpicref->data[0], (uint32_t *)outpicref->data[0]); avfilter_unref_buffer(inpicref); - avfilter_draw_slice(outlink, 0, outlink->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, outlink->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(outpicref); } @@ -436,11 +437,11 @@ static int source_request_frame(AVFilterLink *outlink) picref->pts = frei0r->pts++; picref->pos = -1; - avfilter_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); frei0r->update(frei0r->instance, av_rescale_q(picref->pts, frei0r->time_base, (AVRational){1,1000}), NULL, (uint32_t *)picref->data[0]); - avfilter_draw_slice(outlink, 0, outlink->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, outlink->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(picref); return 0; diff --git a/libavfilter/vf_gradfun.c b/libavfilter/vf_gradfun.c index b61c06317c..7fde16d41b 100644 --- a/libavfilter/vf_gradfun.c +++ b/libavfilter/vf_gradfun.c @@ -38,6 +38,7 @@ #include "avfilter.h" #include "formats.h" #include "gradfun.h" +#include "video.h" DECLARE_ALIGNED(16, static const uint16_t, dither)[8][8] = { {0x00,0x60,0x18,0x78,0x06,0x66,0x1E,0x7E}, @@ -197,7 +198,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) outpicref = inpicref; outlink->out_buf = outpicref; - avfilter_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); } static void null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { } @@ -226,8 +227,8 @@ static void end_frame(AVFilterLink *inlink) av_image_copy_plane(outpic->data[p], outpic->linesize[p], inpic->data[p], inpic->linesize[p], w, h); } - avfilter_draw_slice(outlink, 0, inlink->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, inlink->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(inpic); if (outpic != inpic) avfilter_unref_buffer(outpic); diff --git a/libavfilter/vf_hflip.c b/libavfilter/vf_hflip.c index 5e87a7dc13..aff0f8c5d3 100644 --- a/libavfilter/vf_hflip.c +++ b/libavfilter/vf_hflip.c @@ -26,6 +26,7 @@ #include "avfilter.h" #include "formats.h" +#include "video.h" #include "libavutil/pixdesc.h" #include "libavutil/intreadwrite.h" #include "libavutil/imgutils.h" @@ -140,7 +141,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) } } - avfilter_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); + ff_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); } AVFilter avfilter_vf_hflip = { diff --git a/libavfilter/vf_hqdn3d.c b/libavfilter/vf_hqdn3d.c index 51de0d8de6..0a26dd0017 100644 --- a/libavfilter/vf_hqdn3d.c +++ b/libavfilter/vf_hqdn3d.c @@ -28,6 +28,7 @@ #include "libavutil/pixdesc.h" #include "avfilter.h" #include "formats.h" +#include "video.h" typedef struct { int Coefs[4][512*16]; @@ -318,8 +319,8 @@ static void end_frame(AVFilterLink *inlink) hqdn3d->Coefs[2], hqdn3d->Coefs[3]); - avfilter_draw_slice(outlink, 0, inpic->video->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, inpic->video->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(inpic); avfilter_unref_buffer(outpic); } diff --git a/libavfilter/vf_libopencv.c b/libavfilter/vf_libopencv.c index 2bbbb6a373..b6dcd191ae 100644 --- a/libavfilter/vf_libopencv.c +++ b/libavfilter/vf_libopencv.c @@ -364,8 +364,8 @@ static void end_frame(AVFilterLink *inlink) fill_picref_from_iplimage(outpicref, &outimg, inlink->format); avfilter_unref_buffer(inpicref); - avfilter_draw_slice(outlink, 0, outlink->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, outlink->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(outpicref); } diff --git a/libavfilter/vf_lut.c b/libavfilter/vf_lut.c index 29f8b3ce78..3817228960 100644 --- a/libavfilter/vf_lut.c +++ b/libavfilter/vf_lut.c @@ -31,6 +31,7 @@ #include "avfilter.h" #include "formats.h" #include "internal.h" +#include "video.h" static const char *const var_names[] = { "E", @@ -338,7 +339,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) } } - avfilter_draw_slice(outlink, y, h, slice_dir); + ff_draw_slice(outlink, y, h, slice_dir); } #define DEFINE_LUT_FILTER(name_, description_, init_) \ diff --git a/libavfilter/vf_overlay.c b/libavfilter/vf_overlay.c index 571d48dfad..55f1cc3a14 100644 --- a/libavfilter/vf_overlay.c +++ b/libavfilter/vf_overlay.c @@ -33,6 +33,7 @@ #include "libavutil/imgutils.h" #include "libavutil/mathematics.h" #include "internal.h" +#include "video.h" static const char *const var_names[] = { "E", @@ -220,7 +221,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) if (!over->overpicref || over->overpicref->pts < outpicref->pts) { AVFilterBufferRef *old = over->overpicref; over->overpicref = NULL; - avfilter_request_frame(ctx->inputs[OVERLAY]); + ff_request_frame(ctx->inputs[OVERLAY]); if (over->overpicref) { if (old) avfilter_unref_buffer(old); @@ -228,7 +229,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) over->overpicref = old; } - avfilter_start_frame(inlink->dst->outputs[0], outpicref); + ff_start_frame(inlink->dst->outputs[0], outpicref); } static void start_frame_overlay(AVFilterLink *inlink, AVFilterBufferRef *inpicref) @@ -333,12 +334,12 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) over->overpicref->video->w, over->overpicref->video->h, y, outpicref->video->w, h); } - avfilter_draw_slice(outlink, y, h, slice_dir); + ff_draw_slice(outlink, y, h, slice_dir); } static void end_frame(AVFilterLink *inlink) { - avfilter_end_frame(inlink->dst->outputs[0]); + ff_end_frame(inlink->dst->outputs[0]); avfilter_unref_buffer(inlink->cur_buf); } @@ -350,12 +351,12 @@ static int poll_frame(AVFilterLink *link) { AVFilterContext *s = link->src; OverlayContext *over = s->priv; - int ret = avfilter_poll_frame(s->inputs[OVERLAY]); + int ret = ff_poll_frame(s->inputs[OVERLAY]); if (ret == AVERROR_EOF) ret = !!over->overpicref; - return ret && avfilter_poll_frame(s->inputs[MAIN]); + return ret && ff_poll_frame(s->inputs[MAIN]); } AVFilter avfilter_vf_overlay = { diff --git a/libavfilter/vf_pad.c b/libavfilter/vf_pad.c index 1091a212d0..2e98aea028 100644 --- a/libavfilter/vf_pad.c +++ b/libavfilter/vf_pad.c @@ -26,6 +26,7 @@ #include "avfilter.h" #include "formats.h" +#include "video.h" #include "libavutil/avstring.h" #include "libavutil/eval.h" #include "libavutil/pixdesc.h" @@ -337,12 +338,12 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) outpicref->video->w = pad->w; outpicref->video->h = pad->h; - avfilter_start_frame(inlink->dst->outputs[0], outpicref); + ff_start_frame(inlink->dst->outputs[0], outpicref); } static void end_frame(AVFilterLink *link) { - avfilter_end_frame(link->dst->outputs[0]); + ff_end_frame(link->dst->outputs[0]); avfilter_unref_buffer(link->cur_buf); } @@ -366,7 +367,7 @@ static void draw_send_bar_slice(AVFilterLink *link, int y, int h, int slice_dir, link->dst->outputs[0]->out_buf->linesize, pad->line, pad->line_step, pad->hsub, pad->vsub, 0, bar_y, pad->w, bar_h); - avfilter_draw_slice(link->dst->outputs[0], bar_y, bar_h, slice_dir); + ff_draw_slice(link->dst->outputs[0], bar_y, bar_h, slice_dir); } } @@ -400,7 +401,7 @@ static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) ff_draw_rectangle(outpic->data, outpic->linesize, pad->line, pad->line_step, pad->hsub, pad->vsub, pad->x + pad->in_w, y, pad->w - pad->x - pad->in_w, h); - avfilter_draw_slice(link->dst->outputs[0], y, h, slice_dir); + ff_draw_slice(link->dst->outputs[0], y, h, slice_dir); draw_send_bar_slice(link, y, h, slice_dir, -1); } diff --git a/libavfilter/vf_pixdesctest.c b/libavfilter/vf_pixdesctest.c index cf7dfeda3e..7eecdc0bb1 100644 --- a/libavfilter/vf_pixdesctest.c +++ b/libavfilter/vf_pixdesctest.c @@ -25,6 +25,7 @@ #include "libavutil/pixdesc.h" #include "avfilter.h" +#include "video.h" typedef struct { const AVPixFmtDescriptor *pix_desc; @@ -76,7 +77,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) priv->pix_desc->flags & PIX_FMT_PSEUDOPAL) memcpy(outpicref->data[1], outpicref->data[1], 256*4); - avfilter_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); } static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) @@ -106,7 +107,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) } } - avfilter_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); + ff_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); } AVFilter avfilter_vf_pixdesctest = { diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c index 82a3181cb5..6f33848f20 100644 --- a/libavfilter/vf_scale.c +++ b/libavfilter/vf_scale.c @@ -25,6 +25,7 @@ #include "avfilter.h" #include "formats.h" +#include "video.h" #include "libavutil/avstring.h" #include "libavutil/eval.h" #include "libavutil/mathematics.h" @@ -257,7 +258,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) AVFilterBufferRef *outpicref; if (!scale->sws) { - avfilter_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); return; } @@ -277,7 +278,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) INT_MAX); scale->slice_y = 0; - avfilter_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); } static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) @@ -288,7 +289,7 @@ static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) const uint8_t *data[4]; if (!scale->sws) { - avfilter_draw_slice(link->dst->outputs[0], y, h, slice_dir); + ff_draw_slice(link->dst->outputs[0], y, h, slice_dir); return; } @@ -308,7 +309,7 @@ static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) if (slice_dir == -1) scale->slice_y -= out_h; - avfilter_draw_slice(link->dst->outputs[0], scale->slice_y, out_h, slice_dir); + ff_draw_slice(link->dst->outputs[0], scale->slice_y, out_h, slice_dir); if (slice_dir == 1) scale->slice_y += out_h; } diff --git a/libavfilter/vf_select.c b/libavfilter/vf_select.c index 2b6b49c153..dab47ced85 100644 --- a/libavfilter/vf_select.c +++ b/libavfilter/vf_select.c @@ -27,6 +27,7 @@ #include "libavutil/fifo.h" #include "libavutil/mathematics.h" #include "avfilter.h" +#include "internal.h" #include "video.h" static const char *const var_names[] = { @@ -242,7 +243,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) sizeof(picref), NULL); return; } - avfilter_start_frame(inlink->dst->outputs[0], avfilter_ref_buffer(picref, ~0)); + ff_start_frame(inlink->dst->outputs[0], avfilter_ref_buffer(picref, ~0)); } } @@ -251,7 +252,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) SelectContext *select = inlink->dst->priv; if (select->select && !select->cache_frames) - avfilter_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); + ff_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); } static void end_frame(AVFilterLink *inlink) @@ -262,7 +263,7 @@ static void end_frame(AVFilterLink *inlink) if (select->select) { if (select->cache_frames) return; - avfilter_end_frame(inlink->dst->outputs[0]); + ff_end_frame(inlink->dst->outputs[0]); } avfilter_unref_buffer(picref); } @@ -277,15 +278,15 @@ static int request_frame(AVFilterLink *outlink) if (av_fifo_size(select->pending_frames)) { AVFilterBufferRef *picref; av_fifo_generic_read(select->pending_frames, &picref, sizeof(picref), NULL); - avfilter_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); - avfilter_draw_slice(outlink, 0, outlink->h, 1); - avfilter_end_frame(outlink); + ff_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); + ff_draw_slice(outlink, 0, outlink->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(picref); return 0; } while (!select->select) { - int ret = avfilter_request_frame(inlink); + int ret = ff_request_frame(inlink); if (ret < 0) return ret; } @@ -300,12 +301,12 @@ static int poll_frame(AVFilterLink *outlink) int count, ret; if (!av_fifo_size(select->pending_frames)) { - if ((count = avfilter_poll_frame(inlink)) <= 0) + if ((count = ff_poll_frame(inlink)) <= 0) return count; /* request frame from input, and apply select condition to it */ select->cache_frames = 1; while (count-- && av_fifo_space(select->pending_frames)) { - ret = avfilter_request_frame(inlink); + ret = ff_request_frame(inlink); if (ret < 0) break; } diff --git a/libavfilter/vf_setpts.c b/libavfilter/vf_setpts.c index 103f265782..d303851686 100644 --- a/libavfilter/vf_setpts.c +++ b/libavfilter/vf_setpts.c @@ -129,7 +129,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) setpts->var_values[VAR_N] += 1.0; setpts->var_values[VAR_PREV_INPTS ] = TS2D(inpicref ->pts); setpts->var_values[VAR_PREV_OUTPTS] = TS2D(outpicref->pts); - avfilter_start_frame(inlink->dst->outputs[0], outpicref); + ff_start_frame(inlink->dst->outputs[0], outpicref); } static av_cold void uninit(AVFilterContext *ctx) diff --git a/libavfilter/vf_settb.c b/libavfilter/vf_settb.c index b40ede87cb..78d4617526 100644 --- a/libavfilter/vf_settb.c +++ b/libavfilter/vf_settb.c @@ -119,7 +119,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) avfilter_unref_buffer(picref); } - avfilter_start_frame(outlink, picref2); + ff_start_frame(outlink, picref2); } AVFilter avfilter_vf_settb = { diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c index 0475f9bf90..1a8f16e2c3 100644 --- a/libavfilter/vf_showinfo.c +++ b/libavfilter/vf_showinfo.c @@ -75,7 +75,7 @@ static void end_frame(AVFilterLink *inlink) checksum, plane_checksum[0], plane_checksum[1], plane_checksum[2], plane_checksum[3]); showinfo->frame++; - avfilter_end_frame(inlink->dst->outputs[0]); + ff_end_frame(inlink->dst->outputs[0]); } AVFilter avfilter_vf_showinfo = { diff --git a/libavfilter/vf_slicify.c b/libavfilter/vf_slicify.c index 31d74979af..fdc10bea9d 100644 --- a/libavfilter/vf_slicify.c +++ b/libavfilter/vf_slicify.c @@ -73,7 +73,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) av_log(link->dst, AV_LOG_DEBUG, "h:%d\n", slice->h); - avfilter_start_frame(link->dst->outputs[0], picref); + ff_start_frame(link->dst->outputs[0], picref); } static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) @@ -83,16 +83,16 @@ static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) if (slice_dir == 1) { for (y2 = y; y2 + slice->h <= y + h; y2 += slice->h) - avfilter_draw_slice(link->dst->outputs[0], y2, slice->h, slice_dir); + ff_draw_slice(link->dst->outputs[0], y2, slice->h, slice_dir); if (y2 < y + h) - avfilter_draw_slice(link->dst->outputs[0], y2, y + h - y2, slice_dir); + ff_draw_slice(link->dst->outputs[0], y2, y + h - y2, slice_dir); } else if (slice_dir == -1) { for (y2 = y + h; y2 - slice->h >= y; y2 -= slice->h) - avfilter_draw_slice(link->dst->outputs[0], y2 - slice->h, slice->h, slice_dir); + ff_draw_slice(link->dst->outputs[0], y2 - slice->h, slice->h, slice_dir); if (y2 > y) - avfilter_draw_slice(link->dst->outputs[0], y, y2 - y, slice_dir); + ff_draw_slice(link->dst->outputs[0], y, y2 - y, slice_dir); } } diff --git a/libavfilter/vf_transpose.c b/libavfilter/vf_transpose.c index 7801066824..5e5feda85f 100644 --- a/libavfilter/vf_transpose.c +++ b/libavfilter/vf_transpose.c @@ -30,6 +30,7 @@ #include "libavutil/imgutils.h" #include "avfilter.h" #include "formats.h" +#include "video.h" typedef struct { int hsub, vsub; @@ -130,7 +131,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) outlink->out_buf->video->pixel_aspect.den = picref->video->pixel_aspect.num; } - avfilter_start_frame(outlink, avfilter_ref_buffer(outlink->out_buf, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(outlink->out_buf, ~0)); } static void end_frame(AVFilterLink *inlink) @@ -191,8 +192,8 @@ static void end_frame(AVFilterLink *inlink) } avfilter_unref_buffer(inpic); - avfilter_draw_slice(outlink, 0, outpic->video->h, 1); - avfilter_end_frame(outlink); + ff_draw_slice(outlink, 0, outpic->video->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(outpic); } diff --git a/libavfilter/vf_unsharp.c b/libavfilter/vf_unsharp.c index 9c0809f331..a5d301cd72 100644 --- a/libavfilter/vf_unsharp.c +++ b/libavfilter/vf_unsharp.c @@ -38,6 +38,7 @@ #include "avfilter.h" #include "formats.h" +#include "video.h" #include "libavutil/common.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" @@ -224,8 +225,8 @@ static void end_frame(AVFilterLink *link) apply_unsharp(out->data[2], out->linesize[2], in->data[2], in->linesize[2], cw, ch, &unsharp->chroma); avfilter_unref_buffer(in); - avfilter_draw_slice(link->dst->outputs[0], 0, link->h, 1); - avfilter_end_frame(link->dst->outputs[0]); + ff_draw_slice(link->dst->outputs[0], 0, link->h, 1); + ff_end_frame(link->dst->outputs[0]); avfilter_unref_buffer(out); } diff --git a/libavfilter/vf_vflip.c b/libavfilter/vf_vflip.c index a7f14c0775..6d2f42ed5d 100644 --- a/libavfilter/vf_vflip.c +++ b/libavfilter/vf_vflip.c @@ -78,14 +78,14 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *inpicref) } } - avfilter_start_frame(link->dst->outputs[0], outpicref); + ff_start_frame(link->dst->outputs[0], outpicref); } static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { AVFilterContext *ctx = link->dst; - avfilter_draw_slice(ctx->outputs[0], link->h - (y+h), h, -1 * slice_dir); + ff_draw_slice(ctx->outputs[0], link->h - (y+h), h, -1 * slice_dir); } AVFilter avfilter_vf_vflip = { diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c index 694b984764..b498ab9d39 100644 --- a/libavfilter/vf_yadif.c +++ b/libavfilter/vf_yadif.c @@ -24,6 +24,7 @@ #include "libavutil/pixdesc.h" #include "avfilter.h" #include "formats.h" +#include "internal.h" #include "video.h" #include "yadif.h" @@ -229,10 +230,10 @@ static void return_frame(AVFilterContext *ctx, int is_second) } else { yadif->out->pts = AV_NOPTS_VALUE; } - avfilter_start_frame(ctx->outputs[0], yadif->out); + ff_start_frame(ctx->outputs[0], yadif->out); } - avfilter_draw_slice(ctx->outputs[0], 0, link->h, 1); - avfilter_end_frame(ctx->outputs[0]); + ff_draw_slice(ctx->outputs[0], 0, link->h, 1); + ff_end_frame(ctx->outputs[0]); yadif->frame_pending = (yadif->mode&1) && !is_second; } @@ -260,7 +261,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) yadif->prev = NULL; if (yadif->out->pts != AV_NOPTS_VALUE) yadif->out->pts *= 2; - avfilter_start_frame(ctx->outputs[0], yadif->out); + ff_start_frame(ctx->outputs[0], yadif->out); return; } @@ -274,7 +275,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) yadif->out->video->interlaced = 0; if (yadif->out->pts != AV_NOPTS_VALUE) yadif->out->pts *= 2; - avfilter_start_frame(ctx->outputs[0], yadif->out); + ff_start_frame(ctx->outputs[0], yadif->out); } static void end_frame(AVFilterLink *link) @@ -286,8 +287,8 @@ static void end_frame(AVFilterLink *link) return; if (yadif->auto_enable && !yadif->cur->video->interlaced) { - avfilter_draw_slice(ctx->outputs[0], 0, link->h, 1); - avfilter_end_frame(ctx->outputs[0]); + ff_draw_slice(ctx->outputs[0], 0, link->h, 1); + ff_end_frame(ctx->outputs[0]); return; } @@ -310,7 +311,7 @@ static int request_frame(AVFilterLink *link) if (yadif->eof) return AVERROR_EOF; - ret = avfilter_request_frame(link->src->inputs[0]); + ret = ff_request_frame(link->src->inputs[0]); if (ret == AVERROR_EOF && yadif->next) { AVFilterBufferRef *next = avfilter_ref_buffer(yadif->next, AV_PERM_READ); @@ -335,14 +336,14 @@ static int poll_frame(AVFilterLink *link) if (yadif->frame_pending) return 1; - val = avfilter_poll_frame(link->src->inputs[0]); + val = ff_poll_frame(link->src->inputs[0]); if (val <= 0) return val; if (val==1 && !yadif->next) { //FIXME change API to not requre this red tape - if ((ret = avfilter_request_frame(link->src->inputs[0])) < 0) + if ((ret = ff_request_frame(link->src->inputs[0])) < 0) return ret; - val = avfilter_poll_frame(link->src->inputs[0]); + val = ff_poll_frame(link->src->inputs[0]); if (val <= 0) return val; } diff --git a/libavfilter/video.c b/libavfilter/video.c index 6a19388f6e..33082a1482 100644 --- a/libavfilter/video.c +++ b/libavfilter/video.c @@ -162,7 +162,7 @@ AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms, int void ff_null_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) { - avfilter_start_frame(link->dst->outputs[0], picref); + ff_start_frame(link->dst->outputs[0], picref); } static void default_start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) @@ -175,13 +175,13 @@ static void default_start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) if (outlink) { outlink->out_buf = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h); avfilter_copy_buffer_ref_props(outlink->out_buf, picref); - avfilter_start_frame(outlink, avfilter_ref_buffer(outlink->out_buf, ~0)); + ff_start_frame(outlink, avfilter_ref_buffer(outlink->out_buf, ~0)); } } /* XXX: should we do the duplicating of the picture ref here, instead of * forcing the source filter to do it? */ -void avfilter_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) +void ff_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) { void (*start_frame)(AVFilterLink *, AVFilterBufferRef *); AVFilterPad *dst = link->dstpad; @@ -213,7 +213,7 @@ void avfilter_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) void ff_null_end_frame(AVFilterLink *link) { - avfilter_end_frame(link->dst->outputs[0]); + ff_end_frame(link->dst->outputs[0]); } static void default_end_frame(AVFilterLink *inlink) @@ -231,11 +231,11 @@ static void default_end_frame(AVFilterLink *inlink) avfilter_unref_buffer(outlink->out_buf); outlink->out_buf = NULL; } - avfilter_end_frame(outlink); + ff_end_frame(outlink); } } -void avfilter_end_frame(AVFilterLink *link) +void ff_end_frame(AVFilterLink *link) { void (*end_frame)(AVFilterLink *); @@ -254,7 +254,7 @@ void avfilter_end_frame(AVFilterLink *link) void ff_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { - avfilter_draw_slice(link->dst->outputs[0], y, h, slice_dir); + ff_draw_slice(link->dst->outputs[0], y, h, slice_dir); } static void default_draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) @@ -265,10 +265,10 @@ static void default_draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir outlink = inlink->dst->outputs[0]; if (outlink) - avfilter_draw_slice(outlink, y, h, slice_dir); + ff_draw_slice(outlink, y, h, slice_dir); } -void avfilter_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) +void ff_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { uint8_t *src[4], *dst[4]; int i, j, vsub; @@ -342,4 +342,16 @@ void avfilter_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { ff_null_draw_slice(link, y, h, slice_dir); } +void avfilter_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) +{ + ff_start_frame(link, picref); +} +void avfilter_end_frame(AVFilterLink *link) +{ + ff_end_frame(link); +} +void avfilter_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) +{ + ff_draw_slice(link, y, h, slice_dir); +} #endif diff --git a/libavfilter/video.h b/libavfilter/video.h index 2256482eee..7c9f9a0d28 100644 --- a/libavfilter/video.h +++ b/libavfilter/video.h @@ -29,4 +29,39 @@ void ff_null_start_frame(AVFilterLink *link, AVFilterBufferRef *picref); void ff_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir); void ff_null_end_frame(AVFilterLink *link); +/** + * Notify the next filter of the start of a frame. + * + * @param link the output link the frame will be sent over + * @param picref A reference to the frame about to be sent. The data for this + * frame need only be valid once draw_slice() is called for that + * portion. The receiving filter will free this reference when + * it no longer needs it. + */ +void ff_start_frame(AVFilterLink *link, AVFilterBufferRef *picref); + +/** + * Notify the next filter that the current frame has finished. + * + * @param link the output link the frame was sent over + */ +void ff_end_frame(AVFilterLink *link); + +/** + * Send a slice to the next filter. + * + * Slices have to be provided in sequential order, either in + * top-bottom or bottom-top order. If slices are provided in + * non-sequential order the behavior of the function is undefined. + * + * @param link the output link over which the frame is being sent + * @param y offset in pixels from the top of the image for this slice + * @param h height of this slice in pixels + * @param slice_dir the assumed direction for sending slices, + * from the top slice to the bottom slice if the value is 1, + * from the bottom slice to the top slice if the value is -1, + * for other values the behavior of the function is undefined. + */ +void ff_draw_slice(AVFilterLink *link, int y, int h, int slice_dir); + #endif /* AVFILTER_VIDEO_H */ diff --git a/libavfilter/vsrc_color.c b/libavfilter/vsrc_color.c index 803196ebf7..99ea0ad5c1 100644 --- a/libavfilter/vsrc_color.c +++ b/libavfilter/vsrc_color.c @@ -25,6 +25,7 @@ #include "avfilter.h" #include "formats.h" +#include "video.h" #include "libavutil/pixdesc.h" #include "libavutil/colorspace.h" #include "libavutil/imgutils.h" @@ -144,12 +145,12 @@ static int color_request_frame(AVFilterLink *link) picref->pts = color->pts++; picref->pos = -1; - avfilter_start_frame(link, avfilter_ref_buffer(picref, ~0)); + ff_start_frame(link, avfilter_ref_buffer(picref, ~0)); ff_draw_rectangle(picref->data, picref->linesize, color->line, color->line_step, color->hsub, color->vsub, 0, 0, color->w, color->h); - avfilter_draw_slice(link, 0, color->h, 1); - avfilter_end_frame(link); + ff_draw_slice(link, 0, color->h, 1); + ff_end_frame(link); avfilter_unref_buffer(picref); return 0; diff --git a/libavfilter/vsrc_movie.c b/libavfilter/vsrc_movie.c index 45772319c6..ff3022cdd6 100644 --- a/libavfilter/vsrc_movie.c +++ b/libavfilter/vsrc_movie.c @@ -37,6 +37,7 @@ #include "libavformat/avformat.h" #include "avfilter.h" #include "formats.h" +#include "video.h" typedef struct { const AVClass *class; @@ -287,9 +288,9 @@ static int request_frame(AVFilterLink *outlink) return ret; outpicref = avfilter_ref_buffer(movie->picref, ~0); - avfilter_start_frame(outlink, outpicref); - avfilter_draw_slice(outlink, 0, outlink->h, 1); - avfilter_end_frame(outlink); + ff_start_frame(outlink, outpicref); + ff_draw_slice(outlink, 0, outlink->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(movie->picref); movie->picref = NULL; diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c index 43495d6fd4..7187241136 100644 --- a/libavfilter/vsrc_testsrc.c +++ b/libavfilter/vsrc_testsrc.c @@ -38,6 +38,7 @@ #include "libavutil/parseutils.h" #include "avfilter.h" #include "formats.h" +#include "video.h" typedef struct { const AVClass *class; @@ -142,9 +143,9 @@ static int request_frame(AVFilterLink *outlink) test->nb_frame++; test->fill_picture_fn(outlink->src, picref); - avfilter_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); - avfilter_draw_slice(outlink, 0, picref->video->h, 1); - avfilter_end_frame(outlink); + ff_start_frame(outlink, avfilter_ref_buffer(picref, ~0)); + ff_draw_slice(outlink, 0, picref->video->h, 1); + ff_end_frame(outlink); avfilter_unref_buffer(picref); return 0; |