X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fdcp_video_frame.h;fp=src%2Flib%2Fdcp_video_frame.h;h=e988b663a80493158b552a959d8b8ec09010fea3;hb=420adb1fd2910fd24eb84be98169afc209f76a0e;hp=c0eff3f358a2581565266c4b37695577e1831a76;hpb=742f0fb10fb38a73d517e2a8870cd03ebefefa20;p=dcpomatic.git diff --git a/src/lib/dcp_video_frame.h b/src/lib/dcp_video_frame.h index c0eff3f35..e988b663a 100644 --- a/src/lib/dcp_video_frame.h +++ b/src/lib/dcp_video_frame.h @@ -26,7 +26,7 @@ */ class FilmState; -class EncodeOptions; +class Film; class ServerDescription; class Scaler; class Image; @@ -39,18 +39,16 @@ class Subtitle; class EncodedData { public: - /** @param d Data (will not be freed by this class, but may be by subclasses) - * @param s libdcp::Size of data, in bytes. - */ - EncodedData (uint8_t* d, int s) - : _data (d) - , _size (s) - {} + /** @param s Size of data, in bytes */ + EncodedData (int s); + + EncodedData (std::string f); - virtual ~EncodedData () {} + virtual ~EncodedData (); void send (boost::shared_ptr socket); - void write (boost::shared_ptr, SourceFrame); + void write (boost::shared_ptr, int) const; + void write_hash (boost::shared_ptr, int) const; /** @return data */ uint8_t* data () const { @@ -65,6 +63,10 @@ public: protected: uint8_t* _data; ///< data int _size; ///< data size in bytes + +private: + /* No copy construction */ + EncodedData (EncodedData const &); }; /** @class LocallyEncodedData @@ -75,12 +77,10 @@ protected: class LocallyEncodedData : public EncodedData { public: - /** @param d Data (which will not be freed by this class) - * @param s libdcp::Size of data, in bytes. + /** @param d Data (which will be copied by this class) + * @param s Size of data, in bytes. */ - LocallyEncodedData (uint8_t* d, int s) - : EncodedData (d, s) - {} + LocallyEncodedData (uint8_t* d, int s); }; /** @class RemotelyEncodedData @@ -91,7 +91,6 @@ class RemotelyEncodedData : public EncodedData { public: RemotelyEncodedData (int s); - ~RemotelyEncodedData (); }; /** @class DCPVideoFrame @@ -108,7 +107,7 @@ class DCPVideoFrame public: DCPVideoFrame ( boost::shared_ptr, boost::shared_ptr, libdcp::Size, - int, int, float, Scaler const *, SourceFrame, float, std::string, int, int, Log * + int, int, float, Scaler const *, int, float, std::string, int, int, Log * ); virtual ~DCPVideoFrame (); @@ -116,7 +115,7 @@ public: boost::shared_ptr encode_locally (); boost::shared_ptr encode_remotely (ServerDescription const *); - SourceFrame frame () const { + int frame () const { return _frame; } @@ -125,12 +124,12 @@ private: boost::shared_ptr _input; ///< the input image boost::shared_ptr _subtitle; ///< any subtitle that should be on the image - libdcp::Size _out_size; ///< the required size of the output, in pixels + libdcp::Size _out_size; ///< the required size of the output, in pixels int _padding; int _subtitle_offset; float _subtitle_scale; Scaler const * _scaler; ///< scaler to use - SourceFrame _frame; ///< frame index within the Film's source + int _frame; ///< frame index within the DCP's intrinsic duration int _frames_per_second; ///< Frames per second that we will use for the DCP (rounded) std::string _post_process; ///< FFmpeg post-processing string to use int _colour_lut; ///< Colour look-up table to use