- shared_ptr<const Film> film = _film.lock ();
- assert (film);
-
- float const rate = _video_frame_rate.get_value_or (film->video_frame_rate ());
- OutputAudioFrame const len = divide_with_round (
- audio_length() * output_audio_frame_rate() * rate,
- content_audio_frame_rate() * film->video_frame_rate()
- );
-
- return film->audio_frames_to_time (len);
-}
-
-int
-SndfileContent::output_audio_frame_rate () const
-{
- shared_ptr<const Film> film = _film.lock ();
- assert (film);
-
- return film->audio_frame_rate ();
-}
-
-void
-SndfileContent::set_audio_mapping (AudioMapping m)
-{
- {
- boost::mutex::scoped_lock lm (_mutex);
- _audio_mapping = m;
- }
-
- signal_changed (AudioContentProperty::AUDIO_MAPPING);
-}
-
-float
-SndfileContent::video_frame_rate () const
-{
- {
- boost::mutex::scoped_lock lm (_mutex);
- if (_video_frame_rate) {
- return _video_frame_rate.get ();
- }
- }
-
- shared_ptr<const Film> film = _film.lock ();
- assert (film);
- return film->video_frame_rate ();
+ FrameRateChange const frc = film()->active_frame_rate_change (position ());
+ return DCPTime::from_frames (audio_length() / frc.speed_up, audio_stream()->frame_rate ());