summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-08-01 21:47:26 +0100
committerCarl Hetherington <cth@carlh.net>2018-08-01 21:47:26 +0100
commite82a4c81fe8bb3c3c6b68c667bda2f32fed4e68d (patch)
tree180bf6ef98312f4241dbdc0234a67206f7458e6b /src/lib
parent8abb560971a256c0cfa9c9a3fe1d88964d593052 (diff)
Force audio content to be on a sample boundary.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/audio_content.cc12
-rw-r--r--src/lib/audio_content.h3
-rw-r--r--src/lib/content.cc14
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<const AudioContent> 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<UserProperty> &) const;
+ void modify_position (DCPTime& pos) const;
+ void modify_trim_start (ContentTime& pos) const;
+
static boost::shared_ptr<AudioContent> 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;