Commit cc14cdec authored by Nicolas George's avatar Nicolas George

src_buffer: move buffer copy in a separate function.

This will make merging with the audio part easier.
parent f94b150a
...@@ -133,11 +133,33 @@ static int check_format_change(AVFilterContext *buffer_filter, ...@@ -133,11 +133,33 @@ static int check_format_change(AVFilterContext *buffer_filter,
} }
} }
static AVFilterBufferRef *copy_buffer_ref(AVFilterContext *ctx,
AVFilterBufferRef *ref)
{
AVFilterLink *outlink = ctx->outputs[0];
AVFilterBufferRef *buf;
switch (outlink->type) {
case AVMEDIA_TYPE_VIDEO:
buf = avfilter_get_video_buffer(outlink, AV_PERM_WRITE,
ref->video->w, ref->video->h);
av_image_copy(buf->data, buf->linesize,
(void*)ref->data, ref->linesize,
ref->format, ref->video->w, ref->video->h);
break;
default:
return NULL;
}
avfilter_copy_buffer_ref_props(buf, ref);
return buf;
}
int av_buffersrc_add_ref(AVFilterContext *buffer_filter, int av_buffersrc_add_ref(AVFilterContext *buffer_filter,
AVFilterBufferRef *picref, int flags) AVFilterBufferRef *picref, int flags)
{ {
BufferSourceContext *c = buffer_filter->priv; BufferSourceContext *c = buffer_filter->priv;
AVFilterLink *outlink = buffer_filter->outputs[0];
AVFilterBufferRef *buf; AVFilterBufferRef *buf;
int ret; int ret;
...@@ -157,17 +179,10 @@ int av_buffersrc_add_ref(AVFilterContext *buffer_filter, ...@@ -157,17 +179,10 @@ int av_buffersrc_add_ref(AVFilterContext *buffer_filter,
if (ret < 0) if (ret < 0)
return ret; return ret;
} }
if (flags & AV_BUFFERSRC_FLAG_NO_COPY) { if (flags & AV_BUFFERSRC_FLAG_NO_COPY)
buf = picref; buf = picref;
} else { else
buf = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, buf = copy_buffer_ref(buffer_filter, picref);
picref->video->w, picref->video->h);
av_image_copy(buf->data, buf->linesize,
(void*)picref->data, picref->linesize,
picref->format, picref->video->w, picref->video->h);
avfilter_copy_buffer_ref_props(buf, picref);
}
if ((ret = av_fifo_generic_write(c->fifo, &buf, sizeof(buf), NULL)) < 0) { if ((ret = av_fifo_generic_write(c->fifo, &buf, sizeof(buf), NULL)) < 0) {
if (buf != picref) if (buf != picref)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment