diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-09-08 23:55:37 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-09-08 23:55:37 +0100 |
| commit | fe83eb5293fa4027856f6ee9faec7bfc8288badf (patch) | |
| tree | 8314bbbb6b37a2fb7cb13787276b6fb9474e99bd /src/sound_asset_writer.cc | |
| parent | 3e24098b32d6160759378e671bfca241dd9025d9 (diff) | |
Add channel assignment support for SMPTE DCPs.
Diffstat (limited to 'src/sound_asset_writer.cc')
| -rw-r--r-- | src/sound_asset_writer.cc | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/sound_asset_writer.cc b/src/sound_asset_writer.cc index 84ed7787..f7513d91 100644 --- a/src/sound_asset_writer.cc +++ b/src/sound_asset_writer.cc @@ -51,7 +51,7 @@ struct SoundAssetWriter::ASDCPState ASDCP::PCM::AudioDescriptor audio_desc; }; -SoundAssetWriter::SoundAssetWriter (SoundAsset* asset, boost::filesystem::path file, Standard standard) +SoundAssetWriter::SoundAssetWriter (SoundAsset* asset, boost::filesystem::path file, Standard standard, ChannelAssignment assign) : AssetWriter (asset, file, standard) , _state (new SoundAssetWriter::ASDCPState) , _sound_asset (asset) @@ -66,7 +66,27 @@ SoundAssetWriter::SoundAssetWriter (SoundAsset* asset, boost::filesystem::path f _state->audio_desc.BlockAlign = 3 * _sound_asset->channels(); _state->audio_desc.AvgBps = _sound_asset->sampling_rate() * _state->audio_desc.BlockAlign; _state->audio_desc.LinkedTrackID = 0; - _state->audio_desc.ChannelFormat = ASDCP::PCM::CF_NONE; + 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; + } + } _state->frame_buffer.Capacity (ASDCP::PCM::CalcFrameBufferSize (_state->audio_desc)); _state->frame_buffer.Size (ASDCP::PCM::CalcFrameBufferSize (_state->audio_desc)); |
