Commit 1b04ea1a authored by Timothy Gu's avatar Timothy Gu

Merge commit '73c6ec6d' into merge

* commit '73c6ec6d':
  avconv: create simple filtergraphs earlier
Merged-by: 's avatarTimothy Gu <timothygu99@gmail.com>
parents 9aa30236 73c6ec6d
...@@ -3069,11 +3069,10 @@ static int transcode_init(void) ...@@ -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);
......
...@@ -574,7 +574,7 @@ int configure_filtergraph(FilterGraph *fg); ...@@ -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, ...@@ -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) ...@@ -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)
......
...@@ -1923,7 +1923,7 @@ static int configure_complex_filters(void) ...@@ -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: ...@@ -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: ...@@ -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);
}
}
} }
} }
......
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