vsrc_buffer: add av_vsrc_buffer_add_frame()
The new function is a wrapper around av_vsrc_buffer_add_video_buffer_ref(), and allows to simplify the act of pushing AVFrame data to the source buffer.
This commit is contained in:
parent
d3fddb8454
commit
c000a9f783
@ -13,6 +13,9 @@ libavutil: 2011-04-18
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2011-05-XX - XXXXXX - lavfi 2.8.0 - avcodec.h
|
||||||
|
Add av_vsrc_buffer_add_frame() to libavfilter/avcodec.h.
|
||||||
|
|
||||||
2011-05-XX - XXXXXX - lavfi 2.6.0 - avcodec.h
|
2011-05-XX - XXXXXX - lavfi 2.6.0 - avcodec.h
|
||||||
Add avfilter_get_video_buffer_ref_from_frame() to libavfilter/avcodec.h.
|
Add avfilter_get_video_buffer_ref_from_frame() to libavfilter/avcodec.h.
|
||||||
|
|
||||||
|
7
ffmpeg.c
7
ffmpeg.c
@ -1643,18 +1643,13 @@ static int output_packet(AVInputStream *ist, int ist_index,
|
|||||||
#if CONFIG_AVFILTER
|
#if CONFIG_AVFILTER
|
||||||
if(ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
|
if(ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||||
for(i=0;i<nb_ostreams;i++) {
|
for(i=0;i<nb_ostreams;i++) {
|
||||||
AVFilterBufferRef *picref;
|
|
||||||
ost = ost_table[i];
|
ost = ost_table[i];
|
||||||
if (ost->input_video_filter && ost->source_index == ist_index) {
|
if (ost->input_video_filter && ost->source_index == ist_index) {
|
||||||
if (!picture.sample_aspect_ratio.num)
|
if (!picture.sample_aspect_ratio.num)
|
||||||
picture.sample_aspect_ratio = ist->st->sample_aspect_ratio;
|
picture.sample_aspect_ratio = ist->st->sample_aspect_ratio;
|
||||||
picture.pts = ist->pts;
|
picture.pts = ist->pts;
|
||||||
|
|
||||||
picref =
|
av_vsrc_buffer_add_frame(ost->input_video_filter, &picture);
|
||||||
avfilter_get_video_buffer_ref_from_frame(&picture, AV_PERM_WRITE);
|
|
||||||
av_vsrc_buffer_add_video_buffer_ref(ost->input_video_filter, picref);
|
|
||||||
picref->buf->data[0] = NULL;
|
|
||||||
avfilter_unref_buffer(picref);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,4 +45,13 @@ void avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src);
|
|||||||
*/
|
*/
|
||||||
AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame, int perms);
|
AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame, int perms);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add frame data to buffer_src.
|
||||||
|
*
|
||||||
|
* @param buffer_src pointer to a buffer source context
|
||||||
|
* @return >= 0 in case of success, a negative AVERROR code in case of
|
||||||
|
* failure
|
||||||
|
*/
|
||||||
|
int av_vsrc_buffer_add_frame(AVFilterContext *buffer_src, const AVFrame *frame);
|
||||||
|
|
||||||
#endif /* AVFILTER_AVCODEC_H */
|
#endif /* AVFILTER_AVCODEC_H */
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include "libavutil/samplefmt.h"
|
#include "libavutil/samplefmt.h"
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MAJOR 2
|
#define LIBAVFILTER_VERSION_MAJOR 2
|
||||||
#define LIBAVFILTER_VERSION_MINOR 7
|
#define LIBAVFILTER_VERSION_MINOR 8
|
||||||
#define LIBAVFILTER_VERSION_MICRO 0
|
#define LIBAVFILTER_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
|
@ -106,6 +106,23 @@ int av_vsrc_buffer_add_video_buffer_ref(AVFilterContext *buffer_filter, AVFilter
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_AVCODEC
|
||||||
|
#include "avcodec.h"
|
||||||
|
|
||||||
|
int av_vsrc_buffer_add_frame(AVFilterContext *buffer_src, const AVFrame *frame)
|
||||||
|
{
|
||||||
|
AVFilterBufferRef *picref =
|
||||||
|
avfilter_get_video_buffer_ref_from_frame(frame, AV_PERM_WRITE);
|
||||||
|
if (!picref)
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
|
av_vsrc_buffer_add_video_buffer_ref(buffer_src, picref);
|
||||||
|
picref->buf->data[0] = NULL;
|
||||||
|
avfilter_unref_buffer(picref);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
|
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
|
||||||
{
|
{
|
||||||
BufferSourceContext *c = ctx->priv;
|
BufferSourceContext *c = ctx->priv;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user