You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
fftools/ffmpeg_filter: return error codes from init_input_filter() instead of aborting
This commit is contained in:
@@ -908,7 +908,7 @@ int init_simple_filtergraph(InputStream *ist, OutputStream *ost,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_input_filter(FilterGraph *fg, InputFilter *ifilter)
|
static int init_input_filter(FilterGraph *fg, InputFilter *ifilter)
|
||||||
{
|
{
|
||||||
FilterGraphPriv *fgp = fgp_from_fg(fg);
|
FilterGraphPriv *fgp = fgp_from_fg(fg);
|
||||||
InputFilterPriv *ifp = ifp_from_ifilter(ifilter);
|
InputFilterPriv *ifp = ifp_from_ifilter(ifilter);
|
||||||
@@ -920,7 +920,7 @@ static void init_input_filter(FilterGraph *fg, InputFilter *ifilter)
|
|||||||
if (type != AVMEDIA_TYPE_VIDEO && type != AVMEDIA_TYPE_AUDIO) {
|
if (type != AVMEDIA_TYPE_VIDEO && type != AVMEDIA_TYPE_AUDIO) {
|
||||||
av_log(fg, AV_LOG_FATAL, "Only video and audio filters supported "
|
av_log(fg, AV_LOG_FATAL, "Only video and audio filters supported "
|
||||||
"currently.\n");
|
"currently.\n");
|
||||||
exit_program(1);
|
return AVERROR(ENOSYS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ifp->linklabel) {
|
if (ifp->linklabel) {
|
||||||
@@ -932,7 +932,7 @@ static void init_input_filter(FilterGraph *fg, InputFilter *ifilter)
|
|||||||
if (file_idx < 0 || file_idx >= nb_input_files) {
|
if (file_idx < 0 || file_idx >= nb_input_files) {
|
||||||
av_log(fg, AV_LOG_FATAL, "Invalid file index %d in filtergraph description %s.\n",
|
av_log(fg, AV_LOG_FATAL, "Invalid file index %d in filtergraph description %s.\n",
|
||||||
file_idx, fgp->graph_desc);
|
file_idx, fgp->graph_desc);
|
||||||
exit_program(1);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
s = input_files[file_idx]->ctx;
|
s = input_files[file_idx]->ctx;
|
||||||
|
|
||||||
@@ -950,7 +950,7 @@ static void init_input_filter(FilterGraph *fg, InputFilter *ifilter)
|
|||||||
if (!st) {
|
if (!st) {
|
||||||
av_log(fg, AV_LOG_FATAL, "Stream specifier '%s' in filtergraph description %s "
|
av_log(fg, AV_LOG_FATAL, "Stream specifier '%s' in filtergraph description %s "
|
||||||
"matches no streams.\n", p, fgp->graph_desc);
|
"matches no streams.\n", p, fgp->graph_desc);
|
||||||
exit_program(1);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
ist = input_files[file_idx]->streams[st->index];
|
ist = input_files[file_idx]->streams[st->index];
|
||||||
} else {
|
} else {
|
||||||
@@ -958,7 +958,7 @@ static void init_input_filter(FilterGraph *fg, InputFilter *ifilter)
|
|||||||
if (!ist) {
|
if (!ist) {
|
||||||
av_log(fg, AV_LOG_FATAL, "Cannot find a matching stream for "
|
av_log(fg, AV_LOG_FATAL, "Cannot find a matching stream for "
|
||||||
"unlabeled input pad %s\n", ifilter->name);
|
"unlabeled input pad %s\n", ifilter->name);
|
||||||
exit_program(1);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
av_assert0(ist);
|
av_assert0(ist);
|
||||||
@@ -968,15 +968,20 @@ static void init_input_filter(FilterGraph *fg, InputFilter *ifilter)
|
|||||||
av_log(fg, AV_LOG_ERROR,
|
av_log(fg, 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",
|
||||||
ifilter->name);
|
ifilter->name);
|
||||||
exit_program(1);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int init_complex_filtergraph(FilterGraph *fg)
|
int init_complex_filtergraph(FilterGraph *fg)
|
||||||
{
|
{
|
||||||
// bind filtergraph inputs to input streams
|
// bind filtergraph inputs to input streams
|
||||||
for (int i = 0; i < fg->nb_inputs; i++)
|
for (int i = 0; i < fg->nb_inputs; i++) {
|
||||||
init_input_filter(fg, fg->inputs[i]);
|
int ret = init_input_filter(fg, fg->inputs[i]);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user