summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-09-06 00:45:44 +0200
committerCarl Hetherington <cth@carlh.net>2025-09-07 20:04:44 +0200
commit0eadbd860d04cc2322d18046f69e7a9b2cb437f4 (patch)
tree84f39eead37d204cbb80e956122b8f48f001cf42 /src/lib
parent506b98d414e96e53eb56a41ca991b691c8393408 (diff)
Add audio delay option to Config and player prefs.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc4
-rw-r--r--src/lib/config.h13
2 files changed, 17 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 9b5bd34be..af97c7af7 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -115,6 +115,7 @@ Config::set_defaults()
_default_video_bit_rate[VideoEncoding::JPEG2000] = 150000000;
_default_video_bit_rate[VideoEncoding::MPEG2] = 5000000;
_default_audio_delay = 0;
+ _player_audio_delay = 0;
_default_interop = false;
_default_metadata.clear();
_upload_after_make_dcp = false;
@@ -385,6 +386,7 @@ try
}
_default_video_bit_rate[VideoEncoding::MPEG2] = f.optional_number_child<int64_t>("DefaultMPEG2VideoBitRate").get_value_or(5000000);
_default_audio_delay = f.optional_number_child<int>("DefaultAudioDelay").get_value_or(0);
+ _player_audio_delay = f.optional_number_child<int>("PlayerAudioDelay").get_value_or(0);
_default_interop = f.optional_bool_child("DefaultInterop").get_value_or(false);
try {
@@ -812,6 +814,8 @@ Config::write_config() const
cxml::add_text_child(root, "DefaultStillLength", fmt::to_string(_default_still_length));
/* [XML] DefaultAudioDelay Default delay to apply to audio (positive moves audio later) in milliseconds. */
cxml::add_text_child(root, "DefaultAudioDelay", fmt::to_string(_default_audio_delay));
+ /* [XML] PlayerAudioDelay Delay to apply to audio in the player (positive moves audio later) in milliseconds. */
+ cxml::add_text_child(root, "PlayerAudioDelay", fmt::to_string(_player_audio_delay));
if (_default_audio_language) {
/* [XML] DefaultAudioLanguage Default audio language to use for new films */
cxml::add_text_child(root, "DefaultAudioLanguage", _default_audio_language->as_string());
diff --git a/src/lib/config.h b/src/lib/config.h
index 2bc700e86..d8ff70db8 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -254,6 +254,10 @@ public:
return _default_audio_delay;
}
+ int player_audio_delay() const {
+ return _player_audio_delay;
+ }
+
bool default_interop() const {
return _default_interop;
}
@@ -821,6 +825,10 @@ public:
maybe_set(_default_audio_delay, d);
}
+ void set_player_audio_delay(int d) {
+ maybe_set(_player_audio_delay, d);
+ }
+
void set_default_audio_language(dcp::LanguageTag tag) {
maybe_set(_default_audio_language, tag);
}
@@ -1400,7 +1408,12 @@ private:
std::string _dcp_product_version;
std::string _dcp_j2k_comment;
EnumIndexedVector<int64_t, VideoEncoding> _default_video_bit_rate;
+ /** Default audio delay in ms */
int _default_audio_delay;
+ /** Delay for audio (with respect to picture) in the player, in ms.
+ * Can be negative to advance audio.
+ */
+ int _player_audio_delay;
bool _default_interop;
boost::optional<dcp::LanguageTag> _default_audio_language;
boost::optional<dcp::LanguageTag::RegionSubtag> _default_territory;