+class SoundFrame;
+class SoundAsset;
+
+class SoundAssetWriter
+{
+public:
+ ~SoundAssetWriter ();
+
+ void write (float const * const *, int);
+ void finalize ();
+
+private:
+ friend class 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<ASDCPState> _state;
+
+ SoundAsset* _asset;
+ bool _finalized;
+ int _frames_written;
+ int _frame_buffer_offset;
+ MXFMetadata _metadata;
+};