in src/main/java/com/netflix/imflibrary/st0377/header/StructuralMetadata.java [797:916]
public static Class getStructuralMetadataSetClass(byte[] key)
{
if (isPHDRMetadataTrackSubDescriptor(key))
{
return PHDRMetaDataTrackSubDescriptor.PHDRMetaDataTrackSubDescriptorBO.class;
}
else if (isStructuralMetadata(key) && (key[13] == 0x01))
{
switch (key[14])
{
case 0x2f :
return Preface.PrefaceBO.class;
case 0x30 :
return Object.class; //Identification
case 0x18 :
return ContentStorage.ContentStorageBO.class;
case 0x23 :
return EssenceContainerData.EssenceContainerDataBO.class;
case 0x36 :
return MaterialPackage.MaterialPackageBO.class;
case 0x37 :
return SourcePackage.SourcePackageBO.class;
case 0x3b :
return TimelineTrack.TimelineTrackBO.class;
case 0x39 :
return Object.class; //Event Track
case 0x3A :
return StaticTrack.StaticTrackBO.class;
case 0x0F:
return Sequence.SequenceBO.class;
case 0x11 :
return SourceClip.SourceClipBO.class;
case 0x14 :
return TimecodeComponent.TimecodeComponentBO.class;
case 0x41 :
return DescriptiveMarkerSegment.DescriptiveMarkerSegmentBO.class; //DM Segment
case 0x45 :
return Object.class; //DM Source Clip
case 0x09 :
return Object.class; //Filler
case 0x60 :
return Object.class; //Package Marker Object
case 0x25 :
return FileDescriptor.FileDescriptorBO.class;
case 0x27 :
return GenericPictureEssenceDescriptor.GenericPictureEssenceDescriptorBO.class;
case 0x28 :
return CDCIPictureEssenceDescriptor.CDCIPictureEssenceDescriptorBO.class;
case 0x29 :
return RGBAPictureEssenceDescriptor.RGBAPictureEssenceDescriptorBO.class;
case 0x42 :
return GenericSoundEssenceDescriptor.GenericSoundEssenceDescriptorBO.class;
case 0x43 :
return Object.class; //Generic Data Essence Descriptor
case 0x44 :
return Object.class; //Multiple Descriptor
case 0x32 :
return Object.class; //Network Locator
case 0x33 :
return Object.class; //Text Locator
case 0x61 :
return Object.class; //Application Plug-In Object
case 0x62 :
return Object.class; //Application Referenced Object
case 0x48 :
return WaveAudioEssenceDescriptor.WaveAudioEssenceDescriptorBO.class;
case 0x64 :
return TimedTextDescriptor.TimedTextDescriptorBO.class;
case 0x65 :
return TimeTextResourceSubDescriptor.TimeTextResourceSubdescriptorBO.class;
case 0x67 :
return ContainerConstraintsSubDescriptor.ContainerConstraintsSubDescriptorBO.class;
case 0x6b :
return AudioChannelLabelSubDescriptor.AudioChannelLabelSubDescriptorBO.class;
case 0x6c :
return SoundFieldGroupLabelSubDescriptor.SoundFieldGroupLabelSubDescriptorBO.class;
case 0x6d :
return GroupOfSoundFieldGroupLabelSubDescriptor.GroupOfSoundFieldGroupLabelSubDescriptorBO.class;
case 0x5A :
return JPEG2000PictureSubDescriptor.JPEG2000PictureSubDescriptorBO.class;
case 0x7B :
return IABEssenceDescriptor.IABEssenceDescriptorBO.class;
case 0x7C :
return IABSoundfieldLabelSubDescriptor.IABSoundfieldLabelSubDescriptorBO.class;
case 0x79 :
return ACESPictureSubDescriptor.ACESPictureSubDescriptorBO.class;
case 0x7a :
return TargetFrameSubDescriptor.TargetFrameSubDescriptorBO.class;
case (byte)0x81 :
switch(key[15]) {
case 0x06:
return MGASoundEssenceDescriptor.MGASoundEssenceDescriptorBO.class;
case 0x07:
return MGAAudioMetadataSubDescriptor.MGAAudioMetadataSubDescriptorBO.class;
case 0x08:
return MGASoundfieldGroupLabelSubDescriptor.MGASoundfieldGroupLabelSubDescriptorBO.class;
case 0x09:
return SADMAudioMetadataSubDescriptor.SADMAudioMetadataSubDescriptorBO.class;
default :
return Object.class;
}
default :
return Object.class;
}
}
else if (isDescriptiveMetadata(key)) { // Metadata Sets for the Text-based Metadata
if (key[13] == 0x02 && key[14] == 0x01) {
return GenericStreamTextBasedSet.GenericStreamTextBasedSetBO.class;
} else if (key[13] == 0x01 && key[14] == 0x01) {
return TextBasedDMFramework.TextBasedDMFrameworkBO.class;
} else {
return Object.class;
}
}
else
{
return Object.class;
}
}