When creating the object we specify the sampling rate (48kHz) and the number of channels (2).
*/
boost::shared_ptr<dcp::SoundAsset> sound_asset (new dcp::SoundAsset (dcp::Fraction (24, 1), 48000, 2));
- boost::shared_ptr<dcp::SoundAssetWriter> sound_writer = sound_asset->start_write ("DCP/sound.mxf", dcp::SMPTE, dcp::CHANNEL_ASSIGNMENT_51);
+ boost::shared_ptr<dcp::SoundAssetWriter> sound_writer = sound_asset->start_write ("DCP/sound.mxf", dcp::SMPTE);
/* Write some sine waves */
float* audio[2];
uint16_t const * p = reinterpret_cast<uint16_t const *> (xyz_16 + y * stride);
for (int x = 0; x < size.width; ++x) {
/* Truncate 16-bit to 12-bit */
- cout << *p << " ";
xyz_12->data(0)[jn] = *p++ >> 4;
- cout << xyz_12->data(0)[jn] << "\n";
xyz_12->data(1)[jn] = *p++ >> 4;
xyz_12->data(2)[jn] = *p++ >> 4;
++jn;
}
shared_ptr<SoundAssetWriter>
-SoundAsset::start_write (boost::filesystem::path file, Standard standard, ChannelAssignment assign)
+SoundAsset::start_write (boost::filesystem::path file, Standard standard)
{
/* XXX: can't we use a shared_ptr here? */
- return shared_ptr<SoundAssetWriter> (new SoundAssetWriter (this, file, standard, assign));
+ return shared_ptr<SoundAssetWriter> (new SoundAssetWriter (this, file, standard));
}
shared_ptr<SoundAssetReader>
explicit SoundAsset (boost::filesystem::path file);
SoundAsset (Fraction edit_rate, int sampling_rate, int channels);
- boost::shared_ptr<SoundAssetWriter> start_write (boost::filesystem::path file, Standard standard, ChannelAssignment assign);
+ boost::shared_ptr<SoundAssetWriter> start_write (boost::filesystem::path file, Standard standard);
boost::shared_ptr<SoundAssetReader> start_read () const;
bool equals (
ASDCP::PCM::AudioDescriptor audio_desc;
};
-SoundAssetWriter::SoundAssetWriter (SoundAsset* asset, boost::filesystem::path file, Standard standard, ChannelAssignment assign)
+SoundAssetWriter::SoundAssetWriter (SoundAsset* asset, boost::filesystem::path file, Standard standard)
: AssetWriter (asset, file, standard)
, _state (new SoundAssetWriter::ASDCPState)
, _sound_asset (asset)
if (standard == INTEROP) {
_state->audio_desc.ChannelFormat = ASDCP::PCM::CF_NONE;
} else {
- switch (assign) {
- case CHANNEL_ASSIGNMENT_51:
- _state->audio_desc.ChannelFormat = ASDCP::PCM::CF_CFG_1;
- break;
- case CHANNEL_ASSIGNMENT_61:
- _state->audio_desc.ChannelFormat = ASDCP::PCM::CF_CFG_2;
- break;
- case CHANNEL_ASSIGNMENT_71:
- _state->audio_desc.ChannelFormat = ASDCP::PCM::CF_CFG_3;
- break;
- case CHANNEL_ASSIGNMENT_WTF:
- _state->audio_desc.ChannelFormat = ASDCP::PCM::CF_CFG_4;
- break;
- case CHANNEL_ASSIGNMENT_71_DS:
- _state->audio_desc.ChannelFormat = ASDCP::PCM::CF_CFG_5;
- break;
- }
+ /* Just use WTF ("wild track format") for SMPTE for now; searches suggest that this
+ uses the same assignment as Interop.
+ */
+ _state->audio_desc.ChannelFormat = ASDCP::PCM::CF_CFG_4;
}
_state->frame_buffer.Capacity (ASDCP::PCM::CalcFrameBufferSize (_state->audio_desc));
private:
friend class SoundAsset;
- SoundAssetWriter (SoundAsset *, boost::filesystem::path, Standard standard, ChannelAssignment);
+ SoundAssetWriter (SoundAsset *, boost::filesystem::path, Standard standard);
void write_current_frame ();
DCI_SPECIFIC
};
-/** Possible channel assignments for SMPTE DCP audio */
-enum ChannelAssignment {
- /** L/R/C/Lfe/Ls/Rs/HI/VI */
- CHANNEL_ASSIGNMENT_51,
- /** L/R/C/Lfe/Ls/Rs/Cs/unused/HI/VI */
- CHANNEL_ASSIGNMENT_61,
- /** L/R/C/Lfe/Ls/Rs/Lc/Rc/HI/VI */
- CHANNEL_ASSIGNMENT_71,
- /** "Wild track format"; no assignment */
- CHANNEL_ASSIGNMENT_WTF,
- /** L/R/C/Lfe/Ls/Rs/Lrs/Rrs/HI/VI */
- CHANNEL_ASSIGNMENT_71_DS
-};
-
/** @class Colour
* @brief An RGB colour.
*/
shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset (dcp::Fraction (24, 1), 48000, 1));
ms->set_metadata (mxf_meta);
- shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test1/audio.mxf", dcp::SMPTE, dcp::CHANNEL_ASSIGNMENT_51);
+ shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test1/audio.mxf", dcp::SMPTE);
SF_INFO info;
info.format = 0;
shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset (dcp::Fraction (24, 1), 48000, 1));
ms->set_metadata (mxf_meta);
- shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test2/audio.mxf", dcp::SMPTE, dcp::CHANNEL_ASSIGNMENT_51);
+ shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test2/audio.mxf", dcp::SMPTE);
SF_INFO info;
info.format = 0;
shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset (dcp::Fraction (24, 1), 48000, 1));
ms->set_metadata (mxf_meta);
- shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test5/audio.mxf", dcp::SMPTE, dcp::CHANNEL_ASSIGNMENT_51);
+ shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test5/audio.mxf", dcp::SMPTE);
SF_INFO info;
info.format = 0;
shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset (dcp::Fraction (24, 1), 48000, 1));
ms->set_metadata (mxf_metadata);
ms->set_key (key);
- shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/encryption_test/audio.mxf", dcp::SMPTE, dcp::CHANNEL_ASSIGNMENT_51);
+ shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/encryption_test/audio.mxf", dcp::SMPTE);
SF_INFO info;
info.format = 0;