tagparser/ogg/oggstream.h
Martchus 65597fd71e Add API to allow aborting overall/expensive parsing functions
* Not really implemented within the various code paths of the parsers at
  this point; this commit mainly adds the API.
* Adjust example in README
2021-02-04 23:21:50 +01:00

47 lines
978 B
C++

#ifndef TAG_PARSER_OGGSTREAM_H
#define TAG_PARSER_OGGSTREAM_H
#include "./oggpage.h"
#include "../abstracttrack.h"
namespace TagParser {
class OggContainer;
class OggIterator;
class TAG_PARSER_EXPORT OggStream final : public AbstractTrack {
friend class OggContainer;
public:
OggStream(OggContainer &container, std::vector<OggPage>::size_type startPage);
~OggStream() override;
TrackType type() const override;
std::size_t startPage() const;
protected:
void internalParseHeader(Diagnostics &diag, AbortableProgressFeedback &progress) override;
private:
void calculateDurationViaSampleCount(std::uint16_t preSkip = 0);
std::size_t m_startPage;
OggContainer &m_container;
std::uint32_t m_currentSequenceNumber;
};
inline std::size_t OggStream::startPage() const
{
return m_startPage;
}
inline TrackType OggStream::type() const
{
return TrackType::OggStream;
}
} // namespace TagParser
#endif // TAG_PARSER_OGGSTREAM_H