fftools/ffmpeg: move a check to a more appropriate place
reap_filters() no longer needs to access the encoding context.
This commit is contained in:
parent
4fc513b5e3
commit
4358d4d8e7
@ -669,7 +669,6 @@ static int reap_filters(int flush)
|
||||
/* Reap all buffers present in the buffer sinks */
|
||||
for (OutputStream *ost = ost_iter(NULL); ost; ost = ost_iter(ost)) {
|
||||
AVFilterContext *filter;
|
||||
AVCodecContext *enc = ost->enc_ctx;
|
||||
int ret = 0;
|
||||
|
||||
if (!ost->filter || !ost->filter->graph->graph)
|
||||
@ -709,25 +708,7 @@ static int reap_filters(int flush)
|
||||
tb.num, tb.den);
|
||||
}
|
||||
|
||||
switch (av_buffersink_get_type(filter)) {
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
enc_frame(ost, filtered_frame);
|
||||
break;
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
if (!(enc->codec->capabilities & AV_CODEC_CAP_PARAM_CHANGE) &&
|
||||
avcodec_is_open(enc) &&
|
||||
enc->ch_layout.nb_channels != filtered_frame->ch_layout.nb_channels) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Audio filter graph output is not normalized and encoder does not support parameter changes\n");
|
||||
break;
|
||||
}
|
||||
enc_frame(ost, filtered_frame);
|
||||
break;
|
||||
default:
|
||||
// TODO support subtitle filters
|
||||
av_assert0(0);
|
||||
}
|
||||
|
||||
enc_frame(ost, filtered_frame);
|
||||
av_frame_unref(filtered_frame);
|
||||
}
|
||||
}
|
||||
|
@ -789,6 +789,13 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
|
||||
AVCodecContext *enc = ost->enc_ctx;
|
||||
int ret;
|
||||
|
||||
if (!(enc->codec->capabilities & AV_CODEC_CAP_PARAM_CHANGE) &&
|
||||
enc->ch_layout.nb_channels != frame->ch_layout.nb_channels) {
|
||||
av_log(ost, AV_LOG_ERROR,
|
||||
"Audio channel count changed and encoder does not support parameter changes\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (frame->pts == AV_NOPTS_VALUE)
|
||||
frame->pts = e->next_pts;
|
||||
else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user