X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fffmpeg_file_encoder.cc;h=e9809008098536ee6591904e2047b378683d22d1;hb=142f7dee139074294d35c630ecee67b85e8a98fc;hp=e5ea645998ab331993d0de8f83d2a669d15b1659;hpb=36e81aebf03d00c716b5e603deb0b5f8f6a99f53;p=dcpomatic.git diff --git a/src/lib/ffmpeg_file_encoder.cc b/src/lib/ffmpeg_file_encoder.cc index e5ea64599..e98090080 100644 --- a/src/lib/ffmpeg_file_encoder.cc +++ b/src/lib/ffmpeg_file_encoder.cc @@ -63,6 +63,7 @@ FFmpegFileEncoder::FFmpegFileEncoder ( , _video_frame_size (video_frame_size) , _video_frame_rate (video_frame_rate) , _audio_frame_rate (audio_frame_rate) + , _audio_frames (0) { _pixel_format = pixel_format (format); @@ -296,7 +297,8 @@ FFmpegFileEncoder::video (shared_ptr video, DCPTime time) frame->width = image->size().width; frame->height = image->size().height; frame->format = _pixel_format; - frame->pts = time.seconds() / av_q2d (_video_stream->time_base); + DCPOMATIC_ASSERT (_video_stream->time_base.num == 1); + frame->pts = time.get() * _video_stream->time_base.den / DCPTime::HZ; AVPacket packet; av_init_packet (&packet); @@ -391,6 +393,9 @@ FFmpegFileEncoder::audio_frame (int size) DCPOMATIC_ASSERT (false); } + DCPOMATIC_ASSERT (_audio_stream->time_base.num == 1); + frame->pts = _audio_frames * _audio_stream->time_base.den / _audio_frame_rate; + AVPacket packet; av_init_packet (&packet); packet.data = 0; @@ -411,6 +416,7 @@ FFmpegFileEncoder::audio_frame (int size) av_frame_free (&frame); _pending_audio->trim_start (size); + _audio_frames += size; } void