mirror of https://git.ffmpeg.org/ffmpeg.git
fftools/ffmpeg: move derivation of frame duration from filter framerate
From ffmpeg_enc to ffmpeg_filter, which is a more appropriate place for it.
This commit is contained in:
parent
9d4ca76c08
commit
8d12762b42
|
@ -1109,16 +1109,9 @@ static int do_video_out(OutputFile *of, OutputStream *ost, AVFrame *frame)
|
|||
int64_t nb_frames, nb_frames_prev, i;
|
||||
double duration = 0;
|
||||
|
||||
if (frame) {
|
||||
FrameData *fd = frame_data(frame);
|
||||
|
||||
if (frame)
|
||||
duration = frame->duration * av_q2d(frame->time_base) / av_q2d(enc->time_base);
|
||||
|
||||
if (duration <= 0 &&
|
||||
fd->frame_rate_filter.num > 0 && fd->frame_rate_filter.den > 0)
|
||||
duration = 1 / (av_q2d(fd->frame_rate_filter) * av_q2d(enc->time_base));
|
||||
}
|
||||
|
||||
video_sync_process(of, ost, frame, duration,
|
||||
&nb_frames, &nb_frames_prev);
|
||||
|
||||
|
|
|
@ -1817,8 +1817,12 @@ static int fg_output_step(OutputFilterPriv *ofp, int flush)
|
|||
|
||||
if (ost->type == AVMEDIA_TYPE_VIDEO) {
|
||||
AVRational fr = av_buffersink_get_frame_rate(filter);
|
||||
if (fr.num > 0 && fr.den > 0)
|
||||
if (fr.num > 0 && fr.den > 0) {
|
||||
fd->frame_rate_filter = fr;
|
||||
|
||||
if (!frame->duration)
|
||||
frame->duration = av_rescale_q(1, av_inv_q(fr), frame->time_base);
|
||||
}
|
||||
}
|
||||
|
||||
ret = enc_frame(ost, frame);
|
||||
|
|
Loading…
Reference in New Issue