X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Freel_writer.h;h=fff2e0b9ea7568d646b4ef0b18b86e5104757799;hb=f41818f14369f170475b7f2bde1a2dd856517b14;hp=64b62fe228efd769118696289da3896c4eaa960c;hpb=6c19b21e12f73ce63edd406ea617ff25bcc9bfea;p=dcpomatic.git diff --git a/src/lib/reel_writer.h b/src/lib/reel_writer.h index 64b62fe22..fff2e0b9e 100644 --- a/src/lib/reel_writer.h +++ b/src/lib/reel_writer.h @@ -1,32 +1,37 @@ /* - Copyright (C) 2012-2015 Carl Hetherington + Copyright (C) 2012-2018 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ #include "types.h" #include "dcpomatic_time.h" #include "referenced_reel_asset.h" -#include "player_subtitles.h" +#include "player_text.h" +#include "dcp_text_track.h" #include #include +namespace dcpomatic { + class Font; +} + class Film; class Job; -class Font; class AudioBuffers; namespace dcp { @@ -46,28 +51,31 @@ namespace dcp { class ReelWriter { public: - ReelWriter (boost::shared_ptr film, DCPTimePeriod period, boost::shared_ptr job); + ReelWriter ( + boost::shared_ptr film, + dcpomatic::DCPTimePeriod period, + boost::shared_ptr job, + int reel_index, + int reel_count, + boost::optional content_summary + ); void write (boost::optional encoded, Frame frame, Eyes eyes); void fake_write (Frame frame, Eyes eyes, int size); void repeat_write (Frame frame, Eyes eyes); void write (boost::shared_ptr audio); - void write (PlayerSubtitles subs); + 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); - void calculate_digests (boost::shared_ptr job); + 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; } - int total_written_audio_frames () const { - return _total_written_audio_frames; - } - int last_written_video_frame () const { return _last_written_video_frame; } @@ -86,26 +94,31 @@ private: void write_frame_info (Frame frame, Eyes eyes, dcp::FrameInfo info) const; long frame_info_position (Frame frame, Eyes eyes) const; - void check_existing_picture_asset (); + Frame check_existing_picture_asset (); + bool existing_picture_frame_ok (FILE* asset_file, FILE* info_file, Frame frame) const; boost::shared_ptr _film; - DCPTimePeriod _period; - /** the first frame index that does not already exist in our MXF */ + 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 */ boost::optional _last_written[EYES_COUNT]; /** the index of the last written video frame within the reel */ int _last_written_video_frame; Eyes _last_written_eyes; - /** the number of audio frames that have been written to the reel */ - int _total_written_audio_frames; + /** index of this reel within the DCP (starting from 0) */ + int _reel_index; + /** number of reels in the DCP */ + int _reel_count; + boost::optional _content_summary; boost::shared_ptr _picture_asset; boost::shared_ptr _picture_asset_writer; boost::shared_ptr _sound_asset; boost::shared_ptr _sound_asset_writer; boost::shared_ptr _subtitle_asset; + std::map > _closed_caption_assets; static int const _info_size; };