diff --git a/libavfilter/avcodec.c b/libavfilter/avcodec.c index c50cd18f0b..734357c3f1 100644 --- a/libavfilter/avcodec.c +++ b/libavfilter/avcodec.c @@ -80,6 +80,20 @@ AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_frame(const AVFrame *frame return picref; } +AVFilterBufferRef *avfilter_get_buffer_ref_from_frame(enum AVMediaType type, + const AVFrame *frame, + int perms) +{ + switch (type) { + case AVMEDIA_TYPE_VIDEO: + return avfilter_get_video_buffer_ref_from_frame(frame, perms); + case AVMEDIA_TYPE_AUDIO: + return avfilter_get_audio_buffer_ref_from_frame(frame, perms); + default: + return NULL; + } +} + int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src) { int planes, nb_channels; diff --git a/libavfilter/avcodec.h b/libavfilter/avcodec.h index 867b014488..5f4209acec 100644 --- a/libavfilter/avcodec.h +++ b/libavfilter/avcodec.h @@ -65,6 +65,16 @@ AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_frame(const AVFrame *frame, int perms); +/** + * Create and return a buffer reference from the data and properties + * contained in frame. + * + * @param perms permissions to assign to the new buffer reference + */ +AVFilterBufferRef *avfilter_get_buffer_ref_from_frame(enum AVMediaType type, + const AVFrame *frame, + int perms); + #ifdef FF_API_FILL_FRAME /** * Fill an AVFrame with the information stored in samplesref.