fftools/ffmpeg_filter: decouple allocating InputFilter and binding it to InputStream
Will be useful in future commits.
This commit is contained in:
parent
7ea10bfef3
commit
00183880aa
@ -258,7 +258,24 @@ static OutputFilter *ofilter_alloc(FilterGraph *fg)
|
|||||||
return ofilter;
|
return ofilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
static InputFilter *ifilter_alloc(FilterGraph *fg, InputStream *ist)
|
static int ifilter_bind_ist(InputFilter *ifilter, InputStream *ist)
|
||||||
|
{
|
||||||
|
InputFilterPriv *ifp = ifp_from_ifilter(ifilter);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = ist_filter_add(ist, ifilter, filtergraph_is_simple(ifilter->graph));
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ifp->ist = ist;
|
||||||
|
ifp->type_src = ist->st->codecpar->codec_type;
|
||||||
|
ifp->type = ifp->type_src == AVMEDIA_TYPE_SUBTITLE ?
|
||||||
|
AVMEDIA_TYPE_VIDEO : ifp->type_src;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static InputFilter *ifilter_alloc(FilterGraph *fg)
|
||||||
{
|
{
|
||||||
InputFilterPriv *ifp = allocate_array_elem(&fg->inputs, sizeof(*ifp),
|
InputFilterPriv *ifp = allocate_array_elem(&fg->inputs, sizeof(*ifp),
|
||||||
&fg->nb_inputs);
|
&fg->nb_inputs);
|
||||||
@ -272,10 +289,6 @@ static InputFilter *ifilter_alloc(FilterGraph *fg, InputStream *ist)
|
|||||||
|
|
||||||
ifp->format = -1;
|
ifp->format = -1;
|
||||||
ifp->fallback.format = -1;
|
ifp->fallback.format = -1;
|
||||||
ifp->ist = ist;
|
|
||||||
ifp->type_src = ist->st->codecpar->codec_type;
|
|
||||||
ifp->type = ifp->type_src == AVMEDIA_TYPE_SUBTITLE ?
|
|
||||||
AVMEDIA_TYPE_VIDEO : ifp->type_src;
|
|
||||||
|
|
||||||
ifp->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW);
|
ifp->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW);
|
||||||
if (!ifp->frame_queue)
|
if (!ifp->frame_queue)
|
||||||
@ -373,9 +386,9 @@ int init_simple_filtergraph(InputStream *ist, OutputStream *ost,
|
|||||||
|
|
||||||
ost->filter = ofilter;
|
ost->filter = ofilter;
|
||||||
|
|
||||||
ifilter = ifilter_alloc(fg, ist);
|
ifilter = ifilter_alloc(fg);
|
||||||
|
|
||||||
ret = ist_filter_add(ist, ifilter, 1);
|
ret = ifilter_bind_ist(ifilter, ist);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -455,10 +468,10 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
|||||||
}
|
}
|
||||||
av_assert0(ist);
|
av_assert0(ist);
|
||||||
|
|
||||||
ifilter = ifilter_alloc(fg, ist);
|
ifilter = ifilter_alloc(fg);
|
||||||
ifilter->name = describe_filter_link(fg, in, 1);
|
ifilter->name = describe_filter_link(fg, in, 1);
|
||||||
|
|
||||||
ret = ist_filter_add(ist, ifilter, 0);
|
ret = ifilter_bind_ist(ifilter, ist);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
av_log(NULL, AV_LOG_ERROR,
|
av_log(NULL, AV_LOG_ERROR,
|
||||||
"Error binding an input stream to complex filtergraph input %s.\n",
|
"Error binding an input stream to complex filtergraph input %s.\n",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user