#ifndef MEDIA_OGGCONTAINER_H #define MEDIA_OGGCONTAINER_H #include "oggpage.h" #include "oggstream.h" #include "oggiterator.h" #include "../vorbis/vorbiscomment.h" #include "../genericcontainer.h" #include #include namespace Media { class MediaFileInfo; class LIB_EXPORT OggContainer : public GenericContainer { friend class OggStream; public: OggContainer(MediaFileInfo &fileInfo, uint64 startOffset); ~OggContainer(); bool isChecksumValidationEnabled() const; void setChecksumValidationEnabled(bool enabled); protected: void internalParseHeader(); void internalParseTags(); void internalParseTracks(); void internalMakeFile(); private: void ariseComment(std::vector::size_type pageIndex, std::vector::size_type segmentIndex); std::unordered_map >::size_type> m_streamsBySerialNo; std::list::size_type, std::vector::size_type, std::vector >::size_type> > m_commentTable; OggIterator m_iterator; bool m_validateChecksums; }; /*! * \brief Returns whether checksum validation is enabled. * * If checksum validation is enabled, the parser will validate the OGG pages by * checking the CRC32 checksum. * * \sa setChecksumValidationEnabled() */ inline bool OggContainer::isChecksumValidationEnabled() const { return m_validateChecksums; } /*! * \brief Sets whether checksum validation is enabled. * \sa isChecksumValidationEnabled() */ inline void OggContainer::setChecksumValidationEnabled(bool enabled) { m_validateChecksums = enabled; } } #endif // MEDIA_OGGCONTAINER_H