mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-16 11:47:04 +00:00
src_buffer: move code to avoid forward declarations.
This commit is contained in:
parent
f7f6aaf988
commit
75e0324eab
@ -69,11 +69,75 @@ typedef struct {
|
||||
return AVERROR(EINVAL);\
|
||||
}
|
||||
|
||||
static void buf_free(AVFilterBuffer *ptr)
|
||||
{
|
||||
av_free(ptr);
|
||||
return;
|
||||
}
|
||||
|
||||
static void set_link_source(AVFilterContext *src, AVFilterLink *link)
|
||||
{
|
||||
link->src = src;
|
||||
link->srcpad = &(src->output_pads[0]);
|
||||
src->outputs[0] = link;
|
||||
}
|
||||
|
||||
static int reconfigure_filter(BufferSourceContext *abuffer, AVFilterContext *filt_ctx)
|
||||
{
|
||||
int ret;
|
||||
AVFilterLink * const inlink = filt_ctx->inputs[0];
|
||||
AVFilterLink * const outlink = filt_ctx->outputs[0];
|
||||
|
||||
inlink->format = abuffer->sample_format;
|
||||
inlink->channel_layout = abuffer->channel_layout;
|
||||
inlink->planar = abuffer->packing_format;
|
||||
inlink->sample_rate = abuffer->sample_rate;
|
||||
|
||||
filt_ctx->filter->uninit(filt_ctx);
|
||||
memset(filt_ctx->priv, 0, filt_ctx->filter->priv_size);
|
||||
if ((ret = filt_ctx->filter->init(filt_ctx, NULL , NULL)) < 0)
|
||||
return ret;
|
||||
if ((ret = inlink->srcpad->config_props(inlink)) < 0)
|
||||
return ret;
|
||||
return outlink->srcpad->config_props(outlink);
|
||||
}
|
||||
|
||||
static int insert_filter(BufferSourceContext *abuffer,
|
||||
AVFilterLink *link, AVFilterContext **filt_ctx,
|
||||
const char *filt_name);
|
||||
static void remove_filter(AVFilterContext **filt_ctx);
|
||||
static int reconfigure_filter(BufferSourceContext *abuffer, AVFilterContext *filt_ctx);
|
||||
const char *filt_name)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if ((ret = avfilter_open(filt_ctx, avfilter_get_by_name(filt_name), NULL)) < 0)
|
||||
return ret;
|
||||
|
||||
link->src->outputs[0] = NULL;
|
||||
if ((ret = avfilter_link(link->src, 0, *filt_ctx, 0)) < 0) {
|
||||
link->src->outputs[0] = link;
|
||||
return ret;
|
||||
}
|
||||
|
||||
set_link_source(*filt_ctx, link);
|
||||
|
||||
if ((ret = reconfigure_filter(abuffer, *filt_ctx)) < 0) {
|
||||
avfilter_free(*filt_ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void remove_filter(AVFilterContext **filt_ctx)
|
||||
{
|
||||
AVFilterLink *outlink = (*filt_ctx)->outputs[0];
|
||||
AVFilterContext *src = (*filt_ctx)->inputs[0]->src;
|
||||
|
||||
(*filt_ctx)->outputs[0] = NULL;
|
||||
avfilter_free(*filt_ctx);
|
||||
*filt_ctx = NULL;
|
||||
|
||||
set_link_source(src, outlink);
|
||||
}
|
||||
|
||||
static inline void log_input_change(void *ctx, AVFilterLink *link, AVFilterBufferRef *ref)
|
||||
{
|
||||
@ -516,76 +580,6 @@ static int poll_frame(AVFilterLink *link)
|
||||
return size/sizeof(AVFilterBufferRef*);
|
||||
}
|
||||
|
||||
static void buf_free(AVFilterBuffer *ptr)
|
||||
{
|
||||
av_free(ptr);
|
||||
return;
|
||||
}
|
||||
|
||||
static void set_link_source(AVFilterContext *src, AVFilterLink *link)
|
||||
{
|
||||
link->src = src;
|
||||
link->srcpad = &(src->output_pads[0]);
|
||||
src->outputs[0] = link;
|
||||
}
|
||||
|
||||
static int reconfigure_filter(BufferSourceContext *abuffer, AVFilterContext *filt_ctx)
|
||||
{
|
||||
int ret;
|
||||
AVFilterLink * const inlink = filt_ctx->inputs[0];
|
||||
AVFilterLink * const outlink = filt_ctx->outputs[0];
|
||||
|
||||
inlink->format = abuffer->sample_format;
|
||||
inlink->channel_layout = abuffer->channel_layout;
|
||||
inlink->planar = abuffer->packing_format;
|
||||
inlink->sample_rate = abuffer->sample_rate;
|
||||
|
||||
filt_ctx->filter->uninit(filt_ctx);
|
||||
memset(filt_ctx->priv, 0, filt_ctx->filter->priv_size);
|
||||
if ((ret = filt_ctx->filter->init(filt_ctx, NULL , NULL)) < 0)
|
||||
return ret;
|
||||
if ((ret = inlink->srcpad->config_props(inlink)) < 0)
|
||||
return ret;
|
||||
return outlink->srcpad->config_props(outlink);
|
||||
}
|
||||
|
||||
static int insert_filter(BufferSourceContext *abuffer,
|
||||
AVFilterLink *link, AVFilterContext **filt_ctx,
|
||||
const char *filt_name)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if ((ret = avfilter_open(filt_ctx, avfilter_get_by_name(filt_name), NULL)) < 0)
|
||||
return ret;
|
||||
|
||||
link->src->outputs[0] = NULL;
|
||||
if ((ret = avfilter_link(link->src, 0, *filt_ctx, 0)) < 0) {
|
||||
link->src->outputs[0] = link;
|
||||
return ret;
|
||||
}
|
||||
|
||||
set_link_source(*filt_ctx, link);
|
||||
|
||||
if ((ret = reconfigure_filter(abuffer, *filt_ctx)) < 0) {
|
||||
avfilter_free(*filt_ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void remove_filter(AVFilterContext **filt_ctx)
|
||||
{
|
||||
AVFilterLink *outlink = (*filt_ctx)->outputs[0];
|
||||
AVFilterContext *src = (*filt_ctx)->inputs[0]->src;
|
||||
|
||||
(*filt_ctx)->outputs[0] = NULL;
|
||||
avfilter_free(*filt_ctx);
|
||||
*filt_ctx = NULL;
|
||||
|
||||
set_link_source(src, outlink);
|
||||
}
|
||||
|
||||
int av_asrc_buffer_add_audio_buffer_ref(AVFilterContext *ctx,
|
||||
AVFilterBufferRef *samplesref,
|
||||
int av_unused flags)
|
||||
|
Loading…
Reference in New Issue
Block a user