rrrrr
[asdcplib.git] / src / Wav.cpp
index 2cfd73fd3b4035648198e83cca10cfd75bfea1fd..7275ab95cfa186f1870cd06e1c54637792b0e128 100755 (executable)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2005-2006, John Hurst
+Copyright (c) 2005-2009, John Hurst
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -54,7 +54,7 @@ ASDCP::Wav::SimpleWaveHeader::SimpleWaveHeader(ASDCP::PCM::AudioDescriptor& ADes
 void
 ASDCP::Wav::SimpleWaveHeader::FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, ASDCP::Rational PictureRate) const
 {
-  ADesc.SampleRate = PictureRate;
+  ADesc.EditRate = PictureRate;
 
   ADesc.LinkedTrackID = 0;
   ADesc.Locked = 0;
@@ -65,6 +65,7 @@ ASDCP::Wav::SimpleWaveHeader::FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, ASDC
   ADesc.QuantizationBits = bitspersample;
   ui32_t FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(ADesc);
   ADesc.ContainerDuration = data_len / FrameBufferSize;
+  ADesc.ChannelFormat = PCM::CF_NONE;
 }
 
 
@@ -137,7 +138,7 @@ ASDCP::Wav::SimpleWaveHeader::ReadFromBuffer(const byte_t* buf, ui32_t buf_len,
   fourcc test_RIFF(p); p += 4;
   if ( test_RIFF != FCC_RIFF )
     {
-      DefaultLogSink().Debug("File does not begin with RIFF header\n");      
+      //      DefaultLogSink().Debug("File does not begin with RIFF header\n");      
       return RESULT_RAW_FORMAT;
     }
 
@@ -174,9 +175,9 @@ ASDCP::Wav::SimpleWaveHeader::ReadFromBuffer(const byte_t* buf, ui32_t buf_len,
        {
          ui16_t format = KM_i16_LE(*(ui16_t*)p); p += 2;
 
-         if ( format != 1 )
+         if ( format != WAVE_FORMAT_PCM && format != WAVE_FORMAT_EXTENSIBLE )
            {
-             DefaultLogSink().Error("Expecting uncompressed essence, got format type %hu\n", format);
+             DefaultLogSink().Error("Expecting uncompressed PCM data, got format type %hd\n", format);
              return RESULT_RAW_FORMAT;
            }
 
@@ -185,7 +186,7 @@ ASDCP::Wav::SimpleWaveHeader::ReadFromBuffer(const byte_t* buf, ui32_t buf_len,
          avgbps = KM_i32_LE(*(ui32_t*)p); p += 4;
          blockalign = KM_i16_LE(*(ui16_t*)p); p += 2;
          bitspersample = KM_i16_LE(*(ui16_t*)p); p += 2;
-         p += chunk_size - 16;
+         p += chunk_size - 16; // 16 is the number of bytes read in this block
        }
       else
        {
@@ -259,15 +260,16 @@ extended_to_Rat(const byte_t* buf)
 void
 ASDCP::AIFF::SimpleAIFFHeader::FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, ASDCP::Rational PictureRate) const
 {
-  ADesc.SampleRate = PictureRate;
+  ADesc.EditRate = PictureRate;
 
   ADesc.ChannelCount = numChannels;
   ADesc.AudioSamplingRate = extended_to_Rat(sampleRate);
   ADesc.QuantizationBits = sampleSize;
   ADesc.BlockAlign = sampleSize / 8;
-  ADesc.AvgBps = ADesc.BlockAlign * ADesc.AudioSamplingRate.Quotient();
+  ADesc.AvgBps = (ui32_t) (ADesc.BlockAlign * ADesc.AudioSamplingRate.Quotient());
   ui32_t FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(ADesc);
   ADesc.ContainerDuration = data_len / FrameBufferSize;
+  ADesc.ChannelFormat = PCM::CF_NONE;
 }
 
 //
@@ -303,7 +305,7 @@ ASDCP::AIFF::SimpleAIFFHeader::ReadFromBuffer(const byte_t* buf, ui32_t buf_len,
   fourcc test_FORM(p); p += 4;
   if ( test_FORM != FCC_FORM )
     {
-      DefaultLogSink().Debug("File does not begin with FORM header\n");
+      //      DefaultLogSink().Debug("File does not begin with FORM header\n");
       return RESULT_RAW_FORMAT;
     }