summaryrefslogtreecommitdiff
path: root/src/PCM_Parser.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2006-03-14 00:29:50 +0000
committerjhurst <>2006-03-14 00:29:50 +0000
commit30d642bd3b8474744dfbdcc2bdc46cdf827102c4 (patch)
treee31c3e1456494dec612f705e957ea8f9ba7979fc /src/PCM_Parser.cpp
parent9bfe9676115531eb76649e1ebd5e14b904b53ae2 (diff)
added aiff reader
Diffstat (limited to 'src/PCM_Parser.cpp')
-rwxr-xr-xsrc/PCM_Parser.cpp38
1 files changed, 29 insertions, 9 deletions
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;
}