X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fffmpeg_content.cc;h=3bee49146a5304024d083c6138b00e8332012390;hb=4ba8772aef261da209bbb882325fd61a8b479fd7;hp=9533315a517e2a0501796bfe3d6f1522f55ff27a;hpb=8bef34f672815c3c9b4236d06fdee8dfd0bffbc2;p=dcpomatic.git diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc index 9533315a5..3bee49146 100644 --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@ -62,7 +62,7 @@ FFmpegContent::FFmpegContent (shared_ptr f, shared_ptr c = node->node_children ("SubtitleStream"); for (list::const_iterator i = c.begin(); i != c.end(); ++i) { @@ -163,7 +163,7 @@ FFmpegContent::examine (shared_ptr job) shared_ptr examiner (new FFmpegExaminer (shared_from_this ())); - VideoContent::Frame video_length = 0; + VideoFrame video_length = 0; video_length = examiner->video_length (); film->log()->log (String::compose ("Video length obtained from header as %1 frames", video_length)); @@ -262,12 +262,12 @@ FFmpegContent::set_audio_stream (shared_ptr s) signal_changed (FFmpegContentProperty::AUDIO_STREAM); } -AudioContent::Frame +AudioFrame FFmpegContent::audio_length () const { int const cafr = content_audio_frame_rate (); int const vfr = video_frame_rate (); - VideoContent::Frame const vl = video_length (); + VideoFrame const vl = video_length (); boost::mutex::scoped_lock lm (_mutex); if (!_audio_stream) { @@ -310,16 +310,15 @@ FFmpegContent::output_audio_frame_rate () const /* Resample to a DCI-approved sample rate */ double t = dcp_audio_frame_rate (content_audio_frame_rate ()); - FrameRateConversion frc (video_frame_rate(), film->video_frame_rate()); + FrameRateChange frc (video_frame_rate(), film->video_frame_rate()); /* Compensate if the DCP is being run at a different frame rate to the source; that is, if the video is run such that it will look different in the DCP compared to the source (slower or faster). - skip/repeat doesn't come into effect here. */ if (frc.change_speed) { - t *= video_frame_rate() * frc.factor() / film->video_frame_rate(); + t /= frc.speed_up; } return rint (t); @@ -374,7 +373,7 @@ FFmpegStream::as_xml (xmlpp::Node* root) const FFmpegAudioStream::FFmpegAudioStream (shared_ptr node, int version) : FFmpegStream (node, version) - , mapping (node->node_child ("Mapping")) + , mapping (node->node_child ("Mapping"), version) { frame_rate = node->number_child ("FrameRate"); channels = node->number_child ("Channels"); @@ -446,13 +445,13 @@ FFmpegSubtitleStream::as_xml (xmlpp::Node* root) const FFmpegStream::as_xml (root); } -Time +DCPTime FFmpegContent::full_length () const { shared_ptr film = _film.lock (); assert (film); - FrameRateConversion frc (video_frame_rate (), film->video_frame_rate ()); + FrameRateChange frc (video_frame_rate (), film->video_frame_rate ()); return video_length() * frc.factor() * TIME_HZ / film->video_frame_rate (); }