diff options
Diffstat (limited to 'src/AS_02.h')
| -rw-r--r-- | src/AS_02.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/AS_02.h b/src/AS_02.h index 02efb9f..78f9229 100644 --- a/src/AS_02.h +++ b/src/AS_02.h @@ -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 |
