diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-01-17 21:31:40 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-01-17 21:31:40 +0000 |
| commit | f389d903e967f44a5d6eed60df48bd5a89994bb2 (patch) | |
| tree | 4f53ee5910cad4a75f342ecf242532a52c558c29 /src | |
| parent | bfc511b3e2fae3540db2679bfb4532cf4d1e6d05 (diff) | |
Remove create-by-files method for sound and picture assets.
Diffstat (limited to 'src')
| -rw-r--r-- | src/mono_picture_asset.cc | 54 | ||||
| -rw-r--r-- | src/mono_picture_asset.h | 14 | ||||
| -rw-r--r-- | src/sound_asset.cc | 132 | ||||
| -rw-r--r-- | src/sound_asset.h | 19 |
4 files changed, 0 insertions, 219 deletions
diff --git a/src/mono_picture_asset.cc b/src/mono_picture_asset.cc index 766b72ca..295d8a87 100644 --- a/src/mono_picture_asset.cc +++ b/src/mono_picture_asset.cc @@ -38,60 +38,6 @@ MonoPictureAsset::MonoPictureAsset (boost::filesystem::path directory, boost::fi } void -MonoPictureAsset::create (vector<boost::filesystem::path> const & files) -{ - create (boost::bind (&MonoPictureAsset::path_from_list, this, _1, files)); -} - -void -MonoPictureAsset::create (boost::function<boost::filesystem::path (int)> get_path) -{ - ASDCP::JP2K::CodestreamParser j2k_parser; - ASDCP::JP2K::FrameBuffer frame_buffer (4 * Kumu::Megabyte); - Kumu::Result_t r = j2k_parser.OpenReadFrame (get_path(0).string().c_str(), frame_buffer); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (FileError ("could not open JPEG2000 file for reading", get_path(0), r)); - } - - ASDCP::JP2K::PictureDescriptor picture_desc; - j2k_parser.FillPictureDescriptor (picture_desc); - picture_desc.EditRate = ASDCP::Rational (_edit_rate, 1); - - ASDCP::WriterInfo writer_info; - fill_writer_info (&writer_info); - - ASDCP::JP2K::MXFWriter mxf_writer; - r = mxf_writer.OpenWrite (path().string().c_str(), writer_info, picture_desc, 16384, false); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (MXFFileError ("could not open MXF file for writing", path().string(), r)); - } - - for (int i = 0; i < _intrinsic_duration; ++i) { - - boost::filesystem::path const path = get_path (i); - - Kumu::Result_t r = j2k_parser.OpenReadFrame (path.string().c_str(), frame_buffer); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (FileError ("could not open JPEG2000 file for reading", path, r)); - } - - r = mxf_writer.WriteFrame (frame_buffer, _encryption_context, 0); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (MXFFileError ("error in writing video MXF", this->path().string(), r)); - } - - if (_progress) { - (*_progress) (0.5 * float (i) / _intrinsic_duration); - } - } - - r = mxf_writer.Finalize(); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (MXFFileError ("error in finalising video MXF", path().string(), r)); - } -} - -void MonoPictureAsset::read () { ASDCP::JP2K::MXFReader reader; diff --git a/src/mono_picture_asset.h b/src/mono_picture_asset.h index 00017354..76a1f990 100644 --- a/src/mono_picture_asset.h +++ b/src/mono_picture_asset.h @@ -32,20 +32,6 @@ public: void read (); - /** The following parameters must be set up (if required) before calling this: - * Interop mode (set_interop) - * Edit rate (set_edit_rate) - * MXF Metadata (set_metadata) - */ - void create (std::vector<boost::filesystem::path> const & files); - - /** The following parameters must be set up (if required) before calling this: - * Interop mode (set_interop) - * Edit rate (set_edit_rate) - * MXF Metadata (set_metadata) - */ - void create (boost::function<boost::filesystem::path (int)> get_path); - /** Start a progressive write to a MonoPictureAsset */ boost::shared_ptr<PictureAssetWriter> start_write (bool); diff --git a/src/sound_asset.cc b/src/sound_asset.cc index 602f036c..5a1ce06b 100644 --- a/src/sound_asset.cc +++ b/src/sound_asset.cc @@ -51,12 +51,6 @@ SoundAsset::SoundAsset (boost::filesystem::path directory, boost::filesystem::pa } void -SoundAsset::create (vector<boost::filesystem::path> const & files) -{ - create (boost::bind (&SoundAsset::path_from_channel, this, _1, files)); -} - -void SoundAsset::read () { ASDCP::PCM::MXFReader reader; @@ -77,132 +71,6 @@ SoundAsset::read () _intrinsic_duration = desc.ContainerDuration; } -boost::filesystem::path -SoundAsset::path_from_channel (Channel channel, vector<boost::filesystem::path> const & files) -{ - unsigned int const c = int (channel); - assert (c < files.size ()); - return files[c]; -} - -void -SoundAsset::create (boost::function<boost::filesystem::path (Channel)> get_path) -{ - ASDCP::Rational asdcp_edit_rate (_edit_rate, 1); - - assert (_channels > 0); - ASDCP::PCM::WAVParser* pcm_parser_channel[_channels]; - for (int i = 0; i < _channels; ++i) { - pcm_parser_channel[i] = new ASDCP::PCM::WAVParser (); - } - - Kumu::Result_t r = pcm_parser_channel[0]->OpenRead (get_path(LEFT).string().c_str(), asdcp_edit_rate); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (FileError ("could not open WAV file for reading", get_path(LEFT), r)); - } - - ASDCP::PCM::AudioDescriptor audio_desc; - pcm_parser_channel[0]->FillAudioDescriptor (audio_desc); - audio_desc.ChannelCount = 0; - audio_desc.BlockAlign = 0; - audio_desc.EditRate = asdcp_edit_rate; - audio_desc.AvgBps = audio_desc.AvgBps * _channels; - - Channel channels[] = { - LEFT, - RIGHT, - CENTRE, - LFE, - LS, - RS, - /* XXX: not quite sure what these should be yet */ - CHANNEL_7, - CHANNEL_8 - }; - - assert (int(_channels) <= int(sizeof(channels) / sizeof(Channel))); - - ASDCP::PCM::FrameBuffer* frame_buffer_channel[_channels]; - ASDCP::PCM::AudioDescriptor* audio_desc_channel[_channels]; - for (int i = 0; i < _channels; ++i) { - frame_buffer_channel[i] = new ASDCP::PCM::FrameBuffer (); - audio_desc_channel[i] = new ASDCP::PCM::AudioDescriptor (); - } - - for (int i = 0; i < _channels; ++i) { - - boost::filesystem::path const path = get_path (channels[i]); - - Kumu::Result_t r = pcm_parser_channel[i]->OpenRead (path.string().c_str(), asdcp_edit_rate); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (FileError ("could not open WAV file for reading", path, r)); - } - - pcm_parser_channel[i]->FillAudioDescriptor (*audio_desc_channel[i]); - frame_buffer_channel[i]->Capacity (ASDCP::PCM::CalcFrameBufferSize (*audio_desc_channel[i])); - - audio_desc.ChannelCount += audio_desc_channel[i]->ChannelCount; - audio_desc.BlockAlign += audio_desc_channel[i]->BlockAlign; - } - - ASDCP::PCM::FrameBuffer frame_buffer; - frame_buffer.Capacity (ASDCP::PCM::CalcFrameBufferSize (audio_desc)); - frame_buffer.Size (ASDCP::PCM::CalcFrameBufferSize (audio_desc)); - - ASDCP::WriterInfo writer_info; - MXFAsset::fill_writer_info (&writer_info); - - ASDCP::PCM::MXFWriter mxf_writer; - r = mxf_writer.OpenWrite (path().string().c_str(), writer_info, audio_desc); - if (ASDCP_FAILURE (r)) { - boost::throw_exception (FileError ("could not open audio MXF for writing", path().string(), r)); - } - - for (int i = 0; i < _intrinsic_duration; ++i) { - - for (int j = 0; j < _channels; ++j) { - memset (frame_buffer_channel[j]->Data(), 0, frame_buffer_channel[j]->Capacity()); - if (ASDCP_FAILURE (pcm_parser_channel[j]->ReadFrame (*frame_buffer_channel[j]))) { - boost::throw_exception (MiscError ("could not read audio frame")); - } - } - - byte_t *data_s = frame_buffer.Data(); - byte_t *data_e = data_s + frame_buffer.Capacity(); - byte_t sample_size = ASDCP::PCM::CalcSampleSize (*audio_desc_channel[0]); - int offset = 0; - - while (data_s < data_e) { - for (int j = 0; j < _channels; ++j) { - byte_t* frame = frame_buffer_channel[j]->Data() + offset; - memcpy (data_s, frame, sample_size); - data_s += sample_size; - } - offset += sample_size; - } - - if (ASDCP_FAILURE (mxf_writer.WriteFrame (frame_buffer, _encryption_context, 0))) { - boost::throw_exception (MiscError ("could not write audio MXF frame")); - } - - if (_progress) { - (*_progress) (0.5 * float (i) / _intrinsic_duration); - } - } - - bool const failed = ASDCP_FAILURE (mxf_writer.Finalize()); - - for (int i = 0; i < _channels; ++i) { - delete pcm_parser_channel[i]; - delete frame_buffer_channel[i]; - delete audio_desc_channel[i]; - } - - if (failed) { - boost::throw_exception (MiscError ("could not finalise audio MXF")); - } -} - string SoundAsset::cpl_node_name () const { diff --git a/src/sound_asset.h b/src/sound_asset.h index d2aa1213..ce08c512 100644 --- a/src/sound_asset.h +++ b/src/sound_asset.h @@ -72,24 +72,6 @@ public: void read (); - /** The following parameters must be set up (if required) before calling this: - * Interop mode (set_interop) - * Edit rate (set_edit_rate) - * MXF Metadata (set_metadata) - * Channels (set_channels) - * Intrinsic duration (set_intrinsic_duration) - */ - void create (std::vector<boost::filesystem::path> const & files); - - /** The following parameters must be set up (if required) before calling this: - * Interop mode (set_interop) - * Edit rate (set_edit_rate) - * MXF Metadata (set_metadata) - * Channels (set_channels) - * Intrinsic duration (set_intrinsic_duration) - */ - void create (boost::function<boost::filesystem::path (Channel)> get_path); - boost::shared_ptr<SoundAssetWriter> start_write (); bool equals (boost::shared_ptr<const ContentAsset> other, EqualityOptions opt, boost::function<void (NoteType, std::string)> note) const; @@ -115,7 +97,6 @@ public: private: std::string key_type () const; void construct (boost::function<boost::filesystem::path (Channel)> get_path); - boost::filesystem::path path_from_channel (Channel channel, std::vector<boost::filesystem::path> const & files); std::string cpl_node_name () const; /** Number of channels in the asset */ |
