diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-05-26 01:26:21 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-05-26 01:26:21 +0100 |
| commit | 951a81dbb75db9850ee0226f74a575af7335a576 (patch) | |
| tree | d24f9012b41edfb1315ddb51a15250578f62dbb9 /src/lib | |
| parent | ecbfa72a19756eab3fb1e3b0a9c5cab1c0b2ed39 (diff) | |
Improve audio mapping handling a bit.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/audio_content.cc | 3 | ||||
| -rw-r--r-- | src/lib/audio_content.h | 2 | ||||
| -rw-r--r-- | src/lib/audio_mapping.h | 2 | ||||
| -rw-r--r-- | src/lib/ffmpeg_content.cc | 6 | ||||
| -rw-r--r-- | src/lib/ffmpeg_content.h | 1 | ||||
| -rw-r--r-- | src/lib/null_content.h | 2 | ||||
| -rw-r--r-- | src/lib/sndfile_content.cc | 19 | ||||
| -rw-r--r-- | src/lib/sndfile_content.h | 4 |
8 files changed, 31 insertions, 8 deletions
diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index 607e71c50..fb196c776 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -1,5 +1,3 @@ -/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */ - /* Copyright (C) 2013 Carl Hetherington <cth@carlh.net> @@ -31,6 +29,7 @@ int const AudioContentProperty::AUDIO_LENGTH = 201; int const AudioContentProperty::AUDIO_FRAME_RATE = 202; int const AudioContentProperty::AUDIO_GAIN = 203; int const AudioContentProperty::AUDIO_DELAY = 204; +int const AudioContentProperty::AUDIO_MAPPING = 205; AudioContent::AudioContent (shared_ptr<const Film> f, Time s) : Content (f, s) diff --git a/src/lib/audio_content.h b/src/lib/audio_content.h index 0c5287eaf..8fc658a76 100644 --- a/src/lib/audio_content.h +++ b/src/lib/audio_content.h @@ -37,6 +37,7 @@ public: static int const AUDIO_FRAME_RATE; static int const AUDIO_GAIN; static int const AUDIO_DELAY; + static int const AUDIO_MAPPING; }; class AudioContent : public virtual Content @@ -54,6 +55,7 @@ public: virtual int content_audio_frame_rate () const = 0; virtual int output_audio_frame_rate () const = 0; virtual AudioMapping audio_mapping () const = 0; + virtual void set_audio_mapping (AudioMapping) = 0; void set_audio_gain (float); void set_audio_delay (int); diff --git a/src/lib/audio_mapping.h b/src/lib/audio_mapping.h index 7d76e4f5a..a2de8306b 100644 --- a/src/lib/audio_mapping.h +++ b/src/lib/audio_mapping.h @@ -1,5 +1,3 @@ -/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */ - /* Copyright (C) 2013 Carl Hetherington <cth@carlh.net> diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc index 55139ca56..d912ee418 100644 --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@ -357,3 +357,9 @@ FFmpegContent::set_filters (vector<Filter const *> const & filters) signal_changed (FFmpegContentProperty::FILTERS); } +void +FFmpegContent::set_audio_mapping (AudioMapping m) +{ + audio_stream()->mapping = m; + signal_changed (AudioContentProperty::AUDIO_MAPPING); +} diff --git a/src/lib/ffmpeg_content.h b/src/lib/ffmpeg_content.h index 8f5c773ee..c94b1937c 100644 --- a/src/lib/ffmpeg_content.h +++ b/src/lib/ffmpeg_content.h @@ -104,6 +104,7 @@ public: int content_audio_frame_rate () const; int output_audio_frame_rate () const; AudioMapping audio_mapping () const; + void set_audio_mapping (AudioMapping); void set_filters (std::vector<Filter const *> const &); diff --git a/src/lib/null_content.h b/src/lib/null_content.h index f8829658c..889ff7a0d 100644 --- a/src/lib/null_content.h +++ b/src/lib/null_content.h @@ -54,6 +54,8 @@ public: AudioMapping audio_mapping () const { return AudioMapping (); } + + void set_audio_mapping (AudioMapping) {} Time length () const { return _length; diff --git a/src/lib/sndfile_content.cc b/src/lib/sndfile_content.cc index a80c7dbe5..8eede89f4 100644 --- a/src/lib/sndfile_content.cc +++ b/src/lib/sndfile_content.cc @@ -1,5 +1,3 @@ -/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */ - /* Copyright (C) 2013 Carl Hetherington <cth@carlh.net> @@ -50,6 +48,7 @@ SndfileContent::SndfileContent (shared_ptr<const Film> f, shared_ptr<const cxml: _audio_channels = node->number_child<int> ("AudioChannels"); _audio_length = node->number_child<ContentAudioFrame> ("AudioLength"); _audio_frame_rate = node->number_child<int> ("AudioFrameRate"); + _audio_mapping = AudioMapping (node->node_child ("AudioMapping")); } string @@ -113,6 +112,10 @@ SndfileContent::examine (shared_ptr<Job> job) signal_changed (AudioContentProperty::AUDIO_CHANNELS); signal_changed (AudioContentProperty::AUDIO_LENGTH); signal_changed (AudioContentProperty::AUDIO_FRAME_RATE); + + /* XXX: do this in signal_changed...? */ + _audio_mapping = AudioMapping (_audio_channels); + signal_changed (AudioContentProperty::AUDIO_MAPPING); } void @@ -124,6 +127,7 @@ SndfileContent::as_xml (xmlpp::Node* node) const node->add_child("AudioChannels")->add_child_text (lexical_cast<string> (_audio_channels)); node->add_child("AudioLength")->add_child_text (lexical_cast<string> (_audio_length)); node->add_child("AudioFrameRate")->add_child_text (lexical_cast<string> (_audio_frame_rate)); + _audio_mapping.as_xml (node->add_child("AudioMapping")); } Time @@ -143,3 +147,14 @@ SndfileContent::output_audio_frame_rate () const return film->dcp_audio_frame_rate (); } + +void +SndfileContent::set_audio_mapping (AudioMapping m) +{ + { + boost::mutex::scoped_lock lm (_mutex); + _audio_mapping = m; + } + + signal_changed (AudioContentProperty::AUDIO_MAPPING); +} diff --git a/src/lib/sndfile_content.h b/src/lib/sndfile_content.h index 17423b8ed..30eb23a4e 100644 --- a/src/lib/sndfile_content.h +++ b/src/lib/sndfile_content.h @@ -1,5 +1,3 @@ -/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */ - /* Copyright (C) 2013 Carl Hetherington <cth@carlh.net> @@ -67,6 +65,8 @@ public: boost::mutex::scoped_lock lm (_mutex); return _audio_mapping; } + + void set_audio_mapping (AudioMapping); static bool valid_file (boost::filesystem::path); |
