History

lavfi: make avfilter_get_video_buffer() private on next bump.

They are only useful inside filters and we don't allow user filters for now.

Anton Khirnov committed 14 years ago

Commit 6d583581 parent 877299718 files · +53 −44Browse files

Unified · Split

18 files
  1. libavfilter/avfilter.h +3 −11
  2. libavfilter/buffersrc.c +2 −2
  3. libavfilter/vf_delogo.c +2 −2
  4. libavfilter/vf_fieldorder.c +1 −1
  5. libavfilter/vf_frei0r.c +1 −1
  6. libavfilter/vf_gradfun.c +1 −1
  7. libavfilter/vf_overlay.c +1 −1
  8. libavfilter/vf_pad.c +6 −6
  9. libavfilter/vf_pixdesctest.c +2 −2
  10. libavfilter/vf_scale.c +1 −1
  11. libavfilter/vf_transpose.c +2 −2
  12. libavfilter/vf_vflip.c +1 −1
  13. libavfilter/vf_yadif.c +4 −4
  14. libavfilter/video.c +8 −4
  15. libavfilter/video.h +14 −0
  16. libavfilter/vsrc_color.c +1 −1
  17. libavfilter/vsrc_movie.c +2 −2
  18. libavfilter/vsrc_testsrc.c +1 −2
libavfilter/avfilter.h+3−11
@@ -573,19 +573,11 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad, · 572 unmodified lines
573 */573 */
574int avfilter_config_links(AVFilterContext *filter);574int avfilter_config_links(AVFilterContext *filter);
575 575
576/**576#if FF_API_FILTERS_PUBLIC
577 * Request a picture buffer with a specific set of permissions.577attribute_deprecated
578 *
579 * @param link the output link to the filter from which the buffer will
580 * be requested
581 * @param perms the required access permissions
582 * @param w the minimum width of the buffer to allocate
583 * @param h the minimum height of the buffer to allocate
584 * @return A reference to the buffer. This must be unreferenced with
585 * avfilter_unref_buffer when you are finished with it.
586 */
587AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms,578AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms,
588 int w, int h);579 int w, int h);
580#endif
589 581
590/**582/**
591 * Create a buffer reference wrapped around an already allocated image583 * Create a buffer reference wrapped around an already allocated image
libavfilter/buffersrc.c+2−2
@@ -109,8 +109,8 @@ int av_buffersrc_write_frame(AVFilterContext *buffer_filter, AVFrame *frame) · 108 unmodified lines
109 case AVMEDIA_TYPE_VIDEO:109 case AVMEDIA_TYPE_VIDEO:
110 CHECK_VIDEO_PARAM_CHANGE(buffer_filter, c, frame->width, frame->height,110 CHECK_VIDEO_PARAM_CHANGE(buffer_filter, c, frame->width, frame->height,
111 frame->format);111 frame->format);
112 buf = avfilter_get_video_buffer(buffer_filter->outputs[0], AV_PERM_WRITE,112 buf = ff_get_video_buffer(buffer_filter->outputs[0], AV_PERM_WRITE,
113 c->w, c->h);113 c->w, c->h);
114 av_image_copy(buf->data, buf->linesize, frame->data, frame->linesize,114 av_image_copy(buf->data, buf->linesize, frame->data, frame->linesize,
115 c->pix_fmt, c->w, c->h);115 c->pix_fmt, c->w, c->h);
116 break;116 break;
libavfilter/vf_delogo.c+2−2
@@ -219,8 +219,8 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) · 218 unmodified lines
219 AVFilterBufferRef *outpicref;219 AVFilterBufferRef *outpicref;
220 220
221 if (inpicref->perms & AV_PERM_PRESERVE) {221 if (inpicref->perms & AV_PERM_PRESERVE) {
222 outpicref = avfilter_get_video_buffer(outlink, AV_PERM_WRITE,222 outpicref = ff_get_video_buffer(outlink, AV_PERM_WRITE,
223 outlink->w, outlink->h);223 outlink->w, outlink->h);
224 avfilter_copy_buffer_ref_props(outpicref, inpicref);224 avfilter_copy_buffer_ref_props(outpicref, inpicref);
225 outpicref->video->w = outlink->w;225 outpicref->video->w = outlink->w;
226 outpicref->video->h = outlink->h;226 outpicref->video->h = outlink->h;
libavfilter/vf_fieldorder.c+1−1
@@ -112,7 +112,7 @@ static AVFilterBufferRef *get_video_buffer(AVFilterLink *inlink, int perms, int · 111 unmodified lines
112 AVFilterContext *ctx = inlink->dst;112 AVFilterContext *ctx = inlink->dst;
113 AVFilterLink *outlink = ctx->outputs[0];113 AVFilterLink *outlink = ctx->outputs[0];
114 114
115 return avfilter_get_video_buffer(outlink, perms, w, h);115 return ff_get_video_buffer(outlink, perms, w, h);
116}116}
117 117
118static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)118static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
libavfilter/vf_frei0r.c+1−1
@@ -432,7 +432,7 @@ static int source_config_props(AVFilterLink *outlink) · 431 unmodified lines
432static int source_request_frame(AVFilterLink *outlink)432static int source_request_frame(AVFilterLink *outlink)
433{433{
434 Frei0rContext *frei0r = outlink->src->priv;434 Frei0rContext *frei0r = outlink->src->priv;
435 AVFilterBufferRef *picref = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);435 AVFilterBufferRef *picref = ff_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);
436 picref->video->pixel_aspect = (AVRational) {1, 1};436 picref->video->pixel_aspect = (AVRational) {1, 1};
437 picref->pts = frei0r->pts++;437 picref->pts = frei0r->pts++;
438 picref->pos = -1;438 picref->pos = -1;
libavfilter/vf_gradfun.c+1−1
@@ -190,7 +190,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) · 189 unmodified lines
190 AVFilterBufferRef *outpicref;190 AVFilterBufferRef *outpicref;
191 191
192 if (inpicref->perms & AV_PERM_PRESERVE) {192 if (inpicref->perms & AV_PERM_PRESERVE) {
193 outpicref = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);193 outpicref = ff_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);
194 avfilter_copy_buffer_ref_props(outpicref, inpicref);194 avfilter_copy_buffer_ref_props(outpicref, inpicref);
195 outpicref->video->w = outlink->w;195 outpicref->video->w = outlink->w;
196 outpicref->video->h = outlink->h;196 outpicref->video->h = outlink->h;
libavfilter/vf_overlay.c+1−1
@@ -205,7 +205,7 @@ static int config_output(AVFilterLink *outlink) · 204 unmodified lines
205 205
206static AVFilterBufferRef *get_video_buffer(AVFilterLink *link, int perms, int w, int h)206static AVFilterBufferRef *get_video_buffer(AVFilterLink *link, int perms, int w, int h)
207{207{
208 return avfilter_get_video_buffer(link->dst->outputs[0], perms, w, h);208 return ff_get_video_buffer(link->dst->outputs[0], perms, w, h);
209}209}
210 210
211static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)211static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
libavfilter/vf_pad.c+6−6
@@ -256,9 +256,9 @@ static AVFilterBufferRef *get_video_buffer(AVFilterLink *inlink, int perms, int · 255 unmodified lines
256{256{
257 PadContext *pad = inlink->dst->priv;257 PadContext *pad = inlink->dst->priv;
258 258
259 AVFilterBufferRef *picref = avfilter_get_video_buffer(inlink->dst->outputs[0], perms,259 AVFilterBufferRef *picref = ff_get_video_buffer(inlink->dst->outputs[0], perms,
260 w + (pad->w - pad->in_w),260 w + (pad->w - pad->in_w),
261 h + (pad->h - pad->in_h));261 h + (pad->h - pad->in_h));
262 int plane;262 int plane;
263 263
264 picref->video->w = w;264 picref->video->w = w;
@@ -327,9 +327,9 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) · 62 unmodified lines
327 if(pad->needs_copy){327 if(pad->needs_copy){
328 av_log(inlink->dst, AV_LOG_DEBUG, "Direct padding impossible allocating new frame\n");328 av_log(inlink->dst, AV_LOG_DEBUG, "Direct padding impossible allocating new frame\n");
329 avfilter_unref_buffer(outpicref);329 avfilter_unref_buffer(outpicref);
330 outpicref = avfilter_get_video_buffer(inlink->dst->outputs[0], AV_PERM_WRITE | AV_PERM_NEG_LINESIZES,330 outpicref = ff_get_video_buffer(inlink->dst->outputs[0], AV_PERM_WRITE | AV_PERM_NEG_LINESIZES,
331 FFMAX(inlink->w, pad->w),331 FFMAX(inlink->w, pad->w),
332 FFMAX(inlink->h, pad->h));332 FFMAX(inlink->h, pad->h));
333 avfilter_copy_buffer_ref_props(outpicref, inpicref);333 avfilter_copy_buffer_ref_props(outpicref, inpicref);
334 }334 }
335 335
libavfilter/vf_pixdesctest.c+2−2
@@ -57,8 +57,8 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) · 56 unmodified lines
57 AVFilterBufferRef *outpicref;57 AVFilterBufferRef *outpicref;
58 int i;58 int i;
59 59
60 outlink->out_buf = avfilter_get_video_buffer(outlink, AV_PERM_WRITE,60 outlink->out_buf = ff_get_video_buffer(outlink, AV_PERM_WRITE,
61 outlink->w, outlink->h);61 outlink->w, outlink->h);
62 outpicref = outlink->out_buf;62 outpicref = outlink->out_buf;
63 avfilter_copy_buffer_ref_props(outpicref, picref);63 avfilter_copy_buffer_ref_props(outpicref, picref);
64 64
libavfilter/vf_scale.c+1−1
@@ -265,7 +265,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) · 264 unmodified lines
265 scale->hsub = av_pix_fmt_descriptors[link->format].log2_chroma_w;265 scale->hsub = av_pix_fmt_descriptors[link->format].log2_chroma_w;
266 scale->vsub = av_pix_fmt_descriptors[link->format].log2_chroma_h;266 scale->vsub = av_pix_fmt_descriptors[link->format].log2_chroma_h;
267 267
268 outpicref = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);268 outpicref = ff_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);
269 avfilter_copy_buffer_ref_props(outpicref, picref);269 avfilter_copy_buffer_ref_props(outpicref, picref);
270 outpicref->video->w = outlink->w;270 outpicref->video->w = outlink->w;
271 outpicref->video->h = outlink->h;271 outpicref->video->h = outlink->h;
libavfilter/vf_transpose.c+2−2
@@ -120,8 +120,8 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) · 119 unmodified lines
120{120{
121 AVFilterLink *outlink = inlink->dst->outputs[0];121 AVFilterLink *outlink = inlink->dst->outputs[0];
122 122
123 outlink->out_buf = avfilter_get_video_buffer(outlink, AV_PERM_WRITE,123 outlink->out_buf = ff_get_video_buffer(outlink, AV_PERM_WRITE,
124 outlink->w, outlink->h);124 outlink->w, outlink->h);
125 outlink->out_buf->pts = picref->pts;125 outlink->out_buf->pts = picref->pts;
126 126
127 if (picref->video->pixel_aspect.num == 0) {127 if (picref->video->pixel_aspect.num == 0) {
libavfilter/vf_vflip.c+1−1
@@ -50,7 +50,7 @@ static AVFilterBufferRef *get_video_buffer(AVFilterLink *link, int perms, · 49 unmodified lines
50 if (!(perms & AV_PERM_NEG_LINESIZES))50 if (!(perms & AV_PERM_NEG_LINESIZES))
51 return ff_default_get_video_buffer(link, perms, w, h);51 return ff_default_get_video_buffer(link, perms, w, h);
52 52
53 picref = avfilter_get_video_buffer(link->dst->outputs[0], perms, w, h);53 picref = ff_get_video_buffer(link->dst->outputs[0], perms, w, h);
54 for (i = 0; i < 4; i ++) {54 for (i = 0; i < 4; i ++) {
55 int vsub = i == 1 || i == 2 ? flip->vsub : 0;55 int vsub = i == 1 || i == 2 ? flip->vsub : 0;
56 56
libavfilter/vf_yadif.c+4−4
@@ -208,8 +208,8 @@ static void return_frame(AVFilterContext *ctx, int is_second) · 207 unmodified lines
208 }208 }
209 209
210 if (is_second) {210 if (is_second) {
211 yadif->out = avfilter_get_video_buffer(link, AV_PERM_WRITE | AV_PERM_PRESERVE |211 yadif->out = ff_get_video_buffer(link, AV_PERM_WRITE | AV_PERM_PRESERVE |
212 AV_PERM_REUSE, link->w, link->h);212 AV_PERM_REUSE, link->w, link->h);
213 avfilter_copy_buffer_ref_props(yadif->out, yadif->cur);213 avfilter_copy_buffer_ref_props(yadif->out, yadif->cur);
214 yadif->out->video->interlaced = 0;214 yadif->out->video->interlaced = 0;
215 }215 }
@@ -268,8 +268,8 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) · 52 unmodified lines
268 if (!yadif->prev)268 if (!yadif->prev)
269 yadif->prev = avfilter_ref_buffer(yadif->cur, AV_PERM_READ);269 yadif->prev = avfilter_ref_buffer(yadif->cur, AV_PERM_READ);
270 270
271 yadif->out = avfilter_get_video_buffer(ctx->outputs[0], AV_PERM_WRITE | AV_PERM_PRESERVE |271 yadif->out = ff_get_video_buffer(ctx->outputs[0], AV_PERM_WRITE | AV_PERM_PRESERVE |
272 AV_PERM_REUSE, link->w, link->h);272 AV_PERM_REUSE, link->w, link->h);
273 273
274 avfilter_copy_buffer_ref_props(yadif->out, yadif->cur);274 avfilter_copy_buffer_ref_props(yadif->out, yadif->cur);
275 yadif->out->video->interlaced = 0;275 yadif->out->video->interlaced = 0;
libavfilter/video.c+8−4
@@ -67,7 +67,7 @@ static void ff_dlog_ref(void *ctx, AVFilterBufferRef *ref, int end) · 66 unmodified lines
67 67
68AVFilterBufferRef *ff_null_get_video_buffer(AVFilterLink *link, int perms, int w, int h)68AVFilterBufferRef *ff_null_get_video_buffer(AVFilterLink *link, int perms, int w, int h)
69{69{
70 return avfilter_get_video_buffer(link->dst->outputs[0], perms, w, h);70 return ff_get_video_buffer(link->dst->outputs[0], perms, w, h);
71}71}
72 72
73/* TODO: set the buffer's priv member to a context structure for the whole73/* TODO: set the buffer's priv member to a context structure for the whole
@@ -138,7 +138,7 @@ fail: · 64 unmodified lines
138 return NULL;138 return NULL;
139}139}
140 140
141AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms, int w, int h)141AVFilterBufferRef *ff_get_video_buffer(AVFilterLink *link, int perms, int w, int h)
142{142{
143 AVFilterBufferRef *ret = NULL;143 AVFilterBufferRef *ret = NULL;
144 144
@@ -173,7 +173,7 @@ static void default_start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) · 28 unmodified lines
173 outlink = inlink->dst->outputs[0];173 outlink = inlink->dst->outputs[0];
174 174
175 if (outlink) {175 if (outlink) {
176 outlink->out_buf = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);176 outlink->out_buf = ff_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);
177 avfilter_copy_buffer_ref_props(outlink->out_buf, picref);177 avfilter_copy_buffer_ref_props(outlink->out_buf, picref);
178 ff_start_frame(outlink, avfilter_ref_buffer(outlink->out_buf, ~0));178 ff_start_frame(outlink, avfilter_ref_buffer(outlink->out_buf, ~0));
179 }179 }
@@ -201,7 +201,7 @@ void ff_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) · 21 unmodified lines
201 picref->perms,201 picref->perms,
202 link->dstpad->min_perms, link->dstpad->rej_perms);202 link->dstpad->min_perms, link->dstpad->rej_perms);
203 203
204 link->cur_buf = avfilter_get_video_buffer(link, dst->min_perms, link->w, link->h);204 link->cur_buf = ff_get_video_buffer(link, dst->min_perms, link->w, link->h);
205 link->src_buf = picref;205 link->src_buf = picref;
206 avfilter_copy_buffer_ref_props(link->cur_buf, link->src_buf);206 avfilter_copy_buffer_ref_props(link->cur_buf, link->src_buf);
207 }207 }
@@ -354,4 +354,8 @@ void avfilter_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) · 146 unmodified lines
354{354{
355 ff_draw_slice(link, y, h, slice_dir);355 ff_draw_slice(link, y, h, slice_dir);
356}356}
357AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms, int w, int h)
358{
359 return ff_get_video_buffer(link, perms, w, h);
360}
357#endif361#endif
libavfilter/video.h+14−0
@@ -25,6 +25,20 @@ AVFilterBufferRef *ff_default_get_video_buffer(AVFilterLink *link, · 24 unmodified lines
25 int perms, int w, int h);25 int perms, int w, int h);
26AVFilterBufferRef *ff_null_get_video_buffer(AVFilterLink *link, int perms, int w, int h);26AVFilterBufferRef *ff_null_get_video_buffer(AVFilterLink *link, int perms, int w, int h);
27 27
28/**
29 * Request a picture buffer with a specific set of permissions.
30 *
31 * @param link the output link to the filter from which the buffer will
32 * be requested
33 * @param perms the required access permissions
34 * @param w the minimum width of the buffer to allocate
35 * @param h the minimum height of the buffer to allocate
36 * @return A reference to the buffer. This must be unreferenced with
37 * avfilter_unref_buffer when you are finished with it.
38 */
39AVFilterBufferRef *ff_get_video_buffer(AVFilterLink *link, int perms,
40 int w, int h);
41
28void ff_null_start_frame(AVFilterLink *link, AVFilterBufferRef *picref);42void ff_null_start_frame(AVFilterLink *link, AVFilterBufferRef *picref);
29void ff_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir);43void ff_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir);
30void ff_null_end_frame(AVFilterLink *link);44void ff_null_end_frame(AVFilterLink *link);
libavfilter/vsrc_color.c+1−1
@@ -140,7 +140,7 @@ static int color_config_props(AVFilterLink *inlink) · 139 unmodified lines
140static int color_request_frame(AVFilterLink *link)140static int color_request_frame(AVFilterLink *link)
141{141{
142 ColorContext *color = link->src->priv;142 ColorContext *color = link->src->priv;
143 AVFilterBufferRef *picref = avfilter_get_video_buffer(link, AV_PERM_WRITE, color->w, color->h);143 AVFilterBufferRef *picref = ff_get_video_buffer(link, AV_PERM_WRITE, color->w, color->h);
144 picref->video->pixel_aspect = (AVRational) {1, 1};144 picref->video->pixel_aspect = (AVRational) {1, 1};
145 picref->pts = color->pts++;145 picref->pts = color->pts++;
146 picref->pos = -1;146 picref->pos = -1;
libavfilter/vsrc_movie.c+2−2
@@ -237,8 +237,8 @@ static int movie_get_frame(AVFilterLink *outlink) · 236 unmodified lines
237 237
238 if (frame_decoded) {238 if (frame_decoded) {
239 /* FIXME: avoid the memcpy */239 /* FIXME: avoid the memcpy */
240 movie->picref = avfilter_get_video_buffer(outlink, AV_PERM_WRITE | AV_PERM_PRESERVE |240 movie->picref = ff_get_video_buffer(outlink, AV_PERM_WRITE | AV_PERM_PRESERVE |
241 AV_PERM_REUSE2, outlink->w, outlink->h);241 AV_PERM_REUSE2, outlink->w, outlink->h);
242 av_image_copy(movie->picref->data, movie->picref->linesize,242 av_image_copy(movie->picref->data, movie->picref->linesize,
243 movie->frame->data, movie->frame->linesize,243 movie->frame->data, movie->frame->linesize,
244 movie->picref->format, outlink->w, outlink->h);244 movie->picref->format, outlink->w, outlink->h);
libavfilter/vsrc_testsrc.c+1−2
@@ -132,8 +132,7 @@ static int request_frame(AVFilterLink *outlink) · 131 unmodified lines
132 132
133 if (test->max_pts >= 0 && test->pts > test->max_pts)133 if (test->max_pts >= 0 && test->pts > test->max_pts)
134 return AVERROR_EOF;134 return AVERROR_EOF;
135 picref = avfilter_get_video_buffer(outlink, AV_PERM_WRITE,135 picref = ff_get_video_buffer(outlink, AV_PERM_WRITE, test->w, test->h);
136 test->w, test->h);
137 picref->pts = test->pts++;136 picref->pts = test->pts++;
138 picref->pos = -1;137 picref->pos = -1;
139 picref->video->key_frame = 1;138 picref->video->key_frame = 1;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t