From 30d642bd3b8474744dfbdcc2bdc46cdf827102c4 Mon Sep 17 00:00:00 2001 From: jhurst Date: Tue, 14 Mar 2006 00:29:50 +0000 Subject: added aiff reader --- src/PCM_Parser.cpp | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) (limited to 'src/PCM_Parser.cpp') diff --git a/src/PCM_Parser.cpp b/src/PCM_Parser.cpp index 70cc277..9262de7 100755 --- a/src/PCM_Parser.cpp +++ b/src/PCM_Parser.cpp @@ -94,22 +94,42 @@ ASDCP::Result_t ASDCP::PCM::WAVParser::h__WAVParser::OpenRead(const char* filename, const Rational& PictureRate) { ASDCP_TEST_NULL_STR(filename); - SimpleWaveHeader WavHeader; Result_t result = m_FileReader.OpenRead(filename); - if ( ASDCP_SUCCESS(result) ) - result = WavHeader.ReadFromFile(m_FileReader, &m_DataStart); - if ( ASDCP_SUCCESS(result) ) { - WavHeader.FillADesc(m_ADesc, PictureRate); - m_FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(m_ADesc); - m_DataLength = WavHeader.data_len; - m_ADesc.ContainerDuration = m_DataLength / m_FrameBufferSize; - Reset(); + SimpleWaveHeader WavHeader; + result = WavHeader.ReadFromFile(m_FileReader, &m_DataStart); + + if ( ASDCP_SUCCESS(result) ) + { + WavHeader.FillADesc(m_ADesc, PictureRate); + m_FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(m_ADesc); + m_DataLength = WavHeader.data_len; + m_ADesc.ContainerDuration = m_DataLength / m_FrameBufferSize; + Reset(); + } + else + { + ASDCP::AIFF::SimpleAIFFHeader AIFFHeader; + m_FileReader.Seek(0); + + result = AIFFHeader.ReadFromFile(m_FileReader, &m_DataStart); + + if ( ASDCP_SUCCESS(result) ) + { + AIFFHeader.FillADesc(m_ADesc, PictureRate); + m_FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(m_ADesc); + m_DataLength = AIFFHeader.data_len; + m_ADesc.ContainerDuration = m_DataLength / m_FrameBufferSize; + Reset(); + } + } } + AudioDescriptorDump(m_ADesc); + return result; } -- cgit v1.2.3