/*
-Copyright (c) 2004, John Hurst
+Copyright (c) 2004-2009, John Hurst
All rights reserved.
Redistribution and use in source and binary forms, with or without
*/
#include <PCMParserList.h>
+#include <KM_log.h>
#include <assert.h>
using namespace ASDCP;
+using namespace Kumu;
ASDCP::ParserInstance::ParserInstance() : m_p(0), m_SampleSize(0)
if ( ASDCP_SUCCESS(result) )
{
if ( i == 0 )
- m_ADesc = I->ADesc;
-
+ {
+ m_ADesc = I->ADesc;
+ }
else
- m_ADesc.BlockAlign += I->ADesc.BlockAlign;
+ {
+ if ( I->ADesc.AudioSamplingRate != m_ADesc.AudioSamplingRate )
+ {
+ DefaultLogSink().Error("AudioSamplingRate mismatch in PCM parser list.");
+ return RESULT_FORMAT;
+ }
+
+ if ( I->ADesc.QuantizationBits != m_ADesc.QuantizationBits )
+ {
+ DefaultLogSink().Error("QuantizationBits mismatch in PCM parser list.");
+ return RESULT_FORMAT;
+ }
+
+ if ( I->ADesc.ContainerDuration < m_ADesc.ContainerDuration )
+ m_ADesc.ContainerDuration = I->ADesc.ContainerDuration;
+
+ m_ADesc.BlockAlign += I->ADesc.BlockAlign;
+ }
m_ChannelCount += I->ADesc.ChannelCount;
}