diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-04-18 22:40:22 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-04-20 22:11:33 +0200 |
| commit | fdb36750a09e3bba3d10fe5102e39a62eda68ea6 (patch) | |
| tree | f65fea53ea0638faca28d2840759ea40b9901557 /src/lib/audio_content.cc | |
| parent | 040889631af47829e8523742bb828788e8f7e138 (diff) | |
Add button to use same fades for audio as video (#2230).
Diffstat (limited to 'src/lib/audio_content.cc')
| -rw-r--r-- | src/lib/audio_content.cc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index ad8d7df0f..5098e8489 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -26,6 +26,7 @@ #include "film.h" #include "frame_rate_change.h" #include "maths_util.h" +#include "video_content.h" #include <dcp/raw_convert.h> #include <libcxml/cxml.h> #include <libxml++/libxml++.h> @@ -55,6 +56,7 @@ int const AudioContentProperty::GAIN = 201; int const AudioContentProperty::DELAY = 202; int const AudioContentProperty::FADE_IN = 203; int const AudioContentProperty::FADE_OUT = 204; +int const AudioContentProperty::USE_SAME_FADES_AS_VIDEO = 205; AudioContent::AudioContent (Content* parent) @@ -94,6 +96,7 @@ AudioContent::AudioContent (Content* parent, cxml::ConstNodePtr node) _delay = node->number_child<int> ("AudioDelay"); _fade_in = ContentTime(node->optional_number_child<ContentTime::Type>("AudioFadeIn").get_value_or(0)); _fade_out = ContentTime(node->optional_number_child<ContentTime::Type>("AudioFadeOut").get_value_or(0)); + _use_same_fades_as_video = node->optional_bool_child("AudioUseSameFadesAsVideo").get_value_or(false); /* Backwards compatibility */ auto r = node->optional_number_child<double>("AudioVideoFrameRate"); @@ -133,6 +136,7 @@ AudioContent::as_xml (xmlpp::Node* node) const node->add_child("AudioDelay")->add_child_text(raw_convert<string>(_delay)); node->add_child("AudioFadeIn")->add_child_text(raw_convert<string>(_fade_in.get())); node->add_child("AudioFadeOut")->add_child_text(raw_convert<string>(_fade_out.get())); + node->add_child("AudioUseSameFadesAsVideo")->add_child_text(_use_same_fades_as_video ? "1" : "0"); } @@ -428,6 +432,30 @@ AudioContent::modify_trim_start (ContentTime& trim) const } +ContentTime +AudioContent::fade_in () const +{ + boost::mutex::scoped_lock lm (_mutex); + if (_use_same_fades_as_video && _parent->video) { + return dcpomatic::ContentTime::from_frames(_parent->video->fade_in(), _parent->video_frame_rate().get_value_or(24)); + } + + return _fade_in; +} + + +ContentTime +AudioContent::fade_out () const +{ + boost::mutex::scoped_lock lm (_mutex); + if (_use_same_fades_as_video && _parent->video) { + return dcpomatic::ContentTime::from_frames(_parent->video->fade_out(), _parent->video_frame_rate().get_value_or(24)); + } + + return _fade_out; +} + + void AudioContent::set_fade_in (ContentTime t) { @@ -442,6 +470,13 @@ AudioContent::set_fade_out (ContentTime t) } +void +AudioContent::set_use_same_fades_as_video (bool s) +{ + maybe_set (_use_same_fades_as_video, s, AudioContentProperty::USE_SAME_FADES_AS_VIDEO); +} + + vector<float> AudioContent::fade (AudioStreamPtr stream, Frame frame, Frame length, int frame_rate) const { |
