You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
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:
@@ -669,7 +669,6 @@ static int reap_filters(int flush)
|
|||||||
/* Reap all buffers present in the buffer sinks */
|
/* Reap all buffers present in the buffer sinks */
|
||||||
for (OutputStream *ost = ost_iter(NULL); ost; ost = ost_iter(ost)) {
|
for (OutputStream *ost = ost_iter(NULL); ost; ost = ost_iter(ost)) {
|
||||||
AVFilterContext *filter;
|
AVFilterContext *filter;
|
||||||
AVCodecContext *enc = ost->enc_ctx;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (!ost->filter || !ost->filter->graph->graph)
|
if (!ost->filter || !ost->filter->graph->graph)
|
||||||
@@ -709,25 +708,7 @@ static int reap_filters(int flush)
|
|||||||
tb.num, tb.den);
|
tb.num, tb.den);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (av_buffersink_get_type(filter)) {
|
|
||||||
case AVMEDIA_TYPE_VIDEO:
|
|
||||||
enc_frame(ost, filtered_frame);
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
av_frame_unref(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;
|
AVCodecContext *enc = ost->enc_ctx;
|
||||||
int ret;
|
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)
|
if (frame->pts == AV_NOPTS_VALUE)
|
||||||
frame->pts = e->next_pts;
|
frame->pts = e->next_pts;
|
||||||
else {
|
else {
|
||||||
|
Reference in New Issue
Block a user