/*
-Copyright (c) 2011-2015, Robert Scheler, Heiko Sparenberg Fraunhofer IIS,
+Copyright (c) 2011-2018, Robert Scheler, Heiko Sparenberg Fraunhofer IIS,
John Hurst
All rights reserved.
ui32_t GetDuration() const;
void PushIndexEntry(const ASDCP::MXF::IndexTableSegment::IndexEntry&);
+ void SetEditRate(const ASDCP::Rational& edit_rate);
};
return RESULT_PARAM;
}
- InitHeader();
+ InitHeader(MXFVersion_2011);
AddSourceClip(EditRate, EditRate/*TODO: for a moment*/, TCFrameRate, TrackName, EssenceUL, DataDefinition, PackageLabel);
AddEssenceDescriptor(WrappingUL);
this->m_IndexWriter.SetPrimerLookup(&this->m_HeaderPart.m_Primer);
this->m_RIP.PairArray.push_back(RIP::PartitionPair(0, 0)); // Header partition RIP entry
+ this->m_IndexWriter.MajorVersion = m_HeaderPart.MajorVersion;
+ this->m_IndexWriter.MinorVersion = m_HeaderPart.MinorVersion;
this->m_IndexWriter.OperationalPattern = this->m_HeaderPart.OperationalPattern;
this->m_IndexWriter.EssenceContainers = this->m_HeaderPart.EssenceContainers;
if ( KM_SUCCESS(result) )
{
- this->m_PartitionSpace *= floor( EditRate.Quotient() + 0.5 ); // convert seconds to edit units
+ this->m_PartitionSpace *= (ui32_t)floor( EditRate.Quotient() + 0.5 ); // convert seconds to edit units
this->m_ECStart = this->m_File.Tell();
this->m_IndexWriter.IndexSID = 129;
UL body_ul(this->m_Dict->ul(MDD_ClosedCompleteBodyPartition));
Partition body_part(this->m_Dict);
body_part.BodySID = 1;
+ body_part.MajorVersion = this->m_HeaderPart.MajorVersion;
+ body_part.MinorVersion = this->m_HeaderPart.MinorVersion;
body_part.OperationalPattern = this->m_HeaderPart.OperationalPattern;
body_part.EssenceContainers = this->m_HeaderPart.EssenceContainers;
body_part.ThisPartition = this->m_ECStart;
return result;
}
- // standard method of writing the header and footer of a completed AS-02 file
- //
- Result_t WriteAS02Footer()
+ void FlushIndexPartition()
{
if ( this->m_IndexWriter.GetDuration() > 0 )
{
this->m_IndexWriter.WriteToFile(this->m_File);
this->m_RIP.PairArray.push_back(RIP::PartitionPair(0, this->m_IndexWriter.ThisPartition));
}
-
+ }
+
+ // standard method of writing the header and footer of a completed AS-02 file
+ //
+ Result_t WriteAS02Footer()
+ {
+ this->FlushIndexPartition();
+
// update all Duration properties
ASDCP::MXF::Partition footer_part(this->m_Dict);
DurationElementList_t::iterator dli = this->m_DurationUpdateList.begin();
this->m_HeaderPart.FooterPartition = here;
assert(this->m_Dict);
+ footer_part.MajorVersion = this->m_HeaderPart.MajorVersion;
+ footer_part.MinorVersion = this->m_HeaderPart.MinorVersion;
footer_part.OperationalPattern = this->m_HeaderPart.OperationalPattern;
footer_part.EssenceContainers = this->m_HeaderPart.EssenceContainers;
footer_part.FooterPartition = here;
virtual ~h__AS02WriterFrame();
Result_t WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf,const byte_t* EssenceUL,
+ const ui32_t& MinEssenceElementBerLength,
AESEncContext* Ctx, HMACContext* HMAC);
};