projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use a predictable RNG when adding noise to low-bitrate images.
[dcpomatic.git]
/
src
/
lib
/
writer.h
diff --git
a/src/lib/writer.h
b/src/lib/writer.h
index 71e04df96053c7cf9e7b756421b9e658e925a797..e7409de3117ebc362f4f0507c0e6b3186f362f97 100644
(file)
--- a/
src/lib/writer.h
+++ b/
src/lib/writer.h
@@
-27,9
+27,8
@@
#include "player_text.h"
#include "exception_store.h"
#include "dcp_text_track.h"
#include "player_text.h"
#include "exception_store.h"
#include "dcp_text_track.h"
+#include "weak_film.h"
#include <dcp/atmos_frame.h>
#include <dcp/atmos_frame.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
#include <boost/thread.hpp>
#include <boost/thread/condition.hpp>
#include <list>
#include <boost/thread.hpp>
#include <boost/thread/condition.hpp>
#include <list>
@@
-39,7
+38,7
@@
namespace dcp {
}
namespace dcpomatic {
}
namespace dcpomatic {
- class Font;
+ class Font
Data
;
}
class Film;
}
class Film;
@@
-55,7
+54,7
@@
public:
: size (0)
, reel (0)
, frame (0)
: size (0)
, reel (0)
, frame (0)
- , eyes (E
YES_
BOTH)
+ , eyes (E
yes::
BOTH)
{}
enum Type {
{}
enum Type {
@@
-70,7
+69,7
@@
public:
} type;
/** encoded data for FULL */
} type;
/** encoded data for FULL */
-
boost::optional<
dcp::Data> encoded;
+
std::shared_ptr<const
dcp::Data> encoded;
/** size of data for FAKE */
int size;
/** reel index */
/** size of data for FAKE */
int size;
/** reel index */
@@
-95,26
+94,26
@@
bool operator== (QueueItem const & a, QueueItem const & b);
* will sort it out. write() for AudioBuffers must be called in order.
*/
* will sort it out. write() for AudioBuffers must be called in order.
*/
-class Writer : public ExceptionStore, public boost::noncopyable
+class Writer : public ExceptionStore, public boost::noncopyable
, public WeakConstFilm
{
public:
{
public:
- Writer (
boost::shared_ptr<const Film>, boost::weak_ptr<Job>
);
+ Writer (
std::weak_ptr<const Film>, std::weak_ptr<Job>, bool text_only = false
);
~Writer ();
void start ();
bool can_fake_write (Frame) const;
~Writer ();
void start ();
bool can_fake_write (Frame) const;
- void write (
dcp::Data
, Frame, Eyes);
+ void write (
std::shared_ptr<const dcp::Data>
, Frame, Eyes);
void fake_write (Frame, Eyes);
bool can_repeat (Frame) const;
void repeat (Frame, Eyes);
void fake_write (Frame, Eyes);
bool can_repeat (Frame) const;
void repeat (Frame, Eyes);
- void write (
boost
::shared_ptr<const AudioBuffers>, dcpomatic::DCPTime time);
+ void write (
std
::shared_ptr<const AudioBuffers>, dcpomatic::DCPTime time);
void write (PlayerText text, TextType type, boost::optional<DCPTextTrack>, dcpomatic::DCPTimePeriod period);
void write (PlayerText text, TextType type, boost::optional<DCPTextTrack>, dcpomatic::DCPTimePeriod period);
- void write (std::
list<boost::shared_ptr<dcpomatic::Font>
> fonts);
+ void write (std::
vector<dcpomatic::FontData
> fonts);
void write (ReferencedReelAsset asset);
void write (ReferencedReelAsset asset);
- void write (
boost
::shared_ptr<const dcp::AtmosFrame> atmos, dcpomatic::DCPTime time, AtmosMetadata metadata);
- void finish ();
+ void write (
std
::shared_ptr<const dcp::AtmosFrame> atmos, dcpomatic::DCPTime time, AtmosMetadata metadata);
+ void finish (
boost::filesystem::path output_dcp
);
void set_encoder_threads (int threads);
void set_encoder_threads (int threads);
@@
-124,11
+123,10
@@
private:
bool have_sequenced_image_at_queue_head ();
size_t video_reel (int frame) const;
void set_digest_progress (Job* job, float progress);
bool have_sequenced_image_at_queue_head ();
size_t video_reel (int frame) const;
void set_digest_progress (Job* job, float progress);
- void write_cover_sheet ();
+ void write_cover_sheet (boost::filesystem::path output_dcp);
+ void calculate_referenced_digests (boost::function<void (float)> set_progress);
- /** our Film */
- boost::shared_ptr<const Film> _film;
- boost::weak_ptr<Job> _job;
+ std::weak_ptr<Job> _job;
std::vector<ReelWriter> _reels;
std::vector<ReelWriter>::iterator _audio_reel;
std::vector<ReelWriter>::iterator _subtitle_reel;
std::vector<ReelWriter> _reels;
std::vector<ReelWriter>::iterator _audio_reel;
std::vector<ReelWriter>::iterator _subtitle_reel;
@@
-160,7
+158,7
@@
private:
public:
LastWritten()
: _frame(-1)
public:
LastWritten()
: _frame(-1)
- , _eyes(E
YES_
RIGHT)
+ , _eyes(E
yes::
RIGHT)
{}
/** @return true if qi is the next item after this one */
{}
/** @return true if qi is the next item after this one */
@@
-189,10
+187,17
@@
private:
*/
int _pushed_to_disk;
*/
int _pushed_to_disk;
+ bool _text_only;
+
boost::mutex _digest_progresses_mutex;
std::map<boost::thread::id, float> _digest_progresses;
std::list<ReferencedReelAsset> _reel_assets;
boost::mutex _digest_progresses_mutex;
std::map<boost::thread::id, float> _digest_progresses;
std::list<ReferencedReelAsset> _reel_assets;
- std::list<boost::shared_ptr<dcpomatic::Font> > _fonts;
+ std::vector<dcpomatic::FontData> _fonts;
+
+ /** true if any reel has any subtitles */
+ bool _have_subtitles;
+ /** all closed caption tracks that we have on any reel */
+ std::set<DCPTextTrack> _have_closed_captions;
};
};