+ if (_audio_content->content_audio_frame_rate() != _output_audio_frame_rate) {
+
+ shared_ptr<const Film> film = _film.lock ();
+ assert (film);
+
+ stringstream s;
+ s << String::compose ("Will resample audio from %1 to %2", _audio_content->content_audio_frame_rate(), _output_audio_frame_rate);
+ film->log()->log (s.str ());
+
+ /* We will be using planar float data when we call the
+ resampler. As far as I can see, the audio channel
+ layout is not necessary for our purposes; it seems
+ only to be used get the number of channels and
+ decide if rematrixing is needed. It won't be, since
+ input and output layouts are the same.
+ */
+
+ _swr_context = swr_alloc_set_opts (
+ 0,
+ av_get_default_channel_layout (MAX_AUDIO_CHANNELS),
+ AV_SAMPLE_FMT_FLTP,
+ _output_audio_frame_rate,
+ av_get_default_channel_layout (MAX_AUDIO_CHANNELS),
+ AV_SAMPLE_FMT_FLTP,
+ _audio_content->content_audio_frame_rate(),
+ 0, 0
+ );
+
+ swr_init (_swr_context);
+ } else {
+ _swr_context = 0;
+ }
+}