From 064d75bd171c18a46430e0fe1b362c99159a24ba Mon Sep 17 00:00:00 2001 From: jelkins Date: Wed, 7 Oct 2020 11:39:43 -0700 Subject: check values for LinkedTrackID. --- src/AS_DCP_PCM.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/AS_DCP_PCM.cpp') diff --git a/src/AS_DCP_PCM.cpp b/src/AS_DCP_PCM.cpp index e7fbff3..de8dbc0 100755 --- a/src/AS_DCP_PCM.cpp +++ b/src/AS_DCP_PCM.cpp @@ -51,7 +51,10 @@ ASDCP::PCM_ADesc_to_MD(PCM::AudioDescriptor& ADesc, MXF::WaveAudioDescriptor* AD ADescObj->QuantizationBits = ADesc.QuantizationBits; ADescObj->BlockAlign = ADesc.BlockAlign; ADescObj->AvgBps = ADesc.AvgBps; - ADescObj->LinkedTrackID = ADesc.LinkedTrackID; + if ( ! ADesc.LinkedTrackID.empty() ) + { + ADescObj->LinkedTrackID = ADesc.LinkedTrackID; + } ADescObj->ContainerDuration = ADesc.ContainerDuration; ADescObj->ChannelAssignment.get().Reset(); @@ -98,7 +101,10 @@ ASDCP::MD_to_PCM_ADesc(MXF::WaveAudioDescriptor* ADescObj, PCM::AudioDescriptor& ADesc.QuantizationBits = ADescObj->QuantizationBits; ADesc.BlockAlign = ADescObj->BlockAlign; ADesc.AvgBps = ADescObj->AvgBps; - ADesc.LinkedTrackID = ADescObj->LinkedTrackID; + if ( ! ADescObj.LinkedTrackID.empty() ) + { + ADesc.LinkedTrackID = ADescObj->LinkedTrackID; + } assert(ADescObj->ContainerDuration <= 0xFFFFFFFFL); ADesc.ContainerDuration = (ui32_t) ADescObj->ContainerDuration; -- cgit v1.2.3 From 1d4a906682d19207b0885d90f25fe3e5fd9bb844 Mon Sep 17 00:00:00 2001 From: jelkins Date: Thu, 8 Oct 2020 17:29:11 -0700 Subject: check values for ContainerDuration. --- src/AS_02_TimedText.cpp | 8 +++++--- src/AS_DCP_ATMOS.cpp | 7 +++++-- src/AS_DCP_DCData.cpp | 14 ++++++++++---- src/AS_DCP_JP2K.cpp | 7 +++++-- src/AS_DCP_MPEG2.cpp | 9 +++++---- src/AS_DCP_PCM.cpp | 16 +++++++--------- src/AS_DCP_TimedText.cpp | 8 +++++--- src/PCMParserList.cpp | 4 +--- src/as-02-info.cpp | 22 ++++++++++++++++++---- src/as-02-unwrap.cpp | 23 ++++++++++++++++------- src/phdr-unwrap.cpp | 12 ++++++++---- 11 files changed, 85 insertions(+), 45 deletions(-) (limited to 'src/AS_DCP_PCM.cpp') 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(DDescObj->ContainerDuration); + if ( ! DDescObj->ContainerDuration.empty() ) + { + assert(DDescObj->ContainerDuration <= 0xFFFFFFFFL); + DDesc.ContainerDuration = static_cast(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(descriptor_object.ContainerDuration.const_get()); + if ( ! descriptor_object.ContainerDuration.empty() ) + { + assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL); + DDesc.ContainerDuration = static_cast(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(descriptor_object.ContainerDuration.const_get()); + if ( ! descriptor_object.ContainerDuration.empty() ) + { + assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL); + DDesc.ContainerDuration = static_cast(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(EssenceDescriptor.ContainerDuration.const_get()); + if ( ! EssenceDescriptor.ContainerDuration.empty() ) + { + assert(EssenceDescriptor.ContainerDuration.const_get() <= 0xFFFFFFFFL); + PDesc.ContainerDuration = static_cast(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(); -- cgit v1.2.3