X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fsound_asset.h;h=5c230e06848805ab114bc032a734a32983d78d54;hb=1368dfded40e5a774a73e2256e214bcaf4e74866;hp=17767b3a04fe4bf52047dcfb67c5f396bed232bb;hpb=6a5bb039b3bfd508cc87b6b15102b9eb60c62f8d;p=libdcp.git diff --git a/src/sound_asset.h b/src/sound_asset.h index 17767b3a..5c230e06 100644 --- a/src/sound_asset.h +++ b/src/sound_asset.h @@ -24,15 +24,14 @@ * @brief An asset made up of PCM audio data files */ -#include "AS_DCP.h" #include "mxf_asset.h" #include "types.h" +#include "metadata.h" namespace libdcp { class SoundFrame; - class SoundAsset; class SoundAssetWriter @@ -46,17 +45,26 @@ public: private: friend class SoundAsset; - SoundAssetWriter (SoundAsset *); + SoundAssetWriter (SoundAsset *, MXFMetadata const &); + + /* no copy construction */ + SoundAssetWriter (SoundAssetWriter const &); + SoundAssetWriter& operator= (SoundAssetWriter const &); + void write_current_frame (); + /* do this with an opaque pointer so we don't have to include + ASDCP headers + */ + + struct ASDCPState; + boost::shared_ptr _state; + SoundAsset* _asset; bool _finalized; int _frames_written; int _frame_buffer_offset; - ASDCP::PCM::MXFWriter _mxf_writer; - ASDCP::PCM::FrameBuffer _frame_buffer; - ASDCP::WriterInfo _writer_info; - ASDCP::PCM::AudioDescriptor _audio_desc; + MXFMetadata _metadata; }; /** @brief An asset made up of WAV files */ @@ -71,7 +79,6 @@ public: * @param progress Signal to inform of progress. * @param fps Frames per second. * @param intrinsic_duration Length of the whole asset in frames. - * @param start_frame Frame in the source to start writing from. * Note that this is different to entry_point in that the asset will contain no data before start_frame. */ SoundAsset ( @@ -81,7 +88,7 @@ public: boost::signals2::signal* progress, int fps, int intrinsic_duration, - int start_frame + MXFMetadata const & metadata = MXFMetadata () ); /** Construct a SoundAsset, generating the MXF from some WAV files. @@ -92,8 +99,6 @@ public: * @param progress Signal to inform of progress. * @param fps Frames per second. * @param intrinsic_duration Length of the whole asset in frames. - * @param start_frame Frame in the source to start writing from. - * Note that this is different to entry_point in that the asset will contain no data before start_frame. * @param channels Number of audio channels. */ SoundAsset ( @@ -103,8 +108,8 @@ public: boost::signals2::signal* progress, int fps, int intrinsic_duration, - int start_frame, - int channels + int channels, + MXFMetadata const & metadata = MXFMetadata () ); SoundAsset ( @@ -120,14 +125,14 @@ public: int sampling_rate ); - boost::shared_ptr start_write (); + boost::shared_ptr start_write (MXFMetadata const & metadata = MXFMetadata ()); /** Write details of this asset to a CPL stream. * @param s Stream. */ void write_to_cpl (std::ostream& s) const; - bool equals (boost::shared_ptr other, EqualityOptions opt, std::list& notes) const; + bool equals (boost::shared_ptr other, EqualityOptions opt, boost::function note) const; boost::shared_ptr get_frame (int n) const; @@ -140,13 +145,12 @@ public: } private: - void construct (boost::function get_path); + void construct (boost::function get_path, MXFMetadata const &); std::string path_from_channel (Channel channel, std::vector const & files); /** Number of channels in the asset */ int _channels; int _sampling_rate; - int _start_frame; }; }