X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Freel_writer.h;h=b96bcfc68de2b19d8f352a123c841354056c71e3;hb=ab0e8cdcafdcb83096012380f674b8280474e851;hp=8007b7f2900231e94f2e4f4f378fb469edea5640;hpb=df17bbd25da69fc38eb2dcd8b4a2531cf0bab0bc;p=dcpomatic.git diff --git a/src/lib/reel_writer.h b/src/lib/reel_writer.h index 8007b7f29..b96bcfc68 100644 --- a/src/lib/reel_writer.h +++ b/src/lib/reel_writer.h @@ -22,13 +22,18 @@ #include "dcpomatic_time.h" #include "referenced_reel_asset.h" #include "player_text.h" +#include "dcp_text_track.h" #include #include +namespace dcpomatic { + class Font; +} + class Film; class Job; -class Font; class AudioBuffers; +struct write_frame_info_test; namespace dcp { class MonoPictureAsset; @@ -49,7 +54,7 @@ class ReelWriter public: ReelWriter ( boost::shared_ptr film, - DCPTimePeriod period, + dcpomatic::DCPTimePeriod period, boost::shared_ptr job, int reel_index, int reel_count, @@ -60,15 +65,15 @@ public: void fake_write (Frame frame, Eyes eyes, int size); void repeat_write (Frame frame, Eyes eyes); void write (boost::shared_ptr audio); - void write (PlayerText text, TextType type, DCPTimePeriod period); + void write (PlayerText text, TextType type, boost::optional track, dcpomatic::DCPTimePeriod period); void finish (); - boost::shared_ptr create_reel (std::list const & refs, std::list > const & fonts); + boost::shared_ptr create_reel (std::list const & refs, std::list > const & fonts); void calculate_digests (boost::function set_progress); Frame start () const; - DCPTimePeriod period () const { + dcpomatic::DCPTimePeriod period () const { return _period; } @@ -88,6 +93,8 @@ public: private: + friend struct ::write_frame_info_test; + void write_frame_info (Frame frame, Eyes eyes, dcp::FrameInfo info) const; long frame_info_position (Frame frame, Eyes eyes) const; Frame check_existing_picture_asset (); @@ -95,7 +102,7 @@ private: boost::shared_ptr _film; - DCPTimePeriod _period; + dcpomatic::DCPTimePeriod _period; /** the first picture frame index that does not already exist in our MXF */ int _first_nonexistant_frame; /** the data of the last written frame, if there is one */ @@ -113,7 +120,8 @@ private: boost::shared_ptr _picture_asset_writer; boost::shared_ptr _sound_asset; boost::shared_ptr _sound_asset_writer; - boost::shared_ptr _caption_asset[CAPTION_COUNT]; + boost::shared_ptr _subtitle_asset; + std::map > _closed_caption_assets; static int const _info_size; };