Force audio content to be on a sample boundary.
authorCarl Hetherington <cth@carlh.net>
Wed, 1 Aug 2018 20:47:26 +0000 (21:47 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 1 Aug 2018 20:47:26 +0000 (21:47 +0100)
src/lib/audio_content.cc
src/lib/audio_content.h
src/lib/content.cc

index a252e4b..7f0ec1f 100644 (file)
@@ -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());
+}
index a1f5ba8..eec67b2 100644 (file)
@@ -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:
index c1812b9..9b16eff 100644 (file)
@@ -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;