I don't see why the MDObjectPtr Codec_ul is not getting initialized (but I would change its name as there is already a Codec_UL which is the UL of this property). Are you sure that this file descriptor has a codec property?
GetUL() will return the property UL (the same as the value of the global constant Codec_UL mentioned above) not the value of property as a UL.
I would use the following:
Code:
if(Track && (Descriptor->IsA(FileDescriptor_UL)))
{
ULPtr CodecLabel;
MDObjectPtr Codec = Descriptor->Child(Codec_UL);
if(Codec)
{
DataChunkPtr Data = Codec->PutData();
if(Data->Size == 16) CodecLabel = new UL(Data->Data);
}
}
What happens here is that once the codec property is located its value is written into a buffer. This
should be 16 bytes (but I always check as you never know what rubbish there may be in the file!). This can then be used to build a new UL.