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
This commit is contained in:
Steve Lhomme 2010-04-06 17:20:14 +00:00
parent e42acc7263
commit becc597951
32 changed files with 1141 additions and 1323 deletions

View File

@ -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)

View File

@ -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)

View File

@ -1,424 +1,420 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** 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 <robux4 @ users.sf.net>
\author Julien Coloos <suiryc @ users.sf.net>
*/
#ifndef LIBMATROSKA_BLOCK_H
#define LIBMATROSKA_BLOCK_H
#include <vector>
#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<const SimpleDataBuffer*>(&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<DataBuffer *> myBuffers;
std::vector<int32> 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/
**
** <file/class description>
**
** 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 <robux4 @ users.sf.net>
\author Julien Coloos <suiryc @ users.sf.net>
*/
#ifndef LIBMATROSKA_BLOCK_H
#define LIBMATROSKA_BLOCK_H
#include <vector>
#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<const SimpleDataBuffer*>(&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<DataBuffer *> myBuffers;
std::vector<int32> 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

View File

@ -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)

View File

@ -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;}

View File

@ -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);
/*!

View File

@ -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)

View File

@ -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) {}

View File

@ -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();

View File

@ -1,162 +1,151 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** 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 <robux4 @ users.sf.net>
*/
#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/
**
** <file/class description>
**
** 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 <robux4 @ users.sf.net>
*/
#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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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);
/*!

View File

@ -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);}

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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);

View File

@ -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<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); }

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
/*!

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)