/*
-Copyright (c) 2011-2014, Robert Scheler, Heiko Sparenberg Fraunhofer IIS,
+Copyright (c) 2011-2016, Robert Scheler, Heiko Sparenberg Fraunhofer IIS,
John Hurst
All rights reserved.
}
// 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
// Open the file for reading. The file must exist. Returns error if the
// operation cannot be completed.
- Result_t OpenRead(const std::string& filename, const ASDCP::Rational& EditRate);
+ Result_t OpenRead(const std::string& filename, const ASDCP::Rational& EditRate) const;
// Returns RESULT_INIT if the file is not open.
Result_t Close() const;
using ASDCP::TimedText::TimedTextResourceDescriptor;
using ASDCP::TimedText::ResourceList_t;
+ //
+ class Type5UUIDFilenameResolver : public ASDCP::TimedText::IResourceResolver
+ {
+ typedef std::map<Kumu::UUID, std::string> ResourceMap;
+
+ ResourceMap m_ResourceMap;
+ std::string m_Dirname;
+ KM_NO_COPY_CONSTRUCT(Type5UUIDFilenameResolver);
+
+ public:
+ Type5UUIDFilenameResolver();
+ virtual ~Type5UUIDFilenameResolver();
+ Result_t OpenRead(const std::string& dirname);
+ Result_t ResolveRID(const byte_t* uuid, ASDCP::TimedText::FrameBuffer& FrameBuf) const;
+ };
+
//
class ST2052_TextParser
{