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;
|
int64_t nb_frames, nb_frames_prev, i;
|
||||||
double duration = 0;
|
double duration = 0;
|
||||||
|
|
||||||
if (frame) {
|
if (frame)
|
||||||
FrameData *fd = frame_data(frame);
|
|
||||||
|
|
||||||
duration = frame->duration * av_q2d(frame->time_base) / av_q2d(enc->time_base);
|
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,
|
video_sync_process(of, ost, frame, duration,
|
||||||
&nb_frames, &nb_frames_prev);
|
&nb_frames, &nb_frames_prev);
|
||||||
|
|
||||||
|
@ -1817,8 +1817,12 @@ static int fg_output_step(OutputFilterPriv *ofp, int flush)
|
|||||||
|
|
||||||
if (ost->type == AVMEDIA_TYPE_VIDEO) {
|
if (ost->type == AVMEDIA_TYPE_VIDEO) {
|
||||||
AVRational fr = av_buffersink_get_frame_rate(filter);
|
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;
|
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);
|
ret = enc_frame(ost, frame);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user