fftools/ffmpeg_enc: move handling video frame duration to video_sync_process()
That is a more appropriate place for this.
This commit is contained in:
@@ -953,12 +953,12 @@ early_exit:
|
|||||||
* should this (and possibly previous) frame be repeated in order to conform to
|
* should this (and possibly previous) frame be repeated in order to conform to
|
||||||
* desired target framerate (if any).
|
* desired target framerate (if any).
|
||||||
*/
|
*/
|
||||||
static void video_sync_process(OutputFile *of, OutputStream *ost,
|
static void video_sync_process(OutputFile *of, OutputStream *ost, AVFrame *frame,
|
||||||
AVFrame *frame, double duration,
|
|
||||||
int64_t *nb_frames, int64_t *nb_frames_prev)
|
int64_t *nb_frames, int64_t *nb_frames_prev)
|
||||||
{
|
{
|
||||||
Encoder *e = ost->enc;
|
Encoder *e = ost->enc;
|
||||||
double delta0, delta, sync_ipts;
|
AVCodecContext *enc = ost->enc_ctx;
|
||||||
|
double delta0, delta, sync_ipts, duration;
|
||||||
|
|
||||||
if (!frame) {
|
if (!frame) {
|
||||||
*nb_frames_prev = *nb_frames = mid_pred(e->frames_prev_hist[0],
|
*nb_frames_prev = *nb_frames = mid_pred(e->frames_prev_hist[0],
|
||||||
@@ -967,6 +967,8 @@ static void video_sync_process(OutputFile *of, OutputStream *ost,
|
|||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
duration = frame->duration * av_q2d(frame->time_base) / av_q2d(enc->time_base);
|
||||||
|
|
||||||
sync_ipts = adjust_frame_pts_to_encoder_tb(of, ost, frame);
|
sync_ipts = adjust_frame_pts_to_encoder_tb(of, ost, frame);
|
||||||
/* delta0 is the "drift" between the input frame and
|
/* delta0 is the "drift" between the input frame and
|
||||||
* where it would fall in the output. */
|
* where it would fall in the output. */
|
||||||
@@ -1095,12 +1097,8 @@ static int do_video_out(OutputFile *of, OutputStream *ost, AVFrame *frame)
|
|||||||
Encoder *e = ost->enc;
|
Encoder *e = ost->enc;
|
||||||
AVCodecContext *enc = ost->enc_ctx;
|
AVCodecContext *enc = ost->enc_ctx;
|
||||||
int64_t nb_frames, nb_frames_prev, i;
|
int64_t nb_frames, nb_frames_prev, i;
|
||||||
double duration = 0;
|
|
||||||
|
|
||||||
if (frame)
|
video_sync_process(of, ost, frame,
|
||||||
duration = frame->duration * av_q2d(frame->time_base) / av_q2d(enc->time_base);
|
|
||||||
|
|
||||||
video_sync_process(of, ost, frame, duration,
|
|
||||||
&nb_frames, &nb_frames_prev);
|
&nb_frames, &nb_frames_prev);
|
||||||
|
|
||||||
if (nb_frames_prev == 0 && ost->last_dropped) {
|
if (nb_frames_prev == 0 && ost->last_dropped) {
|
||||||
|
Reference in New Issue
Block a user