summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--registers/dolby/ASDCP-PHDR-elements.xml (renamed from registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-elements.xml)8
-rw-r--r--registers/dolby/ASDCP-PHDR-essence-keys.xml (renamed from registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-essence-keys.xml)5
-rw-r--r--registers/dolby/ASDCP-PHDR-groups.xml (renamed from registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-groups.xml)8
-rw-r--r--registers/dolby/ASDCP-PHDR-labels.xml (renamed from registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-labels.xml)8
-rw-r--r--registers/dolby/RDD47-ISXD-elements.xml (renamed from registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-elements.xml)8
-rw-r--r--registers/dolby/RDD47-ISXD-essence-keys.xml (renamed from registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-essence-keys.xml)5
-rw-r--r--registers/dolby/RDD47-ISXD-groups.xml (renamed from registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-groups.xml)8
-rw-r--r--registers/dolby/RDD47-ISXD-labels.xml (renamed from registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-labels.xml)8
-rwxr-xr-xsrc/AS_DCP.h5
-rwxr-xr-xsrc/AS_DCP_AES.cpp21
-rwxr-xr-xsrc/AS_DCP_JP2K.cpp2
-rw-r--r--src/h__02_Writer.cpp12
-rwxr-xr-xsrc/h__Writer.cpp12
13 files changed, 55 insertions, 55 deletions
diff --git a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-elements.xml b/registers/dolby/ASDCP-PHDR-elements.xml
index 923afcd..eaa0972 100644
--- a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-elements.xml
+++ b/registers/dolby/ASDCP-PHDR-elements.xml
@@ -1,12 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Elements Register for asdcplib-phdr -->
-<!-- -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- master_commit_tag=v000000081 -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- -->
<ElementsRegister xmlns="http://www.smpte-ra.org/schemas/335/2012">
<Entries>
<Entry>
@@ -52,4 +46,4 @@
<ValueLength>4 bytes</ValueLength>
</Entry>
</Entries>
-</ElementsRegister> \ No newline at end of file
+</ElementsRegister>
diff --git a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-essence-keys.xml b/registers/dolby/ASDCP-PHDR-essence-keys.xml
index 2c43cab..8db3acf 100644
--- a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-essence-keys.xml
+++ b/registers/dolby/ASDCP-PHDR-essence-keys.xml
@@ -1,9 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Essence Key Register for asdcplib-phdr -->
-<!-- -->
-<!-- -->
<EssenceRegister xmlns="http://www.smpte-ra.org/schemas/2088/2019">
<Entries>
<Entry>
@@ -19,4 +16,4 @@
<IsDeprecated>false</IsDeprecated>
</Entry>
</Entries>
-</EssenceRegister> \ No newline at end of file
+</EssenceRegister>
diff --git a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-groups.xml b/registers/dolby/ASDCP-PHDR-groups.xml
index 007229b..3bd49e1 100644
--- a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-groups.xml
+++ b/registers/dolby/ASDCP-PHDR-groups.xml
@@ -1,12 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Groups Register for asdcplib-phdr -->
-<!-- -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- master_commit_tag=v000000081 -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- -->
<GroupsRegister xmlns="http://www.smpte-ra.org/ns/395/2016">
<Entries>
<Entry>
@@ -38,4 +32,4 @@
</Contents>
</Entry>
</Entries>
-</GroupsRegister> \ No newline at end of file
+</GroupsRegister>
diff --git a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-labels.xml b/registers/dolby/ASDCP-PHDR-labels.xml
index a94946b..bcae150 100644
--- a/registers/dolby/30MR-REG-DD-Class14-ASDCP-PHDR-labels.xml
+++ b/registers/dolby/ASDCP-PHDR-labels.xml
@@ -1,12 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Labels Register for asdcplib-phdr -->
-<!-- -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- master_commit_tag=v000000081 -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- -->
<LabelsRegister xmlns="http://www.smpte-ra.org/schemas/400/2012">
<Entries>
<Entry>
@@ -21,4 +15,4 @@
<IsDeprecated>false</IsDeprecated>
</Entry>
</Entries>
-</LabelsRegister> \ No newline at end of file
+</LabelsRegister>
diff --git a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-elements.xml b/registers/dolby/RDD47-ISXD-elements.xml
index 4eb4375..519f892 100644
--- a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-elements.xml
+++ b/registers/dolby/RDD47-ISXD-elements.xml
@@ -1,12 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Elements Register for RDD47 ISXD -->
-<!-- -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- master_commit_tag=v000000081 -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- -->
<ElementsRegister xmlns="http://www.smpte-ra.org/schemas/335/2012">
<Entries>
<Entry>
@@ -24,4 +18,4 @@
<ValueLength>variable</ValueLength>
</Entry>
</Entries>
-</ElementsRegister> \ No newline at end of file
+</ElementsRegister>
diff --git a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-essence-keys.xml b/registers/dolby/RDD47-ISXD-essence-keys.xml
index 572112f..7e6acb2 100644
--- a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-essence-keys.xml
+++ b/registers/dolby/RDD47-ISXD-essence-keys.xml
@@ -1,9 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Essence Key Register for SMPTE RDD 47 ISXD -->
-<!-- -->
-<!-- -->
<EssenceRegister xmlns="http://www.smpte-ra.org/schemas/2088/2019">
<Entries>
<Entry>
@@ -19,4 +16,4 @@
<IsDeprecated>false</IsDeprecated>
</Entry>
</Entries>
-</EssenceRegister> \ No newline at end of file
+</EssenceRegister>
diff --git a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-groups.xml b/registers/dolby/RDD47-ISXD-groups.xml
index 49c2b89..d2f6fd8 100644
--- a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-groups.xml
+++ b/registers/dolby/RDD47-ISXD-groups.xml
@@ -1,12 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Groups Register for RDD47 ISXD -->
-<!-- -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- master_commit_tag=v000000081 -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- -->
<GroupsRegister xmlns="http://www.smpte-ra.org/ns/395/2016">
<Entries>
<Entry>
@@ -30,4 +24,4 @@
</Contents>
</Entry>
</Entries>
-</GroupsRegister> \ No newline at end of file
+</GroupsRegister>
diff --git a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-labels.xml b/registers/dolby/RDD47-ISXD-labels.xml
index c3e81bc..f4d6e2e 100644
--- a/registers/dolby/30MR-REG-DD-Class14-RDD47-ISXD-labels.xml
+++ b/registers/dolby/RDD47-ISXD-labels.xml
@@ -1,12 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Metadata tags to support XML file editing -->
<!-- author= Raymond Yeung (raymond.yeung@dolby.com) -->
-<!-- summary_of_edit= Labels Register for RDD47 ISXD -->
-<!-- -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- master_commit_tag=v000000081 -->
-<!-- DO NOT EDIT THIS TAG -->
-<!-- -->
<LabelsRegister xmlns="http://www.smpte-ra.org/schemas/400/2012">
<Entries>
<Entry>
@@ -32,4 +26,4 @@
<IsDeprecated>false</IsDeprecated>
</Entry>
</Entries>
-</LabelsRegister> \ No newline at end of file
+</LabelsRegister>
diff --git a/src/AS_DCP.h b/src/AS_DCP.h
index f089f06..fa8b00a 100755
--- a/src/AS_DCP.h
+++ b/src/AS_DCP.h
@@ -508,6 +508,11 @@ namespace ASDCP {
// point to a readable area of memory that is at least HMAC_SIZE bytes in length.
// Returns error if the buf argument is NULL or if the values do ot match.
Result_t TestHMACValue(const byte_t* buf) const;
+
+ // Writes MIC key to given buffer. buf must point to a writable area of
+ // memory that is at least KeyLen bytes in length. Returns error if the
+ // buf argument is NULL.
+ Result_t GetMICKey(byte_t* buf) const;
};
//---------------------------------------------------------------------------------
diff --git a/src/AS_DCP_AES.cpp b/src/AS_DCP_AES.cpp
index 379e8ab..6409f5b 100755
--- a/src/AS_DCP_AES.cpp
+++ b/src/AS_DCP_AES.cpp
@@ -349,6 +349,13 @@ public:
SHA1_Final(m_SHAValue, &SHA);
m_Final = true;
}
+
+ //
+ void
+ GetMICKey(byte_t* buf) const
+ {
+ memcpy(buf, m_key, KeyLen);
+ }
};
@@ -444,6 +451,20 @@ HMACContext::TestHMACValue(const byte_t* buf) const
}
+//
+Result_t
+HMACContext::GetMICKey(byte_t* buf) const
+{
+ KM_TEST_NULL_L(buf);
+
+ if ( m_Context.empty() )
+ return RESULT_INIT;
+
+ m_Context->GetMICKey(buf);
+ return RESULT_OK;
+}
+
+
//
// end AS_DCP_AES.cpp
diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp
index 129f53d..d5fddaa 100755
--- a/src/AS_DCP_JP2K.cpp
+++ b/src/AS_DCP_JP2K.cpp
@@ -319,7 +319,7 @@ ASDCP::JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
EssenceSubDescriptor.PictureComponentSizing.set_has_value();
ui32_t precinct_set_size = 0;
- for ( ui32_t i = 0; PDesc.CodingStyleDefault.SPcod.PrecinctSize[i] != 0 && i < MaxPrecincts; ++i )
+ for ( ui32_t i = 0; i < MaxPrecincts && PDesc.CodingStyleDefault.SPcod.PrecinctSize[i] != 0; ++i )
precinct_set_size++;
ui32_t csd_size = sizeof(CodingStyleDefault_t) - MaxPrecincts + precinct_set_size;
diff --git a/src/h__02_Writer.cpp b/src/h__02_Writer.cpp
index 9b1c6c6..d7cfaa3 100644
--- a/src/h__02_Writer.cpp
+++ b/src/h__02_Writer.cpp
@@ -161,7 +161,17 @@ AS_02::MXF::AS02IndexWriterVBR::PushIndexEntry(const IndexTableSegment::IndexEnt
m_CurrentSegment->DeltaEntryArray.push_back(IndexTableSegment::DeltaEntry());
m_CurrentSegment->IndexEditRate = m_EditRate;
m_CurrentSegment->IndexStartPosition = 0;
- }
+ } else if (m_CurrentSegment->IndexEntryArray.size() >= CBRIndexEntriesPerSegment) { // no, this one is full, start another
+ m_CurrentSegment->IndexDuration = m_CurrentSegment->IndexEntryArray.size();
+ ui64_t StartPosition = m_CurrentSegment->IndexStartPosition + m_CurrentSegment->IndexDuration;
+
+ m_CurrentSegment = new IndexTableSegment(m_Dict);
+ assert(m_CurrentSegment);
+ AddChildObject(m_CurrentSegment);
+ m_CurrentSegment->DeltaEntryArray.push_back(IndexTableSegment::DeltaEntry());
+ m_CurrentSegment->IndexEditRate = m_EditRate;
+ m_CurrentSegment->IndexStartPosition = StartPosition;
+ }
m_CurrentSegment->IndexEntryArray.push_back(Entry);
}
diff --git a/src/h__Writer.cpp b/src/h__Writer.cpp
index fc7f060..0c56b4c 100755
--- a/src/h__Writer.cpp
+++ b/src/h__Writer.cpp
@@ -374,6 +374,15 @@ ASDCP::Write_EKLV_Packet(Kumu::FileWriter& File, const ASDCP::Dictionary& Dict,
byte_t overhead[128];
Kumu::MemIOWriter Overhead(overhead, 128);
+ // We declare HMACOverhead and its buffer in the outer scope, even though it is not used on
+ // unencrypted content: the reason is that File.Writev(const byte_t* buf, ui32_t buf_len) doesn't
+ // write data right away but saves a pointer on the buffer. And we write all the buffers at the end
+ // when calling File.writev().
+ // Declaring the buffer variable in an inner scope means the buffer will go out of scope
+ // before the data it contains has been actually written, which means its content could be
+ // overwritten/get corrupted.
+ byte_t hmoverhead[512];
+ Kumu::MemIOWriter HMACOverhead(hmoverhead, 512);
if ( FrameBuf.Size() == 0 )
{
@@ -455,9 +464,6 @@ ASDCP::Write_EKLV_Packet(Kumu::FileWriter& File, const ASDCP::Dictionary& Dict,
{
StreamOffset += CtFrameBuf.Size();
- byte_t hmoverhead[512];
- Kumu::MemIOWriter HMACOverhead(hmoverhead, 512);
-
// write the HMAC
if ( Info.UsesHMAC )
{