/*
-Copyright (c) 2008-2014, John Hurst
+Copyright (c) 2008-2016, John Hurst
All rights reserved.
Redistribution and use in source and binary forms, with or without
//------------------------------------------------------------------------------------------
-const char*
+//
+static const char*
MIME2str(TimedText::MIMEType_t m)
{
if ( m == TimedText::MT_PNG )
return "image/png";
- else if ( m == TimedText::MT_OPENTYPE )
+ else if( m == TimedText::MT_OPENTYPE )
return "application/x-font-opentype";
-
+
return "application/octet-stream";
}
TDesc.NamespaceName = TDescObj->NamespaceURI;
TDesc.EncodingName = TDescObj->UCSEncoding;
- Batch<UUID>::const_iterator sdi = TDescObj->SubDescriptors.begin();
+ Array<UUID>::const_iterator sdi = TDescObj->SubDescriptors.begin();
TimedTextResourceSubDescriptor* DescObject = 0;
Result_t result = RESULT_OK;
if ( KM_SUCCESS(result) )
{
- Array<RIP::Pair>::const_iterator pi;
- RIP::Pair TmpPair;
+ RIP::const_pair_iterator pi;
+ RIP::PartitionPair TmpPair;
ui32_t sequence = 0;
// Look up the partition start in the RIP using the SID.
resourceSubdescriptor->EssenceStreamID = m_EssenceStreamID++;
m_EssenceSubDescriptorList.push_back((FileDescriptor*)resourceSubdescriptor);
m_EssenceDescriptor->SubDescriptors.push_back(resourceSubdescriptor->InstanceUID);
+
+ // 72 == sizeof K, L, instanceuid, uuid + sizeof int32 + tag/len * 4
+ m_HeaderSize += ( resourceSubdescriptor->MIMEMediaType.ArchiveLength() * 2 /*ArchiveLength is broken*/ ) + 72;
}
m_EssenceStreamID = 10;
// First RIP Entry
if ( m_Info.LabelSetType == LS_MXF_SMPTE ) // ERK
{
- m_RIP.PairArray.push_back(RIP::Pair(0, 0)); // 3-part, no essence in header
+ m_RIP.PairArray.push_back(RIP::PartitionPair(0, 0)); // 3-part, no essence in header
}
else
{
- DefaultLogSink().Error("Unable to write Interop timed-text MXF file. Use SMOTE DCP options instead.\n");
+ DefaultLogSink().Error("Unable to write Interop timed-text MXF file. Use SMPTE DCP options instead.\n");
return RESULT_FORMAT;
}
GSPart.BodySID = m_EssenceStreamID;
GSPart.OperationalPattern = m_HeaderPart.OperationalPattern;
- m_RIP.PairArray.push_back(RIP::Pair(m_EssenceStreamID++, here));
+ m_RIP.PairArray.push_back(RIP::PartitionPair(m_EssenceStreamID++, here));
GSPart.EssenceContainers.push_back(UL(m_Dict->ul(MDD_TimedTextEssence)));
UL TmpUL(m_Dict->ul(MDD_GenericStreamPartition));
Result_t result = GSPart.WriteToFile(m_File, TmpUL);