EssenceDescriptor->StoredHeight = PDesc.StoredHeight;
EssenceDescriptor->AspectRatio = PDesc.AspectRatio;
- // if ( m_Info.LabelSetType == LS_MXF_SMPTE )
- // {
- // PictureEssenceCoding UL =
- // Video Line Map ui32_t[VideoLineMapSize] = { 2, 4, 0, 0 }
- // CaptureGamma UL =
- // ComponentMaxRef ui32_t = 4095
- // ComponentMinRef ui32_t = 0
- // PixelLayout byte_t[PixelLayoutSize] = s_PixelLayoutXYZ
- // }
-
if ( PDesc.StoredWidth < 2049 )
{
EssenceDescriptor->PictureEssenceCoding.Set(dict.ul(MDD_JP2KEssenceCompression_2K));
EssenceDescriptor->StoredHeight = PDesc.StoredHeight;
EssenceDescriptor->AspectRatio = PDesc.AspectRatio;
- // if ( m_Info.LabelSetType == LS_MXF_SMPTE )
- // {
- // PictureEssenceCoding UL =
- // Video Line Map ui32_t[VideoLineMapSize] = { 2, 4, 0, 0 }
- // CaptureGamma UL =
- // ComponentMaxRef ui32_t = 4095
- // ComponentMinRef ui32_t = 0
- // PixelLayout byte_t[PixelLayoutSize] = s_PixelLayoutXYZ
- // }
-
if ( PDesc.StoredWidth < 2049 )
{
EssenceDescriptor->PictureEssenceCoding.Set(dict.ul(MDD_JP2KEssenceCompression_2K));
{ { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 352
0x04, 0x01, 0x02, 0x01, 0x01, 0x06, 0x01, 0x00 },
{0}, false, "GenericPictureEssenceDescriptor_ColorPrimaries" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 353
+ 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x11 },
+ {0}, false, "JP2KEssenceCompression_BroadcastProfile_1" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 354
+ 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x12 },
+ {0}, false, "JP2KEssenceCompression_BroadcastProfile_2" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 355
+ 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x13 },
+ {0}, false, "JP2KEssenceCompression_BroadcastProfile_3" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 356
+ 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x14 },
+ {0}, false, "JP2KEssenceCompression_BroadcastProfile_4" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 357
+ 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x15 },
+ {0}, false, "JP2KEssenceCompression_BroadcastProfile_5" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 358
+ 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x16 },
+ {0}, false, "JP2KEssenceCompression_BroadcastProfile_6" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 359
+ 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x17 },
+ {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" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 361
+ 0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 },
+ {0}, false, "WaveAudioDescriptor_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, 0x01, 0x01, 0x01, 0x0e, // 363
+ 0x04, 0x01, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00 },
+ {0x32, 0x05}, true, "GenericPictureEssenceDescriptor_ActiveHeight" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 364
+ 0x04, 0x01, 0x05, 0x01, 0x14, 0x00, 0x00, 0x00 },
+ {0x32, 0x04}, true, "GenericPictureEssenceDescriptor_ActiveWidth" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 365
+ 0x04, 0x01, 0x05, 0x01, 0x15, 0x00, 0x00, 0x00 },
+ {0x32, 0x06}, true, "GenericPictureEssenceDescriptor_ActiveXOffset" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 366
+ 0x04, 0x01, 0x05, 0x01, 0x16, 0x00, 0x00, 0x00 },
+ {0x32, 0x07}, true, "GenericPictureEssenceDescriptor_ActiveYOffset" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 367
+ 0x03, 0x01, 0x01, 0x02, 0x02, 0x16, 0x00, 0x00 },
+ {0}, false, "TimedTextDescriptor_RFC5646LanguageTagList" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 368
+ 0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x00 },
+ {0}, false, "AlternativeCenterCuts_4x3" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 369
+ 0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x02, 0x00 },
+ {0}, false, "AlternativeCenterCuts_14x9" },
{ {0}, {0}, false, 0 }
};
MDD_MaterialPackage_PackageMarker, // 350
MDD_GenericPictureEssenceDescriptor_CodingEquations, // 351
MDD_GenericPictureEssenceDescriptor_ColorPrimaries, // 352
+ MDD_JP2KEssenceCompression_BroadcastProfile_1, // 353
+ MDD_JP2KEssenceCompression_BroadcastProfile_2, // 354
+ MDD_JP2KEssenceCompression_BroadcastProfile_3, // 355
+ MDD_JP2KEssenceCompression_BroadcastProfile_4, // 356
+ MDD_JP2KEssenceCompression_BroadcastProfile_5, // 357
+ MDD_JP2KEssenceCompression_BroadcastProfile_6, // 358
+ MDD_JP2KEssenceCompression_BroadcastProfile_7, // 359
+ MDD_WaveAudioDescriptor_ReferenceImageEditRate, // 360
+ MDD_WaveAudioDescriptor_ReferenceAudioAlignmentLevel, // 361
+ MDD_GenericPictureEssenceDescriptor_AlternativeCenterCuts, // 362
+ MDD_GenericPictureEssenceDescriptor_ActiveHeight, // 363
+ MDD_GenericPictureEssenceDescriptor_ActiveWidth, // 364
+ MDD_GenericPictureEssenceDescriptor_ActiveXOffset, // 365
+ MDD_GenericPictureEssenceDescriptor_ActiveYOffset, // 366
+ MDD_TimedTextDescriptor_RFC5646LanguageTagList, // 367
+ MDD_AlternativeCenterCuts_4x3, // 368
+ MDD_AlternativeCenterCuts_14x9, // 369
MDD_Max
-
}; // enum MDD_t
//
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());
+ }
}
//
//
-GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), SignalStandard(0), SampledWidth(0), SampledXOffset(0), DisplayHeight(0), DisplayXOffset(0), DisplayF2Offset(0), AlphaTransparency(0), ImageAlignmentOffset(0), ImageEndOffset(0)
+GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), SignalStandard(0), SampledWidth(0), SampledXOffset(0), DisplayHeight(0), DisplayXOffset(0), DisplayF2Offset(0), AlphaTransparency(0), ImageAlignmentOffset(0), ImageEndOffset(0), ActiveWidth(0), ActiveXOffset(0)
{
assert(m_Dict);
m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
ColorPrimaries.set_has_value( result == RESULT_OK );
}
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
+ ActiveWidth.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
+ ActiveHeight.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
+ ActiveXOffset.set_has_value( result == RESULT_OK );
+ }
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
+ ActiveYOffset.set_has_value( result == RESULT_OK );
+ }
return result;
}
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
if ( ASDCP_SUCCESS(result) && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
if ( ASDCP_SUCCESS(result) && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
+ if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
+ if ( ASDCP_SUCCESS(result) && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
+ if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
+ if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
+ if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
return result;
}
PictureEssenceCoding = rhs.PictureEssenceCoding;
CodingEquations = rhs.CodingEquations;
ColorPrimaries = rhs.ColorPrimaries;
+ AlternativeCenterCuts = rhs.AlternativeCenterCuts;
+ ActiveWidth = rhs.ActiveWidth;
+ ActiveHeight = rhs.ActiveHeight;
+ ActiveXOffset = rhs.ActiveXOffset;
+ ActiveYOffset = rhs.ActiveYOffset;
}
//
if ( ! ColorPrimaries.empty() ) {
fprintf(stream, " %22s = %s\n", "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
}
+ fprintf(stream, " %22s:\n", "AlternativeCenterCuts");
+ AlternativeCenterCuts.Dump(stream);
+ if ( ! ActiveWidth.empty() ) {
+ fprintf(stream, " %22s = %d\n", "ActiveWidth", ActiveWidth.get());
+ }
+ if ( ! ActiveHeight.empty() ) {
+ fprintf(stream, " %22s = %d\n", "ActiveHeight", ActiveHeight.get());
+ }
+ if ( ! ActiveXOffset.empty() ) {
+ fprintf(stream, " %22s = %d\n", "ActiveXOffset", ActiveXOffset.get());
+ }
+ if ( ! ActiveYOffset.empty() ) {
+ fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get());
+ }
}
//
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
+ if ( ASDCP_SUCCESS(result) ) {
+ result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
+ RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
+ }
return result;
}
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
+ if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
return result;
}
ResourceID = rhs.ResourceID;
UCSEncoding = rhs.UCSEncoding;
NamespaceURI = rhs.NamespaceURI;
+ RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
}
//
fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
+ if ( ! RFC5646LanguageTagList.empty() ) {
+ fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
+ }
}
//
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);
UL PictureEssenceCoding;
optional_property<UL> CodingEquations;
optional_property<UL> ColorPrimaries;
+ Batch<UL> AlternativeCenterCuts;
+ optional_property<ui32_t> ActiveWidth;
+ optional_property<ui32_t> ActiveHeight;
+ optional_property<ui32_t> ActiveXOffset;
+ optional_property<ui32_t> ActiveYOffset;
GenericPictureEssenceDescriptor(const Dictionary*& d);
GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs);
UUID ResourceID;
UTF16String UCSEncoding;
UTF16String NamespaceURI;
+ optional_property<UTF16String> RFC5646LanguageTagList;
TimedTextDescriptor(const Dictionary*& d);
TimedTextDescriptor(const TimedTextDescriptor& rhs);
reinterpret_cast<ASDCP::MXF::JPEG2000PictureSubDescriptor*>(essence_sub_descriptors.back()));
/// TODO: set with magic or some such thing
+ essence_descriptor->PictureEssenceCoding = UL(g_dict->ul(MDD_JP2KEssenceCompression_BroadcastProfile_1));
essence_descriptor->ComponentMaxRef = 4095;
essence_descriptor->ComponentMinRef = 0;
}