Merge commit '73c6ec6d659bab11ac424a4ba6ce3a56246295ee' into merge
* commit '73c6ec6d659bab11ac424a4ba6ce3a56246295ee': avconv: create simple filtergraphs earlier Merged-by: Timothy Gu <timothygu99@gmail.com>
This commit is contained in:
commit
1b04ea1a6c
9
ffmpeg.c
9
ffmpeg.c
@ -3069,11 +3069,10 @@ static int transcode_init(void)
|
|||||||
exit_program(1);
|
exit_program(1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!ost->filter &&
|
if ((enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
|
||||||
(enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
|
enc_ctx->codec_type == AVMEDIA_TYPE_AUDIO) &&
|
||||||
enc_ctx->codec_type == AVMEDIA_TYPE_AUDIO)) {
|
filtergraph_is_simple(ost->filter->graph)) {
|
||||||
FilterGraph *fg;
|
FilterGraph *fg = ost->filter->graph;
|
||||||
fg = init_simple_filtergraph(ist, ost);
|
|
||||||
if (configure_filtergraph(fg)) {
|
if (configure_filtergraph(fg)) {
|
||||||
av_log(NULL, AV_LOG_FATAL, "Error opening filters!\n");
|
av_log(NULL, AV_LOG_FATAL, "Error opening filters!\n");
|
||||||
exit_program(1);
|
exit_program(1);
|
||||||
|
2
ffmpeg.h
2
ffmpeg.h
@ -574,7 +574,7 @@ int configure_filtergraph(FilterGraph *fg);
|
|||||||
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out);
|
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out);
|
||||||
int ist_in_filtergraph(FilterGraph *fg, InputStream *ist);
|
int ist_in_filtergraph(FilterGraph *fg, InputStream *ist);
|
||||||
int filtergraph_is_simple(FilterGraph *fg);
|
int filtergraph_is_simple(FilterGraph *fg);
|
||||||
FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost);
|
int init_simple_filtergraph(InputStream *ist, OutputStream *ost);
|
||||||
int init_complex_filtergraph(FilterGraph *fg);
|
int init_complex_filtergraph(FilterGraph *fg);
|
||||||
|
|
||||||
int ffmpeg_parse_options(int argc, char **argv);
|
int ffmpeg_parse_options(int argc, char **argv);
|
||||||
|
@ -193,7 +193,7 @@ DEF_CHOOSE_FORMAT(int, sample_rate, supported_samplerates, 0,
|
|||||||
DEF_CHOOSE_FORMAT(uint64_t, channel_layout, channel_layouts, 0,
|
DEF_CHOOSE_FORMAT(uint64_t, channel_layout, channel_layouts, 0,
|
||||||
GET_CH_LAYOUT_NAME)
|
GET_CH_LAYOUT_NAME)
|
||||||
|
|
||||||
FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost)
|
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
|
||||||
{
|
{
|
||||||
FilterGraph *fg = av_mallocz(sizeof(*fg));
|
FilterGraph *fg = av_mallocz(sizeof(*fg));
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost)
|
|||||||
GROW_ARRAY(filtergraphs, nb_filtergraphs);
|
GROW_ARRAY(filtergraphs, nb_filtergraphs);
|
||||||
filtergraphs[nb_filtergraphs - 1] = fg;
|
filtergraphs[nb_filtergraphs - 1] = fg;
|
||||||
|
|
||||||
return fg;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
||||||
|
16
ffmpeg_opt.c
16
ffmpeg_opt.c
@ -1923,7 +1923,7 @@ static int configure_complex_filters(void)
|
|||||||
int i, ret = 0;
|
int i, ret = 0;
|
||||||
|
|
||||||
for (i = 0; i < nb_filtergraphs; i++)
|
for (i = 0; i < nb_filtergraphs; i++)
|
||||||
if (!filtergraphs[i]->graph &&
|
if (!filtergraph_is_simple(filtergraphs[i]) &&
|
||||||
(ret = configure_filtergraph(filtergraphs[i])) < 0)
|
(ret = configure_filtergraph(filtergraphs[i])) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
return 0;
|
return 0;
|
||||||
@ -2290,7 +2290,7 @@ loop_end:
|
|||||||
}
|
}
|
||||||
av_dict_free(&unused_opts);
|
av_dict_free(&unused_opts);
|
||||||
|
|
||||||
/* set the encoding/decoding_needed flags */
|
/* set the encoding/decoding_needed flags and create simple filtergraphs*/
|
||||||
for (i = of->ost_index; i < nb_output_streams; i++) {
|
for (i = of->ost_index; i < nb_output_streams; i++) {
|
||||||
OutputStream *ost = output_streams[i];
|
OutputStream *ost = output_streams[i];
|
||||||
|
|
||||||
@ -2298,6 +2298,18 @@ loop_end:
|
|||||||
if (ost->encoding_needed && ost->source_index >= 0) {
|
if (ost->encoding_needed && ost->source_index >= 0) {
|
||||||
InputStream *ist = input_streams[ost->source_index];
|
InputStream *ist = input_streams[ost->source_index];
|
||||||
ist->decoding_needed |= DECODING_FOR_OST;
|
ist->decoding_needed |= DECODING_FOR_OST;
|
||||||
|
|
||||||
|
if (ost->st->codec->codec_type == AVMEDIA_TYPE_VIDEO ||
|
||||||
|
ost->st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||||
|
err = init_simple_filtergraph(ist, ost);
|
||||||
|
if (err < 0) {
|
||||||
|
av_log(NULL, AV_LOG_ERROR,
|
||||||
|
"Error initializing a simple filtergraph between streams "
|
||||||
|
"%d:%d->%d:%d\n", ist->file_index, ost->source_index,
|
||||||
|
nb_output_files - 1, ost->st->index);
|
||||||
|
exit_program(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user