summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_content.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-05-27 02:09:22 +0100
committerCarl Hetherington <cth@carlh.net>2015-05-27 02:09:22 +0100
commit387304bc9147933b68eda2b38ba8cac0d250e87e (patch)
tree0697a08182c94193a3424d44d5f7af4231f0ade3 /src/lib/ffmpeg_content.cc
parentfd2b1840496fa121727b7e835843c8beeaebd5eb (diff)
Untested use of Frame for video/audio content lengths.
Diffstat (limited to 'src/lib/ffmpeg_content.cc')
-rw-r--r--src/lib/ffmpeg_content.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc
index 187d61953..9acc883fd 100644
--- a/src/lib/ffmpeg_content.cc
+++ b/src/lib/ffmpeg_content.cc
@@ -249,14 +249,18 @@ FFmpegContent::set_audio_stream (shared_ptr<FFmpegAudioStream> s)
signal_changed (FFmpegContentProperty::AUDIO_STREAM);
}
-ContentTime
+Frame
FFmpegContent::audio_length () const
{
if (!audio_stream ()) {
- return ContentTime ();
+ return 0;
}
- return video_length ();
+ /* We're talking about the content's audio length here, at the content's frame
+ rate. We assume it's the same as the video's length, and we can just convert
+ using the content's rates.
+ */
+ return (video_length () / video_frame_rate ()) * audio_frame_rate ();
}
int
@@ -300,7 +304,8 @@ FFmpegContent::full_length () const
{
shared_ptr<const Film> film = _film.lock ();
DCPOMATIC_ASSERT (film);
- return DCPTime (video_length_after_3d_combine(), FrameRateChange (video_frame_rate (), film->video_frame_rate ()));
+ FrameRateChange const frc (video_frame_rate (), film->video_frame_rate ());
+ return DCPTime::from_frames (rint (video_length_after_3d_combine() * frc.factor()), film->video_frame_rate());
}
AudioMapping