+ boost::filesystem::path p = film->audio_analysis_dir ();
+ p /= digest() + "_" + audio_mapping().digest();
+ return p;
+}
+
+string
+AudioContent::technical_summary () const
+{
+ return String::compose (
+ "audio: channels %1, length %2, content rate %3, resampled rate %4",
+ audio_channels(),
+ audio_length().seconds(),
+ audio_frame_rate(),
+ resampled_audio_frame_rate()
+ );
+}
+
+void
+AudioContent::set_audio_mapping (AudioMapping)
+{
+ signal_changed (AudioContentProperty::AUDIO_MAPPING);
+}
+
+/** @return the frame rate that this content should be resampled to in order
+ * that it is in sync with the active video content at its start time.
+ */
+int
+AudioContent::resampled_audio_frame_rate () const
+{
+ shared_ptr<const Film> film = _film.lock ();
+ assert (film);
+
+ /* Resample to a DCI-approved sample rate */
+ double t = dcp_audio_frame_rate (audio_frame_rate ());
+
+ FrameRateChange frc = film->active_frame_rate_change (position ());
+
+ /* 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).
+ */
+
+ if (frc.change_speed) {
+ t /= frc.speed_up;
+ }
+
+ return rint (t);