summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-04-18 22:40:22 +0200
committerCarl Hetherington <cth@carlh.net>2022-04-20 22:11:33 +0200
commitfdb36750a09e3bba3d10fe5102e39a62eda68ea6 (patch)
treef65fea53ea0638faca28d2840759ea40b9901557 /src/lib
parent040889631af47829e8523742bb828788e8f7e138 (diff)
Add button to use same fades for audio as video (#2230).
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/audio_content.cc35
-rw-r--r--src/lib/audio_content.h14
2 files changed, 40 insertions, 9 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
{
diff --git a/src/lib/audio_content.h b/src/lib/audio_content.h
index ba998a5ad..82a9de041 100644
--- a/src/lib/audio_content.h
+++ b/src/lib/audio_content.h
@@ -44,6 +44,7 @@ public:
static int const DELAY;
static int const FADE_IN;
static int const FADE_OUT;
+ static int const USE_SAME_FADES_AS_VIDEO;
};
@@ -78,18 +79,12 @@ public:
return _delay;
}
- dcpomatic::ContentTime fade_in () const {
- boost::mutex::scoped_lock lm (_mutex);
- return _fade_in;
- }
-
- dcpomatic::ContentTime fade_out () const {
- boost::mutex::scoped_lock lm (_mutex);
- return _fade_out;
- }
+ dcpomatic::ContentTime fade_in () const;
+ dcpomatic::ContentTime fade_out () const;
void set_fade_in (dcpomatic::ContentTime time);
void set_fade_out (dcpomatic::ContentTime time);
+ void set_use_same_fades_as_video (bool s);
std::string processing_description (std::shared_ptr<const Film> film) const;
@@ -125,6 +120,7 @@ private:
int _delay = 0;
dcpomatic::ContentTime _fade_in;
dcpomatic::ContentTime _fade_out;
+ bool _use_same_fades_as_video = false;
std::vector<AudioStreamPtr> _streams;
};