return true;
}
+//
+long
+Kumu::Timestamp::GetSecondsSinceEpoch(void) const
+{
+ Kumu::TAI::caltime ct;
+ Kumu::TAI::tai t;
+ TIMESTAMP_TO_CALTIME(*this, &ct);
+ t = ct;
+
+ return (long) (t.x - ui64_C(4611686018427387914));
+}
+
//------------------------------------------------------------------------------------------
Kumu::MemIOWriter::MemIOWriter(ByteString* Buf)
virtual ui32_t ArchiveLength() const { return 8L; }
virtual bool Archive(MemIOWriter* Writer) const;
virtual bool Unarchive(MemIOReader* Reader);
+
+ // Get the number of seconds since the Unix epoch (1970-01-01T00:00:00+00:00)
+ long GetSecondsSinceEpoch(void) const;
};
//
*/
#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;
}
// otherwise sets the given flag.
#define TEST_SET_MAJOR_MODE(f) if ( TEST_MAJOR_MODE() ) \
{ \
- fputs("Conflicting major mode, choose one of -(ic)).\n", stderr); \
+ fputs("Conflicting major mode, choose one of -(ic).\n", stderr); \
return; \
} \
(f) = true;