Add duration, starting off as intrinsic_duration but changeable.
authorCarl Hetherington <cth@carlh.net>
Thu, 17 Jan 2013 20:26:06 +0000 (20:26 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 17 Jan 2013 20:26:06 +0000 (20:26 +0000)
src/mxf_asset.cc
src/mxf_asset.h
src/picture_asset.cc
src/sound_asset.cc

index 338d125f3726fcfdf7a227c1e0fbc6f0897b3875..77e4b098910d65395242bb54fdea4db7eea103e9 100644 (file)
@@ -42,6 +42,7 @@ MXFAsset::MXFAsset (string directory, string file_name, boost::signals2::signal<
        , _fps (fps)
        , _entry_point (0)
        , _intrinsic_duration (intrinsic_duration)
+       , _duration (intrinsic_duration)
 {
        
 }
@@ -52,6 +53,12 @@ MXFAsset::set_entry_point (int e)
        _entry_point = e;
 }
 
+void
+MXFAsset::set_duration (int d)
+{
+       _duration = d;
+}
+
 void
 MXFAsset::fill_writer_info (ASDCP::WriterInfo* writer_info) const
 {
@@ -89,6 +96,11 @@ MXFAsset::equals (shared_ptr<const Asset> other, EqualityOptions, list<string>&
                return false;
        }
 
+       if (_duration != other_mxf->_duration) {
+               notes.push_back ("MXF durations differ");
+               return false;
+       }
+       
        return true;
 }
 
index 10049232fae6409590ccf74c6b31cfdcfe6b2fb9..9526135382d6adad966e745603fe8dcc5e0a77b5 100644 (file)
@@ -40,6 +40,7 @@ public:
        MXFAsset (std::string directory, std::string file_name, boost::signals2::signal<void (float)>* progress, int fps, int intrinsic_duration);
 
        void set_entry_point (int e);
+       void set_duration (int d);
 
        virtual bool equals (boost::shared_ptr<const Asset> other, EqualityOptions opt, std::list<std::string>& notes) const;
        
@@ -55,9 +56,12 @@ protected:
        boost::signals2::signal<void (float)>* _progress;
        /** Frames per second */
        int _fps;
+       /** Start point to present in frames */
        int _entry_point;
        /** Total length in frames */
        int _intrinsic_duration;
+       /** Length to present in frames */
+       int _duration;
 };
 
 }
index 905f75f56ef0f4af9f8e21b54805584b79a3b31d..3058c13d67bf77bfacc0a8c10af4fb72ef0bbb5d 100644 (file)
@@ -60,8 +60,8 @@ PictureAsset::write_to_cpl (ostream& s) const
          << "          <AnnotationText>" << _file_name << "</AnnotationText>\n"
          << "          <EditRate>" << _fps << " 1</EditRate>\n"
          << "          <IntrinsicDuration>" << _intrinsic_duration << "</IntrinsicDuration>\n"
-         << "          <EntryPoint>0</EntryPoint>\n"
-         << "          <Duration>" << _intrinsic_duration << "</Duration>\n"
+         << "          <EntryPoint>" << _entry_point << "</EntryPoint>\n"
+         << "          <Duration>" << _duration << "</Duration>\n"
          << "          <FrameRate>" << _fps << " 1</FrameRate>\n"
          << "          <ScreenAspectRatio>" << _size.width << " " << _size.height << "</ScreenAspectRatio>\n"
          << "        </MainPicture>\n";
index 071326657f364d2d8abb2f8049ef5fad73f36631..7abd20370d2908b7308c1559d0bd3c93144badbb 100644 (file)
@@ -214,8 +214,8 @@ SoundAsset::write_to_cpl (ostream& s) const
          << "          <AnnotationText>" << _file_name << "</AnnotationText>\n"
          << "          <EditRate>" << _fps << " 1</EditRate>\n"
          << "          <IntrinsicDuration>" << _intrinsic_duration << "</IntrinsicDuration>\n"
-         << "          <EntryPoint>0</EntryPoint>\n"
-         << "          <Duration>" << _intrinsic_duration << "</Duration>\n"
+         << "          <EntryPoint>" << _entry_point << "</EntryPoint>\n"
+         << "          <Duration>" << _duration << "</Duration>\n"
          << "        </MainSound>\n";
 }