From: Steve Lhomme Date: Tue, 6 Apr 2010 17:20:14 +0000 (+0000) Subject: move the default values in the .cpp files via the new declaration macros X-Git-Tag: release-0.9.0~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=becc59795106cd28808c4de33d7490b9f155ed57;p=libmatroska move the default values in the .cpp files via the new declaration macros git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@77 a6f86f6d-0131-4f8e-9e7b-e335508773d5 --- diff --git a/matroska/KaxAttached.h b/matroska/KaxAttached.h index 9b60f96..23d0eb0 100644 --- a/matroska/KaxAttached.h +++ b/matroska/KaxAttached.h @@ -41,46 +41,42 @@ #include "ebml/EbmlString.h" #include "ebml/EbmlBinary.h" #include "ebml/EbmlUInteger.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxAttached : public EbmlMaster { +DECLARE_MKX_MASTER(KaxAttached) public: - KaxAttached(); KaxAttached(const KaxAttached & ElementToClone) : EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxAttached) }; -class MATROSKA_DLL_API KaxFileDescription : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxFileDescription) public: - KaxFileDescription() {} KaxFileDescription(const KaxFileDescription & ElementToClone) : EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxFileDescription) }; -class MATROSKA_DLL_API KaxFileName : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxFileName) public: - KaxFileName() {} KaxFileName(const KaxFileName & ElementToClone) : EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxFileName) }; -class MATROSKA_DLL_API KaxMimeType : public EbmlString { +DECLARE_MKX_STRING(KaxMimeType) public: - KaxMimeType() {} KaxMimeType(const KaxMimeType & ElementToClone) : EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxMimeType) }; -class MATROSKA_DLL_API KaxFileData : public EbmlBinary { +DECLARE_MKX_BINARY(KaxFileData) public: - KaxFileData() {} KaxFileData(const KaxFileData & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside @@ -88,18 +84,16 @@ class MATROSKA_DLL_API KaxFileData : public EbmlBinary { EBML_CONCRETE_CLASS(KaxFileData) }; -class MATROSKA_DLL_API KaxFileReferral : public EbmlBinary { +DECLARE_MKX_BINARY(KaxFileReferral) public: - KaxFileReferral() {} KaxFileReferral(const KaxFileReferral & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxFileReferral) }; -class MATROSKA_DLL_API KaxFileUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxFileUID) public: - KaxFileUID() {} KaxFileUID(const KaxFileUID & ElementToClone) : EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxFileUID) diff --git a/matroska/KaxAttachments.h b/matroska/KaxAttachments.h index 15458ba..c574714 100644 --- a/matroska/KaxAttachments.h +++ b/matroska/KaxAttachments.h @@ -37,14 +37,14 @@ #include "matroska/KaxTypes.h" #include "ebml/EbmlMaster.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxAttachments : public EbmlMaster { +DECLARE_MKX_MASTER(KaxAttachments) public: - KaxAttachments(); KaxAttachments(const KaxAttachments & ElementToClone) : EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxAttachments) diff --git a/matroska/KaxBlock.h b/matroska/KaxBlock.h index d0f56c3..fe7efdb 100644 --- a/matroska/KaxBlock.h +++ b/matroska/KaxBlock.h @@ -1,424 +1,420 @@ -/**************************************************************************** -** libmatroska : parse Matroska files, see http://www.matroska.org/ -** -** -** -** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. -** -** This library is free software; you can redistribute it and/or -** modify it under the terms of the GNU Lesser General Public -** License as published by the Free Software Foundation; either -** version 2.1 of the License, or (at your option) any later version. -** -** This library is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -** Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public -** License along with this library; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -** -** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** -** Contact license@matroska.org if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -/*! - \file - \todo add a PureBlock class to group functionalities between Block and BlockVirtual - \version \$Id: KaxBlock.h,v 1.24 2004/04/14 23:26:17 robux4 Exp $ - \author Steve Lhomme - \author Julien Coloos -*/ -#ifndef LIBMATROSKA_BLOCK_H -#define LIBMATROSKA_BLOCK_H - -#include - -#include "matroska/KaxTypes.h" -#include "ebml/EbmlBinary.h" -#include "ebml/EbmlMaster.h" -#include "matroska/KaxTracks.h" - -using namespace LIBEBML_NAMESPACE; - -START_LIBMATROSKA_NAMESPACE - -class KaxCluster; -class KaxReferenceBlock; -class KaxInternalBlock; -class KaxBlockBlob; - -class MATROSKA_DLL_API DataBuffer { - protected: - binary * myBuffer; - uint32 mySize; - bool bValidValue; - bool (*myFreeBuffer)(const DataBuffer & aBuffer); // method to free the internal buffer - - public: - DataBuffer(binary * aBuffer, uint32 aSize, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = NULL) - :myBuffer(aBuffer) - ,mySize(aSize) - ,bValidValue(true) - ,myFreeBuffer(aFreeBuffer) - {} - virtual ~DataBuffer() {} - virtual binary * Buffer() {return myBuffer;} - virtual uint32 & Size() {return mySize;}; - virtual const binary * Buffer() const {return myBuffer;} - virtual const uint32 Size() const {return mySize;}; - bool FreeBuffer(const DataBuffer & aBuffer) { - bool bResult = true; - if (myBuffer != NULL && myFreeBuffer != NULL && bValidValue) { - bResult = myFreeBuffer(aBuffer); - myBuffer = NULL; - bValidValue = false; - } - return bResult; - } - - virtual DataBuffer * Clone(); -}; - -class MATROSKA_DLL_API SimpleDataBuffer : public DataBuffer { - public: - SimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = myFreeBuffer) - :DataBuffer(aBuffer + aOffset, aSize, aFreeBuffer) - ,Offset(aOffset) - ,BaseBuffer(aBuffer) - {} - virtual ~SimpleDataBuffer() {} - - DataBuffer * Clone() {return new SimpleDataBuffer(*this);} - - protected: - uint32 Offset; - binary * BaseBuffer; - - static bool myFreeBuffer(const DataBuffer & aBuffer) - { - binary *_Buffer = static_cast(&aBuffer)->BaseBuffer; - if (_Buffer != NULL) - free(_Buffer); - return true; - } - - SimpleDataBuffer(const SimpleDataBuffer & ToClone); -}; - -/*! - \note the data is copied locally, it can be freed right away -* / -class MATROSKA_DLL_API NotSoSimpleDataBuffer : public SimpleDataBuffer { - public: - NotSoSimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset) - :SimpleDataBuffer(new binary[aSize - aOffset], aSize, 0) - { - memcpy(BaseBuffer, aBuffer + aOffset, aSize - aOffset); - } -}; -*/ - -class MATROSKA_DLL_API KaxBlockGroup : public EbmlMaster { - public: - KaxBlockGroup(); - KaxBlockGroup(const KaxBlockGroup & ElementToClone) :EbmlMaster(ElementToClone) {} - - ~KaxBlockGroup(); - - /*! - \brief Addition of a frame without references - */ - bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO); - /*! - \brief Addition of a frame with a backward reference (P frame) - */ - bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO); - - /*! - \brief Addition of a frame with a backward+forward reference (B frame) - */ - bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO); - bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockBlob * PastBlock, const KaxBlockBlob * ForwBlock, LacingType lacing = LACING_AUTO); - - void SetParent(KaxCluster & aParentCluster); - - void SetParentTrack(const KaxTrackEntry & aParentTrack) { - ParentTrack = &aParentTrack; - } - - /*! - \brief Set the duration of the contained frame(s) (for the total number of frames) - */ - void SetBlockDuration(uint64 TimeLength); - bool GetBlockDuration(uint64 &TheTimecode) const; - - /*! - \return the global timecode of this Block (not just the delta to the Cluster) - */ - uint64 GlobalTimecode() const; - uint64 GlobalTimecodeScale() const { - assert(ParentTrack != NULL); - return ParentTrack->GlobalTimecodeScale(); - } - - uint16 TrackNumber() const; - - uint64 ClusterPosition() const; - - /*! - \return the number of references to other frames - */ - unsigned int ReferenceCount() const; - const KaxReferenceBlock & Reference(unsigned int Index) const; - - /*! - \brief release all the frames of all Blocks - */ - void ReleaseFrames(); - - operator KaxInternalBlock &(); - - const KaxCluster *GetParentCluster() const { return ParentCluster; } - - protected: - KaxCluster * ParentCluster; - const KaxTrackEntry * ParentTrack; - - EBML_CONCRETE_CLASS(KaxBlockGroup) -}; - -class KaxInternalBlock : public EbmlBinary { - public: - KaxInternalBlock( bool bSimple ) :bLocalTimecodeUsed(false), mLacing(LACING_AUTO), mInvisible(false) - ,ParentCluster(NULL), bIsSimple(bSimple), bIsKeyframe(true), bIsDiscardable(false) - {} - KaxInternalBlock(const KaxInternalBlock & ElementToClone); - ~KaxInternalBlock(); - bool ValidateSize() const; - - uint16 TrackNum() const {return TrackNumber;} - /*! - \todo !!!! This method needs to be changes ! - */ - uint64 GlobalTimecode() const {return Timecode;} - - /*! - \note override this function to generate the Data/Size on the fly, unlike the usual binary elements - */ - filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); - filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA); - - /*! - \brief Only read the head of the Block (not internal data) - \note convenient when you are parsing the file quickly - */ - uint64 ReadInternalHead(IOCallback & input); - - unsigned int NumberFrames() const { return SizeList.size();} - DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];} - - bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false); - - /*! - \brief release all the frames of all Blocks - */ - void ReleaseFrames(); - - void SetParent(KaxCluster & aParentCluster); - - /*! - \return Returns the lacing type that produces the smallest footprint. - */ - LacingType GetBestLacingType() const; - - /*! - \param FrameNumber 0 for the first frame - \return the position in the stream for a given frame - \note return -1 if the position doesn't exist - */ - int64 GetDataPosition(size_t FrameNumber = 0); - - /*! - \param FrameNumber 0 for the first frame - \return the size of a given frame - \note return -1 if the position doesn't exist - */ - int64 GetFrameSize(size_t FrameNumber = 0); - - bool IsInvisible() const { return mInvisible; } - - uint64 ClusterPosition() const; - - protected: - std::vector myBuffers; - std::vector SizeList; - uint64 Timecode; // temporary timecode of the first frame, non scaled - int16 LocalTimecode; - bool bLocalTimecodeUsed; - uint16 TrackNumber; - LacingType mLacing; - bool mInvisible; - uint64 FirstFrameLocation; - - filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false); - - KaxCluster * ParentCluster; - bool bIsSimple; - bool bIsKeyframe; - bool bIsDiscardable; -}; - -class MATROSKA_DLL_API KaxBlock : public KaxInternalBlock { - public: - KaxBlock() :KaxInternalBlock(false) {} - - EBML_CONCRETE_CLASS(KaxBlock) -}; - -#if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxSimpleBlock : public KaxInternalBlock { - public: - KaxSimpleBlock() :KaxInternalBlock(true) {} - - void SetKeyframe(bool b_keyframe) { bIsKeyframe = b_keyframe; } - void SetDiscardable(bool b_discard) { bIsDiscardable = b_discard; } - - bool IsKeyframe() const { return bIsKeyframe; } - bool IsDiscardable() const { return bIsDiscardable; } - - operator KaxInternalBlock &() { return *this; } - - EBML_CONCRETE_CLASS(KaxSimpleBlock) -}; -#endif // MATROSKA_VERSION - -class MATROSKA_DLL_API KaxBlockBlob { -public: - KaxBlockBlob(BlockBlobType sblock_mode) :ParentCluster(NULL), SimpleBlockMode(sblock_mode) { - bUseSimpleBlock = (sblock_mode != BLOCK_BLOB_NO_SIMPLE); - Block.group = NULL; - } - - ~KaxBlockBlob() { -#if MATROSKA_VERSION >= 2 - if (bUseSimpleBlock) - delete Block.simpleblock; - else -#endif // MATROSKA_VERSION - delete Block.group; - } - - operator KaxBlockGroup &(); - operator const KaxBlockGroup &() const; -#if MATROSKA_VERSION >= 2 - operator KaxSimpleBlock &(); -#endif - operator KaxInternalBlock &(); - operator const KaxInternalBlock &() const; - - void SetBlockGroup( KaxBlockGroup &BlockRef ); - - void SetBlockDuration(uint64 TimeLength); - - void SetParent(KaxCluster & aParentCluster); - bool AddFrameAuto(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, const KaxBlockBlob * PastBlock = NULL, const KaxBlockBlob * ForwBlock = NULL); - - bool IsSimpleBlock() const {return bUseSimpleBlock;} - - bool ReplaceSimpleByGroup(); -protected: - KaxCluster * ParentCluster; - union { - KaxBlockGroup *group; -#if MATROSKA_VERSION >= 2 - KaxSimpleBlock *simpleblock; -#endif // MATROSKA_VERSION - } Block; - bool bUseSimpleBlock; - BlockBlobType SimpleBlockMode; -}; - -class MATROSKA_DLL_API KaxBlockDuration : public EbmlUInteger { - public: - KaxBlockDuration() {} - KaxBlockDuration(const KaxBlockDuration & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxBlockDuration) -}; - -#if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxBlockVirtual : public EbmlBinary { - public: - KaxBlockVirtual() :ParentCluster(NULL) {SetBuffer(DataBlock,sizeof(DataBlock)); SetValueIsSet(false);} - KaxBlockVirtual(const KaxBlockVirtual & ElementToClone); - ~KaxBlockVirtual(); - bool ValidateSize() const {return true;} - - /*! - \note override this function to generate the Data/Size on the fly, unlike the usual binary elements - */ - filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); - - void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;} - - protected: - uint64 Timecode; // temporary timecode of the first frame if there are more than one - uint16 TrackNumber; - binary DataBlock[5]; - - const KaxCluster * ParentCluster; - - EBML_CONCRETE_CLASS(KaxBlockVirtual) -}; -#endif // MATROSKA_VERSION - -class MATROSKA_DLL_API KaxBlockAdditional : public EbmlBinary { - public: - KaxBlockAdditional() {} - KaxBlockAdditional(const KaxBlockAdditional & ElementToClone) :EbmlBinary(ElementToClone){} - bool ValidateSize() const {return true;} - - EBML_CONCRETE_CLASS(KaxBlockAdditional) -}; - -class MATROSKA_DLL_API KaxBlockAdditions : public EbmlMaster { - public: - KaxBlockAdditions(); - KaxBlockAdditions(const KaxBlockAdditions & ElementToClone) :EbmlMaster(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxBlockAdditions) -}; - -class MATROSKA_DLL_API KaxBlockMore : public EbmlMaster { - public: - KaxBlockMore(); - KaxBlockMore(const KaxBlockMore & ElementToClone) :EbmlMaster(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxBlockMore) -}; - -class MATROSKA_DLL_API KaxBlockAddID : public EbmlUInteger { - public: - KaxBlockAddID() :EbmlUInteger(1) {} - KaxBlockAddID(const KaxBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxBlockAddID) -}; - -class MATROSKA_DLL_API KaxCodecState : public EbmlBinary { - public: - KaxCodecState() {} - KaxCodecState(const KaxCodecState & ElementToClone) :EbmlBinary(ElementToClone){} - - bool ValidateSize() const {return true;} - - EBML_CONCRETE_CLASS(KaxCodecState) -}; - -END_LIBMATROSKA_NAMESPACE - -#endif // LIBMATROSKA_BLOCK_H +/**************************************************************************** +** libmatroska : parse Matroska files, see http://www.matroska.org/ +** +** +** +** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License as published by the Free Software Foundation; either +** version 2.1 of the License, or (at your option) any later version. +** +** This library is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Lesser General Public License for more details. +** +** You should have received a copy of the GNU Lesser General Public +** License along with this library; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +** +** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** +** Contact license@matroska.org if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +/*! + \file + \todo add a PureBlock class to group functionalities between Block and BlockVirtual + \version \$Id: KaxBlock.h,v 1.24 2004/04/14 23:26:17 robux4 Exp $ + \author Steve Lhomme + \author Julien Coloos +*/ +#ifndef LIBMATROSKA_BLOCK_H +#define LIBMATROSKA_BLOCK_H + +#include + +#include "matroska/KaxTypes.h" +#include "ebml/EbmlBinary.h" +#include "ebml/EbmlMaster.h" +#include "matroska/KaxTracks.h" +#include "matroska/KaxDefines.h" + +using namespace LIBEBML_NAMESPACE; + +START_LIBMATROSKA_NAMESPACE + +class KaxCluster; +class KaxReferenceBlock; +class KaxInternalBlock; +class KaxBlockBlob; + +class MATROSKA_DLL_API DataBuffer { + protected: + binary * myBuffer; + uint32 mySize; + bool bValidValue; + bool (*myFreeBuffer)(const DataBuffer & aBuffer); // method to free the internal buffer + + public: + DataBuffer(binary * aBuffer, uint32 aSize, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = NULL) + :myBuffer(aBuffer) + ,mySize(aSize) + ,bValidValue(true) + ,myFreeBuffer(aFreeBuffer) + {} + virtual ~DataBuffer() {} + virtual binary * Buffer() {return myBuffer;} + virtual uint32 & Size() {return mySize;}; + virtual const binary * Buffer() const {return myBuffer;} + virtual const uint32 Size() const {return mySize;}; + bool FreeBuffer(const DataBuffer & aBuffer) { + bool bResult = true; + if (myBuffer != NULL && myFreeBuffer != NULL && bValidValue) { + bResult = myFreeBuffer(aBuffer); + myBuffer = NULL; + bValidValue = false; + } + return bResult; + } + + virtual DataBuffer * Clone(); +}; + +class MATROSKA_DLL_API SimpleDataBuffer : public DataBuffer { + public: + SimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = myFreeBuffer) + :DataBuffer(aBuffer + aOffset, aSize, aFreeBuffer) + ,Offset(aOffset) + ,BaseBuffer(aBuffer) + {} + virtual ~SimpleDataBuffer() {} + + DataBuffer * Clone() {return new SimpleDataBuffer(*this);} + + protected: + uint32 Offset; + binary * BaseBuffer; + + static bool myFreeBuffer(const DataBuffer & aBuffer) + { + binary *_Buffer = static_cast(&aBuffer)->BaseBuffer; + if (_Buffer != NULL) + free(_Buffer); + return true; + } + + SimpleDataBuffer(const SimpleDataBuffer & ToClone); +}; + +/*! + \note the data is copied locally, it can be freed right away +* / +class MATROSKA_DLL_API NotSoSimpleDataBuffer : public SimpleDataBuffer { + public: + NotSoSimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset) + :SimpleDataBuffer(new binary[aSize - aOffset], aSize, 0) + { + memcpy(BaseBuffer, aBuffer + aOffset, aSize - aOffset); + } +}; +*/ + +DECLARE_MKX_MASTER(KaxBlockGroup) + public: + KaxBlockGroup(const KaxBlockGroup & ElementToClone) :EbmlMaster(ElementToClone) {} + + ~KaxBlockGroup(); + + /*! + \brief Addition of a frame without references + */ + bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO); + /*! + \brief Addition of a frame with a backward reference (P frame) + */ + bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO); + + /*! + \brief Addition of a frame with a backward+forward reference (B frame) + */ + bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO); + bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockBlob * PastBlock, const KaxBlockBlob * ForwBlock, LacingType lacing = LACING_AUTO); + + void SetParent(KaxCluster & aParentCluster); + + void SetParentTrack(const KaxTrackEntry & aParentTrack) { + ParentTrack = &aParentTrack; + } + + /*! + \brief Set the duration of the contained frame(s) (for the total number of frames) + */ + void SetBlockDuration(uint64 TimeLength); + bool GetBlockDuration(uint64 &TheTimecode) const; + + /*! + \return the global timecode of this Block (not just the delta to the Cluster) + */ + uint64 GlobalTimecode() const; + uint64 GlobalTimecodeScale() const { + assert(ParentTrack != NULL); + return ParentTrack->GlobalTimecodeScale(); + } + + uint16 TrackNumber() const; + + uint64 ClusterPosition() const; + + /*! + \return the number of references to other frames + */ + unsigned int ReferenceCount() const; + const KaxReferenceBlock & Reference(unsigned int Index) const; + + /*! + \brief release all the frames of all Blocks + */ + void ReleaseFrames(); + + operator KaxInternalBlock &(); + + const KaxCluster *GetParentCluster() const { return ParentCluster; } + + protected: + KaxCluster * ParentCluster; + const KaxTrackEntry * ParentTrack; + + EBML_CONCRETE_CLASS(KaxBlockGroup) +}; + +class KaxInternalBlock : public EbmlBinary { + public: + KaxInternalBlock( bool bSimple ) :bLocalTimecodeUsed(false), mLacing(LACING_AUTO), mInvisible(false) + ,ParentCluster(NULL), bIsSimple(bSimple), bIsKeyframe(true), bIsDiscardable(false) + {} + KaxInternalBlock(const KaxInternalBlock & ElementToClone); + ~KaxInternalBlock(); + bool ValidateSize() const; + + uint16 TrackNum() const {return TrackNumber;} + /*! + \todo !!!! This method needs to be changes ! + */ + uint64 GlobalTimecode() const {return Timecode;} + + /*! + \note override this function to generate the Data/Size on the fly, unlike the usual binary elements + */ + filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); + filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA); + + /*! + \brief Only read the head of the Block (not internal data) + \note convenient when you are parsing the file quickly + */ + uint64 ReadInternalHead(IOCallback & input); + + unsigned int NumberFrames() const { return SizeList.size();} + DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];} + + bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false); + + /*! + \brief release all the frames of all Blocks + */ + void ReleaseFrames(); + + void SetParent(KaxCluster & aParentCluster); + + /*! + \return Returns the lacing type that produces the smallest footprint. + */ + LacingType GetBestLacingType() const; + + /*! + \param FrameNumber 0 for the first frame + \return the position in the stream for a given frame + \note return -1 if the position doesn't exist + */ + int64 GetDataPosition(size_t FrameNumber = 0); + + /*! + \param FrameNumber 0 for the first frame + \return the size of a given frame + \note return -1 if the position doesn't exist + */ + int64 GetFrameSize(size_t FrameNumber = 0); + + bool IsInvisible() const { return mInvisible; } + + uint64 ClusterPosition() const; + + protected: + std::vector myBuffers; + std::vector SizeList; + uint64 Timecode; // temporary timecode of the first frame, non scaled + int16 LocalTimecode; + bool bLocalTimecodeUsed; + uint16 TrackNumber; + LacingType mLacing; + bool mInvisible; + uint64 FirstFrameLocation; + + filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false); + + KaxCluster * ParentCluster; + bool bIsSimple; + bool bIsKeyframe; + bool bIsDiscardable; +}; + +DECLARE_MKX_CONTEXT(KaxBlock); +class MATROSKA_DLL_API KaxBlock : public KaxInternalBlock { + public: + KaxBlock() :KaxInternalBlock(false) {} + + EBML_CONCRETE_CLASS(KaxBlock) +}; + +#if MATROSKA_VERSION >= 2 +DECLARE_MKX_CONTEXT(KaxSimpleBlock); +class MATROSKA_DLL_API KaxSimpleBlock : public KaxInternalBlock { + public: + KaxSimpleBlock() :KaxInternalBlock(true) {} + + void SetKeyframe(bool b_keyframe) { bIsKeyframe = b_keyframe; } + void SetDiscardable(bool b_discard) { bIsDiscardable = b_discard; } + + bool IsKeyframe() const { return bIsKeyframe; } + bool IsDiscardable() const { return bIsDiscardable; } + + operator KaxInternalBlock &() { return *this; } + + EBML_CONCRETE_CLASS(KaxSimpleBlock) +}; +#endif // MATROSKA_VERSION + +class MATROSKA_DLL_API KaxBlockBlob { +public: + KaxBlockBlob(BlockBlobType sblock_mode) :ParentCluster(NULL), SimpleBlockMode(sblock_mode) { + bUseSimpleBlock = (sblock_mode != BLOCK_BLOB_NO_SIMPLE); + Block.group = NULL; + } + + ~KaxBlockBlob() { +#if MATROSKA_VERSION >= 2 + if (bUseSimpleBlock) + delete Block.simpleblock; + else +#endif // MATROSKA_VERSION + delete Block.group; + } + + operator KaxBlockGroup &(); + operator const KaxBlockGroup &() const; +#if MATROSKA_VERSION >= 2 + operator KaxSimpleBlock &(); +#endif + operator KaxInternalBlock &(); + operator const KaxInternalBlock &() const; + + void SetBlockGroup( KaxBlockGroup &BlockRef ); + + void SetBlockDuration(uint64 TimeLength); + + void SetParent(KaxCluster & aParentCluster); + bool AddFrameAuto(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, const KaxBlockBlob * PastBlock = NULL, const KaxBlockBlob * ForwBlock = NULL); + + bool IsSimpleBlock() const {return bUseSimpleBlock;} + + bool ReplaceSimpleByGroup(); +protected: + KaxCluster * ParentCluster; + union { + KaxBlockGroup *group; +#if MATROSKA_VERSION >= 2 + KaxSimpleBlock *simpleblock; +#endif // MATROSKA_VERSION + } Block; + bool bUseSimpleBlock; + BlockBlobType SimpleBlockMode; +}; + +DECLARE_MKX_UINTEGER(KaxBlockDuration) + public: + KaxBlockDuration(const KaxBlockDuration & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxBlockDuration) +}; + +#if MATROSKA_VERSION >= 2 +DECLARE_MKX_BINARY_CONS(KaxBlockVirtual) + public: + KaxBlockVirtual() :ParentCluster(NULL) {SetBuffer(DataBlock,sizeof(DataBlock)); SetValueIsSet(false);} + KaxBlockVirtual(const KaxBlockVirtual & ElementToClone); + ~KaxBlockVirtual(); + bool ValidateSize() const {return true;} + + /*! + \note override this function to generate the Data/Size on the fly, unlike the usual binary elements + */ + filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); + + void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;} + + protected: + uint64 Timecode; // temporary timecode of the first frame if there are more than one + uint16 TrackNumber; + binary DataBlock[5]; + + const KaxCluster * ParentCluster; + + EBML_CONCRETE_CLASS(KaxBlockVirtual) +}; +#endif // MATROSKA_VERSION + +DECLARE_MKX_BINARY(KaxBlockAdditional) + public: + KaxBlockAdditional(const KaxBlockAdditional & ElementToClone) :EbmlBinary(ElementToClone){} + bool ValidateSize() const {return true;} + + EBML_CONCRETE_CLASS(KaxBlockAdditional) +}; + +DECLARE_MKX_MASTER(KaxBlockAdditions) + public: + KaxBlockAdditions(const KaxBlockAdditions & ElementToClone) :EbmlMaster(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxBlockAdditions) +}; + +DECLARE_MKX_MASTER(KaxBlockMore) + public: + KaxBlockMore(const KaxBlockMore & ElementToClone) :EbmlMaster(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxBlockMore) +}; + +DECLARE_MKX_UINTEGER(KaxBlockAddID) + public: + KaxBlockAddID(const KaxBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxBlockAddID) +}; + +DECLARE_MKX_BINARY(KaxCodecState) + public: + KaxCodecState(const KaxCodecState & ElementToClone) :EbmlBinary(ElementToClone){} + + bool ValidateSize() const {return true;} + + EBML_CONCRETE_CLASS(KaxCodecState) +}; + +END_LIBMATROSKA_NAMESPACE + +#endif // LIBMATROSKA_BLOCK_H diff --git a/matroska/KaxBlockData.h b/matroska/KaxBlockData.h index 00dde60..81ea126 100644 --- a/matroska/KaxBlockData.h +++ b/matroska/KaxBlockData.h @@ -37,6 +37,7 @@ #include "ebml/EbmlMaster.h" #include "ebml/EbmlUInteger.h" #include "ebml/EbmlSInteger.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; @@ -46,9 +47,8 @@ class KaxReferenceBlock; class KaxBlockGroup; class KaxBlockBlob; -class MATROSKA_DLL_API KaxReferencePriority : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxReferencePriority) public: - KaxReferencePriority() :EbmlUInteger(0) {} KaxReferencePriority(const KaxReferencePriority & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxReferencePriority) @@ -57,7 +57,7 @@ class MATROSKA_DLL_API KaxReferencePriority : public EbmlUInteger { /*! \brief element used for B frame-likes */ -class MATROSKA_DLL_API KaxReferenceBlock : public EbmlSInteger { +DECLARE_MKX_SINTEGER_CONS(KaxReferenceBlock) public: KaxReferenceBlock() :RefdBlock(NULL), ParentBlock(NULL) {bTimecodeSet = false;} KaxReferenceBlock(const KaxReferenceBlock & ElementToClone) :EbmlSInteger(ElementToClone), bTimecodeSet(ElementToClone.bTimecodeSet) {} @@ -82,66 +82,58 @@ class MATROSKA_DLL_API KaxReferenceBlock : public EbmlSInteger { }; #if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxReferenceVirtual : public EbmlSInteger { +DECLARE_MKX_SINTEGER(KaxReferenceVirtual) public: - KaxReferenceVirtual() {} KaxReferenceVirtual(const KaxReferenceVirtual & ElementToClone) :EbmlSInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxReferenceVirtual) }; #endif // MATROSKA_VERSION -class MATROSKA_DLL_API KaxTimeSlice : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTimeSlice) public: - KaxTimeSlice(); KaxTimeSlice(const KaxTimeSlice & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTimeSlice) }; -class MATROSKA_DLL_API KaxSlices : public EbmlMaster { +DECLARE_MKX_MASTER(KaxSlices) public: - KaxSlices(); KaxSlices(const KaxSlices & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxSlices) }; -class MATROSKA_DLL_API KaxSliceLaceNumber : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxSliceLaceNumber) public: - KaxSliceLaceNumber() :EbmlUInteger(0) {} KaxSliceLaceNumber(const KaxSliceLaceNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxSliceLaceNumber) }; -class MATROSKA_DLL_API KaxSliceFrameNumber : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxSliceFrameNumber) public: - KaxSliceFrameNumber() :EbmlUInteger(0) {} KaxSliceFrameNumber(const KaxSliceFrameNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxSliceFrameNumber) }; -class MATROSKA_DLL_API KaxSliceBlockAddID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxSliceBlockAddID) public: - KaxSliceBlockAddID() :EbmlUInteger(0) {} KaxSliceBlockAddID(const KaxSliceBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxSliceBlockAddID) }; -class MATROSKA_DLL_API KaxSliceDelay : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxSliceDelay) public: - KaxSliceDelay() :EbmlUInteger(0) {} KaxSliceDelay(const KaxSliceDelay & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxSliceDelay) }; -class MATROSKA_DLL_API KaxSliceDuration : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxSliceDuration) public: - KaxSliceDuration() {} KaxSliceDuration(const KaxSliceDuration & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxSliceDuration) diff --git a/matroska/KaxChapters.h b/matroska/KaxChapters.h index 1f1f720..dc42b83 100644 --- a/matroska/KaxChapters.h +++ b/matroska/KaxChapters.h @@ -41,225 +41,199 @@ #include "ebml/EbmlUnicodeString.h" #include "ebml/EbmlString.h" #include "ebml/EbmlBinary.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxChapters : public EbmlMaster { +DECLARE_MKX_MASTER(KaxChapters) public: - KaxChapters(); KaxChapters(const KaxChapters & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapters) }; -class MATROSKA_DLL_API KaxEditionEntry : public EbmlMaster { +DECLARE_MKX_MASTER(KaxEditionEntry) public: - KaxEditionEntry(); KaxEditionEntry(const KaxEditionEntry & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxEditionEntry) }; -class MATROSKA_DLL_API KaxEditionUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxEditionUID) public: - KaxEditionUID() {} KaxEditionUID(const KaxEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxEditionUID) }; -class MATROSKA_DLL_API KaxEditionFlagHidden : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxEditionFlagHidden) public: - KaxEditionFlagHidden(): EbmlUInteger(0) {} KaxEditionFlagHidden(const KaxEditionFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxEditionFlagHidden) }; -class MATROSKA_DLL_API KaxEditionFlagDefault : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxEditionFlagDefault) public: - KaxEditionFlagDefault(): EbmlUInteger(0) {} KaxEditionFlagDefault(const KaxEditionFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxEditionFlagDefault) }; -class MATROSKA_DLL_API KaxEditionFlagOrdered : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxEditionFlagOrdered) public: - KaxEditionFlagOrdered(): EbmlUInteger(0) {} KaxEditionFlagOrdered(const KaxEditionFlagOrdered & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxEditionFlagOrdered) }; -class MATROSKA_DLL_API KaxChapterAtom : public EbmlMaster { +DECLARE_MKX_MASTER(KaxChapterAtom) public: - KaxChapterAtom(); KaxChapterAtom(const KaxChapterAtom & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterAtom) }; -class MATROSKA_DLL_API KaxChapterUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterUID) public: - KaxChapterUID() {} KaxChapterUID(const KaxChapterUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterUID) }; -class MATROSKA_DLL_API KaxChapterTimeStart : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterTimeStart) public: - KaxChapterTimeStart() {} KaxChapterTimeStart(const KaxChapterTimeStart & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterTimeStart) }; -class MATROSKA_DLL_API KaxChapterTimeEnd : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterTimeEnd) public: - KaxChapterTimeEnd() {} KaxChapterTimeEnd(const KaxChapterTimeEnd & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterTimeEnd) }; -class MATROSKA_DLL_API KaxChapterFlagHidden : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterFlagHidden) public: - KaxChapterFlagHidden(): EbmlUInteger(0) {} KaxChapterFlagHidden(const KaxChapterFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterFlagHidden) }; -class MATROSKA_DLL_API KaxChapterFlagEnabled : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled) public: - KaxChapterFlagEnabled(): EbmlUInteger(1) {} KaxChapterFlagEnabled(const KaxChapterFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterFlagEnabled) }; -class MATROSKA_DLL_API KaxChapterSegmentUID : public EbmlBinary { +DECLARE_MKX_BINARY(KaxChapterSegmentUID) public: - KaxChapterSegmentUID() {} KaxChapterSegmentUID(const KaxChapterSegmentUID & ElementToClone) :EbmlBinary(ElementToClone) {} bool ValidateSize() const { return (GetSize() == 16);} EBML_CONCRETE_CLASS(KaxChapterSegmentUID) }; -class MATROSKA_DLL_API KaxChapterSegmentEditionUID : public EbmlBinary { +DECLARE_MKX_BINARY(KaxChapterSegmentEditionUID) public: - KaxChapterSegmentEditionUID() {} KaxChapterSegmentEditionUID(const KaxChapterSegmentEditionUID & ElementToClone) :EbmlBinary(ElementToClone) {} bool ValidateSize() const { return (GetSize() == 16);} EBML_CONCRETE_CLASS(KaxChapterSegmentEditionUID) }; -class MATROSKA_DLL_API KaxChapterPhysicalEquiv : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterPhysicalEquiv) public: - KaxChapterPhysicalEquiv(): EbmlUInteger() {} KaxChapterPhysicalEquiv(const KaxChapterPhysicalEquiv & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterPhysicalEquiv) }; -class MATROSKA_DLL_API KaxChapterTrack : public EbmlMaster { +DECLARE_MKX_MASTER(KaxChapterTrack) public: - KaxChapterTrack(); KaxChapterTrack(const KaxChapterTrack & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterTrack) }; -class MATROSKA_DLL_API KaxChapterTrackNumber : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterTrackNumber) public: - KaxChapterTrackNumber() {} KaxChapterTrackNumber(const KaxChapterTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterTrackNumber) }; -class MATROSKA_DLL_API KaxChapterDisplay : public EbmlMaster { +DECLARE_MKX_MASTER(KaxChapterDisplay) public: - KaxChapterDisplay(); KaxChapterDisplay(const KaxChapterDisplay & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterDisplay) }; -class MATROSKA_DLL_API KaxChapterString : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxChapterString) public: - KaxChapterString() {} KaxChapterString(const KaxChapterString & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterString) }; -class MATROSKA_DLL_API KaxChapterLanguage : public EbmlString { +DECLARE_MKX_STRING(KaxChapterLanguage) public: - KaxChapterLanguage() :EbmlString("eng") {} KaxChapterLanguage(const KaxChapterLanguage & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterLanguage) }; -class MATROSKA_DLL_API KaxChapterCountry : public EbmlString { +DECLARE_MKX_STRING(KaxChapterCountry) public: - KaxChapterCountry() :EbmlString() {} KaxChapterCountry(const KaxChapterCountry & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterCountry) }; -class MATROSKA_DLL_API KaxChapterProcess : public EbmlMaster { +DECLARE_MKX_MASTER(KaxChapterProcess) public: - KaxChapterProcess(); KaxChapterProcess(const KaxChapterProcess & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterProcess) }; -class MATROSKA_DLL_API KaxChapterProcessCodecID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterProcessCodecID) public: - KaxChapterProcessCodecID() :EbmlUInteger(0) {} KaxChapterProcessCodecID(const KaxChapterProcessCodecID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterProcessCodecID) }; -class MATROSKA_DLL_API KaxChapterProcessPrivate : public EbmlBinary { +DECLARE_MKX_BINARY(KaxChapterProcessPrivate) public: - KaxChapterProcessPrivate() {} KaxChapterProcessPrivate(const KaxChapterProcessPrivate & ElementToClone) :EbmlBinary(ElementToClone) {} bool ValidateSize() const {return true;} EBML_CONCRETE_CLASS(KaxChapterProcessPrivate) }; -class MATROSKA_DLL_API KaxChapterProcessCommand : public EbmlMaster { +DECLARE_MKX_MASTER(KaxChapterProcessCommand) public: - KaxChapterProcessCommand(); KaxChapterProcessCommand(const KaxChapterProcessCommand & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterProcessCommand) }; -class MATROSKA_DLL_API KaxChapterProcessTime : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterProcessTime) public: - KaxChapterProcessTime() {} KaxChapterProcessTime(const KaxChapterProcessTime & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterProcessTime) }; -class MATROSKA_DLL_API KaxChapterProcessData : public EbmlBinary { +DECLARE_MKX_BINARY(KaxChapterProcessData) public: - KaxChapterProcessData() {} KaxChapterProcessData(const KaxChapterProcessData & ElementToClone) :EbmlBinary(ElementToClone) {} bool ValidateSize() const {return true;} diff --git a/matroska/KaxCluster.h b/matroska/KaxCluster.h index 80d86d2..bd1e55e 100644 --- a/matroska/KaxCluster.h +++ b/matroska/KaxCluster.h @@ -41,6 +41,7 @@ #include "matroska/KaxBlock.h" #include "matroska/KaxCues.h" #include "matroska/KaxClusterData.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; @@ -48,9 +49,8 @@ START_LIBMATROSKA_NAMESPACE class KaxSegment; -class MATROSKA_DLL_API KaxCluster : public EbmlMaster { +DECLARE_MKX_MASTER(KaxCluster) public: - KaxCluster(); KaxCluster(const KaxCluster & ElementToClone); /*! diff --git a/matroska/KaxClusterData.h b/matroska/KaxClusterData.h index 32b14e6..9f9cf2d 100644 --- a/matroska/KaxClusterData.h +++ b/matroska/KaxClusterData.h @@ -38,46 +38,42 @@ #include "matroska/KaxTypes.h" #include "ebml/EbmlMaster.h" #include "ebml/EbmlUInteger.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxClusterTimecode : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxClusterTimecode) public: - KaxClusterTimecode() {} KaxClusterTimecode(const KaxClusterTimecode & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxClusterTimecode) }; -class MATROSKA_DLL_API KaxClusterSilentTracks : public EbmlMaster { +DECLARE_MKX_MASTER(KaxClusterSilentTracks) public: - KaxClusterSilentTracks(); KaxClusterSilentTracks(const KaxClusterSilentTracks & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxClusterSilentTracks) }; -class MATROSKA_DLL_API KaxClusterSilentTrackNumber : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxClusterSilentTrackNumber) public: - KaxClusterSilentTrackNumber() {} KaxClusterSilentTrackNumber(const KaxClusterSilentTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxClusterSilentTrackNumber) }; -class MATROSKA_DLL_API KaxClusterPosition : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxClusterPosition) public: - KaxClusterPosition() {} KaxClusterPosition(const KaxClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxClusterPosition) }; -class MATROSKA_DLL_API KaxClusterPrevSize : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxClusterPrevSize) public: - KaxClusterPrevSize() {} KaxClusterPrevSize(const KaxClusterPrevSize & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxClusterPrevSize) diff --git a/matroska/KaxContentEncoding.h b/matroska/KaxContentEncoding.h index d508743..6b6bb6b 100644 --- a/matroska/KaxContentEncoding.h +++ b/matroska/KaxContentEncoding.h @@ -39,77 +39,70 @@ #include "ebml/EbmlMaster.h" #include "ebml/EbmlUInteger.h" #include "ebml/EbmlBinary.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxContentEncodings: public EbmlMaster { +DECLARE_MKX_MASTER(KaxContentEncodings) public: - KaxContentEncodings(); KaxContentEncodings(const KaxContentEncodings &ElementToClone): EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentEncodings) }; -class MATROSKA_DLL_API KaxContentEncoding: public EbmlMaster { +DECLARE_MKX_MASTER(KaxContentEncoding) public: - KaxContentEncoding(); KaxContentEncoding(const KaxContentEncoding &ElementToClone): EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentEncoding) }; -class MATROSKA_DLL_API KaxContentEncodingOrder: public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxContentEncodingOrder) public: - KaxContentEncodingOrder(): EbmlUInteger(0) {} KaxContentEncodingOrder(const KaxContentEncodingOrder &ElementToClone): EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentEncodingOrder) }; -class MATROSKA_DLL_API KaxContentEncodingScope: public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxContentEncodingScope) public: - KaxContentEncodingScope(): EbmlUInteger(1) {} KaxContentEncodingScope(const KaxContentEncodingScope &ElementToClone): EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentEncodingScope) }; -class MATROSKA_DLL_API KaxContentEncodingType: public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxContentEncodingType) public: - KaxContentEncodingType(): EbmlUInteger(0) {} KaxContentEncodingType(const KaxContentEncodingType &ElementToClone): EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentEncodingType) }; -class MATROSKA_DLL_API KaxContentCompression: public EbmlMaster { +DECLARE_MKX_MASTER(KaxContentCompression) public: - KaxContentCompression(); KaxContentCompression(const KaxContentCompression &ElementToClone): EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentCompression) }; -class MATROSKA_DLL_API KaxContentCompAlgo: public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxContentCompAlgo) public: - KaxContentCompAlgo(): EbmlUInteger(0) {} KaxContentCompAlgo(const KaxContentCompAlgo &ElementToClone): EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentCompAlgo) }; -class MATROSKA_DLL_API KaxContentCompSettings: public EbmlBinary { +DECLARE_MKX_BINARY(KaxContentCompSettings) public: - KaxContentCompSettings() {} KaxContentCompSettings(const KaxContentCompSettings &ElementToClone): EbmlBinary(ElementToClone) {} bool ValidateSize(void) const { return true; } @@ -117,27 +110,24 @@ class MATROSKA_DLL_API KaxContentCompSettings: public EbmlBinary { EBML_CONCRETE_CLASS(KaxContentCompSettings) }; -class MATROSKA_DLL_API KaxContentEncryption: public EbmlMaster { +DECLARE_MKX_MASTER(KaxContentEncryption) public: - KaxContentEncryption(); KaxContentEncryption(const KaxContentEncryption &ElementToClone): EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentEncryption) }; -class MATROSKA_DLL_API KaxContentEncAlgo: public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxContentEncAlgo) public: - KaxContentEncAlgo(): EbmlUInteger(0) {} KaxContentEncAlgo(const KaxContentEncAlgo &ElementToClone): EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentEncAlgo) }; -class MATROSKA_DLL_API KaxContentEncKeyID: public EbmlBinary { +DECLARE_MKX_BINARY(KaxContentEncKeyID) public: - KaxContentEncKeyID() {} KaxContentEncKeyID(const KaxContentEncKeyID &ElementToClone): EbmlBinary(ElementToClone) {} bool ValidateSize(void) const { return true; } @@ -145,9 +135,8 @@ class MATROSKA_DLL_API KaxContentEncKeyID: public EbmlBinary { EBML_CONCRETE_CLASS(KaxContentEncKeyID) }; -class MATROSKA_DLL_API KaxContentSignature: public EbmlBinary { +DECLARE_MKX_BINARY(KaxContentSignature) public: - KaxContentSignature() {} KaxContentSignature(const KaxContentSignature &ElementToClone): EbmlBinary(ElementToClone) {} bool ValidateSize(void) const { return true; } @@ -155,9 +144,8 @@ class MATROSKA_DLL_API KaxContentSignature: public EbmlBinary { EBML_CONCRETE_CLASS(KaxContentSignature) }; -class MATROSKA_DLL_API KaxContentSigKeyID: public EbmlBinary { +DECLARE_MKX_BINARY(KaxContentSigKeyID) public: - KaxContentSigKeyID() {} KaxContentSigKeyID(const KaxContentSigKeyID &ElementToClone): EbmlBinary(ElementToClone) {} bool ValidateSize(void) const { return true; } @@ -165,18 +153,16 @@ class MATROSKA_DLL_API KaxContentSigKeyID: public EbmlBinary { EBML_CONCRETE_CLASS(KaxContentSigKeyID) }; -class MATROSKA_DLL_API KaxContentSigAlgo: public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxContentSigAlgo) public: - KaxContentSigAlgo() {} KaxContentSigAlgo(const KaxContentSigAlgo &ElementToClone): EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxContentSigAlgo) }; -class MATROSKA_DLL_API KaxContentSigHashAlgo: public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxContentSigHashAlgo) public: - KaxContentSigHashAlgo() {} KaxContentSigHashAlgo(const KaxContentSigHashAlgo &ElementToClone): EbmlUInteger(ElementToClone) {} diff --git a/matroska/KaxCues.h b/matroska/KaxCues.h index 0de85e0..187b509 100644 --- a/matroska/KaxCues.h +++ b/matroska/KaxCues.h @@ -47,9 +47,8 @@ START_LIBMATROSKA_NAMESPACE class KaxCuePoint; -class MATROSKA_DLL_API KaxCues : public EbmlMaster { +DECLARE_MKX_MASTER(KaxCues) public: - KaxCues(); KaxCues(const KaxCues & ElementToClone) :EbmlMaster(ElementToClone) {} ~KaxCues(); diff --git a/matroska/KaxCuesData.h b/matroska/KaxCuesData.h index 8eaa478..e198b05 100644 --- a/matroska/KaxCuesData.h +++ b/matroska/KaxCuesData.h @@ -1,162 +1,151 @@ -/**************************************************************************** -** libmatroska : parse Matroska files, see http://www.matroska.org/ -** -** -** -** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. -** -** This library is free software; you can redistribute it and/or -** modify it under the terms of the GNU Lesser General Public -** License as published by the Free Software Foundation; either -** version 2.1 of the License, or (at your option) any later version. -** -** This library is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -** Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public -** License along with this library; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -** -** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** -** Contact license@matroska.org if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -/*! - \file - \version \$Id: KaxCuesData.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $ - \author Steve Lhomme -*/ -#ifndef LIBMATROSKA_CUES_DATA_H -#define LIBMATROSKA_CUES_DATA_H - -#include "matroska/KaxTypes.h" -#include "ebml/EbmlUInteger.h" -#include "ebml/EbmlMaster.h" - -using namespace LIBEBML_NAMESPACE; - -START_LIBMATROSKA_NAMESPACE - -class KaxBlockGroup; -class KaxBlockBlob; -class KaxCueTrackPositions; -class KaxInternalBlock; - -class MATROSKA_DLL_API KaxCuePoint : public EbmlMaster { - public: - KaxCuePoint(); - KaxCuePoint(const KaxCuePoint & ElementToClone) :EbmlMaster(ElementToClone) {} - void PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale); - void PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale); - - virtual bool IsSmallerThan(const EbmlElement *Cmp) const; - - const KaxCueTrackPositions * GetSeekPosition() const; - bool Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const; - - EBML_CONCRETE_CLASS(KaxCuePoint) -}; - -class MATROSKA_DLL_API KaxCueTime : public EbmlUInteger { - public: - KaxCueTime() {} - KaxCueTime(const KaxCueTime & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueTime) -}; - -class MATROSKA_DLL_API KaxCueTrackPositions : public EbmlMaster { - public: - KaxCueTrackPositions(); - KaxCueTrackPositions(const KaxCueTrackPositions & ElementToClone) :EbmlMaster(ElementToClone) {} - - uint64 ClusterPosition() const; - uint16 TrackNumber() const; - - EBML_CONCRETE_CLASS(KaxCueTrackPositions) -}; - -class MATROSKA_DLL_API KaxCueTrack : public EbmlUInteger { - public: - KaxCueTrack() {} - KaxCueTrack(const KaxCueTrack & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueTrack) -}; - -class MATROSKA_DLL_API KaxCueClusterPosition : public EbmlUInteger { - public: - KaxCueClusterPosition() {} - KaxCueClusterPosition(const KaxCueClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueClusterPosition) -}; - -class MATROSKA_DLL_API KaxCueBlockNumber : public EbmlUInteger { - public: - KaxCueBlockNumber() :EbmlUInteger(1) {} - KaxCueBlockNumber(const KaxCueBlockNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueBlockNumber) -}; - -#if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxCueCodecState : public EbmlUInteger { - public: - KaxCueCodecState() :EbmlUInteger(0) {} - KaxCueCodecState(const KaxCueCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueCodecState) -}; - -class MATROSKA_DLL_API KaxCueReference : public EbmlMaster { - public: - KaxCueReference(); - KaxCueReference(const KaxCueReference & ElementToClone) :EbmlMaster(ElementToClone) {} - - void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale); - void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale); - - EBML_CONCRETE_CLASS(KaxCueReference) -}; - -class MATROSKA_DLL_API KaxCueRefTime : public EbmlUInteger { - public: - KaxCueRefTime() {} - KaxCueRefTime(const KaxCueRefTime & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueRefTime) -}; - -class MATROSKA_DLL_API KaxCueRefCluster : public EbmlUInteger { - public: - KaxCueRefCluster() {} - KaxCueRefCluster(const KaxCueRefCluster & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueRefCluster) -}; - -class MATROSKA_DLL_API KaxCueRefNumber : public EbmlUInteger { - public: - KaxCueRefNumber() :EbmlUInteger(1) {} - KaxCueRefNumber(const KaxCueRefNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueRefNumber) -}; - -class MATROSKA_DLL_API KaxCueRefCodecState : public EbmlUInteger { - public: - KaxCueRefCodecState() :EbmlUInteger(0) {} - KaxCueRefCodecState(const KaxCueRefCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {} - - EBML_CONCRETE_CLASS(KaxCueRefCodecState) -}; -#endif // MATROSKA_VERSION - -END_LIBMATROSKA_NAMESPACE - -#endif // LIBMATROSKA_CUES_DATA_H +/**************************************************************************** +** libmatroska : parse Matroska files, see http://www.matroska.org/ +** +** +** +** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License as published by the Free Software Foundation; either +** version 2.1 of the License, or (at your option) any later version. +** +** This library is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Lesser General Public License for more details. +** +** You should have received a copy of the GNU Lesser General Public +** License along with this library; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +** +** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** +** Contact license@matroska.org if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +/*! + \file + \version \$Id: KaxCuesData.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $ + \author Steve Lhomme +*/ +#ifndef LIBMATROSKA_CUES_DATA_H +#define LIBMATROSKA_CUES_DATA_H + +#include "matroska/KaxTypes.h" +#include "ebml/EbmlUInteger.h" +#include "ebml/EbmlMaster.h" +#include "matroska/KaxDefines.h" + +using namespace LIBEBML_NAMESPACE; + +START_LIBMATROSKA_NAMESPACE + +class KaxBlockGroup; +class KaxBlockBlob; +class KaxCueTrackPositions; +class KaxInternalBlock; + +DECLARE_MKX_MASTER(KaxCuePoint) + public: + KaxCuePoint(const KaxCuePoint & ElementToClone) :EbmlMaster(ElementToClone) {} + void PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale); + void PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale); + + virtual bool IsSmallerThan(const EbmlElement *Cmp) const; + + const KaxCueTrackPositions * GetSeekPosition() const; + bool Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const; + + EBML_CONCRETE_CLASS(KaxCuePoint) +}; + +DECLARE_MKX_UINTEGER(KaxCueTime) + public: + KaxCueTime(const KaxCueTime & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueTime) +}; + +DECLARE_MKX_MASTER(KaxCueTrackPositions) + public: + KaxCueTrackPositions(const KaxCueTrackPositions & ElementToClone) :EbmlMaster(ElementToClone) {} + + uint64 ClusterPosition() const; + uint16 TrackNumber() const; + + EBML_CONCRETE_CLASS(KaxCueTrackPositions) +}; + +DECLARE_MKX_UINTEGER(KaxCueTrack) + public: + KaxCueTrack(const KaxCueTrack & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueTrack) +}; + +DECLARE_MKX_UINTEGER(KaxCueClusterPosition) + public: + KaxCueClusterPosition(const KaxCueClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueClusterPosition) +}; + +DECLARE_MKX_UINTEGER(KaxCueBlockNumber) + public: + KaxCueBlockNumber(const KaxCueBlockNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueBlockNumber) +}; + +#if MATROSKA_VERSION >= 2 +DECLARE_MKX_UINTEGER(KaxCueCodecState) + public: + KaxCueCodecState(const KaxCueCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueCodecState) +}; + +DECLARE_MKX_MASTER(KaxCueReference) + public: + KaxCueReference(const KaxCueReference & ElementToClone) :EbmlMaster(ElementToClone) {} + + void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale); + void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale); + + EBML_CONCRETE_CLASS(KaxCueReference) +}; + +DECLARE_MKX_UINTEGER(KaxCueRefTime) + public: + KaxCueRefTime(const KaxCueRefTime & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueRefTime) +}; + +DECLARE_MKX_UINTEGER(KaxCueRefCluster) + public: + KaxCueRefCluster(const KaxCueRefCluster & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueRefCluster) +}; + +DECLARE_MKX_UINTEGER(KaxCueRefNumber) + public: + KaxCueRefNumber(const KaxCueRefNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueRefNumber) +}; + +DECLARE_MKX_UINTEGER(KaxCueRefCodecState) + public: + KaxCueRefCodecState(const KaxCueRefCodecState & ElementToClone) :EbmlUInteger(ElementToClone) {} + + EBML_CONCRETE_CLASS(KaxCueRefCodecState) +}; +#endif // MATROSKA_VERSION + +END_LIBMATROSKA_NAMESPACE + +#endif // LIBMATROSKA_CUES_DATA_H diff --git a/matroska/KaxDefines.h b/matroska/KaxDefines.h index 237abf0..3b4c6f5 100644 --- a/matroska/KaxDefines.h +++ b/matroska/KaxDefines.h @@ -37,33 +37,107 @@ #include "ebml/EbmlElement.h" #if LIBEBML_VERSION >= 0x010000 -#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context) -#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \ +#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context) +#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \ a::a() :EbmlMaster(Context_##a) {} -#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context) -#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_STRING(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_UNISTRING(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_BINARY(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_DATE(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context) +#define DEFINE_MKX_UINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) +#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_SINTEGER_CONS(a,b,c,d,e) DEFINE_xxx_SINTEGER_CONS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_STRING_DEF(a,b,c,d,e,v) DEFINE_xxx_STRING_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) +#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_STRING(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_UNISTRING(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_BINARY(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_BINARY_CONS(a,b,c,d,e) DEFINE_xxx_BINARY_CONS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_FLOAT_DEF(a,b,c,d,e,v) DEFINE_xxx_FLOAT_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) +#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_FLOAT64(a,b,c,d,e) DEFINE_xxx_FLOAT64(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_DATE(a,b,c,d,e,*GetKaxGlobal_Context) + +#define DECLARE_MKX_CONTEXT(x) extern const ebml_context MATROSKA_DLL_API EBML_Context##x; + +#define DECLARE_MKX_MASTER(x) DECLARE_MKX_CONTEXT(x) \ +class MATROSKA_DLL_API x : public EbmlMaster { \ + public: x(); +#define DECLARE_MKX_BINARY(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlBinary { \ + public: x(); +#define DECLARE_MKX_BINARY_CONS(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlBinary { +#define DECLARE_MKX_UNISTRING(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlUnicodeString { \ + public: x(); +#define DECLARE_MKX_STRING(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlString { \ + public: x(); +#define DECLARE_MKX_UINTEGER(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlUInteger { \ + public: x(); +#define DECLARE_MKX_SINTEGER_CONS(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlSInteger { +#define DECLARE_MKX_SINTEGER(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlSInteger { \ + public: x(); +#define DECLARE_MKX_DATE(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlDate { \ + public: x(); +#define DECLARE_MKX_FLOAT(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlFloat { \ + public: x(); + #else -#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context) -#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \ +#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context) +#define DEFINE_MKX_MASTER_NOBODY(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) \ a::a() :EbmlMaster(Context_##a) {} -#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context) -#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) -#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context) +#define DEFINE_MKX_UINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) +#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_STRING_DEF(a,b,c,d,e,v) DEFINE_xxx_STRING_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) +#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_FLOAT_DEF(a,b,c,d,e,v) DEFINE_xxx_FLOAT_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) +#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_BINARY_CONS(a,b,c,d,e) DEFINE_xxx_CLASS_CONS(a,b,c,d,e,*GetKaxGlobal_Context) +#define DEFINE_MKX_SINTEGER_CONS(a,b,c,d,e) DEFINE_xxx_CLASS_CONS(a,b,c,d,e,*GetKaxGlobal_Context) + +#define DECLARE_MKX_CONTEXT(x) + +#define DECLARE_MKX_MASTER(x) DECLARE_MKX_CONTEXT(x) \ +class MATROSKA_DLL_API x : public EbmlMaster { \ + public: x(); +#define DECLARE_MKX_BINARY(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlBinary { \ + public: x(); +#define DECLARE_MKX_BINARY_CONS(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlBinary { +#define DECLARE_MKX_UNISTRING(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlUnicodeString { \ + public: x(); +#define DECLARE_MKX_STRING(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlString { \ + public: x(); +#define DECLARE_MKX_UINTEGER(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlUInteger { \ + public: x(); +#define DECLARE_MKX_SINTEGER_CONS(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlSInteger { +#define DECLARE_MKX_SINTEGER(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlSInteger { \ + public: x(); +#define DECLARE_MKX_DATE(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlDate { \ + public: x(); +#define DECLARE_MKX_FLOAT(x) DECLARE_MKX_CONTEXT(x) \ + class MATROSKA_DLL_API x : public EbmlFloat { \ + public: x(); #endif #endif // LIBMATROSKA_DEFINES_H diff --git a/matroska/KaxInfo.h b/matroska/KaxInfo.h index e15d7ff..aae3002 100644 --- a/matroska/KaxInfo.h +++ b/matroska/KaxInfo.h @@ -38,30 +38,28 @@ #include "matroska/KaxTypes.h" #include "ebml/EbmlMaster.h" #include "ebml/EbmlUnicodeString.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxInfo : public EbmlMaster { +DECLARE_MKX_MASTER(KaxInfo) public: - KaxInfo(); KaxInfo(const KaxInfo & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxInfo) }; -class MATROSKA_DLL_API KaxMuxingApp : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxMuxingApp) public: - KaxMuxingApp() {} KaxMuxingApp(const KaxMuxingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxMuxingApp) }; -class MATROSKA_DLL_API KaxWritingApp : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxWritingApp) public: - KaxWritingApp() {} KaxWritingApp(const KaxWritingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxWritingApp) diff --git a/matroska/KaxInfoData.h b/matroska/KaxInfoData.h index 69ef67e..10d3471 100644 --- a/matroska/KaxInfoData.h +++ b/matroska/KaxInfoData.h @@ -44,131 +44,121 @@ #include "ebml/EbmlBinary.h" #include "ebml/EbmlDate.h" #include "ebml/EbmlMaster.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxSegmentUID : public EbmlBinary { +DECLARE_MKX_BINARY(KaxSegmentUID) public: - KaxSegmentUID() {} KaxSegmentUID(const KaxSegmentUID & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const { return (GetSize() == 16);} EBML_CONCRETE_CLASS(KaxSegmentUID) }; -class MATROSKA_DLL_API KaxSegmentFilename : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxSegmentFilename) public: - KaxSegmentFilename() {} KaxSegmentFilename(const KaxSegmentFilename & ElementToClone) :EbmlUnicodeString(ElementToClone){} EBML_CONCRETE_CLASS(KaxSegmentFilename) }; +DECLARE_MKX_CONTEXT(KaxPrevUID); class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID { public: - KaxPrevUID() {} + KaxPrevUID(); KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){} bool ValidateSize() const { return (GetSize() == 16);} EBML_CONCRETE_CLASS(KaxPrevUID) }; -class MATROSKA_DLL_API KaxPrevFilename : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxPrevFilename) public: - KaxPrevFilename() :EbmlUnicodeString() {} KaxPrevFilename(const KaxPrevFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxPrevFilename) }; +DECLARE_MKX_CONTEXT(KaxNextUID); class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID { public: - KaxNextUID() {} + KaxNextUID(); KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){} bool ValidateSize() const { return (GetSize() == 16);} EBML_CONCRETE_CLASS(KaxNextUID) }; -class MATROSKA_DLL_API KaxNextFilename : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxNextFilename) public: - KaxNextFilename() {} KaxNextFilename(const KaxNextFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxNextFilename) }; -class MATROSKA_DLL_API KaxSegmentFamily : public EbmlBinary { +DECLARE_MKX_BINARY(KaxSegmentFamily) public: - KaxSegmentFamily() {} KaxSegmentFamily(const KaxSegmentFamily & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const { return (GetSize() == 16);} EBML_CONCRETE_CLASS(KaxSegmentFamily) }; -class MATROSKA_DLL_API KaxChapterTranslate : public EbmlMaster { +DECLARE_MKX_MASTER(KaxChapterTranslate) public: - KaxChapterTranslate(); KaxChapterTranslate(const KaxChapterTranslate & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterTranslate) }; -class MATROSKA_DLL_API KaxChapterTranslateCodec : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterTranslateCodec) public: - KaxChapterTranslateCodec() {} KaxChapterTranslateCodec(const KaxChapterTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterTranslateCodec) }; -class MATROSKA_DLL_API KaxChapterTranslateEditionUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxChapterTranslateEditionUID) public: - KaxChapterTranslateEditionUID() {} KaxChapterTranslateEditionUID(const KaxChapterTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxChapterTranslateEditionUID) }; -class MATROSKA_DLL_API KaxChapterTranslateID : public EbmlBinary { +DECLARE_MKX_BINARY(KaxChapterTranslateID) public: - KaxChapterTranslateID() {} KaxChapterTranslateID(const KaxChapterTranslateID & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const { return true;} EBML_CONCRETE_CLASS(KaxChapterTranslateID) }; -class MATROSKA_DLL_API KaxTimecodeScale : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTimecodeScale) public: - KaxTimecodeScale() :EbmlUInteger(1000000) {} KaxTimecodeScale(const KaxTimecodeScale & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTimecodeScale) }; -class MATROSKA_DLL_API KaxDuration : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxDuration) public: - KaxDuration(): EbmlFloat(FLOAT_64) {} KaxDuration(const KaxDuration & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxDuration) }; -class MATROSKA_DLL_API KaxDateUTC : public EbmlDate { +DECLARE_MKX_DATE(KaxDateUTC) public: - KaxDateUTC() {} KaxDateUTC(const KaxDateUTC & ElementToClone) :EbmlDate(ElementToClone) {} EBML_CONCRETE_CLASS(KaxDateUTC) }; -class MATROSKA_DLL_API KaxTitle : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTitle) public: - KaxTitle() {} KaxTitle(const KaxTitle & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTitle) diff --git a/matroska/KaxSeekHead.h b/matroska/KaxSeekHead.h index 29e4126..7ff8784 100644 --- a/matroska/KaxSeekHead.h +++ b/matroska/KaxSeekHead.h @@ -39,6 +39,7 @@ #include "ebml/EbmlMaster.h" #include "ebml/EbmlBinary.h" #include "ebml/EbmlUInteger.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; @@ -47,9 +48,8 @@ START_LIBMATROSKA_NAMESPACE class KaxSegment; class KaxSeek; -class MATROSKA_DLL_API KaxSeekHead : public EbmlMaster { +DECLARE_MKX_MASTER(KaxSeekHead) public: - KaxSeekHead(); KaxSeekHead(const KaxSeekHead & ElementToClone) :EbmlMaster(ElementToClone) {} /*! @@ -64,9 +64,8 @@ class MATROSKA_DLL_API KaxSeekHead : public EbmlMaster { EBML_CONCRETE_CLASS(KaxSeekHead) }; -class MATROSKA_DLL_API KaxSeek : public EbmlMaster { +DECLARE_MKX_MASTER(KaxSeek) public: - KaxSeek(); KaxSeek(const KaxSeek & ElementToClone) :EbmlMaster(ElementToClone) {} int64 Location() const; @@ -76,18 +75,16 @@ class MATROSKA_DLL_API KaxSeek : public EbmlMaster { EBML_CONCRETE_CLASS(KaxSeek) }; -class MATROSKA_DLL_API KaxSeekID : public EbmlBinary { +DECLARE_MKX_BINARY(KaxSeekID) public: - KaxSeekID() {} KaxSeekID(const KaxSeekID & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return GetSize() <= 4;} EBML_CONCRETE_CLASS(KaxSeekID) }; -class MATROSKA_DLL_API KaxSeekPosition : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxSeekPosition) public: - KaxSeekPosition() {} KaxSeekPosition(const KaxSeekPosition & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxSeekPosition) diff --git a/matroska/KaxSegment.h b/matroska/KaxSegment.h index adf2bac..2d9abd6 100644 --- a/matroska/KaxSegment.h +++ b/matroska/KaxSegment.h @@ -37,14 +37,14 @@ #include "matroska/KaxTypes.h" #include "ebml/EbmlMaster.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxSegment : public EbmlMaster { +DECLARE_MKX_MASTER(KaxSegment) public: - KaxSegment(); KaxSegment(const KaxSegment & ElementToClone); /*! diff --git a/matroska/KaxTag.h b/matroska/KaxTag.h index 2ad4018..67e3d18 100644 --- a/matroska/KaxTag.h +++ b/matroska/KaxTag.h @@ -44,476 +44,419 @@ #include "ebml/EbmlString.h" #include "ebml/EbmlUnicodeString.h" #include "ebml/EbmlBinary.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxTag : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTag) public: - KaxTag(); KaxTag(const KaxTag & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTag) }; -class MATROSKA_DLL_API KaxTagTargets : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagTargets) public: - KaxTagTargets(); KaxTagTargets(const KaxTagTargets & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagTargets) }; -class MATROSKA_DLL_API KaxTagGeneral : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagGeneral) public: - KaxTagGeneral(); KaxTagGeneral(const KaxTagGeneral & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagGeneral) }; -class MATROSKA_DLL_API KaxTagGenres : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagGenres) public: - KaxTagGenres(); KaxTagGenres(const KaxTagGenres & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagGenres) }; -class MATROSKA_DLL_API KaxTagAudioSpecific : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagAudioSpecific) public: - KaxTagAudioSpecific(); KaxTagAudioSpecific(const KaxTagAudioSpecific & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagAudioSpecific) }; -class MATROSKA_DLL_API KaxTagImageSpecific : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagImageSpecific) public: - KaxTagImageSpecific(); KaxTagImageSpecific(const KaxTagImageSpecific & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagImageSpecific) }; -class MATROSKA_DLL_API KaxTagTargetTypeValue : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagTargetTypeValue) public: - KaxTagTargetTypeValue() :EbmlUInteger(50) {} KaxTagTargetTypeValue(const KaxTagTargetTypeValue & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagTargetTypeValue) }; -class MATROSKA_DLL_API KaxTagTargetType : public EbmlString { +DECLARE_MKX_STRING(KaxTagTargetType) public: - KaxTagTargetType() {} KaxTagTargetType(const KaxTagTargetType & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagTargetType) }; -class MATROSKA_DLL_API KaxTagTrackUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagTrackUID) public: - KaxTagTrackUID() :EbmlUInteger(0) {} KaxTagTrackUID(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagTrackUID) }; -class MATROSKA_DLL_API KaxTagEditionUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagEditionUID) public: - KaxTagEditionUID() :EbmlUInteger(0) {} KaxTagEditionUID(const KaxTagEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagEditionUID) }; -class MATROSKA_DLL_API KaxTagChapterUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagChapterUID) public: - KaxTagChapterUID() :EbmlUInteger(0) {} KaxTagChapterUID(const KaxTagChapterUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagChapterUID) }; -class MATROSKA_DLL_API KaxTagAttachmentUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagAttachmentUID) public: - KaxTagAttachmentUID() :EbmlUInteger(0) {} KaxTagAttachmentUID(const KaxTagAttachmentUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagAttachmentUID) }; -class MATROSKA_DLL_API KaxTagArchivalLocation : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagArchivalLocation) public: - KaxTagArchivalLocation() {} KaxTagArchivalLocation(const KaxTagArchivalLocation & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagArchivalLocation) }; -class MATROSKA_DLL_API KaxTagAudioEncryption : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagAudioEncryption) public: - KaxTagAudioEncryption() {} KaxTagAudioEncryption(const KaxTagAudioEncryption & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTagAudioEncryption) }; -class MATROSKA_DLL_API KaxTagAudioGain : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxTagAudioGain) public: - KaxTagAudioGain() {} KaxTagAudioGain(const KaxTagAudioGain & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagAudioGain) }; -class MATROSKA_DLL_API KaxTagAudioGenre : public EbmlString { +DECLARE_MKX_STRING(KaxTagAudioGenre) public: - KaxTagAudioGenre() {} KaxTagAudioGenre(const KaxTagAudioGenre & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagAudioGenre) }; -class MATROSKA_DLL_API KaxTagAudioPeak : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxTagAudioPeak) public: - KaxTagAudioPeak() {} KaxTagAudioPeak(const KaxTagAudioPeak & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagAudioPeak) }; -class MATROSKA_DLL_API KaxTagBibliography : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagBibliography) public: - KaxTagBibliography() {} KaxTagBibliography(const KaxTagBibliography & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagBibliography) }; -class MATROSKA_DLL_API KaxTagBPM : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxTagBPM) public: - KaxTagBPM() {} KaxTagBPM(const KaxTagBPM & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagBPM) }; -class MATROSKA_DLL_API KaxTagCaptureDPI : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagCaptureDPI) public: - KaxTagCaptureDPI() {} KaxTagCaptureDPI(const KaxTagCaptureDPI & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagCaptureDPI) }; -class MATROSKA_DLL_API KaxTagCaptureLightness : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagCaptureLightness) public: - KaxTagCaptureLightness() {} KaxTagCaptureLightness(const KaxTagCaptureLightness & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTagCaptureLightness) }; -class MATROSKA_DLL_API KaxTagCapturePaletteSetting : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagCapturePaletteSetting) public: - KaxTagCapturePaletteSetting() {} KaxTagCapturePaletteSetting(const KaxTagCapturePaletteSetting & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagCapturePaletteSetting) }; -class MATROSKA_DLL_API KaxTagCaptureSharpness : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagCaptureSharpness) public: - KaxTagCaptureSharpness() {} KaxTagCaptureSharpness(const KaxTagCaptureSharpness & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTagCaptureSharpness) }; -class MATROSKA_DLL_API KaxTagCropped : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagCropped) public: - KaxTagCropped() {} KaxTagCropped(const KaxTagCropped & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagCropped) }; -class MATROSKA_DLL_API KaxTagDiscTrack : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagDiscTrack) public: - KaxTagDiscTrack() {} KaxTagDiscTrack(const KaxTagDiscTrack & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagDiscTrack) }; -class MATROSKA_DLL_API KaxTagEncoder : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagEncoder) public: - KaxTagEncoder() {} KaxTagEncoder(const KaxTagEncoder & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagEncoder) }; -class MATROSKA_DLL_API KaxTagEncodeSettings : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagEncodeSettings) public: - KaxTagEncodeSettings() {} KaxTagEncodeSettings(const KaxTagEncodeSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagEncodeSettings) }; -class MATROSKA_DLL_API KaxTagEqualisation : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagEqualisation) public: - KaxTagEqualisation() {} KaxTagEqualisation(const KaxTagEqualisation & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTagEqualisation) }; -class MATROSKA_DLL_API KaxTagFile : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagFile) public: - KaxTagFile() {} KaxTagFile(const KaxTagFile & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagFile) }; -class MATROSKA_DLL_API KaxTagInitialKey : public EbmlString { +DECLARE_MKX_STRING(KaxTagInitialKey) public: - KaxTagInitialKey() {} KaxTagInitialKey(const KaxTagInitialKey & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagInitialKey) }; -class MATROSKA_DLL_API KaxTagKeywords : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagKeywords) public: - KaxTagKeywords() {} KaxTagKeywords(const KaxTagKeywords & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagKeywords) }; -class MATROSKA_DLL_API KaxTagLanguage : public EbmlString { +DECLARE_MKX_STRING(KaxTagLanguage) public: - KaxTagLanguage() {} KaxTagLanguage(const KaxTagLanguage & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagLanguage) }; -class MATROSKA_DLL_API KaxTagLength : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagLength) public: - KaxTagLength() {} KaxTagLength(const KaxTagLength & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagLength) }; -class MATROSKA_DLL_API KaxTagMood : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMood) public: - KaxTagMood() {} KaxTagMood(const KaxTagMood & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMood) }; -class MATROSKA_DLL_API KaxTagOfficialAudioFileURL : public EbmlString { +DECLARE_MKX_STRING(KaxTagOfficialAudioFileURL) public: - KaxTagOfficialAudioFileURL() {} KaxTagOfficialAudioFileURL(const KaxTagOfficialAudioFileURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagOfficialAudioFileURL) }; -class MATROSKA_DLL_API KaxTagOfficialAudioSourceURL : public EbmlString { +DECLARE_MKX_STRING(KaxTagOfficialAudioSourceURL) public: - KaxTagOfficialAudioSourceURL() {} KaxTagOfficialAudioSourceURL(const KaxTagOfficialAudioSourceURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagOfficialAudioSourceURL) }; -class MATROSKA_DLL_API KaxTagOriginalDimensions : public EbmlString { +DECLARE_MKX_STRING(KaxTagOriginalDimensions) public: - KaxTagOriginalDimensions() {} KaxTagOriginalDimensions(const KaxTagOriginalDimensions & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagOriginalDimensions) }; -class MATROSKA_DLL_API KaxTagOriginalMediaType : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagOriginalMediaType) public: - KaxTagOriginalMediaType() {} KaxTagOriginalMediaType(const KaxTagOriginalMediaType & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagOriginalMediaType) }; -class MATROSKA_DLL_API KaxTagPlayCounter : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagPlayCounter) public: - KaxTagPlayCounter() {} KaxTagPlayCounter(const KaxTagPlayCounter & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagPlayCounter) }; -class MATROSKA_DLL_API KaxTagPlaylistDelay : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagPlaylistDelay) public: - KaxTagPlaylistDelay() {} KaxTagPlaylistDelay(const KaxTagPlaylistDelay & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagPlaylistDelay) }; -class MATROSKA_DLL_API KaxTagPopularimeter : public EbmlSInteger { +DECLARE_MKX_SINTEGER(KaxTagPopularimeter) public: - KaxTagPopularimeter() {} KaxTagPopularimeter(const KaxTagPopularimeter & ElementToClone) :EbmlSInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagPopularimeter) }; -class MATROSKA_DLL_API KaxTagProduct : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagProduct) public: - KaxTagProduct() {} KaxTagProduct(const KaxTagProduct & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagProduct) }; -class MATROSKA_DLL_API KaxTagRating : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagRating) public: - KaxTagRating() {} KaxTagRating(const KaxTagRating & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTagRating) }; -class MATROSKA_DLL_API KaxTagRecordLocation : public EbmlString { +DECLARE_MKX_STRING(KaxTagRecordLocation) public: - KaxTagRecordLocation() {} KaxTagRecordLocation(const KaxTagRecordLocation & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagRecordLocation) }; -class MATROSKA_DLL_API KaxTagSetPart : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagSetPart) public: - KaxTagSetPart() {} KaxTagSetPart(const KaxTagSetPart & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagSetPart) }; -class MATROSKA_DLL_API KaxTagSource : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagSource) public: - KaxTagSource() {} KaxTagSource(const KaxTagSource & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagSource) }; -class MATROSKA_DLL_API KaxTagSourceForm : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagSourceForm) public: - KaxTagSourceForm() {} KaxTagSourceForm(const KaxTagSourceForm & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagSourceForm) }; -class MATROSKA_DLL_API KaxTagSubGenre : public EbmlString { +DECLARE_MKX_STRING(KaxTagSubGenre) public: - KaxTagSubGenre() {} KaxTagSubGenre(const KaxTagSubGenre & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagSubGenre) }; -class MATROSKA_DLL_API KaxTagSubject : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagSubject) public: - KaxTagSubject() {} KaxTagSubject(const KaxTagSubject & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagSubject) }; -class MATROSKA_DLL_API KaxTagUnsynchronisedText : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagUnsynchronisedText) public: - KaxTagUnsynchronisedText() {} KaxTagUnsynchronisedText(const KaxTagUnsynchronisedText & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagUnsynchronisedText) }; -class MATROSKA_DLL_API KaxTagUserDefinedURL : public EbmlString { +DECLARE_MKX_STRING(KaxTagUserDefinedURL) public: - KaxTagUserDefinedURL() {} KaxTagUserDefinedURL(const KaxTagUserDefinedURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagUserDefinedURL) }; -class MATROSKA_DLL_API KaxTagVideoGenre : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagVideoGenre) public: - KaxTagVideoGenre() {} KaxTagVideoGenre(const KaxTagVideoGenre & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return (GetSize() >= 2);} EBML_CONCRETE_CLASS(KaxTagVideoGenre) }; -class MATROSKA_DLL_API KaxTagSimple : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagSimple) public: - KaxTagSimple(); KaxTagSimple(const KaxTagSimple & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagSimple) }; -class MATROSKA_DLL_API KaxTagName : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagName) public: - KaxTagName() {} KaxTagName(const KaxTagName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagName) }; -class MATROSKA_DLL_API KaxTagLangue : public EbmlString { +DECLARE_MKX_STRING(KaxTagLangue) public: - KaxTagLangue(): EbmlString("und") {} KaxTagLangue(const KaxTagLangue & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagLangue) }; -class MATROSKA_DLL_API KaxTagDefault : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagDefault) public: - KaxTagDefault() :EbmlUInteger(1) {} KaxTagDefault(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagDefault) }; -class MATROSKA_DLL_API KaxTagString : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagString) public: - KaxTagString() {} KaxTagString(const KaxTagString & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagString) }; -class MATROSKA_DLL_API KaxTagBinary : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagBinary) public: - KaxTagBinary() {} KaxTagBinary(const KaxTagBinary & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // {return (GetSize() >= 0);} diff --git a/matroska/KaxTagMulti.h b/matroska/KaxTagMulti.h index 83ef460..dc08a63 100644 --- a/matroska/KaxTagMulti.h +++ b/matroska/KaxTagMulti.h @@ -45,6 +45,7 @@ #include "ebml/EbmlString.h" #include "ebml/EbmlUnicodeString.h" #include "ebml/EbmlBinary.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; @@ -122,457 +123,392 @@ enum KaxTagMultiTitleTypes { KaxTagMultiTitleType_Series //This would be used to label a set of ID 3. For example, The Simpsons. }; -class MATROSKA_DLL_API KaxTagMultiComment : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiComment) public: - KaxTagMultiComment(); KaxTagMultiComment(const KaxTagMultiComment & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiComment) }; -class MATROSKA_DLL_API KaxTagMultiCommentName : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiCommentName) public: - KaxTagMultiCommentName() {} KaxTagMultiCommentName(const KaxTagMultiCommentName & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommentName) }; -class MATROSKA_DLL_API KaxTagMultiCommentComments : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiCommentComments) public: - KaxTagMultiCommentComments() {} KaxTagMultiCommentComments(const KaxTagMultiCommentComments & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommentComments) }; -class MATROSKA_DLL_API KaxTagMultiCommentLanguage : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiCommentLanguage) public: - KaxTagMultiCommentLanguage() {} KaxTagMultiCommentLanguage(const KaxTagMultiCommentLanguage & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommentLanguage) }; -class MATROSKA_DLL_API KaxTagMultiCommercial : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiCommercial) public: - KaxTagMultiCommercial(); KaxTagMultiCommercial(const KaxTagMultiCommercial & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommercial) }; -class MATROSKA_DLL_API KaxTagCommercial : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagCommercial) public: - KaxTagCommercial(); KaxTagCommercial(const KaxTagCommercial & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagCommercial) }; -class MATROSKA_DLL_API KaxTagMultiCommercialType : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagMultiCommercialType) public: - KaxTagMultiCommercialType() {} KaxTagMultiCommercialType(const KaxTagMultiCommercialType & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommercialType) }; -class MATROSKA_DLL_API KaxTagMultiCommercialAddress : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiCommercialAddress) public: - KaxTagMultiCommercialAddress() {} KaxTagMultiCommercialAddress(const KaxTagMultiCommercialAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommercialAddress) }; -class MATROSKA_DLL_API KaxTagMultiCommercialURL : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiCommercialURL) public: - KaxTagMultiCommercialURL() {} KaxTagMultiCommercialURL(const KaxTagMultiCommercialURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommercialURL) }; -class MATROSKA_DLL_API KaxTagMultiCommercialEmail : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiCommercialEmail) public: - KaxTagMultiCommercialEmail() {} KaxTagMultiCommercialEmail(const KaxTagMultiCommercialEmail & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiCommercialEmail) }; -class MATROSKA_DLL_API KaxTagMultiPrice : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiPrice) public: - KaxTagMultiPrice(); KaxTagMultiPrice(const KaxTagMultiPrice & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiPrice) }; -class MATROSKA_DLL_API KaxTagMultiPriceCurrency : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiPriceCurrency) public: - KaxTagMultiPriceCurrency() {} KaxTagMultiPriceCurrency(const KaxTagMultiPriceCurrency & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiPriceCurrency) }; -class MATROSKA_DLL_API KaxTagMultiPriceAmount : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxTagMultiPriceAmount) public: - KaxTagMultiPriceAmount() :EbmlFloat() {} KaxTagMultiPriceAmount(const KaxTagMultiPriceAmount & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiPriceAmount) }; -class MATROSKA_DLL_API KaxTagMultiPricePriceDate : public EbmlDate { +DECLARE_MKX_DATE(KaxTagMultiPricePriceDate) public: - KaxTagMultiPricePriceDate() :EbmlDate() {} KaxTagMultiPricePriceDate(const KaxTagMultiPricePriceDate & ElementToClone) :EbmlDate(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiPricePriceDate) }; -class MATROSKA_DLL_API KaxTagMultiDate : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiDate) public: - KaxTagMultiDate(); KaxTagMultiDate(const KaxTagMultiDate & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiDate) }; -class MATROSKA_DLL_API KaxTagDate : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagDate) public: - KaxTagDate(); KaxTagDate(const KaxTagDate & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagDate) }; -class MATROSKA_DLL_API KaxTagMultiDateType : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagMultiDateType) public: - KaxTagMultiDateType() {} KaxTagMultiDateType(const KaxTagMultiDateType & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiDateType) }; -class MATROSKA_DLL_API KaxTagMultiDateDateBegin : public EbmlDate { +DECLARE_MKX_DATE(KaxTagMultiDateDateBegin) public: - KaxTagMultiDateDateBegin() :EbmlDate() {} KaxTagMultiDateDateBegin(const KaxTagMultiDateDateBegin & ElementToClone) :EbmlDate(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiDateDateBegin) }; -class MATROSKA_DLL_API KaxTagMultiDateDateEnd : public EbmlDate { +DECLARE_MKX_DATE(KaxTagMultiDateDateEnd) public: - KaxTagMultiDateDateEnd() :EbmlDate() {} KaxTagMultiDateDateEnd(const KaxTagMultiDateDateEnd & ElementToClone) :EbmlDate(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiDateDateEnd) }; -class MATROSKA_DLL_API KaxTagMultiEntity : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiEntity) public: - KaxTagMultiEntity(); KaxTagMultiEntity(const KaxTagMultiEntity & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiEntity) }; -class MATROSKA_DLL_API KaxTagEntity : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagEntity) public: - KaxTagEntity(); KaxTagEntity(const KaxTagEntity & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagEntity) }; -class MATROSKA_DLL_API KaxTagMultiEntityType : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagMultiEntityType) public: - KaxTagMultiEntityType() {} KaxTagMultiEntityType(const KaxTagMultiEntityType & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiEntityType) }; -class MATROSKA_DLL_API KaxTagMultiEntityName : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiEntityName) public: - KaxTagMultiEntityName() {} KaxTagMultiEntityName(const KaxTagMultiEntityName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiEntityName) }; -class MATROSKA_DLL_API KaxTagMultiEntityAddress : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiEntityAddress) public: - KaxTagMultiEntityAddress() {} KaxTagMultiEntityAddress(const KaxTagMultiEntityAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiEntityAddress) }; -class MATROSKA_DLL_API KaxTagMultiEntityURL : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiEntityURL) public: - KaxTagMultiEntityURL() {} KaxTagMultiEntityURL(const KaxTagMultiEntityURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiEntityURL) }; -class MATROSKA_DLL_API KaxTagMultiEntityEmail : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiEntityEmail) public: - KaxTagMultiEntityEmail() {} KaxTagMultiEntityEmail(const KaxTagMultiEntityEmail & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiEntityEmail) }; -class MATROSKA_DLL_API KaxTagMultiIdentifier : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiIdentifier) public: - KaxTagMultiIdentifier(); KaxTagMultiIdentifier(const KaxTagMultiIdentifier & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiIdentifier) }; -class MATROSKA_DLL_API KaxTagIdentifier : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagIdentifier) public: - KaxTagIdentifier(); KaxTagIdentifier(const KaxTagIdentifier & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagIdentifier) }; -class MATROSKA_DLL_API KaxTagMultiIdentifierType : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagMultiIdentifierType) public: - KaxTagMultiIdentifierType() {} KaxTagMultiIdentifierType(const KaxTagMultiIdentifierType & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiIdentifierType) }; -class MATROSKA_DLL_API KaxTagMultiIdentifierBinary : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagMultiIdentifierBinary) public: - KaxTagMultiIdentifierBinary() {} KaxTagMultiIdentifierBinary(const KaxTagMultiIdentifierBinary & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTagMultiIdentifierBinary) }; -class MATROSKA_DLL_API KaxTagMultiIdentifierString : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiIdentifierString) public: - KaxTagMultiIdentifierString() {} KaxTagMultiIdentifierString(const KaxTagMultiIdentifierString & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiIdentifierString) }; -class MATROSKA_DLL_API KaxTagMultiLegal : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiLegal) public: - KaxTagMultiLegal(); KaxTagMultiLegal(const KaxTagMultiLegal & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiLegal) }; -class MATROSKA_DLL_API KaxTagLegal : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagLegal) public: - KaxTagLegal(); KaxTagLegal(const KaxTagLegal & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagLegal) }; -class MATROSKA_DLL_API KaxTagMultiLegalType : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagMultiLegalType) public: - KaxTagMultiLegalType() {} KaxTagMultiLegalType(const KaxTagMultiLegalType & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiLegalType) }; -class MATROSKA_DLL_API KaxTagMultiLegalContent : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiLegalContent) public: - KaxTagMultiLegalContent() {} KaxTagMultiLegalContent(const KaxTagMultiLegalContent & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiLegalContent) }; -class MATROSKA_DLL_API KaxTagMultiLegalURL : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiLegalURL) public: - KaxTagMultiLegalURL() {} KaxTagMultiLegalURL(const KaxTagMultiLegalURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiLegalURL) }; -class MATROSKA_DLL_API KaxTagMultiLegalAddress : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiLegalAddress) public: - KaxTagMultiLegalAddress() {} KaxTagMultiLegalAddress(const KaxTagMultiLegalAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiLegalAddress) }; -class MATROSKA_DLL_API KaxTagMultiTitle : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiTitle) public: - KaxTagMultiTitle(); KaxTagMultiTitle(const KaxTagMultiTitle & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitle) }; -class MATROSKA_DLL_API KaxTagTitle : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagTitle) public: - KaxTagTitle(); KaxTagTitle(const KaxTagTitle & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagTitle) }; -class MATROSKA_DLL_API KaxTagMultiTitleType : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagMultiTitleType) public: - KaxTagMultiTitleType() {} KaxTagMultiTitleType(const KaxTagMultiTitleType & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleType) }; -class MATROSKA_DLL_API KaxTagMultiTitleName : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiTitleName) public: - KaxTagMultiTitleName() {} KaxTagMultiTitleName(const KaxTagMultiTitleName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleName) }; -class MATROSKA_DLL_API KaxTagMultiTitleSubTitle : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiTitleSubTitle) public: - KaxTagMultiTitleSubTitle() {} KaxTagMultiTitleSubTitle(const KaxTagMultiTitleSubTitle & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleSubTitle) }; -class MATROSKA_DLL_API KaxTagMultiTitleEdition : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiTitleEdition) public: - KaxTagMultiTitleEdition() {} KaxTagMultiTitleEdition(const KaxTagMultiTitleEdition & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleEdition) }; -class MATROSKA_DLL_API KaxTagMultiTitleAddress : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTagMultiTitleAddress) public: - KaxTagMultiTitleAddress() {} KaxTagMultiTitleAddress(const KaxTagMultiTitleAddress & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleAddress) }; -class MATROSKA_DLL_API KaxTagMultiTitleURL : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiTitleURL) public: - KaxTagMultiTitleURL() {} KaxTagMultiTitleURL(const KaxTagMultiTitleURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleURL) }; -class MATROSKA_DLL_API KaxTagMultiTitleEmail : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiTitleEmail) public: - KaxTagMultiTitleEmail() {} KaxTagMultiTitleEmail(const KaxTagMultiTitleEmail & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleEmail) }; -class MATROSKA_DLL_API KaxTagMultiTitleLanguage : public EbmlString { +DECLARE_MKX_STRING(KaxTagMultiTitleLanguage) public: - KaxTagMultiTitleLanguage() {} KaxTagMultiTitleLanguage(const KaxTagMultiTitleLanguage & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiTitleLanguage) }; -class MATROSKA_DLL_API KaxTagMultiAttachment : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagMultiAttachment) public: - KaxTagMultiAttachment(); KaxTagMultiAttachment(const KaxTagMultiAttachment & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagMultiAttachment) }; -class MATROSKA_DLL_API KaxTagAttachment : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTagAttachment) public: - KaxTagAttachment(); KaxTagAttachment(const KaxTagAttachment & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagAttachment) }; -class MATROSKA_DLL_API KaxTagAttachmentID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTagAttachmentID) public: - KaxTagAttachmentID() {} KaxTagAttachmentID(const KaxTagAttachmentID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTagAttachmentID) }; #if 0 -class MATROSKA_DLL_API KaxTagBPM : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxTagBPM) public: - KaxTagBPM() :EbmlFloat() {} - EBML_CONCRETE_CLASS(KaxTagBPM) }; -class MATROSKA_DLL_API KaxTagPopularimeter : public EbmlSInteger { +DECLARE_MKX_SINTEGER(KaxTagPopularimeter) public: - KaxTagPopularimeter() {} - EBML_CONCRETE_CLASS(KaxTagPopularimeter) }; -class MATROSKA_DLL_API KaxTagRating : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagRating) public: - KaxTagRating() {} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTagRating) }; -class MATROSKA_DLL_API KaxTagSetPart : public EbmlUInteger { - public: - KaxTagSetPart() {} - +DECLARE_MKX_UINTEGER(KaxTagSetPart) EBML_CONCRETE_CLASS(KaxTagSetPart) }; -class MATROSKA_DLL_API KaxTagUserDefinedURL : public EbmlString { - public: - KaxTagUserDefinedURL() {} - +DECLARE_MKX_STRING(KaxTagUserDefinedURL) EBML_CONCRETE_CLASS(KaxTagUserDefinedURL) }; -class MATROSKA_DLL_API KaxTagVideoSecondaryGenre : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTagVideoSecondaryGenre) public: - KaxTagVideoSecondaryGenre() {} bool ValidateSize() const {return (Size >= 4);} EBML_CONCRETE_CLASS(KaxTagVideoSecondaryGenre) }; -class MATROSKA_DLL_API KaxWritingApp : public EbmlUnicodeString { - public: - KaxWritingApp() {} - +DECLARE_MKX_UNISTRING(KaxWritingApp) EBML_CONCRETE_CLASS(KaxWritingApp) }; #endif diff --git a/matroska/KaxTags.h b/matroska/KaxTags.h index 1801ba0..5bc3eaa 100644 --- a/matroska/KaxTags.h +++ b/matroska/KaxTags.h @@ -37,14 +37,14 @@ #include "matroska/KaxTypes.h" #include "ebml/EbmlMaster.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxTags : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTags) public: - KaxTags(); KaxTags(const KaxTags & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTags) diff --git a/matroska/KaxTrackAudio.h b/matroska/KaxTrackAudio.h index e2ace45..7c1c124 100644 --- a/matroska/KaxTrackAudio.h +++ b/matroska/KaxTrackAudio.h @@ -40,47 +40,43 @@ #include "ebml/EbmlFloat.h" #include "ebml/EbmlUInteger.h" #include "ebml/EbmlBinary.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxTrackAudio : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTrackAudio) public: - KaxTrackAudio(); KaxTrackAudio(const KaxTrackAudio & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackAudio) }; -class MATROSKA_DLL_API KaxAudioSamplingFreq : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxAudioSamplingFreq) public: - KaxAudioSamplingFreq() :EbmlFloat(8000.0) {} KaxAudioSamplingFreq(const KaxAudioSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxAudioSamplingFreq) }; -class MATROSKA_DLL_API KaxAudioOutputSamplingFreq : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxAudioOutputSamplingFreq) public: - KaxAudioOutputSamplingFreq() :EbmlFloat() {} KaxAudioOutputSamplingFreq(const KaxAudioOutputSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxAudioOutputSamplingFreq) }; -class MATROSKA_DLL_API KaxAudioChannels : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxAudioChannels) public: - KaxAudioChannels() :EbmlUInteger(1) {} KaxAudioChannels(const KaxAudioChannels & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxAudioChannels) }; #if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxAudioPosition : public EbmlBinary { +DECLARE_MKX_BINARY(KaxAudioPosition) public: - KaxAudioPosition() {} KaxAudioPosition(const KaxAudioPosition & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize(void) const {return true;} @@ -88,9 +84,8 @@ class MATROSKA_DLL_API KaxAudioPosition : public EbmlBinary { }; #endif // MATROSKA_VERSION -class MATROSKA_DLL_API KaxAudioBitDepth : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxAudioBitDepth) public: - KaxAudioBitDepth() {} KaxAudioBitDepth(const KaxAudioBitDepth & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxAudioBitDepth) diff --git a/matroska/KaxTrackEntryData.h b/matroska/KaxTrackEntryData.h index 53c22df..92267b9 100644 --- a/matroska/KaxTrackEntryData.h +++ b/matroska/KaxTrackEntryData.h @@ -43,194 +43,172 @@ #include "ebml/EbmlUnicodeString.h" #include "ebml/EbmlBinary.h" #include "ebml/EbmlMaster.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxTrackNumber : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackNumber) public: - KaxTrackNumber() {} KaxTrackNumber(const KaxTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackNumber) }; -class MATROSKA_DLL_API KaxTrackUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackUID) public: - KaxTrackUID() {} KaxTrackUID(const KaxTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackUID) }; -class MATROSKA_DLL_API KaxTrackType : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackType) public: - KaxTrackType() {} KaxTrackType(const KaxTrackType & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackType) }; #if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxTrackFlagEnabled : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackFlagEnabled) public: - KaxTrackFlagEnabled() :EbmlUInteger(1) {} KaxTrackFlagEnabled(const KaxTrackFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackFlagEnabled) }; #endif // MATROSKA_VERSION -class MATROSKA_DLL_API KaxTrackFlagDefault : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackFlagDefault) public: - KaxTrackFlagDefault() :EbmlUInteger(1) {} KaxTrackFlagDefault(const KaxTrackFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackFlagDefault) }; -class MATROSKA_DLL_API KaxTrackFlagForced : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackFlagForced) public: - KaxTrackFlagForced() :EbmlUInteger(0) {} KaxTrackFlagForced(const KaxTrackFlagForced & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackFlagForced) }; -class MATROSKA_DLL_API KaxTrackFlagLacing : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackFlagLacing) public: - KaxTrackFlagLacing() :EbmlUInteger(1) {} KaxTrackFlagLacing(const KaxTrackFlagLacing & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackFlagLacing) }; -class MATROSKA_DLL_API KaxTrackMinCache : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackMinCache) public: - KaxTrackMinCache() :EbmlUInteger(0) {} KaxTrackMinCache(const KaxTrackMinCache & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackMinCache) }; -class MATROSKA_DLL_API KaxTrackMaxCache : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackMaxCache) public: - KaxTrackMaxCache() {} KaxTrackMaxCache(const KaxTrackMaxCache & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackMaxCache) }; -class MATROSKA_DLL_API KaxTrackDefaultDuration : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackDefaultDuration) public: - KaxTrackDefaultDuration() {} KaxTrackDefaultDuration(const KaxTrackDefaultDuration & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackDefaultDuration) }; -class MATROSKA_DLL_API KaxTrackTimecodeScale : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxTrackTimecodeScale) public: - KaxTrackTimecodeScale() :EbmlFloat(1.0) {} KaxTrackTimecodeScale(const KaxTrackTimecodeScale & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackTimecodeScale) }; -class MATROSKA_DLL_API KaxMaxBlockAdditionID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxMaxBlockAdditionID) public: - KaxMaxBlockAdditionID() :EbmlUInteger(0) {} KaxMaxBlockAdditionID(const KaxMaxBlockAdditionID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxMaxBlockAdditionID) }; -class MATROSKA_DLL_API KaxTrackName : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxTrackName) public: - KaxTrackName() {} KaxTrackName(const KaxTrackName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackName) }; -class MATROSKA_DLL_API KaxTrackLanguage : public EbmlString { +DECLARE_MKX_STRING(KaxTrackLanguage) public: - KaxTrackLanguage() :EbmlString("eng") {} KaxTrackLanguage(const KaxTrackLanguage & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackLanguage) }; -class MATROSKA_DLL_API KaxCodecID : public EbmlString { +DECLARE_MKX_STRING(KaxCodecID) public: - KaxCodecID() {} KaxCodecID(const KaxCodecID & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxCodecID) }; -class MATROSKA_DLL_API KaxCodecPrivate : public EbmlBinary { +DECLARE_MKX_BINARY(KaxCodecPrivate) public: - KaxCodecPrivate() {} KaxCodecPrivate(const KaxCodecPrivate & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxCodecPrivate) }; -class MATROSKA_DLL_API KaxCodecName : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxCodecName) public: - KaxCodecName() {} KaxCodecName(const KaxCodecName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxCodecName) }; -class MATROSKA_DLL_API KaxTrackAttachmentLink : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTrackAttachmentLink) public: - KaxTrackAttachmentLink() {} KaxTrackAttachmentLink(const KaxTrackAttachmentLink & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const {return true;} // we don't mind about what's inside EBML_CONCRETE_CLASS(KaxTrackAttachmentLink) }; -class MATROSKA_DLL_API KaxTrackOverlay : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackOverlay) public: - KaxTrackOverlay() {} KaxTrackOverlay(const KaxTrackOverlay & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackOverlay) }; -class MATROSKA_DLL_API KaxTrackTranslate : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTrackTranslate) public: - KaxTrackTranslate(); KaxTrackTranslate(const KaxTrackTranslate & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackTranslate) }; -class MATROSKA_DLL_API KaxTrackTranslateCodec : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackTranslateCodec) public: - KaxTrackTranslateCodec() {} KaxTrackTranslateCodec(const KaxTrackTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackTranslateCodec) }; -class MATROSKA_DLL_API KaxTrackTranslateEditionUID : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxTrackTranslateEditionUID) public: - KaxTrackTranslateEditionUID() {} KaxTrackTranslateEditionUID(const KaxTrackTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackTranslateEditionUID) }; -class MATROSKA_DLL_API KaxTrackTranslateTrackID : public EbmlBinary { +DECLARE_MKX_BINARY(KaxTrackTranslateTrackID) public: - KaxTrackTranslateTrackID() {} KaxTrackTranslateTrackID(const KaxTrackTranslateTrackID & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize() const { return true;} @@ -238,33 +216,29 @@ class MATROSKA_DLL_API KaxTrackTranslateTrackID : public EbmlBinary { }; #if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxCodecSettings : public EbmlUnicodeString { +DECLARE_MKX_UNISTRING(KaxCodecSettings) public: - KaxCodecSettings() {} KaxCodecSettings(const KaxCodecSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxCodecSettings) }; -class MATROSKA_DLL_API KaxCodecInfoURL : public EbmlString { +DECLARE_MKX_STRING(KaxCodecInfoURL) public: - KaxCodecInfoURL() {} KaxCodecInfoURL(const KaxCodecInfoURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxCodecInfoURL) }; -class MATROSKA_DLL_API KaxCodecDownloadURL : public EbmlString { +DECLARE_MKX_STRING(KaxCodecDownloadURL) public: - KaxCodecDownloadURL() {} KaxCodecDownloadURL(const KaxCodecDownloadURL & ElementToClone) :EbmlString(ElementToClone) {} EBML_CONCRETE_CLASS(KaxCodecDownloadURL) }; -class MATROSKA_DLL_API KaxCodecDecodeAll : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxCodecDecodeAll) public: - KaxCodecDecodeAll() :EbmlUInteger(1) {} KaxCodecDecodeAll(const KaxCodecDecodeAll & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxCodecDecodeAll) diff --git a/matroska/KaxTrackVideo.h b/matroska/KaxTrackVideo.h index 55d5923..ead38f1 100644 --- a/matroska/KaxTrackVideo.h +++ b/matroska/KaxTrackVideo.h @@ -40,122 +40,109 @@ #include "ebml/EbmlUInteger.h" #include "ebml/EbmlBinary.h" #include "ebml/EbmlFloat.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxTrackVideo : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTrackVideo) public: - KaxTrackVideo(); KaxTrackVideo(const KaxTrackVideo & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTrackVideo) }; #if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxVideoFlagInterlaced : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced) public: - KaxVideoFlagInterlaced() :EbmlUInteger(0) {} KaxVideoFlagInterlaced(const KaxVideoFlagInterlaced & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoFlagInterlaced) }; -class MATROSKA_DLL_API KaxVideoStereoMode : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoStereoMode) public: - KaxVideoStereoMode() :EbmlUInteger(0) {} KaxVideoStereoMode(const KaxVideoStereoMode & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoStereoMode) }; #endif // MATROSKA_VERSION -class MATROSKA_DLL_API KaxVideoPixelWidth : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoPixelWidth) public: - KaxVideoPixelWidth() {} KaxVideoPixelWidth(const KaxVideoPixelWidth & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoPixelWidth) }; -class MATROSKA_DLL_API KaxVideoPixelHeight : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoPixelHeight) public: - KaxVideoPixelHeight() {} KaxVideoPixelHeight(const KaxVideoPixelHeight & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoPixelHeight) }; -class MATROSKA_DLL_API KaxVideoPixelCropBottom : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoPixelCropBottom) public: - KaxVideoPixelCropBottom(): EbmlUInteger(0) {} KaxVideoPixelCropBottom(const KaxVideoPixelCropBottom & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoPixelCropBottom) }; -class MATROSKA_DLL_API KaxVideoPixelCropTop : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoPixelCropTop) public: - KaxVideoPixelCropTop(): EbmlUInteger(0) {} KaxVideoPixelCropTop(const KaxVideoPixelCropTop & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoPixelCropTop) }; -class MATROSKA_DLL_API KaxVideoPixelCropLeft : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoPixelCropLeft) public: - KaxVideoPixelCropLeft(): EbmlUInteger(0) {} KaxVideoPixelCropLeft(const KaxVideoPixelCropLeft & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoPixelCropLeft) }; -class MATROSKA_DLL_API KaxVideoPixelCropRight : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoPixelCropRight) public: - KaxVideoPixelCropRight(): EbmlUInteger(0) {} KaxVideoPixelCropRight(const KaxVideoPixelCropRight & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoPixelCropRight) }; -class MATROSKA_DLL_API KaxVideoDisplayWidth : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoDisplayWidth) public: - KaxVideoDisplayWidth() {} KaxVideoDisplayWidth(const KaxVideoDisplayWidth & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoDisplayWidth) }; -class MATROSKA_DLL_API KaxVideoDisplayHeight : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoDisplayHeight) public: - KaxVideoDisplayHeight() {} KaxVideoDisplayHeight(const KaxVideoDisplayHeight & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoDisplayHeight) }; #if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxVideoDisplayUnit : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoDisplayUnit) public: - KaxVideoDisplayUnit() {} KaxVideoDisplayUnit(const KaxVideoDisplayUnit & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoDisplayUnit) }; -class MATROSKA_DLL_API KaxVideoAspectRatio : public EbmlUInteger { +DECLARE_MKX_UINTEGER(KaxVideoAspectRatio) public: - KaxVideoAspectRatio() {} KaxVideoAspectRatio(const KaxVideoAspectRatio & ElementToClone) :EbmlUInteger(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoAspectRatio) }; #endif // MATROSKA_VERSION -class MATROSKA_DLL_API KaxVideoColourSpace : public EbmlBinary { +DECLARE_MKX_BINARY(KaxVideoColourSpace) public: - KaxVideoColourSpace() {} KaxVideoColourSpace(const KaxVideoColourSpace & ElementToClone) :EbmlBinary(ElementToClone){} bool ValidateSize(void) const {return (GetSize() == 4);} @@ -163,18 +150,16 @@ class MATROSKA_DLL_API KaxVideoColourSpace : public EbmlBinary { }; #if MATROSKA_VERSION >= 2 -class MATROSKA_DLL_API KaxVideoGamma : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxVideoGamma) public: - KaxVideoGamma() {} KaxVideoGamma(const KaxVideoGamma & ElementToClone) :EbmlFloat(ElementToClone) {} EBML_CONCRETE_CLASS(KaxVideoGamma) }; #endif // MATROSKA_VERSION -class MATROSKA_DLL_API KaxVideoFrameRate : public EbmlFloat { +DECLARE_MKX_FLOAT(KaxVideoFrameRate) public: - KaxVideoFrameRate() {} KaxVideoFrameRate(const KaxVideoFrameRate & ElementToClone) :EbmlFloat(ElementToClone) {} filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); diff --git a/matroska/KaxTracks.h b/matroska/KaxTracks.h index b1294cc..866425f 100644 --- a/matroska/KaxTracks.h +++ b/matroska/KaxTracks.h @@ -39,22 +39,21 @@ #include "ebml/EbmlMaster.h" #include "ebml/EbmlUInteger.h" #include "matroska/KaxTrackEntryData.h" +#include "matroska/KaxDefines.h" using namespace LIBEBML_NAMESPACE; START_LIBMATROSKA_NAMESPACE -class MATROSKA_DLL_API KaxTracks : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTracks) public: - KaxTracks(); KaxTracks(const KaxTracks & ElementToClone) :EbmlMaster(ElementToClone) {} EBML_CONCRETE_CLASS(KaxTracks) }; -class MATROSKA_DLL_API KaxTrackEntry : public EbmlMaster { +DECLARE_MKX_MASTER(KaxTrackEntry) public: - KaxTrackEntry(); KaxTrackEntry(const KaxTrackEntry & ElementToClone) :EbmlMaster(ElementToClone) {} EbmlUInteger & TrackNumber() const { return *(static_cast(FindElt(EBML_INFO(KaxTrackNumber)))); } diff --git a/src/KaxBlock.cpp b/src/KaxBlock.cpp index 231863a..6090b3f 100644 --- a/src/KaxBlock.cpp +++ b/src/KaxBlock.cpp @@ -75,18 +75,18 @@ static const EbmlSemantic ContextList_KaxBlockMore[2] = EbmlSemantic(true, true, EBML_INFO(KaxBlockAdditional)) }; -DEFINE_MKX_MASTER_NOBODY(KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup"); -DEFINE_MKX_BINARY (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block"); -DEFINE_MKX_UINTEGER(KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration"); +DEFINE_MKX_MASTER_NOBODY(KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup"); +DEFINE_MKX_BINARY_CONS (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block"); +DEFINE_MKX_UINTEGER (KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration"); #if MATROSKA_VERSION >= 2 -DEFINE_MKX_BINARY (KaxSimpleBlock, 0xA3, 1, KaxCluster, "SimpleBlock"); -DEFINE_MKX_BINARY (KaxBlockVirtual, 0xA2, 1, KaxBlockGroup, "BlockVirtual"); -DEFINE_MKX_BINARY (KaxCodecState, 0xA4, 1, KaxBlockGroup, "CodecState"); +DEFINE_MKX_BINARY_CONS (KaxSimpleBlock, 0xA3, 1, KaxCluster, "SimpleBlock"); +DEFINE_MKX_BINARY_CONS (KaxBlockVirtual, 0xA2, 1, KaxBlockGroup, "BlockVirtual"); +DEFINE_MKX_BINARY (KaxCodecState, 0xA4, 1, KaxBlockGroup, "CodecState"); #endif -DEFINE_MKX_MASTER (KaxBlockAdditions, 0x75A1, 2, KaxBlockGroup, "BlockAdditions"); -DEFINE_MKX_MASTER (KaxBlockMore, 0xA6, 1, KaxBlockAdditions, "BlockMore"); -DEFINE_MKX_UINTEGER(KaxBlockAddID, 0xEE, 1, KaxBlockMore, "BlockAddID"); -DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, 1, KaxBlockMore, "BlockAdditional"); +DEFINE_MKX_MASTER (KaxBlockAdditions, 0x75A1, 2, KaxBlockGroup, "BlockAdditions"); +DEFINE_MKX_MASTER (KaxBlockMore, 0xA6, 1, KaxBlockAdditions, "BlockMore"); +DEFINE_MKX_UINTEGER_DEF (KaxBlockAddID, 0xEE, 1, KaxBlockMore, "BlockAddID", 1); +DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, 1, KaxBlockMore, "BlockAdditional"); DataBuffer * DataBuffer::Clone() diff --git a/src/KaxBlockData.cpp b/src/KaxBlockData.cpp index 23b9ce1..d416919 100644 --- a/src/KaxBlockData.cpp +++ b/src/KaxBlockData.cpp @@ -55,17 +55,17 @@ const EbmlSemantic ContextList_KaxTimeSlice[5] = EbmlSemantic(false, true, EBML_INFO(KaxSliceDuration)), }; -DEFINE_MKX_UINTEGER(KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced"); -DEFINE_MKX_SINTEGER(KaxReferenceBlock, 0xFB, 1, KaxBlockGroup, "ReferenceBlock"); -DEFINE_MKX_MASTER (KaxSlices, 0x8E, 1, KaxBlockGroup, "Slices"); -DEFINE_MKX_MASTER (KaxTimeSlice, 0xE8, 1, KaxSlices, "TimeSlice"); -DEFINE_MKX_UINTEGER(KaxSliceLaceNumber, 0xCC, 1, KaxTimeSlice, "SliceLaceNumber"); -DEFINE_MKX_UINTEGER(KaxSliceFrameNumber, 0xCD, 1, KaxTimeSlice, "SliceFrameNumber"); -DEFINE_MKX_UINTEGER(KaxSliceBlockAddID, 0xCB, 1, KaxTimeSlice, "SliceBlockAddID"); -DEFINE_MKX_UINTEGER(KaxSliceDelay, 0xCE, 1, KaxTimeSlice, "SliceDelay"); -DEFINE_MKX_UINTEGER(KaxSliceDuration, 0xCF, 1, KaxTimeSlice, "SliceDuration"); +DEFINE_MKX_UINTEGER_DEF (KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced", 0); +DEFINE_MKX_SINTEGER_CONS(KaxReferenceBlock, 0xFB, 1, KaxBlockGroup, "ReferenceBlock"); +DEFINE_MKX_MASTER (KaxSlices, 0x8E, 1, KaxBlockGroup, "Slices"); +DEFINE_MKX_MASTER (KaxTimeSlice, 0xE8, 1, KaxSlices, "TimeSlice"); +DEFINE_MKX_UINTEGER_DEF (KaxSliceLaceNumber, 0xCC, 1, KaxTimeSlice, "SliceLaceNumber", 0); +DEFINE_MKX_UINTEGER_DEF (KaxSliceFrameNumber, 0xCD, 1, KaxTimeSlice, "SliceFrameNumber", 0); +DEFINE_MKX_UINTEGER_DEF (KaxSliceBlockAddID, 0xCB, 1, KaxTimeSlice, "SliceBlockAddID", 0); +DEFINE_MKX_UINTEGER (KaxSliceDelay, 0xCE, 1, KaxTimeSlice, "SliceDelay"); +DEFINE_MKX_UINTEGER_DEF (KaxSliceDuration, 0xCF, 1, KaxTimeSlice, "SliceDuration", 0); #if MATROSKA_VERSION >= 2 -DEFINE_MKX_UINTEGER(KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual"); +DEFINE_MKX_UINTEGER (KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual"); #endif diff --git a/src/KaxChapters.cpp b/src/KaxChapters.cpp index d6fbe85..6241da5 100644 --- a/src/KaxChapters.cpp +++ b/src/KaxChapters.cpp @@ -94,32 +94,32 @@ static const EbmlSemantic ContextList_KaxChapterProcessCommand[2] = EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessData)), }; -DEFINE_MKX_MASTER (KaxChapters, 0x1043A770, 4, KaxSegment, "Chapters"); -DEFINE_MKX_MASTER (KaxEditionEntry, 0x45B9, 2, KaxChapters, "EditionEntry"); -DEFINE_MKX_UINTEGER (KaxEditionUID, 0x45BC, 2, KaxEditionEntry, "EditionUID"); -DEFINE_MKX_UINTEGER (KaxEditionFlagHidden, 0x45BD, 2, KaxEditionEntry, "EditionFlagHidden"); -DEFINE_MKX_UINTEGER (KaxEditionFlagDefault, 0x45DB, 2, KaxEditionEntry, "EditionFlagDefault"); -DEFINE_MKX_UINTEGER (KaxEditionFlagOrdered, 0x45DD, 2, KaxEditionEntry, "EditionFlagOrdered"); -DEFINE_MKX_MASTER (KaxChapterAtom, 0xB6, 1, KaxEditionEntry, "ChapterAtom"); -DEFINE_MKX_UINTEGER (KaxChapterUID, 0x73C4, 2, KaxChapterAtom, "ChapterUID"); -DEFINE_MKX_UINTEGER (KaxChapterTimeStart, 0x91, 1, KaxChapterAtom, "ChapterTimeStart"); -DEFINE_MKX_UINTEGER (KaxChapterTimeEnd, 0x92, 1, KaxChapterAtom, "ChapterTimeEnd"); -DEFINE_MKX_UINTEGER (KaxChapterFlagHidden, 0x98, 1, KaxChapterAtom, "ChapterFlagHidden"); -DEFINE_MKX_UINTEGER (KaxChapterFlagEnabled, 0x4598, 2, KaxChapterAtom, "ChapterFlagEnabled"); -DEFINE_MKX_BINARY (KaxChapterSegmentUID, 0x6E67, 2, KaxChapterAtom, "ChapterSegmentUID"); -DEFINE_MKX_BINARY (KaxChapterSegmentEditionUID, 0x6EBC, 2, KaxChapterAtom, "ChapterSegmentEditionUID"); -DEFINE_MKX_UINTEGER (KaxChapterPhysicalEquiv, 0x63C3, 2, KaxChapterAtom, "ChapterPhysicalEquiv"); -DEFINE_MKX_MASTER (KaxChapterTrack, 0x8F, 1, KaxChapterAtom, "ChapterTrack"); -DEFINE_MKX_UINTEGER (KaxChapterTrackNumber, 0x89, 1, KaxChapterTrack, "ChapterTrackNumber"); -DEFINE_MKX_MASTER (KaxChapterDisplay, 0x80, 1, KaxChapterAtom, "ChapterDisplay"); -DEFINE_MKX_UNISTRING(KaxChapterString, 0x85, 1, KaxChapterDisplay, "ChapterString"); -DEFINE_MKX_STRING (KaxChapterLanguage, 0x437C, 2, KaxChapterLanguage, "ChapterLanguage"); // parent context ? -DEFINE_MKX_STRING (KaxChapterCountry, 0x437E, 2, KaxChapterCountry, "ChapterCountry"); // parent context ? -DEFINE_MKX_MASTER (KaxChapterProcess, 0x6944, 2, KaxChapterAtom, "ChapterProcess"); -DEFINE_MKX_UINTEGER (KaxChapterProcessCodecID, 0x6955, 2, KaxChapterProcess, "ChapterProcessCodecID"); -DEFINE_MKX_BINARY (KaxChapterProcessPrivate, 0x450D, 2, KaxChapterProcess, "ChapterProcessPrivate"); -DEFINE_MKX_MASTER (KaxChapterProcessCommand, 0x6911, 2, KaxChapterProcess, "ChapterProcessCommand"); -DEFINE_MKX_UINTEGER (KaxChapterProcessTime, 0x6922, 2, KaxChapterProcessCommand, "ChapterProcessTime"); -DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, 2, KaxChapterProcessCommand, "ChapterProcessData"); +DEFINE_MKX_MASTER (KaxChapters, 0x1043A770, 4, KaxSegment, "Chapters"); +DEFINE_MKX_MASTER (KaxEditionEntry, 0x45B9, 2, KaxChapters, "EditionEntry"); +DEFINE_MKX_UINTEGER (KaxEditionUID, 0x45BC, 2, KaxEditionEntry, "EditionUID"); +DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagHidden, 0x45BD, 2, KaxEditionEntry, "EditionFlagHidden", 0); +DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagDefault, 0x45DB, 2, KaxEditionEntry, "EditionFlagDefault", 0); +DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagOrdered, 0x45DD, 2, KaxEditionEntry, "EditionFlagOrdered", 0); +DEFINE_MKX_MASTER (KaxChapterAtom, 0xB6, 1, KaxEditionEntry, "ChapterAtom"); +DEFINE_MKX_UINTEGER (KaxChapterUID, 0x73C4, 2, KaxChapterAtom, "ChapterUID"); +DEFINE_MKX_UINTEGER (KaxChapterTimeStart, 0x91, 1, KaxChapterAtom, "ChapterTimeStart"); +DEFINE_MKX_UINTEGER (KaxChapterTimeEnd, 0x92, 1, KaxChapterAtom, "ChapterTimeEnd"); +DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagHidden, 0x98, 1, KaxChapterAtom, "ChapterFlagHidden", 0); +DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagEnabled, 0x4598, 2, KaxChapterAtom, "ChapterFlagEnabled", 1); +DEFINE_MKX_BINARY (KaxChapterSegmentUID, 0x6E67, 2, KaxChapterAtom, "ChapterSegmentUID"); +DEFINE_MKX_BINARY (KaxChapterSegmentEditionUID, 0x6EBC, 2, KaxChapterAtom, "ChapterSegmentEditionUID"); +DEFINE_MKX_UINTEGER (KaxChapterPhysicalEquiv, 0x63C3, 2, KaxChapterAtom, "ChapterPhysicalEquiv"); +DEFINE_MKX_MASTER (KaxChapterTrack, 0x8F, 1, KaxChapterAtom, "ChapterTrack"); +DEFINE_MKX_UINTEGER (KaxChapterTrackNumber, 0x89, 1, KaxChapterTrack, "ChapterTrackNumber"); +DEFINE_MKX_MASTER (KaxChapterDisplay, 0x80, 1, KaxChapterAtom, "ChapterDisplay"); +DEFINE_MKX_UNISTRING (KaxChapterString, 0x85, 1, KaxChapterDisplay, "ChapterString"); +DEFINE_MKX_STRING_DEF (KaxChapterLanguage, 0x437C, 2, KaxChapterLanguage, "ChapterLanguage", "eng"); // parent context ? +DEFINE_MKX_STRING (KaxChapterCountry, 0x437E, 2, KaxChapterCountry, "ChapterCountry"); // parent context ? +DEFINE_MKX_MASTER (KaxChapterProcess, 0x6944, 2, KaxChapterAtom, "ChapterProcess"); +DEFINE_MKX_UINTEGER_DEF(KaxChapterProcessCodecID, 0x6955, 2, KaxChapterProcess, "ChapterProcessCodecID", 0); +DEFINE_MKX_BINARY (KaxChapterProcessPrivate, 0x450D, 2, KaxChapterProcess, "ChapterProcessPrivate"); +DEFINE_MKX_MASTER (KaxChapterProcessCommand, 0x6911, 2, KaxChapterProcess, "ChapterProcessCommand"); +DEFINE_MKX_UINTEGER (KaxChapterProcessTime, 0x6922, 2, KaxChapterProcessCommand, "ChapterProcessTime"); +DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, 2, KaxChapterProcessCommand, "ChapterProcessData"); END_LIBMATROSKA_NAMESPACE diff --git a/src/KaxContentEncoding.cpp b/src/KaxContentEncoding.cpp index b965786..f193eaf 100644 --- a/src/KaxContentEncoding.cpp +++ b/src/KaxContentEncoding.cpp @@ -64,20 +64,20 @@ static const EbmlSemantic ContextList_KaxContentEncryption[6] = { EbmlSemantic(false, true, EBML_INFO(KaxContentSigHashAlgo)), }; -DEFINE_MKX_MASTER (KaxContentEncodings, 0x6d80, 2, KaxTrackEntry, "ContentEncodings"); -DEFINE_MKX_MASTER (KaxContentEncoding, 0x6240, 2, KaxContentEncodings, "ContentEncoding"); -DEFINE_MKX_UINTEGER(KaxContentEncodingOrder, 0x5031, 2, KaxContentEncoding, "ContentEncodingOrder"); -DEFINE_MKX_UINTEGER(KaxContentEncodingScope, 0x5032, 2, KaxContentEncoding, "ContentEncodingScope"); -DEFINE_MKX_UINTEGER(KaxContentEncodingType, 0x5033, 2, KaxContentEncoding, "ContentEncodingType"); -DEFINE_MKX_MASTER (KaxContentCompression, 0x5034, 2, KaxContentEncoding, "ContentCompression"); -DEFINE_MKX_UINTEGER(KaxContentCompAlgo, 0x4254, 2, KaxContentCompression, "ContentCompAlgo"); -DEFINE_MKX_UINTEGER(KaxContentCompSettings, 0x4255, 2, KaxContentCompression, "ContentCompSettings"); -DEFINE_MKX_MASTER (KaxContentEncryption, 0x5035, 2, KaxContentEncoding, "ContentEncryption"); -DEFINE_MKX_UINTEGER(KaxContentEncAlgo, 0x47e1, 2, KaxContentEncryption, "ContentEncAlgo"); -DEFINE_MKX_BINARY (KaxContentEncKeyID, 0x47e2, 2, KaxContentEncryption, "ContentEncKeyID"); -DEFINE_MKX_BINARY (KaxContentSignature, 0x47e3, 2, KaxContentEncryption, "ContentSignature"); -DEFINE_MKX_BINARY (KaxContentSigKeyID, 0x47e4, 2, KaxContentEncryption, "ContentSigKeyID"); -DEFINE_MKX_UINTEGER(KaxContentSigAlgo, 0x47e5, 2, KaxContentEncryption, "ContentSigAlgo"); -DEFINE_MKX_UINTEGER(KaxContentSigHashAlgo, 0x47e6, 2, KaxContentEncryption, "ContentSigHashAlgo"); +DEFINE_MKX_MASTER (KaxContentEncodings, 0x6d80, 2, KaxTrackEntry, "ContentEncodings"); +DEFINE_MKX_MASTER (KaxContentEncoding, 0x6240, 2, KaxContentEncodings, "ContentEncoding"); +DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingOrder, 0x5031, 2, KaxContentEncoding, "ContentEncodingOrder", 0); +DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingScope, 0x5032, 2, KaxContentEncoding, "ContentEncodingScope", 1); +DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingType, 0x5033, 2, KaxContentEncoding, "ContentEncodingType", 0); +DEFINE_MKX_MASTER (KaxContentCompression, 0x5034, 2, KaxContentEncoding, "ContentCompression"); +DEFINE_MKX_UINTEGER_DEF(KaxContentCompAlgo, 0x4254, 2, KaxContentCompression, "ContentCompAlgo", 0); +DEFINE_MKX_UINTEGER (KaxContentCompSettings, 0x4255, 2, KaxContentCompression, "ContentCompSettings"); +DEFINE_MKX_MASTER (KaxContentEncryption, 0x5035, 2, KaxContentEncoding, "ContentEncryption"); +DEFINE_MKX_UINTEGER_DEF(KaxContentEncAlgo, 0x47e1, 2, KaxContentEncryption, "ContentEncAlgo", 0); +DEFINE_MKX_BINARY (KaxContentEncKeyID, 0x47e2, 2, KaxContentEncryption, "ContentEncKeyID"); +DEFINE_MKX_BINARY (KaxContentSignature, 0x47e3, 2, KaxContentEncryption, "ContentSignature"); +DEFINE_MKX_BINARY (KaxContentSigKeyID, 0x47e4, 2, KaxContentEncryption, "ContentSigKeyID"); +DEFINE_MKX_UINTEGER_DEF(KaxContentSigAlgo, 0x47e5, 2, KaxContentEncryption, "ContentSigAlgo", 0); +DEFINE_MKX_UINTEGER_DEF(KaxContentSigHashAlgo, 0x47e6, 2, KaxContentEncryption, "ContentSigHashAlgo", 0); END_LIBMATROSKA_NAMESPACE diff --git a/src/KaxCuesData.cpp b/src/KaxCuesData.cpp index fabb948..5828db3 100644 --- a/src/KaxCuesData.cpp +++ b/src/KaxCuesData.cpp @@ -73,19 +73,19 @@ static const EbmlSemantic ContextList_KaxCueReference[4] = }; #endif // MATROSKA_VERSION -DEFINE_MKX_MASTER (KaxCuePoint, 0xBB, 1, KaxCues, "CuePoint"); -DEFINE_MKX_UINTEGER(KaxCueTime, 0xB3, 1, KaxCuePoint, "CueTime"); -DEFINE_MKX_MASTER (KaxCueTrackPositions, 0xB7, 1, KaxCuePoint, "CueTrackPositions"); -DEFINE_MKX_UINTEGER(KaxCueTrack, 0xF7, 1, KaxCueTrackPositions, "CueTrack"); -DEFINE_MKX_UINTEGER(KaxCueClusterPosition, 0xF1, 1, KaxCueTrackPositions, "CueClusterPosition"); -DEFINE_MKX_UINTEGER(KaxCueBlockNumber, 0x5378, 2, KaxCueTrackPositions, "CueBlockNumber"); +DEFINE_MKX_MASTER (KaxCuePoint, 0xBB, 1, KaxCues, "CuePoint"); +DEFINE_MKX_UINTEGER (KaxCueTime, 0xB3, 1, KaxCuePoint, "CueTime"); +DEFINE_MKX_MASTER (KaxCueTrackPositions, 0xB7, 1, KaxCuePoint, "CueTrackPositions"); +DEFINE_MKX_UINTEGER (KaxCueTrack, 0xF7, 1, KaxCueTrackPositions, "CueTrack"); +DEFINE_MKX_UINTEGER (KaxCueClusterPosition, 0xF1, 1, KaxCueTrackPositions, "CueClusterPosition"); +DEFINE_MKX_UINTEGER_DEF(KaxCueBlockNumber, 0x5378, 2, KaxCueTrackPositions, "CueBlockNumber", 1); #if MATROSKA_VERSION >= 2 -DEFINE_MKX_UINTEGER(KaxCueCodecState, 0xEA, 1, KaxCueTrackPositions, "CueCodecState"); -DEFINE_MKX_MASTER (KaxCueReference, 0xDB, 1, KaxCueTrackPositions, "CueReference"); -DEFINE_MKX_UINTEGER(KaxCueRefTime, 0x96, 1, KaxCueReference, "CueRefTime"); -DEFINE_MKX_UINTEGER(KaxCueRefCluster, 0x97, 1, KaxCueRefTime, "CueRefCluster"); -DEFINE_MKX_UINTEGER(KaxCueRefNumber, 0x535F, 2, KaxCueRefTime, "CueRefNumber"); -DEFINE_MKX_UINTEGER(KaxCueRefCodecState, 0xEB, 1, KaxCueRefTime, "CueRefCodecState"); +DEFINE_MKX_UINTEGER_DEF(KaxCueCodecState, 0xEA, 1, KaxCueTrackPositions, "CueCodecState", 0); +DEFINE_MKX_MASTER (KaxCueReference, 0xDB, 1, KaxCueTrackPositions, "CueReference"); +DEFINE_MKX_UINTEGER (KaxCueRefTime, 0x96, 1, KaxCueReference, "CueRefTime"); +DEFINE_MKX_UINTEGER (KaxCueRefCluster, 0x97, 1, KaxCueRefTime, "CueRefCluster"); +DEFINE_MKX_UINTEGER_DEF(KaxCueRefNumber, 0x535F, 2, KaxCueRefTime, "CueRefNumber", 1); +DEFINE_MKX_UINTEGER_DEF(KaxCueRefCodecState, 0xEB, 1, KaxCueRefTime, "CueRefCodecState", 0); #endif /*! diff --git a/src/KaxInfoData.cpp b/src/KaxInfoData.cpp index c21a995..0a5610f 100644 --- a/src/KaxInfoData.cpp +++ b/src/KaxInfoData.cpp @@ -46,20 +46,20 @@ static const EbmlSemantic ContextList_KaxChapterTranslate[3] = EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateID)), }; -DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, 2, KaxInfo, "ChapterTranslate"); -DEFINE_MKX_UNISTRING(KaxSegmentFilename, 0x7384, 2, KaxInfo, "SegmentFilename"); -DEFINE_MKX_BINARY (KaxPrevUID, 0x3CB923, 3, KaxInfo, "PrevUID"); -DEFINE_MKX_UNISTRING(KaxPrevFilename, 0x3C83AB, 3, KaxInfo, "PrevFilename"); -DEFINE_MKX_BINARY (KaxNextUID, 0x3EB923, 3, KaxInfo, "NextUID"); -DEFINE_MKX_UNISTRING(KaxNextFilename, 0x3E83BB, 3, KaxInfo, "NextFilename"); -DEFINE_MKX_BINARY (KaxSegmentFamily, 0x4444, 2, KaxInfo, "SegmentFamily"); -DEFINE_MKX_MASTER (KaxChapterTranslate, 0x6924, 2, KaxInfo, "ChapterTranslate"); -DEFINE_MKX_UINTEGER (KaxChapterTranslateEditionUID, 0x69FC, 2, KaxChapterTranslate, "ChapterTranslateEditionUID"); -DEFINE_MKX_UINTEGER (KaxChapterTranslateCodec, 0x69BF, 2, KaxChapterTranslate, "ChapterTranslateCodec"); -DEFINE_MKX_BINARY (KaxChapterTranslateID, 0x69A5, 2, KaxChapterTranslate, "ChapterTranslateID"); -DEFINE_MKX_UINTEGER (KaxTimecodeScale, 0x2AD7B1, 3, KaxInfo, "TimecodeScale"); -DEFINE_MKX_FLOAT (KaxDuration, 0x4489, 2, KaxInfo, "Duration"); -DEFINE_MKX_DATE (KaxDateUTC, 0x4461, 2, KaxInfo, "DateUTC"); -DEFINE_MKX_UNISTRING(KaxTitle, 0x7BA9, 2, KaxInfo, "Title"); +DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, 2, KaxInfo, "ChapterTranslate"); +DEFINE_MKX_UNISTRING (KaxSegmentFilename, 0x7384, 2, KaxInfo, "SegmentFilename"); +DEFINE_MKX_BINARY (KaxPrevUID, 0x3CB923, 3, KaxInfo, "PrevUID"); +DEFINE_MKX_UNISTRING (KaxPrevFilename, 0x3C83AB, 3, KaxInfo, "PrevFilename"); +DEFINE_MKX_BINARY (KaxNextUID, 0x3EB923, 3, KaxInfo, "NextUID"); +DEFINE_MKX_UNISTRING (KaxNextFilename, 0x3E83BB, 3, KaxInfo, "NextFilename"); +DEFINE_MKX_BINARY (KaxSegmentFamily, 0x4444, 2, KaxInfo, "SegmentFamily"); +DEFINE_MKX_MASTER (KaxChapterTranslate, 0x6924, 2, KaxInfo, "ChapterTranslate"); +DEFINE_MKX_UINTEGER (KaxChapterTranslateEditionUID, 0x69FC, 2, KaxChapterTranslate, "ChapterTranslateEditionUID"); +DEFINE_MKX_UINTEGER (KaxChapterTranslateCodec, 0x69BF, 2, KaxChapterTranslate, "ChapterTranslateCodec"); +DEFINE_MKX_BINARY (KaxChapterTranslateID, 0x69A5, 2, KaxChapterTranslate, "ChapterTranslateID"); +DEFINE_MKX_UINTEGER_DEF(KaxTimecodeScale, 0x2AD7B1, 3, KaxInfo, "TimecodeScale", 1000000); +DEFINE_MKX_FLOAT (KaxDuration, 0x4489, 2, KaxInfo, "Duration"); +DEFINE_MKX_DATE (KaxDateUTC, 0x4461, 2, KaxInfo, "DateUTC"); +DEFINE_MKX_UNISTRING (KaxTitle, 0x7BA9, 2, KaxInfo, "Title"); END_LIBMATROSKA_NAMESPACE diff --git a/src/KaxTag.cpp b/src/KaxTag.cpp index 7a1cd24..f9d56c1 100644 --- a/src/KaxTag.cpp +++ b/src/KaxTag.cpp @@ -137,64 +137,64 @@ static const EbmlSemantic ContextList_KaxTagSimple[6] = EbmlSemantic(false, false, EBML_INFO(KaxTagSimple)), }; -DEFINE_MKX_MASTER (KaxTag, 0x7373, 2, KaxTags, "Tag"); -DEFINE_MKX_MASTER (KaxTagTargets, 0x63C0, 2, KaxTag, "TagTargets"); -DEFINE_MKX_MASTER (KaxTagGeneral, 0x67C9, 2, KaxTag, "TagGeneral"); -DEFINE_MKX_MASTER (KaxTagGenres, 0x6583, 2, KaxTag, "TagGenres"); -DEFINE_MKX_MASTER (KaxTagAudioSpecific, 0x41C5, 2, KaxTag, "TagAudioSpecific"); -DEFINE_MKX_MASTER (KaxTagImageSpecific, 0x4990, 2, KaxTag, "TagImageSpecific"); -DEFINE_MKX_UNISTRING(KaxTagBibliography, 0x4488, 2, KaxTag, "Bibliography"); -DEFINE_MKX_UNISTRING(KaxTagEncoder, 0x4431, 2, KaxTag, "Encoder"); -DEFINE_MKX_UNISTRING(KaxTagEncodeSettings, 0x6526, 2, KaxTag, "EncodeSettings"); -DEFINE_MKX_STRING (KaxTagLanguage, 0x22B59F, 3, KaxTag, "Language"); -DEFINE_MKX_UINTEGER (KaxTagLength, 0x5243, 2, KaxTag, "Length"); -DEFINE_MKX_UINTEGER (KaxTagPlaylistDelay, 0x72CC, 2, KaxTag, "PlaylistDelay"); -DEFINE_MKX_BINARY (KaxTagRating, 0x52BC, 2, KaxTag, "Rating"); -DEFINE_MKX_UNISTRING(KaxTagSubject, 0x49C1, 2, KaxTag, "Subject"); -DEFINE_MKX_UNISTRING(KaxTagUnsynchronisedText, 0x874B, 2, KaxTag, "UnsynchronisedText"); -DEFINE_MKX_STRING (KaxTagUserDefinedURL, 0x434A, 2, KaxTag, "UserDefinedURL"); -DEFINE_MKX_UINTEGER (KaxTagTargetTypeValue, 0x68CA, 2, KaxTagTargets, "TagTargetTypeValue"); -DEFINE_MKX_STRING (KaxTagTargetType, 0x63CA, 2, KaxTagTargets, "TagTargetType"); -DEFINE_MKX_UINTEGER (KaxTagTrackUID, 0x63C5, 2, KaxTagTargets, "TagTrackUID"); -DEFINE_MKX_UINTEGER (KaxTagEditionUID, 0x63C9, 2, KaxTagTargets, "TagEditionUID"); -DEFINE_MKX_UINTEGER (KaxTagChapterUID, 0x63C4, 2, KaxTagTargets, "TagChapterUID"); -DEFINE_MKX_UINTEGER (KaxTagAttachmentUID, 0x63C6, 2, KaxTagTargets, "TagAttachmentUID"); -DEFINE_MKX_UNISTRING(KaxTagArchivalLocation, 0x45A4, 2, KaxTagGeneral, "ArchivalLocation"); -DEFINE_MKX_UNISTRING(KaxTagFile, 0x454E, 2, KaxTagGeneral, "File"); -DEFINE_MKX_UNISTRING(KaxTagKeywords, 0x458C, 2, KaxTagGeneral, "Keywords"); -DEFINE_MKX_UNISTRING(KaxTagMood, 0x45AE, 2, KaxTagGeneral, "Mood"); -DEFINE_MKX_STRING (KaxTagRecordLocation, 0x457E, 2, KaxTagGeneral, "RecordLocation"); -DEFINE_MKX_UNISTRING(KaxTagSource, 0x458A, 2, KaxTagGeneral, "Source"); -DEFINE_MKX_UNISTRING(KaxTagSourceForm, 0x45B5, 2, KaxTagGeneral, "SourceForm"); -DEFINE_MKX_UNISTRING(KaxTagProduct, 0x45E3, 2, KaxTagGeneral, "Product"); -DEFINE_MKX_UNISTRING(KaxTagOriginalMediaType, 0x45A7, 2, KaxTagGeneral, "OriginalMediaType"); -DEFINE_MKX_UINTEGER (KaxTagPlayCounter, 0x4566, 2, KaxTagTargets, "PlayCounter"); -DEFINE_MKX_SINTEGER (KaxTagPopularimeter, 0x4532, 2, KaxTagTargets, "Popularimeter"); -DEFINE_MKX_STRING (KaxTagAudioGenre, 0x65C2, 2, KaxTagGenres, "AudioGenre"); -DEFINE_MKX_BINARY (KaxTagVideoGenre, 0x65A1, 2, KaxTagGenres, "VideoGenre"); -DEFINE_MKX_STRING (KaxTagSubGenre, 0x65AC, 2, KaxTagGenres, "SubGenre"); -DEFINE_MKX_BINARY (KaxTagAudioEncryption, 0x41B4, 2, KaxTagAudioSpecific, "AudioEncryption"); -DEFINE_MKX_FLOAT (KaxTagAudioGain, 0x4199, 2, KaxTagAudioSpecific, "AudioGain"); -DEFINE_MKX_FLOAT (KaxTagAudioPeak, 0x4189, 2, KaxTagAudioSpecific, "AudioPeak"); -DEFINE_MKX_FLOAT (KaxTagBPM, 0x41A1, 2, KaxTagAudioSpecific, "BPM"); -DEFINE_MKX_UINTEGER (KaxTagDiscTrack, 0x41B6, 2, KaxTagAudioSpecific, "DiscTrack"); -DEFINE_MKX_UINTEGER (KaxTagSetPart, 0x416E, 2, KaxTagAudioSpecific, "SetPart"); -DEFINE_MKX_BINARY (KaxTagEqualisation, 0x41B1, 2, KaxTagAudioSpecific, "Equalisation"); -DEFINE_MKX_STRING (KaxTagInitialKey, 0x413A, 2, KaxTagAudioSpecific, "InitialKey"); -DEFINE_MKX_STRING (KaxTagOfficialAudioFileURL, 0x4133, 2, KaxTagAudioSpecific, "OfficialAudioFileURL"); -DEFINE_MKX_STRING (KaxTagOfficialAudioSourceURL, 0x413E, 2, KaxTagAudioSpecific, "AudioSourceURL"); -DEFINE_MKX_UINTEGER (KaxTagCaptureDPI, 0x49C7, 2, KaxTagImageSpecific, "CaptureDPI"); -DEFINE_MKX_BINARY (KaxTagCaptureLightness, 0x49E1, 2, KaxTagImageSpecific, "CaptureLightness"); -DEFINE_MKX_UINTEGER (KaxTagCapturePaletteSetting, 0x4934, 2, KaxTagImageSpecific, "CapturePaletteSetting"); -DEFINE_MKX_BINARY (KaxTagCaptureSharpness, 0x4922, 2, KaxTagImageSpecific, "CaptureSharpness"); -DEFINE_MKX_UNISTRING(KaxTagCropped, 0x4987, 2, KaxTagImageSpecific, "Cropped"); -DEFINE_MKX_STRING (KaxTagOriginalDimensions, 0x4933, 2, KaxTagImageSpecific, "OriginalDimensions"); +DEFINE_MKX_MASTER (KaxTag, 0x7373, 2, KaxTags, "Tag"); +DEFINE_MKX_MASTER (KaxTagTargets, 0x63C0, 2, KaxTag, "TagTargets"); +DEFINE_MKX_MASTER (KaxTagGeneral, 0x67C9, 2, KaxTag, "TagGeneral"); +DEFINE_MKX_MASTER (KaxTagGenres, 0x6583, 2, KaxTag, "TagGenres"); +DEFINE_MKX_MASTER (KaxTagAudioSpecific, 0x41C5, 2, KaxTag, "TagAudioSpecific"); +DEFINE_MKX_MASTER (KaxTagImageSpecific, 0x4990, 2, KaxTag, "TagImageSpecific"); +DEFINE_MKX_UNISTRING (KaxTagBibliography, 0x4488, 2, KaxTag, "Bibliography"); +DEFINE_MKX_UNISTRING (KaxTagEncoder, 0x4431, 2, KaxTag, "Encoder"); +DEFINE_MKX_UNISTRING (KaxTagEncodeSettings, 0x6526, 2, KaxTag, "EncodeSettings"); +DEFINE_MKX_STRING (KaxTagLanguage, 0x22B59F, 3, KaxTag, "Language"); +DEFINE_MKX_UINTEGER (KaxTagLength, 0x5243, 2, KaxTag, "Length"); +DEFINE_MKX_UINTEGER (KaxTagPlaylistDelay, 0x72CC, 2, KaxTag, "PlaylistDelay"); +DEFINE_MKX_BINARY (KaxTagRating, 0x52BC, 2, KaxTag, "Rating"); +DEFINE_MKX_UNISTRING (KaxTagSubject, 0x49C1, 2, KaxTag, "Subject"); +DEFINE_MKX_UNISTRING (KaxTagUnsynchronisedText, 0x874B, 2, KaxTag, "UnsynchronisedText"); +DEFINE_MKX_STRING (KaxTagUserDefinedURL, 0x434A, 2, KaxTag, "UserDefinedURL"); +DEFINE_MKX_UINTEGER_DEF(KaxTagTargetTypeValue, 0x68CA, 2, KaxTagTargets, "TagTargetTypeValue", 50); +DEFINE_MKX_STRING (KaxTagTargetType, 0x63CA, 2, KaxTagTargets, "TagTargetType"); +DEFINE_MKX_UINTEGER_DEF(KaxTagTrackUID, 0x63C5, 2, KaxTagTargets, "TagTrackUID", 0); +DEFINE_MKX_UINTEGER_DEF(KaxTagEditionUID, 0x63C9, 2, KaxTagTargets, "TagEditionUID", 0); +DEFINE_MKX_UINTEGER_DEF(KaxTagChapterUID, 0x63C4, 2, KaxTagTargets, "TagChapterUID", 0); +DEFINE_MKX_UINTEGER_DEF(KaxTagAttachmentUID, 0x63C6, 2, KaxTagTargets, "TagAttachmentUID", 0); +DEFINE_MKX_UNISTRING (KaxTagArchivalLocation, 0x45A4, 2, KaxTagGeneral, "ArchivalLocation"); +DEFINE_MKX_UNISTRING (KaxTagFile, 0x454E, 2, KaxTagGeneral, "File"); +DEFINE_MKX_UNISTRING (KaxTagKeywords, 0x458C, 2, KaxTagGeneral, "Keywords"); +DEFINE_MKX_UNISTRING (KaxTagMood, 0x45AE, 2, KaxTagGeneral, "Mood"); +DEFINE_MKX_STRING (KaxTagRecordLocation, 0x457E, 2, KaxTagGeneral, "RecordLocation"); +DEFINE_MKX_UNISTRING (KaxTagSource, 0x458A, 2, KaxTagGeneral, "Source"); +DEFINE_MKX_UNISTRING (KaxTagSourceForm, 0x45B5, 2, KaxTagGeneral, "SourceForm"); +DEFINE_MKX_UNISTRING (KaxTagProduct, 0x45E3, 2, KaxTagGeneral, "Product"); +DEFINE_MKX_UNISTRING (KaxTagOriginalMediaType, 0x45A7, 2, KaxTagGeneral, "OriginalMediaType"); +DEFINE_MKX_UINTEGER (KaxTagPlayCounter, 0x4566, 2, KaxTagTargets, "PlayCounter"); +DEFINE_MKX_SINTEGER (KaxTagPopularimeter, 0x4532, 2, KaxTagTargets, "Popularimeter"); +DEFINE_MKX_STRING (KaxTagAudioGenre, 0x65C2, 2, KaxTagGenres, "AudioGenre"); +DEFINE_MKX_BINARY (KaxTagVideoGenre, 0x65A1, 2, KaxTagGenres, "VideoGenre"); +DEFINE_MKX_STRING (KaxTagSubGenre, 0x65AC, 2, KaxTagGenres, "SubGenre"); +DEFINE_MKX_BINARY (KaxTagAudioEncryption, 0x41B4, 2, KaxTagAudioSpecific, "AudioEncryption"); +DEFINE_MKX_FLOAT (KaxTagAudioGain, 0x4199, 2, KaxTagAudioSpecific, "AudioGain"); +DEFINE_MKX_FLOAT (KaxTagAudioPeak, 0x4189, 2, KaxTagAudioSpecific, "AudioPeak"); +DEFINE_MKX_FLOAT (KaxTagBPM, 0x41A1, 2, KaxTagAudioSpecific, "BPM"); +DEFINE_MKX_UINTEGER (KaxTagDiscTrack, 0x41B6, 2, KaxTagAudioSpecific, "DiscTrack"); +DEFINE_MKX_UINTEGER (KaxTagSetPart, 0x416E, 2, KaxTagAudioSpecific, "SetPart"); +DEFINE_MKX_BINARY (KaxTagEqualisation, 0x41B1, 2, KaxTagAudioSpecific, "Equalisation"); +DEFINE_MKX_STRING (KaxTagInitialKey, 0x413A, 2, KaxTagAudioSpecific, "InitialKey"); +DEFINE_MKX_STRING (KaxTagOfficialAudioFileURL, 0x4133, 2, KaxTagAudioSpecific, "OfficialAudioFileURL"); +DEFINE_MKX_STRING (KaxTagOfficialAudioSourceURL, 0x413E, 2, KaxTagAudioSpecific, "AudioSourceURL"); +DEFINE_MKX_UINTEGER (KaxTagCaptureDPI, 0x49C7, 2, KaxTagImageSpecific, "CaptureDPI"); +DEFINE_MKX_BINARY (KaxTagCaptureLightness, 0x49E1, 2, KaxTagImageSpecific, "CaptureLightness"); +DEFINE_MKX_UINTEGER (KaxTagCapturePaletteSetting, 0x4934, 2, KaxTagImageSpecific, "CapturePaletteSetting"); +DEFINE_MKX_BINARY (KaxTagCaptureSharpness, 0x4922, 2, KaxTagImageSpecific, "CaptureSharpness"); +DEFINE_MKX_UNISTRING (KaxTagCropped, 0x4987, 2, KaxTagImageSpecific, "Cropped"); +DEFINE_MKX_STRING (KaxTagOriginalDimensions, 0x4933, 2, KaxTagImageSpecific, "OriginalDimensions"); -DEFINE_MKX_MASTER (KaxTagSimple, 0x67C8, 2, KaxTag, "TagSimple"); -DEFINE_MKX_UNISTRING(KaxTagName, 0x45A3, 2, KaxTagSimple, "TagName"); -DEFINE_MKX_STRING (KaxTagLangue, 0x447A, 2, KaxTagSimple, "TagLanguage"); -DEFINE_MKX_UINTEGER (KaxTagDefault, 0x4484, 2, KaxTagSimple, "TagDefault"); -DEFINE_MKX_UNISTRING(KaxTagString, 0x4487, 2, KaxTagSimple, "TagString"); -DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary"); +DEFINE_MKX_MASTER (KaxTagSimple, 0x67C8, 2, KaxTag, "TagSimple"); +DEFINE_MKX_UNISTRING (KaxTagName, 0x45A3, 2, KaxTagSimple, "TagName"); +DEFINE_MKX_STRING_DEF (KaxTagLangue, 0x447A, 2, KaxTagSimple, "TagLanguage", "und"); +DEFINE_MKX_UINTEGER_DEF(KaxTagDefault, 0x4484, 2, KaxTagSimple, "TagDefault", 1); +DEFINE_MKX_UNISTRING (KaxTagString, 0x4487, 2, KaxTagSimple, "TagString"); +DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary"); END_LIBMATROSKA_NAMESPACE diff --git a/src/KaxTrackAudio.cpp b/src/KaxTrackAudio.cpp index f271c5c..152a06f 100644 --- a/src/KaxTrackAudio.cpp +++ b/src/KaxTrackAudio.cpp @@ -55,13 +55,13 @@ static const EbmlSemantic ContextList_KaxTrackAudio[5] = #endif // MATROSKA_VERSION }; -DEFINE_MKX_MASTER (KaxTrackAudio, 0xE1, 1, KaxTrackEntry, "TrackAudio"); -DEFINE_MKX_FLOAT (KaxAudioSamplingFreq, 0xB5, 1, KaxTrackAudio, "AudioSamplingFreq"); -DEFINE_MKX_FLOAT (KaxAudioOutputSamplingFreq, 0x78B5, 2, KaxTrackAudio, "AudioOutputSamplingFreq"); -DEFINE_MKX_UINTEGER(KaxAudioChannels, 0x9F, 1, KaxTrackAudio, "AudioChannels"); -DEFINE_MKX_UINTEGER(KaxAudioBitDepth, 0x6264, 2, KaxTrackAudio, "AudioBitDepth"); +DEFINE_MKX_MASTER (KaxTrackAudio, 0xE1, 1, KaxTrackEntry, "TrackAudio"); +DEFINE_MKX_FLOAT_DEF (KaxAudioSamplingFreq, 0xB5, 1, KaxTrackAudio, "AudioSamplingFreq", 8000.0); +DEFINE_MKX_FLOAT (KaxAudioOutputSamplingFreq, 0x78B5, 2, KaxTrackAudio, "AudioOutputSamplingFreq"); +DEFINE_MKX_UINTEGER_DEF(KaxAudioChannels, 0x9F, 1, KaxTrackAudio, "AudioChannels", 1); +DEFINE_MKX_UINTEGER (KaxAudioBitDepth, 0x6264, 2, KaxTrackAudio, "AudioBitDepth"); #if MATROSKA_VERSION >= 2 -DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition"); +DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition"); #endif END_LIBMATROSKA_NAMESPACE diff --git a/src/KaxTrackEntryData.cpp b/src/KaxTrackEntryData.cpp index d544faa..2846974 100644 --- a/src/KaxTrackEntryData.cpp +++ b/src/KaxTrackEntryData.cpp @@ -46,34 +46,35 @@ static const EbmlSemantic ContextList_KaxTrackTranslate[3] = EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateTrackID)), }; -DEFINE_MKX_UINTEGER (KaxTrackNumber, 0xD7, 1, KaxTracks, "TrackNumber"); -DEFINE_MKX_UINTEGER (KaxTrackUID, 0x73C5, 2, KaxTracks, "TrackUID"); -DEFINE_MKX_UINTEGER (KaxTrackType, 0x83, 1, KaxTracks, "TrackType"); -DEFINE_MKX_UINTEGER (KaxTrackFlagDefault, 0x88, 1, KaxTracks, "TrackFlagEnabled"); -DEFINE_MKX_UINTEGER (KaxTrackFlagForced, 0x55AA, 2, KaxTracks, "TrackFlagForced"); -DEFINE_MKX_UINTEGER (KaxTrackFlagLacing, 0x9C, 1, KaxTracks, "TrackFlagLacing"); -DEFINE_MKX_UINTEGER (KaxTrackMinCache, 0x6DE7, 2, KaxTracks, "TrackMinCache"); -DEFINE_MKX_UINTEGER (KaxTrackMaxCache, 0x6DF8, 2, KaxTracks, "TrackMaxCache\0rotomodobopo"); -DEFINE_MKX_UINTEGER (KaxTrackDefaultDuration, 0x23E383, 3, KaxTracks, "TrackDefaultDuration"); -DEFINE_MKX_FLOAT (KaxTrackTimecodeScale, 0x23314F, 3, KaxTracks, "TrackTimecodeScale"); -DEFINE_MKX_UINTEGER (KaxMaxBlockAdditionID, 0x55EE, 2, KaxTracks, "MaxBlockAdditionID"); -DEFINE_MKX_UNISTRING(KaxTrackName, 0x536E, 2, KaxTracks, "TrackName"); -DEFINE_MKX_STRING (KaxTrackLanguage, 0x22B59C, 3, KaxTracks, "TrackLanguage"); -DEFINE_MKX_STRING (KaxCodecID, 0x86, 1, KaxTracks, "CodecID"); -DEFINE_MKX_BINARY (KaxCodecPrivate, 0x63A2, 2, KaxTracks, "CodecPrivate"); -DEFINE_MKX_UNISTRING(KaxCodecName, 0x258688, 3, KaxTracks, "CodecName"); -DEFINE_MKX_BINARY (KaxTrackAttachmentLink, 0x7446, 2, KaxTracks, "TrackAttachmentLink"); -DEFINE_MKX_UINTEGER (KaxTrackOverlay, 0x6FAB, 2, KaxTracks, "TrackOverlay"); -DEFINE_MKX_MASTER (KaxTrackTranslate, 0x6624, 2, KaxTracks, "TrackTranslate"); -DEFINE_MKX_UINTEGER (KaxTrackTranslateEditionUID, 0x66FC, 2, KaxTrackTranslate, "TrackTranslateEditionUID"); -DEFINE_MKX_UINTEGER (KaxTrackTranslateCodec, 0x66BF, 2, KaxTrackTranslate, "TrackTranslateCodec"); -DEFINE_MKX_BINARY (KaxTrackTranslateTrackID, 0x66A5, 2, KaxTrackTranslate, "TrackTranslateTrackID"); +DEFINE_MKX_UINTEGER (KaxTrackNumber, 0xD7, 1, KaxTracks, "TrackNumber"); +DEFINE_MKX_UINTEGER (KaxTrackUID, 0x73C5, 2, KaxTracks, "TrackUID"); +DEFINE_MKX_UINTEGER (KaxTrackType, 0x83, 1, KaxTracks, "TrackType"); +DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagDefault, 0x88, 1, KaxTracks, "TrackFlagEnabled", 1); +DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagForced, 0x55AA, 2, KaxTracks, "TrackFlagForced", 0); +DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagLacing, 0x9C, 1, KaxTracks, "TrackFlagLacing", 1); +DEFINE_MKX_UINTEGER_DEF(KaxTrackMinCache, 0x6DE7, 2, KaxTracks, "TrackMinCache", 0); +DEFINE_MKX_UINTEGER (KaxTrackMaxCache, 0x6DF8, 2, KaxTracks, "TrackMaxCache\0rotomodobopo"); +DEFINE_MKX_UINTEGER (KaxTrackDefaultDuration, 0x23E383, 3, KaxTracks, "TrackDefaultDuration"); +DEFINE_MKX_FLOAT_DEF (KaxTrackTimecodeScale, 0x23314F, 3, KaxTracks, "TrackTimecodeScale", 1.0); +DEFINE_MKX_UINTEGER_DEF(KaxMaxBlockAdditionID, 0x55EE, 2, KaxTracks, "MaxBlockAdditionID", 0); +//DEFINE_MKX_SINTEGER_DEF(KaxTrackOffset, 0x537F, 2, KaxTracks, "TrackOffset", 0); +DEFINE_MKX_UNISTRING (KaxTrackName, 0x536E, 2, KaxTracks, "TrackName"); +DEFINE_MKX_STRING_DEF (KaxTrackLanguage, 0x22B59C, 3, KaxTracks, "TrackLanguage", "eng"); +DEFINE_MKX_STRING (KaxCodecID, 0x86, 1, KaxTracks, "CodecID"); +DEFINE_MKX_BINARY (KaxCodecPrivate, 0x63A2, 2, KaxTracks, "CodecPrivate"); +DEFINE_MKX_UNISTRING (KaxCodecName, 0x258688, 3, KaxTracks, "CodecName"); +DEFINE_MKX_BINARY (KaxTrackAttachmentLink, 0x7446, 2, KaxTracks, "TrackAttachmentLink"); +DEFINE_MKX_UINTEGER (KaxTrackOverlay, 0x6FAB, 2, KaxTracks, "TrackOverlay"); +DEFINE_MKX_MASTER (KaxTrackTranslate, 0x6624, 2, KaxTracks, "TrackTranslate"); +DEFINE_MKX_UINTEGER (KaxTrackTranslateEditionUID, 0x66FC, 2, KaxTrackTranslate, "TrackTranslateEditionUID"); +DEFINE_MKX_UINTEGER (KaxTrackTranslateCodec, 0x66BF, 2, KaxTrackTranslate, "TrackTranslateCodec"); +DEFINE_MKX_BINARY (KaxTrackTranslateTrackID, 0x66A5, 2, KaxTrackTranslate, "TrackTranslateTrackID"); #if MATROSKA_VERSION >= 2 -DEFINE_MKX_UINTEGER (KaxTrackFlagEnabled, 0xB9, 1, KaxTracks, "TrackFlagDefault"); -DEFINE_MKX_UNISTRING(KaxCodecSettings, 0x3A9697, 3, KaxTracks, "CodecSettings"); -DEFINE_MKX_STRING (KaxCodecInfoURL, 0x3B4040, 3, KaxTracks, "CodecInfoURL"); -DEFINE_MKX_STRING (KaxCodecDownloadURL, 0x26B240, 3, KaxTracks, "CodecDownloadURL"); -DEFINE_MKX_UINTEGER (KaxCodecDecodeAll, 0xAA, 1, KaxTracks, "CodecDecodeAll"); +DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagEnabled, 0xB9, 1, KaxTracks, "TrackFlagDefault", 1); +DEFINE_MKX_UNISTRING (KaxCodecSettings, 0x3A9697, 3, KaxTracks, "CodecSettings"); +DEFINE_MKX_STRING (KaxCodecInfoURL, 0x3B4040, 3, KaxTracks, "CodecInfoURL"); +DEFINE_MKX_STRING (KaxCodecDownloadURL, 0x26B240, 3, KaxTracks, "CodecDownloadURL"); +DEFINE_MKX_UINTEGER_DEF(KaxCodecDecodeAll, 0xAA, 1, KaxTracks, "CodecDecodeAll", 1); #endif END_LIBMATROSKA_NAMESPACE diff --git a/src/KaxTrackVideo.cpp b/src/KaxTrackVideo.cpp index 084344b..e8660ef 100644 --- a/src/KaxTrackVideo.cpp +++ b/src/KaxTrackVideo.cpp @@ -65,23 +65,23 @@ static const EbmlSemantic ContextList_KaxTrackVideo[15] = #endif // MATROSKA_VERSION }; -DEFINE_MKX_MASTER (KaxTrackVideo, 0xE0, 1, KaxTrackEntry, "TrackVideo"); -DEFINE_MKX_UINTEGER(KaxVideoPixelWidth, 0xB0, 1, KaxTrackVideo, "VideoPixelWidth"); -DEFINE_MKX_UINTEGER(KaxVideoPixelHeight, 0xBA, 1, KaxTrackVideo, "VideoPixelHeight"); -DEFINE_MKX_UINTEGER(KaxVideoPixelCropBottom, 0x54AA, 2, KaxTrackVideo, "VideoPixelCropBottom"); -DEFINE_MKX_UINTEGER(KaxVideoPixelCropTop, 0x54BB, 2, KaxTrackVideo, "VideoPixelCropTop"); -DEFINE_MKX_UINTEGER(KaxVideoPixelCropLeft, 0x54CC, 2, KaxTrackVideo, "VideoPixelCropLeft"); -DEFINE_MKX_UINTEGER(KaxVideoPixelCropRight, 0x54DD, 2, KaxTrackVideo, "VideoPixelCropRight"); -DEFINE_MKX_UINTEGER(KaxVideoDisplayWidth, 0x54B0, 2, KaxTrackVideo, "VideoDisplayWidth"); -DEFINE_MKX_UINTEGER(KaxVideoDisplayHeight, 0x54BA, 2, KaxTrackVideo, "VideoDisplayHeight"); -DEFINE_MKX_BINARY (KaxVideoColourSpace, 0x2EB524, 3, KaxTrackVideo, "VideoColourSpace"); -DEFINE_MKX_FLOAT (KaxVideoFrameRate, 0x2383E3, 3, KaxTrackVideo, "VideoFrameRate"); +DEFINE_MKX_MASTER (KaxTrackVideo, 0xE0, 1, KaxTrackEntry, "TrackVideo"); +DEFINE_MKX_UINTEGER (KaxVideoPixelWidth, 0xB0, 1, KaxTrackVideo, "VideoPixelWidth"); +DEFINE_MKX_UINTEGER (KaxVideoPixelHeight, 0xBA, 1, KaxTrackVideo, "VideoPixelHeight"); +DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropBottom, 0x54AA, 2, KaxTrackVideo, "VideoPixelCropBottom", 0); +DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropTop, 0x54BB, 2, KaxTrackVideo, "VideoPixelCropTop", 0); +DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropLeft, 0x54CC, 2, KaxTrackVideo, "VideoPixelCropLeft", 0); +DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropRight, 0x54DD, 2, KaxTrackVideo, "VideoPixelCropRight", 0); +DEFINE_MKX_UINTEGER (KaxVideoDisplayWidth, 0x54B0, 2, KaxTrackVideo, "VideoDisplayWidth"); +DEFINE_MKX_UINTEGER (KaxVideoDisplayHeight, 0x54BA, 2, KaxTrackVideo, "VideoDisplayHeight"); +DEFINE_MKX_BINARY (KaxVideoColourSpace, 0x2EB524, 3, KaxTrackVideo, "VideoColourSpace"); +DEFINE_MKX_FLOAT (KaxVideoFrameRate, 0x2383E3, 3, KaxTrackVideo, "VideoFrameRate"); #if MATROSKA_VERSION >= 2 -DEFINE_MKX_UINTEGER(KaxVideoFlagInterlaced, 0x9A, 1, KaxTrackVideo, "VideoFlagInterlaced"); -DEFINE_MKX_UINTEGER(KaxVideoStereoMode, 0x53B9, 2, KaxTrackVideo, "VideoStereoMode"); -DEFINE_MKX_UINTEGER(KaxVideoDisplayUnit, 0x54B2, 2, KaxTrackVideo, "VideoDisplayUnit"); -DEFINE_MKX_UINTEGER(KaxVideoAspectRatio, 0x54B3, 2, KaxTrackVideo, "VideoAspectRatio"); -DEFINE_MKX_FLOAT (KaxVideoGamma, 0x2FB523, 3, KaxTrackVideo, "VideoGamma"); +DEFINE_MKX_UINTEGER_DEF(KaxVideoFlagInterlaced, 0x9A, 1, KaxTrackVideo, "VideoFlagInterlaced", 0); +DEFINE_MKX_UINTEGER_DEF(KaxVideoStereoMode, 0x53B9, 2, KaxTrackVideo, "VideoStereoMode", 0); +DEFINE_MKX_UINTEGER_DEF(KaxVideoDisplayUnit, 0x54B2, 2, KaxTrackVideo, "VideoDisplayUnit", 0); +DEFINE_MKX_UINTEGER_DEF(KaxVideoAspectRatio, 0x54B3, 2, KaxTrackVideo, "VideoAspectRatio", 0); +DEFINE_MKX_FLOAT (KaxVideoGamma, 0x2FB523, 3, KaxTrackVideo, "VideoGamma"); #endif filepos_t KaxVideoFrameRate::RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault)