summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjelkins <jelkins@cinecert.com>2020-10-08 17:29:11 -0700
committerjelkins <jelkins@cinecert.com>2020-10-08 17:29:11 -0700
commit1d4a906682d19207b0885d90f25fe3e5fd9bb844 (patch)
treecd3d8574cef08f6e09227419c61a41a0bb43d982 /src
parentee40718aa383cb40beb67be317b3565c218d32c1 (diff)
check values for ContainerDuration.
Diffstat (limited to 'src')
-rw-r--r--src/AS_02_TimedText.cpp8
-rw-r--r--src/AS_DCP_ATMOS.cpp7
-rw-r--r--src/AS_DCP_DCData.cpp14
-rwxr-xr-xsrc/AS_DCP_JP2K.cpp7
-rwxr-xr-xsrc/AS_DCP_MPEG2.cpp9
-rwxr-xr-xsrc/AS_DCP_PCM.cpp16
-rw-r--r--src/AS_DCP_TimedText.cpp8
-rwxr-xr-xsrc/PCMParserList.cpp4
-rw-r--r--src/as-02-info.cpp22
-rwxr-xr-xsrc/as-02-unwrap.cpp23
-rwxr-xr-xsrc/phdr-unwrap.cpp12
11 files changed, 85 insertions, 45 deletions
diff --git a/src/AS_02_TimedText.cpp b/src/AS_02_TimedText.cpp
index 09f7103..7477ae9 100644
--- a/src/AS_02_TimedText.cpp
+++ b/src/AS_02_TimedText.cpp
@@ -90,8 +90,11 @@ AS_02::TimedText::MXFReader::h__Reader::MD_to_TimedText_TDesc(TimedTextDescripto
ASDCP::MXF::TimedTextDescriptor* TDescObj = (ASDCP::MXF::TimedTextDescriptor*)m_EssenceDescriptor;
TDesc.EditRate = TDescObj->SampleRate;
- assert(TDescObj->ContainerDuration <= 0xFFFFFFFFL);
- TDesc.ContainerDuration = (ui32_t) TDescObj->ContainerDuration;
+ if ( ! TDescObj->ContainerDuration.empty() )
+ {
+ assert(TDescObj->ContainerDuration <= 0xFFFFFFFFL);
+ TDesc.ContainerDuration = (ui32_t) TDescObj->ContainerDuration;
+ }
memcpy(TDesc.AssetID, TDescObj->ResourceID.Value(), UUIDlen);
TDesc.NamespaceName = TDescObj->NamespaceURI;
TDesc.EncodingName = TDescObj->UCSEncoding;
@@ -637,7 +640,6 @@ AS_02::TimedText::MXFWriter::h__Writer::Finalize()
DefaultLogSink().Error("Cannot finalize file, the primary essence resource has not been written.\n");
return RESULT_STATE;
}
-
m_FramesWritten = m_TDesc.ContainerDuration;
Result_t result = m_State.Goto_FINAL();
diff --git a/src/AS_DCP_ATMOS.cpp b/src/AS_DCP_ATMOS.cpp
index 2fc7d56..cdba985 100644
--- a/src/AS_DCP_ATMOS.cpp
+++ b/src/AS_DCP_ATMOS.cpp
@@ -132,8 +132,11 @@ ASDCP::ATMOS::MXFReader::h__Reader::MD_to_DCData_DDesc(ASDCP::DCData::DCDataDesc
ASDCP_TEST_NULL(m_EssenceDescriptor);
MXF::PrivateDCDataDescriptor* DDescObj = m_EssenceDescriptor;
DDesc.EditRate = DDescObj->SampleRate;
- assert(DDescObj->ContainerDuration <= 0xFFFFFFFFL);
- DDesc.ContainerDuration = static_cast<ui32_t>(DDescObj->ContainerDuration);
+ if ( ! DDescObj->ContainerDuration.empty() )
+ {
+ assert(DDescObj->ContainerDuration <= 0xFFFFFFFFL);
+ DDesc.ContainerDuration = static_cast<ui32_t>(DDescObj->ContainerDuration);
+ }
memcpy(DDesc.DataEssenceCoding, DDescObj->DataEssenceCoding.Value(), SMPTE_UL_LENGTH);
return RESULT_OK;
}
diff --git a/src/AS_DCP_DCData.cpp b/src/AS_DCP_DCData.cpp
index 245b46b..b957d6c 100644
--- a/src/AS_DCP_DCData.cpp
+++ b/src/AS_DCP_DCData.cpp
@@ -99,8 +99,11 @@ ASDCP::DCData::MXFReader::h__Reader::MD_to_DCData_DDesc(const MXF::DCDataDescrip
DCData::DCDataDescriptor& DDesc)
{
DDesc.EditRate = descriptor_object.SampleRate;
- assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL);
- DDesc.ContainerDuration = static_cast<ui32_t>(descriptor_object.ContainerDuration.const_get());
+ if ( ! descriptor_object.ContainerDuration.empty() )
+ {
+ assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL);
+ DDesc.ContainerDuration = static_cast<ui32_t>(descriptor_object.ContainerDuration.const_get());
+ }
memcpy(DDesc.DataEssenceCoding, descriptor_object.DataEssenceCoding.Value(), SMPTE_UL_LENGTH);
return RESULT_OK;
}
@@ -111,8 +114,11 @@ ASDCP::DCData::MXFReader::h__Reader::MD_to_DCData_DDesc(const MXF::PrivateDCData
DCData::DCDataDescriptor& DDesc)
{
DDesc.EditRate = descriptor_object.SampleRate;
- assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL);
- DDesc.ContainerDuration = static_cast<ui32_t>(descriptor_object.ContainerDuration.const_get());
+ if ( ! descriptor_object.ContainerDuration.empty() )
+ {
+ assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL);
+ DDesc.ContainerDuration = static_cast<ui32_t>(descriptor_object.ContainerDuration.const_get());
+ }
memcpy(DDesc.DataEssenceCoding, descriptor_object.DataEssenceCoding.Value(), SMPTE_UL_LENGTH);
return RESULT_OK;
}
diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp
index d5fddaa..6ad9eef 100755
--- a/src/AS_DCP_JP2K.cpp
+++ b/src/AS_DCP_JP2K.cpp
@@ -399,8 +399,11 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::GenericPictureEssenceDescriptor& Esse
PDesc.EditRate = EditRate;
PDesc.SampleRate = SampleRate;
- assert(EssenceDescriptor.ContainerDuration.const_get() <= 0xFFFFFFFFL);
- PDesc.ContainerDuration = static_cast<ui32_t>(EssenceDescriptor.ContainerDuration.const_get());
+ if ( ! EssenceDescriptor.ContainerDuration.empty() )
+ {
+ assert(EssenceDescriptor.ContainerDuration.const_get() <= 0xFFFFFFFFL);
+ PDesc.ContainerDuration = static_cast<ui32_t>(EssenceDescriptor.ContainerDuration.const_get());
+ }
PDesc.StoredWidth = EssenceDescriptor.StoredWidth;
PDesc.StoredHeight = EssenceDescriptor.StoredHeight;
PDesc.AspectRatio = EssenceDescriptor.AspectRatio;
diff --git a/src/AS_DCP_MPEG2.cpp b/src/AS_DCP_MPEG2.cpp
index 8afa8bc..2a11de2 100755
--- a/src/AS_DCP_MPEG2.cpp
+++ b/src/AS_DCP_MPEG2.cpp
@@ -48,9 +48,11 @@ MD_to_MPEG2_VDesc(MXF::MPEG2VideoDescriptor* VDescObj, MPEG2::VideoDescriptor& V
VDesc.SampleRate = VDescObj->SampleRate;
VDesc.EditRate = VDescObj->SampleRate;
VDesc.FrameRate = VDescObj->SampleRate.Numerator;
- assert(VDescObj->ContainerDuration <= 0xFFFFFFFFL);
- VDesc.ContainerDuration = (ui32_t) VDescObj->ContainerDuration;
-
+ if ( ! VDescObj->ContainerDuration.empty() )
+ {
+ assert(VDescObj->ContainerDuration <= 0xFFFFFFFFL);
+ VDesc.ContainerDuration = (ui32_t) VDescObj->ContainerDuration;
+ }
VDesc.FrameLayout = VDescObj->FrameLayout;
VDesc.StoredWidth = VDescObj->StoredWidth;
VDesc.StoredHeight = VDescObj->StoredHeight;
@@ -77,7 +79,6 @@ MPEG2_VDesc_to_MD(MPEG2::VideoDescriptor& VDesc, MXF::MPEG2VideoDescriptor* VDes
VDescObj->SampleRate = VDesc.SampleRate;
VDescObj->ContainerDuration = VDesc.ContainerDuration;
-
VDescObj->FrameLayout = VDesc.FrameLayout;
VDescObj->StoredWidth = VDesc.StoredWidth;
VDescObj->StoredHeight = VDesc.StoredHeight;
diff --git a/src/AS_DCP_PCM.cpp b/src/AS_DCP_PCM.cpp
index de8dbc0..6241d15 100755
--- a/src/AS_DCP_PCM.cpp
+++ b/src/AS_DCP_PCM.cpp
@@ -51,12 +51,8 @@ ASDCP::PCM_ADesc_to_MD(PCM::AudioDescriptor& ADesc, MXF::WaveAudioDescriptor* AD
ADescObj->QuantizationBits = ADesc.QuantizationBits;
ADescObj->BlockAlign = ADesc.BlockAlign;
ADescObj->AvgBps = ADesc.AvgBps;
- if ( ! ADesc.LinkedTrackID.empty() )
- {
- ADescObj->LinkedTrackID = ADesc.LinkedTrackID;
- }
+ ADescObj->LinkedTrackID = ADesc.LinkedTrackID;
ADescObj->ContainerDuration = ADesc.ContainerDuration;
-
ADescObj->ChannelAssignment.get().Reset();
switch ( ADesc.ChannelFormat )
@@ -101,13 +97,15 @@ ASDCP::MD_to_PCM_ADesc(MXF::WaveAudioDescriptor* ADescObj, PCM::AudioDescriptor&
ADesc.QuantizationBits = ADescObj->QuantizationBits;
ADesc.BlockAlign = ADescObj->BlockAlign;
ADesc.AvgBps = ADescObj->AvgBps;
- if ( ! ADescObj.LinkedTrackID.empty() )
+ if ( ! ADescObj->LinkedTrackID.empty() )
{
ADesc.LinkedTrackID = ADescObj->LinkedTrackID;
}
- assert(ADescObj->ContainerDuration <= 0xFFFFFFFFL);
- ADesc.ContainerDuration = (ui32_t) ADescObj->ContainerDuration;
-
+ if ( ! ADescObj->ContainerDuration.empty() )
+ {
+ assert(ADescObj->ContainerDuration <= 0xFFFFFFFFL);
+ ADesc.ContainerDuration = (ui32_t) ADescObj->ContainerDuration;
+ }
ADesc.ChannelFormat = PCM::CF_NONE;
if ( ! ADescObj->ChannelAssignment.empty() )
diff --git a/src/AS_DCP_TimedText.cpp b/src/AS_DCP_TimedText.cpp
index 0cc3748..f19f6fc 100644
--- a/src/AS_DCP_TimedText.cpp
+++ b/src/AS_DCP_TimedText.cpp
@@ -155,8 +155,11 @@ ASDCP::TimedText::MXFReader::h__Reader::MD_to_TimedText_TDesc(TimedText::TimedTe
MXF::TimedTextDescriptor* TDescObj = (MXF::TimedTextDescriptor*)m_EssenceDescriptor;
TDesc.EditRate = TDescObj->SampleRate;
- assert(TDescObj->ContainerDuration <= 0xFFFFFFFFL);
- TDesc.ContainerDuration = (ui32_t) TDescObj->ContainerDuration;
+ if ( ! TDescObj->ContainerDuration.empty() )
+ {
+ assert(TDescObj->ContainerDuration <= 0xFFFFFFFFL);
+ TDesc.ContainerDuration = (ui32_t) TDescObj->ContainerDuration;
+ }
memcpy(TDesc.AssetID, TDescObj->ResourceID.Value(), UUIDlen);
TDesc.NamespaceName = TDescObj->NamespaceURI;
TDesc.EncodingName = TDescObj->UCSEncoding;
@@ -638,7 +641,6 @@ ASDCP::TimedText::MXFWriter::h__Writer::Finalize()
{
if ( ! m_State.Test_RUNNING() )
return RESULT_STATE;
-
m_FramesWritten = m_TDesc.ContainerDuration;
m_State.Goto_FINAL();
diff --git a/src/PCMParserList.cpp b/src/PCMParserList.cpp
index c073e3f..6555fbb 100755
--- a/src/PCMParserList.cpp
+++ b/src/PCMParserList.cpp
@@ -193,9 +193,7 @@ ASDCP::PCMParserList::OpenRead(const Kumu::PathList_t& argv, const Rational& Pic
return RESULT_FORMAT;
}
- if ( I->ADesc.ContainerDuration < m_ADesc.ContainerDuration )
- m_ADesc.ContainerDuration = I->ADesc.ContainerDuration;
-
+ m_ADesc.ContainerDuration = I->ADesc.ContainerDuration;
m_ADesc.BlockAlign += I->ADesc.BlockAlign;
}
diff --git a/src/as-02-info.cpp b/src/as-02-info.cpp
index b469591..dd769a8 100644
--- a/src/as-02-info.cpp
+++ b/src/as-02-info.cpp
@@ -1,5 +1,7 @@
/*
Copyright (c) 2003-2016, John Hurst, Wolfgang Ruppel
+
+
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -238,12 +240,18 @@ class MyPictureDescriptor : public JP2K::PictureDescriptor
if ( m_RGBADescriptor != 0 )
{
SampleRate = m_RGBADescriptor->SampleRate;
- ContainerDuration = m_RGBADescriptor->ContainerDuration;
+ if ( ! m_RGBADescriptor->ContainerDuration.empty() )
+ {
+ ContainerDuration = m_RGBADescriptor->ContainerDuration;
+ }
}
else if ( m_CDCIDescriptor != 0 )
{
SampleRate = m_CDCIDescriptor->SampleRate;
- ContainerDuration = m_CDCIDescriptor->ContainerDuration;
+ if ( ! m_CDCIDescriptor->ContainerDuration.empty() )
+ {
+ ContainerDuration = m_CDCIDescriptor->ContainerDuration;
+ }
}
else
{
@@ -376,7 +384,10 @@ class MyACESPictureDescriptor : public AS_02::ACES::PictureDescriptor
if ( m_RGBADescriptor != 0 )
{
SampleRate = m_RGBADescriptor->SampleRate;
- ContainerDuration = m_RGBADescriptor->ContainerDuration;
+ if ( ! m_RGBADescriptor->ContainerDuration.empty() )
+ {
+ ContainerDuration = m_RGBADescriptor->ContainerDuration;
+ }
}
else
{
@@ -475,7 +486,10 @@ class MyAudioDescriptor : public PCM::AudioDescriptor
if ( m_WaveAudioDescriptor != 0 )
{
AudioSamplingRate = m_WaveAudioDescriptor->SampleRate;
- ContainerDuration = m_WaveAudioDescriptor->ContainerDuration;
+ if ( ! m_WaveAudioDescriptor->ContainerDuration.empty() )
+ {
+ ContainerDuration = m_WaveAudioDescriptor->ContainerDuration;
+ }
}
else
{
diff --git a/src/as-02-unwrap.cpp b/src/as-02-unwrap.cpp
index f0b3ba3..8625012 100755
--- a/src/as-02-unwrap.cpp
+++ b/src/as-02-unwrap.cpp
@@ -315,8 +315,10 @@ read_JP2K_file(CommandOptions& Options)
if ( KM_SUCCESS(result) )
{
assert(rgba_descriptor);
- frame_count = (ui32_t)rgba_descriptor->ContainerDuration;
-
+ if ( ! rgba_descriptor->ContainerDuration.empty() )
+ {
+ frame_count = (ui32_t)rgba_descriptor->ContainerDuration;
+ }
if ( Options.verbose_flag )
{
rgba_descriptor->Dump();
@@ -330,8 +332,10 @@ read_JP2K_file(CommandOptions& Options)
if ( KM_SUCCESS(result) )
{
assert(cdci_descriptor);
- frame_count = (ui32_t)cdci_descriptor->ContainerDuration;
-
+ if ( ! cdci_descriptor->ContainerDuration.empty() )
+ {
+ frame_count = (ui32_t)cdci_descriptor->ContainerDuration;
+ }
if ( Options.verbose_flag )
{
cdci_descriptor->Dump();
@@ -454,8 +458,10 @@ read_ACES_file(CommandOptions& Options)
if (KM_SUCCESS(result))
{
assert(aces_descriptor);
- frame_count = aces_descriptor->ContainerDuration;
-
+ if ( ! aces_descriptor->ContainerDuration.empty() )
+ {
+ frame_count = aces_descriptor->ContainerDuration;
+ }
if (Options.verbose_flag)
{
aces_descriptor->Dump();
@@ -665,7 +671,10 @@ read_PCM_file(CommandOptions& Options)
}
else
{
- last_frame = (ui32_t)wave_descriptor->ContainerDuration;
+ if ( ! wave_descriptor->ContainerDuration.empty() )
+ {
+ last_frame = (ui32_t)wave_descriptor->ContainerDuration;
+ }
}
if ( last_frame == 0 )
diff --git a/src/phdr-unwrap.cpp b/src/phdr-unwrap.cpp
index bd5a5a3..21c088c 100755
--- a/src/phdr-unwrap.cpp
+++ b/src/phdr-unwrap.cpp
@@ -281,8 +281,10 @@ read_JP2K_file(CommandOptions& Options)
if ( KM_SUCCESS(result) )
{
assert(rgba_descriptor);
- frame_count = rgba_descriptor->ContainerDuration;
-
+ if ( ! rgba_descriptor->ContainerDuration.empty() )
+ {
+ frame_count = rgba_descriptor->ContainerDuration;
+ }
if ( Options.verbose_flag )
{
rgba_descriptor->Dump();
@@ -296,8 +298,10 @@ read_JP2K_file(CommandOptions& Options)
if ( KM_SUCCESS(result) )
{
assert(cdci_descriptor);
- frame_count = cdci_descriptor->ContainerDuration;
-
+ if ( ! cdci_descriptor->ContainerDuration.empty() )
+ {
+ frame_count = cdci_descriptor->ContainerDuration;
+ }
if ( Options.verbose_flag )
{
cdci_descriptor->Dump();