o Moved ReferenceAudioAlignmentLevel from WaveAudioDescriptor to GenericSoundEssenceDescriptor
{ { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 227
0x04, 0x02, 0x03, 0x03, 0x05, 0x00, 0x00, 0x00 },
{0x3d, 0x09}, false, "WaveAudioDescriptor_AvgBps" },
- { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 228
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, // 228
0x04, 0x02, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x00 },
- {0x3d, 0x0e}, true, "WaveAudioDescriptor_PeakEnvelope" },
+ {0x3d, 0x0e}, true, "WaveAudioDescriptor_PeakEnvelopeData" },
{ { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 229
0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x5a, 0x00 },
{0}, false, "JPEG2000PictureSubDescriptor" },
{0}, false, "JP2KEssenceCompression_BroadcastProfile_7" },
{ { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 360
0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 },
- {0}, false, "WaveAudioDescriptor_ReferenceImageEditRate" },
+ {0}, false, "GenericSoundEssenceDescriptor_ReferenceImageEditRate" },
{ { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 361
0x04, 0x02, 0x01, 0x01, 0x07, 0x00, 0x00, 0x00 },
- {0}, false, "WaveAudioDescriptor_ReferenceAudioAlignmentLevel" },
+ {0}, false, "GenericSoundEssenceDescriptor_ReferenceAudioAlignmentLevel" },
{ { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 362
0x04, 0x01, 0x03, 0x02, 0x0b, 0x00, 0x00, 0x00 },
{0}, false, "GenericPictureEssenceDescriptor_AlternativeCenterCuts" },
{ { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0c, // 511
0x0d, 0x01, 0x04, 0x01, 0x04, 0x01, 0x01, 0x00 },
{0}, false, "MXFTextBasedFramework" },
- { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 512
- 0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 },
- {0}, true, "GenericSoundEssenceDescriptor_ReferenceImageEditRate" },
{ {0}, {0}, false, 0 }
};
MDD_JP2KEssenceCompression_BroadcastProfile_5, // 357
MDD_JP2KEssenceCompression_BroadcastProfile_6, // 358
MDD_JP2KEssenceCompression_BroadcastProfile_7, // 359
- MDD_WaveAudioDescriptor_ReferenceImageEditRate, // 360
- MDD_WaveAudioDescriptor_ReferenceAudioAlignmentLevel, // 361
+ MDD_GenericSoundEssenceDescriptor_ReferenceImageEditRate, // 360
+ MDD_GenericSoundEssenceDescriptor_ReferenceAudioAlignmentLevel, // 361
MDD_GenericPictureEssenceDescriptor_AlternativeCenterCuts, // 362
MDD_GenericPictureEssenceDescriptor_ActiveHeight, // 363
MDD_GenericPictureEssenceDescriptor_ActiveWidth, // 364
MDD_Preface_ApplicationSchemes, // 509
MDD_Preface_ConformsToSpecifications, // 510
MDD_MXFTextBasedFramework, // 511
- MDD_GenericSoundEssenceDescriptor_ReferenceImageEditRate, // 512
MDD_Max
}; // enum MDD_t
DialNorm.set_has_value( result == RESULT_OK );
}
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel));
+ ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
+ ReferenceImageEditRate.set_has_value( result == RESULT_OK );
+ }
return result;
}
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
- if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
+ if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel));
+ if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
return result;
}
QuantizationBits = rhs.QuantizationBits;
DialNorm = rhs.DialNorm;
SoundEssenceCoding = rhs.SoundEssenceCoding;
+ ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
ReferenceImageEditRate = rhs.ReferenceImageEditRate;
}
fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get());
}
fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen));
- fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.EncodeString(identbuf, IdentBufferLen));
+ if ( ! ReferenceAudioAlignmentLevel.empty() ) {
+ fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
+ }
+ if ( ! ReferenceImageEditRate.empty() ) {
+ fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
+ }
}
//
result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
ChannelAssignment.set_has_value( result == RESULT_OK );
}
- if ( ASDCP_SUCCESS(result) ) {
- result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
- ReferenceImageEditRate.set_has_value( result == RESULT_OK );
- }
- if ( ASDCP_SUCCESS(result) ) {
- result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
- ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
- }
return result;
}
if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
- if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
- if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
return result;
}
SequenceOffset = rhs.SequenceOffset;
AvgBps = rhs.AvgBps;
ChannelAssignment = rhs.ChannelAssignment;
- ReferenceImageEditRate = rhs.ReferenceImageEditRate;
- ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
}
//
if ( ! ChannelAssignment.empty() ) {
fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
}
- if ( ! ReferenceImageEditRate.empty() ) {
- fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
- }
- if ( ! ReferenceAudioAlignmentLevel.empty() ) {
- fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
- }
}
//
ui32_t QuantizationBits;
optional_property<ui8_t > DialNorm;
UL SoundEssenceCoding;
- Rational ReferenceImageEditRate;
+ optional_property<ui8_t > ReferenceAudioAlignmentLevel;
+ optional_property<Rational > ReferenceImageEditRate;
GenericSoundEssenceDescriptor(const Dictionary*& d);
GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs);
optional_property<ui8_t > SequenceOffset;
ui32_t AvgBps;
optional_property<UL > ChannelAssignment;
- optional_property<Rational > ReferenceImageEditRate;
- optional_property<ui8_t > ReferenceAudioAlignmentLevel;
WaveAudioDescriptor(const Dictionary*& d);
WaveAudioDescriptor(const WaveAudioDescriptor& rhs);
//------------------------------------------------------------------------------------------
// PCM essence
-
-static bool
-set_mca_descriptor_properties(CommandOptions& Options)
-{
- MXF::InterchangeObject_list_t::iterator i;
- for ( i = Options.mca_config.begin(); i != Options.mca_config.end(); ++i )
- {
- MXF::AudioChannelLabelSubDescriptor * desc = dynamic_cast<MXF::AudioChannelLabelSubDescriptor*>(*i);
- if ( desc != 0 )
- {
- // for not only setting channels in any soundfield group
- if ( desc->SoundfieldGroupLinkID.get().HasValue() )
- {
- if ( ! Options.mca_audio_content_kind.empty() )
- {
- desc->MCAAudioContentKind = Options.mca_audio_content_kind;
- }
- if ( ! Options.mca_audio_element_kind.empty() )
- {
- desc->MCAAudioElementKind = Options.mca_audio_element_kind;
- }
- }
- }
- }
-
- return true;
-}
-
-
// Write one or more plaintext PCM audio streams to a plaintext AS-02 file
// Write one or more plaintext PCM audio streams to a ciphertext AS-02 file
//
return RESULT_FAIL;
}
- if ( ! set_mca_descriptor_properties(Options) )
+ // This marks all soundfield groups using the same MCA property values
+ MXF::InterchangeObject_list_t::iterator i;
+ for ( i = Options.mca_config.begin(); i != Options.mca_config.end(); ++i )
{
- return RESULT_FAIL;
+ MXF::SoundfieldGroupLabelSubDescriptor * desc = dynamic_cast<MXF::SoundfieldGroupLabelSubDescriptor*>(*i);
+ if ( desc != 0 )
+ {
+ if ( ! Options.mca_audio_content_kind.empty() )
+ {
+ desc->MCAAudioContentKind = Options.mca_audio_content_kind;
+ }
+ if ( ! Options.mca_audio_element_kind.empty() )
+ {
+ desc->MCAAudioElementKind = Options.mca_audio_element_kind;
+ }
+ }
}
essence_descriptor->ChannelAssignment = g_dict->ul(MDD_IMFAudioChannelCfg_MCA);