From 4dee3db5222be7972930dbc621e9ab15a81d33d2 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 10 Apr 2013 20:45:07 +0100 Subject: [PATCH] Remove believed unnecessary audio channel layout stuff for resampler. --- src/lib/audio_content.h | 2 -- src/lib/encoder.cc | 13 ++++++++++--- src/lib/ffmpeg_content.cc | 16 +++------------- src/lib/ffmpeg_content.h | 11 +++-------- src/lib/ffmpeg_decoder.cc | 2 +- src/lib/film.cc | 6 ------ src/lib/film.h | 1 - src/lib/imagemagick_decoder.h | 12 ------------ src/lib/playlist.cc | 22 ---------------------- src/lib/playlist.h | 1 - src/lib/sndfile_content.h | 4 ---- 11 files changed, 17 insertions(+), 73 deletions(-) diff --git a/src/lib/audio_content.h b/src/lib/audio_content.h index d5dbf266b..dbd55943d 100644 --- a/src/lib/audio_content.h +++ b/src/lib/audio_content.h @@ -45,8 +45,6 @@ public: virtual int audio_channels () const = 0; virtual ContentAudioFrame audio_length () const = 0; virtual int audio_frame_rate () const = 0; - virtual int64_t audio_channel_layout () const = 0; - }; #endif diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index 46d11c556..b897c8a31 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -86,13 +86,20 @@ Encoder::process_begin () s << String::compose (N_("Will resample audio from %1 to %2"), _film->audio_frame_rate(), _film->target_audio_sample_rate()); _film->log()->log (s.str ()); - /* We will be using planar float data when we call the resampler */ + /* 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, - _film->audio_channel_layout(), + av_get_default_channel_layout (_film->audio_channels ()), AV_SAMPLE_FMT_FLTP, _film->target_audio_sample_rate(), - _film->audio_channel_layout(), + av_get_default_channel_layout (_film->audio_channels ()), AV_SAMPLE_FMT_FLTP, _film->audio_frame_rate(), 0, 0 diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc index 0424fbc33..577dbd14d 100644 --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@ -216,7 +216,7 @@ FFmpegContent::audio_channels () const return 0; } - return _audio_stream->channels (); + return _audio_stream->channels; } int @@ -229,16 +229,6 @@ FFmpegContent::audio_frame_rate () const return _audio_stream->frame_rate; } -int64_t -FFmpegContent::audio_channel_layout () const -{ - if (!_audio_stream) { - return 0; - } - - return _audio_stream->channel_layout; -} - bool operator== (FFmpegSubtitleStream const & a, FFmpegSubtitleStream const & b) { @@ -256,7 +246,7 @@ FFmpegAudioStream::FFmpegAudioStream (shared_ptr node) name = node->string_child ("Name"); id = node->number_child ("Id"); frame_rate = node->number_child ("FrameRate"); - channel_layout = node->number_child ("ChannelLayout"); + channels = node->number_child ("Channels"); } void @@ -265,7 +255,7 @@ FFmpegAudioStream::as_xml (xmlpp::Node* root) const root->add_child("Name")->add_child_text (name); root->add_child("Id")->add_child_text (lexical_cast (id)); root->add_child("FrameRate")->add_child_text (lexical_cast (frame_rate)); - root->add_child("ChannelLayout")->add_child_text (lexical_cast (channel_layout)); + root->add_child("Channels")->add_child_text (lexical_cast (channels)); } /** Construct a SubtitleStream from a value returned from to_string(). diff --git a/src/lib/ffmpeg_content.h b/src/lib/ffmpeg_content.h index cc603e680..b49e5790e 100644 --- a/src/lib/ffmpeg_content.h +++ b/src/lib/ffmpeg_content.h @@ -27,25 +27,21 @@ class FFmpegAudioStream { public: - FFmpegAudioStream (std::string n, int i, int f, int64_t c) + FFmpegAudioStream (std::string n, int i, int f, int c) : name (n) , id (i) , frame_rate (f) - , channel_layout (c) + , channels (c) {} FFmpegAudioStream (boost::shared_ptr); void as_xml (xmlpp::Node *) const; - int channels () const { - return av_get_channel_layout_nb_channels (channel_layout); - } - std::string name; int id; int frame_rate; - int64_t channel_layout; + int channels; }; extern bool operator== (FFmpegAudioStream const & a, FFmpegAudioStream const & b); @@ -98,7 +94,6 @@ public: int audio_channels () const; ContentAudioFrame audio_length () const; int audio_frame_rate () const; - int64_t audio_channel_layout () const; std::vector subtitle_streams () const { boost::mutex::scoped_lock lm (_mutex); diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index d0b1de748..eac1d91ae 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -143,7 +143,7 @@ FFmpegDecoder::setup_general () } _audio_streams.push_back ( - FFmpegAudioStream (stream_name (s), i, s->codec->sample_rate, s->codec->channel_layout) + FFmpegAudioStream (stream_name (s), i, s->codec->sample_rate, s->codec->channels) ); } else if (s->codec->codec_type == AVMEDIA_TYPE_SUBTITLE) { diff --git a/src/lib/film.cc b/src/lib/film.cc index 35a07b399..5f1b89d0c 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -1131,12 +1131,6 @@ Film::audio_frame_rate () const return _playlist->audio_frame_rate (); } -int64_t -Film::audio_channel_layout () const -{ - return _playlist->audio_channel_layout (); -} - bool Film::has_audio () const { diff --git a/src/lib/film.h b/src/lib/film.h index 532d32bdc..4d994996e 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -106,7 +106,6 @@ public: ContentAudioFrame audio_length () const; int audio_channels () const; int audio_frame_rate () const; - int64_t audio_channel_layout () const; bool has_audio () const; float video_frame_rate () const; diff --git a/src/lib/imagemagick_decoder.h b/src/lib/imagemagick_decoder.h index 52c7bec18..40a89bb15 100644 --- a/src/lib/imagemagick_decoder.h +++ b/src/lib/imagemagick_decoder.h @@ -37,18 +37,6 @@ public: libdcp::Size native_size () const; ContentVideoFrame video_length () const; - int audio_channels () const { - return 0; - } - - int audio_sample_rate () const { - return 0; - } - - int64_t audio_channel_layout () const { - return 0; - } - bool seek (double); bool pass (); diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc index 717c1dace..f346cb6e0 100644 --- a/src/lib/playlist.cc +++ b/src/lib/playlist.cc @@ -143,28 +143,6 @@ Playlist::audio_frame_rate () const return 0; } -int64_t -Playlist::audio_channel_layout () const -{ - /* XXX: assuming that all content has the same layout */ - - switch (_audio_from) { - case AUDIO_FFMPEG: - { - shared_ptr fc = first_ffmpeg (); - if (fc) { - return fc->audio_channel_layout (); - } - break; - } - case AUDIO_SNDFILE: - /* XXX */ - return 0; - } - - return 0; -} - float Playlist::video_frame_rate () const { diff --git a/src/lib/playlist.h b/src/lib/playlist.h index 4dd27f675..6384dce1c 100644 --- a/src/lib/playlist.h +++ b/src/lib/playlist.h @@ -47,7 +47,6 @@ public: ContentAudioFrame audio_length () const; int audio_channels () const; int audio_frame_rate () const; - int64_t audio_channel_layout () const; bool has_audio () const; float video_frame_rate () const; diff --git a/src/lib/sndfile_content.h b/src/lib/sndfile_content.h index 27c5f3615..e8e86b603 100644 --- a/src/lib/sndfile_content.h +++ b/src/lib/sndfile_content.h @@ -58,10 +58,6 @@ public: return _audio_frame_rate; } - int64_t audio_channel_layout () const { - return av_get_default_channel_layout (audio_channels ()); - } - static bool valid_file (boost::filesystem::path); private: -- 2.30.2