From e82a4c81fe8bb3c3c6b68c667bda2f32fed4e68d Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 1 Aug 2018 21:47:26 +0100 Subject: [PATCH] Force audio content to be on a sample boundary. --- src/lib/audio_content.cc | 12 ++++++++++++ src/lib/audio_content.h | 3 +++ src/lib/content.cc | 14 ++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index a252e4b5a..7f0ec1fd6 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -395,3 +395,15 @@ AudioContent::take_settings_from (shared_ptr c) ++j; } } + +void +AudioContent::modify_position (DCPTime& pos) const +{ + pos = pos.round (_parent->film()->audio_frame_rate()); +} + +void +AudioContent::modify_trim_start (ContentTime& trim) const +{ + trim = trim.round (stream()->frame_rate()); +} diff --git a/src/lib/audio_content.h b/src/lib/audio_content.h index a1f5ba8a0..eec67b201 100644 --- a/src/lib/audio_content.h +++ b/src/lib/audio_content.h @@ -83,6 +83,9 @@ public: void add_properties (std::list &) const; + void modify_position (DCPTime& pos) const; + void modify_trim_start (ContentTime& pos) const; + static boost::shared_ptr from_xml (Content* parent, cxml::ConstNodePtr, int version); private: diff --git a/src/lib/content.cc b/src/lib/content.cc index c1812b9fd..9b16eff7f 100644 --- a/src/lib/content.cc +++ b/src/lib/content.cc @@ -191,11 +191,16 @@ Content::signal_changed (int p) void Content::set_position (DCPTime p) { - /* video content can modify its position */ + /* video and audio content can modify its position */ + if (video) { video->modify_position (p); } + if (audio) { + audio->modify_position (p); + } + { boost::mutex::scoped_lock lm (_mutex); if (p == _position) { @@ -211,11 +216,16 @@ Content::set_position (DCPTime p) void Content::set_trim_start (ContentTime t) { - /* video content can modify its start trim */ + /* video and audio content can modify its start trim */ + if (video) { video->modify_trim_start (t); } + if (audio) { + audio->modify_trim_start (t); + } + { boost::mutex::scoped_lock lm (_mutex); _trim_start = t; -- 2.30.2