- AudioMapping m;
-
- switch (_audio_from) {
- case AUDIO_FFMPEG:
- {
- shared_ptr<const FFmpegContent> fc = first_ffmpeg ();
- if (!fc) {
- break;
- }
-
- /* XXX: assumes all the same */
- if (fc->audio_channels() == 1) {
- /* Map mono sources to centre */
- m.add (AudioMapping::Channel (fc, 0), libdcp::CENTRE);
- } else {
- int const N = min (fc->audio_channels (), MAX_AUDIO_CHANNELS);
- /* Otherwise just start with a 1:1 mapping */
- for (int i = 0; i < N; ++i) {
- m.add (AudioMapping::Channel (fc, i), (libdcp::Channel) i);
- }
- }
- break;
- }
-
- case AUDIO_SNDFILE:
- {
- int n = 0;
- for (list<shared_ptr<const SndfileContent> >::const_iterator i = _sndfile.begin(); i != _sndfile.end(); ++i) {
- for (int j = 0; j < (*i)->audio_channels(); ++j) {
- m.add (AudioMapping::Channel (*i, j), (libdcp::Channel) n);
- ++n;
- if (n >= MAX_AUDIO_CHANNELS) {
- break;
- }
- }
- if (n >= MAX_AUDIO_CHANNELS) {
- break;
- }
- }
- break;
- }
- }