X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Freel_writer.h;h=783981b5d682db7332cd3c90867ecb8f7bec82d6;hb=refs%2Fheads%2Fsplit;hp=bee76ded3fd65b5fb6cbe7272d98c8ad2a3a7cd4;hpb=8a8c977c12fc65f1f50ea05099387e0fc8840e7d;p=dcpomatic.git diff --git a/src/lib/reel_writer.h b/src/lib/reel_writer.h index bee76ded3..783981b5d 100644 --- a/src/lib/reel_writer.h +++ b/src/lib/reel_writer.h @@ -18,43 +18,44 @@ */ + #include "atmos_metadata.h" -#include "types.h" +#include "dcp_text_track.h" #include "dcpomatic_time.h" -#include "referenced_reel_asset.h" +#include "enum_indexed_vector.h" +#include "font_id_map.h" #include "player_text.h" -#include "dcp_text_track.h" +#include "referenced_reel_asset.h" +#include "render_text.h" #include "weak_film.h" #include #include #include -namespace dcpomatic { - class FontData; -} -class Film; -class Job; class AudioBuffers; +class Film; class InfoFileHandle; +class Job; struct write_frame_info_test; namespace dcp { + class AtmosAsset; class MonoPictureAsset; class MonoPictureAssetWriter; - class StereoPictureAsset; - class StereoPictureAssetWriter; class PictureAsset; class PictureAssetWriter; - class SoundAsset; - class SoundAssetWriter; - class SubtitleAsset; - class AtmosAsset; - class ReelAsset; class Reel; + class ReelAsset; class ReelPictureAsset; + class SoundAsset; + class SoundAssetWriter; + class StereoPictureAsset; + class StereoPictureAssetWriter; + class TextAsset; } + class ReelWriter : public WeakConstFilm { public: @@ -71,18 +72,17 @@ public: void fake_write (int size); void repeat_write (Frame frame, Eyes eyes); void write (std::shared_ptr audio); - void write (PlayerText text, TextType type, boost::optional track, dcpomatic::DCPTimePeriod period); + void write(PlayerText text, TextType type, boost::optional track, dcpomatic::DCPTimePeriod period, FontIdMap const& fonts, std::shared_ptr chosen_interop_font); void write (std::shared_ptr atmos, AtmosMetadata metadata); void finish (boost::filesystem::path output_dcp); std::shared_ptr create_reel ( std::list const & refs, - std::vector const & fonts, boost::filesystem::path output_dcp, bool ensure_subtitles, std::set ensure_closed_captions ); - void calculate_digests (std::function set_progress); + void calculate_digests(std::function set_progress); Frame start () const; @@ -90,8 +90,8 @@ public: return _period; } - int first_nonexistant_frame () const { - return _first_nonexistant_frame; + int first_nonexistent_frame () const { + return _first_nonexistent_frame; } dcp::FrameInfo read_frame_info (std::shared_ptr info, Frame frame, Eyes eyes) const; @@ -104,26 +104,26 @@ private: long frame_info_position (Frame frame, Eyes eyes) const; Frame check_existing_picture_asset (boost::filesystem::path asset); bool existing_picture_frame_ok (dcp::File& asset_file, std::shared_ptr info_file, Frame frame) const; - std::shared_ptr empty_text_asset (TextType type, boost::optional track, bool with_dummy) const; + std::shared_ptr empty_text_asset(TextType type, boost::optional track, bool with_dummy) const; std::shared_ptr create_reel_picture (std::shared_ptr reel, std::list const & refs) const; void create_reel_sound (std::shared_ptr reel, std::list const & refs) const; void create_reel_text ( std::shared_ptr reel, std::list const & refs, - std::vector const& fonts, int64_t duration, boost::filesystem::path output_dcp, bool ensure_subtitles, std::set ensure_closed_captions ) const; void create_reel_markers (std::shared_ptr reel) const; + float convert_vertical_position(StringText const& subtitle, dcp::TextStandard to) const; dcpomatic::DCPTimePeriod _period; /** the first picture frame index that does not already exist in our MXF */ - int _first_nonexistant_frame; + int _first_nonexistent_frame; /** the data of the last written frame, if there is one */ - std::shared_ptr _last_written[static_cast(Eyes::COUNT)]; + EnumIndexedVector, Eyes> _last_written; /** index of this reel within the DCP (starting from 0) */ int _reel_index; /** number of reels in the DCP */ @@ -139,10 +139,12 @@ private: std::shared_ptr _picture_asset_writer; std::shared_ptr _sound_asset; std::shared_ptr _sound_asset_writer; - std::shared_ptr _subtitle_asset; - std::map> _closed_caption_assets; + std::shared_ptr _subtitle_asset; + std::map> _closed_caption_assets; std::shared_ptr _atmos_asset; std::shared_ptr _atmos_asset_writer; + mutable FontMetrics _font_metrics; + static int const _info_size; };