History

Make avfilter_get_video_buffer() recursive.

When called on a link with a filter whose destination pad has not a get_video_buffer callback defined, it will call avfilter_get_video_buffer() on the first output link of the destination filer, rather than use avfilter_default_get_buffer(), so the video buffer can be allocated forward in the filterchain. Also add the w and h parameters to avfilter_get_video_buffer(), as the minimum width and height requested by each filter in the filterchain may change, this allows for example a memcpy-less pad filter. This change breaks API / ABI backward compatibility. See the thread: "[PATCH] Implement recusive avfilter_get_video_buffer()". Originally committed as revision 20272 to svn://svn.ffmpeg.org/ffmpeg/trunk

Stefano Sabatini committed 17 years ago

Commit 0eb4ff91 parent 1f09ab53 files · +21 −15Browse files

Showing the changes to libavfilter/avfilter.h (1 of 3 files). Show all

Unified · Split

libavfilter/avfilter.h+9−6
@@ -22,9 +22,9 @@ · 21 unmodified lines
2222 #ifndef AVFILTER_AVFILTER_H
2323 #define AVFILTER_AVFILTER_H
2424
25−#define LIBAVFILTER_VERSION_MAJOR 0
26−#define LIBAVFILTER_VERSION_MINOR 5
27−#define LIBAVFILTER_VERSION_MICRO 1
25+#define LIBAVFILTER_VERSION_MAJOR 1
26+#define LIBAVFILTER_VERSION_MINOR 0
27+#define LIBAVFILTER_VERSION_MICRO 0
2828
2929 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
3030 LIBAVFILTER_VERSION_MINOR, \
@@ -293,7 +293,7 @@ struct AVFilterPad · 262 unmodified lines
293293 *
294294 * Input video pads only.
295295 */
296− AVFilterPicRef *(*get_video_buffer)(AVFilterLink *link, int perms);
296+ AVFilterPicRef *(*get_video_buffer)(AVFilterLink *link, int perms, int w, int h);
297297
298298 /**
299299 * Callback called after the slices of a frame are completely sent. If
@@ -361,7 +361,7 @@ int avfilter_default_config_output_link(AVFilterLink *link); · 61 unmodified lines
361361 int avfilter_default_config_input_link (AVFilterLink *link);
362362 /** default handler for get_video_buffer() for video inputs */
363363 AVFilterPicRef *avfilter_default_get_video_buffer(AVFilterLink *link,
364− int perms);
364+ int perms, int w, int h);
365365 /**
366366 * A helper for query_formats() which sets all links to the same list of
367367 * formats. If there are no links hooked to this filter, the list of formats is
@@ -499,10 +499,13 @@ int avfilter_config_links(AVFilterContext *filter); · 131 unmodified lines
499499 * @param link the output link to the filter from which the picture will
500500 * be requested
501501 * @param perms the required access permissions
502+ * @param w the minimum width of the buffer to allocate
503+ * @param h the minimum height of the buffer to allocate
502504 * @return A reference to the picture. This must be unreferenced with
503505 * avfilter_unref_pic when you are finished with it.
504506 */
505−AVFilterPicRef *avfilter_get_video_buffer(AVFilterLink *link, int perms);
507+AVFilterPicRef *avfilter_get_video_buffer(AVFilterLink *link, int perms,
508+ int w, int h);
506509
507510 /**
508511 * Requests an input frame from the filter at the other end of the link.

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