}
string
-PictureAsset::cpl_node_name () const
+MonoPictureAsset::cpl_node_name () const
{
return "MainPicture";
}
+int
+MonoPictureAsset::edit_rate_factor () const
+{
+ return 1;
+}
+
+string
+StereoPictureAsset::cpl_node_name () const
+{
+ return "MainStereoscopicPicture";
+}
+
+int
+StereoPictureAsset::edit_rate_factor () const
+{
+ return 2;
+}
+
void
PictureAsset::write_to_cpl (xmlpp::Node* node) const
{
assert (i != c.end ());
- (*i)->add_child ("FrameRate")->add_child_text (lexical_cast<string> (_edit_rate) + " 1");
+ (*i)->add_child ("FrameRate")->add_child_text (lexical_cast<string> (_edit_rate * edit_rate_factor ()) + " 1");
(*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (_size.width) + " " + lexical_cast<string> (_size.height));
}
private:
std::string key_type () const;
- std::string cpl_node_name () const;
+ std::string cpl_node_name () const = 0;
+ virtual int edit_rate_factor () const = 0;
};
-class MonoPictureAsset;
-
-
/** A 2D (monoscopic) picture asset */
class MonoPictureAsset : public PictureAsset
{
private:
std::string path_from_list (int f, std::vector<std::string> const & files) const;
void construct (boost::function<std::string (int)>, MXFMetadata const &);
+ std::string cpl_node_name () const;
+ int edit_rate_factor () const;
};
/** A 3D (stereoscopic) picture asset */
boost::shared_ptr<const StereoPictureFrame> get_frame (int n) const;
bool equals (boost::shared_ptr<const Asset> other, EqualityOptions opt, boost::function<void (NoteType, std::string)> note) const;
+
+private:
+ std::string cpl_node_name () const;
+ int edit_rate_factor () const;
};
boost::throw_exception (MXFFileError ("error in writing video MXF", _asset->path().string()));
}
- ++_frames_written;
return FrameInfo (before_offset, _state->mxf_writer.Tell() - before_offset, hash);
}
}
_finalized = true;
- _asset->set_intrinsic_duration (_frames_written);
- _asset->set_duration (_frames_written);
+ _asset->set_intrinsic_duration (_frames_written / 2);
+ _asset->set_duration (_frames_written / 2);
}