banner updates to 2015
[asdcplib.git] / src / AS_02.h
index 02efb9fdeb417626c6579ded815ba2a94db48b35..78f9229d563ceae443251920705b7c80899589e4 100644 (file)
@@ -118,12 +118,18 @@ namespace AS_02
     }
 
     // Returns number of frames for data described by ADesc, given a duration in samples and an edit rate
-    inline ui32_t CalcFramesFromDurationInSamples(const ui32_t durationInSamples, const ASDCP::MXF::WaveAudioDescriptor& d,
+    inline ui32_t CalcFramesFromDurationInSamples(const ui32_t duration_samples, const ASDCP::MXF::WaveAudioDescriptor& d,
                                                  const ASDCP::Rational& edit_rate)
     {
-      return static_cast<ui32_t>(static_cast<ui64_t>(durationInSamples) *
-                                static_cast<ui64_t>(d.AudioSamplingRate.Denominator * edit_rate.Numerator) /
-                                static_cast<ui64_t>(d.AudioSamplingRate.Numerator * edit_rate.Denominator));
+      ui32_t spf = CalcSamplesPerFrame(d, edit_rate);
+      ui32_t frames = duration_samples / spf;
+      
+      if ( duration_samples % spf != 0 )
+       {
+         ++frames;
+       }
+
+      return frames;
     }
 
   } // namespace MXF