update the copyright notice to 2010

git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@18 a6f86f6d-0131-4f8e-9e7b-e335508773d5
This commit is contained in:
Steve Lhomme 2010-03-15 16:19:18 +00:00
parent 781ba62fa0
commit 99cfc345c2
49 changed files with 8963 additions and 8963 deletions

View File

@ -1,152 +1,152 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: FileKax.h,v 1.5 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_FILE_H
#define LIBMATROSKA_FILE_H
//#include <vector>
#include "matroska/KaxTypes.h"
#include "ebml/IOCallback.h"
//#include "MainHeader.h"
//#include "TrackType.h"
//#include "StreamInfo.h"
//#include "Cluster.h"
//#include "CodecHeader.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
//class Track;
//class Frame;
/*!
\class MATROSKA_DLL_API FileMatroska
\brief General container of all the parameters and data of an Matroska file
\todo Handle the filename and next filename
\todo Handle the IOCallback selection/type
*/
class MATROSKA_DLL_API FileMatroska {
public:
FileMatroska(IOCallback & output);
~FileMatroska();
#ifdef OLD
uint32 RenderHead(const std::string & aEncoderApp);
uint32 ReadHead();
uint32 ReadTracks();
uint32 ReadCodec();
void Close(const uint32 aTimeLength);
inline void type_SetInfo(const std::string & aStr) {myMainHeader.type_SetInfo(aStr);}
inline void type_SetAds(const std::string & aStr) {myMainHeader.type_SetAds(aStr);}
inline void type_SetSize(const std::string & aStr) {myMainHeader.type_SetSize(aStr);}
inline void type_SetSize(uint64 aSize) {myMainHeader.type_SetSize(aSize);}
inline uint8 GetTrackNumber() const { return myTracks.size(); }
void track_SetName(Track * aTrack, const std::string & aName);
void track_SetLaced(Track * aTrack, bool bLaced = true);
Track * CreateTrack(const track_type aType);
inline Track * GetTrack(const uint8 aTrackNb) const
{
if (aTrackNb > myTracks.size())
return NULL;
else
return myTracks[aTrackNb-1];
}
void Track_GetInfo(const Track * aTrack, TrackInfo & aTrackInfo) const;
void Track_SetInfo_Audio(Track * aTrack, const TrackInfoAudio & aTrackInfo);
void Track_GetInfo_Audio(const Track * aTrack, TrackInfoAudio & aTrackInfo) const;
void Track_SetInfo_Video(Track * aTrack, const TrackInfoVideo & aTrackInfo);
void Track_GetInfo_Video(const Track * aTrack, TrackInfoVideo & aTrackInfo) const;
void SelectReadingTrack(Track * aTrack, bool select = true);
/*!
\return wether the frame has been added or not
*/
bool AddFrame(Track * aTrack, const uint32 aTimecode, const binary *aFrame, const uint32 aFrameSize,
bool aKeyFrame = true, bool aBFrame = false);
/*!
\return wether the frame has been read or not
*/
bool ReadFrame(Track * & aTrack, uint32 & aTimecode, const binary * & aFrame, uint32 & aFrameSize,
bool & aKeyFrame, bool & aBFrame);
/*
Render the pending cluster to file
*/
void Flush();
void SetMaxClusterSize(const uint32 value);
void SetMinClusterSize(const uint32 value) {myMinClusterSize = value;}
protected:
MainHeader myMainHeader;
std::vector<Track *> myTracks;
std::vector<uint8> mySelectedTracks;
// Track *findTrack(Track * aTrack) const;
Cluster myCurrWriteCluster; /// \todo merge with the write one ?
uint32 myReadBlockNumber;
Cluster myCurrReadCluster;
binary * myCurrReadBlock; ///< The buffer containing the current read block
uint32 myCurrReadBlockSize; ///< The size of the buffer containing the current read block
uint8 myCurrReadBlockTrack; ///< The track number of the current track to read
uint32 myMaxClusterSize;
uint32 myMinClusterSize;
StreamInfo myStreamInfo;
CodecHeader myCodecHeader;
inline bool IsMyTrack(const Track * aTrack) const;
inline bool IsReadingTrack(const uint8 aTrackNum) const;
#endif // OLD
IOCallback & myFile;
};
END_LIBMATROSKA_NAMESPACE
#endif // FILE_KAX_HPP
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: FileKax.h,v 1.5 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_FILE_H
#define LIBMATROSKA_FILE_H
//#include <vector>
#include "matroska/KaxTypes.h"
#include "ebml/IOCallback.h"
//#include "MainHeader.h"
//#include "TrackType.h"
//#include "StreamInfo.h"
//#include "Cluster.h"
//#include "CodecHeader.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
//class Track;
//class Frame;
/*!
\class MATROSKA_DLL_API FileMatroska
\brief General container of all the parameters and data of an Matroska file
\todo Handle the filename and next filename
\todo Handle the IOCallback selection/type
*/
class MATROSKA_DLL_API FileMatroska {
public:
FileMatroska(IOCallback & output);
~FileMatroska();
#ifdef OLD
uint32 RenderHead(const std::string & aEncoderApp);
uint32 ReadHead();
uint32 ReadTracks();
uint32 ReadCodec();
void Close(const uint32 aTimeLength);
inline void type_SetInfo(const std::string & aStr) {myMainHeader.type_SetInfo(aStr);}
inline void type_SetAds(const std::string & aStr) {myMainHeader.type_SetAds(aStr);}
inline void type_SetSize(const std::string & aStr) {myMainHeader.type_SetSize(aStr);}
inline void type_SetSize(uint64 aSize) {myMainHeader.type_SetSize(aSize);}
inline uint8 GetTrackNumber() const { return myTracks.size(); }
void track_SetName(Track * aTrack, const std::string & aName);
void track_SetLaced(Track * aTrack, bool bLaced = true);
Track * CreateTrack(const track_type aType);
inline Track * GetTrack(const uint8 aTrackNb) const
{
if (aTrackNb > myTracks.size())
return NULL;
else
return myTracks[aTrackNb-1];
}
void Track_GetInfo(const Track * aTrack, TrackInfo & aTrackInfo) const;
void Track_SetInfo_Audio(Track * aTrack, const TrackInfoAudio & aTrackInfo);
void Track_GetInfo_Audio(const Track * aTrack, TrackInfoAudio & aTrackInfo) const;
void Track_SetInfo_Video(Track * aTrack, const TrackInfoVideo & aTrackInfo);
void Track_GetInfo_Video(const Track * aTrack, TrackInfoVideo & aTrackInfo) const;
void SelectReadingTrack(Track * aTrack, bool select = true);
/*!
\return wether the frame has been added or not
*/
bool AddFrame(Track * aTrack, const uint32 aTimecode, const binary *aFrame, const uint32 aFrameSize,
bool aKeyFrame = true, bool aBFrame = false);
/*!
\return wether the frame has been read or not
*/
bool ReadFrame(Track * & aTrack, uint32 & aTimecode, const binary * & aFrame, uint32 & aFrameSize,
bool & aKeyFrame, bool & aBFrame);
/*
Render the pending cluster to file
*/
void Flush();
void SetMaxClusterSize(const uint32 value);
void SetMinClusterSize(const uint32 value) {myMinClusterSize = value;}
protected:
MainHeader myMainHeader;
std::vector<Track *> myTracks;
std::vector<uint8> mySelectedTracks;
// Track *findTrack(Track * aTrack) const;
Cluster myCurrWriteCluster; /// \todo merge with the write one ?
uint32 myReadBlockNumber;
Cluster myCurrReadCluster;
binary * myCurrReadBlock; ///< The buffer containing the current read block
uint32 myCurrReadBlockSize; ///< The size of the buffer containing the current read block
uint8 myCurrReadBlockTrack; ///< The track number of the current track to read
uint32 myMaxClusterSize;
uint32 myMinClusterSize;
StreamInfo myStreamInfo;
CodecHeader myCodecHeader;
inline bool IsMyTrack(const Track * aTrack) const;
inline bool IsReadingTrack(const uint8 aTrackNum) const;
#endif // OLD
IOCallback & myFile;
};
END_LIBMATROSKA_NAMESPACE
#endif // FILE_KAX_HPP

View File

@ -1,110 +1,110 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttached.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_ATTACHED_H
#define LIBMATROSKA_ATTACHED_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlUInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxAttached : public EbmlMaster {
public:
KaxAttached();
KaxAttached(const KaxAttached & ElementToClone) : EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAttached)
};
class MATROSKA_DLL_API KaxFileDescription : public EbmlUnicodeString {
public:
KaxFileDescription() {}
KaxFileDescription(const KaxFileDescription & ElementToClone) : EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxFileDescription)
};
class MATROSKA_DLL_API KaxFileName : public EbmlUnicodeString {
public:
KaxFileName() {}
KaxFileName(const KaxFileName & ElementToClone) : EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxFileName)
};
class MATROSKA_DLL_API KaxMimeType : public EbmlString {
public:
KaxMimeType() {}
KaxMimeType(const KaxMimeType & ElementToClone) : EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxMimeType)
};
class MATROSKA_DLL_API KaxFileData : public EbmlBinary {
public:
KaxFileData() {}
KaxFileData(const KaxFileData & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize() const {return true;} // we don't mind about what's inside
EBML_CONCRETE_CLASS(KaxFileData)
};
class MATROSKA_DLL_API KaxFileReferral : public EbmlBinary {
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 {
public:
KaxFileUID() {}
KaxFileUID(const KaxFileUID & ElementToClone) : EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxFileUID)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_ATTACHED_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttached.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_ATTACHED_H
#define LIBMATROSKA_ATTACHED_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlUInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxAttached : public EbmlMaster {
public:
KaxAttached();
KaxAttached(const KaxAttached & ElementToClone) : EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAttached)
};
class MATROSKA_DLL_API KaxFileDescription : public EbmlUnicodeString {
public:
KaxFileDescription() {}
KaxFileDescription(const KaxFileDescription & ElementToClone) : EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxFileDescription)
};
class MATROSKA_DLL_API KaxFileName : public EbmlUnicodeString {
public:
KaxFileName() {}
KaxFileName(const KaxFileName & ElementToClone) : EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxFileName)
};
class MATROSKA_DLL_API KaxMimeType : public EbmlString {
public:
KaxMimeType() {}
KaxMimeType(const KaxMimeType & ElementToClone) : EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxMimeType)
};
class MATROSKA_DLL_API KaxFileData : public EbmlBinary {
public:
KaxFileData() {}
KaxFileData(const KaxFileData & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize() const {return true;} // we don't mind about what's inside
EBML_CONCRETE_CLASS(KaxFileData)
};
class MATROSKA_DLL_API KaxFileReferral : public EbmlBinary {
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 {
public:
KaxFileUID() {}
KaxFileUID(const KaxFileUID & ElementToClone) : EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxFileUID)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_ATTACHED_H

View File

@ -1,55 +1,55 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttachments.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_ATTACHEMENTS_H
#define LIBMATROSKA_ATTACHEMENTS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxAttachments : public EbmlMaster {
public:
KaxAttachments();
KaxAttachments(const KaxAttachments & ElementToClone) : EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAttachments)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_ATTACHEMENTS_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttachments.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_ATTACHEMENTS_H
#define LIBMATROSKA_ATTACHEMENTS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxAttachments : public EbmlMaster {
public:
KaxAttachments();
KaxAttachments(const KaxAttachments & ElementToClone) : EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAttachments)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_ATTACHEMENTS_H

View File

@ -1,423 +1,423 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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
*/
uint64 UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
uint64 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;
uint32 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);
bool ValidateSize() const {return true;}
/*!
\note override this function to generate the Data/Size on the fly, unlike the usual binary elements
*/
uint64 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"
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
*/
uint64 UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
uint64 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;
uint32 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);
bool ValidateSize() const {return true;}
/*!
\note override this function to generate the Data/Size on the fly, unlike the usual binary elements
*/
uint64 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

View File

@ -1,152 +1,152 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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: KaxBlockData.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_BLOCK_ADDITIONAL_H
#define LIBMATROSKA_BLOCK_ADDITIONAL_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlSInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxReferenceBlock;
class KaxBlockGroup;
class KaxBlockBlob;
class MATROSKA_DLL_API KaxReferencePriority : public EbmlUInteger {
public:
KaxReferencePriority() :EbmlUInteger(0) {}
KaxReferencePriority(const KaxReferencePriority & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxReferencePriority)
};
/*!
\brief element used for B frame-likes
*/
class MATROSKA_DLL_API KaxReferenceBlock : public EbmlSInteger {
public:
KaxReferenceBlock() :RefdBlock(NULL), ParentBlock(NULL) {bTimecodeSet = false;}
KaxReferenceBlock(const KaxReferenceBlock & ElementToClone) :EbmlSInteger(ElementToClone), bTimecodeSet(ElementToClone.bTimecodeSet) {}
/*!
\brief override this method to compute the timecode value
*/
virtual uint64 UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
const KaxBlockBlob & RefBlock() const;
void SetReferencedBlock(const KaxBlockBlob * aRefdBlock);
void SetReferencedBlock(const KaxBlockGroup & aRefdBlock);
void SetParentBlock(const KaxBlockGroup & aParentBlock) {ParentBlock = &aParentBlock;}
protected:
const KaxBlockBlob * RefdBlock;
const KaxBlockGroup * ParentBlock;
void SetReferencedTimecode(int64 refTimecode) {*static_cast<EbmlSInteger*>(this) = refTimecode; bTimecodeSet = true;};
bool bTimecodeSet;
EBML_CONCRETE_CLASS(KaxReferenceBlock)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxReferenceVirtual : public EbmlSInteger {
public:
KaxReferenceVirtual() {}
KaxReferenceVirtual(const KaxReferenceVirtual & ElementToClone) :EbmlSInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxReferenceVirtual)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxTimeSlice : public EbmlMaster {
public:
KaxTimeSlice();
KaxTimeSlice(const KaxTimeSlice & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTimeSlice)
};
class MATROSKA_DLL_API KaxSlices : public EbmlMaster {
public:
KaxSlices();
KaxSlices(const KaxSlices & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSlices)
};
class MATROSKA_DLL_API KaxSliceLaceNumber : public EbmlUInteger {
public:
KaxSliceLaceNumber() :EbmlUInteger(0) {}
KaxSliceLaceNumber(const KaxSliceLaceNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceLaceNumber)
};
class MATROSKA_DLL_API KaxSliceFrameNumber : public EbmlUInteger {
public:
KaxSliceFrameNumber() :EbmlUInteger(0) {}
KaxSliceFrameNumber(const KaxSliceFrameNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceFrameNumber)
};
class MATROSKA_DLL_API KaxSliceBlockAddID : public EbmlUInteger {
public:
KaxSliceBlockAddID() :EbmlUInteger(0) {}
KaxSliceBlockAddID(const KaxSliceBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceBlockAddID)
};
class MATROSKA_DLL_API KaxSliceDelay : public EbmlUInteger {
public:
KaxSliceDelay() :EbmlUInteger(0) {}
KaxSliceDelay(const KaxSliceDelay & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceDelay)
};
class MATROSKA_DLL_API KaxSliceDuration : public EbmlUInteger {
public:
KaxSliceDuration() {}
KaxSliceDuration(const KaxSliceDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceDuration)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_BLOCK_ADDITIONAL_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: KaxBlockData.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_BLOCK_ADDITIONAL_H
#define LIBMATROSKA_BLOCK_ADDITIONAL_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlSInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxReferenceBlock;
class KaxBlockGroup;
class KaxBlockBlob;
class MATROSKA_DLL_API KaxReferencePriority : public EbmlUInteger {
public:
KaxReferencePriority() :EbmlUInteger(0) {}
KaxReferencePriority(const KaxReferencePriority & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxReferencePriority)
};
/*!
\brief element used for B frame-likes
*/
class MATROSKA_DLL_API KaxReferenceBlock : public EbmlSInteger {
public:
KaxReferenceBlock() :RefdBlock(NULL), ParentBlock(NULL) {bTimecodeSet = false;}
KaxReferenceBlock(const KaxReferenceBlock & ElementToClone) :EbmlSInteger(ElementToClone), bTimecodeSet(ElementToClone.bTimecodeSet) {}
/*!
\brief override this method to compute the timecode value
*/
virtual uint64 UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
const KaxBlockBlob & RefBlock() const;
void SetReferencedBlock(const KaxBlockBlob * aRefdBlock);
void SetReferencedBlock(const KaxBlockGroup & aRefdBlock);
void SetParentBlock(const KaxBlockGroup & aParentBlock) {ParentBlock = &aParentBlock;}
protected:
const KaxBlockBlob * RefdBlock;
const KaxBlockGroup * ParentBlock;
void SetReferencedTimecode(int64 refTimecode) {*static_cast<EbmlSInteger*>(this) = refTimecode; bTimecodeSet = true;};
bool bTimecodeSet;
EBML_CONCRETE_CLASS(KaxReferenceBlock)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxReferenceVirtual : public EbmlSInteger {
public:
KaxReferenceVirtual() {}
KaxReferenceVirtual(const KaxReferenceVirtual & ElementToClone) :EbmlSInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxReferenceVirtual)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxTimeSlice : public EbmlMaster {
public:
KaxTimeSlice();
KaxTimeSlice(const KaxTimeSlice & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTimeSlice)
};
class MATROSKA_DLL_API KaxSlices : public EbmlMaster {
public:
KaxSlices();
KaxSlices(const KaxSlices & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSlices)
};
class MATROSKA_DLL_API KaxSliceLaceNumber : public EbmlUInteger {
public:
KaxSliceLaceNumber() :EbmlUInteger(0) {}
KaxSliceLaceNumber(const KaxSliceLaceNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceLaceNumber)
};
class MATROSKA_DLL_API KaxSliceFrameNumber : public EbmlUInteger {
public:
KaxSliceFrameNumber() :EbmlUInteger(0) {}
KaxSliceFrameNumber(const KaxSliceFrameNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceFrameNumber)
};
class MATROSKA_DLL_API KaxSliceBlockAddID : public EbmlUInteger {
public:
KaxSliceBlockAddID() :EbmlUInteger(0) {}
KaxSliceBlockAddID(const KaxSliceBlockAddID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceBlockAddID)
};
class MATROSKA_DLL_API KaxSliceDelay : public EbmlUInteger {
public:
KaxSliceDelay() :EbmlUInteger(0) {}
KaxSliceDelay(const KaxSliceDelay & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceDelay)
};
class MATROSKA_DLL_API KaxSliceDuration : public EbmlUInteger {
public:
KaxSliceDuration() {}
KaxSliceDuration(const KaxSliceDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSliceDuration)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_BLOCK_ADDITIONAL_H

View File

@ -1,271 +1,271 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxChapters.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CHAPTERS_H
#define LIBMATROSKA_CHAPTERS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlBinary.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxChapters : public EbmlMaster {
public:
KaxChapters();
KaxChapters(const KaxChapters & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapters)
};
class MATROSKA_DLL_API KaxEditionEntry : public EbmlMaster {
public:
KaxEditionEntry();
KaxEditionEntry(const KaxEditionEntry & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionEntry)
};
class MATROSKA_DLL_API KaxEditionUID : public EbmlUInteger {
public:
KaxEditionUID() {}
KaxEditionUID(const KaxEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionUID)
};
class MATROSKA_DLL_API KaxEditionFlagHidden : public EbmlUInteger {
public:
KaxEditionFlagHidden(): EbmlUInteger(0) {}
KaxEditionFlagHidden(const KaxEditionFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionFlagHidden)
};
class MATROSKA_DLL_API KaxEditionFlagDefault : public EbmlUInteger {
public:
KaxEditionFlagDefault(): EbmlUInteger(0) {}
KaxEditionFlagDefault(const KaxEditionFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionFlagDefault)
};
class MATROSKA_DLL_API KaxEditionFlagOrdered : public EbmlUInteger {
public:
KaxEditionFlagOrdered(): EbmlUInteger(0) {}
KaxEditionFlagOrdered(const KaxEditionFlagOrdered & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionFlagOrdered)
};
class MATROSKA_DLL_API KaxChapterAtom : public EbmlMaster {
public:
KaxChapterAtom();
KaxChapterAtom(const KaxChapterAtom & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterAtom)
};
class MATROSKA_DLL_API KaxChapterUID : public EbmlUInteger {
public:
KaxChapterUID() {}
KaxChapterUID(const KaxChapterUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterUID)
};
class MATROSKA_DLL_API KaxChapterTimeStart : public EbmlUInteger {
public:
KaxChapterTimeStart() {}
KaxChapterTimeStart(const KaxChapterTimeStart & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTimeStart)
};
class MATROSKA_DLL_API KaxChapterTimeEnd : public EbmlUInteger {
public:
KaxChapterTimeEnd() {}
KaxChapterTimeEnd(const KaxChapterTimeEnd & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTimeEnd)
};
class MATROSKA_DLL_API KaxChapterFlagHidden : public EbmlUInteger {
public:
KaxChapterFlagHidden(): EbmlUInteger(0) {}
KaxChapterFlagHidden(const KaxChapterFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterFlagHidden)
};
class MATROSKA_DLL_API KaxChapterFlagEnabled : public EbmlUInteger {
public:
KaxChapterFlagEnabled(): EbmlUInteger(1) {}
KaxChapterFlagEnabled(const KaxChapterFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterFlagEnabled)
};
class MATROSKA_DLL_API KaxChapterSegmentUID : public EbmlBinary {
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 {
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 {
public:
KaxChapterPhysicalEquiv(): EbmlUInteger() {}
KaxChapterPhysicalEquiv(const KaxChapterPhysicalEquiv & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterPhysicalEquiv)
};
class MATROSKA_DLL_API KaxChapterTrack : public EbmlMaster {
public:
KaxChapterTrack();
KaxChapterTrack(const KaxChapterTrack & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTrack)
};
class MATROSKA_DLL_API KaxChapterTrackNumber : public EbmlUInteger {
public:
KaxChapterTrackNumber() {}
KaxChapterTrackNumber(const KaxChapterTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTrackNumber)
};
class MATROSKA_DLL_API KaxChapterDisplay : public EbmlMaster {
public:
KaxChapterDisplay();
KaxChapterDisplay(const KaxChapterDisplay & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterDisplay)
};
class MATROSKA_DLL_API KaxChapterString : public EbmlUnicodeString {
public:
KaxChapterString() {}
KaxChapterString(const KaxChapterString & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterString)
};
class MATROSKA_DLL_API KaxChapterLanguage : public EbmlString {
public:
KaxChapterLanguage() :EbmlString("eng") {}
KaxChapterLanguage(const KaxChapterLanguage & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterLanguage)
};
class MATROSKA_DLL_API KaxChapterCountry : public EbmlString {
public:
KaxChapterCountry() :EbmlString() {}
KaxChapterCountry(const KaxChapterCountry & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterCountry)
};
class MATROSKA_DLL_API KaxChapterProcess : public EbmlMaster {
public:
KaxChapterProcess();
KaxChapterProcess(const KaxChapterProcess & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcess)
};
class MATROSKA_DLL_API KaxChapterProcessCodecID : public EbmlUInteger {
public:
KaxChapterProcessCodecID() :EbmlUInteger(0) {}
KaxChapterProcessCodecID(const KaxChapterProcessCodecID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcessCodecID)
};
class MATROSKA_DLL_API KaxChapterProcessPrivate : public EbmlBinary {
public:
KaxChapterProcessPrivate() {}
KaxChapterProcessPrivate(const KaxChapterProcessPrivate & ElementToClone) :EbmlBinary(ElementToClone) {}
bool ValidateSize() const {return true;}
EBML_CONCRETE_CLASS(KaxChapterProcessPrivate)
};
class MATROSKA_DLL_API KaxChapterProcessCommand : public EbmlMaster {
public:
KaxChapterProcessCommand();
KaxChapterProcessCommand(const KaxChapterProcessCommand & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcessCommand)
};
class MATROSKA_DLL_API KaxChapterProcessTime : public EbmlUInteger {
public:
KaxChapterProcessTime() {}
KaxChapterProcessTime(const KaxChapterProcessTime & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcessTime)
};
class MATROSKA_DLL_API KaxChapterProcessData : public EbmlBinary {
public:
KaxChapterProcessData() {}
KaxChapterProcessData(const KaxChapterProcessData & ElementToClone) :EbmlBinary(ElementToClone) {}
bool ValidateSize() const {return true;}
EBML_CONCRETE_CLASS(KaxChapterProcessData)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CHAPTERS_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxChapters.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CHAPTERS_H
#define LIBMATROSKA_CHAPTERS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlBinary.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxChapters : public EbmlMaster {
public:
KaxChapters();
KaxChapters(const KaxChapters & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapters)
};
class MATROSKA_DLL_API KaxEditionEntry : public EbmlMaster {
public:
KaxEditionEntry();
KaxEditionEntry(const KaxEditionEntry & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionEntry)
};
class MATROSKA_DLL_API KaxEditionUID : public EbmlUInteger {
public:
KaxEditionUID() {}
KaxEditionUID(const KaxEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionUID)
};
class MATROSKA_DLL_API KaxEditionFlagHidden : public EbmlUInteger {
public:
KaxEditionFlagHidden(): EbmlUInteger(0) {}
KaxEditionFlagHidden(const KaxEditionFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionFlagHidden)
};
class MATROSKA_DLL_API KaxEditionFlagDefault : public EbmlUInteger {
public:
KaxEditionFlagDefault(): EbmlUInteger(0) {}
KaxEditionFlagDefault(const KaxEditionFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionFlagDefault)
};
class MATROSKA_DLL_API KaxEditionFlagOrdered : public EbmlUInteger {
public:
KaxEditionFlagOrdered(): EbmlUInteger(0) {}
KaxEditionFlagOrdered(const KaxEditionFlagOrdered & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxEditionFlagOrdered)
};
class MATROSKA_DLL_API KaxChapterAtom : public EbmlMaster {
public:
KaxChapterAtom();
KaxChapterAtom(const KaxChapterAtom & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterAtom)
};
class MATROSKA_DLL_API KaxChapterUID : public EbmlUInteger {
public:
KaxChapterUID() {}
KaxChapterUID(const KaxChapterUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterUID)
};
class MATROSKA_DLL_API KaxChapterTimeStart : public EbmlUInteger {
public:
KaxChapterTimeStart() {}
KaxChapterTimeStart(const KaxChapterTimeStart & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTimeStart)
};
class MATROSKA_DLL_API KaxChapterTimeEnd : public EbmlUInteger {
public:
KaxChapterTimeEnd() {}
KaxChapterTimeEnd(const KaxChapterTimeEnd & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTimeEnd)
};
class MATROSKA_DLL_API KaxChapterFlagHidden : public EbmlUInteger {
public:
KaxChapterFlagHidden(): EbmlUInteger(0) {}
KaxChapterFlagHidden(const KaxChapterFlagHidden & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterFlagHidden)
};
class MATROSKA_DLL_API KaxChapterFlagEnabled : public EbmlUInteger {
public:
KaxChapterFlagEnabled(): EbmlUInteger(1) {}
KaxChapterFlagEnabled(const KaxChapterFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterFlagEnabled)
};
class MATROSKA_DLL_API KaxChapterSegmentUID : public EbmlBinary {
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 {
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 {
public:
KaxChapterPhysicalEquiv(): EbmlUInteger() {}
KaxChapterPhysicalEquiv(const KaxChapterPhysicalEquiv & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterPhysicalEquiv)
};
class MATROSKA_DLL_API KaxChapterTrack : public EbmlMaster {
public:
KaxChapterTrack();
KaxChapterTrack(const KaxChapterTrack & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTrack)
};
class MATROSKA_DLL_API KaxChapterTrackNumber : public EbmlUInteger {
public:
KaxChapterTrackNumber() {}
KaxChapterTrackNumber(const KaxChapterTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTrackNumber)
};
class MATROSKA_DLL_API KaxChapterDisplay : public EbmlMaster {
public:
KaxChapterDisplay();
KaxChapterDisplay(const KaxChapterDisplay & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterDisplay)
};
class MATROSKA_DLL_API KaxChapterString : public EbmlUnicodeString {
public:
KaxChapterString() {}
KaxChapterString(const KaxChapterString & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterString)
};
class MATROSKA_DLL_API KaxChapterLanguage : public EbmlString {
public:
KaxChapterLanguage() :EbmlString("eng") {}
KaxChapterLanguage(const KaxChapterLanguage & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterLanguage)
};
class MATROSKA_DLL_API KaxChapterCountry : public EbmlString {
public:
KaxChapterCountry() :EbmlString() {}
KaxChapterCountry(const KaxChapterCountry & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterCountry)
};
class MATROSKA_DLL_API KaxChapterProcess : public EbmlMaster {
public:
KaxChapterProcess();
KaxChapterProcess(const KaxChapterProcess & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcess)
};
class MATROSKA_DLL_API KaxChapterProcessCodecID : public EbmlUInteger {
public:
KaxChapterProcessCodecID() :EbmlUInteger(0) {}
KaxChapterProcessCodecID(const KaxChapterProcessCodecID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcessCodecID)
};
class MATROSKA_DLL_API KaxChapterProcessPrivate : public EbmlBinary {
public:
KaxChapterProcessPrivate() {}
KaxChapterProcessPrivate(const KaxChapterProcessPrivate & ElementToClone) :EbmlBinary(ElementToClone) {}
bool ValidateSize() const {return true;}
EBML_CONCRETE_CLASS(KaxChapterProcessPrivate)
};
class MATROSKA_DLL_API KaxChapterProcessCommand : public EbmlMaster {
public:
KaxChapterProcessCommand();
KaxChapterProcessCommand(const KaxChapterProcessCommand & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcessCommand)
};
class MATROSKA_DLL_API KaxChapterProcessTime : public EbmlUInteger {
public:
KaxChapterProcessTime() {}
KaxChapterProcessTime(const KaxChapterProcessTime & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterProcessTime)
};
class MATROSKA_DLL_API KaxChapterProcessData : public EbmlBinary {
public:
KaxChapterProcessData() {}
KaxChapterProcessData(const KaxChapterProcessData & ElementToClone) :EbmlBinary(ElementToClone) {}
bool ValidateSize() const {return true;}
EBML_CONCRETE_CLASS(KaxChapterProcessData)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CHAPTERS_H

View File

@ -1,164 +1,164 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 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: KaxCluster.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author Julien Coloos <suiryc @ users.sf.net>
*/
#ifndef LIBMATROSKA_CLUSTER_H
#define LIBMATROSKA_CLUSTER_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxTracks.h"
#include "matroska/KaxBlock.h"
#include "matroska/KaxCues.h"
#include "matroska/KaxClusterData.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxSegment;
class MATROSKA_DLL_API KaxCluster : public EbmlMaster {
public:
KaxCluster();
KaxCluster(const KaxCluster & ElementToClone);
/*!
\brief Addition of a frame without references
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing = LACING_AUTO);
/*!
\brief Addition of a frame with a backward reference (P frame)
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO);
/*!
\brief Addition of a frame with a backward+forward reference (B frame)
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO);
/*!
\brief Render the data to the stream and retrieve the position of BlockGroups for later cue entries
*/
uint32 Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault = false);
/*!
\return the global timecode of this Cluster
*/
uint64 GlobalTimecode() const;
KaxBlockGroup & GetNewBlock();
/*!
\brief release all the frames of all Blocks
\note this is a convenience to be able to keep Clusters+Blocks in memory (for future reference) withouht being a memory hog
*/
void ReleaseFrames();
/*!
\brief return the position offset compared to the beggining of the Segment
*/
uint64 GetPosition() const;
void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;}
void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) {
bPreviousTimecodeIsSet = true;
PreviousTimecode = aPreviousTimecode;
SetGlobalTimecodeScale(aTimecodeScale);
}
/*!
\note dirty hack to get the mandatory data back after reading
\todo there should be a better way to get mandatory data
*/
void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) {
SetGlobalTimecodeScale(aTimecodeScale);
MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale;
bFirstFrameInside = bPreviousTimecodeIsSet = true;
}
int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const;
uint64 GetBlockGlobalTimecode(int16 LocalTimecode);
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
TimecodeScale = aGlobalTimecodeScale;
bTimecodeScaleIsSet = true;
}
uint64 GlobalTimecodeScale() const {
assert(bTimecodeScaleIsSet);
return TimecodeScale;
}
bool SetSilentTrackUsed()
{
bSilentTracksUsed = true;
return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL;
}
bool AddBlockBlob(KaxBlockBlob * NewBlob);
const KaxSegment *GetParentSegment() const { return ParentSegment; }
protected:
KaxBlockBlob * currentNewBlob;
std::vector<KaxBlockBlob*> Blobs;
KaxBlockGroup * currentNewBlock;
const KaxSegment * ParentSegment;
uint64 MinTimecode, MaxTimecode, PreviousTimecode;
int64 TimecodeScale;
bool bFirstFrameInside; // used to speed research
bool bPreviousTimecodeIsSet;
bool bTimecodeScaleIsSet;
bool bSilentTracksUsed;
/*!
\note method used internally
*/
bool AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing);
EBML_CONCRETE_CLASS(KaxCluster)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CLUSTER_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: KaxCluster.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author Julien Coloos <suiryc @ users.sf.net>
*/
#ifndef LIBMATROSKA_CLUSTER_H
#define LIBMATROSKA_CLUSTER_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxTracks.h"
#include "matroska/KaxBlock.h"
#include "matroska/KaxCues.h"
#include "matroska/KaxClusterData.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxSegment;
class MATROSKA_DLL_API KaxCluster : public EbmlMaster {
public:
KaxCluster();
KaxCluster(const KaxCluster & ElementToClone);
/*!
\brief Addition of a frame without references
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing = LACING_AUTO);
/*!
\brief Addition of a frame with a backward reference (P frame)
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO);
/*!
\brief Addition of a frame with a backward+forward reference (B frame)
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO);
/*!
\brief Render the data to the stream and retrieve the position of BlockGroups for later cue entries
*/
uint32 Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault = false);
/*!
\return the global timecode of this Cluster
*/
uint64 GlobalTimecode() const;
KaxBlockGroup & GetNewBlock();
/*!
\brief release all the frames of all Blocks
\note this is a convenience to be able to keep Clusters+Blocks in memory (for future reference) withouht being a memory hog
*/
void ReleaseFrames();
/*!
\brief return the position offset compared to the beggining of the Segment
*/
uint64 GetPosition() const;
void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;}
void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) {
bPreviousTimecodeIsSet = true;
PreviousTimecode = aPreviousTimecode;
SetGlobalTimecodeScale(aTimecodeScale);
}
/*!
\note dirty hack to get the mandatory data back after reading
\todo there should be a better way to get mandatory data
*/
void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) {
SetGlobalTimecodeScale(aTimecodeScale);
MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale;
bFirstFrameInside = bPreviousTimecodeIsSet = true;
}
int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const;
uint64 GetBlockGlobalTimecode(int16 LocalTimecode);
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
TimecodeScale = aGlobalTimecodeScale;
bTimecodeScaleIsSet = true;
}
uint64 GlobalTimecodeScale() const {
assert(bTimecodeScaleIsSet);
return TimecodeScale;
}
bool SetSilentTrackUsed()
{
bSilentTracksUsed = true;
return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL;
}
bool AddBlockBlob(KaxBlockBlob * NewBlob);
const KaxSegment *GetParentSegment() const { return ParentSegment; }
protected:
KaxBlockBlob * currentNewBlob;
std::vector<KaxBlockBlob*> Blobs;
KaxBlockGroup * currentNewBlock;
const KaxSegment * ParentSegment;
uint64 MinTimecode, MaxTimecode, PreviousTimecode;
int64 TimecodeScale;
bool bFirstFrameInside; // used to speed research
bool bPreviousTimecodeIsSet;
bool bTimecodeScaleIsSet;
bool bSilentTracksUsed;
/*!
\note method used internally
*/
bool AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing);
EBML_CONCRETE_CLASS(KaxCluster)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CLUSTER_H

View File

@ -1,88 +1,88 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxClusterData.h,v 1.9 2004/04/21 19:50:10 mosu Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CLUSTER_DATA_H
#define LIBMATROSKA_CLUSTER_DATA_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxClusterTimecode : public EbmlUInteger {
public:
KaxClusterTimecode() {}
KaxClusterTimecode(const KaxClusterTimecode & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterTimecode)
};
class MATROSKA_DLL_API KaxClusterSilentTracks : public EbmlMaster {
public:
KaxClusterSilentTracks();
KaxClusterSilentTracks(const KaxClusterSilentTracks & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterSilentTracks)
};
class MATROSKA_DLL_API KaxClusterSilentTrackNumber : public EbmlUInteger {
public:
KaxClusterSilentTrackNumber() {}
KaxClusterSilentTrackNumber(const KaxClusterSilentTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterSilentTrackNumber)
};
class MATROSKA_DLL_API KaxClusterPosition : public EbmlUInteger {
public:
KaxClusterPosition() {}
KaxClusterPosition(const KaxClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterPosition)
};
class MATROSKA_DLL_API KaxClusterPrevSize : public EbmlUInteger {
public:
KaxClusterPrevSize() {}
KaxClusterPrevSize(const KaxClusterPrevSize & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterPrevSize)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CLUSTER_DATA_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxClusterData.h,v 1.9 2004/04/21 19:50:10 mosu Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CLUSTER_DATA_H
#define LIBMATROSKA_CLUSTER_DATA_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxClusterTimecode : public EbmlUInteger {
public:
KaxClusterTimecode() {}
KaxClusterTimecode(const KaxClusterTimecode & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterTimecode)
};
class MATROSKA_DLL_API KaxClusterSilentTracks : public EbmlMaster {
public:
KaxClusterSilentTracks();
KaxClusterSilentTracks(const KaxClusterSilentTracks & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterSilentTracks)
};
class MATROSKA_DLL_API KaxClusterSilentTrackNumber : public EbmlUInteger {
public:
KaxClusterSilentTrackNumber() {}
KaxClusterSilentTrackNumber(const KaxClusterSilentTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterSilentTrackNumber)
};
class MATROSKA_DLL_API KaxClusterPosition : public EbmlUInteger {
public:
KaxClusterPosition() {}
KaxClusterPosition(const KaxClusterPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterPosition)
};
class MATROSKA_DLL_API KaxClusterPrevSize : public EbmlUInteger {
public:
KaxClusterPrevSize() {}
KaxClusterPrevSize(const KaxClusterPrevSize & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxClusterPrevSize)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CLUSTER_DATA_H

View File

@ -1,70 +1,70 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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: KaxConfig.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#ifndef LIBMATROSKA_CONFIG_H
#define LIBMATROSKA_CONFIG_H
#define LIBMATROSKA_NAMESPACE libmatroska
#if defined(NO_NAMESPACE) // for older GCC
# define START_LIBMATROSKA_NAMESPACE
# define END_LIBMATROSKA_NAMESPACE
#else // NO_NAMESPACE
# define START_LIBMATROSKA_NAMESPACE namespace LIBMATROSKA_NAMESPACE {
# define END_LIBMATROSKA_NAMESPACE };
#endif // NO_NAMESPACE
// There are special implementations for certain platforms. For example on Windows
// we use the Win32 file API. here we set the appropriate macros.
#if defined(_WIN32)||defined(WIN32)
# if defined(MATROSKA_DLL)
# if defined(MATROSKA_DLL_EXPORT)
# define MATROSKA_DLL_API __declspec(dllexport)
# else // MATROSKA_DLL_EXPORT
# define MATROSKA_DLL_API __declspec(dllimport)
# endif // MATROSKA_DLL_EXPORT
# else // MATROSKA_DLL
# define MATROSKA_DLL_API
# endif // MATROSKA_DLL
#else
# define MATROSKA_DLL_API
#endif
#if !defined(MATROSKA_VERSION)
#define MATROSKA_VERSION 2
#endif // MATROSKA_VERSION
#endif // LIBMATROSKA_CONFIG_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: KaxConfig.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#ifndef LIBMATROSKA_CONFIG_H
#define LIBMATROSKA_CONFIG_H
#define LIBMATROSKA_NAMESPACE libmatroska
#if defined(NO_NAMESPACE) // for older GCC
# define START_LIBMATROSKA_NAMESPACE
# define END_LIBMATROSKA_NAMESPACE
#else // NO_NAMESPACE
# define START_LIBMATROSKA_NAMESPACE namespace LIBMATROSKA_NAMESPACE {
# define END_LIBMATROSKA_NAMESPACE };
#endif // NO_NAMESPACE
// There are special implementations for certain platforms. For example on Windows
// we use the Win32 file API. here we set the appropriate macros.
#if defined(_WIN32)||defined(WIN32)
# if defined(MATROSKA_DLL)
# if defined(MATROSKA_DLL_EXPORT)
# define MATROSKA_DLL_API __declspec(dllexport)
# else // MATROSKA_DLL_EXPORT
# define MATROSKA_DLL_API __declspec(dllimport)
# endif // MATROSKA_DLL_EXPORT
# else // MATROSKA_DLL
# define MATROSKA_DLL_API
# endif // MATROSKA_DLL
#else
# define MATROSKA_DLL_API
#endif
#if !defined(MATROSKA_VERSION)
#define MATROSKA_VERSION 2
#endif // MATROSKA_VERSION
#endif // LIBMATROSKA_CONFIG_H

View File

@ -1,188 +1,188 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContentEncoding.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#ifndef LIBMATROSKA_CONTENT_ENCODING_H
#define LIBMATROSKA_CONTENT_ENCODING_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxContentEncodings: public EbmlMaster {
public:
KaxContentEncodings();
KaxContentEncodings(const KaxContentEncodings &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodings)
};
class MATROSKA_DLL_API KaxContentEncoding: public EbmlMaster {
public:
KaxContentEncoding();
KaxContentEncoding(const KaxContentEncoding &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncoding)
};
class MATROSKA_DLL_API KaxContentEncodingOrder: public EbmlUInteger {
public:
KaxContentEncodingOrder(): EbmlUInteger(0) {}
KaxContentEncodingOrder(const KaxContentEncodingOrder &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodingOrder)
};
class MATROSKA_DLL_API KaxContentEncodingScope: public EbmlUInteger {
public:
KaxContentEncodingScope(): EbmlUInteger(1) {}
KaxContentEncodingScope(const KaxContentEncodingScope &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodingScope)
};
class MATROSKA_DLL_API KaxContentEncodingType: public EbmlUInteger {
public:
KaxContentEncodingType(): EbmlUInteger(0) {}
KaxContentEncodingType(const KaxContentEncodingType &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodingType)
};
class MATROSKA_DLL_API KaxContentCompression: public EbmlMaster {
public:
KaxContentCompression();
KaxContentCompression(const KaxContentCompression &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentCompression)
};
class MATROSKA_DLL_API KaxContentCompAlgo: public EbmlUInteger {
public:
KaxContentCompAlgo(): EbmlUInteger(0) {}
KaxContentCompAlgo(const KaxContentCompAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentCompAlgo)
};
class MATROSKA_DLL_API KaxContentCompSettings: public EbmlBinary {
public:
KaxContentCompSettings() {}
KaxContentCompSettings(const KaxContentCompSettings &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentCompSettings)
};
class MATROSKA_DLL_API KaxContentEncryption: public EbmlMaster {
public:
KaxContentEncryption();
KaxContentEncryption(const KaxContentEncryption &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncryption)
};
class MATROSKA_DLL_API KaxContentEncAlgo: public EbmlUInteger {
public:
KaxContentEncAlgo(): EbmlUInteger(0) {}
KaxContentEncAlgo(const KaxContentEncAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncAlgo)
};
class MATROSKA_DLL_API KaxContentEncKeyID: public EbmlBinary {
public:
KaxContentEncKeyID() {}
KaxContentEncKeyID(const KaxContentEncKeyID &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentEncKeyID)
};
class MATROSKA_DLL_API KaxContentSignature: public EbmlBinary {
public:
KaxContentSignature() {}
KaxContentSignature(const KaxContentSignature &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentSignature)
};
class MATROSKA_DLL_API KaxContentSigKeyID: public EbmlBinary {
public:
KaxContentSigKeyID() {}
KaxContentSigKeyID(const KaxContentSigKeyID &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentSigKeyID)
};
class MATROSKA_DLL_API KaxContentSigAlgo: public EbmlUInteger {
public:
KaxContentSigAlgo() {}
KaxContentSigAlgo(const KaxContentSigAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentSigAlgo)
};
class MATROSKA_DLL_API KaxContentSigHashAlgo: public EbmlUInteger {
public:
KaxContentSigHashAlgo() {}
KaxContentSigHashAlgo(const KaxContentSigHashAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentSigHashAlgo)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CONTENT_ENCODING_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContentEncoding.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#ifndef LIBMATROSKA_CONTENT_ENCODING_H
#define LIBMATROSKA_CONTENT_ENCODING_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxContentEncodings: public EbmlMaster {
public:
KaxContentEncodings();
KaxContentEncodings(const KaxContentEncodings &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodings)
};
class MATROSKA_DLL_API KaxContentEncoding: public EbmlMaster {
public:
KaxContentEncoding();
KaxContentEncoding(const KaxContentEncoding &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncoding)
};
class MATROSKA_DLL_API KaxContentEncodingOrder: public EbmlUInteger {
public:
KaxContentEncodingOrder(): EbmlUInteger(0) {}
KaxContentEncodingOrder(const KaxContentEncodingOrder &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodingOrder)
};
class MATROSKA_DLL_API KaxContentEncodingScope: public EbmlUInteger {
public:
KaxContentEncodingScope(): EbmlUInteger(1) {}
KaxContentEncodingScope(const KaxContentEncodingScope &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodingScope)
};
class MATROSKA_DLL_API KaxContentEncodingType: public EbmlUInteger {
public:
KaxContentEncodingType(): EbmlUInteger(0) {}
KaxContentEncodingType(const KaxContentEncodingType &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncodingType)
};
class MATROSKA_DLL_API KaxContentCompression: public EbmlMaster {
public:
KaxContentCompression();
KaxContentCompression(const KaxContentCompression &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentCompression)
};
class MATROSKA_DLL_API KaxContentCompAlgo: public EbmlUInteger {
public:
KaxContentCompAlgo(): EbmlUInteger(0) {}
KaxContentCompAlgo(const KaxContentCompAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentCompAlgo)
};
class MATROSKA_DLL_API KaxContentCompSettings: public EbmlBinary {
public:
KaxContentCompSettings() {}
KaxContentCompSettings(const KaxContentCompSettings &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentCompSettings)
};
class MATROSKA_DLL_API KaxContentEncryption: public EbmlMaster {
public:
KaxContentEncryption();
KaxContentEncryption(const KaxContentEncryption &ElementToClone):
EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncryption)
};
class MATROSKA_DLL_API KaxContentEncAlgo: public EbmlUInteger {
public:
KaxContentEncAlgo(): EbmlUInteger(0) {}
KaxContentEncAlgo(const KaxContentEncAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentEncAlgo)
};
class MATROSKA_DLL_API KaxContentEncKeyID: public EbmlBinary {
public:
KaxContentEncKeyID() {}
KaxContentEncKeyID(const KaxContentEncKeyID &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentEncKeyID)
};
class MATROSKA_DLL_API KaxContentSignature: public EbmlBinary {
public:
KaxContentSignature() {}
KaxContentSignature(const KaxContentSignature &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentSignature)
};
class MATROSKA_DLL_API KaxContentSigKeyID: public EbmlBinary {
public:
KaxContentSigKeyID() {}
KaxContentSigKeyID(const KaxContentSigKeyID &ElementToClone):
EbmlBinary(ElementToClone) {}
bool ValidateSize(void) const { return true; }
EBML_CONCRETE_CLASS(KaxContentSigKeyID)
};
class MATROSKA_DLL_API KaxContentSigAlgo: public EbmlUInteger {
public:
KaxContentSigAlgo() {}
KaxContentSigAlgo(const KaxContentSigAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentSigAlgo)
};
class MATROSKA_DLL_API KaxContentSigHashAlgo: public EbmlUInteger {
public:
KaxContentSigHashAlgo() {}
KaxContentSigHashAlgo(const KaxContentSigHashAlgo &ElementToClone):
EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxContentSigHashAlgo)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CONTENT_ENCODING_H

View File

@ -1,87 +1,87 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContexts.h,v 1.6 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CONTEXTS_H
#define LIBMATROSKA_CONTEXTS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlElement.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
extern const EbmlSemanticContext MATROSKA_DLL_API KaxMatroska_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxSegment_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttachments_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttached_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileDescription_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxMimeType_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileData_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxChapters_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCluster_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTags_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTag_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxBlockGroup_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferencePriority_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceBlock_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceVirtual_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCues_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxInfo_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxSeekHead_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTracks_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackEntry_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackNumber_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackType_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagEnabled_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagDefault_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagLacing_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackLanguage_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecID_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecPrivate_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecSettings_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecInfoURL_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDownloadURL_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDecodeAll_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackOverlay_Context;
extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxGlobal_Context();
extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxTagsGlobal_Context();
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CONTEXTS_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContexts.h,v 1.6 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CONTEXTS_H
#define LIBMATROSKA_CONTEXTS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlElement.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
extern const EbmlSemanticContext MATROSKA_DLL_API KaxMatroska_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxSegment_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttachments_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttached_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileDescription_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxMimeType_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileData_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxChapters_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCluster_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTags_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTag_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxBlockGroup_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferencePriority_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceBlock_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceVirtual_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCues_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxInfo_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxSeekHead_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTracks_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackEntry_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackNumber_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackType_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagEnabled_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagDefault_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagLacing_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackLanguage_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecID_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecPrivate_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecSettings_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecInfoURL_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDownloadURL_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDecodeAll_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackOverlay_Context;
extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxGlobal_Context();
extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxTagsGlobal_Context();
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CONTEXTS_H

View File

@ -1,95 +1,95 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxCues.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CUES_H
#define LIBMATROSKA_CUES_H
#include <vector>
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxBlock.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxCuePoint;
class MATROSKA_DLL_API KaxCues : public EbmlMaster {
public:
KaxCues();
KaxCues(const KaxCues & ElementToClone) :EbmlMaster(ElementToClone) {}
~KaxCues();
bool AddBlockGroup(const KaxBlockGroup & BlockReference);
bool AddBlockBlob(const KaxBlockBlob & BlockReference);
/*!
\brief Indicate that the position for this Block is set
*/
void PositionSet(const KaxBlockGroup & BlockReference);
void PositionSet(const KaxBlockBlob & BlockReference);
/*!
\brief override to sort by timecode/track
*/
uint32 Render(IOCallback & output, bool bSaveDefault = false) {
Sort();
return EbmlMaster::Render(output, bSaveDefault);
}
uint64 GetTimecodePosition(uint64 aTimecode) const;
const KaxCuePoint * GetTimecodePoint(uint64 aTimecode) const;
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
mGlobalTimecodeScale = aGlobalTimecodeScale;
bGlobalTimecodeScaleIsSet = true;
}
uint64 GlobalTimecodeScale() const {
assert(bGlobalTimecodeScaleIsSet);
return mGlobalTimecodeScale;
}
protected:
std::vector<const KaxBlockBlob *> myTempReferences;
bool bGlobalTimecodeScaleIsSet;
uint64 mGlobalTimecodeScale;
EBML_CONCRETE_CLASS(KaxCues)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CUES_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxCues.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_CUES_H
#define LIBMATROSKA_CUES_H
#include <vector>
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxBlock.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxCuePoint;
class MATROSKA_DLL_API KaxCues : public EbmlMaster {
public:
KaxCues();
KaxCues(const KaxCues & ElementToClone) :EbmlMaster(ElementToClone) {}
~KaxCues();
bool AddBlockGroup(const KaxBlockGroup & BlockReference);
bool AddBlockBlob(const KaxBlockBlob & BlockReference);
/*!
\brief Indicate that the position for this Block is set
*/
void PositionSet(const KaxBlockGroup & BlockReference);
void PositionSet(const KaxBlockBlob & BlockReference);
/*!
\brief override to sort by timecode/track
*/
uint32 Render(IOCallback & output, bool bSaveDefault = false) {
Sort();
return EbmlMaster::Render(output, bSaveDefault);
}
uint64 GetTimecodePosition(uint64 aTimecode) const;
const KaxCuePoint * GetTimecodePoint(uint64 aTimecode) const;
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
mGlobalTimecodeScale = aGlobalTimecodeScale;
bGlobalTimecodeScaleIsSet = true;
}
uint64 GlobalTimecodeScale() const {
assert(bGlobalTimecodeScaleIsSet);
return mGlobalTimecodeScale;
}
protected:
std::vector<const KaxBlockBlob *> myTempReferences;
bool bGlobalTimecodeScaleIsSet;
uint64 mGlobalTimecodeScale;
EBML_CONCRETE_CLASS(KaxCues)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CUES_H

View File

@ -1,162 +1,162 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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);
bool operator<(const EbmlElement & EltB) 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"
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);
bool operator<(const EbmlElement & EltB) 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

View File

@ -1,72 +1,72 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfo.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_INFO_H
#define LIBMATROSKA_INFO_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUnicodeString.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxInfo : public EbmlMaster {
public:
KaxInfo();
KaxInfo(const KaxInfo & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxInfo)
};
class MATROSKA_DLL_API KaxMuxingApp : public EbmlUnicodeString {
public:
KaxMuxingApp() {}
KaxMuxingApp(const KaxMuxingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxMuxingApp)
};
class MATROSKA_DLL_API KaxWritingApp : public EbmlUnicodeString {
public:
KaxWritingApp() {}
KaxWritingApp(const KaxWritingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxWritingApp)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_INFO_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfo.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_INFO_H
#define LIBMATROSKA_INFO_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUnicodeString.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxInfo : public EbmlMaster {
public:
KaxInfo();
KaxInfo(const KaxInfo & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxInfo)
};
class MATROSKA_DLL_API KaxMuxingApp : public EbmlUnicodeString {
public:
KaxMuxingApp() {}
KaxMuxingApp(const KaxMuxingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxMuxingApp)
};
class MATROSKA_DLL_API KaxWritingApp : public EbmlUnicodeString {
public:
KaxWritingApp() {}
KaxWritingApp(const KaxWritingApp & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxWritingApp)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_INFO_H

View File

@ -1,179 +1,179 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfoData.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#ifndef LIBMATROSKA_INFO_DATA_H
#define LIBMATROSKA_INFO_DATA_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlDate.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxSegmentUID : public EbmlBinary {
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 {
public:
KaxSegmentFilename() {}
KaxSegmentFilename(const KaxSegmentFilename & ElementToClone) :EbmlUnicodeString(ElementToClone){}
EBML_CONCRETE_CLASS(KaxSegmentFilename)
};
class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {
public:
KaxPrevUID() {}
KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
bool ValidateSize() const { return (GetSize() == 16);}
EBML_CONCRETE_CLASS(KaxPrevUID)
};
class MATROSKA_DLL_API KaxPrevFilename : public EbmlUnicodeString {
public:
KaxPrevFilename() :EbmlUnicodeString() {}
KaxPrevFilename(const KaxPrevFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxPrevFilename)
};
class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {
public:
KaxNextUID() {}
KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
bool ValidateSize() const { return (GetSize() == 16);}
EBML_CONCRETE_CLASS(KaxNextUID)
};
class MATROSKA_DLL_API KaxNextFilename : public EbmlUnicodeString {
public:
KaxNextFilename() {}
KaxNextFilename(const KaxNextFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxNextFilename)
};
class MATROSKA_DLL_API KaxSegmentFamily : public EbmlBinary {
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 {
public:
KaxChapterTranslate();
KaxChapterTranslate(const KaxChapterTranslate & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTranslate)
};
class MATROSKA_DLL_API KaxChapterTranslateCodec : public EbmlUInteger {
public:
KaxChapterTranslateCodec() {}
KaxChapterTranslateCodec(const KaxChapterTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTranslateCodec)
};
class MATROSKA_DLL_API KaxChapterTranslateEditionUID : public EbmlUInteger {
public:
KaxChapterTranslateEditionUID() {}
KaxChapterTranslateEditionUID(const KaxChapterTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTranslateEditionUID)
};
class MATROSKA_DLL_API KaxChapterTranslateID : public EbmlBinary {
public:
KaxChapterTranslateID() {}
KaxChapterTranslateID(const KaxChapterTranslateID & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize() const { return true;}
EBML_CONCRETE_CLASS(KaxChapterTranslateID)
};
class MATROSKA_DLL_API KaxTimecodeScale : public EbmlUInteger {
public:
KaxTimecodeScale() :EbmlUInteger(1000000) {}
KaxTimecodeScale(const KaxTimecodeScale & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTimecodeScale)
};
class MATROSKA_DLL_API KaxDuration : public EbmlFloat {
public:
KaxDuration(): EbmlFloat(FLOAT_64) {}
KaxDuration(const KaxDuration & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxDuration)
};
class MATROSKA_DLL_API KaxDateUTC : public EbmlDate {
public:
KaxDateUTC() {}
KaxDateUTC(const KaxDateUTC & ElementToClone) :EbmlDate(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxDateUTC)
};
class MATROSKA_DLL_API KaxTitle : public EbmlUnicodeString {
public:
KaxTitle() {}
KaxTitle(const KaxTitle & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTitle)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_INFO_DATA_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfoData.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#ifndef LIBMATROSKA_INFO_DATA_H
#define LIBMATROSKA_INFO_DATA_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlDate.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxSegmentUID : public EbmlBinary {
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 {
public:
KaxSegmentFilename() {}
KaxSegmentFilename(const KaxSegmentFilename & ElementToClone) :EbmlUnicodeString(ElementToClone){}
EBML_CONCRETE_CLASS(KaxSegmentFilename)
};
class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {
public:
KaxPrevUID() {}
KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
bool ValidateSize() const { return (GetSize() == 16);}
EBML_CONCRETE_CLASS(KaxPrevUID)
};
class MATROSKA_DLL_API KaxPrevFilename : public EbmlUnicodeString {
public:
KaxPrevFilename() :EbmlUnicodeString() {}
KaxPrevFilename(const KaxPrevFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxPrevFilename)
};
class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {
public:
KaxNextUID() {}
KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
bool ValidateSize() const { return (GetSize() == 16);}
EBML_CONCRETE_CLASS(KaxNextUID)
};
class MATROSKA_DLL_API KaxNextFilename : public EbmlUnicodeString {
public:
KaxNextFilename() {}
KaxNextFilename(const KaxNextFilename & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxNextFilename)
};
class MATROSKA_DLL_API KaxSegmentFamily : public EbmlBinary {
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 {
public:
KaxChapterTranslate();
KaxChapterTranslate(const KaxChapterTranslate & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTranslate)
};
class MATROSKA_DLL_API KaxChapterTranslateCodec : public EbmlUInteger {
public:
KaxChapterTranslateCodec() {}
KaxChapterTranslateCodec(const KaxChapterTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTranslateCodec)
};
class MATROSKA_DLL_API KaxChapterTranslateEditionUID : public EbmlUInteger {
public:
KaxChapterTranslateEditionUID() {}
KaxChapterTranslateEditionUID(const KaxChapterTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxChapterTranslateEditionUID)
};
class MATROSKA_DLL_API KaxChapterTranslateID : public EbmlBinary {
public:
KaxChapterTranslateID() {}
KaxChapterTranslateID(const KaxChapterTranslateID & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize() const { return true;}
EBML_CONCRETE_CLASS(KaxChapterTranslateID)
};
class MATROSKA_DLL_API KaxTimecodeScale : public EbmlUInteger {
public:
KaxTimecodeScale() :EbmlUInteger(1000000) {}
KaxTimecodeScale(const KaxTimecodeScale & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTimecodeScale)
};
class MATROSKA_DLL_API KaxDuration : public EbmlFloat {
public:
KaxDuration(): EbmlFloat(FLOAT_64) {}
KaxDuration(const KaxDuration & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxDuration)
};
class MATROSKA_DLL_API KaxDateUTC : public EbmlDate {
public:
KaxDateUTC() {}
KaxDateUTC(const KaxDateUTC & ElementToClone) :EbmlDate(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxDateUTC)
};
class MATROSKA_DLL_API KaxTitle : public EbmlUnicodeString {
public:
KaxTitle() {}
KaxTitle(const KaxTitle & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTitle)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_INFO_DATA_H

View File

@ -1,98 +1,98 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSeekHead.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_SEEK_HEAD_H
#define LIBMATROSKA_SEEK_HEAD_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlUInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxSegment;
class KaxSeek;
class MATROSKA_DLL_API KaxSeekHead : public EbmlMaster {
public:
KaxSeekHead();
KaxSeekHead(const KaxSeekHead & ElementToClone) :EbmlMaster(ElementToClone) {}
/*!
\brief add an element to index in the Meta Seek data
\note the element should already be written in the file
*/
void IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment);
KaxSeek * FindFirstOf(const EbmlCallbacks & Callbacks) const;
KaxSeek * FindNextOf(const KaxSeek &aPrev) const;
EBML_CONCRETE_CLASS(KaxSeekHead)
};
class MATROSKA_DLL_API KaxSeek : public EbmlMaster {
public:
KaxSeek();
KaxSeek(const KaxSeek & ElementToClone) :EbmlMaster(ElementToClone) {}
int64 Location() const;
bool IsEbmlId(const EbmlId & aId) const;
bool IsEbmlId(const KaxSeek & aPoint) const;
EBML_CONCRETE_CLASS(KaxSeek)
};
class MATROSKA_DLL_API KaxSeekID : public EbmlBinary {
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 {
public:
KaxSeekPosition() {}
KaxSeekPosition(const KaxSeekPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSeekPosition)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_SEEK_HEAD_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSeekHead.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_SEEK_HEAD_H
#define LIBMATROSKA_SEEK_HEAD_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlUInteger.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class KaxSegment;
class KaxSeek;
class MATROSKA_DLL_API KaxSeekHead : public EbmlMaster {
public:
KaxSeekHead();
KaxSeekHead(const KaxSeekHead & ElementToClone) :EbmlMaster(ElementToClone) {}
/*!
\brief add an element to index in the Meta Seek data
\note the element should already be written in the file
*/
void IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment);
KaxSeek * FindFirstOf(const EbmlCallbacks & Callbacks) const;
KaxSeek * FindNextOf(const KaxSeek &aPrev) const;
EBML_CONCRETE_CLASS(KaxSeekHead)
};
class MATROSKA_DLL_API KaxSeek : public EbmlMaster {
public:
KaxSeek();
KaxSeek(const KaxSeek & ElementToClone) :EbmlMaster(ElementToClone) {}
int64 Location() const;
bool IsEbmlId(const EbmlId & aId) const;
bool IsEbmlId(const KaxSeek & aPoint) const;
EBML_CONCRETE_CLASS(KaxSeek)
};
class MATROSKA_DLL_API KaxSeekID : public EbmlBinary {
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 {
public:
KaxSeekPosition() {}
KaxSeekPosition(const KaxSeekPosition & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxSeekPosition)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_SEEK_HEAD_H

View File

@ -1,66 +1,66 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSegment.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_SEGMENT_H
#define LIBMATROSKA_SEGMENT_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxSegment : public EbmlMaster {
public:
KaxSegment();
KaxSegment(const KaxSegment & ElementToClone);
/*!
\brief give the position of the element in the segment
*/
uint64 GetRelativePosition(const EbmlElement & Elt) const;
uint64 GetRelativePosition(uint64 aGlobalPosition) const;
/*!
\brief give the position of the element in the file
*/
uint64 GetGlobalPosition(uint64 aRelativePosition) const;
EBML_CONCRETE_CLASS(KaxSegment)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_SEGMENT_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSegment.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_SEGMENT_H
#define LIBMATROSKA_SEGMENT_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxSegment : public EbmlMaster {
public:
KaxSegment();
KaxSegment(const KaxSegment & ElementToClone);
/*!
\brief give the position of the element in the segment
*/
uint64 GetRelativePosition(const EbmlElement & Elt) const;
uint64 GetRelativePosition(uint64 aGlobalPosition) const;
/*!
\brief give the position of the element in the file
*/
uint64 GetGlobalPosition(uint64 aRelativePosition) const;
EBML_CONCRETE_CLASS(KaxSegment)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_SEGMENT_H

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,55 +1,55 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTags.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TAGS_H
#define LIBMATROSKA_TAGS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTags : public EbmlMaster {
public:
KaxTags();
KaxTags(const KaxTags & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTags)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TAGS_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTags.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TAGS_H
#define LIBMATROSKA_TAGS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTags : public EbmlMaster {
public:
KaxTags();
KaxTags(const KaxTags & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTags)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TAGS_H

View File

@ -1,101 +1,101 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackAudio.h,v 1.11 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACK_AUDIO_H
#define LIBMATROSKA_TRACK_AUDIO_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTrackAudio : public EbmlMaster {
public:
KaxTrackAudio();
KaxTrackAudio(const KaxTrackAudio & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackAudio)
};
class MATROSKA_DLL_API KaxAudioSamplingFreq : public EbmlFloat {
public:
KaxAudioSamplingFreq() :EbmlFloat(8000.0) {}
KaxAudioSamplingFreq(const KaxAudioSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAudioSamplingFreq)
};
class MATROSKA_DLL_API KaxAudioOutputSamplingFreq : public EbmlFloat {
public:
KaxAudioOutputSamplingFreq() :EbmlFloat() {}
KaxAudioOutputSamplingFreq(const KaxAudioOutputSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAudioOutputSamplingFreq)
};
class MATROSKA_DLL_API KaxAudioChannels : public EbmlUInteger {
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 {
public:
KaxAudioPosition() {}
KaxAudioPosition(const KaxAudioPosition & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize(void) const {return true;}
EBML_CONCRETE_CLASS(KaxAudioPosition)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxAudioBitDepth : public EbmlUInteger {
public:
KaxAudioBitDepth() {}
KaxAudioBitDepth(const KaxAudioBitDepth & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAudioBitDepth)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_AUDIO_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackAudio.h,v 1.11 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACK_AUDIO_H
#define LIBMATROSKA_TRACK_AUDIO_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTrackAudio : public EbmlMaster {
public:
KaxTrackAudio();
KaxTrackAudio(const KaxTrackAudio & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackAudio)
};
class MATROSKA_DLL_API KaxAudioSamplingFreq : public EbmlFloat {
public:
KaxAudioSamplingFreq() :EbmlFloat(8000.0) {}
KaxAudioSamplingFreq(const KaxAudioSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAudioSamplingFreq)
};
class MATROSKA_DLL_API KaxAudioOutputSamplingFreq : public EbmlFloat {
public:
KaxAudioOutputSamplingFreq() :EbmlFloat() {}
KaxAudioOutputSamplingFreq(const KaxAudioOutputSamplingFreq & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAudioOutputSamplingFreq)
};
class MATROSKA_DLL_API KaxAudioChannels : public EbmlUInteger {
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 {
public:
KaxAudioPosition() {}
KaxAudioPosition(const KaxAudioPosition & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize(void) const {return true;}
EBML_CONCRETE_CLASS(KaxAudioPosition)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxAudioBitDepth : public EbmlUInteger {
public:
KaxAudioBitDepth() {}
KaxAudioBitDepth(const KaxAudioBitDepth & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxAudioBitDepth)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_AUDIO_H

View File

@ -1,276 +1,276 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackEntryData.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACK_ENTRY_DATA_H
#define LIBMATROSKA_TRACK_ENTRY_DATA_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTrackNumber : public EbmlUInteger {
public:
KaxTrackNumber() {}
KaxTrackNumber(const KaxTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackNumber)
};
class MATROSKA_DLL_API KaxTrackUID : public EbmlUInteger {
public:
KaxTrackUID() {}
KaxTrackUID(const KaxTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackUID)
};
class MATROSKA_DLL_API KaxTrackType : public EbmlUInteger {
public:
KaxTrackType() {}
KaxTrackType(const KaxTrackType & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackType)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxTrackFlagEnabled : public EbmlUInteger {
public:
KaxTrackFlagEnabled() :EbmlUInteger(1) {}
KaxTrackFlagEnabled(const KaxTrackFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagEnabled)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxTrackFlagDefault : public EbmlUInteger {
public:
KaxTrackFlagDefault() :EbmlUInteger(1) {}
KaxTrackFlagDefault(const KaxTrackFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagDefault)
};
class MATROSKA_DLL_API KaxTrackFlagForced : public EbmlUInteger {
public:
KaxTrackFlagForced() :EbmlUInteger(0) {}
KaxTrackFlagForced(const KaxTrackFlagForced & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagForced)
};
class MATROSKA_DLL_API KaxTrackFlagLacing : public EbmlUInteger {
public:
KaxTrackFlagLacing() :EbmlUInteger(1) {}
KaxTrackFlagLacing(const KaxTrackFlagLacing & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagLacing)
};
class MATROSKA_DLL_API KaxTrackMinCache : public EbmlUInteger {
public:
KaxTrackMinCache() :EbmlUInteger(0) {}
KaxTrackMinCache(const KaxTrackMinCache & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackMinCache)
};
class MATROSKA_DLL_API KaxTrackMaxCache : public EbmlUInteger {
public:
KaxTrackMaxCache() {}
KaxTrackMaxCache(const KaxTrackMaxCache & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackMaxCache)
};
class MATROSKA_DLL_API KaxTrackDefaultDuration : public EbmlUInteger {
public:
KaxTrackDefaultDuration() {}
KaxTrackDefaultDuration(const KaxTrackDefaultDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackDefaultDuration)
};
class MATROSKA_DLL_API KaxTrackTimecodeScale : public EbmlFloat {
public:
KaxTrackTimecodeScale() :EbmlFloat(1.0) {}
KaxTrackTimecodeScale(const KaxTrackTimecodeScale & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTimecodeScale)
};
class MATROSKA_DLL_API KaxMaxBlockAdditionID : public EbmlUInteger {
public:
KaxMaxBlockAdditionID() :EbmlUInteger(0) {}
KaxMaxBlockAdditionID(const KaxMaxBlockAdditionID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxMaxBlockAdditionID)
};
class MATROSKA_DLL_API KaxTrackName : public EbmlUnicodeString {
public:
KaxTrackName() {}
KaxTrackName(const KaxTrackName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackName)
};
class MATROSKA_DLL_API KaxTrackLanguage : public EbmlString {
public:
KaxTrackLanguage() :EbmlString("eng") {}
KaxTrackLanguage(const KaxTrackLanguage & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackLanguage)
};
class MATROSKA_DLL_API KaxCodecID : public EbmlString {
public:
KaxCodecID() {}
KaxCodecID(const KaxCodecID & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecID)
};
class MATROSKA_DLL_API KaxCodecPrivate : public EbmlBinary {
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 {
public:
KaxCodecName() {}
KaxCodecName(const KaxCodecName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecName)
};
class MATROSKA_DLL_API KaxTrackAttachmentLink : public EbmlBinary {
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 {
public:
KaxTrackOverlay() {}
KaxTrackOverlay(const KaxTrackOverlay & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackOverlay)
};
class MATROSKA_DLL_API KaxTrackTranslate : public EbmlMaster {
public:
KaxTrackTranslate();
KaxTrackTranslate(const KaxTrackTranslate & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTranslate)
};
class MATROSKA_DLL_API KaxTrackTranslateCodec : public EbmlUInteger {
public:
KaxTrackTranslateCodec() {}
KaxTrackTranslateCodec(const KaxTrackTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTranslateCodec)
};
class MATROSKA_DLL_API KaxTrackTranslateEditionUID : public EbmlUInteger {
public:
KaxTrackTranslateEditionUID() {}
KaxTrackTranslateEditionUID(const KaxTrackTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTranslateEditionUID)
};
class MATROSKA_DLL_API KaxTrackTranslateTrackID : public EbmlBinary {
public:
KaxTrackTranslateTrackID() {}
KaxTrackTranslateTrackID(const KaxTrackTranslateTrackID & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize() const { return true;}
EBML_CONCRETE_CLASS(KaxTrackTranslateTrackID)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxCodecSettings : public EbmlUnicodeString {
public:
KaxCodecSettings() {}
KaxCodecSettings(const KaxCodecSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecSettings)
};
class MATROSKA_DLL_API KaxCodecInfoURL : public EbmlString {
public:
KaxCodecInfoURL() {}
KaxCodecInfoURL(const KaxCodecInfoURL & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecInfoURL)
};
class MATROSKA_DLL_API KaxCodecDownloadURL : public EbmlString {
public:
KaxCodecDownloadURL() {}
KaxCodecDownloadURL(const KaxCodecDownloadURL & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecDownloadURL)
};
class MATROSKA_DLL_API KaxCodecDecodeAll : public EbmlUInteger {
public:
KaxCodecDecodeAll() :EbmlUInteger(1) {}
KaxCodecDecodeAll(const KaxCodecDecodeAll & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecDecodeAll)
};
#endif // MATROSKA_VERSION
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_ENTRY_DATA_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackEntryData.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACK_ENTRY_DATA_H
#define LIBMATROSKA_TRACK_ENTRY_DATA_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlMaster.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTrackNumber : public EbmlUInteger {
public:
KaxTrackNumber() {}
KaxTrackNumber(const KaxTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackNumber)
};
class MATROSKA_DLL_API KaxTrackUID : public EbmlUInteger {
public:
KaxTrackUID() {}
KaxTrackUID(const KaxTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackUID)
};
class MATROSKA_DLL_API KaxTrackType : public EbmlUInteger {
public:
KaxTrackType() {}
KaxTrackType(const KaxTrackType & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackType)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxTrackFlagEnabled : public EbmlUInteger {
public:
KaxTrackFlagEnabled() :EbmlUInteger(1) {}
KaxTrackFlagEnabled(const KaxTrackFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagEnabled)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxTrackFlagDefault : public EbmlUInteger {
public:
KaxTrackFlagDefault() :EbmlUInteger(1) {}
KaxTrackFlagDefault(const KaxTrackFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagDefault)
};
class MATROSKA_DLL_API KaxTrackFlagForced : public EbmlUInteger {
public:
KaxTrackFlagForced() :EbmlUInteger(0) {}
KaxTrackFlagForced(const KaxTrackFlagForced & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagForced)
};
class MATROSKA_DLL_API KaxTrackFlagLacing : public EbmlUInteger {
public:
KaxTrackFlagLacing() :EbmlUInteger(1) {}
KaxTrackFlagLacing(const KaxTrackFlagLacing & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackFlagLacing)
};
class MATROSKA_DLL_API KaxTrackMinCache : public EbmlUInteger {
public:
KaxTrackMinCache() :EbmlUInteger(0) {}
KaxTrackMinCache(const KaxTrackMinCache & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackMinCache)
};
class MATROSKA_DLL_API KaxTrackMaxCache : public EbmlUInteger {
public:
KaxTrackMaxCache() {}
KaxTrackMaxCache(const KaxTrackMaxCache & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackMaxCache)
};
class MATROSKA_DLL_API KaxTrackDefaultDuration : public EbmlUInteger {
public:
KaxTrackDefaultDuration() {}
KaxTrackDefaultDuration(const KaxTrackDefaultDuration & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackDefaultDuration)
};
class MATROSKA_DLL_API KaxTrackTimecodeScale : public EbmlFloat {
public:
KaxTrackTimecodeScale() :EbmlFloat(1.0) {}
KaxTrackTimecodeScale(const KaxTrackTimecodeScale & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTimecodeScale)
};
class MATROSKA_DLL_API KaxMaxBlockAdditionID : public EbmlUInteger {
public:
KaxMaxBlockAdditionID() :EbmlUInteger(0) {}
KaxMaxBlockAdditionID(const KaxMaxBlockAdditionID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxMaxBlockAdditionID)
};
class MATROSKA_DLL_API KaxTrackName : public EbmlUnicodeString {
public:
KaxTrackName() {}
KaxTrackName(const KaxTrackName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackName)
};
class MATROSKA_DLL_API KaxTrackLanguage : public EbmlString {
public:
KaxTrackLanguage() :EbmlString("eng") {}
KaxTrackLanguage(const KaxTrackLanguage & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackLanguage)
};
class MATROSKA_DLL_API KaxCodecID : public EbmlString {
public:
KaxCodecID() {}
KaxCodecID(const KaxCodecID & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecID)
};
class MATROSKA_DLL_API KaxCodecPrivate : public EbmlBinary {
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 {
public:
KaxCodecName() {}
KaxCodecName(const KaxCodecName & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecName)
};
class MATROSKA_DLL_API KaxTrackAttachmentLink : public EbmlBinary {
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 {
public:
KaxTrackOverlay() {}
KaxTrackOverlay(const KaxTrackOverlay & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackOverlay)
};
class MATROSKA_DLL_API KaxTrackTranslate : public EbmlMaster {
public:
KaxTrackTranslate();
KaxTrackTranslate(const KaxTrackTranslate & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTranslate)
};
class MATROSKA_DLL_API KaxTrackTranslateCodec : public EbmlUInteger {
public:
KaxTrackTranslateCodec() {}
KaxTrackTranslateCodec(const KaxTrackTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTranslateCodec)
};
class MATROSKA_DLL_API KaxTrackTranslateEditionUID : public EbmlUInteger {
public:
KaxTrackTranslateEditionUID() {}
KaxTrackTranslateEditionUID(const KaxTrackTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackTranslateEditionUID)
};
class MATROSKA_DLL_API KaxTrackTranslateTrackID : public EbmlBinary {
public:
KaxTrackTranslateTrackID() {}
KaxTrackTranslateTrackID(const KaxTrackTranslateTrackID & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize() const { return true;}
EBML_CONCRETE_CLASS(KaxTrackTranslateTrackID)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxCodecSettings : public EbmlUnicodeString {
public:
KaxCodecSettings() {}
KaxCodecSettings(const KaxCodecSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecSettings)
};
class MATROSKA_DLL_API KaxCodecInfoURL : public EbmlString {
public:
KaxCodecInfoURL() {}
KaxCodecInfoURL(const KaxCodecInfoURL & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecInfoURL)
};
class MATROSKA_DLL_API KaxCodecDownloadURL : public EbmlString {
public:
KaxCodecDownloadURL() {}
KaxCodecDownloadURL(const KaxCodecDownloadURL & ElementToClone) :EbmlString(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecDownloadURL)
};
class MATROSKA_DLL_API KaxCodecDecodeAll : public EbmlUInteger {
public:
KaxCodecDecodeAll() :EbmlUInteger(1) {}
KaxCodecDecodeAll(const KaxCodecDecodeAll & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxCodecDecodeAll)
};
#endif // MATROSKA_VERSION
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_ENTRY_DATA_H

View File

@ -1,187 +1,187 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackVideo.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACK_VIDEO_H
#define LIBMATROSKA_TRACK_VIDEO_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlFloat.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTrackVideo : public EbmlMaster {
public:
KaxTrackVideo();
KaxTrackVideo(const KaxTrackVideo & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackVideo)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxVideoFlagInterlaced : public EbmlUInteger {
public:
KaxVideoFlagInterlaced() :EbmlUInteger(0) {}
KaxVideoFlagInterlaced(const KaxVideoFlagInterlaced & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoFlagInterlaced)
};
class MATROSKA_DLL_API KaxVideoStereoMode : public EbmlUInteger {
public:
KaxVideoStereoMode() :EbmlUInteger(0) {}
KaxVideoStereoMode(const KaxVideoStereoMode & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoStereoMode)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxVideoPixelWidth : public EbmlUInteger {
public:
KaxVideoPixelWidth() {}
KaxVideoPixelWidth(const KaxVideoPixelWidth & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelWidth)
};
class MATROSKA_DLL_API KaxVideoPixelHeight : public EbmlUInteger {
public:
KaxVideoPixelHeight() {}
KaxVideoPixelHeight(const KaxVideoPixelHeight & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelHeight)
};
class MATROSKA_DLL_API KaxVideoPixelCropBottom : public EbmlUInteger {
public:
KaxVideoPixelCropBottom(): EbmlUInteger(0) {}
KaxVideoPixelCropBottom(const KaxVideoPixelCropBottom & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropBottom)
};
class MATROSKA_DLL_API KaxVideoPixelCropTop : public EbmlUInteger {
public:
KaxVideoPixelCropTop(): EbmlUInteger(0) {}
KaxVideoPixelCropTop(const KaxVideoPixelCropTop & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropTop)
};
class MATROSKA_DLL_API KaxVideoPixelCropLeft : public EbmlUInteger {
public:
KaxVideoPixelCropLeft(): EbmlUInteger(0) {}
KaxVideoPixelCropLeft(const KaxVideoPixelCropLeft & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropLeft)
};
class MATROSKA_DLL_API KaxVideoPixelCropRight : public EbmlUInteger {
public:
KaxVideoPixelCropRight(): EbmlUInteger(0) {}
KaxVideoPixelCropRight(const KaxVideoPixelCropRight & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropRight)
};
class MATROSKA_DLL_API KaxVideoDisplayWidth : public EbmlUInteger {
public:
KaxVideoDisplayWidth() {}
KaxVideoDisplayWidth(const KaxVideoDisplayWidth & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoDisplayWidth)
};
class MATROSKA_DLL_API KaxVideoDisplayHeight : public EbmlUInteger {
public:
KaxVideoDisplayHeight() {}
KaxVideoDisplayHeight(const KaxVideoDisplayHeight & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoDisplayHeight)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxVideoDisplayUnit : public EbmlUInteger {
public:
KaxVideoDisplayUnit() {}
KaxVideoDisplayUnit(const KaxVideoDisplayUnit & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoDisplayUnit)
};
class MATROSKA_DLL_API KaxVideoAspectRatio : public EbmlUInteger {
public:
KaxVideoAspectRatio() {}
KaxVideoAspectRatio(const KaxVideoAspectRatio & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoAspectRatio)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxVideoColourSpace : public EbmlBinary {
public:
KaxVideoColourSpace() {}
KaxVideoColourSpace(const KaxVideoColourSpace & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize(void) const {return (GetSize() == 4);}
EBML_CONCRETE_CLASS(KaxVideoColourSpace)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxVideoGamma : public EbmlFloat {
public:
KaxVideoGamma() {}
KaxVideoGamma(const KaxVideoGamma & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoGamma)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxVideoFrameRate : public EbmlFloat {
public:
KaxVideoFrameRate() {}
KaxVideoFrameRate(const KaxVideoFrameRate & ElementToClone) :EbmlFloat(ElementToClone) {}
uint32 RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
EBML_CONCRETE_CLASS(KaxVideoFrameRate)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_VIDEO_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackVideo.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACK_VIDEO_H
#define LIBMATROSKA_TRACK_VIDEO_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlFloat.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTrackVideo : public EbmlMaster {
public:
KaxTrackVideo();
KaxTrackVideo(const KaxTrackVideo & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTrackVideo)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxVideoFlagInterlaced : public EbmlUInteger {
public:
KaxVideoFlagInterlaced() :EbmlUInteger(0) {}
KaxVideoFlagInterlaced(const KaxVideoFlagInterlaced & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoFlagInterlaced)
};
class MATROSKA_DLL_API KaxVideoStereoMode : public EbmlUInteger {
public:
KaxVideoStereoMode() :EbmlUInteger(0) {}
KaxVideoStereoMode(const KaxVideoStereoMode & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoStereoMode)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxVideoPixelWidth : public EbmlUInteger {
public:
KaxVideoPixelWidth() {}
KaxVideoPixelWidth(const KaxVideoPixelWidth & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelWidth)
};
class MATROSKA_DLL_API KaxVideoPixelHeight : public EbmlUInteger {
public:
KaxVideoPixelHeight() {}
KaxVideoPixelHeight(const KaxVideoPixelHeight & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelHeight)
};
class MATROSKA_DLL_API KaxVideoPixelCropBottom : public EbmlUInteger {
public:
KaxVideoPixelCropBottom(): EbmlUInteger(0) {}
KaxVideoPixelCropBottom(const KaxVideoPixelCropBottom & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropBottom)
};
class MATROSKA_DLL_API KaxVideoPixelCropTop : public EbmlUInteger {
public:
KaxVideoPixelCropTop(): EbmlUInteger(0) {}
KaxVideoPixelCropTop(const KaxVideoPixelCropTop & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropTop)
};
class MATROSKA_DLL_API KaxVideoPixelCropLeft : public EbmlUInteger {
public:
KaxVideoPixelCropLeft(): EbmlUInteger(0) {}
KaxVideoPixelCropLeft(const KaxVideoPixelCropLeft & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropLeft)
};
class MATROSKA_DLL_API KaxVideoPixelCropRight : public EbmlUInteger {
public:
KaxVideoPixelCropRight(): EbmlUInteger(0) {}
KaxVideoPixelCropRight(const KaxVideoPixelCropRight & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoPixelCropRight)
};
class MATROSKA_DLL_API KaxVideoDisplayWidth : public EbmlUInteger {
public:
KaxVideoDisplayWidth() {}
KaxVideoDisplayWidth(const KaxVideoDisplayWidth & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoDisplayWidth)
};
class MATROSKA_DLL_API KaxVideoDisplayHeight : public EbmlUInteger {
public:
KaxVideoDisplayHeight() {}
KaxVideoDisplayHeight(const KaxVideoDisplayHeight & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoDisplayHeight)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxVideoDisplayUnit : public EbmlUInteger {
public:
KaxVideoDisplayUnit() {}
KaxVideoDisplayUnit(const KaxVideoDisplayUnit & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoDisplayUnit)
};
class MATROSKA_DLL_API KaxVideoAspectRatio : public EbmlUInteger {
public:
KaxVideoAspectRatio() {}
KaxVideoAspectRatio(const KaxVideoAspectRatio & ElementToClone) :EbmlUInteger(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoAspectRatio)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxVideoColourSpace : public EbmlBinary {
public:
KaxVideoColourSpace() {}
KaxVideoColourSpace(const KaxVideoColourSpace & ElementToClone) :EbmlBinary(ElementToClone){}
bool ValidateSize(void) const {return (GetSize() == 4);}
EBML_CONCRETE_CLASS(KaxVideoColourSpace)
};
#if MATROSKA_VERSION >= 2
class MATROSKA_DLL_API KaxVideoGamma : public EbmlFloat {
public:
KaxVideoGamma() {}
KaxVideoGamma(const KaxVideoGamma & ElementToClone) :EbmlFloat(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxVideoGamma)
};
#endif // MATROSKA_VERSION
class MATROSKA_DLL_API KaxVideoFrameRate : public EbmlFloat {
public:
KaxVideoFrameRate() {}
KaxVideoFrameRate(const KaxVideoFrameRate & ElementToClone) :EbmlFloat(ElementToClone) {}
uint32 RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
EBML_CONCRETE_CLASS(KaxVideoFrameRate)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_VIDEO_H

View File

@ -1,90 +1,90 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTracks.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACKS_H
#define LIBMATROSKA_TRACKS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "matroska/KaxTrackEntryData.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTracks : public EbmlMaster {
public:
KaxTracks();
KaxTracks(const KaxTracks & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTracks)
};
class MATROSKA_DLL_API KaxTrackEntry : public EbmlMaster {
public:
KaxTrackEntry();
KaxTrackEntry(const KaxTrackEntry & ElementToClone) :EbmlMaster(ElementToClone) {}
EbmlUInteger & TrackNumber() const { return *(static_cast<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); }
void EnableLacing(bool bEnable = true);
/*!
\note lacing set by default
*/
inline bool LacingEnabled() const {
KaxTrackFlagLacing * myLacing = static_cast<KaxTrackFlagLacing *>(FindFirstElt(EBML_INFO(KaxTrackFlagLacing)));
return((myLacing == NULL) || (uint8(*myLacing) != 0));
}
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
mGlobalTimecodeScale = aGlobalTimecodeScale;
bGlobalTimecodeScaleIsSet = true;
}
uint64 GlobalTimecodeScale() const {
assert(bGlobalTimecodeScaleIsSet);
return mGlobalTimecodeScale;
}
protected:
bool bGlobalTimecodeScaleIsSet;
uint64 mGlobalTimecodeScale;
EBML_CONCRETE_CLASS(KaxTrackEntry)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACKS_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTracks.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TRACKS_H
#define LIBMATROSKA_TRACKS_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "matroska/KaxTrackEntryData.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
class MATROSKA_DLL_API KaxTracks : public EbmlMaster {
public:
KaxTracks();
KaxTracks(const KaxTracks & ElementToClone) :EbmlMaster(ElementToClone) {}
EBML_CONCRETE_CLASS(KaxTracks)
};
class MATROSKA_DLL_API KaxTrackEntry : public EbmlMaster {
public:
KaxTrackEntry();
KaxTrackEntry(const KaxTrackEntry & ElementToClone) :EbmlMaster(ElementToClone) {}
EbmlUInteger & TrackNumber() const { return *(static_cast<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); }
void EnableLacing(bool bEnable = true);
/*!
\note lacing set by default
*/
inline bool LacingEnabled() const {
KaxTrackFlagLacing * myLacing = static_cast<KaxTrackFlagLacing *>(FindFirstElt(EBML_INFO(KaxTrackFlagLacing)));
return((myLacing == NULL) || (uint8(*myLacing) != 0));
}
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
mGlobalTimecodeScale = aGlobalTimecodeScale;
bGlobalTimecodeScaleIsSet = true;
}
uint64 GlobalTimecodeScale() const {
assert(bGlobalTimecodeScaleIsSet);
return mGlobalTimecodeScale;
}
protected:
bool bGlobalTimecodeScaleIsSet;
uint64 mGlobalTimecodeScale;
EBML_CONCRETE_CLASS(KaxTrackEntry)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACKS_H

View File

@ -1,59 +1,59 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTypes.h,v 1.4 2004/04/14 23:26:17 robux4 Exp $
*/
#ifndef LIBMATROSKA_TYPES_H
#define LIBMATROSKA_TYPES_H
#include "matroska/KaxConfig.h"
#include "ebml/EbmlTypes.h"
#include "matroska/c/libmatroska_t.h"
START_LIBMATROSKA_NAMESPACE
enum LacingType {
LACING_NONE = 0,
LACING_XIPH,
LACING_FIXED,
LACING_EBML,
LACING_AUTO
};
enum BlockBlobType {
BLOCK_BLOB_NO_SIMPLE = 0,
BLOCK_BLOB_SIMPLE_AUTO,
BLOCK_BLOB_ALWAYS_SIMPLE,
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TYPES_H
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTypes.h,v 1.4 2004/04/14 23:26:17 robux4 Exp $
*/
#ifndef LIBMATROSKA_TYPES_H
#define LIBMATROSKA_TYPES_H
#include "matroska/KaxConfig.h"
#include "ebml/EbmlTypes.h"
#include "matroska/c/libmatroska_t.h"
START_LIBMATROSKA_NAMESPACE
enum LacingType {
LACING_NONE = 0,
LACING_XIPH,
LACING_FIXED,
LACING_EBML,
LACING_AUTO
};
enum BlockBlobType {
BLOCK_BLOB_NO_SIMPLE = 0,
BLOCK_BLOB_SIMPLE_AUTO,
BLOCK_BLOB_ALWAYS_SIMPLE,
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TYPES_H

View File

@ -1,54 +1,54 @@
/****************************************************************************
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxVersion.h,v 1.13 2004/04/23 16:46:07 mosu Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_VERSION_H
#define LIBMATROSKA_VERSION_H
#include <string>
#include "ebml/EbmlConfig.h"
#include "matroska/KaxConfig.h"
START_LIBMATROSKA_NAMESPACE
#define LIBMATROSKA_VERSION 0x000900
static const std::string KaxCodeVersion = "0.9.0";
static const std::string KaxCodeDate = __TIMESTAMP__;
/*!
\todo Improve the CRC/ECC system (backward and forward possible ?) to fit streaming/live writing/simple reading
*/
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_VERSION_H
/****************************************************************************
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxVersion.h,v 1.13 2004/04/23 16:46:07 mosu Exp $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_VERSION_H
#define LIBMATROSKA_VERSION_H
#include <string>
#include "ebml/EbmlConfig.h"
#include "matroska/KaxConfig.h"
START_LIBMATROSKA_NAMESPACE
#define LIBMATROSKA_VERSION 0x000900
static const std::string KaxCodeVersion = "0.9.0";
static const std::string KaxCodeDate = __TIMESTAMP__;
/*!
\todo Improve the CRC/ECC system (backward and forward possible ?) to fit streaming/live writing/simple reading
*/
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_VERSION_H

View File

@ -1,96 +1,96 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttached.cpp 1202 2005-08-30 14:39:01Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxAttached.h"
#include "matroska/KaxContexts.h"
// sub elements
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
EbmlSemantic KaxAttached_ContextList[5] =
#else // MATROSKA_VERSION
EbmlSemantic KaxAttached_ContextList[6] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true, true, EBML_INFO(KaxFileName)),
EbmlSemantic(true, true, EBML_INFO(KaxMimeType)),
EbmlSemantic(true, true, EBML_INFO(KaxFileData)),
EbmlSemantic(false, true, EBML_INFO(KaxFileDescription)),
EbmlSemantic(true, true, EBML_INFO(KaxFileUID)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxFileReferral)),
#endif // MATROSKA_VERSION
};
EbmlId KaxAttached_TheId (0x61A7, 2);
EbmlId KaxFileDescription_TheId(0x467E, 2);
EbmlId KaxFileName_TheId (0x466E, 2);
EbmlId KaxMimeType_TheId (0x4660, 2);
EbmlId KaxFileData_TheId (0x465C, 2);
EbmlId KaxFileUID_TheId (0x46AE, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxFileReferral_TheId (0x4675, 2);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxAttached_Context = EbmlSemanticContext(countof(KaxAttached_ContextList), KaxAttached_ContextList, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAttached));
const EbmlSemanticContext KaxFileDescription_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileDescription));
const EbmlSemanticContext KaxFileName_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileName));
const EbmlSemanticContext KaxMimeType_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMimeType));
const EbmlSemanticContext KaxFileData_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileData));
const EbmlSemanticContext KaxFileUID_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileUID));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxFileReferral_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileReferral));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxAttached::ClassInfos(KaxAttached::Create, KaxAttached_TheId, "AttachedFile", KaxAttached_Context);
const EbmlCallbacks KaxFileDescription::ClassInfos(KaxFileDescription::Create, KaxFileDescription_TheId, "FileDescription", KaxFileDescription_Context);
const EbmlCallbacks KaxFileName::ClassInfos(KaxFileName::Create, KaxFileName_TheId, "FileName", KaxFileName_Context);
const EbmlCallbacks KaxMimeType::ClassInfos(KaxMimeType::Create, KaxMimeType_TheId, "FileMimeType", KaxMimeType_Context);
const EbmlCallbacks KaxFileData::ClassInfos(KaxFileData::Create, KaxFileData_TheId, "FileData", KaxFileData_Context);
const EbmlCallbacks KaxFileUID::ClassInfos(KaxFileUID::Create, KaxFileUID_TheId, "FileUID", KaxFileUID_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxFileReferral::ClassInfos(KaxFileReferral::Create, KaxFileReferral_TheId, "FileReferral", KaxFileReferral_Context);
#endif // MATROSKA_VERSION
KaxAttached::KaxAttached()
:EbmlMaster(KaxAttached_Context)
{
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttached.cpp 1202 2005-08-30 14:39:01Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxAttached.h"
#include "matroska/KaxContexts.h"
// sub elements
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
EbmlSemantic KaxAttached_ContextList[5] =
#else // MATROSKA_VERSION
EbmlSemantic KaxAttached_ContextList[6] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true, true, EBML_INFO(KaxFileName)),
EbmlSemantic(true, true, EBML_INFO(KaxMimeType)),
EbmlSemantic(true, true, EBML_INFO(KaxFileData)),
EbmlSemantic(false, true, EBML_INFO(KaxFileDescription)),
EbmlSemantic(true, true, EBML_INFO(KaxFileUID)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxFileReferral)),
#endif // MATROSKA_VERSION
};
EbmlId KaxAttached_TheId (0x61A7, 2);
EbmlId KaxFileDescription_TheId(0x467E, 2);
EbmlId KaxFileName_TheId (0x466E, 2);
EbmlId KaxMimeType_TheId (0x4660, 2);
EbmlId KaxFileData_TheId (0x465C, 2);
EbmlId KaxFileUID_TheId (0x46AE, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxFileReferral_TheId (0x4675, 2);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxAttached_Context = EbmlSemanticContext(countof(KaxAttached_ContextList), KaxAttached_ContextList, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAttached));
const EbmlSemanticContext KaxFileDescription_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileDescription));
const EbmlSemanticContext KaxFileName_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileName));
const EbmlSemanticContext KaxMimeType_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMimeType));
const EbmlSemanticContext KaxFileData_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileData));
const EbmlSemanticContext KaxFileUID_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileUID));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxFileReferral_Context = EbmlSemanticContext(0, NULL, &KaxAttachments_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxFileReferral));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxAttached::ClassInfos(KaxAttached::Create, KaxAttached_TheId, "AttachedFile", KaxAttached_Context);
const EbmlCallbacks KaxFileDescription::ClassInfos(KaxFileDescription::Create, KaxFileDescription_TheId, "FileDescription", KaxFileDescription_Context);
const EbmlCallbacks KaxFileName::ClassInfos(KaxFileName::Create, KaxFileName_TheId, "FileName", KaxFileName_Context);
const EbmlCallbacks KaxMimeType::ClassInfos(KaxMimeType::Create, KaxMimeType_TheId, "FileMimeType", KaxMimeType_Context);
const EbmlCallbacks KaxFileData::ClassInfos(KaxFileData::Create, KaxFileData_TheId, "FileData", KaxFileData_Context);
const EbmlCallbacks KaxFileUID::ClassInfos(KaxFileUID::Create, KaxFileUID_TheId, "FileUID", KaxFileUID_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxFileReferral::ClassInfos(KaxFileReferral::Create, KaxFileReferral_TheId, "FileReferral", KaxFileReferral_Context);
#endif // MATROSKA_VERSION
KaxAttached::KaxAttached()
:EbmlMaster(KaxAttached_Context)
{
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,60 +1,60 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttachments.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxAttachments.h"
#include "matroska/KaxAttached.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxAttachments_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxAttached)), ///< EBMLVersion
};
const EbmlSemanticContext KaxAttachments_Context = EbmlSemanticContext(countof(KaxAttachments_ContextList), KaxAttachments_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAttachments));
EbmlId KaxAttachments_TheId(0x1941A469, 4);
const EbmlCallbacks KaxAttachments::ClassInfos(KaxAttachments::Create, KaxAttachments_TheId, "Attachments", KaxAttachments_Context);
KaxAttachments::KaxAttachments()
:EbmlMaster(KaxAttachments_Context)
{
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxAttachments.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxAttachments.h"
#include "matroska/KaxAttached.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxAttachments_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxAttached)), ///< EBMLVersion
};
const EbmlSemanticContext KaxAttachments_Context = EbmlSemanticContext(countof(KaxAttachments_ContextList), KaxAttachments_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAttachments));
EbmlId KaxAttachments_TheId(0x1941A469, 4);
const EbmlCallbacks KaxAttachments::ClassInfos(KaxAttachments::Create, KaxAttachments_TheId, "Attachments", KaxAttachments_Context);
KaxAttachments::KaxAttachments()
:EbmlMaster(KaxAttachments_Context)
{
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
}
END_LIBMATROSKA_NAMESPACE

File diff suppressed because it is too large Load Diff

View File

@ -1,138 +1,138 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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: KaxBlockData.cpp 1226 2005-10-13 21:16:43Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include <cassert>
#include "matroska/KaxBlockData.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxBlock.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxSlices_ContextList[1] =
{
EbmlSemantic(false, false, EBML_INFO(KaxTimeSlice)),
};
const EbmlSemantic KaxTimeSlice_ContextList[5] =
{
EbmlSemantic(false, true, EBML_INFO(KaxSliceLaceNumber)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceFrameNumber)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceBlockAddID)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceDelay)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceDuration)),
};
EbmlId KaxReferencePriority_TheId(0xFA, 1);
EbmlId KaxReferenceBlock_TheId (0xFB, 1);
EbmlId KaxSlices_TheId (0x8E, 1);
EbmlId KaxTimeSlice_TheId (0xE8, 1);
EbmlId KaxSliceLaceNumber_TheId (0xCC, 1);
EbmlId KaxSliceFrameNumber_TheId (0xCD, 1);
EbmlId KaxSliceBlockAddID_TheId (0xCB, 1);
EbmlId KaxSliceDelay_TheId (0xCE, 1);
EbmlId KaxSliceDuration_TheId (0xCF, 1);
#if MATROSKA_VERSION >= 2
EbmlId KaxReferenceVirtual_TheId (0xFD, 1);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxReferencePriority_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferencePriority));
const EbmlSemanticContext KaxReferenceBlock_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferenceBlock));
const EbmlSemanticContext KaxSlices_Context = EbmlSemanticContext(countof(KaxSlices_ContextList), KaxSlices_ContextList, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSlices));
const EbmlSemanticContext KaxTimeSlice_Context = EbmlSemanticContext(countof(KaxTimeSlice_ContextList), KaxTimeSlice_ContextList, &KaxSlices_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTimeSlice));
const EbmlSemanticContext KaxSliceLaceNumber_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceLaceNumber));
const EbmlSemanticContext KaxSliceFrameNumber_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceFrameNumber));
const EbmlSemanticContext KaxSliceBlockAddID_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceBlockAddID));
const EbmlSemanticContext KaxSliceDelay_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceDelay));
const EbmlSemanticContext KaxSliceDuration_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceDuration));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxReferenceVirtual_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferenceVirtual));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxReferencePriority::ClassInfos(KaxReferencePriority::Create, KaxReferencePriority_TheId, "FlagReferenced", KaxReferencePriority_Context);
const EbmlCallbacks KaxReferenceBlock::ClassInfos(KaxReferenceBlock::Create, KaxReferenceBlock_TheId, "ReferenceBlock", KaxReferenceBlock_Context);
const EbmlCallbacks KaxSlices::ClassInfos(KaxSlices::Create, KaxSlices_TheId, "Slices", KaxSlices_Context);
const EbmlCallbacks KaxTimeSlice::ClassInfos(KaxTimeSlice::Create, KaxTimeSlice_TheId, "TimeSlice", KaxTimeSlice_Context);
const EbmlCallbacks KaxSliceLaceNumber::ClassInfos(KaxSliceLaceNumber::Create, KaxSliceLaceNumber_TheId, "SliceLaceNumber", KaxSliceLaceNumber_Context);
const EbmlCallbacks KaxSliceFrameNumber::ClassInfos(KaxSliceFrameNumber::Create, KaxSliceFrameNumber_TheId, "SliceFrameNumber", KaxSliceFrameNumber_Context);
const EbmlCallbacks KaxSliceBlockAddID::ClassInfos(KaxSliceBlockAddID::Create, KaxSliceBlockAddID_TheId, "SliceBlockAddID", KaxSliceBlockAddID_Context);
const EbmlCallbacks KaxSliceDelay::ClassInfos(KaxSliceDelay::Create, KaxSliceDelay_TheId, "SliceDelay", KaxSliceDelay_Context);
const EbmlCallbacks KaxSliceDuration::ClassInfos(KaxSliceDuration::Create, KaxSliceDuration_TheId, "SliceDuration", KaxSliceDuration_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxReferenceVirtual::ClassInfos(KaxReferenceVirtual::Create, KaxReferenceVirtual_TheId, "ReferenceVirtual", KaxReferenceVirtual_Context);
#endif // MATROSKA_VERSION
KaxSlices::KaxSlices()
:EbmlMaster(KaxSlices_Context)
{}
KaxTimeSlice::KaxTimeSlice()
:EbmlMaster(KaxTimeSlice_Context)
{}
const KaxBlockBlob & KaxReferenceBlock::RefBlock() const
{
assert(RefdBlock != NULL);
return *RefdBlock;
}
uint64 KaxReferenceBlock::UpdateSize(bool bSaveDefault, bool bForceRender)
{
if (!bTimecodeSet) {
assert(RefdBlock != NULL);
assert(ParentBlock != NULL);
const KaxInternalBlock &block = *RefdBlock;
*static_cast<EbmlSInteger*>(this) = (int64(block.GlobalTimecode()) - int64(ParentBlock->GlobalTimecode())) / int64(ParentBlock->GlobalTimecodeScale());
}
return EbmlSInteger::UpdateSize(bSaveDefault, bForceRender);
}
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockBlob * aRefdBlock)
{
assert(RefdBlock == NULL);
assert(aRefdBlock != NULL);
RefdBlock = aRefdBlock;
SetValueIsSet();
}
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockGroup & aRefdBlock)
{
KaxBlockBlob *block_blob = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
block_blob->SetBlockGroup(*const_cast<KaxBlockGroup*>(&aRefdBlock));
RefdBlock = block_blob;
SetValueIsSet();
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** 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: KaxBlockData.cpp 1226 2005-10-13 21:16:43Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include <cassert>
#include "matroska/KaxBlockData.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxBlock.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxSlices_ContextList[1] =
{
EbmlSemantic(false, false, EBML_INFO(KaxTimeSlice)),
};
const EbmlSemantic KaxTimeSlice_ContextList[5] =
{
EbmlSemantic(false, true, EBML_INFO(KaxSliceLaceNumber)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceFrameNumber)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceBlockAddID)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceDelay)),
EbmlSemantic(false, true, EBML_INFO(KaxSliceDuration)),
};
EbmlId KaxReferencePriority_TheId(0xFA, 1);
EbmlId KaxReferenceBlock_TheId (0xFB, 1);
EbmlId KaxSlices_TheId (0x8E, 1);
EbmlId KaxTimeSlice_TheId (0xE8, 1);
EbmlId KaxSliceLaceNumber_TheId (0xCC, 1);
EbmlId KaxSliceFrameNumber_TheId (0xCD, 1);
EbmlId KaxSliceBlockAddID_TheId (0xCB, 1);
EbmlId KaxSliceDelay_TheId (0xCE, 1);
EbmlId KaxSliceDuration_TheId (0xCF, 1);
#if MATROSKA_VERSION >= 2
EbmlId KaxReferenceVirtual_TheId (0xFD, 1);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxReferencePriority_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferencePriority));
const EbmlSemanticContext KaxReferenceBlock_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferenceBlock));
const EbmlSemanticContext KaxSlices_Context = EbmlSemanticContext(countof(KaxSlices_ContextList), KaxSlices_ContextList, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSlices));
const EbmlSemanticContext KaxTimeSlice_Context = EbmlSemanticContext(countof(KaxTimeSlice_ContextList), KaxTimeSlice_ContextList, &KaxSlices_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTimeSlice));
const EbmlSemanticContext KaxSliceLaceNumber_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceLaceNumber));
const EbmlSemanticContext KaxSliceFrameNumber_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceFrameNumber));
const EbmlSemanticContext KaxSliceBlockAddID_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceBlockAddID));
const EbmlSemanticContext KaxSliceDelay_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceDelay));
const EbmlSemanticContext KaxSliceDuration_Context = EbmlSemanticContext(0, NULL, &KaxTimeSlice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSliceDuration));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxReferenceVirtual_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxReferenceVirtual));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxReferencePriority::ClassInfos(KaxReferencePriority::Create, KaxReferencePriority_TheId, "FlagReferenced", KaxReferencePriority_Context);
const EbmlCallbacks KaxReferenceBlock::ClassInfos(KaxReferenceBlock::Create, KaxReferenceBlock_TheId, "ReferenceBlock", KaxReferenceBlock_Context);
const EbmlCallbacks KaxSlices::ClassInfos(KaxSlices::Create, KaxSlices_TheId, "Slices", KaxSlices_Context);
const EbmlCallbacks KaxTimeSlice::ClassInfos(KaxTimeSlice::Create, KaxTimeSlice_TheId, "TimeSlice", KaxTimeSlice_Context);
const EbmlCallbacks KaxSliceLaceNumber::ClassInfos(KaxSliceLaceNumber::Create, KaxSliceLaceNumber_TheId, "SliceLaceNumber", KaxSliceLaceNumber_Context);
const EbmlCallbacks KaxSliceFrameNumber::ClassInfos(KaxSliceFrameNumber::Create, KaxSliceFrameNumber_TheId, "SliceFrameNumber", KaxSliceFrameNumber_Context);
const EbmlCallbacks KaxSliceBlockAddID::ClassInfos(KaxSliceBlockAddID::Create, KaxSliceBlockAddID_TheId, "SliceBlockAddID", KaxSliceBlockAddID_Context);
const EbmlCallbacks KaxSliceDelay::ClassInfos(KaxSliceDelay::Create, KaxSliceDelay_TheId, "SliceDelay", KaxSliceDelay_Context);
const EbmlCallbacks KaxSliceDuration::ClassInfos(KaxSliceDuration::Create, KaxSliceDuration_TheId, "SliceDuration", KaxSliceDuration_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxReferenceVirtual::ClassInfos(KaxReferenceVirtual::Create, KaxReferenceVirtual_TheId, "ReferenceVirtual", KaxReferenceVirtual_Context);
#endif // MATROSKA_VERSION
KaxSlices::KaxSlices()
:EbmlMaster(KaxSlices_Context)
{}
KaxTimeSlice::KaxTimeSlice()
:EbmlMaster(KaxTimeSlice_Context)
{}
const KaxBlockBlob & KaxReferenceBlock::RefBlock() const
{
assert(RefdBlock != NULL);
return *RefdBlock;
}
uint64 KaxReferenceBlock::UpdateSize(bool bSaveDefault, bool bForceRender)
{
if (!bTimecodeSet) {
assert(RefdBlock != NULL);
assert(ParentBlock != NULL);
const KaxInternalBlock &block = *RefdBlock;
*static_cast<EbmlSInteger*>(this) = (int64(block.GlobalTimecode()) - int64(ParentBlock->GlobalTimecode())) / int64(ParentBlock->GlobalTimecodeScale());
}
return EbmlSInteger::UpdateSize(bSaveDefault, bForceRender);
}
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockBlob * aRefdBlock)
{
assert(RefdBlock == NULL);
assert(aRefdBlock != NULL);
RefdBlock = aRefdBlock;
SetValueIsSet();
}
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockGroup & aRefdBlock)
{
KaxBlockBlob *block_blob = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
block_blob->SetBlockGroup(*const_cast<KaxBlockGroup*>(&aRefdBlock));
RefdBlock = block_blob;
SetValueIsSet();
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,208 +1,208 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxChapters.cpp 1201 2005-08-30 14:28:27Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxChapters.h"
#include "matroska/KaxContexts.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxChapters_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxEditionEntry)),
};
EbmlSemantic KaxEditionEntry_ContextList[5] =
{
EbmlSemantic(false, true , EBML_INFO(KaxEditionUID)),
EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagHidden)),
EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagDefault)),
EbmlSemantic(false, true , EBML_INFO(KaxEditionFlagOrdered)),
EbmlSemantic(true , false, EBML_INFO(KaxChapterAtom)),
};
EbmlSemantic KaxChapterAtom_ContextList[12] =
{
EbmlSemantic(false, false, EBML_INFO(KaxChapterAtom)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterUID)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterTimeStart)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterTimeEnd)),
EbmlSemantic(true , true, EBML_INFO(KaxChapterFlagHidden)),
EbmlSemantic(true , true, EBML_INFO(KaxChapterFlagEnabled)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterSegmentUID)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterSegmentEditionUID)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterPhysicalEquiv)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterTrack)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterDisplay)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterProcess)),
};
EbmlSemantic KaxChapterTrack_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxChapterTrackNumber)),
};
EbmlSemantic KaxChapterDisplay_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxChapterString)),
EbmlSemantic(true, false, EBML_INFO(KaxChapterLanguage)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterCountry)),
};
EbmlSemantic KaxChapterProcess_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessCodecID)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterProcessPrivate)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterProcessCommand)),
};
EbmlSemantic KaxChapterProcessCommand_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessTime)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessData)),
};
const EbmlSemanticContext KaxChapters_Context = EbmlSemanticContext(countof(KaxChapters_ContextList), KaxChapters_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapters));
const EbmlSemanticContext KaxEditionEntry_Context = EbmlSemanticContext(countof(KaxEditionEntry_ContextList), KaxEditionEntry_ContextList, &KaxChapters_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionEntry));
const EbmlSemanticContext KaxEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionUID));
const EbmlSemanticContext KaxEditionFlagHidden_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagHidden));
const EbmlSemanticContext KaxEditionFlagDefault_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagDefault));
const EbmlSemanticContext KaxEditionFlagOrdered_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagOrdered));
const EbmlSemanticContext KaxChapterAtom_Context = EbmlSemanticContext(countof(KaxChapterAtom_ContextList), KaxChapterAtom_ContextList, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterAtom));
const EbmlSemanticContext KaxChapterTrack_Context = EbmlSemanticContext(countof(KaxChapterTrack_ContextList), KaxChapterTrack_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTrack));
const EbmlSemanticContext KaxChapterDisplay_Context = EbmlSemanticContext(countof(KaxChapterDisplay_ContextList), KaxChapterDisplay_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterDisplay));
const EbmlSemanticContext KaxChapterUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterUID));
const EbmlSemanticContext KaxChapterTimeStart_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTimeStart));
const EbmlSemanticContext KaxChapterTimeEnd_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTimeEnd));
const EbmlSemanticContext KaxChapterFlagHidden_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterFlagHidden));
const EbmlSemanticContext KaxChapterFlagEnabled_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterFlagEnabled));
const EbmlSemanticContext KaxChapterSegmentUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterSegmentUID));
const EbmlSemanticContext KaxChapterSegmentEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterSegmentEditionUID));
const EbmlSemanticContext KaxChapterPhysicalEquiv_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterPhysicalEquiv));
const EbmlSemanticContext KaxChapterTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxChapterTrack_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTrackNumber));
const EbmlSemanticContext KaxChapterString_Context = EbmlSemanticContext(0, NULL, &KaxChapterDisplay_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterString));
const EbmlSemanticContext KaxChapterLanguage_Context = EbmlSemanticContext(0, NULL, &KaxChapterLanguage_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterLanguage));
const EbmlSemanticContext KaxChapterCountry_Context = EbmlSemanticContext(0, NULL, &KaxChapterCountry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterCountry));
const EbmlSemanticContext KaxChapterProcess_Context = EbmlSemanticContext(countof(KaxChapterProcess_ContextList), KaxChapterProcess_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcess));
const EbmlSemanticContext KaxChapterProcessCodecID_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessCodecID));
const EbmlSemanticContext KaxChapterProcessPrivate_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessPrivate));
const EbmlSemanticContext KaxChapterProcessCommand_Context = EbmlSemanticContext(countof(KaxChapterProcessCommand_ContextList), KaxChapterProcessCommand_ContextList, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessCommand));
const EbmlSemanticContext KaxChapterProcessTime_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcessCommand_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessTime));
const EbmlSemanticContext KaxChapterProcessData_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcessCommand_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessData));
EbmlId KaxChapters_TheId (0x1043A770, 4);
EbmlId KaxEditionEntry_TheId (0x45B9, 2);
EbmlId KaxEditionUID_TheId (0x45BC, 2);
EbmlId KaxEditionFlagHidden_TheId (0x45BD, 2);
EbmlId KaxEditionFlagDefault_TheId (0x45DB, 2);
EbmlId KaxEditionFlagOrdered_TheId (0x45DD, 2);
EbmlId KaxChapterAtom_TheId (0xB6, 1);
EbmlId KaxChapterUID_TheId (0x73C4, 2);
EbmlId KaxChapterTimeStart_TheId (0x91, 1);
EbmlId KaxChapterTimeEnd_TheId (0x92, 1);
EbmlId KaxChapterFlagHidden_TheId (0x98, 1);
EbmlId KaxChapterFlagEnabled_TheId (0x4598, 2);
EbmlId KaxChapterSegmentUID_TheId (0x6E67, 2);
EbmlId KaxChapterSegmentEditionUID_TheId(0x6EBC, 2);
EbmlId KaxChapterPhysicalEquiv_TheId (0x63C3, 2);
EbmlId KaxChapterTrack_TheId (0x8F, 1);
EbmlId KaxChapterTrackNumber_TheId (0x89, 1);
EbmlId KaxChapterDisplay_TheId (0x80, 1);
EbmlId KaxChapterString_TheId (0x85, 1);
EbmlId KaxChapterLanguage_TheId (0x437C, 2);
EbmlId KaxChapterCountry_TheId (0x437E, 2);
EbmlId KaxChapterProcess_TheId (0x6944, 2);
EbmlId KaxChapterProcessCodecID_TheId (0x6955, 2);
EbmlId KaxChapterProcessPrivate_TheId (0x450D, 2);
EbmlId KaxChapterProcessCommand_TheId (0x6911, 2);
EbmlId KaxChapterProcessTime_TheId (0x6922, 2);
EbmlId KaxChapterProcessData_TheId (0x6933, 2);
const EbmlCallbacks KaxChapters::ClassInfos(KaxChapters::Create, KaxChapters_TheId, "Chapters", KaxChapters_Context);
const EbmlCallbacks KaxEditionEntry::ClassInfos(KaxEditionEntry::Create, KaxEditionEntry_TheId, "EditionEntry", KaxEditionEntry_Context);
const EbmlCallbacks KaxEditionUID::ClassInfos(KaxEditionUID::Create, KaxEditionUID_TheId, "EditionUID", KaxEditionUID_Context);
const EbmlCallbacks KaxEditionFlagHidden::ClassInfos(KaxEditionFlagHidden::Create, KaxEditionFlagHidden_TheId, "EditionFlagHidden", KaxEditionFlagHidden_Context);
const EbmlCallbacks KaxEditionFlagDefault::ClassInfos(KaxEditionFlagDefault::Create, KaxEditionFlagDefault_TheId, "EditionFlagDefault", KaxEditionFlagDefault_Context);
const EbmlCallbacks KaxEditionFlagOrdered::ClassInfos(KaxEditionFlagOrdered::Create, KaxEditionFlagOrdered_TheId, "EditionFlagOrdered", KaxEditionFlagOrdered_Context);
const EbmlCallbacks KaxChapterAtom::ClassInfos(KaxChapterAtom::Create, KaxChapterAtom_TheId, "ChapterAtom", KaxChapterAtom_Context);
const EbmlCallbacks KaxChapterUID::ClassInfos(KaxChapterUID::Create, KaxChapterUID_TheId, "ChapterUID", KaxChapterUID_Context);
const EbmlCallbacks KaxChapterTimeStart::ClassInfos(KaxChapterTimeStart::Create, KaxChapterTimeStart_TheId, "ChapterTimeStart", KaxChapterTimeStart_Context);
const EbmlCallbacks KaxChapterTimeEnd::ClassInfos(KaxChapterTimeEnd::Create, KaxChapterTimeEnd_TheId, "ChapterTimeEnd", KaxChapterTimeEnd_Context);
const EbmlCallbacks KaxChapterFlagHidden::ClassInfos(KaxChapterFlagHidden::Create, KaxChapterFlagHidden_TheId, "ChapterFlagHidden", KaxChapterFlagHidden_Context);
const EbmlCallbacks KaxChapterFlagEnabled::ClassInfos(KaxChapterFlagEnabled::Create, KaxChapterFlagEnabled_TheId, "ChapterFlagEnabled", KaxChapterFlagEnabled_Context);
const EbmlCallbacks KaxChapterSegmentUID::ClassInfos(KaxChapterSegmentUID::Create, KaxChapterSegmentUID_TheId, "ChapterSegmentUID", KaxChapterSegmentUID_Context);
const EbmlCallbacks KaxChapterSegmentEditionUID::ClassInfos(KaxChapterSegmentEditionUID::Create, KaxChapterSegmentEditionUID_TheId, "ChapterSegmentEditionUID", KaxChapterSegmentEditionUID_Context);
const EbmlCallbacks KaxChapterPhysicalEquiv::ClassInfos(KaxChapterPhysicalEquiv::Create, KaxChapterPhysicalEquiv_TheId, "ChapterPhysicalEquiv", KaxChapterPhysicalEquiv_Context);
const EbmlCallbacks KaxChapterTrack::ClassInfos(KaxChapterTrack::Create, KaxChapterTrack_TheId, "ChapterTrack", KaxChapterTrack_Context);
const EbmlCallbacks KaxChapterTrackNumber::ClassInfos(KaxChapterTrackNumber::Create, KaxChapterTrackNumber_TheId, "ChapterTrackNumber", KaxChapterTrackNumber_Context);
const EbmlCallbacks KaxChapterDisplay::ClassInfos(KaxChapterDisplay::Create, KaxChapterDisplay_TheId, "ChapterDisplay", KaxChapterDisplay_Context);
const EbmlCallbacks KaxChapterString::ClassInfos(KaxChapterString::Create, KaxChapterString_TheId, "ChapterString", KaxChapterString_Context);
const EbmlCallbacks KaxChapterLanguage::ClassInfos(KaxChapterLanguage::Create, KaxChapterLanguage_TheId, "ChapterLanguage", KaxChapterLanguage_Context);
const EbmlCallbacks KaxChapterCountry::ClassInfos(KaxChapterCountry::Create, KaxChapterCountry_TheId, "ChapterCountry", KaxChapterCountry_Context);
const EbmlCallbacks KaxChapterProcess::ClassInfos(KaxChapterProcess::Create, KaxChapterProcess_TheId, "ChapterProcess", KaxChapterProcess_Context);
const EbmlCallbacks KaxChapterProcessCodecID::ClassInfos(KaxChapterProcessCodecID::Create, KaxChapterProcessCodecID_TheId, "ChapterProcessCodecID", KaxChapterProcessCodecID_Context);
const EbmlCallbacks KaxChapterProcessPrivate::ClassInfos(KaxChapterProcessPrivate::Create, KaxChapterProcessPrivate_TheId, "ChapterProcessPrivate", KaxChapterProcessPrivate_Context);
const EbmlCallbacks KaxChapterProcessCommand::ClassInfos(KaxChapterProcessCommand::Create, KaxChapterProcessCommand_TheId, "ChapterProcessCommand", KaxChapterProcessCommand_Context);
const EbmlCallbacks KaxChapterProcessTime::ClassInfos(KaxChapterProcessTime::Create, KaxChapterProcessTime_TheId, "ChapterProcessTime", KaxChapterProcessTime_Context);
const EbmlCallbacks KaxChapterProcessData::ClassInfos(KaxChapterProcessData::Create, KaxChapterProcessData_TheId, "ChapterProcessData", KaxChapterProcessData_Context);
KaxChapters::KaxChapters()
:EbmlMaster(KaxChapters_Context)
{}
KaxEditionEntry::KaxEditionEntry()
:EbmlMaster(KaxEditionEntry_Context)
{}
KaxChapterAtom::KaxChapterAtom()
:EbmlMaster(KaxChapterAtom_Context)
{}
KaxChapterTrack::KaxChapterTrack()
:EbmlMaster(KaxChapterTrack_Context)
{}
KaxChapterDisplay::KaxChapterDisplay()
:EbmlMaster(KaxChapterDisplay_Context)
{}
KaxChapterProcess::KaxChapterProcess()
:EbmlMaster(KaxChapterProcess_Context)
{}
KaxChapterProcessCommand::KaxChapterProcessCommand()
:EbmlMaster(KaxChapterProcessCommand_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxChapters.cpp 1201 2005-08-30 14:28:27Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxChapters.h"
#include "matroska/KaxContexts.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxChapters_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxEditionEntry)),
};
EbmlSemantic KaxEditionEntry_ContextList[5] =
{
EbmlSemantic(false, true , EBML_INFO(KaxEditionUID)),
EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagHidden)),
EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagDefault)),
EbmlSemantic(false, true , EBML_INFO(KaxEditionFlagOrdered)),
EbmlSemantic(true , false, EBML_INFO(KaxChapterAtom)),
};
EbmlSemantic KaxChapterAtom_ContextList[12] =
{
EbmlSemantic(false, false, EBML_INFO(KaxChapterAtom)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterUID)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterTimeStart)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterTimeEnd)),
EbmlSemantic(true , true, EBML_INFO(KaxChapterFlagHidden)),
EbmlSemantic(true , true, EBML_INFO(KaxChapterFlagEnabled)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterSegmentUID)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterSegmentEditionUID)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterPhysicalEquiv)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterTrack)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterDisplay)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterProcess)),
};
EbmlSemantic KaxChapterTrack_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxChapterTrackNumber)),
};
EbmlSemantic KaxChapterDisplay_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxChapterString)),
EbmlSemantic(true, false, EBML_INFO(KaxChapterLanguage)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterCountry)),
};
EbmlSemantic KaxChapterProcess_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessCodecID)),
EbmlSemantic(false, true, EBML_INFO(KaxChapterProcessPrivate)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterProcessCommand)),
};
EbmlSemantic KaxChapterProcessCommand_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessTime)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessData)),
};
const EbmlSemanticContext KaxChapters_Context = EbmlSemanticContext(countof(KaxChapters_ContextList), KaxChapters_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapters));
const EbmlSemanticContext KaxEditionEntry_Context = EbmlSemanticContext(countof(KaxEditionEntry_ContextList), KaxEditionEntry_ContextList, &KaxChapters_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionEntry));
const EbmlSemanticContext KaxEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionUID));
const EbmlSemanticContext KaxEditionFlagHidden_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagHidden));
const EbmlSemanticContext KaxEditionFlagDefault_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagDefault));
const EbmlSemanticContext KaxEditionFlagOrdered_Context = EbmlSemanticContext(0, NULL, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxEditionFlagOrdered));
const EbmlSemanticContext KaxChapterAtom_Context = EbmlSemanticContext(countof(KaxChapterAtom_ContextList), KaxChapterAtom_ContextList, &KaxEditionEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterAtom));
const EbmlSemanticContext KaxChapterTrack_Context = EbmlSemanticContext(countof(KaxChapterTrack_ContextList), KaxChapterTrack_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTrack));
const EbmlSemanticContext KaxChapterDisplay_Context = EbmlSemanticContext(countof(KaxChapterDisplay_ContextList), KaxChapterDisplay_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterDisplay));
const EbmlSemanticContext KaxChapterUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterUID));
const EbmlSemanticContext KaxChapterTimeStart_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTimeStart));
const EbmlSemanticContext KaxChapterTimeEnd_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTimeEnd));
const EbmlSemanticContext KaxChapterFlagHidden_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterFlagHidden));
const EbmlSemanticContext KaxChapterFlagEnabled_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterFlagEnabled));
const EbmlSemanticContext KaxChapterSegmentUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterSegmentUID));
const EbmlSemanticContext KaxChapterSegmentEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterSegmentEditionUID));
const EbmlSemanticContext KaxChapterPhysicalEquiv_Context = EbmlSemanticContext(0, NULL, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterPhysicalEquiv));
const EbmlSemanticContext KaxChapterTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxChapterTrack_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTrackNumber));
const EbmlSemanticContext KaxChapterString_Context = EbmlSemanticContext(0, NULL, &KaxChapterDisplay_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterString));
const EbmlSemanticContext KaxChapterLanguage_Context = EbmlSemanticContext(0, NULL, &KaxChapterLanguage_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterLanguage));
const EbmlSemanticContext KaxChapterCountry_Context = EbmlSemanticContext(0, NULL, &KaxChapterCountry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterCountry));
const EbmlSemanticContext KaxChapterProcess_Context = EbmlSemanticContext(countof(KaxChapterProcess_ContextList), KaxChapterProcess_ContextList, &KaxChapterAtom_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcess));
const EbmlSemanticContext KaxChapterProcessCodecID_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessCodecID));
const EbmlSemanticContext KaxChapterProcessPrivate_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessPrivate));
const EbmlSemanticContext KaxChapterProcessCommand_Context = EbmlSemanticContext(countof(KaxChapterProcessCommand_ContextList), KaxChapterProcessCommand_ContextList, &KaxChapterProcess_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessCommand));
const EbmlSemanticContext KaxChapterProcessTime_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcessCommand_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessTime));
const EbmlSemanticContext KaxChapterProcessData_Context = EbmlSemanticContext(0, NULL, &KaxChapterProcessCommand_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterProcessData));
EbmlId KaxChapters_TheId (0x1043A770, 4);
EbmlId KaxEditionEntry_TheId (0x45B9, 2);
EbmlId KaxEditionUID_TheId (0x45BC, 2);
EbmlId KaxEditionFlagHidden_TheId (0x45BD, 2);
EbmlId KaxEditionFlagDefault_TheId (0x45DB, 2);
EbmlId KaxEditionFlagOrdered_TheId (0x45DD, 2);
EbmlId KaxChapterAtom_TheId (0xB6, 1);
EbmlId KaxChapterUID_TheId (0x73C4, 2);
EbmlId KaxChapterTimeStart_TheId (0x91, 1);
EbmlId KaxChapterTimeEnd_TheId (0x92, 1);
EbmlId KaxChapterFlagHidden_TheId (0x98, 1);
EbmlId KaxChapterFlagEnabled_TheId (0x4598, 2);
EbmlId KaxChapterSegmentUID_TheId (0x6E67, 2);
EbmlId KaxChapterSegmentEditionUID_TheId(0x6EBC, 2);
EbmlId KaxChapterPhysicalEquiv_TheId (0x63C3, 2);
EbmlId KaxChapterTrack_TheId (0x8F, 1);
EbmlId KaxChapterTrackNumber_TheId (0x89, 1);
EbmlId KaxChapterDisplay_TheId (0x80, 1);
EbmlId KaxChapterString_TheId (0x85, 1);
EbmlId KaxChapterLanguage_TheId (0x437C, 2);
EbmlId KaxChapterCountry_TheId (0x437E, 2);
EbmlId KaxChapterProcess_TheId (0x6944, 2);
EbmlId KaxChapterProcessCodecID_TheId (0x6955, 2);
EbmlId KaxChapterProcessPrivate_TheId (0x450D, 2);
EbmlId KaxChapterProcessCommand_TheId (0x6911, 2);
EbmlId KaxChapterProcessTime_TheId (0x6922, 2);
EbmlId KaxChapterProcessData_TheId (0x6933, 2);
const EbmlCallbacks KaxChapters::ClassInfos(KaxChapters::Create, KaxChapters_TheId, "Chapters", KaxChapters_Context);
const EbmlCallbacks KaxEditionEntry::ClassInfos(KaxEditionEntry::Create, KaxEditionEntry_TheId, "EditionEntry", KaxEditionEntry_Context);
const EbmlCallbacks KaxEditionUID::ClassInfos(KaxEditionUID::Create, KaxEditionUID_TheId, "EditionUID", KaxEditionUID_Context);
const EbmlCallbacks KaxEditionFlagHidden::ClassInfos(KaxEditionFlagHidden::Create, KaxEditionFlagHidden_TheId, "EditionFlagHidden", KaxEditionFlagHidden_Context);
const EbmlCallbacks KaxEditionFlagDefault::ClassInfos(KaxEditionFlagDefault::Create, KaxEditionFlagDefault_TheId, "EditionFlagDefault", KaxEditionFlagDefault_Context);
const EbmlCallbacks KaxEditionFlagOrdered::ClassInfos(KaxEditionFlagOrdered::Create, KaxEditionFlagOrdered_TheId, "EditionFlagOrdered", KaxEditionFlagOrdered_Context);
const EbmlCallbacks KaxChapterAtom::ClassInfos(KaxChapterAtom::Create, KaxChapterAtom_TheId, "ChapterAtom", KaxChapterAtom_Context);
const EbmlCallbacks KaxChapterUID::ClassInfos(KaxChapterUID::Create, KaxChapterUID_TheId, "ChapterUID", KaxChapterUID_Context);
const EbmlCallbacks KaxChapterTimeStart::ClassInfos(KaxChapterTimeStart::Create, KaxChapterTimeStart_TheId, "ChapterTimeStart", KaxChapterTimeStart_Context);
const EbmlCallbacks KaxChapterTimeEnd::ClassInfos(KaxChapterTimeEnd::Create, KaxChapterTimeEnd_TheId, "ChapterTimeEnd", KaxChapterTimeEnd_Context);
const EbmlCallbacks KaxChapterFlagHidden::ClassInfos(KaxChapterFlagHidden::Create, KaxChapterFlagHidden_TheId, "ChapterFlagHidden", KaxChapterFlagHidden_Context);
const EbmlCallbacks KaxChapterFlagEnabled::ClassInfos(KaxChapterFlagEnabled::Create, KaxChapterFlagEnabled_TheId, "ChapterFlagEnabled", KaxChapterFlagEnabled_Context);
const EbmlCallbacks KaxChapterSegmentUID::ClassInfos(KaxChapterSegmentUID::Create, KaxChapterSegmentUID_TheId, "ChapterSegmentUID", KaxChapterSegmentUID_Context);
const EbmlCallbacks KaxChapterSegmentEditionUID::ClassInfos(KaxChapterSegmentEditionUID::Create, KaxChapterSegmentEditionUID_TheId, "ChapterSegmentEditionUID", KaxChapterSegmentEditionUID_Context);
const EbmlCallbacks KaxChapterPhysicalEquiv::ClassInfos(KaxChapterPhysicalEquiv::Create, KaxChapterPhysicalEquiv_TheId, "ChapterPhysicalEquiv", KaxChapterPhysicalEquiv_Context);
const EbmlCallbacks KaxChapterTrack::ClassInfos(KaxChapterTrack::Create, KaxChapterTrack_TheId, "ChapterTrack", KaxChapterTrack_Context);
const EbmlCallbacks KaxChapterTrackNumber::ClassInfos(KaxChapterTrackNumber::Create, KaxChapterTrackNumber_TheId, "ChapterTrackNumber", KaxChapterTrackNumber_Context);
const EbmlCallbacks KaxChapterDisplay::ClassInfos(KaxChapterDisplay::Create, KaxChapterDisplay_TheId, "ChapterDisplay", KaxChapterDisplay_Context);
const EbmlCallbacks KaxChapterString::ClassInfos(KaxChapterString::Create, KaxChapterString_TheId, "ChapterString", KaxChapterString_Context);
const EbmlCallbacks KaxChapterLanguage::ClassInfos(KaxChapterLanguage::Create, KaxChapterLanguage_TheId, "ChapterLanguage", KaxChapterLanguage_Context);
const EbmlCallbacks KaxChapterCountry::ClassInfos(KaxChapterCountry::Create, KaxChapterCountry_TheId, "ChapterCountry", KaxChapterCountry_Context);
const EbmlCallbacks KaxChapterProcess::ClassInfos(KaxChapterProcess::Create, KaxChapterProcess_TheId, "ChapterProcess", KaxChapterProcess_Context);
const EbmlCallbacks KaxChapterProcessCodecID::ClassInfos(KaxChapterProcessCodecID::Create, KaxChapterProcessCodecID_TheId, "ChapterProcessCodecID", KaxChapterProcessCodecID_Context);
const EbmlCallbacks KaxChapterProcessPrivate::ClassInfos(KaxChapterProcessPrivate::Create, KaxChapterProcessPrivate_TheId, "ChapterProcessPrivate", KaxChapterProcessPrivate_Context);
const EbmlCallbacks KaxChapterProcessCommand::ClassInfos(KaxChapterProcessCommand::Create, KaxChapterProcessCommand_TheId, "ChapterProcessCommand", KaxChapterProcessCommand_Context);
const EbmlCallbacks KaxChapterProcessTime::ClassInfos(KaxChapterProcessTime::Create, KaxChapterProcessTime_TheId, "ChapterProcessTime", KaxChapterProcessTime_Context);
const EbmlCallbacks KaxChapterProcessData::ClassInfos(KaxChapterProcessData::Create, KaxChapterProcessData_TheId, "ChapterProcessData", KaxChapterProcessData_Context);
KaxChapters::KaxChapters()
:EbmlMaster(KaxChapters_Context)
{}
KaxEditionEntry::KaxEditionEntry()
:EbmlMaster(KaxEditionEntry_Context)
{}
KaxChapterAtom::KaxChapterAtom()
:EbmlMaster(KaxChapterAtom_Context)
{}
KaxChapterTrack::KaxChapterTrack()
:EbmlMaster(KaxChapterTrack_Context)
{}
KaxChapterDisplay::KaxChapterDisplay()
:EbmlMaster(KaxChapterDisplay_Context)
{}
KaxChapterProcess::KaxChapterProcess()
:EbmlMaster(KaxChapterProcess_Context)
{}
KaxChapterProcessCommand::KaxChapterProcessCommand()
:EbmlMaster(KaxChapterProcessCommand_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,335 +1,335 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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: KaxCluster.cpp 1228 2005-10-14 19:36:51Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxCluster.h"
#include "matroska/KaxClusterData.h"
#include "matroska/KaxBlock.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxSegment.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
EbmlSemantic KaxCluster_ContextList[5] =
#else // MATROSKA_VERSION
EbmlSemantic KaxCluster_ContextList[6] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true, true, EBML_INFO(KaxClusterTimecode)),
EbmlSemantic(false, true, EBML_INFO(KaxClusterSilentTracks)),
EbmlSemantic(false, true, EBML_INFO(KaxClusterPrevSize)),
EbmlSemantic(false, false, EBML_INFO(KaxBlockGroup)),
#if MATROSKA_VERSION == 2
EbmlSemantic(false, false, EBML_INFO(KaxSimpleBlock)),
#endif
EbmlSemantic(false, true, EBML_INFO(KaxClusterPosition)),
};
const EbmlSemanticContext KaxCluster_Context = EbmlSemanticContext(countof(KaxCluster_ContextList), KaxCluster_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCluster));
EbmlId KaxCluster_TheId(0x1F43B675, 4);
const EbmlCallbacks KaxCluster::ClassInfos(KaxCluster::Create, KaxCluster_TheId, "Cluster", KaxCluster_Context);
KaxCluster::KaxCluster()
:EbmlMaster(KaxCluster_Context)
,currentNewBlock(NULL)
,ParentSegment(NULL)
,bFirstFrameInside(false)
,bPreviousTimecodeIsSet(false)
,bTimecodeScaleIsSet(false)
,bSilentTracksUsed(false)
{}
KaxCluster::KaxCluster(const KaxCluster & ElementToClone)
:EbmlMaster(ElementToClone)
,bSilentTracksUsed(ElementToClone.bSilentTracksUsed)
{
// update the parent of each children
std::vector<EbmlElement *>::const_iterator Itr = begin();
while (Itr != end())
{
if (EbmlId(**Itr) == EBML_ID(KaxBlockGroup)) {
static_cast<KaxBlockGroup *>(*Itr)->SetParent(*this);
} else if (EbmlId(**Itr) == EBML_ID(KaxBlock)) {
static_cast<KaxBlock *>(*Itr)->SetParent(*this);
#if MATROSKA_VERSION >= 2
} else if (EbmlId(**Itr) == EBML_ID(KaxBlockVirtual)) {
static_cast<KaxBlockVirtual *>(*Itr)->SetParent(*this);
#endif // MATROSKA_VERSION
}
}
}
bool KaxCluster::AddBlockBlob(KaxBlockBlob * NewBlob)
{
Blobs.push_back(NewBlob);
return true;
}
bool KaxCluster::AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing)
{
if (!bFirstFrameInside) {
bFirstFrameInside = true;
MinTimecode = MaxTimecode = timecode;
} else {
if (timecode < MinTimecode)
MinTimecode = timecode;
if (timecode > MaxTimecode)
MaxTimecode = timecode;
}
MyNewBlock = NULL;
if (lacing == LACING_NONE || !track.LacingEnabled()) {
currentNewBlock = NULL;
}
// force creation of a new block
if (currentNewBlock == NULL || uint32(track.TrackNumber()) != uint32(currentNewBlock->TrackNumber()) || PastBlock != NULL || ForwBlock != NULL) {
KaxBlockGroup & aNewBlock = GetNewBlock();
MyNewBlock = currentNewBlock = &aNewBlock;
currentNewBlock = &aNewBlock;
}
if (PastBlock != NULL) {
if (ForwBlock != NULL) {
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, *ForwBlock, lacing)) {
// more data are allowed in this Block
return true;
} else {
currentNewBlock = NULL;
return false;
}
} else {
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, lacing)) {
// more data are allowed in this Block
return true;
} else {
currentNewBlock = NULL;
return false;
}
}
} else {
if (currentNewBlock->AddFrame(track, timecode, buffer, lacing)) {
// more data are allowed in this Block
return true;
} else {
currentNewBlock = NULL;
return false;
}
}
}
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing)
{
assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, NULL, NULL, lacing);
}
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing)
{
assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, NULL, lacing);
}
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing)
{
assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, &ForwBlock, lacing);
}
/*!
\todo only put the Blocks written in the cue entries
*/
uint32 KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault)
{
uint32 Result = 0;
size_t TrkIndex, Index;
// update the Timecode of the Cluster before writing
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
*static_cast<EbmlUInteger *>(Timecode) = GlobalTimecode() / GlobalTimecodeScale();
if (Blobs.size() == 0) {
// old-school direct KaxBlockGroup
// SilentTracks handling
// check the parent cluster for existing tracks and see if they are contained in this cluster or not
if (bSilentTracksUsed)
{
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
for (TrkIndex = 0; TrkIndex < MyTracks.ListSize(); TrkIndex++) {
if (EbmlId(*MyTracks[TrkIndex]) == EBML_ID(KaxTrackEntry))
{
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(MyTracks[TrkIndex]);
uint32 tracknum = entry.TrackNumber();
for (Index = 0; Index < ListSize(); Index++) {
if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {
KaxBlockGroup & group = *static_cast<KaxBlockGroup *>((*this)[Index]);
if (group.TrackNumber() == tracknum)
break; // this track is used
}
}
// the track wasn't found in this cluster
if (Index == ListSize())
{
KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
*static_cast<EbmlUInteger *>(trackelt) = tracknum;
}
}
}
}
Result = EbmlMaster::Render(output, bSaveDefault);
// For all Blocks add their position on the CueEntry
for (Index = 0; Index < ListSize(); Index++) {
if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {
CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>((*this)[Index]));
}
}
} else {
// new school, using KaxBlockBlob
for (Index = 0; Index<Blobs.size(); Index++)
{
#if MATROSKA_VERSION >= 2
if (Blobs[Index]->IsSimpleBlock())
PushElement( (KaxSimpleBlock&) *Blobs[Index] );
else
#endif
PushElement( (KaxBlockGroup&) *Blobs[Index] );
}
// SilentTracks handling
// check the parent cluster for existing tracks and see if they are contained in this cluster or not
if (bSilentTracksUsed)
{
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
for (TrkIndex = 0; TrkIndex < MyTracks.ListSize(); TrkIndex++) {
if (EbmlId(*MyTracks[TrkIndex]) == EBML_ID(KaxTrackEntry))
{
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(MyTracks[TrkIndex]);
uint32 tracknum = entry.TrackNumber();
for (Index = 0; Index<Blobs.size(); Index++) {
if (((KaxInternalBlock&)*Blobs[Index]).TrackNum() == tracknum)
break; // this track is used
}
// the track wasn't found in this cluster
if (Index == ListSize())
{
KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
*static_cast<EbmlUInteger *>(trackelt) = tracknum;
}
}
}
}
Result = EbmlMaster::Render(output, bSaveDefault);
// For all Blocks add their position on the CueEntry
for (Index = 0; Index<Blobs.size(); Index++) {
CueToUpdate.PositionSet(*Blobs[Index]);
}
Blobs.clear();
}
return Result;
}
/*!
\todo automatically choose valid timecode for the Cluster based on the previous cluster timecode (must be incremental)
*/
uint64 KaxCluster::GlobalTimecode() const
{
assert(bPreviousTimecodeIsSet);
uint64 result = MinTimecode;
if (result < PreviousTimecode)
result = PreviousTimecode + 1;
return result;
}
/*!
\brief retrieve the relative
\todo !!! We need a way to know the TimecodeScale
*/
int16 KaxCluster::GetBlockLocalTimecode(uint64 aGlobalTimecode) const
{
int64 TimecodeDelay = (int64(aGlobalTimecode) - int64(GlobalTimecode())) / int64(GlobalTimecodeScale());
assert(TimecodeDelay >= int16(0x8000) && TimecodeDelay <= int16(0x7FFF));
return int16(TimecodeDelay);
}
uint64 KaxCluster::GetBlockGlobalTimecode(int16 GlobalSavedTimecode)
{
if (!bFirstFrameInside) {
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
assert (bFirstFrameInside); // use the InitTimecode() hack for now
MinTimecode = MaxTimecode = PreviousTimecode = *static_cast<EbmlUInteger *>(Timecode);
bFirstFrameInside = true;
bPreviousTimecodeIsSet = true;
}
return int64(GlobalSavedTimecode * GlobalTimecodeScale()) + GlobalTimecode();
}
KaxBlockGroup & KaxCluster::GetNewBlock()
{
KaxBlockGroup & MyBlock = AddNewChild<KaxBlockGroup>(*this);
MyBlock.SetParent(*this);
return MyBlock;
}
void KaxCluster::ReleaseFrames()
{
size_t Index;
for (Index = 0; Index < ListSize(); Index++) {
if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {
static_cast<KaxBlockGroup*>((*this)[Index])->ReleaseFrames();
}
}
}
uint64 KaxCluster::GetPosition() const
{
assert(ParentSegment != NULL);
return ParentSegment->GetRelativePosition(*this);
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** 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: KaxCluster.cpp 1228 2005-10-14 19:36:51Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxCluster.h"
#include "matroska/KaxClusterData.h"
#include "matroska/KaxBlock.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxSegment.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
EbmlSemantic KaxCluster_ContextList[5] =
#else // MATROSKA_VERSION
EbmlSemantic KaxCluster_ContextList[6] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true, true, EBML_INFO(KaxClusterTimecode)),
EbmlSemantic(false, true, EBML_INFO(KaxClusterSilentTracks)),
EbmlSemantic(false, true, EBML_INFO(KaxClusterPrevSize)),
EbmlSemantic(false, false, EBML_INFO(KaxBlockGroup)),
#if MATROSKA_VERSION == 2
EbmlSemantic(false, false, EBML_INFO(KaxSimpleBlock)),
#endif
EbmlSemantic(false, true, EBML_INFO(KaxClusterPosition)),
};
const EbmlSemanticContext KaxCluster_Context = EbmlSemanticContext(countof(KaxCluster_ContextList), KaxCluster_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCluster));
EbmlId KaxCluster_TheId(0x1F43B675, 4);
const EbmlCallbacks KaxCluster::ClassInfos(KaxCluster::Create, KaxCluster_TheId, "Cluster", KaxCluster_Context);
KaxCluster::KaxCluster()
:EbmlMaster(KaxCluster_Context)
,currentNewBlock(NULL)
,ParentSegment(NULL)
,bFirstFrameInside(false)
,bPreviousTimecodeIsSet(false)
,bTimecodeScaleIsSet(false)
,bSilentTracksUsed(false)
{}
KaxCluster::KaxCluster(const KaxCluster & ElementToClone)
:EbmlMaster(ElementToClone)
,bSilentTracksUsed(ElementToClone.bSilentTracksUsed)
{
// update the parent of each children
std::vector<EbmlElement *>::const_iterator Itr = begin();
while (Itr != end())
{
if (EbmlId(**Itr) == EBML_ID(KaxBlockGroup)) {
static_cast<KaxBlockGroup *>(*Itr)->SetParent(*this);
} else if (EbmlId(**Itr) == EBML_ID(KaxBlock)) {
static_cast<KaxBlock *>(*Itr)->SetParent(*this);
#if MATROSKA_VERSION >= 2
} else if (EbmlId(**Itr) == EBML_ID(KaxBlockVirtual)) {
static_cast<KaxBlockVirtual *>(*Itr)->SetParent(*this);
#endif // MATROSKA_VERSION
}
}
}
bool KaxCluster::AddBlockBlob(KaxBlockBlob * NewBlob)
{
Blobs.push_back(NewBlob);
return true;
}
bool KaxCluster::AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing)
{
if (!bFirstFrameInside) {
bFirstFrameInside = true;
MinTimecode = MaxTimecode = timecode;
} else {
if (timecode < MinTimecode)
MinTimecode = timecode;
if (timecode > MaxTimecode)
MaxTimecode = timecode;
}
MyNewBlock = NULL;
if (lacing == LACING_NONE || !track.LacingEnabled()) {
currentNewBlock = NULL;
}
// force creation of a new block
if (currentNewBlock == NULL || uint32(track.TrackNumber()) != uint32(currentNewBlock->TrackNumber()) || PastBlock != NULL || ForwBlock != NULL) {
KaxBlockGroup & aNewBlock = GetNewBlock();
MyNewBlock = currentNewBlock = &aNewBlock;
currentNewBlock = &aNewBlock;
}
if (PastBlock != NULL) {
if (ForwBlock != NULL) {
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, *ForwBlock, lacing)) {
// more data are allowed in this Block
return true;
} else {
currentNewBlock = NULL;
return false;
}
} else {
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, lacing)) {
// more data are allowed in this Block
return true;
} else {
currentNewBlock = NULL;
return false;
}
}
} else {
if (currentNewBlock->AddFrame(track, timecode, buffer, lacing)) {
// more data are allowed in this Block
return true;
} else {
currentNewBlock = NULL;
return false;
}
}
}
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing)
{
assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, NULL, NULL, lacing);
}
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing)
{
assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, NULL, lacing);
}
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing)
{
assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, &ForwBlock, lacing);
}
/*!
\todo only put the Blocks written in the cue entries
*/
uint32 KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault)
{
uint32 Result = 0;
size_t TrkIndex, Index;
// update the Timecode of the Cluster before writing
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
*static_cast<EbmlUInteger *>(Timecode) = GlobalTimecode() / GlobalTimecodeScale();
if (Blobs.size() == 0) {
// old-school direct KaxBlockGroup
// SilentTracks handling
// check the parent cluster for existing tracks and see if they are contained in this cluster or not
if (bSilentTracksUsed)
{
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
for (TrkIndex = 0; TrkIndex < MyTracks.ListSize(); TrkIndex++) {
if (EbmlId(*MyTracks[TrkIndex]) == EBML_ID(KaxTrackEntry))
{
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(MyTracks[TrkIndex]);
uint32 tracknum = entry.TrackNumber();
for (Index = 0; Index < ListSize(); Index++) {
if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {
KaxBlockGroup & group = *static_cast<KaxBlockGroup *>((*this)[Index]);
if (group.TrackNumber() == tracknum)
break; // this track is used
}
}
// the track wasn't found in this cluster
if (Index == ListSize())
{
KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
*static_cast<EbmlUInteger *>(trackelt) = tracknum;
}
}
}
}
Result = EbmlMaster::Render(output, bSaveDefault);
// For all Blocks add their position on the CueEntry
for (Index = 0; Index < ListSize(); Index++) {
if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {
CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>((*this)[Index]));
}
}
} else {
// new school, using KaxBlockBlob
for (Index = 0; Index<Blobs.size(); Index++)
{
#if MATROSKA_VERSION >= 2
if (Blobs[Index]->IsSimpleBlock())
PushElement( (KaxSimpleBlock&) *Blobs[Index] );
else
#endif
PushElement( (KaxBlockGroup&) *Blobs[Index] );
}
// SilentTracks handling
// check the parent cluster for existing tracks and see if they are contained in this cluster or not
if (bSilentTracksUsed)
{
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
for (TrkIndex = 0; TrkIndex < MyTracks.ListSize(); TrkIndex++) {
if (EbmlId(*MyTracks[TrkIndex]) == EBML_ID(KaxTrackEntry))
{
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(MyTracks[TrkIndex]);
uint32 tracknum = entry.TrackNumber();
for (Index = 0; Index<Blobs.size(); Index++) {
if (((KaxInternalBlock&)*Blobs[Index]).TrackNum() == tracknum)
break; // this track is used
}
// the track wasn't found in this cluster
if (Index == ListSize())
{
KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
*static_cast<EbmlUInteger *>(trackelt) = tracknum;
}
}
}
}
Result = EbmlMaster::Render(output, bSaveDefault);
// For all Blocks add their position on the CueEntry
for (Index = 0; Index<Blobs.size(); Index++) {
CueToUpdate.PositionSet(*Blobs[Index]);
}
Blobs.clear();
}
return Result;
}
/*!
\todo automatically choose valid timecode for the Cluster based on the previous cluster timecode (must be incremental)
*/
uint64 KaxCluster::GlobalTimecode() const
{
assert(bPreviousTimecodeIsSet);
uint64 result = MinTimecode;
if (result < PreviousTimecode)
result = PreviousTimecode + 1;
return result;
}
/*!
\brief retrieve the relative
\todo !!! We need a way to know the TimecodeScale
*/
int16 KaxCluster::GetBlockLocalTimecode(uint64 aGlobalTimecode) const
{
int64 TimecodeDelay = (int64(aGlobalTimecode) - int64(GlobalTimecode())) / int64(GlobalTimecodeScale());
assert(TimecodeDelay >= int16(0x8000) && TimecodeDelay <= int16(0x7FFF));
return int16(TimecodeDelay);
}
uint64 KaxCluster::GetBlockGlobalTimecode(int16 GlobalSavedTimecode)
{
if (!bFirstFrameInside) {
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
assert (bFirstFrameInside); // use the InitTimecode() hack for now
MinTimecode = MaxTimecode = PreviousTimecode = *static_cast<EbmlUInteger *>(Timecode);
bFirstFrameInside = true;
bPreviousTimecodeIsSet = true;
}
return int64(GlobalSavedTimecode * GlobalTimecodeScale()) + GlobalTimecode();
}
KaxBlockGroup & KaxCluster::GetNewBlock()
{
KaxBlockGroup & MyBlock = AddNewChild<KaxBlockGroup>(*this);
MyBlock.SetParent(*this);
return MyBlock;
}
void KaxCluster::ReleaseFrames()
{
size_t Index;
for (Index = 0; Index < ListSize(); Index++) {
if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {
static_cast<KaxBlockGroup*>((*this)[Index])->ReleaseFrames();
}
}
}
uint64 KaxCluster::GetPosition() const
{
assert(ParentSegment != NULL);
return ParentSegment->GetRelativePosition(*this);
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,67 +1,67 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxClusterData.cpp 955 2004-11-28 15:24:37Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxClusterData.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
EbmlId KaxClusterTimecode_TheId (0xE7, 1);
EbmlId KaxClusterSilentTracks_TheId (0x5854, 2);
EbmlId KaxClusterSilentTrackNumber_TheId(0x58D7, 2);
EbmlId KaxClusterPrevSize_TheId (0xAB, 1);
EbmlId KaxClusterPosition_TheId (0xA7, 1);
EbmlSemantic KaxClusterSilentTracks_ContextList[1] =
{
EbmlSemantic(false, false, EBML_INFO(KaxClusterSilentTrackNumber)),
};
const EbmlSemanticContext KaxClusterTimecode_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterTimecode));
const EbmlSemanticContext KaxClusterSilentTracks_Context = EbmlSemanticContext(countof(KaxClusterSilentTracks_ContextList), KaxClusterSilentTracks_ContextList, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterSilentTracks));
const EbmlSemanticContext KaxClusterSilentTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxClusterSilentTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterSilentTrackNumber));
const EbmlSemanticContext KaxClusterPosition_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterPosition));
const EbmlSemanticContext KaxClusterPrevSize_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterPrevSize));
const EbmlCallbacks KaxClusterTimecode::ClassInfos(KaxClusterTimecode::Create, KaxClusterTimecode_TheId, "ClusterTimecode", KaxClusterTimecode_Context);
const EbmlCallbacks KaxClusterSilentTracks::ClassInfos(KaxClusterSilentTracks::Create, KaxClusterSilentTracks_TheId, "ClusterSilentTracks", KaxClusterSilentTracks_Context);
const EbmlCallbacks KaxClusterSilentTrackNumber::ClassInfos(KaxClusterSilentTrackNumber::Create, KaxClusterSilentTrackNumber_TheId, "ClusterSilentTrackNumber", KaxClusterSilentTrackNumber_Context);
const EbmlCallbacks KaxClusterPrevSize::ClassInfos(KaxClusterPrevSize::Create, KaxClusterPrevSize_TheId, "ClusterPrevSize", KaxClusterPrevSize_Context);
const EbmlCallbacks KaxClusterPosition::ClassInfos(KaxClusterPosition::Create, KaxClusterPosition_TheId, "ClusterPosition", KaxClusterPosition_Context);
KaxClusterSilentTracks::KaxClusterSilentTracks()
:EbmlMaster(KaxClusterSilentTracks_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxClusterData.cpp 955 2004-11-28 15:24:37Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxClusterData.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
EbmlId KaxClusterTimecode_TheId (0xE7, 1);
EbmlId KaxClusterSilentTracks_TheId (0x5854, 2);
EbmlId KaxClusterSilentTrackNumber_TheId(0x58D7, 2);
EbmlId KaxClusterPrevSize_TheId (0xAB, 1);
EbmlId KaxClusterPosition_TheId (0xA7, 1);
EbmlSemantic KaxClusterSilentTracks_ContextList[1] =
{
EbmlSemantic(false, false, EBML_INFO(KaxClusterSilentTrackNumber)),
};
const EbmlSemanticContext KaxClusterTimecode_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterTimecode));
const EbmlSemanticContext KaxClusterSilentTracks_Context = EbmlSemanticContext(countof(KaxClusterSilentTracks_ContextList), KaxClusterSilentTracks_ContextList, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterSilentTracks));
const EbmlSemanticContext KaxClusterSilentTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxClusterSilentTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterSilentTrackNumber));
const EbmlSemanticContext KaxClusterPosition_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterPosition));
const EbmlSemanticContext KaxClusterPrevSize_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxClusterPrevSize));
const EbmlCallbacks KaxClusterTimecode::ClassInfos(KaxClusterTimecode::Create, KaxClusterTimecode_TheId, "ClusterTimecode", KaxClusterTimecode_Context);
const EbmlCallbacks KaxClusterSilentTracks::ClassInfos(KaxClusterSilentTracks::Create, KaxClusterSilentTracks_TheId, "ClusterSilentTracks", KaxClusterSilentTracks_Context);
const EbmlCallbacks KaxClusterSilentTrackNumber::ClassInfos(KaxClusterSilentTrackNumber::Create, KaxClusterSilentTrackNumber_TheId, "ClusterSilentTrackNumber", KaxClusterSilentTrackNumber_Context);
const EbmlCallbacks KaxClusterPrevSize::ClassInfos(KaxClusterPrevSize::Create, KaxClusterPrevSize_TheId, "ClusterPrevSize", KaxClusterPrevSize_Context);
const EbmlCallbacks KaxClusterPosition::ClassInfos(KaxClusterPosition::Create, KaxClusterPosition_TheId, "ClusterPosition", KaxClusterPosition_Context);
KaxClusterSilentTracks::KaxClusterSilentTracks()
:EbmlMaster(KaxClusterSilentTracks_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,254 +1,254 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContentEncoding.cpp 640 2004-07-09 21:05:36Z mosu $
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#include "matroska/KaxContentEncoding.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxContentEncodings_ContextList[1] = {
EbmlSemantic(true, true, EBML_INFO(KaxContentEncoding)),
};
const EbmlSemantic KaxContentEncoding_ContextList[5] = {
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingOrder)),
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingScope)),
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingType)),
EbmlSemantic(false, true, EBML_INFO(KaxContentCompression)),
EbmlSemantic(false, true, EBML_INFO(KaxContentEncryption)),
};
const EbmlSemantic KaxContentCompression_ContextList[2] = {
EbmlSemantic(true, true, EBML_INFO(KaxContentCompAlgo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentCompSettings)),
};
const EbmlSemantic KaxContentEncryption_ContextList[6] = {
EbmlSemantic(false, true, EBML_INFO(KaxContentEncAlgo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentEncKeyID)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSignature)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSigKeyID)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSigAlgo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSigHashAlgo)),
};
EbmlId KaxContentEncodings_TheId (0x6d80, 2);
EbmlId KaxContentEncoding_TheId (0x6240, 2);
EbmlId KaxContentEncodingOrder_TheId (0x5031, 2);
EbmlId KaxContentEncodingScope_TheId (0x5032, 2);
EbmlId KaxContentEncodingType_TheId (0x5033, 2);
EbmlId KaxContentCompression_TheId (0x5034, 2);
EbmlId KaxContentCompAlgo_TheId (0x4254, 2);
EbmlId KaxContentCompSettings_TheId (0x4255, 2);
EbmlId KaxContentEncryption_TheId (0x5035, 2);
EbmlId KaxContentEncAlgo_TheId (0x47e1, 2);
EbmlId KaxContentEncKeyID_TheId (0x47e2, 2);
EbmlId KaxContentSignature_TheId (0x47e3, 2);
EbmlId KaxContentSigKeyID_TheId (0x47e4, 2);
EbmlId KaxContentSigAlgo_TheId (0x47e5, 2);
EbmlId KaxContentSigHashAlgo_TheId (0x47e6, 2);
const EbmlSemanticContext KaxContentEncodings_Context =
EbmlSemanticContext(countof(KaxContentEncodings_ContextList),
KaxContentEncodings_ContextList, &KaxTrackEntry_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodings));
const EbmlSemanticContext KaxContentEncoding_Context =
EbmlSemanticContext(countof(KaxContentEncoding_ContextList),
KaxContentEncoding_ContextList,
&KaxContentEncodings_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncoding));
const EbmlSemanticContext KaxContentEncodingOrder_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodingOrder));
const EbmlSemanticContext KaxContentEncodingScope_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodingScope));
const EbmlSemanticContext KaxContentEncodingType_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodingType));
const EbmlSemanticContext KaxContentCompression_Context =
EbmlSemanticContext(countof(KaxContentCompression_ContextList),
KaxContentCompression_ContextList,
&KaxContentEncoding_Context, *GetKaxGlobal_Context,
&EBML_INFO(KaxContentCompression));
const EbmlSemanticContext KaxContentCompAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentCompression_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentCompAlgo));
const EbmlSemanticContext KaxContentCompSettings_Context =
EbmlSemanticContext(0, NULL, &KaxContentCompression_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentCompSettings));
const EbmlSemanticContext KaxContentEncryption_Context =
EbmlSemanticContext(countof(KaxContentEncryption_ContextList),
KaxContentEncryption_ContextList,
&KaxContentEncoding_Context, *GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncryption));
const EbmlSemanticContext KaxContentEncAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncAlgo));
const EbmlSemanticContext KaxContentEncKeyID_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncKeyID));
const EbmlSemanticContext KaxContentSignature_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSignature));
const EbmlSemanticContext KaxContentSigAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSigKeyID));
const EbmlSemanticContext KaxContentSigHashAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSigKeyID));
const EbmlSemanticContext KaxContentSigKeyID_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSigKeyID));
const EbmlCallbacks
KaxContentEncodings::ClassInfos(KaxContentEncodings::Create,
KaxContentEncodings_TheId,
"ContentEncodings",
KaxContentEncodings_Context);
const EbmlCallbacks
KaxContentEncoding::ClassInfos(KaxContentEncoding::Create,
KaxContentEncoding_TheId,
"ContentEncoding",
KaxContentEncoding_Context);
const EbmlCallbacks
KaxContentEncodingOrder::ClassInfos(KaxContentEncodingOrder::Create,
KaxContentEncodingOrder_TheId,
"ContentEncodingOrder",
KaxContentEncodingOrder_Context);
const EbmlCallbacks
KaxContentEncodingScope::ClassInfos(KaxContentEncodingScope::Create,
KaxContentEncodingScope_TheId,
"ContentEncodingScope",
KaxContentEncodingScope_Context);
const EbmlCallbacks
KaxContentEncodingType::ClassInfos(KaxContentEncodingType::Create,
KaxContentEncodingType_TheId,
"ContentEncodingType",
KaxContentEncodingType_Context);
const EbmlCallbacks
KaxContentCompression::ClassInfos(KaxContentCompression::Create,
KaxContentCompression_TheId,
"ContentCompression",
KaxContentCompression_Context);
const EbmlCallbacks
KaxContentCompAlgo::ClassInfos(KaxContentCompAlgo::Create,
KaxContentCompAlgo_TheId,
"ContentCompAlgo",
KaxContentCompAlgo_Context);
const EbmlCallbacks
KaxContentCompSettings::ClassInfos(KaxContentCompSettings::Create,
KaxContentCompSettings_TheId,
"ContentCompSettings",
KaxContentCompSettings_Context);
const EbmlCallbacks
KaxContentEncryption::ClassInfos(KaxContentEncryption::Create,
KaxContentEncryption_TheId,
"ContentEncryption",
KaxContentEncryption_Context);
const EbmlCallbacks
KaxContentEncAlgo::ClassInfos(KaxContentEncAlgo::Create,
KaxContentEncAlgo_TheId,
"ContentEncAlgo",
KaxContentEncAlgo_Context);
const EbmlCallbacks
KaxContentEncKeyID::ClassInfos(KaxContentEncKeyID::Create,
KaxContentEncKeyID_TheId,
"ContentEncKeyID",
KaxContentEncKeyID_Context);
const EbmlCallbacks
KaxContentSignature::ClassInfos(KaxContentSignature::Create,
KaxContentSignature_TheId,
"ContentSignature",
KaxContentSignature_Context);
const EbmlCallbacks
KaxContentSigAlgo::ClassInfos(KaxContentSigAlgo::Create,
KaxContentSigAlgo_TheId,
"ContentSigAlgo",
KaxContentSigAlgo_Context);
const EbmlCallbacks
KaxContentSigHashAlgo::ClassInfos(KaxContentSigHashAlgo::Create,
KaxContentSigHashAlgo_TheId,
"ContentSigHashAlgo",
KaxContentSigHashAlgo_Context);
const EbmlCallbacks
KaxContentSigKeyID::ClassInfos(KaxContentSigKeyID::Create,
KaxContentSigKeyID_TheId,
"ContentSigKeyID",
KaxContentSigKeyID_Context);
KaxContentEncodings::KaxContentEncodings():
EbmlMaster(KaxContentEncodings_Context) {
}
KaxContentEncoding::KaxContentEncoding():
EbmlMaster(KaxContentEncoding_Context) {
}
KaxContentCompression::KaxContentCompression():
EbmlMaster(KaxContentCompression_Context) {
}
KaxContentEncryption::KaxContentEncryption():
EbmlMaster(KaxContentEncryption_Context) {
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContentEncoding.cpp 640 2004-07-09 21:05:36Z mosu $
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#include "matroska/KaxContentEncoding.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxContentEncodings_ContextList[1] = {
EbmlSemantic(true, true, EBML_INFO(KaxContentEncoding)),
};
const EbmlSemantic KaxContentEncoding_ContextList[5] = {
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingOrder)),
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingScope)),
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingType)),
EbmlSemantic(false, true, EBML_INFO(KaxContentCompression)),
EbmlSemantic(false, true, EBML_INFO(KaxContentEncryption)),
};
const EbmlSemantic KaxContentCompression_ContextList[2] = {
EbmlSemantic(true, true, EBML_INFO(KaxContentCompAlgo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentCompSettings)),
};
const EbmlSemantic KaxContentEncryption_ContextList[6] = {
EbmlSemantic(false, true, EBML_INFO(KaxContentEncAlgo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentEncKeyID)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSignature)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSigKeyID)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSigAlgo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentSigHashAlgo)),
};
EbmlId KaxContentEncodings_TheId (0x6d80, 2);
EbmlId KaxContentEncoding_TheId (0x6240, 2);
EbmlId KaxContentEncodingOrder_TheId (0x5031, 2);
EbmlId KaxContentEncodingScope_TheId (0x5032, 2);
EbmlId KaxContentEncodingType_TheId (0x5033, 2);
EbmlId KaxContentCompression_TheId (0x5034, 2);
EbmlId KaxContentCompAlgo_TheId (0x4254, 2);
EbmlId KaxContentCompSettings_TheId (0x4255, 2);
EbmlId KaxContentEncryption_TheId (0x5035, 2);
EbmlId KaxContentEncAlgo_TheId (0x47e1, 2);
EbmlId KaxContentEncKeyID_TheId (0x47e2, 2);
EbmlId KaxContentSignature_TheId (0x47e3, 2);
EbmlId KaxContentSigKeyID_TheId (0x47e4, 2);
EbmlId KaxContentSigAlgo_TheId (0x47e5, 2);
EbmlId KaxContentSigHashAlgo_TheId (0x47e6, 2);
const EbmlSemanticContext KaxContentEncodings_Context =
EbmlSemanticContext(countof(KaxContentEncodings_ContextList),
KaxContentEncodings_ContextList, &KaxTrackEntry_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodings));
const EbmlSemanticContext KaxContentEncoding_Context =
EbmlSemanticContext(countof(KaxContentEncoding_ContextList),
KaxContentEncoding_ContextList,
&KaxContentEncodings_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncoding));
const EbmlSemanticContext KaxContentEncodingOrder_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodingOrder));
const EbmlSemanticContext KaxContentEncodingScope_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodingScope));
const EbmlSemanticContext KaxContentEncodingType_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncoding_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncodingType));
const EbmlSemanticContext KaxContentCompression_Context =
EbmlSemanticContext(countof(KaxContentCompression_ContextList),
KaxContentCompression_ContextList,
&KaxContentEncoding_Context, *GetKaxGlobal_Context,
&EBML_INFO(KaxContentCompression));
const EbmlSemanticContext KaxContentCompAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentCompression_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentCompAlgo));
const EbmlSemanticContext KaxContentCompSettings_Context =
EbmlSemanticContext(0, NULL, &KaxContentCompression_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentCompSettings));
const EbmlSemanticContext KaxContentEncryption_Context =
EbmlSemanticContext(countof(KaxContentEncryption_ContextList),
KaxContentEncryption_ContextList,
&KaxContentEncoding_Context, *GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncryption));
const EbmlSemanticContext KaxContentEncAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncAlgo));
const EbmlSemanticContext KaxContentEncKeyID_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentEncKeyID));
const EbmlSemanticContext KaxContentSignature_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSignature));
const EbmlSemanticContext KaxContentSigAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSigKeyID));
const EbmlSemanticContext KaxContentSigHashAlgo_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSigKeyID));
const EbmlSemanticContext KaxContentSigKeyID_Context =
EbmlSemanticContext(0, NULL, &KaxContentEncryption_Context,
*GetKaxGlobal_Context,
&EBML_INFO(KaxContentSigKeyID));
const EbmlCallbacks
KaxContentEncodings::ClassInfos(KaxContentEncodings::Create,
KaxContentEncodings_TheId,
"ContentEncodings",
KaxContentEncodings_Context);
const EbmlCallbacks
KaxContentEncoding::ClassInfos(KaxContentEncoding::Create,
KaxContentEncoding_TheId,
"ContentEncoding",
KaxContentEncoding_Context);
const EbmlCallbacks
KaxContentEncodingOrder::ClassInfos(KaxContentEncodingOrder::Create,
KaxContentEncodingOrder_TheId,
"ContentEncodingOrder",
KaxContentEncodingOrder_Context);
const EbmlCallbacks
KaxContentEncodingScope::ClassInfos(KaxContentEncodingScope::Create,
KaxContentEncodingScope_TheId,
"ContentEncodingScope",
KaxContentEncodingScope_Context);
const EbmlCallbacks
KaxContentEncodingType::ClassInfos(KaxContentEncodingType::Create,
KaxContentEncodingType_TheId,
"ContentEncodingType",
KaxContentEncodingType_Context);
const EbmlCallbacks
KaxContentCompression::ClassInfos(KaxContentCompression::Create,
KaxContentCompression_TheId,
"ContentCompression",
KaxContentCompression_Context);
const EbmlCallbacks
KaxContentCompAlgo::ClassInfos(KaxContentCompAlgo::Create,
KaxContentCompAlgo_TheId,
"ContentCompAlgo",
KaxContentCompAlgo_Context);
const EbmlCallbacks
KaxContentCompSettings::ClassInfos(KaxContentCompSettings::Create,
KaxContentCompSettings_TheId,
"ContentCompSettings",
KaxContentCompSettings_Context);
const EbmlCallbacks
KaxContentEncryption::ClassInfos(KaxContentEncryption::Create,
KaxContentEncryption_TheId,
"ContentEncryption",
KaxContentEncryption_Context);
const EbmlCallbacks
KaxContentEncAlgo::ClassInfos(KaxContentEncAlgo::Create,
KaxContentEncAlgo_TheId,
"ContentEncAlgo",
KaxContentEncAlgo_Context);
const EbmlCallbacks
KaxContentEncKeyID::ClassInfos(KaxContentEncKeyID::Create,
KaxContentEncKeyID_TheId,
"ContentEncKeyID",
KaxContentEncKeyID_Context);
const EbmlCallbacks
KaxContentSignature::ClassInfos(KaxContentSignature::Create,
KaxContentSignature_TheId,
"ContentSignature",
KaxContentSignature_Context);
const EbmlCallbacks
KaxContentSigAlgo::ClassInfos(KaxContentSigAlgo::Create,
KaxContentSigAlgo_TheId,
"ContentSigAlgo",
KaxContentSigAlgo_Context);
const EbmlCallbacks
KaxContentSigHashAlgo::ClassInfos(KaxContentSigHashAlgo::Create,
KaxContentSigHashAlgo_TheId,
"ContentSigHashAlgo",
KaxContentSigHashAlgo_Context);
const EbmlCallbacks
KaxContentSigKeyID::ClassInfos(KaxContentSigKeyID::Create,
KaxContentSigKeyID_TheId,
"ContentSigKeyID",
KaxContentSigKeyID_Context);
KaxContentEncodings::KaxContentEncodings():
EbmlMaster(KaxContentEncodings_Context) {
}
KaxContentEncoding::KaxContentEncoding():
EbmlMaster(KaxContentEncoding_Context) {
}
KaxContentCompression::KaxContentCompression():
EbmlMaster(KaxContentCompression_Context) {
}
KaxContentEncryption::KaxContentEncryption():
EbmlMaster(KaxContentEncryption_Context) {
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,48 +1,48 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContexts.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "ebml/EbmlContexts.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
// for the moment
const EbmlSemanticContext & GetKaxGlobal_Context()
{
return GetEbmlGlobal_Context();
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxContexts.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "ebml/EbmlContexts.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
// for the moment
const EbmlSemanticContext & GetKaxGlobal_Context()
{
return GetEbmlGlobal_Context();
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,172 +1,172 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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: KaxCues.cpp 1265 2007-01-14 17:20:35Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include <cassert>
#include "matroska/KaxCues.h"
#include "matroska/KaxCuesData.h"
#include "matroska/KaxContexts.h"
#include "ebml/EbmlStream.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxCues_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxCuePoint)),
};
const EbmlSemanticContext KaxCues_Context = EbmlSemanticContext(countof(KaxCues_ContextList), KaxCues_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCues));
EbmlId KaxCues_TheId(0x1C53BB6B, 4);
const EbmlCallbacks KaxCues::ClassInfos(KaxCues::Create, KaxCues_TheId, "Cues", KaxCues_Context);
KaxCues::KaxCues()
:EbmlMaster(KaxCues_Context)
{}
KaxCues::~KaxCues()
{
assert(myTempReferences.size() == 0); // otherwise that means you have added references and forgot to set the position
}
bool KaxCues::AddBlockGroup(const KaxBlockGroup & BlockRef)
{
// Do not add the element if it's already present.
std::vector<const KaxBlockBlob *>::iterator ListIdx;
KaxBlockBlob &BlockReference = *(new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE));
BlockReference.SetBlockGroup(*const_cast<KaxBlockGroup*>(&BlockRef));
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++)
if (*ListIdx == &BlockReference)
return true;
myTempReferences.push_back(&BlockReference);
return true;
}
bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference)
{
// Do not add the element if it's already present.
std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++)
if (*ListIdx == &BlockReference)
return true;
myTempReferences.push_back(&BlockReference);
return true;
}
void KaxCues::PositionSet(const KaxBlockBlob & BlockReference)
{
// look for the element in the temporary references
std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) {
if (*ListIdx == &BlockReference) {
// found, now add the element to the entry list
KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this);
NewPoint.PositionSet(BlockReference, GlobalTimecodeScale());
myTempReferences.erase(ListIdx);
break;
}
}
}
void KaxCues::PositionSet(const KaxBlockGroup & BlockRef)
{
// look for the element in the temporary references
std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) {
const KaxInternalBlock &refTmp = **ListIdx;
if (refTmp.GlobalTimecode() == BlockRef.GlobalTimecode() &&
refTmp.TrackNum() == BlockRef.TrackNumber()) {
// found, now add the element to the entry list
KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this);
NewPoint.PositionSet(**ListIdx, GlobalTimecodeScale());
myTempReferences.erase(ListIdx);
break;
}
}
}
/*!
\warning Assume that the list has been sorted (Sort())
*/
const KaxCuePoint * KaxCues::GetTimecodePoint(uint64 aTimecode) const
{
uint64 TimecodeToLocate = aTimecode / GlobalTimecodeScale();
const KaxCuePoint * aPointPrev = NULL;
uint64 aPrevTime = 0;
const KaxCuePoint * aPointNext = NULL;
uint64 aNextTime = EBML_PRETTYLONGINT(0xFFFFFFFFFFFF);
for (unsigned int i=0; i<ListSize(); i++)
{
if (EbmlId(*(*this)[i]) == EBML_ID(KaxCuePoint)) {
const KaxCuePoint *tmp = static_cast<const KaxCuePoint *>((*this)[i]);
// check the tile
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(tmp->FindFirstElt(EBML_INFO(KaxCueTime)));
if (aTime != NULL)
{
uint64 _Time = uint64(*aTime);
if (_Time > aPrevTime && _Time < TimecodeToLocate) {
aPrevTime = _Time;
aPointPrev = tmp;
}
if (_Time < aNextTime && _Time > TimecodeToLocate) {
aNextTime= _Time;
aPointNext = tmp;
}
}
}
}
return aPointPrev;
}
uint64 KaxCues::GetTimecodePosition(uint64 aTimecode) const
{
const KaxCuePoint * aPoint = GetTimecodePoint(aTimecode);
if (aPoint == NULL)
return 0;
const KaxCueTrackPositions * aTrack = aPoint->GetSeekPosition();
if (aTrack == NULL)
return 0;
return aTrack->ClusterPosition();
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** 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: KaxCues.cpp 1265 2007-01-14 17:20:35Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include <cassert>
#include "matroska/KaxCues.h"
#include "matroska/KaxCuesData.h"
#include "matroska/KaxContexts.h"
#include "ebml/EbmlStream.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxCues_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxCuePoint)),
};
const EbmlSemanticContext KaxCues_Context = EbmlSemanticContext(countof(KaxCues_ContextList), KaxCues_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCues));
EbmlId KaxCues_TheId(0x1C53BB6B, 4);
const EbmlCallbacks KaxCues::ClassInfos(KaxCues::Create, KaxCues_TheId, "Cues", KaxCues_Context);
KaxCues::KaxCues()
:EbmlMaster(KaxCues_Context)
{}
KaxCues::~KaxCues()
{
assert(myTempReferences.size() == 0); // otherwise that means you have added references and forgot to set the position
}
bool KaxCues::AddBlockGroup(const KaxBlockGroup & BlockRef)
{
// Do not add the element if it's already present.
std::vector<const KaxBlockBlob *>::iterator ListIdx;
KaxBlockBlob &BlockReference = *(new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE));
BlockReference.SetBlockGroup(*const_cast<KaxBlockGroup*>(&BlockRef));
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++)
if (*ListIdx == &BlockReference)
return true;
myTempReferences.push_back(&BlockReference);
return true;
}
bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference)
{
// Do not add the element if it's already present.
std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++)
if (*ListIdx == &BlockReference)
return true;
myTempReferences.push_back(&BlockReference);
return true;
}
void KaxCues::PositionSet(const KaxBlockBlob & BlockReference)
{
// look for the element in the temporary references
std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) {
if (*ListIdx == &BlockReference) {
// found, now add the element to the entry list
KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this);
NewPoint.PositionSet(BlockReference, GlobalTimecodeScale());
myTempReferences.erase(ListIdx);
break;
}
}
}
void KaxCues::PositionSet(const KaxBlockGroup & BlockRef)
{
// look for the element in the temporary references
std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) {
const KaxInternalBlock &refTmp = **ListIdx;
if (refTmp.GlobalTimecode() == BlockRef.GlobalTimecode() &&
refTmp.TrackNum() == BlockRef.TrackNumber()) {
// found, now add the element to the entry list
KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this);
NewPoint.PositionSet(**ListIdx, GlobalTimecodeScale());
myTempReferences.erase(ListIdx);
break;
}
}
}
/*!
\warning Assume that the list has been sorted (Sort())
*/
const KaxCuePoint * KaxCues::GetTimecodePoint(uint64 aTimecode) const
{
uint64 TimecodeToLocate = aTimecode / GlobalTimecodeScale();
const KaxCuePoint * aPointPrev = NULL;
uint64 aPrevTime = 0;
const KaxCuePoint * aPointNext = NULL;
uint64 aNextTime = EBML_PRETTYLONGINT(0xFFFFFFFFFFFF);
for (unsigned int i=0; i<ListSize(); i++)
{
if (EbmlId(*(*this)[i]) == EBML_ID(KaxCuePoint)) {
const KaxCuePoint *tmp = static_cast<const KaxCuePoint *>((*this)[i]);
// check the tile
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(tmp->FindFirstElt(EBML_INFO(KaxCueTime)));
if (aTime != NULL)
{
uint64 _Time = uint64(*aTime);
if (_Time > aPrevTime && _Time < TimecodeToLocate) {
aPrevTime = _Time;
aPointPrev = tmp;
}
if (_Time < aNextTime && _Time > TimecodeToLocate) {
aNextTime= _Time;
aPointNext = tmp;
}
}
}
}
return aPointPrev;
}
uint64 KaxCues::GetTimecodePosition(uint64 aTimecode) const
{
const KaxCuePoint * aPoint = GetTimecodePoint(aTimecode);
if (aPoint == NULL)
return 0;
const KaxCueTrackPositions * aTrack = aPoint->GetSeekPosition();
if (aTrack == NULL)
return 0;
return aTrack->ClusterPosition();
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,329 +1,329 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 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.cpp 1265 2007-01-14 17:20:35Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include <cassert>
#include "matroska/KaxCuesData.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxBlock.h"
#include "matroska/KaxBlockData.h"
#include "matroska/KaxCluster.h"
#include "matroska/KaxSegment.h"
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxCuePoint_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(KaxCueTime)),
EbmlSemantic(true, false, EBML_INFO(KaxCueTrackPositions)),
};
#if MATROSKA_VERSION == 1
EbmlSemantic KaxCueTrackPositions_ContextList[3] =
#else // MATROSKA_VERSION
EbmlSemantic KaxCueTrackPositions_ContextList[5] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true, true, EBML_INFO(KaxCueTrack)),
EbmlSemantic(true, true, EBML_INFO(KaxCueClusterPosition)),
EbmlSemantic(false, true, EBML_INFO(KaxCueBlockNumber)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxCueCodecState)),
EbmlSemantic(false, false, EBML_INFO(KaxCueReference)),
#endif // MATROSKA_VERSION
};
#if MATROSKA_VERSION >= 2
EbmlSemantic KaxCueReference_ContextList[4] =
{
EbmlSemantic(true, true, EBML_INFO(KaxCueRefTime)),
EbmlSemantic(true, true, EBML_INFO(KaxCueRefCluster)),
EbmlSemantic(false, true, EBML_INFO(KaxCueRefNumber)),
EbmlSemantic(false, true, EBML_INFO(KaxCueRefCodecState)),
};
#endif // MATROSKA_VERSION
EbmlId KaxCuePoint_TheId (0xBB, 1);
EbmlId KaxCueTime_TheId (0xB3, 1);
EbmlId KaxCueTrackPositions_TheId (0xB7, 1);
EbmlId KaxCueTrack_TheId (0xF7, 1);
EbmlId KaxCueClusterPosition_TheId(0xF1, 1);
EbmlId KaxCueBlockNumber_TheId (0x5378, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxCueCodecState_TheId (0xEA, 1);
EbmlId KaxCueReference_TheId (0xDB, 1);
EbmlId KaxCueRefTime_TheId (0x96, 1);
EbmlId KaxCueRefCluster_TheId (0x97, 1);
EbmlId KaxCueRefNumber_TheId (0x535F, 2);
EbmlId KaxCueRefCodecState_TheId (0xEB, 1);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxCuePoint_Context = EbmlSemanticContext(countof(KaxCuePoint_ContextList), KaxCuePoint_ContextList, &KaxCues_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCuePoint));
const EbmlSemanticContext KaxCueTime_Context = EbmlSemanticContext(0, NULL, &KaxCuePoint_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTime));
const EbmlSemanticContext KaxCueTrackPositions_Context = EbmlSemanticContext(countof(KaxCueTrackPositions_ContextList), KaxCueTrackPositions_ContextList, &KaxCuePoint_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTrackPositions));
const EbmlSemanticContext KaxCueTrack_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTrack));
const EbmlSemanticContext KaxCueClusterPosition_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueClusterPosition));
const EbmlSemanticContext KaxCueBlockNumber_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueBlockNumber));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxCueCodecState_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueCodecState));
const EbmlSemanticContext KaxCueReference_Context = EbmlSemanticContext(countof(KaxCueReference_ContextList), KaxCueReference_ContextList, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueReference));
const EbmlSemanticContext KaxCueRefTime_Context = EbmlSemanticContext(0, NULL, &KaxCueReference_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefTime));
const EbmlSemanticContext KaxCueRefCluster_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefCluster));
const EbmlSemanticContext KaxCueRefNumber_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefNumber));
const EbmlSemanticContext KaxCueRefCodecState_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefCodecState));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxCuePoint::ClassInfos(KaxCuePoint::Create, KaxCuePoint_TheId, "CuePoint", KaxCuePoint_Context);
const EbmlCallbacks KaxCueTime::ClassInfos(KaxCueTime::Create, KaxCueTime_TheId, "CueTime", KaxCueTime_Context);
const EbmlCallbacks KaxCueTrackPositions::ClassInfos(KaxCueTrackPositions::Create, KaxCueTrackPositions_TheId, "CueTrackPositions", KaxCueTrackPositions_Context);
const EbmlCallbacks KaxCueTrack::ClassInfos(KaxCueTrack::Create, KaxCueTrack_TheId, "CueTrack", KaxCueTrack_Context);
const EbmlCallbacks KaxCueClusterPosition::ClassInfos(KaxCueClusterPosition::Create, KaxCueClusterPosition_TheId, "CueClusterPosition", KaxCueClusterPosition_Context);
const EbmlCallbacks KaxCueBlockNumber::ClassInfos(KaxCueBlockNumber::Create, KaxCueBlockNumber_TheId, "CueBlockNumber", KaxCueBlockNumber_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxCueCodecState::ClassInfos(KaxCueCodecState::Create, KaxCueCodecState_TheId, "CueCodecState", KaxCueCodecState_Context);
const EbmlCallbacks KaxCueReference::ClassInfos(KaxCueReference::Create, KaxCueReference_TheId, "CueReference", KaxCueReference_Context);
const EbmlCallbacks KaxCueRefTime::ClassInfos(KaxCueRefTime::Create, KaxCueRefTime_TheId, "CueRefTime", KaxCueRefTime_Context);
const EbmlCallbacks KaxCueRefCluster::ClassInfos(KaxCueRefCluster::Create, KaxCueRefCluster_TheId, "CueRefCluster", KaxCueRefCluster_Context);
const EbmlCallbacks KaxCueRefNumber::ClassInfos(KaxCueRefNumber::Create, KaxCueRefNumber_TheId, "CueRefNumber", KaxCueRefNumber_Context);
const EbmlCallbacks KaxCueRefCodecState::ClassInfos(KaxCueRefCodecState::Create, KaxCueRefCodecState_TheId, "CueRefCodecState", KaxCueRefCodecState_Context);
#endif // MATROSKA_VERSION
KaxCuePoint::KaxCuePoint()
:EbmlMaster(KaxCuePoint_Context)
{}
KaxCueTrackPositions::KaxCueTrackPositions()
:EbmlMaster(KaxCueTrackPositions_Context)
{}
#if MATROSKA_VERSION >= 2
KaxCueReference::KaxCueReference()
:EbmlMaster(KaxCueReference_Context)
{}
#endif // MATROSKA_VERSION
/*!
\todo handle codec state checking
\todo remove duplicate references (reference to 2 frames that each reference the same frame)
*/
void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale)
{
// fill me
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber();
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
#if MATROSKA_VERSION >= 2
// handle reference use
if (BlockReference.ReferenceCount() != 0)
{
unsigned int i;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
}
}
KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState)));
if (CodecState != NULL) {
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
}
#endif // MATROSKA_VERSION
SetValueIsSet();
}
void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale)
{
const KaxInternalBlock &BlockReference = BlobReference;
// fill me
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum();
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
#if 0 // MATROSKA_VERSION >= 2
// handle reference use
if (BlockReference.ReferenceCount() != 0)
{
unsigned int i;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
}
}
#endif // MATROSKA_VERSION
#if MATROSKA_VERSION >= 2
if (!BlobReference.IsSimpleBlock()) {
const KaxBlockGroup &BlockGroup = BlobReference;
const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState)));
if (CodecState != NULL) {
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
}
}
#endif // MATROSKA_VERSION
SetValueIsSet();
}
#if MATROSKA_VERSION >= 2
/*!
\todo handle codec state checking
*/
void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale)
{
const KaxInternalBlock & theBlock = BlockReference;
KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale;
KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this);
*static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition();
#ifdef OLD
// handle recursive reference use
if (BlockReference.ReferenceCount() != 0)
{
unsigned int i;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
AddReference(BlockReference.Reference(i).RefBlock());
}
}
#endif /* OLD */
}
#endif
bool KaxCuePoint::operator<(const EbmlElement & EltB) const
{
assert(EbmlId(*this) == KaxCuePoint_TheId);
assert(EbmlId(EltB) == KaxCuePoint_TheId);
const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(&EltB);
// compare timecode
const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime)));
if (TimeCodeA == NULL)
return false;
const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime)));
if (TimeCodeB == NULL)
return false;
if (*TimeCodeA < *TimeCodeB)
return true;
if (*TimeCodeB < *TimeCodeA)
return false;
// compare tracks (timecodes are equal)
const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack)));
if (TrackA == NULL)
return false;
const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack)));
if (TrackB == NULL)
return false;
if (*TrackA < *TrackB)
return true;
if (*TrackB < *TrackA)
return false;
return false;
}
bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const
{
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime)));
if (aTime == NULL)
return false;
aTimecode = uint64(*aTime) * GlobalTimecodeScale;
return true;
}
/*!
\brief return the position of the Cluster to load
*/
const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const
{
const KaxCueTrackPositions * result = NULL;
uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF);
// find the position of the "earlier" Cluster
const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions)));
while (aPoss != NULL)
{
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos != NULL && uint64(*aPos) < aPosition) {
aPosition = uint64(*aPos);
result = aPoss;
}
aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss));
}
return result;
}
uint64 KaxCueTrackPositions::ClusterPosition() const
{
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos == NULL)
return 0;
return uint64(*aPos);
}
uint16 KaxCueTrackPositions::TrackNumber() const
{
const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack)));
if (aTrack == NULL)
return 0;
return uint16(*aTrack);
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** 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.cpp 1265 2007-01-14 17:20:35Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include <cassert>
#include "matroska/KaxCuesData.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxBlock.h"
#include "matroska/KaxBlockData.h"
#include "matroska/KaxCluster.h"
#include "matroska/KaxSegment.h"
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxCuePoint_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(KaxCueTime)),
EbmlSemantic(true, false, EBML_INFO(KaxCueTrackPositions)),
};
#if MATROSKA_VERSION == 1
EbmlSemantic KaxCueTrackPositions_ContextList[3] =
#else // MATROSKA_VERSION
EbmlSemantic KaxCueTrackPositions_ContextList[5] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true, true, EBML_INFO(KaxCueTrack)),
EbmlSemantic(true, true, EBML_INFO(KaxCueClusterPosition)),
EbmlSemantic(false, true, EBML_INFO(KaxCueBlockNumber)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxCueCodecState)),
EbmlSemantic(false, false, EBML_INFO(KaxCueReference)),
#endif // MATROSKA_VERSION
};
#if MATROSKA_VERSION >= 2
EbmlSemantic KaxCueReference_ContextList[4] =
{
EbmlSemantic(true, true, EBML_INFO(KaxCueRefTime)),
EbmlSemantic(true, true, EBML_INFO(KaxCueRefCluster)),
EbmlSemantic(false, true, EBML_INFO(KaxCueRefNumber)),
EbmlSemantic(false, true, EBML_INFO(KaxCueRefCodecState)),
};
#endif // MATROSKA_VERSION
EbmlId KaxCuePoint_TheId (0xBB, 1);
EbmlId KaxCueTime_TheId (0xB3, 1);
EbmlId KaxCueTrackPositions_TheId (0xB7, 1);
EbmlId KaxCueTrack_TheId (0xF7, 1);
EbmlId KaxCueClusterPosition_TheId(0xF1, 1);
EbmlId KaxCueBlockNumber_TheId (0x5378, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxCueCodecState_TheId (0xEA, 1);
EbmlId KaxCueReference_TheId (0xDB, 1);
EbmlId KaxCueRefTime_TheId (0x96, 1);
EbmlId KaxCueRefCluster_TheId (0x97, 1);
EbmlId KaxCueRefNumber_TheId (0x535F, 2);
EbmlId KaxCueRefCodecState_TheId (0xEB, 1);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxCuePoint_Context = EbmlSemanticContext(countof(KaxCuePoint_ContextList), KaxCuePoint_ContextList, &KaxCues_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCuePoint));
const EbmlSemanticContext KaxCueTime_Context = EbmlSemanticContext(0, NULL, &KaxCuePoint_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTime));
const EbmlSemanticContext KaxCueTrackPositions_Context = EbmlSemanticContext(countof(KaxCueTrackPositions_ContextList), KaxCueTrackPositions_ContextList, &KaxCuePoint_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTrackPositions));
const EbmlSemanticContext KaxCueTrack_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueTrack));
const EbmlSemanticContext KaxCueClusterPosition_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueClusterPosition));
const EbmlSemanticContext KaxCueBlockNumber_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueBlockNumber));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxCueCodecState_Context = EbmlSemanticContext(0, NULL, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueCodecState));
const EbmlSemanticContext KaxCueReference_Context = EbmlSemanticContext(countof(KaxCueReference_ContextList), KaxCueReference_ContextList, &KaxCueTrackPositions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueReference));
const EbmlSemanticContext KaxCueRefTime_Context = EbmlSemanticContext(0, NULL, &KaxCueReference_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefTime));
const EbmlSemanticContext KaxCueRefCluster_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefCluster));
const EbmlSemanticContext KaxCueRefNumber_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefNumber));
const EbmlSemanticContext KaxCueRefCodecState_Context = EbmlSemanticContext(0, NULL, &KaxCueRefTime_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCueRefCodecState));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxCuePoint::ClassInfos(KaxCuePoint::Create, KaxCuePoint_TheId, "CuePoint", KaxCuePoint_Context);
const EbmlCallbacks KaxCueTime::ClassInfos(KaxCueTime::Create, KaxCueTime_TheId, "CueTime", KaxCueTime_Context);
const EbmlCallbacks KaxCueTrackPositions::ClassInfos(KaxCueTrackPositions::Create, KaxCueTrackPositions_TheId, "CueTrackPositions", KaxCueTrackPositions_Context);
const EbmlCallbacks KaxCueTrack::ClassInfos(KaxCueTrack::Create, KaxCueTrack_TheId, "CueTrack", KaxCueTrack_Context);
const EbmlCallbacks KaxCueClusterPosition::ClassInfos(KaxCueClusterPosition::Create, KaxCueClusterPosition_TheId, "CueClusterPosition", KaxCueClusterPosition_Context);
const EbmlCallbacks KaxCueBlockNumber::ClassInfos(KaxCueBlockNumber::Create, KaxCueBlockNumber_TheId, "CueBlockNumber", KaxCueBlockNumber_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxCueCodecState::ClassInfos(KaxCueCodecState::Create, KaxCueCodecState_TheId, "CueCodecState", KaxCueCodecState_Context);
const EbmlCallbacks KaxCueReference::ClassInfos(KaxCueReference::Create, KaxCueReference_TheId, "CueReference", KaxCueReference_Context);
const EbmlCallbacks KaxCueRefTime::ClassInfos(KaxCueRefTime::Create, KaxCueRefTime_TheId, "CueRefTime", KaxCueRefTime_Context);
const EbmlCallbacks KaxCueRefCluster::ClassInfos(KaxCueRefCluster::Create, KaxCueRefCluster_TheId, "CueRefCluster", KaxCueRefCluster_Context);
const EbmlCallbacks KaxCueRefNumber::ClassInfos(KaxCueRefNumber::Create, KaxCueRefNumber_TheId, "CueRefNumber", KaxCueRefNumber_Context);
const EbmlCallbacks KaxCueRefCodecState::ClassInfos(KaxCueRefCodecState::Create, KaxCueRefCodecState_TheId, "CueRefCodecState", KaxCueRefCodecState_Context);
#endif // MATROSKA_VERSION
KaxCuePoint::KaxCuePoint()
:EbmlMaster(KaxCuePoint_Context)
{}
KaxCueTrackPositions::KaxCueTrackPositions()
:EbmlMaster(KaxCueTrackPositions_Context)
{}
#if MATROSKA_VERSION >= 2
KaxCueReference::KaxCueReference()
:EbmlMaster(KaxCueReference_Context)
{}
#endif // MATROSKA_VERSION
/*!
\todo handle codec state checking
\todo remove duplicate references (reference to 2 frames that each reference the same frame)
*/
void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale)
{
// fill me
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber();
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
#if MATROSKA_VERSION >= 2
// handle reference use
if (BlockReference.ReferenceCount() != 0)
{
unsigned int i;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
}
}
KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState)));
if (CodecState != NULL) {
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
}
#endif // MATROSKA_VERSION
SetValueIsSet();
}
void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale)
{
const KaxInternalBlock &BlockReference = BlobReference;
// fill me
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum();
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
#if 0 // MATROSKA_VERSION >= 2
// handle reference use
if (BlockReference.ReferenceCount() != 0)
{
unsigned int i;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
}
}
#endif // MATROSKA_VERSION
#if MATROSKA_VERSION >= 2
if (!BlobReference.IsSimpleBlock()) {
const KaxBlockGroup &BlockGroup = BlobReference;
const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState)));
if (CodecState != NULL) {
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
}
}
#endif // MATROSKA_VERSION
SetValueIsSet();
}
#if MATROSKA_VERSION >= 2
/*!
\todo handle codec state checking
*/
void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale)
{
const KaxInternalBlock & theBlock = BlockReference;
KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale;
KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this);
*static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition();
#ifdef OLD
// handle recursive reference use
if (BlockReference.ReferenceCount() != 0)
{
unsigned int i;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
AddReference(BlockReference.Reference(i).RefBlock());
}
}
#endif /* OLD */
}
#endif
bool KaxCuePoint::operator<(const EbmlElement & EltB) const
{
assert(EbmlId(*this) == KaxCuePoint_TheId);
assert(EbmlId(EltB) == KaxCuePoint_TheId);
const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(&EltB);
// compare timecode
const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime)));
if (TimeCodeA == NULL)
return false;
const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime)));
if (TimeCodeB == NULL)
return false;
if (*TimeCodeA < *TimeCodeB)
return true;
if (*TimeCodeB < *TimeCodeA)
return false;
// compare tracks (timecodes are equal)
const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack)));
if (TrackA == NULL)
return false;
const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack)));
if (TrackB == NULL)
return false;
if (*TrackA < *TrackB)
return true;
if (*TrackB < *TrackA)
return false;
return false;
}
bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const
{
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime)));
if (aTime == NULL)
return false;
aTimecode = uint64(*aTime) * GlobalTimecodeScale;
return true;
}
/*!
\brief return the position of the Cluster to load
*/
const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const
{
const KaxCueTrackPositions * result = NULL;
uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF);
// find the position of the "earlier" Cluster
const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions)));
while (aPoss != NULL)
{
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos != NULL && uint64(*aPos) < aPosition) {
aPosition = uint64(*aPos);
result = aPoss;
}
aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss));
}
return result;
}
uint64 KaxCueTrackPositions::ClusterPosition() const
{
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos == NULL)
return 0;
return uint64(*aPos);
}
uint16 KaxCueTrackPositions::TrackNumber() const
{
const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack)));
if (aTrack == NULL)
return 0;
return uint16(*aTrack);
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,77 +1,77 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfo.cpp 1078 2005-03-03 13:13:04Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxInfo.h"
#include "matroska/KaxInfoData.h"
#include "matroska/KaxContexts.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxInfo_ContextList[14] =
{
EbmlSemantic(false, true, EBML_INFO(KaxSegmentUID)),
EbmlSemantic(false, true, EBML_INFO(KaxSegmentFilename)),
EbmlSemantic(false, true, EBML_INFO(KaxPrevUID)),
EbmlSemantic(false, true, EBML_INFO(KaxPrevFilename)),
EbmlSemantic(false, true, EBML_INFO(KaxNextUID)),
EbmlSemantic(false, true, EBML_INFO(KaxNextFilename)),
EbmlSemantic(false, false, EBML_INFO(KaxSegmentFamily)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterTranslate)),
EbmlSemantic(true, true, EBML_INFO(KaxTimecodeScale)),
EbmlSemantic(false, true, EBML_INFO(KaxDuration)),
EbmlSemantic(false, true, EBML_INFO(KaxDateUTC)),
EbmlSemantic(false, true, EBML_INFO(KaxTitle)),
EbmlSemantic(true, true, EBML_INFO(KaxMuxingApp)),
EbmlSemantic(true, true, EBML_INFO(KaxWritingApp)),
};
const EbmlSemanticContext KaxInfo_Context = EbmlSemanticContext(countof(KaxInfo_ContextList), KaxInfo_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxInfo));
const EbmlSemanticContext KaxMuxingApp_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMuxingApp));
const EbmlSemanticContext KaxWritingApp_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxWritingApp));
EbmlId KaxInfo_TheId (0x1549A966, 4);
EbmlId KaxMuxingApp_TheId (0x4D80, 2);
EbmlId KaxWritingApp_TheId(0x5741, 2);
const EbmlCallbacks KaxInfo::ClassInfos(KaxInfo::Create, KaxInfo_TheId, "Info", KaxInfo_Context);
const EbmlCallbacks KaxMuxingApp::ClassInfos(KaxMuxingApp::Create, KaxMuxingApp_TheId, "MuxingApp", KaxMuxingApp_Context);
const EbmlCallbacks KaxWritingApp::ClassInfos(KaxWritingApp::Create, KaxWritingApp_TheId, "WritingApp", KaxWritingApp_Context);
KaxInfo::KaxInfo()
:EbmlMaster(KaxInfo_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfo.cpp 1078 2005-03-03 13:13:04Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxInfo.h"
#include "matroska/KaxInfoData.h"
#include "matroska/KaxContexts.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxInfo_ContextList[14] =
{
EbmlSemantic(false, true, EBML_INFO(KaxSegmentUID)),
EbmlSemantic(false, true, EBML_INFO(KaxSegmentFilename)),
EbmlSemantic(false, true, EBML_INFO(KaxPrevUID)),
EbmlSemantic(false, true, EBML_INFO(KaxPrevFilename)),
EbmlSemantic(false, true, EBML_INFO(KaxNextUID)),
EbmlSemantic(false, true, EBML_INFO(KaxNextFilename)),
EbmlSemantic(false, false, EBML_INFO(KaxSegmentFamily)),
EbmlSemantic(false, false, EBML_INFO(KaxChapterTranslate)),
EbmlSemantic(true, true, EBML_INFO(KaxTimecodeScale)),
EbmlSemantic(false, true, EBML_INFO(KaxDuration)),
EbmlSemantic(false, true, EBML_INFO(KaxDateUTC)),
EbmlSemantic(false, true, EBML_INFO(KaxTitle)),
EbmlSemantic(true, true, EBML_INFO(KaxMuxingApp)),
EbmlSemantic(true, true, EBML_INFO(KaxWritingApp)),
};
const EbmlSemanticContext KaxInfo_Context = EbmlSemanticContext(countof(KaxInfo_ContextList), KaxInfo_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxInfo));
const EbmlSemanticContext KaxMuxingApp_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMuxingApp));
const EbmlSemanticContext KaxWritingApp_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxWritingApp));
EbmlId KaxInfo_TheId (0x1549A966, 4);
EbmlId KaxMuxingApp_TheId (0x4D80, 2);
EbmlId KaxWritingApp_TheId(0x5741, 2);
const EbmlCallbacks KaxInfo::ClassInfos(KaxInfo::Create, KaxInfo_TheId, "Info", KaxInfo_Context);
const EbmlCallbacks KaxMuxingApp::ClassInfos(KaxMuxingApp::Create, KaxMuxingApp_TheId, "MuxingApp", KaxMuxingApp_Context);
const EbmlCallbacks KaxWritingApp::ClassInfos(KaxWritingApp::Create, KaxWritingApp_TheId, "WritingApp", KaxWritingApp_Context);
KaxInfo::KaxInfo()
:EbmlMaster(KaxInfo_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,101 +1,101 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfoData.cpp 1078 2005-03-03 13:13:04Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
*/
#include "matroska/KaxInfoData.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxChapterTranslate_ContextList[3] =
{
EbmlSemantic(false, false, EBML_INFO(KaxChapterTranslateEditionUID)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateCodec)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateID)),
};
EbmlId KaxSegmentUID_TheId (0x73A4, 2);
EbmlId KaxSegmentFilename_TheId (0x7384, 2);
EbmlId KaxPrevUID_TheId (0x3CB923, 3);
EbmlId KaxPrevFilename_TheId (0x3C83AB, 3);
EbmlId KaxNextUID_TheId (0x3EB923, 3);
EbmlId KaxNextFilename_TheId (0x3E83BB, 3);
EbmlId KaxSegmentFamily_TheId (0x4444, 2);
EbmlId KaxChapterTranslate_TheId(0x6924, 2);
EbmlId KaxChapterTranslateEditionUID_TheId(0x69FC, 2);
EbmlId KaxChapterTranslateCodec_TheId(0x69BF, 2);
EbmlId KaxChapterTranslateID_TheId(0x69A5, 2);
EbmlId KaxTimecodeScale_TheId (0x2AD7B1, 3);
EbmlId KaxDuration_TheId (0x4489, 2);
EbmlId KaxDateUTC_TheId (0x4461, 2);
EbmlId KaxTitle_TheId (0x7BA9, 2);
const EbmlSemanticContext KaxSegmentUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentUID));
const EbmlSemanticContext KaxSegmentFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentFilename));
const EbmlSemanticContext KaxPrevUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxPrevUID));
const EbmlSemanticContext KaxPrevFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxPrevFilename));
const EbmlSemanticContext KaxNextUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxNextUID));
const EbmlSemanticContext KaxNextFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxNextFilename));
const EbmlSemanticContext KaxSegmentFamily_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentFamily));
const EbmlSemanticContext KaxChapterTranslate_Context = EbmlSemanticContext(countof(KaxChapterTranslate_ContextList), KaxChapterTranslate_ContextList, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslate));
const EbmlSemanticContext KaxChapterTranslateEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateEditionUID));
const EbmlSemanticContext KaxChapterTranslateCodec_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateCodec));
const EbmlSemanticContext KaxChapterTranslateID_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateID));
const EbmlSemanticContext KaxTimecodeScale_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTimecodeScale));
const EbmlSemanticContext KaxDuration_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxDuration));
const EbmlSemanticContext KaxDateUTC_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxDateUTC));
const EbmlSemanticContext KaxTitle_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTitle));
const EbmlCallbacks KaxSegmentUID::ClassInfos(KaxSegmentUID::Create, KaxSegmentUID_TheId, "SegmentUID", KaxSegmentUID_Context);
const EbmlCallbacks KaxSegmentFilename::ClassInfos(KaxSegmentFilename::Create, KaxSegmentFilename_TheId, "SegmentFilename", KaxSegmentFilename_Context);
const EbmlCallbacks KaxPrevUID::ClassInfos(KaxPrevUID::Create, KaxPrevUID_TheId, "PrevUID", KaxPrevUID_Context);
const EbmlCallbacks KaxPrevFilename::ClassInfos(KaxPrevFilename::Create, KaxPrevFilename_TheId, "PrevFilename", KaxPrevFilename_Context);
const EbmlCallbacks KaxNextUID::ClassInfos(KaxNextUID::Create, KaxNextUID_TheId, "NextUID", KaxNextUID_Context);
const EbmlCallbacks KaxNextFilename::ClassInfos(KaxNextFilename::Create, KaxNextFilename_TheId, "NextFilename", KaxNextFilename_Context);
const EbmlCallbacks KaxSegmentFamily::ClassInfos(KaxSegmentFamily::Create, KaxSegmentFamily_TheId, "SegmentFamily", KaxSegmentFamily_Context);
const EbmlCallbacks KaxChapterTranslate::ClassInfos(KaxChapterTranslate::Create, KaxChapterTranslate_TheId, "ChapterTranslate", KaxChapterTranslate_Context);
const EbmlCallbacks KaxChapterTranslateEditionUID::ClassInfos(KaxChapterTranslateEditionUID::Create, KaxChapterTranslateEditionUID_TheId, "ChapterTranslateEditionUID", KaxChapterTranslateEditionUID_Context);
const EbmlCallbacks KaxChapterTranslateCodec::ClassInfos(KaxChapterTranslateCodec::Create, KaxChapterTranslateCodec_TheId, "ChapterTranslateCodec", KaxChapterTranslateCodec_Context);
const EbmlCallbacks KaxChapterTranslateID::ClassInfos(KaxChapterTranslateID::Create, KaxChapterTranslateID_TheId, "ChapterTranslateID", KaxChapterTranslateID_Context);
const EbmlCallbacks KaxTimecodeScale::ClassInfos(KaxTimecodeScale::Create, KaxTimecodeScale_TheId, "TimecodeScale", KaxTimecodeScale_Context);
const EbmlCallbacks KaxDuration::ClassInfos(KaxDuration::Create, KaxDuration_TheId, "Duration", KaxDuration_Context);
const EbmlCallbacks KaxDateUTC::ClassInfos(KaxDateUTC::Create, KaxDateUTC_TheId, "DateUTC", KaxDateUTC_Context);
const EbmlCallbacks KaxTitle::ClassInfos(KaxTitle::Create, KaxTitle_TheId, "Title", KaxTitle_Context);
KaxChapterTranslate::KaxChapterTranslate()
:EbmlMaster(KaxChapterTranslate_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxInfoData.cpp 1078 2005-03-03 13:13:04Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
*/
#include "matroska/KaxInfoData.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxChapterTranslate_ContextList[3] =
{
EbmlSemantic(false, false, EBML_INFO(KaxChapterTranslateEditionUID)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateCodec)),
EbmlSemantic(true, true, EBML_INFO(KaxChapterTranslateID)),
};
EbmlId KaxSegmentUID_TheId (0x73A4, 2);
EbmlId KaxSegmentFilename_TheId (0x7384, 2);
EbmlId KaxPrevUID_TheId (0x3CB923, 3);
EbmlId KaxPrevFilename_TheId (0x3C83AB, 3);
EbmlId KaxNextUID_TheId (0x3EB923, 3);
EbmlId KaxNextFilename_TheId (0x3E83BB, 3);
EbmlId KaxSegmentFamily_TheId (0x4444, 2);
EbmlId KaxChapterTranslate_TheId(0x6924, 2);
EbmlId KaxChapterTranslateEditionUID_TheId(0x69FC, 2);
EbmlId KaxChapterTranslateCodec_TheId(0x69BF, 2);
EbmlId KaxChapterTranslateID_TheId(0x69A5, 2);
EbmlId KaxTimecodeScale_TheId (0x2AD7B1, 3);
EbmlId KaxDuration_TheId (0x4489, 2);
EbmlId KaxDateUTC_TheId (0x4461, 2);
EbmlId KaxTitle_TheId (0x7BA9, 2);
const EbmlSemanticContext KaxSegmentUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentUID));
const EbmlSemanticContext KaxSegmentFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentFilename));
const EbmlSemanticContext KaxPrevUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxPrevUID));
const EbmlSemanticContext KaxPrevFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxPrevFilename));
const EbmlSemanticContext KaxNextUID_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxNextUID));
const EbmlSemanticContext KaxNextFilename_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxNextFilename));
const EbmlSemanticContext KaxSegmentFamily_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSegmentFamily));
const EbmlSemanticContext KaxChapterTranslate_Context = EbmlSemanticContext(countof(KaxChapterTranslate_ContextList), KaxChapterTranslate_ContextList, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslate));
const EbmlSemanticContext KaxChapterTranslateEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateEditionUID));
const EbmlSemanticContext KaxChapterTranslateCodec_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateCodec));
const EbmlSemanticContext KaxChapterTranslateID_Context = EbmlSemanticContext(0, NULL, &KaxChapterTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxChapterTranslateID));
const EbmlSemanticContext KaxTimecodeScale_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTimecodeScale));
const EbmlSemanticContext KaxDuration_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxDuration));
const EbmlSemanticContext KaxDateUTC_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxDateUTC));
const EbmlSemanticContext KaxTitle_Context = EbmlSemanticContext(0, NULL, &KaxInfo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTitle));
const EbmlCallbacks KaxSegmentUID::ClassInfos(KaxSegmentUID::Create, KaxSegmentUID_TheId, "SegmentUID", KaxSegmentUID_Context);
const EbmlCallbacks KaxSegmentFilename::ClassInfos(KaxSegmentFilename::Create, KaxSegmentFilename_TheId, "SegmentFilename", KaxSegmentFilename_Context);
const EbmlCallbacks KaxPrevUID::ClassInfos(KaxPrevUID::Create, KaxPrevUID_TheId, "PrevUID", KaxPrevUID_Context);
const EbmlCallbacks KaxPrevFilename::ClassInfos(KaxPrevFilename::Create, KaxPrevFilename_TheId, "PrevFilename", KaxPrevFilename_Context);
const EbmlCallbacks KaxNextUID::ClassInfos(KaxNextUID::Create, KaxNextUID_TheId, "NextUID", KaxNextUID_Context);
const EbmlCallbacks KaxNextFilename::ClassInfos(KaxNextFilename::Create, KaxNextFilename_TheId, "NextFilename", KaxNextFilename_Context);
const EbmlCallbacks KaxSegmentFamily::ClassInfos(KaxSegmentFamily::Create, KaxSegmentFamily_TheId, "SegmentFamily", KaxSegmentFamily_Context);
const EbmlCallbacks KaxChapterTranslate::ClassInfos(KaxChapterTranslate::Create, KaxChapterTranslate_TheId, "ChapterTranslate", KaxChapterTranslate_Context);
const EbmlCallbacks KaxChapterTranslateEditionUID::ClassInfos(KaxChapterTranslateEditionUID::Create, KaxChapterTranslateEditionUID_TheId, "ChapterTranslateEditionUID", KaxChapterTranslateEditionUID_Context);
const EbmlCallbacks KaxChapterTranslateCodec::ClassInfos(KaxChapterTranslateCodec::Create, KaxChapterTranslateCodec_TheId, "ChapterTranslateCodec", KaxChapterTranslateCodec_Context);
const EbmlCallbacks KaxChapterTranslateID::ClassInfos(KaxChapterTranslateID::Create, KaxChapterTranslateID_TheId, "ChapterTranslateID", KaxChapterTranslateID_Context);
const EbmlCallbacks KaxTimecodeScale::ClassInfos(KaxTimecodeScale::Create, KaxTimecodeScale_TheId, "TimecodeScale", KaxTimecodeScale_Context);
const EbmlCallbacks KaxDuration::ClassInfos(KaxDuration::Create, KaxDuration_TheId, "Duration", KaxDuration_Context);
const EbmlCallbacks KaxDateUTC::ClassInfos(KaxDateUTC::Create, KaxDateUTC_TheId, "DateUTC", KaxDateUTC_Context);
const EbmlCallbacks KaxTitle::ClassInfos(KaxTitle::Create, KaxTitle_TheId, "Title", KaxTitle_Context);
KaxChapterTranslate::KaxChapterTranslate()
:EbmlMaster(KaxChapterTranslate_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,181 +1,181 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSeekHead.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxSeekHead.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxSegment.h"
#include "matroska/KaxCues.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxSeekHead_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxSeek)),
};
EbmlSemantic KaxSeek_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(KaxSeekID)),
EbmlSemantic(true, true, EBML_INFO(KaxSeekPosition)),
};
const EbmlSemanticContext KaxSeekHead_Context = EbmlSemanticContext(countof(KaxSeekHead_ContextList), KaxSeekHead_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekHead));
const EbmlSemanticContext KaxSeek_Context = EbmlSemanticContext(countof(KaxSeek_ContextList), KaxSeek_ContextList, &KaxSeekHead_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeek));
const EbmlSemanticContext KaxSeekID_Context = EbmlSemanticContext(0, NULL, &KaxSeek_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekID));
const EbmlSemanticContext KaxSeekPosition_Context = EbmlSemanticContext(0, NULL, &KaxSeek_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekPosition));
EbmlId KaxSeekHead_TheId (0x114D9B74, 4);
EbmlId KaxSeek_TheId (0x4DBB, 2);
EbmlId KaxSeekID_TheId (0x53AB, 2);
EbmlId KaxSeekPosition_TheId(0x53AC, 2);
const EbmlCallbacks KaxSeekHead::ClassInfos(KaxSeekHead::Create, KaxSeekHead_TheId, "SeekHeader", KaxSeekHead_Context);
const EbmlCallbacks KaxSeek::ClassInfos(KaxSeek::Create, KaxSeek_TheId, "SeekPoint", KaxSeek_Context);
const EbmlCallbacks KaxSeekID::ClassInfos(KaxSeekID::Create, KaxSeekID_TheId, "SeekID", KaxSeekID_Context);
const EbmlCallbacks KaxSeekPosition::ClassInfos(KaxSeekPosition::Create, KaxSeekPosition_TheId, "SeekPosition", KaxSeekPosition_Context);
KaxSeekHead::KaxSeekHead()
:EbmlMaster(KaxSeekHead_Context)
{}
KaxSeek::KaxSeek()
:EbmlMaster(KaxSeek_Context)
{}
/*!
\todo verify that the element is not already in the list
*/
void KaxSeekHead::IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment)
{
// create a new point
KaxSeek & aNewPoint = AddNewChild<KaxSeek>(*this);
// add the informations to this element
KaxSeekPosition & aNewPos = GetChild<KaxSeekPosition>(aNewPoint);
*static_cast<EbmlUInteger *>(&aNewPos) = ParentSegment.GetRelativePosition(aElt);
KaxSeekID & aNewID = GetChild<KaxSeekID>(aNewPoint);
binary ID[4];
for (int i=EBML_ID_LENGTH(EbmlId(aElt)); i>0; i--) {
ID[4-i] = (EBML_ID_VALUE(EbmlId(aElt)) >> 8*(i-1)) & 0xFF;
}
aNewID.CopyBuffer(ID, EBML_ID_LENGTH(EbmlId(aElt)));
}
KaxSeek * KaxSeekHead::FindFirstOf(const EbmlCallbacks & Callbacks) const
{
// parse all the Entries and find the first to match the type
KaxSeek * aElt = static_cast<KaxSeek *>(FindFirstElt(EBML_INFO(KaxSeek)));
while (aElt != NULL)
{
KaxSeekID * aId = NULL;
for (unsigned int i = 0; i<aElt->ListSize(); i++) {
if (EbmlId(*(*aElt)[i]) == EBML_ID(KaxSeekID)) {
aId = static_cast<KaxSeekID*>((*aElt)[i]);
EbmlId aEbmlId(aId->GetBuffer(), aId->GetSize());
if (aEbmlId == Callbacks.GlobalId)
{
return aElt;
}
break;
}
}
aElt = static_cast<KaxSeek *>(FindNextElt(*aElt));
}
return NULL;
}
KaxSeek * KaxSeekHead::FindNextOf(const KaxSeek &aPrev) const
{
unsigned int iIndex;
KaxSeek *tmp;
// look for the previous in the list
for (iIndex = 0; iIndex<ListSize(); iIndex++)
{
if ((*this)[iIndex] == static_cast<const EbmlElement*>(&aPrev))
break;
}
if (iIndex <ListSize()) {
iIndex++;
for (; iIndex<ListSize(); iIndex++)
{
if (EbmlId(*((*this)[iIndex])) == EBML_ID(KaxSeek))
{
tmp = (KaxSeek *)((*this)[iIndex]);
if (tmp->IsEbmlId(aPrev))
return tmp;
}
}
}
return NULL;
}
int64 KaxSeek::Location() const
{
KaxSeekPosition *aPos = static_cast<KaxSeekPosition*>(FindFirstElt(EBML_INFO(KaxSeekPosition)));
if (aPos == NULL)
return 0;
return uint64(*aPos);
}
bool KaxSeek::IsEbmlId(const EbmlId & aId) const
{
KaxSeekID *_Id = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID)));
if (_Id == NULL)
return false;
EbmlId aEbmlId(_Id->GetBuffer(), _Id->GetSize());
return (aId == aEbmlId);
}
bool KaxSeek::IsEbmlId(const KaxSeek & aPoint) const
{
KaxSeekID *_IdA = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID)));
if (_IdA == NULL)
return false;
KaxSeekID *_IdB = static_cast<KaxSeekID*>(aPoint.FindFirstElt(EBML_INFO(KaxSeekID)));
if (_IdB == NULL)
return false;
EbmlId aEbmlIdA(_IdA->GetBuffer(), _IdA->GetSize());
EbmlId aEbmlIdB(_IdB->GetBuffer(), _IdB->GetSize());
return (aEbmlIdA == aEbmlIdB);
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSeekHead.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxSeekHead.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxSegment.h"
#include "matroska/KaxCues.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxSeekHead_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxSeek)),
};
EbmlSemantic KaxSeek_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(KaxSeekID)),
EbmlSemantic(true, true, EBML_INFO(KaxSeekPosition)),
};
const EbmlSemanticContext KaxSeekHead_Context = EbmlSemanticContext(countof(KaxSeekHead_ContextList), KaxSeekHead_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekHead));
const EbmlSemanticContext KaxSeek_Context = EbmlSemanticContext(countof(KaxSeek_ContextList), KaxSeek_ContextList, &KaxSeekHead_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeek));
const EbmlSemanticContext KaxSeekID_Context = EbmlSemanticContext(0, NULL, &KaxSeek_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekID));
const EbmlSemanticContext KaxSeekPosition_Context = EbmlSemanticContext(0, NULL, &KaxSeek_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSeekPosition));
EbmlId KaxSeekHead_TheId (0x114D9B74, 4);
EbmlId KaxSeek_TheId (0x4DBB, 2);
EbmlId KaxSeekID_TheId (0x53AB, 2);
EbmlId KaxSeekPosition_TheId(0x53AC, 2);
const EbmlCallbacks KaxSeekHead::ClassInfos(KaxSeekHead::Create, KaxSeekHead_TheId, "SeekHeader", KaxSeekHead_Context);
const EbmlCallbacks KaxSeek::ClassInfos(KaxSeek::Create, KaxSeek_TheId, "SeekPoint", KaxSeek_Context);
const EbmlCallbacks KaxSeekID::ClassInfos(KaxSeekID::Create, KaxSeekID_TheId, "SeekID", KaxSeekID_Context);
const EbmlCallbacks KaxSeekPosition::ClassInfos(KaxSeekPosition::Create, KaxSeekPosition_TheId, "SeekPosition", KaxSeekPosition_Context);
KaxSeekHead::KaxSeekHead()
:EbmlMaster(KaxSeekHead_Context)
{}
KaxSeek::KaxSeek()
:EbmlMaster(KaxSeek_Context)
{}
/*!
\todo verify that the element is not already in the list
*/
void KaxSeekHead::IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment)
{
// create a new point
KaxSeek & aNewPoint = AddNewChild<KaxSeek>(*this);
// add the informations to this element
KaxSeekPosition & aNewPos = GetChild<KaxSeekPosition>(aNewPoint);
*static_cast<EbmlUInteger *>(&aNewPos) = ParentSegment.GetRelativePosition(aElt);
KaxSeekID & aNewID = GetChild<KaxSeekID>(aNewPoint);
binary ID[4];
for (int i=EBML_ID_LENGTH(EbmlId(aElt)); i>0; i--) {
ID[4-i] = (EBML_ID_VALUE(EbmlId(aElt)) >> 8*(i-1)) & 0xFF;
}
aNewID.CopyBuffer(ID, EBML_ID_LENGTH(EbmlId(aElt)));
}
KaxSeek * KaxSeekHead::FindFirstOf(const EbmlCallbacks & Callbacks) const
{
// parse all the Entries and find the first to match the type
KaxSeek * aElt = static_cast<KaxSeek *>(FindFirstElt(EBML_INFO(KaxSeek)));
while (aElt != NULL)
{
KaxSeekID * aId = NULL;
for (unsigned int i = 0; i<aElt->ListSize(); i++) {
if (EbmlId(*(*aElt)[i]) == EBML_ID(KaxSeekID)) {
aId = static_cast<KaxSeekID*>((*aElt)[i]);
EbmlId aEbmlId(aId->GetBuffer(), aId->GetSize());
if (aEbmlId == Callbacks.GlobalId)
{
return aElt;
}
break;
}
}
aElt = static_cast<KaxSeek *>(FindNextElt(*aElt));
}
return NULL;
}
KaxSeek * KaxSeekHead::FindNextOf(const KaxSeek &aPrev) const
{
unsigned int iIndex;
KaxSeek *tmp;
// look for the previous in the list
for (iIndex = 0; iIndex<ListSize(); iIndex++)
{
if ((*this)[iIndex] == static_cast<const EbmlElement*>(&aPrev))
break;
}
if (iIndex <ListSize()) {
iIndex++;
for (; iIndex<ListSize(); iIndex++)
{
if (EbmlId(*((*this)[iIndex])) == EBML_ID(KaxSeek))
{
tmp = (KaxSeek *)((*this)[iIndex]);
if (tmp->IsEbmlId(aPrev))
return tmp;
}
}
}
return NULL;
}
int64 KaxSeek::Location() const
{
KaxSeekPosition *aPos = static_cast<KaxSeekPosition*>(FindFirstElt(EBML_INFO(KaxSeekPosition)));
if (aPos == NULL)
return 0;
return uint64(*aPos);
}
bool KaxSeek::IsEbmlId(const EbmlId & aId) const
{
KaxSeekID *_Id = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID)));
if (_Id == NULL)
return false;
EbmlId aEbmlId(_Id->GetBuffer(), _Id->GetSize());
return (aId == aEbmlId);
}
bool KaxSeek::IsEbmlId(const KaxSeek & aPoint) const
{
KaxSeekID *_IdA = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID)));
if (_IdA == NULL)
return false;
KaxSeekID *_IdB = static_cast<KaxSeekID*>(aPoint.FindFirstElt(EBML_INFO(KaxSeekID)));
if (_IdB == NULL)
return false;
EbmlId aEbmlIdA(_IdA->GetBuffer(), _IdA->GetSize());
EbmlId aEbmlIdB(_IdB->GetBuffer(), _IdB->GetSize());
return (aEbmlIdA == aEbmlIdB);
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,111 +1,111 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSegment.cpp 1096 2005-03-17 09:14:52Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxSegment.h"
#include "ebml/EbmlHead.h"
// sub elements
#include "matroska/KaxCluster.h"
#include "matroska/KaxSeekHead.h"
#include "matroska/KaxCues.h"
#include "matroska/KaxTracks.h"
#include "matroska/KaxInfo.h"
#include "matroska/KaxChapters.h"
#include "matroska/KaxAttachments.h"
#include "matroska/KaxTags.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxMatroska_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(EbmlHead)),
EbmlSemantic(true, false, EBML_INFO(KaxSegment)),
};
EbmlSemantic KaxSegment_ContextList[8] =
{
EbmlSemantic(false, false, EBML_INFO(KaxCluster)),
EbmlSemantic(false, false, EBML_INFO(KaxSeekHead)),
EbmlSemantic(false, true, EBML_INFO(KaxCues)),
EbmlSemantic(false, false, EBML_INFO(KaxTracks)),
EbmlSemantic(true, true, EBML_INFO(KaxInfo)),
EbmlSemantic(false, true, EBML_INFO(KaxChapters)),
EbmlSemantic(false, true, EBML_INFO(KaxAttachments)),
EbmlSemantic(false, true, EBML_INFO(KaxTags)),
};
const EbmlSemanticContext KaxMatroska_Context = EbmlSemanticContext(countof(KaxMatroska_ContextList), KaxMatroska_ContextList, NULL, *GetKaxGlobal_Context, NULL);
const EbmlSemanticContext KaxSegment_Context = EbmlSemanticContext(countof(KaxSegment_ContextList), KaxSegment_ContextList, NULL, *GetKaxGlobal_Context, &EBML_INFO(KaxSegment));
EbmlId KaxSegment_TheId(0x18538067, 4);
const EbmlCallbacks KaxSegment::ClassInfos(KaxSegment::Create, KaxSegment_TheId, "Segment\0rotomopogo", KaxSegment_Context);
KaxSegment::KaxSegment()
:EbmlMaster(KaxSegment_Context)
{
SetSizeLength(5); // mandatory min size support (for easier updating) (2^(7*5)-2 = 32Go)
SetSizeInfinite(); // by default a segment is big and the size is unknown in advance
}
KaxSegment::KaxSegment(const KaxSegment & ElementToClone)
:EbmlMaster(ElementToClone)
{
// update the parent of each children
std::vector<EbmlElement *>::const_iterator Itr = begin();
while (Itr != end())
{
if (EbmlId(**Itr) == EBML_ID(KaxCluster)) {
static_cast<KaxCluster *>(*Itr)->SetParent(*this);
}
}
}
uint64 KaxSegment::GetRelativePosition(uint64 aGlobalPosition) const
{
return aGlobalPosition - GetElementPosition() - HeadSize();
}
uint64 KaxSegment::GetRelativePosition(const EbmlElement & Elt) const
{
return GetRelativePosition(Elt.GetElementPosition());
}
uint64 KaxSegment::GetGlobalPosition(uint64 aRelativePosition) const
{
return aRelativePosition + GetElementPosition() + HeadSize();
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxSegment.cpp 1096 2005-03-17 09:14:52Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxSegment.h"
#include "ebml/EbmlHead.h"
// sub elements
#include "matroska/KaxCluster.h"
#include "matroska/KaxSeekHead.h"
#include "matroska/KaxCues.h"
#include "matroska/KaxTracks.h"
#include "matroska/KaxInfo.h"
#include "matroska/KaxChapters.h"
#include "matroska/KaxAttachments.h"
#include "matroska/KaxTags.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxMatroska_ContextList[2] =
{
EbmlSemantic(true, true, EBML_INFO(EbmlHead)),
EbmlSemantic(true, false, EBML_INFO(KaxSegment)),
};
EbmlSemantic KaxSegment_ContextList[8] =
{
EbmlSemantic(false, false, EBML_INFO(KaxCluster)),
EbmlSemantic(false, false, EBML_INFO(KaxSeekHead)),
EbmlSemantic(false, true, EBML_INFO(KaxCues)),
EbmlSemantic(false, false, EBML_INFO(KaxTracks)),
EbmlSemantic(true, true, EBML_INFO(KaxInfo)),
EbmlSemantic(false, true, EBML_INFO(KaxChapters)),
EbmlSemantic(false, true, EBML_INFO(KaxAttachments)),
EbmlSemantic(false, true, EBML_INFO(KaxTags)),
};
const EbmlSemanticContext KaxMatroska_Context = EbmlSemanticContext(countof(KaxMatroska_ContextList), KaxMatroska_ContextList, NULL, *GetKaxGlobal_Context, NULL);
const EbmlSemanticContext KaxSegment_Context = EbmlSemanticContext(countof(KaxSegment_ContextList), KaxSegment_ContextList, NULL, *GetKaxGlobal_Context, &EBML_INFO(KaxSegment));
EbmlId KaxSegment_TheId(0x18538067, 4);
const EbmlCallbacks KaxSegment::ClassInfos(KaxSegment::Create, KaxSegment_TheId, "Segment\0rotomopogo", KaxSegment_Context);
KaxSegment::KaxSegment()
:EbmlMaster(KaxSegment_Context)
{
SetSizeLength(5); // mandatory min size support (for easier updating) (2^(7*5)-2 = 32Go)
SetSizeInfinite(); // by default a segment is big and the size is unknown in advance
}
KaxSegment::KaxSegment(const KaxSegment & ElementToClone)
:EbmlMaster(ElementToClone)
{
// update the parent of each children
std::vector<EbmlElement *>::const_iterator Itr = begin();
while (Itr != end())
{
if (EbmlId(**Itr) == EBML_ID(KaxCluster)) {
static_cast<KaxCluster *>(*Itr)->SetParent(*this);
}
}
}
uint64 KaxSegment::GetRelativePosition(uint64 aGlobalPosition) const
{
return aGlobalPosition - GetElementPosition() - HeadSize();
}
uint64 KaxSegment::GetRelativePosition(const EbmlElement & Elt) const
{
return GetRelativePosition(Elt.GetElementPosition());
}
uint64 KaxSegment::GetGlobalPosition(uint64 aRelativePosition) const
{
return aRelativePosition + GetElementPosition() + HeadSize();
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,347 +1,347 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTag.cpp 1325 2009-03-30 07:56:54Z robux4 $
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTag.h"
#include "matroska/KaxTagMulti.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxTag_ContextList[14] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagTargets)),
EbmlSemantic(false, true, EBML_INFO(KaxTagGeneral)),
EbmlSemantic(false, true, EBML_INFO(KaxTagGenres)),
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioSpecific)),
EbmlSemantic(false, true, EBML_INFO(KaxTagImageSpecific)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommercial)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDate)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntity)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifier)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegal)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitle)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiAttachment)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagLength)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagPlaylistDelay)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagUnsynchronisedText)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagUserDefinedURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiComment)),
EbmlSemantic(true, false, EBML_INFO(KaxTagSimple)),
};
EbmlSemantic KaxTagTargets_ContextList[6] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagTargetTypeValue)),
EbmlSemantic(false, true, EBML_INFO(KaxTagTargetType)),
EbmlSemantic(false, false, EBML_INFO(KaxTagTrackUID)),
EbmlSemantic(false, false, EBML_INFO(KaxTagEditionUID)),
EbmlSemantic(false, false, EBML_INFO(KaxTagChapterUID)),
EbmlSemantic(false, false, EBML_INFO(KaxTagAttachmentUID)),
};
EbmlSemantic KaxTagGeneral_ContextList[17] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagArchivalLocation)),
EbmlSemantic(false, true, EBML_INFO(KaxTagFile)),
EbmlSemantic(false, false, EBML_INFO(KaxTagKeywords)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMood)),
EbmlSemantic(false, false, EBML_INFO(KaxTagRecordLocation)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSource)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSourceForm)),
EbmlSemantic(false, true, EBML_INFO(KaxTagProduct)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOriginalMediaType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagPlayCounter)),
EbmlSemantic(false, true, EBML_INFO(KaxTagPopularimeter)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSubject)),
EbmlSemantic(false, true, EBML_INFO(KaxTagBibliography)),
EbmlSemantic(false, true, EBML_INFO(KaxTagLanguage)),
EbmlSemantic(false, true, EBML_INFO(KaxTagRating)),
EbmlSemantic(false, true, EBML_INFO(KaxTagEncoder)),
EbmlSemantic(false, true, EBML_INFO(KaxTagEncodeSettings)),
};
EbmlSemantic KaxTagGenres_ContextList[3] =
{
EbmlSemantic(false, false, EBML_INFO(KaxTagAudioGenre)),
EbmlSemantic(false, false, EBML_INFO(KaxTagVideoGenre)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSubGenre)),
};
EbmlSemantic KaxTagAudioSpecific_ContextList[10] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioPeak)),
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioEncryption)),
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioGain)),
EbmlSemantic(false, true, EBML_INFO(KaxTagBPM)),
EbmlSemantic(false, true, EBML_INFO(KaxTagDiscTrack)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSetPart)),
EbmlSemantic(false, true, EBML_INFO(KaxTagEqualisation)),
EbmlSemantic(false, true, EBML_INFO(KaxTagInitialKey)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOfficialAudioFileURL)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOfficialAudioSourceURL)),
};
EbmlSemantic KaxTagImageSpecific_ContextList[6] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureDPI)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureLightness)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCapturePaletteSetting)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureSharpness)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCropped)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOriginalDimensions)),
};
EbmlSemantic KaxTagSimple_ContextList[6] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagName)),
EbmlSemantic(true, true, EBML_INFO(KaxTagLangue)),
EbmlSemantic(true, true, EBML_INFO(KaxTagDefault)),
EbmlSemantic(false, true, EBML_INFO(KaxTagString)),
EbmlSemantic(false, true, EBML_INFO(KaxTagBinary)),
EbmlSemantic(false, false, EBML_INFO(KaxTagSimple)),
};
const EbmlSemanticContext KaxTag_Context = EbmlSemanticContext(countof(KaxTag_ContextList), KaxTag_ContextList, &KaxTags_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTag));
const EbmlSemanticContext KaxTagTargets_Context = EbmlSemanticContext(countof(KaxTagTargets_ContextList), KaxTagTargets_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagTargets));
const EbmlSemanticContext KaxTagGeneral_Context = EbmlSemanticContext(countof(KaxTagGeneral_ContextList), KaxTagGeneral_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagGeneral));
const EbmlSemanticContext KaxTagGenres_Context = EbmlSemanticContext(countof(KaxTagGenres_ContextList), KaxTagGenres_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagGenres));
const EbmlSemanticContext KaxTagAudioSpecific_Context = EbmlSemanticContext(countof(KaxTagAudioSpecific_ContextList), KaxTagAudioSpecific_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagAudioSpecific));
const EbmlSemanticContext KaxTagImageSpecific_Context = EbmlSemanticContext(countof(KaxTagImageSpecific_ContextList), KaxTagImageSpecific_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagImageSpecific));
const EbmlSemanticContext KaxTagBibliography_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBibliography));
const EbmlSemanticContext KaxTagEncoder_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEncoder));
const EbmlSemanticContext KaxTagEncodeSettings_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEncodeSettings));
const EbmlSemanticContext KaxTagLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLanguage));
const EbmlSemanticContext KaxTagLength_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLength));
const EbmlSemanticContext KaxTagPlaylistDelay_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPlaylistDelay));
const EbmlSemanticContext KaxTagRating_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagRating));
const EbmlSemanticContext KaxTagSubject_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSubject));
const EbmlSemanticContext KaxTagUnsynchronisedText_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagUnsynchronisedText));
const EbmlSemanticContext KaxTagUserDefinedURL_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagUserDefinedURL));
const EbmlSemanticContext KaxTagTargetTypeValue_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTargetTypeValue));
const EbmlSemanticContext KaxTagTargetType_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTargetType));
const EbmlSemanticContext KaxTagTrackUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTrackUID));
const EbmlSemanticContext KaxTagEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEditionUID));
const EbmlSemanticContext KaxTagChapterUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagChapterUID));
const EbmlSemanticContext KaxTagAttachmentUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAttachmentUID));
const EbmlSemanticContext KaxTagArchivalLocation_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagArchivalLocation));
const EbmlSemanticContext KaxTagFile_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagFile));
const EbmlSemanticContext KaxTagKeywords_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagKeywords));
const EbmlSemanticContext KaxTagMood_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMood));
const EbmlSemanticContext KaxTagRecordLocation_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagRecordLocation));
const EbmlSemanticContext KaxTagSource_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSource));
const EbmlSemanticContext KaxTagSourceForm_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSourceForm));
const EbmlSemanticContext KaxTagProduct_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagProduct));
const EbmlSemanticContext KaxTagOriginalMediaType_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOriginalMediaType));
const EbmlSemanticContext KaxTagPlayCounter_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPlayCounter));
const EbmlSemanticContext KaxTagPopularimeter_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPopularimeter));
const EbmlSemanticContext KaxTagAudioGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioGenre));
const EbmlSemanticContext KaxTagVideoGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagVideoGenre));
const EbmlSemanticContext KaxTagSubGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSubGenre));
const EbmlSemanticContext KaxTagAudioEncryption_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioEncryption));
const EbmlSemanticContext KaxTagAudioGain_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioGain));
const EbmlSemanticContext KaxTagAudioPeak_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioPeak));
const EbmlSemanticContext KaxTagBPM_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBPM));
const EbmlSemanticContext KaxTagDiscTrack_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagDiscTrack));
const EbmlSemanticContext KaxTagSetPart_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSetPart));
const EbmlSemanticContext KaxTagEqualisation_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEqualisation));
const EbmlSemanticContext KaxTagInitialKey_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagInitialKey));
const EbmlSemanticContext KaxTagOfficialAudioFileURL_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOfficialAudioFileURL));
const EbmlSemanticContext KaxTagOfficialAudioSourceURL_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOfficialAudioSourceURL));
const EbmlSemanticContext KaxTagCaptureDPI_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureDPI));
const EbmlSemanticContext KaxTagCaptureLightness_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureLightness));
const EbmlSemanticContext KaxTagCapturePaletteSetting_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCapturePaletteSetting));
const EbmlSemanticContext KaxTagCaptureSharpness_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureSharpness));
const EbmlSemanticContext KaxTagCropped_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCropped));
const EbmlSemanticContext KaxTagOriginalDimensions_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOriginalDimensions));
const EbmlSemanticContext KaxTagSimple_Context = EbmlSemanticContext(countof(KaxTagSimple_ContextList), KaxTagSimple_ContextList, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSimple));
const EbmlSemanticContext KaxTagName_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagName));
const EbmlSemanticContext KaxTagLangue_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLangue));
const EbmlSemanticContext KaxTagDefault_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagDefault));
const EbmlSemanticContext KaxTagString_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagString));
const EbmlSemanticContext KaxTagBinary_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBinary));
EbmlId KaxTag_TheId (0x7373, 2);
EbmlId KaxTagTargets_TheId (0x63C0, 2);
EbmlId KaxTagGeneral_TheId (0x67C9, 2);
EbmlId KaxTagGenres_TheId (0x6583, 2);
EbmlId KaxTagAudioSpecific_TheId (0x41C5, 2);
EbmlId KaxTagImageSpecific_TheId (0x4990, 2);
EbmlId KaxTagBibliography_TheId (0x4488, 2);
EbmlId KaxTagEncoder_TheId (0x4431, 2);
EbmlId KaxTagEncodeSettings_TheId (0x6526, 2);
EbmlId KaxTagLanguage_TheId (0x22B59F, 3);
EbmlId KaxTagLength_TheId (0x5243, 2);
EbmlId KaxTagPlaylistDelay_TheId (0x72CC, 2);
EbmlId KaxTagRating_TheId (0x52BC, 2);
EbmlId KaxTagSubject_TheId (0x49C1, 2);
EbmlId KaxTagUnsynchronisedText_TheId (0x874B, 2);
EbmlId KaxTagUserDefinedURL_TheId (0x434A, 2);
EbmlId KaxTagTargetTypeValue_TheId (0x68CA, 2);
EbmlId KaxTagTargetType_TheId (0x63CA, 2);
EbmlId KaxTagTrackUID_TheId (0x63C5, 2);
EbmlId KaxTagEditionUID_TheId (0x63C9, 2);
EbmlId KaxTagChapterUID_TheId (0x63C4, 2);
EbmlId KaxTagAttachmentUID_TheId (0x63C6, 2);
EbmlId KaxTagAudioGenre_TheId (0x65C2, 2);
EbmlId KaxTagVideoGenre_TheId (0x65A1, 2);
EbmlId KaxTagSubGenre_TheId (0x65AC, 2);
EbmlId KaxTagAudioEncryption_TheId (0x41B4, 2);
EbmlId KaxTagAudioGain_TheId (0x4199, 2);
EbmlId KaxTagAudioPeak_TheId (0x4189, 2);
EbmlId KaxTagBPM_TheId (0x41A1, 2);
EbmlId KaxTagDiscTrack_TheId (0x41B6, 2);
EbmlId KaxTagSetPart_TheId (0x416E, 2);
EbmlId KaxTagEqualisation_TheId (0x41B1, 2);
EbmlId KaxTagInitialKey_TheId (0x413A, 2);
EbmlId KaxTagOfficialAudioFileURL_TheId (0x4133, 2);
EbmlId KaxTagOfficialAudioSourceURL_TheId(0x413E, 2);
EbmlId KaxTagArchivalLocation_TheId (0x45A4, 2);
EbmlId KaxTagFile_TheId (0x454E, 2);
EbmlId KaxTagKeywords_TheId (0x458C, 2);
EbmlId KaxTagMood_TheId (0x45AE, 2);
EbmlId KaxTagRecordLocation_TheId (0x457E, 2);
EbmlId KaxTagSource_TheId (0x458A, 2);
EbmlId KaxTagSourceForm_TheId (0x45B5, 2);
EbmlId KaxTagProduct_TheId (0x45E3, 2);
EbmlId KaxTagOriginalMediaType_TheId (0x45A7, 2);
EbmlId KaxTagPlayCounter_TheId (0x4566, 2);
EbmlId KaxTagPopularimeter_TheId (0x4532, 2);
EbmlId KaxTagCaptureDPI_TheId (0x49C7, 2);
EbmlId KaxTagCaptureLightness_TheId (0x49E1, 2);
EbmlId KaxTagCapturePaletteSetting_TheId (0x4934, 2);
EbmlId KaxTagCaptureSharpness_TheId (0x4922, 2);
EbmlId KaxTagCropped_TheId (0x4987, 2);
EbmlId KaxTagOriginalDimensions_TheId (0x4933, 2);
EbmlId KaxTagSimple_TheId (0x67C8, 2);
EbmlId KaxTagName_TheId (0x45A3, 2);
EbmlId KaxTagLangue_TheId (0x447A, 2);
EbmlId KaxTagDefault_TheId (0x4484, 2);
EbmlId KaxTagString_TheId (0x4487, 2);
EbmlId KaxTagBinary_TheId (0x4485, 2);
const EbmlCallbacks KaxTag::ClassInfos(KaxTag::Create, KaxTag_TheId, "Tag", KaxTag_Context);
const EbmlCallbacks KaxTagTargets::ClassInfos(KaxTagTargets::Create, KaxTagTargets_TheId, "TagTargets", KaxTagTargets_Context);
const EbmlCallbacks KaxTagGeneral::ClassInfos(KaxTagGeneral::Create, KaxTagGeneral_TheId, "TagGeneral", KaxTagGeneral_Context);
const EbmlCallbacks KaxTagGenres::ClassInfos(KaxTagGenres::Create, KaxTagGenres_TheId, "TagGenres", KaxTagGenres_Context);
const EbmlCallbacks KaxTagAudioSpecific::ClassInfos(KaxTagAudioSpecific::Create, KaxTagAudioSpecific_TheId, "TagAudioSpecific", KaxTagAudioSpecific_Context);
const EbmlCallbacks KaxTagImageSpecific::ClassInfos(KaxTagImageSpecific::Create, KaxTagImageSpecific_TheId, "TagImageSpecific", KaxTagImageSpecific_Context);
const EbmlCallbacks KaxTagBibliography::ClassInfos(KaxTagBibliography::Create, KaxTagBibliography_TheId, "Bibliography", KaxTagBibliography_Context);
const EbmlCallbacks KaxTagCaptureDPI::ClassInfos(KaxTagCaptureDPI::Create, KaxTagCaptureDPI_TheId, "CaptureDPI", KaxTagCaptureDPI_Context);
const EbmlCallbacks KaxTagCaptureLightness::ClassInfos(KaxTagCaptureLightness::Create, KaxTagCaptureLightness_TheId, "CaptureLightness", KaxTagCaptureLightness_Context);
const EbmlCallbacks KaxTagCapturePaletteSetting::ClassInfos(KaxTagCapturePaletteSetting::Create, KaxTagCapturePaletteSetting_TheId, "CapturePaletteSetting", KaxTagCapturePaletteSetting_Context);
const EbmlCallbacks KaxTagCaptureSharpness::ClassInfos(KaxTagCaptureSharpness::Create, KaxTagCaptureSharpness_TheId, "CaptureSharpness", KaxTagCaptureSharpness_Context);
const EbmlCallbacks KaxTagCropped::ClassInfos(KaxTagCropped::Create, KaxTagCropped_TheId, "Cropped", KaxTagCropped_Context);
const EbmlCallbacks KaxTagEncoder::ClassInfos(KaxTagEncoder::Create, KaxTagEncoder_TheId, "Encoder", KaxTagEncoder_Context);
const EbmlCallbacks KaxTagEncodeSettings::ClassInfos(KaxTagEncodeSettings::Create, KaxTagEncodeSettings_TheId, "EncodeSettings", KaxTagEncodeSettings_Context);
const EbmlCallbacks KaxTagLanguage::ClassInfos(KaxTagLanguage::Create, KaxTagLanguage_TheId, "Language", KaxTagLanguage_Context);
const EbmlCallbacks KaxTagLength::ClassInfos(KaxTagLength::Create, KaxTagLength_TheId, "Length", KaxTagLength_Context);
const EbmlCallbacks KaxTagOriginalDimensions::ClassInfos(KaxTagOriginalDimensions::Create, KaxTagOriginalDimensions_TheId, "OriginalDimensions", KaxTagOriginalDimensions_Context);
const EbmlCallbacks KaxTagPlaylistDelay::ClassInfos(KaxTagPlaylistDelay::Create, KaxTagPlaylistDelay_TheId, "PlaylistDelay", KaxTagPlaylistDelay_Context);
const EbmlCallbacks KaxTagRating::ClassInfos(KaxTagRating::Create, KaxTagRating_TheId, "Rating", KaxTagRating_Context);
const EbmlCallbacks KaxTagSubject::ClassInfos(KaxTagSubject::Create, KaxTagSubject_TheId, "Subject", KaxTagSubject_Context);
const EbmlCallbacks KaxTagUnsynchronisedText::ClassInfos(KaxTagUnsynchronisedText::Create, KaxTagUnsynchronisedText_TheId, "UnsynchronisedText", KaxTagUnsynchronisedText_Context);
const EbmlCallbacks KaxTagUserDefinedURL::ClassInfos(KaxTagUserDefinedURL::Create, KaxTagUserDefinedURL_TheId, "UserDefinedURL", KaxTagUserDefinedURL_Context);
const EbmlCallbacks KaxTagTargetTypeValue::ClassInfos(KaxTagTargetTypeValue::Create, KaxTagTargetTypeValue_TheId, "TagTargetTypeValue", KaxTagTargetTypeValue_Context);
const EbmlCallbacks KaxTagTargetType::ClassInfos(KaxTagTargetType::Create, KaxTagTargetType_TheId, "TagTargetType", KaxTagTargetType_Context);
const EbmlCallbacks KaxTagTrackUID::ClassInfos(KaxTagTrackUID::Create, KaxTagTrackUID_TheId, "TagTrackUID", KaxTagTrackUID_Context);
const EbmlCallbacks KaxTagEditionUID::ClassInfos(KaxTagEditionUID::Create, KaxTagEditionUID_TheId, "TagEditionUID", KaxTagEditionUID_Context);
const EbmlCallbacks KaxTagChapterUID::ClassInfos(KaxTagChapterUID::Create, KaxTagChapterUID_TheId, "TagChapterUID", KaxTagChapterUID_Context);
const EbmlCallbacks KaxTagAttachmentUID::ClassInfos(KaxTagAttachmentUID::Create, KaxTagAttachmentUID_TheId, "TagAttachmentUID", KaxTagAttachmentUID_Context);
const EbmlCallbacks KaxTagAudioGenre::ClassInfos(KaxTagAudioGenre::Create, KaxTagAudioGenre_TheId, "AudioGenre", KaxTagAudioGenre_Context);
const EbmlCallbacks KaxTagVideoGenre::ClassInfos(KaxTagVideoGenre::Create, KaxTagVideoGenre_TheId, "VideoGenre", KaxTagVideoGenre_Context);
const EbmlCallbacks KaxTagSubGenre::ClassInfos(KaxTagSubGenre::Create, KaxTagSubGenre_TheId, "SubGenre", KaxTagSubGenre_Context);
const EbmlCallbacks KaxTagAudioEncryption::ClassInfos(KaxTagAudioEncryption::Create, KaxTagAudioEncryption_TheId, "AudioEncryption", KaxTagAudioEncryption_Context);
const EbmlCallbacks KaxTagAudioGain::ClassInfos(KaxTagAudioGain::Create, KaxTagAudioGain_TheId, "AudioGain", KaxTagAudioGain_Context);
const EbmlCallbacks KaxTagAudioPeak::ClassInfos(KaxTagAudioPeak::Create, KaxTagAudioPeak_TheId, "AudioPeak", KaxTagAudioPeak_Context);
const EbmlCallbacks KaxTagBPM::ClassInfos(KaxTagBPM::Create, KaxTagBPM_TheId, "BPM", KaxTagBPM_Context);
const EbmlCallbacks KaxTagDiscTrack::ClassInfos(KaxTagDiscTrack::Create, KaxTagDiscTrack_TheId, "DiscTrack", KaxTagDiscTrack_Context);
const EbmlCallbacks KaxTagSetPart::ClassInfos(KaxTagSetPart::Create, KaxTagSetPart_TheId, "SetPart", KaxTagSetPart_Context);
const EbmlCallbacks KaxTagEqualisation::ClassInfos(KaxTagEqualisation::Create, KaxTagEqualisation_TheId, "Equalisation", KaxTagEqualisation_Context);
const EbmlCallbacks KaxTagInitialKey::ClassInfos(KaxTagInitialKey::Create, KaxTagInitialKey_TheId, "InitialKey", KaxTagInitialKey_Context);
const EbmlCallbacks KaxTagOfficialAudioFileURL::ClassInfos(KaxTagOfficialAudioFileURL::Create, KaxTagOfficialAudioFileURL_TheId, "OfficialAudioFileURL", KaxTagOfficialAudioFileURL_Context);
const EbmlCallbacks KaxTagOfficialAudioSourceURL::ClassInfos(KaxTagOfficialAudioSourceURL::Create, KaxTagOfficialAudioSourceURL_TheId, "AudioSourceURL", KaxTagOfficialAudioSourceURL_Context);
const EbmlCallbacks KaxTagArchivalLocation::ClassInfos(KaxTagArchivalLocation::Create, KaxTagArchivalLocation_TheId, "ArchivalLocation", KaxTagArchivalLocation_Context);
const EbmlCallbacks KaxTagFile::ClassInfos(KaxTagFile::Create, KaxTagFile_TheId, "File", KaxTagFile_Context);
const EbmlCallbacks KaxTagKeywords::ClassInfos(KaxTagKeywords::Create, KaxTagKeywords_TheId, "Keywords", KaxTagKeywords_Context);
const EbmlCallbacks KaxTagMood::ClassInfos(KaxTagMood::Create, KaxTagMood_TheId, "Mood", KaxTagMood_Context);
const EbmlCallbacks KaxTagRecordLocation::ClassInfos(KaxTagRecordLocation::Create, KaxTagRecordLocation_TheId, "RecordLocation", KaxTagRecordLocation_Context);
const EbmlCallbacks KaxTagSource::ClassInfos(KaxTagSource::Create, KaxTagSource_TheId, "Source", KaxTagSource_Context);
const EbmlCallbacks KaxTagSourceForm::ClassInfos(KaxTagSourceForm::Create, KaxTagSourceForm_TheId, "SourceForm", KaxTagSourceForm_Context);
const EbmlCallbacks KaxTagProduct::ClassInfos(KaxTagProduct::Create, KaxTagProduct_TheId, "Product", KaxTagProduct_Context);
const EbmlCallbacks KaxTagOriginalMediaType::ClassInfos(KaxTagOriginalMediaType::Create, KaxTagOriginalMediaType_TheId, "OriginalMediaType", KaxTagOriginalMediaType_Context);
const EbmlCallbacks KaxTagPlayCounter::ClassInfos(KaxTagPlayCounter::Create, KaxTagPlayCounter_TheId, "PlayCounter", KaxTagPlayCounter_Context);
const EbmlCallbacks KaxTagPopularimeter::ClassInfos(KaxTagPopularimeter::Create, KaxTagPopularimeter_TheId, "Popularimeter", KaxTagPopularimeter_Context);
const EbmlCallbacks KaxTagSimple::ClassInfos(KaxTagSimple::Create, KaxTagSimple_TheId, "TagSimple", KaxTagSimple_Context);
const EbmlCallbacks KaxTagName::ClassInfos(KaxTagName::Create, KaxTagName_TheId, "TagName", KaxTagName_Context);
const EbmlCallbacks KaxTagLangue::ClassInfos(KaxTagLangue::Create, KaxTagLangue_TheId, "TagLanguage", KaxTagLangue_Context);
const EbmlCallbacks KaxTagDefault::ClassInfos(KaxTagDefault::Create, KaxTagDefault_TheId, "TagDefault", KaxTagDefault_Context);
const EbmlCallbacks KaxTagString::ClassInfos(KaxTagString::Create, KaxTagString_TheId, "TagString", KaxTagString_Context);
const EbmlCallbacks KaxTagBinary::ClassInfos(KaxTagBinary::Create, KaxTagBinary_TheId, "TagBinary", KaxTagBinary_Context);
KaxTag::KaxTag()
:EbmlMaster(KaxTag_Context)
{}
KaxTagTargets::KaxTagTargets()
:EbmlMaster(KaxTagTargets_Context)
{}
KaxTagGeneral::KaxTagGeneral()
:EbmlMaster(KaxTagGeneral_Context)
{}
KaxTagGenres::KaxTagGenres()
:EbmlMaster(KaxTagGenres_Context)
{}
KaxTagAudioSpecific::KaxTagAudioSpecific()
:EbmlMaster(KaxTagAudioSpecific_Context)
{}
KaxTagImageSpecific::KaxTagImageSpecific()
:EbmlMaster(KaxTagImageSpecific_Context)
{}
KaxTagSimple::KaxTagSimple()
:EbmlMaster(KaxTagSimple_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTag.cpp 1325 2009-03-30 07:56:54Z robux4 $
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTag.h"
#include "matroska/KaxTagMulti.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxTag_ContextList[14] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagTargets)),
EbmlSemantic(false, true, EBML_INFO(KaxTagGeneral)),
EbmlSemantic(false, true, EBML_INFO(KaxTagGenres)),
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioSpecific)),
EbmlSemantic(false, true, EBML_INFO(KaxTagImageSpecific)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommercial)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDate)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntity)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifier)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegal)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitle)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiAttachment)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagLength)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagPlaylistDelay)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagUnsynchronisedText)),
// EbmlSemantic(false, false, EBML_INFO(KaxTagUserDefinedURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiComment)),
EbmlSemantic(true, false, EBML_INFO(KaxTagSimple)),
};
EbmlSemantic KaxTagTargets_ContextList[6] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagTargetTypeValue)),
EbmlSemantic(false, true, EBML_INFO(KaxTagTargetType)),
EbmlSemantic(false, false, EBML_INFO(KaxTagTrackUID)),
EbmlSemantic(false, false, EBML_INFO(KaxTagEditionUID)),
EbmlSemantic(false, false, EBML_INFO(KaxTagChapterUID)),
EbmlSemantic(false, false, EBML_INFO(KaxTagAttachmentUID)),
};
EbmlSemantic KaxTagGeneral_ContextList[17] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagArchivalLocation)),
EbmlSemantic(false, true, EBML_INFO(KaxTagFile)),
EbmlSemantic(false, false, EBML_INFO(KaxTagKeywords)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMood)),
EbmlSemantic(false, false, EBML_INFO(KaxTagRecordLocation)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSource)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSourceForm)),
EbmlSemantic(false, true, EBML_INFO(KaxTagProduct)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOriginalMediaType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagPlayCounter)),
EbmlSemantic(false, true, EBML_INFO(KaxTagPopularimeter)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSubject)),
EbmlSemantic(false, true, EBML_INFO(KaxTagBibliography)),
EbmlSemantic(false, true, EBML_INFO(KaxTagLanguage)),
EbmlSemantic(false, true, EBML_INFO(KaxTagRating)),
EbmlSemantic(false, true, EBML_INFO(KaxTagEncoder)),
EbmlSemantic(false, true, EBML_INFO(KaxTagEncodeSettings)),
};
EbmlSemantic KaxTagGenres_ContextList[3] =
{
EbmlSemantic(false, false, EBML_INFO(KaxTagAudioGenre)),
EbmlSemantic(false, false, EBML_INFO(KaxTagVideoGenre)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSubGenre)),
};
EbmlSemantic KaxTagAudioSpecific_ContextList[10] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioPeak)),
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioEncryption)),
EbmlSemantic(false, true, EBML_INFO(KaxTagAudioGain)),
EbmlSemantic(false, true, EBML_INFO(KaxTagBPM)),
EbmlSemantic(false, true, EBML_INFO(KaxTagDiscTrack)),
EbmlSemantic(false, true, EBML_INFO(KaxTagSetPart)),
EbmlSemantic(false, true, EBML_INFO(KaxTagEqualisation)),
EbmlSemantic(false, true, EBML_INFO(KaxTagInitialKey)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOfficialAudioFileURL)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOfficialAudioSourceURL)),
};
EbmlSemantic KaxTagImageSpecific_ContextList[6] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureDPI)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureLightness)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCapturePaletteSetting)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureSharpness)),
EbmlSemantic(false, true, EBML_INFO(KaxTagCropped)),
EbmlSemantic(false, true, EBML_INFO(KaxTagOriginalDimensions)),
};
EbmlSemantic KaxTagSimple_ContextList[6] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagName)),
EbmlSemantic(true, true, EBML_INFO(KaxTagLangue)),
EbmlSemantic(true, true, EBML_INFO(KaxTagDefault)),
EbmlSemantic(false, true, EBML_INFO(KaxTagString)),
EbmlSemantic(false, true, EBML_INFO(KaxTagBinary)),
EbmlSemantic(false, false, EBML_INFO(KaxTagSimple)),
};
const EbmlSemanticContext KaxTag_Context = EbmlSemanticContext(countof(KaxTag_ContextList), KaxTag_ContextList, &KaxTags_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTag));
const EbmlSemanticContext KaxTagTargets_Context = EbmlSemanticContext(countof(KaxTagTargets_ContextList), KaxTagTargets_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagTargets));
const EbmlSemanticContext KaxTagGeneral_Context = EbmlSemanticContext(countof(KaxTagGeneral_ContextList), KaxTagGeneral_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagGeneral));
const EbmlSemanticContext KaxTagGenres_Context = EbmlSemanticContext(countof(KaxTagGenres_ContextList), KaxTagGenres_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagGenres));
const EbmlSemanticContext KaxTagAudioSpecific_Context = EbmlSemanticContext(countof(KaxTagAudioSpecific_ContextList), KaxTagAudioSpecific_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagAudioSpecific));
const EbmlSemanticContext KaxTagImageSpecific_Context = EbmlSemanticContext(countof(KaxTagImageSpecific_ContextList), KaxTagImageSpecific_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagImageSpecific));
const EbmlSemanticContext KaxTagBibliography_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBibliography));
const EbmlSemanticContext KaxTagEncoder_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEncoder));
const EbmlSemanticContext KaxTagEncodeSettings_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEncodeSettings));
const EbmlSemanticContext KaxTagLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLanguage));
const EbmlSemanticContext KaxTagLength_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLength));
const EbmlSemanticContext KaxTagPlaylistDelay_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPlaylistDelay));
const EbmlSemanticContext KaxTagRating_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagRating));
const EbmlSemanticContext KaxTagSubject_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSubject));
const EbmlSemanticContext KaxTagUnsynchronisedText_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagUnsynchronisedText));
const EbmlSemanticContext KaxTagUserDefinedURL_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagUserDefinedURL));
const EbmlSemanticContext KaxTagTargetTypeValue_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTargetTypeValue));
const EbmlSemanticContext KaxTagTargetType_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTargetType));
const EbmlSemanticContext KaxTagTrackUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTrackUID));
const EbmlSemanticContext KaxTagEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEditionUID));
const EbmlSemanticContext KaxTagChapterUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagChapterUID));
const EbmlSemanticContext KaxTagAttachmentUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAttachmentUID));
const EbmlSemanticContext KaxTagArchivalLocation_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagArchivalLocation));
const EbmlSemanticContext KaxTagFile_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagFile));
const EbmlSemanticContext KaxTagKeywords_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagKeywords));
const EbmlSemanticContext KaxTagMood_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMood));
const EbmlSemanticContext KaxTagRecordLocation_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagRecordLocation));
const EbmlSemanticContext KaxTagSource_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSource));
const EbmlSemanticContext KaxTagSourceForm_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSourceForm));
const EbmlSemanticContext KaxTagProduct_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagProduct));
const EbmlSemanticContext KaxTagOriginalMediaType_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOriginalMediaType));
const EbmlSemanticContext KaxTagPlayCounter_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPlayCounter));
const EbmlSemanticContext KaxTagPopularimeter_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPopularimeter));
const EbmlSemanticContext KaxTagAudioGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioGenre));
const EbmlSemanticContext KaxTagVideoGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagVideoGenre));
const EbmlSemanticContext KaxTagSubGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSubGenre));
const EbmlSemanticContext KaxTagAudioEncryption_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioEncryption));
const EbmlSemanticContext KaxTagAudioGain_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioGain));
const EbmlSemanticContext KaxTagAudioPeak_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioPeak));
const EbmlSemanticContext KaxTagBPM_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBPM));
const EbmlSemanticContext KaxTagDiscTrack_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagDiscTrack));
const EbmlSemanticContext KaxTagSetPart_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSetPart));
const EbmlSemanticContext KaxTagEqualisation_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEqualisation));
const EbmlSemanticContext KaxTagInitialKey_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagInitialKey));
const EbmlSemanticContext KaxTagOfficialAudioFileURL_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOfficialAudioFileURL));
const EbmlSemanticContext KaxTagOfficialAudioSourceURL_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOfficialAudioSourceURL));
const EbmlSemanticContext KaxTagCaptureDPI_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureDPI));
const EbmlSemanticContext KaxTagCaptureLightness_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureLightness));
const EbmlSemanticContext KaxTagCapturePaletteSetting_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCapturePaletteSetting));
const EbmlSemanticContext KaxTagCaptureSharpness_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureSharpness));
const EbmlSemanticContext KaxTagCropped_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCropped));
const EbmlSemanticContext KaxTagOriginalDimensions_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOriginalDimensions));
const EbmlSemanticContext KaxTagSimple_Context = EbmlSemanticContext(countof(KaxTagSimple_ContextList), KaxTagSimple_ContextList, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSimple));
const EbmlSemanticContext KaxTagName_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagName));
const EbmlSemanticContext KaxTagLangue_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLangue));
const EbmlSemanticContext KaxTagDefault_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagDefault));
const EbmlSemanticContext KaxTagString_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagString));
const EbmlSemanticContext KaxTagBinary_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBinary));
EbmlId KaxTag_TheId (0x7373, 2);
EbmlId KaxTagTargets_TheId (0x63C0, 2);
EbmlId KaxTagGeneral_TheId (0x67C9, 2);
EbmlId KaxTagGenres_TheId (0x6583, 2);
EbmlId KaxTagAudioSpecific_TheId (0x41C5, 2);
EbmlId KaxTagImageSpecific_TheId (0x4990, 2);
EbmlId KaxTagBibliography_TheId (0x4488, 2);
EbmlId KaxTagEncoder_TheId (0x4431, 2);
EbmlId KaxTagEncodeSettings_TheId (0x6526, 2);
EbmlId KaxTagLanguage_TheId (0x22B59F, 3);
EbmlId KaxTagLength_TheId (0x5243, 2);
EbmlId KaxTagPlaylistDelay_TheId (0x72CC, 2);
EbmlId KaxTagRating_TheId (0x52BC, 2);
EbmlId KaxTagSubject_TheId (0x49C1, 2);
EbmlId KaxTagUnsynchronisedText_TheId (0x874B, 2);
EbmlId KaxTagUserDefinedURL_TheId (0x434A, 2);
EbmlId KaxTagTargetTypeValue_TheId (0x68CA, 2);
EbmlId KaxTagTargetType_TheId (0x63CA, 2);
EbmlId KaxTagTrackUID_TheId (0x63C5, 2);
EbmlId KaxTagEditionUID_TheId (0x63C9, 2);
EbmlId KaxTagChapterUID_TheId (0x63C4, 2);
EbmlId KaxTagAttachmentUID_TheId (0x63C6, 2);
EbmlId KaxTagAudioGenre_TheId (0x65C2, 2);
EbmlId KaxTagVideoGenre_TheId (0x65A1, 2);
EbmlId KaxTagSubGenre_TheId (0x65AC, 2);
EbmlId KaxTagAudioEncryption_TheId (0x41B4, 2);
EbmlId KaxTagAudioGain_TheId (0x4199, 2);
EbmlId KaxTagAudioPeak_TheId (0x4189, 2);
EbmlId KaxTagBPM_TheId (0x41A1, 2);
EbmlId KaxTagDiscTrack_TheId (0x41B6, 2);
EbmlId KaxTagSetPart_TheId (0x416E, 2);
EbmlId KaxTagEqualisation_TheId (0x41B1, 2);
EbmlId KaxTagInitialKey_TheId (0x413A, 2);
EbmlId KaxTagOfficialAudioFileURL_TheId (0x4133, 2);
EbmlId KaxTagOfficialAudioSourceURL_TheId(0x413E, 2);
EbmlId KaxTagArchivalLocation_TheId (0x45A4, 2);
EbmlId KaxTagFile_TheId (0x454E, 2);
EbmlId KaxTagKeywords_TheId (0x458C, 2);
EbmlId KaxTagMood_TheId (0x45AE, 2);
EbmlId KaxTagRecordLocation_TheId (0x457E, 2);
EbmlId KaxTagSource_TheId (0x458A, 2);
EbmlId KaxTagSourceForm_TheId (0x45B5, 2);
EbmlId KaxTagProduct_TheId (0x45E3, 2);
EbmlId KaxTagOriginalMediaType_TheId (0x45A7, 2);
EbmlId KaxTagPlayCounter_TheId (0x4566, 2);
EbmlId KaxTagPopularimeter_TheId (0x4532, 2);
EbmlId KaxTagCaptureDPI_TheId (0x49C7, 2);
EbmlId KaxTagCaptureLightness_TheId (0x49E1, 2);
EbmlId KaxTagCapturePaletteSetting_TheId (0x4934, 2);
EbmlId KaxTagCaptureSharpness_TheId (0x4922, 2);
EbmlId KaxTagCropped_TheId (0x4987, 2);
EbmlId KaxTagOriginalDimensions_TheId (0x4933, 2);
EbmlId KaxTagSimple_TheId (0x67C8, 2);
EbmlId KaxTagName_TheId (0x45A3, 2);
EbmlId KaxTagLangue_TheId (0x447A, 2);
EbmlId KaxTagDefault_TheId (0x4484, 2);
EbmlId KaxTagString_TheId (0x4487, 2);
EbmlId KaxTagBinary_TheId (0x4485, 2);
const EbmlCallbacks KaxTag::ClassInfos(KaxTag::Create, KaxTag_TheId, "Tag", KaxTag_Context);
const EbmlCallbacks KaxTagTargets::ClassInfos(KaxTagTargets::Create, KaxTagTargets_TheId, "TagTargets", KaxTagTargets_Context);
const EbmlCallbacks KaxTagGeneral::ClassInfos(KaxTagGeneral::Create, KaxTagGeneral_TheId, "TagGeneral", KaxTagGeneral_Context);
const EbmlCallbacks KaxTagGenres::ClassInfos(KaxTagGenres::Create, KaxTagGenres_TheId, "TagGenres", KaxTagGenres_Context);
const EbmlCallbacks KaxTagAudioSpecific::ClassInfos(KaxTagAudioSpecific::Create, KaxTagAudioSpecific_TheId, "TagAudioSpecific", KaxTagAudioSpecific_Context);
const EbmlCallbacks KaxTagImageSpecific::ClassInfos(KaxTagImageSpecific::Create, KaxTagImageSpecific_TheId, "TagImageSpecific", KaxTagImageSpecific_Context);
const EbmlCallbacks KaxTagBibliography::ClassInfos(KaxTagBibliography::Create, KaxTagBibliography_TheId, "Bibliography", KaxTagBibliography_Context);
const EbmlCallbacks KaxTagCaptureDPI::ClassInfos(KaxTagCaptureDPI::Create, KaxTagCaptureDPI_TheId, "CaptureDPI", KaxTagCaptureDPI_Context);
const EbmlCallbacks KaxTagCaptureLightness::ClassInfos(KaxTagCaptureLightness::Create, KaxTagCaptureLightness_TheId, "CaptureLightness", KaxTagCaptureLightness_Context);
const EbmlCallbacks KaxTagCapturePaletteSetting::ClassInfos(KaxTagCapturePaletteSetting::Create, KaxTagCapturePaletteSetting_TheId, "CapturePaletteSetting", KaxTagCapturePaletteSetting_Context);
const EbmlCallbacks KaxTagCaptureSharpness::ClassInfos(KaxTagCaptureSharpness::Create, KaxTagCaptureSharpness_TheId, "CaptureSharpness", KaxTagCaptureSharpness_Context);
const EbmlCallbacks KaxTagCropped::ClassInfos(KaxTagCropped::Create, KaxTagCropped_TheId, "Cropped", KaxTagCropped_Context);
const EbmlCallbacks KaxTagEncoder::ClassInfos(KaxTagEncoder::Create, KaxTagEncoder_TheId, "Encoder", KaxTagEncoder_Context);
const EbmlCallbacks KaxTagEncodeSettings::ClassInfos(KaxTagEncodeSettings::Create, KaxTagEncodeSettings_TheId, "EncodeSettings", KaxTagEncodeSettings_Context);
const EbmlCallbacks KaxTagLanguage::ClassInfos(KaxTagLanguage::Create, KaxTagLanguage_TheId, "Language", KaxTagLanguage_Context);
const EbmlCallbacks KaxTagLength::ClassInfos(KaxTagLength::Create, KaxTagLength_TheId, "Length", KaxTagLength_Context);
const EbmlCallbacks KaxTagOriginalDimensions::ClassInfos(KaxTagOriginalDimensions::Create, KaxTagOriginalDimensions_TheId, "OriginalDimensions", KaxTagOriginalDimensions_Context);
const EbmlCallbacks KaxTagPlaylistDelay::ClassInfos(KaxTagPlaylistDelay::Create, KaxTagPlaylistDelay_TheId, "PlaylistDelay", KaxTagPlaylistDelay_Context);
const EbmlCallbacks KaxTagRating::ClassInfos(KaxTagRating::Create, KaxTagRating_TheId, "Rating", KaxTagRating_Context);
const EbmlCallbacks KaxTagSubject::ClassInfos(KaxTagSubject::Create, KaxTagSubject_TheId, "Subject", KaxTagSubject_Context);
const EbmlCallbacks KaxTagUnsynchronisedText::ClassInfos(KaxTagUnsynchronisedText::Create, KaxTagUnsynchronisedText_TheId, "UnsynchronisedText", KaxTagUnsynchronisedText_Context);
const EbmlCallbacks KaxTagUserDefinedURL::ClassInfos(KaxTagUserDefinedURL::Create, KaxTagUserDefinedURL_TheId, "UserDefinedURL", KaxTagUserDefinedURL_Context);
const EbmlCallbacks KaxTagTargetTypeValue::ClassInfos(KaxTagTargetTypeValue::Create, KaxTagTargetTypeValue_TheId, "TagTargetTypeValue", KaxTagTargetTypeValue_Context);
const EbmlCallbacks KaxTagTargetType::ClassInfos(KaxTagTargetType::Create, KaxTagTargetType_TheId, "TagTargetType", KaxTagTargetType_Context);
const EbmlCallbacks KaxTagTrackUID::ClassInfos(KaxTagTrackUID::Create, KaxTagTrackUID_TheId, "TagTrackUID", KaxTagTrackUID_Context);
const EbmlCallbacks KaxTagEditionUID::ClassInfos(KaxTagEditionUID::Create, KaxTagEditionUID_TheId, "TagEditionUID", KaxTagEditionUID_Context);
const EbmlCallbacks KaxTagChapterUID::ClassInfos(KaxTagChapterUID::Create, KaxTagChapterUID_TheId, "TagChapterUID", KaxTagChapterUID_Context);
const EbmlCallbacks KaxTagAttachmentUID::ClassInfos(KaxTagAttachmentUID::Create, KaxTagAttachmentUID_TheId, "TagAttachmentUID", KaxTagAttachmentUID_Context);
const EbmlCallbacks KaxTagAudioGenre::ClassInfos(KaxTagAudioGenre::Create, KaxTagAudioGenre_TheId, "AudioGenre", KaxTagAudioGenre_Context);
const EbmlCallbacks KaxTagVideoGenre::ClassInfos(KaxTagVideoGenre::Create, KaxTagVideoGenre_TheId, "VideoGenre", KaxTagVideoGenre_Context);
const EbmlCallbacks KaxTagSubGenre::ClassInfos(KaxTagSubGenre::Create, KaxTagSubGenre_TheId, "SubGenre", KaxTagSubGenre_Context);
const EbmlCallbacks KaxTagAudioEncryption::ClassInfos(KaxTagAudioEncryption::Create, KaxTagAudioEncryption_TheId, "AudioEncryption", KaxTagAudioEncryption_Context);
const EbmlCallbacks KaxTagAudioGain::ClassInfos(KaxTagAudioGain::Create, KaxTagAudioGain_TheId, "AudioGain", KaxTagAudioGain_Context);
const EbmlCallbacks KaxTagAudioPeak::ClassInfos(KaxTagAudioPeak::Create, KaxTagAudioPeak_TheId, "AudioPeak", KaxTagAudioPeak_Context);
const EbmlCallbacks KaxTagBPM::ClassInfos(KaxTagBPM::Create, KaxTagBPM_TheId, "BPM", KaxTagBPM_Context);
const EbmlCallbacks KaxTagDiscTrack::ClassInfos(KaxTagDiscTrack::Create, KaxTagDiscTrack_TheId, "DiscTrack", KaxTagDiscTrack_Context);
const EbmlCallbacks KaxTagSetPart::ClassInfos(KaxTagSetPart::Create, KaxTagSetPart_TheId, "SetPart", KaxTagSetPart_Context);
const EbmlCallbacks KaxTagEqualisation::ClassInfos(KaxTagEqualisation::Create, KaxTagEqualisation_TheId, "Equalisation", KaxTagEqualisation_Context);
const EbmlCallbacks KaxTagInitialKey::ClassInfos(KaxTagInitialKey::Create, KaxTagInitialKey_TheId, "InitialKey", KaxTagInitialKey_Context);
const EbmlCallbacks KaxTagOfficialAudioFileURL::ClassInfos(KaxTagOfficialAudioFileURL::Create, KaxTagOfficialAudioFileURL_TheId, "OfficialAudioFileURL", KaxTagOfficialAudioFileURL_Context);
const EbmlCallbacks KaxTagOfficialAudioSourceURL::ClassInfos(KaxTagOfficialAudioSourceURL::Create, KaxTagOfficialAudioSourceURL_TheId, "AudioSourceURL", KaxTagOfficialAudioSourceURL_Context);
const EbmlCallbacks KaxTagArchivalLocation::ClassInfos(KaxTagArchivalLocation::Create, KaxTagArchivalLocation_TheId, "ArchivalLocation", KaxTagArchivalLocation_Context);
const EbmlCallbacks KaxTagFile::ClassInfos(KaxTagFile::Create, KaxTagFile_TheId, "File", KaxTagFile_Context);
const EbmlCallbacks KaxTagKeywords::ClassInfos(KaxTagKeywords::Create, KaxTagKeywords_TheId, "Keywords", KaxTagKeywords_Context);
const EbmlCallbacks KaxTagMood::ClassInfos(KaxTagMood::Create, KaxTagMood_TheId, "Mood", KaxTagMood_Context);
const EbmlCallbacks KaxTagRecordLocation::ClassInfos(KaxTagRecordLocation::Create, KaxTagRecordLocation_TheId, "RecordLocation", KaxTagRecordLocation_Context);
const EbmlCallbacks KaxTagSource::ClassInfos(KaxTagSource::Create, KaxTagSource_TheId, "Source", KaxTagSource_Context);
const EbmlCallbacks KaxTagSourceForm::ClassInfos(KaxTagSourceForm::Create, KaxTagSourceForm_TheId, "SourceForm", KaxTagSourceForm_Context);
const EbmlCallbacks KaxTagProduct::ClassInfos(KaxTagProduct::Create, KaxTagProduct_TheId, "Product", KaxTagProduct_Context);
const EbmlCallbacks KaxTagOriginalMediaType::ClassInfos(KaxTagOriginalMediaType::Create, KaxTagOriginalMediaType_TheId, "OriginalMediaType", KaxTagOriginalMediaType_Context);
const EbmlCallbacks KaxTagPlayCounter::ClassInfos(KaxTagPlayCounter::Create, KaxTagPlayCounter_TheId, "PlayCounter", KaxTagPlayCounter_Context);
const EbmlCallbacks KaxTagPopularimeter::ClassInfos(KaxTagPopularimeter::Create, KaxTagPopularimeter_TheId, "Popularimeter", KaxTagPopularimeter_Context);
const EbmlCallbacks KaxTagSimple::ClassInfos(KaxTagSimple::Create, KaxTagSimple_TheId, "TagSimple", KaxTagSimple_Context);
const EbmlCallbacks KaxTagName::ClassInfos(KaxTagName::Create, KaxTagName_TheId, "TagName", KaxTagName_Context);
const EbmlCallbacks KaxTagLangue::ClassInfos(KaxTagLangue::Create, KaxTagLangue_TheId, "TagLanguage", KaxTagLangue_Context);
const EbmlCallbacks KaxTagDefault::ClassInfos(KaxTagDefault::Create, KaxTagDefault_TheId, "TagDefault", KaxTagDefault_Context);
const EbmlCallbacks KaxTagString::ClassInfos(KaxTagString::Create, KaxTagString_TheId, "TagString", KaxTagString_Context);
const EbmlCallbacks KaxTagBinary::ClassInfos(KaxTagBinary::Create, KaxTagBinary_TheId, "TagBinary", KaxTagBinary_Context);
KaxTag::KaxTag()
:EbmlMaster(KaxTag_Context)
{}
KaxTagTargets::KaxTagTargets()
:EbmlMaster(KaxTagTargets_Context)
{}
KaxTagGeneral::KaxTagGeneral()
:EbmlMaster(KaxTagGeneral_Context)
{}
KaxTagGenres::KaxTagGenres()
:EbmlMaster(KaxTagGenres_Context)
{}
KaxTagAudioSpecific::KaxTagAudioSpecific()
:EbmlMaster(KaxTagAudioSpecific_Context)
{}
KaxTagImageSpecific::KaxTagImageSpecific()
:EbmlMaster(KaxTagImageSpecific_Context)
{}
KaxTagSimple::KaxTagSimple()
:EbmlMaster(KaxTagSimple_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,404 +1,404 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTagMulti.cpp 640 2004-07-09 21:05:36Z mosu $
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTagMulti.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxTagMultiGlobal_ContextList[1] =
{
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiComment)),
};
EbmlSemantic KaxTagMultiComment_ContextList[3] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentName)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentComments)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentLanguage)),
};
EbmlSemantic KaxTagMultiCommercial_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagCommercial)),
};
EbmlSemantic KaxTagCommercial_ContextList[5] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiCommercialType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommercialAddress)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiCommercialURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiCommercialEmail)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiPrice)),
};
EbmlSemantic KaxTagMultiPrice_ContextList[3] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceCurrency)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceAmount)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPricePriceDate)),
};
EbmlSemantic KaxTagMultiDate_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagDate)),
};
EbmlSemantic KaxTagDate_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiDateType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateBegin)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateEnd)),
};
EbmlSemantic KaxTagMultiEntity_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagEntity)),
};
EbmlSemantic KaxTagEntity_ContextList[5] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiEntityType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntityName)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiEntityURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiEntityEmail)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntityAddress)),
};
EbmlSemantic KaxTagMultiIdentifier_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagIdentifier)),
};
EbmlSemantic KaxTagIdentifier_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiIdentifierType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierBinary)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierString)),
};
EbmlSemantic KaxTagMultiLegal_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagLegal)),
};
EbmlSemantic KaxTagLegal_ContextList[4] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiLegalType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegalContent)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiLegalURL)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegalAddress)),
};
EbmlSemantic KaxTagMultiTitle_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagTitle)),
};
EbmlSemantic KaxTagTitle_ContextList[8] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiTitleType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleName)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleSubTitle)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleEdition)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleAddress)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiTitleURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiTitleEmail)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleLanguage)),
};
EbmlSemantic KaxTagMultiAttachment_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagAttachment)),
};
EbmlSemantic KaxTagAttachment_ContextList[1] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagAttachmentID)),
};
const EbmlSemanticContext KaxTagMultiGlobal_Context = EbmlSemanticContext(countof(KaxTagMultiGlobal_ContextList), KaxTagMultiGlobal_ContextList, NULL, *GetKaxGlobal_Context, NULL);
const EbmlSemanticContext KaxTagMultiComment_Context = EbmlSemanticContext(countof(KaxTagMultiComment_ContextList), KaxTagMultiComment_ContextList, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiComment));
const EbmlSemanticContext KaxTagMultiCommentName_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentName));
const EbmlSemanticContext KaxTagMultiCommentComments_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentComments));
const EbmlSemanticContext KaxTagMultiCommentLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentLanguage));
const EbmlSemanticContext KaxTagMultiCommercial_Context = EbmlSemanticContext(countof(KaxTagMultiCommercial_ContextList), KaxTagMultiCommercial_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiCommercial));
const EbmlSemanticContext KaxTagCommercial_Context = EbmlSemanticContext(countof(KaxTagCommercial_ContextList), KaxTagCommercial_ContextList, &KaxTagMultiCommercial_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagCommercial));
const EbmlSemanticContext KaxTagMultiCommercialType_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialType));
const EbmlSemanticContext KaxTagMultiCommercialAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialAddress));
const EbmlSemanticContext KaxTagMultiCommercialURL_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialURL));
const EbmlSemanticContext KaxTagMultiCommercialEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialEmail));
const EbmlSemanticContext KaxTagMultiPrice_Context = EbmlSemanticContext(countof(KaxTagMultiPrice_ContextList), KaxTagMultiPrice_ContextList, &KaxTagCommercial_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiPrice));
const EbmlSemanticContext KaxTagMultiPriceCurrency_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPriceCurrency));
const EbmlSemanticContext KaxTagMultiPriceAmount_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPriceAmount));
const EbmlSemanticContext KaxTagMultiPricePriceDate_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPricePriceDate));
const EbmlSemanticContext KaxTagMultiDate_Context = EbmlSemanticContext(countof(KaxTagMultiDate_ContextList), KaxTagMultiDate_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiDate));
const EbmlSemanticContext KaxTagDate_Context = EbmlSemanticContext(countof(KaxTagDate_ContextList), KaxTagDate_ContextList, &KaxTagMultiDate_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagDate));
const EbmlSemanticContext KaxTagMultiDateType_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateType));
const EbmlSemanticContext KaxTagMultiDateDateBegin_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateDateBegin));
const EbmlSemanticContext KaxTagMultiDateDateEnd_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateDateEnd));
const EbmlSemanticContext KaxTagMultiEntity_Context = EbmlSemanticContext(countof(KaxTagMultiEntity_ContextList), KaxTagMultiEntity_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiEntity));
const EbmlSemanticContext KaxTagEntity_Context = EbmlSemanticContext(countof(KaxTagEntity_ContextList), KaxTagEntity_ContextList, &KaxTagMultiEntity_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagEntity));
const EbmlSemanticContext KaxTagMultiEntityType_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityType));
const EbmlSemanticContext KaxTagMultiEntityName_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityName));
const EbmlSemanticContext KaxTagMultiEntityURL_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityURL));
const EbmlSemanticContext KaxTagMultiEntityEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityEmail));
const EbmlSemanticContext KaxTagMultiEntityAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityAddress));
const EbmlSemanticContext KaxTagMultiIdentifier_Context = EbmlSemanticContext(countof(KaxTagMultiIdentifier_ContextList), KaxTagMultiIdentifier_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiIdentifier));
const EbmlSemanticContext KaxTagIdentifier_Context = EbmlSemanticContext(countof(KaxTagIdentifier_ContextList), KaxTagIdentifier_ContextList, &KaxTagMultiIdentifier_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagIdentifier));
const EbmlSemanticContext KaxTagMultiIdentifierType_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierType));
const EbmlSemanticContext KaxTagMultiIdentifierBinary_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierBinary));
const EbmlSemanticContext KaxTagMultiIdentifierString_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierString));
const EbmlSemanticContext KaxTagMultiLegal_Context = EbmlSemanticContext(countof(KaxTagMultiLegal_ContextList), KaxTagMultiLegal_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiLegal));
const EbmlSemanticContext KaxTagLegal_Context = EbmlSemanticContext(countof(KaxTagLegal_ContextList), KaxTagLegal_ContextList, &KaxTagMultiLegal_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagLegal));
const EbmlSemanticContext KaxTagMultiLegalType_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalType));
const EbmlSemanticContext KaxTagMultiLegalContent_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalContent));
const EbmlSemanticContext KaxTagMultiLegalURL_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalURL));
const EbmlSemanticContext KaxTagMultiLegalAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalAddress));
const EbmlSemanticContext KaxTagMultiTitle_Context = EbmlSemanticContext(countof(KaxTagMultiTitle_ContextList), KaxTagMultiTitle_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiTitle));
const EbmlSemanticContext KaxTagTitle_Context = EbmlSemanticContext(countof(KaxTagTitle_ContextList), KaxTagTitle_ContextList, &KaxTagMultiTitle_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagTitle));
const EbmlSemanticContext KaxTagMultiTitleType_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleType));
const EbmlSemanticContext KaxTagMultiTitleName_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleName));
const EbmlSemanticContext KaxTagMultiTitleSubTitle_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleSubTitle));
const EbmlSemanticContext KaxTagMultiTitleEdition_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleEdition));
const EbmlSemanticContext KaxTagMultiTitleAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleAddress));
const EbmlSemanticContext KaxTagMultiTitleURL_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleURL));
const EbmlSemanticContext KaxTagMultiTitleEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleEmail));
const EbmlSemanticContext KaxTagMultiTitleLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleLanguage));
const EbmlSemanticContext KaxTagMultiAttachment_Context = EbmlSemanticContext(countof(KaxTagMultiAttachment_ContextList), KaxTagMultiAttachment_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiAttachment));
const EbmlSemanticContext KaxTagAttachment_Context = EbmlSemanticContext(countof(KaxTagAttachment_ContextList), KaxTagAttachment_ContextList, &KaxTagMultiAttachment_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagAttachment));
const EbmlSemanticContext KaxTagAttachmentID_Context = EbmlSemanticContext(0, NULL, &KaxTagAttachment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAttachmentID));
//The Muti Elements
EbmlId KaxTagMultiComment_TheId (0x5B7B, 2);
EbmlId KaxTagMultiCommentName_TheId (0x5F7D, 2);
EbmlId KaxTagMultiCommentComments_TheId (0x5F7C, 2);
EbmlId KaxTagMultiCommentLanguage_TheId (0x22B59D, 3);
EbmlId KaxTagMultiCommercial_TheId (0x4DC7, 2);
EbmlId KaxTagCommercial_TheId (0x4EC7, 2);
EbmlId KaxTagMultiCommercialType_TheId (0x5BD7, 2);
EbmlId KaxTagMultiCommercialAddress_TheId (0x5BBB, 2);
EbmlId KaxTagMultiCommercialURL_TheId (0x5BDA, 2);
EbmlId KaxTagMultiCommercialEmail_TheId (0x5BC0, 2);
EbmlId KaxTagMultiPrice_TheId (0x5BC3, 2);
EbmlId KaxTagMultiPriceCurrency_TheId (0x5B6C, 2);
EbmlId KaxTagMultiPriceAmount_TheId (0x5B6E, 2);
EbmlId KaxTagMultiPricePriceDate_TheId (0x5B6F, 2);
EbmlId KaxTagMultiDate_TheId (0x4DC8, 2);
EbmlId KaxTagDate_TheId (0x4EC8, 2);
EbmlId KaxTagMultiDateType_TheId (0x5BD8, 2);
EbmlId KaxTagMultiDateDateBegin_TheId (0x4460, 2);
EbmlId KaxTagMultiDateDateEnd_TheId (0x4462, 2);
EbmlId KaxTagMultiEntity_TheId (0x4DC9, 2);
EbmlId KaxTagEntity_TheId (0x4EC9, 2);
EbmlId KaxTagMultiEntityType_TheId (0x5BD9, 2);
EbmlId KaxTagMultiEntityName_TheId (0x5BED, 2);
EbmlId KaxTagMultiEntityAddress_TheId (0x5BDC, 2);
EbmlId KaxTagMultiEntityURL_TheId (0x5BDB, 2);
EbmlId KaxTagMultiEntityEmail_TheId (0x5BC1, 2);
EbmlId KaxTagMultiIdentifier_TheId (0x4DC6, 2);
EbmlId KaxTagIdentifier_TheId (0x4EC6, 2);
EbmlId KaxTagMultiIdentifierType_TheId (0x5BAD, 2);
EbmlId KaxTagMultiIdentifierBinary_TheId (0x6B67, 2);
EbmlId KaxTagMultiIdentifierString_TheId (0x6B68, 2);
EbmlId KaxTagMultiLegal_TheId (0x4DC5, 2);
EbmlId KaxTagLegal_TheId (0x4EC5, 2);
EbmlId KaxTagMultiLegalType_TheId (0x5BBD, 2);
EbmlId KaxTagMultiLegalContent_TheId (0x5BB2, 2);
EbmlId KaxTagMultiLegalURL_TheId (0x5B34, 2);
EbmlId KaxTagMultiLegalAddress_TheId (0x5B9B, 2);
EbmlId KaxTagMultiTitle_TheId (0x4DC4, 2);
EbmlId KaxTagTitle_TheId (0x4EC4, 2);
EbmlId KaxTagMultiTitleType_TheId (0x5B7D, 2);
EbmlId KaxTagMultiTitleName_TheId (0x5BB9, 2);
EbmlId KaxTagMultiTitleSubTitle_TheId (0x5B5B, 2);
EbmlId KaxTagMultiTitleEdition_TheId (0x5BAE, 2);
EbmlId KaxTagMultiTitleAddress_TheId (0x5B33, 2);
EbmlId KaxTagMultiTitleURL_TheId (0x5BA9, 2);
EbmlId KaxTagMultiTitleEmail_TheId (0x5BC9, 2);
EbmlId KaxTagMultiTitleLanguage_TheId (0x22B59E, 3);
EbmlId KaxTagMultiAttachment_TheId (0x4DC3, 2);
EbmlId KaxTagAttachment_TheId (0x4EC3, 2);
EbmlId KaxTagAttachmentID_TheId (0x5BA0, 2);
const EbmlCallbacks KaxTagMultiComment::ClassInfos(KaxTagMultiComment::Create, KaxTagMultiComment_TheId, "MultiComment", KaxTagMultiComment_Context);
const EbmlCallbacks KaxTagMultiCommentName::ClassInfos(KaxTagMultiCommentName::Create, KaxTagMultiCommentName_TheId, "MultiCommentName", KaxTagMultiCommentName_Context);
const EbmlCallbacks KaxTagMultiCommentComments::ClassInfos(KaxTagMultiCommentComments::Create, KaxTagMultiCommentComments_TheId, "MultiCommentComments", KaxTagMultiCommentComments_Context);
const EbmlCallbacks KaxTagMultiCommentLanguage::ClassInfos(KaxTagMultiCommentLanguage::Create, KaxTagMultiCommentLanguage_TheId, "MultiCommentLanguage", KaxTagMultiCommentLanguage_Context);
const EbmlCallbacks KaxTagMultiCommercial::ClassInfos(KaxTagMultiCommercial::Create, KaxTagMultiCommercial_TheId, "MultiCommercial", KaxTagMultiCommercial_Context);
const EbmlCallbacks KaxTagCommercial::ClassInfos(KaxTagCommercial::Create, KaxTagCommercial_TheId, "Commercial", KaxTagCommercial_Context);
const EbmlCallbacks KaxTagMultiCommercialType::ClassInfos(KaxTagMultiCommercialType::Create, KaxTagMultiCommercialType_TheId, "MultiCommercialType", KaxTagMultiCommercialType_Context);
const EbmlCallbacks KaxTagMultiCommercialAddress::ClassInfos(KaxTagMultiCommercialAddress::Create, KaxTagMultiCommercialAddress_TheId, "MultiCommercialAddress", KaxTagMultiCommercialAddress_Context);
const EbmlCallbacks KaxTagMultiCommercialURL::ClassInfos(KaxTagMultiCommercialURL::Create, KaxTagMultiCommercialURL_TheId, "MultiCommercialURL", KaxTagMultiCommercialURL_Context);
const EbmlCallbacks KaxTagMultiCommercialEmail::ClassInfos(KaxTagMultiCommercialEmail::Create, KaxTagMultiCommercialEmail_TheId, "MultiCommercialEmail", KaxTagMultiCommercialEmail_Context);
const EbmlCallbacks KaxTagMultiPrice::ClassInfos(KaxTagMultiPrice::Create, KaxTagMultiPrice_TheId, "MultiPrice", KaxTagMultiPrice_Context);
const EbmlCallbacks KaxTagMultiPriceCurrency::ClassInfos(KaxTagMultiPriceCurrency::Create, KaxTagMultiPriceCurrency_TheId, "MultiPriceCurrency", KaxTagMultiPriceCurrency_Context);
const EbmlCallbacks KaxTagMultiPriceAmount::ClassInfos(KaxTagMultiPriceAmount::Create, KaxTagMultiPriceAmount_TheId, "MultiPriceAmount", KaxTagMultiPriceAmount_Context);
const EbmlCallbacks KaxTagMultiPricePriceDate::ClassInfos(KaxTagMultiPricePriceDate::Create, KaxTagMultiPricePriceDate_TheId, "MultiPricePriceDate", KaxTagMultiPricePriceDate_Context);
const EbmlCallbacks KaxTagMultiDate::ClassInfos(KaxTagMultiDate::Create, KaxTagMultiDate_TheId, "MultiDate", KaxTagMultiDate_Context);
const EbmlCallbacks KaxTagDate::ClassInfos(KaxTagDate::Create, KaxTagDate_TheId, "Date", KaxTagDate_Context);
const EbmlCallbacks KaxTagMultiDateType::ClassInfos(KaxTagMultiDateType::Create, KaxTagMultiDateType_TheId, "MultiDateType", KaxTagMultiDateType_Context);
const EbmlCallbacks KaxTagMultiDateDateBegin::ClassInfos(KaxTagMultiDateDateBegin::Create, KaxTagMultiDateDateBegin_TheId, "MultiDateDateBegin", KaxTagMultiDateDateBegin_Context);
const EbmlCallbacks KaxTagMultiDateDateEnd::ClassInfos(KaxTagMultiDateDateEnd::Create, KaxTagMultiDateDateEnd_TheId, "MultiDateDateEnd", KaxTagMultiDateDateEnd_Context);
const EbmlCallbacks KaxTagMultiEntity::ClassInfos(KaxTagMultiEntity::Create, KaxTagMultiEntity_TheId, "MultiEntity", KaxTagMultiEntity_Context);
const EbmlCallbacks KaxTagEntity::ClassInfos(KaxTagEntity::Create, KaxTagEntity_TheId, "Entity", KaxTagEntity_Context);
const EbmlCallbacks KaxTagMultiEntityType::ClassInfos(KaxTagMultiEntityType::Create, KaxTagMultiEntityType_TheId, "MultiEntityType", KaxTagMultiEntityType_Context);
const EbmlCallbacks KaxTagMultiEntityName::ClassInfos(KaxTagMultiEntityName::Create, KaxTagMultiEntityName_TheId, "MultiEntityName", KaxTagMultiEntityName_Context);
const EbmlCallbacks KaxTagMultiEntityURL::ClassInfos(KaxTagMultiEntityURL::Create, KaxTagMultiEntityURL_TheId, "MultiEntityURL", KaxTagMultiEntityURL_Context);
const EbmlCallbacks KaxTagMultiEntityEmail::ClassInfos(KaxTagMultiEntityEmail::Create, KaxTagMultiEntityEmail_TheId, "MultiEntityEmail", KaxTagMultiEntityEmail_Context);
const EbmlCallbacks KaxTagMultiEntityAddress::ClassInfos(KaxTagMultiEntityAddress::Create, KaxTagMultiEntityAddress_TheId, "MultiEntityAddress", KaxTagMultiEntityAddress_Context);
const EbmlCallbacks KaxTagMultiIdentifier::ClassInfos(KaxTagMultiIdentifier::Create, KaxTagMultiIdentifier_TheId, "MultiIdentifier", KaxTagMultiIdentifier_Context);
const EbmlCallbacks KaxTagIdentifier::ClassInfos(KaxTagIdentifier::Create, KaxTagIdentifier_TheId, "Identifier", KaxTagIdentifier_Context);
const EbmlCallbacks KaxTagMultiIdentifierType::ClassInfos(KaxTagMultiIdentifierType::Create, KaxTagMultiIdentifierType_TheId, "TagMultiIdentifierType", KaxTagMultiIdentifierType_Context);
const EbmlCallbacks KaxTagMultiIdentifierBinary::ClassInfos(KaxTagMultiIdentifierBinary::Create, KaxTagMultiIdentifierBinary_TheId, "MultiIdentifierBinary", KaxTagMultiIdentifierBinary_Context);
const EbmlCallbacks KaxTagMultiIdentifierString::ClassInfos(KaxTagMultiIdentifierString::Create, KaxTagMultiIdentifierString_TheId, "MultiIdentifierString", KaxTagMultiIdentifierString_Context);
const EbmlCallbacks KaxTagMultiLegal::ClassInfos(KaxTagMultiLegal::Create, KaxTagMultiLegal_TheId, "MultiLegal", KaxTagMultiLegal_Context);
const EbmlCallbacks KaxTagLegal::ClassInfos(KaxTagLegal::Create, KaxTagLegal_TheId, "Legal", KaxTagLegal_Context);
const EbmlCallbacks KaxTagMultiLegalType::ClassInfos(KaxTagMultiLegalType::Create, KaxTagMultiLegalType_TheId, "KaxTagMultiLegalType", KaxTagMultiLegalType_Context);
const EbmlCallbacks KaxTagMultiLegalContent::ClassInfos(KaxTagMultiLegalContent::Create, KaxTagMultiLegalContent_TheId, "TagMultiLegalContent", KaxTagMultiLegalContent_Context);
const EbmlCallbacks KaxTagMultiLegalURL::ClassInfos(KaxTagMultiLegalURL::Create, KaxTagMultiLegalURL_TheId, "KaxTagMultiLegalURL", KaxTagMultiLegalURL_Context);
const EbmlCallbacks KaxTagMultiLegalAddress::ClassInfos(KaxTagMultiLegalAddress::Create, KaxTagMultiLegalAddress_TheId, "KaxTagMultiLegalAddress", KaxTagMultiLegalAddress_Context);
const EbmlCallbacks KaxTagMultiTitle::ClassInfos(KaxTagMultiTitle::Create, KaxTagMultiTitle_TheId, "MultiEntity", KaxTagMultiTitle_Context);
const EbmlCallbacks KaxTagTitle::ClassInfos(KaxTagTitle::Create, KaxTagTitle_TheId, "Entity", KaxTagTitle_Context);
const EbmlCallbacks KaxTagMultiTitleType::ClassInfos(KaxTagMultiTitleType::Create, KaxTagMultiTitleType_TheId, "MultiTitleType", KaxTagMultiTitleType_Context);
const EbmlCallbacks KaxTagMultiTitleName::ClassInfos(KaxTagMultiTitleName::Create, KaxTagMultiTitleName_TheId, "MultiTitleName", KaxTagMultiTitleName_Context);
const EbmlCallbacks KaxTagMultiTitleSubTitle::ClassInfos(KaxTagMultiTitleSubTitle::Create, KaxTagMultiTitleSubTitle_TheId, "MultiTitleSubTitle", KaxTagMultiTitleSubTitle_Context);
const EbmlCallbacks KaxTagMultiTitleEdition::ClassInfos(KaxTagMultiTitleEdition::Create, KaxTagMultiTitleEdition_TheId, "MultiTitleEdition", KaxTagMultiTitleEdition_Context);
const EbmlCallbacks KaxTagMultiTitleAddress::ClassInfos(KaxTagMultiTitleAddress::Create, KaxTagMultiTitleAddress_TheId, "MultiTitleAddress", KaxTagMultiTitleAddress_Context);
const EbmlCallbacks KaxTagMultiTitleURL::ClassInfos(KaxTagMultiTitleURL::Create, KaxTagMultiTitleURL_TheId, "MultiTitleURL", KaxTagMultiTitleURL_Context);
const EbmlCallbacks KaxTagMultiTitleEmail::ClassInfos(KaxTagMultiTitleEmail::Create, KaxTagMultiTitleEmail_TheId, "MultiTitleEmail", KaxTagMultiTitleEmail_Context);
const EbmlCallbacks KaxTagMultiTitleLanguage::ClassInfos(KaxTagMultiTitleLanguage::Create, KaxTagMultiTitleLanguage_TheId, "MultiTitleLanguage", KaxTagMultiTitleLanguage_Context);
const EbmlCallbacks KaxTagMultiAttachment::ClassInfos(KaxTagMultiAttachment::Create, KaxTagMultiAttachment_TheId, "TagMultiAttachment", KaxTagMultiAttachment_Context);
const EbmlCallbacks KaxTagAttachment::ClassInfos(KaxTagAttachment::Create, KaxTagAttachment_TheId, "TagAttachment", KaxTagAttachment_Context);
const EbmlCallbacks KaxTagAttachmentID::ClassInfos(KaxTagAttachmentID::Create, KaxTagAttachmentID_TheId, "TagAttachmentID", KaxTagAttachmentID_Context);
KaxTagMultiComment::KaxTagMultiComment()
:EbmlMaster(KaxTagMultiComment_Context)
{}
KaxTagMultiCommercial::KaxTagMultiCommercial()
:EbmlMaster(KaxTagMultiCommercial_Context)
{}
KaxTagCommercial::KaxTagCommercial()
:EbmlMaster(KaxTagCommercial_Context)
{}
KaxTagMultiPrice::KaxTagMultiPrice()
:EbmlMaster(KaxTagMultiPrice_Context)
{}
KaxTagMultiDate::KaxTagMultiDate()
:EbmlMaster(KaxTagMultiDate_Context)
{}
KaxTagDate::KaxTagDate()
:EbmlMaster(KaxTagDate_Context)
{}
KaxTagMultiEntity::KaxTagMultiEntity()
:EbmlMaster(KaxTagMultiEntity_Context)
{}
KaxTagEntity::KaxTagEntity()
:EbmlMaster(KaxTagEntity_Context)
{}
KaxTagMultiLegal::KaxTagMultiLegal()
:EbmlMaster(KaxTagMultiLegal_Context)
{}
KaxTagLegal::KaxTagLegal()
:EbmlMaster(KaxTagLegal_Context)
{}
KaxTagMultiIdentifier::KaxTagMultiIdentifier()
:EbmlMaster(KaxTagMultiIdentifier_Context)
{}
KaxTagIdentifier::KaxTagIdentifier()
:EbmlMaster(KaxTagIdentifier_Context)
{}
KaxTagMultiTitle::KaxTagMultiTitle()
:EbmlMaster(KaxTagMultiTitle_Context)
{}
KaxTagTitle::KaxTagTitle()
:EbmlMaster(KaxTagTitle_Context)
{}
KaxTagMultiAttachment::KaxTagMultiAttachment()
:EbmlMaster(KaxTagMultiAttachment_Context)
{}
KaxTagAttachment::KaxTagAttachment()
:EbmlMaster(KaxTagAttachment_Context)
{}
const EbmlSemanticContext & GetKaxTagsGlobal_Context()
{
return KaxTagMultiGlobal_Context;
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTagMulti.cpp 640 2004-07-09 21:05:36Z mosu $
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTagMulti.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxTagMultiGlobal_ContextList[1] =
{
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiComment)),
};
EbmlSemantic KaxTagMultiComment_ContextList[3] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentName)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentComments)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentLanguage)),
};
EbmlSemantic KaxTagMultiCommercial_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagCommercial)),
};
EbmlSemantic KaxTagCommercial_ContextList[5] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiCommercialType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommercialAddress)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiCommercialURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiCommercialEmail)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiPrice)),
};
EbmlSemantic KaxTagMultiPrice_ContextList[3] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceCurrency)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceAmount)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPricePriceDate)),
};
EbmlSemantic KaxTagMultiDate_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagDate)),
};
EbmlSemantic KaxTagDate_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiDateType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateBegin)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateEnd)),
};
EbmlSemantic KaxTagMultiEntity_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagEntity)),
};
EbmlSemantic KaxTagEntity_ContextList[5] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiEntityType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntityName)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiEntityURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiEntityEmail)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiEntityAddress)),
};
EbmlSemantic KaxTagMultiIdentifier_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagIdentifier)),
};
EbmlSemantic KaxTagIdentifier_ContextList[3] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiIdentifierType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierBinary)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierString)),
};
EbmlSemantic KaxTagMultiLegal_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagLegal)),
};
EbmlSemantic KaxTagLegal_ContextList[4] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiLegalType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegalContent)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiLegalURL)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiLegalAddress)),
};
EbmlSemantic KaxTagMultiTitle_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagTitle)),
};
EbmlSemantic KaxTagTitle_ContextList[8] =
{
EbmlSemantic(true, true, EBML_INFO(KaxTagMultiTitleType)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleName)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleSubTitle)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleEdition)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleAddress)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiTitleURL)),
EbmlSemantic(false, false, EBML_INFO(KaxTagMultiTitleEmail)),
EbmlSemantic(false, true, EBML_INFO(KaxTagMultiTitleLanguage)),
};
EbmlSemantic KaxTagMultiAttachment_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTagAttachment)),
};
EbmlSemantic KaxTagAttachment_ContextList[1] =
{
EbmlSemantic(false, true, EBML_INFO(KaxTagAttachmentID)),
};
const EbmlSemanticContext KaxTagMultiGlobal_Context = EbmlSemanticContext(countof(KaxTagMultiGlobal_ContextList), KaxTagMultiGlobal_ContextList, NULL, *GetKaxGlobal_Context, NULL);
const EbmlSemanticContext KaxTagMultiComment_Context = EbmlSemanticContext(countof(KaxTagMultiComment_ContextList), KaxTagMultiComment_ContextList, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiComment));
const EbmlSemanticContext KaxTagMultiCommentName_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentName));
const EbmlSemanticContext KaxTagMultiCommentComments_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentComments));
const EbmlSemanticContext KaxTagMultiCommentLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentLanguage));
const EbmlSemanticContext KaxTagMultiCommercial_Context = EbmlSemanticContext(countof(KaxTagMultiCommercial_ContextList), KaxTagMultiCommercial_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiCommercial));
const EbmlSemanticContext KaxTagCommercial_Context = EbmlSemanticContext(countof(KaxTagCommercial_ContextList), KaxTagCommercial_ContextList, &KaxTagMultiCommercial_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagCommercial));
const EbmlSemanticContext KaxTagMultiCommercialType_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialType));
const EbmlSemanticContext KaxTagMultiCommercialAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialAddress));
const EbmlSemanticContext KaxTagMultiCommercialURL_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialURL));
const EbmlSemanticContext KaxTagMultiCommercialEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialEmail));
const EbmlSemanticContext KaxTagMultiPrice_Context = EbmlSemanticContext(countof(KaxTagMultiPrice_ContextList), KaxTagMultiPrice_ContextList, &KaxTagCommercial_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiPrice));
const EbmlSemanticContext KaxTagMultiPriceCurrency_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPriceCurrency));
const EbmlSemanticContext KaxTagMultiPriceAmount_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPriceAmount));
const EbmlSemanticContext KaxTagMultiPricePriceDate_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPricePriceDate));
const EbmlSemanticContext KaxTagMultiDate_Context = EbmlSemanticContext(countof(KaxTagMultiDate_ContextList), KaxTagMultiDate_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiDate));
const EbmlSemanticContext KaxTagDate_Context = EbmlSemanticContext(countof(KaxTagDate_ContextList), KaxTagDate_ContextList, &KaxTagMultiDate_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagDate));
const EbmlSemanticContext KaxTagMultiDateType_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateType));
const EbmlSemanticContext KaxTagMultiDateDateBegin_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateDateBegin));
const EbmlSemanticContext KaxTagMultiDateDateEnd_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateDateEnd));
const EbmlSemanticContext KaxTagMultiEntity_Context = EbmlSemanticContext(countof(KaxTagMultiEntity_ContextList), KaxTagMultiEntity_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiEntity));
const EbmlSemanticContext KaxTagEntity_Context = EbmlSemanticContext(countof(KaxTagEntity_ContextList), KaxTagEntity_ContextList, &KaxTagMultiEntity_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagEntity));
const EbmlSemanticContext KaxTagMultiEntityType_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityType));
const EbmlSemanticContext KaxTagMultiEntityName_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityName));
const EbmlSemanticContext KaxTagMultiEntityURL_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityURL));
const EbmlSemanticContext KaxTagMultiEntityEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityEmail));
const EbmlSemanticContext KaxTagMultiEntityAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityAddress));
const EbmlSemanticContext KaxTagMultiIdentifier_Context = EbmlSemanticContext(countof(KaxTagMultiIdentifier_ContextList), KaxTagMultiIdentifier_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiIdentifier));
const EbmlSemanticContext KaxTagIdentifier_Context = EbmlSemanticContext(countof(KaxTagIdentifier_ContextList), KaxTagIdentifier_ContextList, &KaxTagMultiIdentifier_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagIdentifier));
const EbmlSemanticContext KaxTagMultiIdentifierType_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierType));
const EbmlSemanticContext KaxTagMultiIdentifierBinary_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierBinary));
const EbmlSemanticContext KaxTagMultiIdentifierString_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierString));
const EbmlSemanticContext KaxTagMultiLegal_Context = EbmlSemanticContext(countof(KaxTagMultiLegal_ContextList), KaxTagMultiLegal_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiLegal));
const EbmlSemanticContext KaxTagLegal_Context = EbmlSemanticContext(countof(KaxTagLegal_ContextList), KaxTagLegal_ContextList, &KaxTagMultiLegal_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagLegal));
const EbmlSemanticContext KaxTagMultiLegalType_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalType));
const EbmlSemanticContext KaxTagMultiLegalContent_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalContent));
const EbmlSemanticContext KaxTagMultiLegalURL_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalURL));
const EbmlSemanticContext KaxTagMultiLegalAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalAddress));
const EbmlSemanticContext KaxTagMultiTitle_Context = EbmlSemanticContext(countof(KaxTagMultiTitle_ContextList), KaxTagMultiTitle_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiTitle));
const EbmlSemanticContext KaxTagTitle_Context = EbmlSemanticContext(countof(KaxTagTitle_ContextList), KaxTagTitle_ContextList, &KaxTagMultiTitle_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagTitle));
const EbmlSemanticContext KaxTagMultiTitleType_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleType));
const EbmlSemanticContext KaxTagMultiTitleName_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleName));
const EbmlSemanticContext KaxTagMultiTitleSubTitle_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleSubTitle));
const EbmlSemanticContext KaxTagMultiTitleEdition_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleEdition));
const EbmlSemanticContext KaxTagMultiTitleAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleAddress));
const EbmlSemanticContext KaxTagMultiTitleURL_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleURL));
const EbmlSemanticContext KaxTagMultiTitleEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleEmail));
const EbmlSemanticContext KaxTagMultiTitleLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleLanguage));
const EbmlSemanticContext KaxTagMultiAttachment_Context = EbmlSemanticContext(countof(KaxTagMultiAttachment_ContextList), KaxTagMultiAttachment_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiAttachment));
const EbmlSemanticContext KaxTagAttachment_Context = EbmlSemanticContext(countof(KaxTagAttachment_ContextList), KaxTagAttachment_ContextList, &KaxTagMultiAttachment_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagAttachment));
const EbmlSemanticContext KaxTagAttachmentID_Context = EbmlSemanticContext(0, NULL, &KaxTagAttachment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAttachmentID));
//The Muti Elements
EbmlId KaxTagMultiComment_TheId (0x5B7B, 2);
EbmlId KaxTagMultiCommentName_TheId (0x5F7D, 2);
EbmlId KaxTagMultiCommentComments_TheId (0x5F7C, 2);
EbmlId KaxTagMultiCommentLanguage_TheId (0x22B59D, 3);
EbmlId KaxTagMultiCommercial_TheId (0x4DC7, 2);
EbmlId KaxTagCommercial_TheId (0x4EC7, 2);
EbmlId KaxTagMultiCommercialType_TheId (0x5BD7, 2);
EbmlId KaxTagMultiCommercialAddress_TheId (0x5BBB, 2);
EbmlId KaxTagMultiCommercialURL_TheId (0x5BDA, 2);
EbmlId KaxTagMultiCommercialEmail_TheId (0x5BC0, 2);
EbmlId KaxTagMultiPrice_TheId (0x5BC3, 2);
EbmlId KaxTagMultiPriceCurrency_TheId (0x5B6C, 2);
EbmlId KaxTagMultiPriceAmount_TheId (0x5B6E, 2);
EbmlId KaxTagMultiPricePriceDate_TheId (0x5B6F, 2);
EbmlId KaxTagMultiDate_TheId (0x4DC8, 2);
EbmlId KaxTagDate_TheId (0x4EC8, 2);
EbmlId KaxTagMultiDateType_TheId (0x5BD8, 2);
EbmlId KaxTagMultiDateDateBegin_TheId (0x4460, 2);
EbmlId KaxTagMultiDateDateEnd_TheId (0x4462, 2);
EbmlId KaxTagMultiEntity_TheId (0x4DC9, 2);
EbmlId KaxTagEntity_TheId (0x4EC9, 2);
EbmlId KaxTagMultiEntityType_TheId (0x5BD9, 2);
EbmlId KaxTagMultiEntityName_TheId (0x5BED, 2);
EbmlId KaxTagMultiEntityAddress_TheId (0x5BDC, 2);
EbmlId KaxTagMultiEntityURL_TheId (0x5BDB, 2);
EbmlId KaxTagMultiEntityEmail_TheId (0x5BC1, 2);
EbmlId KaxTagMultiIdentifier_TheId (0x4DC6, 2);
EbmlId KaxTagIdentifier_TheId (0x4EC6, 2);
EbmlId KaxTagMultiIdentifierType_TheId (0x5BAD, 2);
EbmlId KaxTagMultiIdentifierBinary_TheId (0x6B67, 2);
EbmlId KaxTagMultiIdentifierString_TheId (0x6B68, 2);
EbmlId KaxTagMultiLegal_TheId (0x4DC5, 2);
EbmlId KaxTagLegal_TheId (0x4EC5, 2);
EbmlId KaxTagMultiLegalType_TheId (0x5BBD, 2);
EbmlId KaxTagMultiLegalContent_TheId (0x5BB2, 2);
EbmlId KaxTagMultiLegalURL_TheId (0x5B34, 2);
EbmlId KaxTagMultiLegalAddress_TheId (0x5B9B, 2);
EbmlId KaxTagMultiTitle_TheId (0x4DC4, 2);
EbmlId KaxTagTitle_TheId (0x4EC4, 2);
EbmlId KaxTagMultiTitleType_TheId (0x5B7D, 2);
EbmlId KaxTagMultiTitleName_TheId (0x5BB9, 2);
EbmlId KaxTagMultiTitleSubTitle_TheId (0x5B5B, 2);
EbmlId KaxTagMultiTitleEdition_TheId (0x5BAE, 2);
EbmlId KaxTagMultiTitleAddress_TheId (0x5B33, 2);
EbmlId KaxTagMultiTitleURL_TheId (0x5BA9, 2);
EbmlId KaxTagMultiTitleEmail_TheId (0x5BC9, 2);
EbmlId KaxTagMultiTitleLanguage_TheId (0x22B59E, 3);
EbmlId KaxTagMultiAttachment_TheId (0x4DC3, 2);
EbmlId KaxTagAttachment_TheId (0x4EC3, 2);
EbmlId KaxTagAttachmentID_TheId (0x5BA0, 2);
const EbmlCallbacks KaxTagMultiComment::ClassInfos(KaxTagMultiComment::Create, KaxTagMultiComment_TheId, "MultiComment", KaxTagMultiComment_Context);
const EbmlCallbacks KaxTagMultiCommentName::ClassInfos(KaxTagMultiCommentName::Create, KaxTagMultiCommentName_TheId, "MultiCommentName", KaxTagMultiCommentName_Context);
const EbmlCallbacks KaxTagMultiCommentComments::ClassInfos(KaxTagMultiCommentComments::Create, KaxTagMultiCommentComments_TheId, "MultiCommentComments", KaxTagMultiCommentComments_Context);
const EbmlCallbacks KaxTagMultiCommentLanguage::ClassInfos(KaxTagMultiCommentLanguage::Create, KaxTagMultiCommentLanguage_TheId, "MultiCommentLanguage", KaxTagMultiCommentLanguage_Context);
const EbmlCallbacks KaxTagMultiCommercial::ClassInfos(KaxTagMultiCommercial::Create, KaxTagMultiCommercial_TheId, "MultiCommercial", KaxTagMultiCommercial_Context);
const EbmlCallbacks KaxTagCommercial::ClassInfos(KaxTagCommercial::Create, KaxTagCommercial_TheId, "Commercial", KaxTagCommercial_Context);
const EbmlCallbacks KaxTagMultiCommercialType::ClassInfos(KaxTagMultiCommercialType::Create, KaxTagMultiCommercialType_TheId, "MultiCommercialType", KaxTagMultiCommercialType_Context);
const EbmlCallbacks KaxTagMultiCommercialAddress::ClassInfos(KaxTagMultiCommercialAddress::Create, KaxTagMultiCommercialAddress_TheId, "MultiCommercialAddress", KaxTagMultiCommercialAddress_Context);
const EbmlCallbacks KaxTagMultiCommercialURL::ClassInfos(KaxTagMultiCommercialURL::Create, KaxTagMultiCommercialURL_TheId, "MultiCommercialURL", KaxTagMultiCommercialURL_Context);
const EbmlCallbacks KaxTagMultiCommercialEmail::ClassInfos(KaxTagMultiCommercialEmail::Create, KaxTagMultiCommercialEmail_TheId, "MultiCommercialEmail", KaxTagMultiCommercialEmail_Context);
const EbmlCallbacks KaxTagMultiPrice::ClassInfos(KaxTagMultiPrice::Create, KaxTagMultiPrice_TheId, "MultiPrice", KaxTagMultiPrice_Context);
const EbmlCallbacks KaxTagMultiPriceCurrency::ClassInfos(KaxTagMultiPriceCurrency::Create, KaxTagMultiPriceCurrency_TheId, "MultiPriceCurrency", KaxTagMultiPriceCurrency_Context);
const EbmlCallbacks KaxTagMultiPriceAmount::ClassInfos(KaxTagMultiPriceAmount::Create, KaxTagMultiPriceAmount_TheId, "MultiPriceAmount", KaxTagMultiPriceAmount_Context);
const EbmlCallbacks KaxTagMultiPricePriceDate::ClassInfos(KaxTagMultiPricePriceDate::Create, KaxTagMultiPricePriceDate_TheId, "MultiPricePriceDate", KaxTagMultiPricePriceDate_Context);
const EbmlCallbacks KaxTagMultiDate::ClassInfos(KaxTagMultiDate::Create, KaxTagMultiDate_TheId, "MultiDate", KaxTagMultiDate_Context);
const EbmlCallbacks KaxTagDate::ClassInfos(KaxTagDate::Create, KaxTagDate_TheId, "Date", KaxTagDate_Context);
const EbmlCallbacks KaxTagMultiDateType::ClassInfos(KaxTagMultiDateType::Create, KaxTagMultiDateType_TheId, "MultiDateType", KaxTagMultiDateType_Context);
const EbmlCallbacks KaxTagMultiDateDateBegin::ClassInfos(KaxTagMultiDateDateBegin::Create, KaxTagMultiDateDateBegin_TheId, "MultiDateDateBegin", KaxTagMultiDateDateBegin_Context);
const EbmlCallbacks KaxTagMultiDateDateEnd::ClassInfos(KaxTagMultiDateDateEnd::Create, KaxTagMultiDateDateEnd_TheId, "MultiDateDateEnd", KaxTagMultiDateDateEnd_Context);
const EbmlCallbacks KaxTagMultiEntity::ClassInfos(KaxTagMultiEntity::Create, KaxTagMultiEntity_TheId, "MultiEntity", KaxTagMultiEntity_Context);
const EbmlCallbacks KaxTagEntity::ClassInfos(KaxTagEntity::Create, KaxTagEntity_TheId, "Entity", KaxTagEntity_Context);
const EbmlCallbacks KaxTagMultiEntityType::ClassInfos(KaxTagMultiEntityType::Create, KaxTagMultiEntityType_TheId, "MultiEntityType", KaxTagMultiEntityType_Context);
const EbmlCallbacks KaxTagMultiEntityName::ClassInfos(KaxTagMultiEntityName::Create, KaxTagMultiEntityName_TheId, "MultiEntityName", KaxTagMultiEntityName_Context);
const EbmlCallbacks KaxTagMultiEntityURL::ClassInfos(KaxTagMultiEntityURL::Create, KaxTagMultiEntityURL_TheId, "MultiEntityURL", KaxTagMultiEntityURL_Context);
const EbmlCallbacks KaxTagMultiEntityEmail::ClassInfos(KaxTagMultiEntityEmail::Create, KaxTagMultiEntityEmail_TheId, "MultiEntityEmail", KaxTagMultiEntityEmail_Context);
const EbmlCallbacks KaxTagMultiEntityAddress::ClassInfos(KaxTagMultiEntityAddress::Create, KaxTagMultiEntityAddress_TheId, "MultiEntityAddress", KaxTagMultiEntityAddress_Context);
const EbmlCallbacks KaxTagMultiIdentifier::ClassInfos(KaxTagMultiIdentifier::Create, KaxTagMultiIdentifier_TheId, "MultiIdentifier", KaxTagMultiIdentifier_Context);
const EbmlCallbacks KaxTagIdentifier::ClassInfos(KaxTagIdentifier::Create, KaxTagIdentifier_TheId, "Identifier", KaxTagIdentifier_Context);
const EbmlCallbacks KaxTagMultiIdentifierType::ClassInfos(KaxTagMultiIdentifierType::Create, KaxTagMultiIdentifierType_TheId, "TagMultiIdentifierType", KaxTagMultiIdentifierType_Context);
const EbmlCallbacks KaxTagMultiIdentifierBinary::ClassInfos(KaxTagMultiIdentifierBinary::Create, KaxTagMultiIdentifierBinary_TheId, "MultiIdentifierBinary", KaxTagMultiIdentifierBinary_Context);
const EbmlCallbacks KaxTagMultiIdentifierString::ClassInfos(KaxTagMultiIdentifierString::Create, KaxTagMultiIdentifierString_TheId, "MultiIdentifierString", KaxTagMultiIdentifierString_Context);
const EbmlCallbacks KaxTagMultiLegal::ClassInfos(KaxTagMultiLegal::Create, KaxTagMultiLegal_TheId, "MultiLegal", KaxTagMultiLegal_Context);
const EbmlCallbacks KaxTagLegal::ClassInfos(KaxTagLegal::Create, KaxTagLegal_TheId, "Legal", KaxTagLegal_Context);
const EbmlCallbacks KaxTagMultiLegalType::ClassInfos(KaxTagMultiLegalType::Create, KaxTagMultiLegalType_TheId, "KaxTagMultiLegalType", KaxTagMultiLegalType_Context);
const EbmlCallbacks KaxTagMultiLegalContent::ClassInfos(KaxTagMultiLegalContent::Create, KaxTagMultiLegalContent_TheId, "TagMultiLegalContent", KaxTagMultiLegalContent_Context);
const EbmlCallbacks KaxTagMultiLegalURL::ClassInfos(KaxTagMultiLegalURL::Create, KaxTagMultiLegalURL_TheId, "KaxTagMultiLegalURL", KaxTagMultiLegalURL_Context);
const EbmlCallbacks KaxTagMultiLegalAddress::ClassInfos(KaxTagMultiLegalAddress::Create, KaxTagMultiLegalAddress_TheId, "KaxTagMultiLegalAddress", KaxTagMultiLegalAddress_Context);
const EbmlCallbacks KaxTagMultiTitle::ClassInfos(KaxTagMultiTitle::Create, KaxTagMultiTitle_TheId, "MultiEntity", KaxTagMultiTitle_Context);
const EbmlCallbacks KaxTagTitle::ClassInfos(KaxTagTitle::Create, KaxTagTitle_TheId, "Entity", KaxTagTitle_Context);
const EbmlCallbacks KaxTagMultiTitleType::ClassInfos(KaxTagMultiTitleType::Create, KaxTagMultiTitleType_TheId, "MultiTitleType", KaxTagMultiTitleType_Context);
const EbmlCallbacks KaxTagMultiTitleName::ClassInfos(KaxTagMultiTitleName::Create, KaxTagMultiTitleName_TheId, "MultiTitleName", KaxTagMultiTitleName_Context);
const EbmlCallbacks KaxTagMultiTitleSubTitle::ClassInfos(KaxTagMultiTitleSubTitle::Create, KaxTagMultiTitleSubTitle_TheId, "MultiTitleSubTitle", KaxTagMultiTitleSubTitle_Context);
const EbmlCallbacks KaxTagMultiTitleEdition::ClassInfos(KaxTagMultiTitleEdition::Create, KaxTagMultiTitleEdition_TheId, "MultiTitleEdition", KaxTagMultiTitleEdition_Context);
const EbmlCallbacks KaxTagMultiTitleAddress::ClassInfos(KaxTagMultiTitleAddress::Create, KaxTagMultiTitleAddress_TheId, "MultiTitleAddress", KaxTagMultiTitleAddress_Context);
const EbmlCallbacks KaxTagMultiTitleURL::ClassInfos(KaxTagMultiTitleURL::Create, KaxTagMultiTitleURL_TheId, "MultiTitleURL", KaxTagMultiTitleURL_Context);
const EbmlCallbacks KaxTagMultiTitleEmail::ClassInfos(KaxTagMultiTitleEmail::Create, KaxTagMultiTitleEmail_TheId, "MultiTitleEmail", KaxTagMultiTitleEmail_Context);
const EbmlCallbacks KaxTagMultiTitleLanguage::ClassInfos(KaxTagMultiTitleLanguage::Create, KaxTagMultiTitleLanguage_TheId, "MultiTitleLanguage", KaxTagMultiTitleLanguage_Context);
const EbmlCallbacks KaxTagMultiAttachment::ClassInfos(KaxTagMultiAttachment::Create, KaxTagMultiAttachment_TheId, "TagMultiAttachment", KaxTagMultiAttachment_Context);
const EbmlCallbacks KaxTagAttachment::ClassInfos(KaxTagAttachment::Create, KaxTagAttachment_TheId, "TagAttachment", KaxTagAttachment_Context);
const EbmlCallbacks KaxTagAttachmentID::ClassInfos(KaxTagAttachmentID::Create, KaxTagAttachmentID_TheId, "TagAttachmentID", KaxTagAttachmentID_Context);
KaxTagMultiComment::KaxTagMultiComment()
:EbmlMaster(KaxTagMultiComment_Context)
{}
KaxTagMultiCommercial::KaxTagMultiCommercial()
:EbmlMaster(KaxTagMultiCommercial_Context)
{}
KaxTagCommercial::KaxTagCommercial()
:EbmlMaster(KaxTagCommercial_Context)
{}
KaxTagMultiPrice::KaxTagMultiPrice()
:EbmlMaster(KaxTagMultiPrice_Context)
{}
KaxTagMultiDate::KaxTagMultiDate()
:EbmlMaster(KaxTagMultiDate_Context)
{}
KaxTagDate::KaxTagDate()
:EbmlMaster(KaxTagDate_Context)
{}
KaxTagMultiEntity::KaxTagMultiEntity()
:EbmlMaster(KaxTagMultiEntity_Context)
{}
KaxTagEntity::KaxTagEntity()
:EbmlMaster(KaxTagEntity_Context)
{}
KaxTagMultiLegal::KaxTagMultiLegal()
:EbmlMaster(KaxTagMultiLegal_Context)
{}
KaxTagLegal::KaxTagLegal()
:EbmlMaster(KaxTagLegal_Context)
{}
KaxTagMultiIdentifier::KaxTagMultiIdentifier()
:EbmlMaster(KaxTagMultiIdentifier_Context)
{}
KaxTagIdentifier::KaxTagIdentifier()
:EbmlMaster(KaxTagIdentifier_Context)
{}
KaxTagMultiTitle::KaxTagMultiTitle()
:EbmlMaster(KaxTagMultiTitle_Context)
{}
KaxTagTitle::KaxTagTitle()
:EbmlMaster(KaxTagTitle_Context)
{}
KaxTagMultiAttachment::KaxTagMultiAttachment()
:EbmlMaster(KaxTagMultiAttachment_Context)
{}
KaxTagAttachment::KaxTagAttachment()
:EbmlMaster(KaxTagAttachment_Context)
{}
const EbmlSemanticContext & GetKaxTagsGlobal_Context()
{
return KaxTagMultiGlobal_Context;
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,60 +1,60 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTags.cpp 711 2004-08-10 12:58:47Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author Jory Stone <jcsston @ toughguy.net>
*/
#include "matroska/KaxTags.h"
#include "matroska/KaxTag.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxTags_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTag)),
};
const EbmlSemanticContext KaxTags_Context = EbmlSemanticContext(countof(KaxTags_ContextList), KaxTags_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTags));
EbmlId KaxTags_TheId(0x1254C367, 4);
const EbmlCallbacks KaxTags::ClassInfos(KaxTags::Create, KaxTags_TheId, "Tags", KaxTags_Context);
KaxTags::KaxTags()
:EbmlMaster(KaxTags_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTags.cpp 711 2004-08-10 12:58:47Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author Jory Stone <jcsston @ toughguy.net>
*/
#include "matroska/KaxTags.h"
#include "matroska/KaxTag.h"
#include "matroska/KaxContexts.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
EbmlSemantic KaxTags_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTag)),
};
const EbmlSemanticContext KaxTags_Context = EbmlSemanticContext(countof(KaxTags_ContextList), KaxTags_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTags));
EbmlId KaxTags_TheId(0x1254C367, 4);
const EbmlCallbacks KaxTags::ClassInfos(KaxTags::Create, KaxTags_TheId, "Tags", KaxTags_Context);
KaxTags::KaxTags()
:EbmlMaster(KaxTags_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,88 +1,88 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackAudio.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTrackAudio.h"
// sub elements
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
const EbmlSemantic KaxTrackAudio_ContextList[4] =
#else // MATROSKA_VERSION
const EbmlSemantic KaxTrackAudio_ContextList[5] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true , true, EBML_INFO(KaxAudioSamplingFreq)),
EbmlSemantic(true , true, EBML_INFO(KaxAudioChannels)),
EbmlSemantic(false, true, EBML_INFO(KaxAudioBitDepth)),
EbmlSemantic(false, true, EBML_INFO(KaxAudioOutputSamplingFreq)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxAudioPosition)),
#endif // MATROSKA_VERSION
};
const EbmlSemanticContext KaxTrackAudio_Context = EbmlSemanticContext(countof(KaxTrackAudio_ContextList), KaxTrackAudio_ContextList, &KaxTrackEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackAudio));
const EbmlSemanticContext KaxAudioSamplingFreq_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioSamplingFreq));
const EbmlSemanticContext KaxAudioOutputSamplingFreq_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioOutputSamplingFreq));
const EbmlSemanticContext KaxAudioChannels_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioChannels));
const EbmlSemanticContext KaxAudioBitDepth_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioBitDepth));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxAudioPosition_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioPosition));
#endif // MATROSKA_VERSION
EbmlId KaxTrackAudio_TheId (0xE1, 1);
EbmlId KaxAudioSamplingFreq_TheId(0xB5, 1);
EbmlId KaxAudioOutputSamplingFreq_TheId(0x78B5, 2);
EbmlId KaxAudioChannels_TheId (0x9F, 1);
EbmlId KaxAudioBitDepth_TheId (0x6264, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxAudioPosition_TheId (0x7D7B, 2);
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxTrackAudio::ClassInfos(KaxTrackAudio::Create, KaxTrackAudio_TheId, "TrackAudio", KaxTrackAudio_Context);
const EbmlCallbacks KaxAudioSamplingFreq::ClassInfos(KaxAudioSamplingFreq::Create, KaxAudioSamplingFreq_TheId, "AudioSamplingFreq", KaxAudioSamplingFreq_Context);
const EbmlCallbacks KaxAudioOutputSamplingFreq::ClassInfos(KaxAudioOutputSamplingFreq::Create, KaxAudioOutputSamplingFreq_TheId, "AudioOutputSamplingFreq", KaxAudioOutputSamplingFreq_Context);
const EbmlCallbacks KaxAudioChannels::ClassInfos(KaxAudioChannels::Create, KaxAudioChannels_TheId, "AudioChannels", KaxAudioChannels_Context);
const EbmlCallbacks KaxAudioBitDepth::ClassInfos(KaxAudioBitDepth::Create, KaxAudioBitDepth_TheId, "AudioBitDepth", KaxAudioBitDepth_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxAudioPosition::ClassInfos(KaxAudioPosition::Create, KaxAudioPosition_TheId, "AudioPosition", KaxAudioPosition_Context);
#endif // MATROSKA_VERSION
KaxTrackAudio::KaxTrackAudio()
:EbmlMaster(KaxTrackAudio_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackAudio.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTrackAudio.h"
// sub elements
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
const EbmlSemantic KaxTrackAudio_ContextList[4] =
#else // MATROSKA_VERSION
const EbmlSemantic KaxTrackAudio_ContextList[5] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true , true, EBML_INFO(KaxAudioSamplingFreq)),
EbmlSemantic(true , true, EBML_INFO(KaxAudioChannels)),
EbmlSemantic(false, true, EBML_INFO(KaxAudioBitDepth)),
EbmlSemantic(false, true, EBML_INFO(KaxAudioOutputSamplingFreq)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxAudioPosition)),
#endif // MATROSKA_VERSION
};
const EbmlSemanticContext KaxTrackAudio_Context = EbmlSemanticContext(countof(KaxTrackAudio_ContextList), KaxTrackAudio_ContextList, &KaxTrackEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackAudio));
const EbmlSemanticContext KaxAudioSamplingFreq_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioSamplingFreq));
const EbmlSemanticContext KaxAudioOutputSamplingFreq_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioOutputSamplingFreq));
const EbmlSemanticContext KaxAudioChannels_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioChannels));
const EbmlSemanticContext KaxAudioBitDepth_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioBitDepth));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxAudioPosition_Context = EbmlSemanticContext(0, NULL, &KaxTrackAudio_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxAudioPosition));
#endif // MATROSKA_VERSION
EbmlId KaxTrackAudio_TheId (0xE1, 1);
EbmlId KaxAudioSamplingFreq_TheId(0xB5, 1);
EbmlId KaxAudioOutputSamplingFreq_TheId(0x78B5, 2);
EbmlId KaxAudioChannels_TheId (0x9F, 1);
EbmlId KaxAudioBitDepth_TheId (0x6264, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxAudioPosition_TheId (0x7D7B, 2);
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxTrackAudio::ClassInfos(KaxTrackAudio::Create, KaxTrackAudio_TheId, "TrackAudio", KaxTrackAudio_Context);
const EbmlCallbacks KaxAudioSamplingFreq::ClassInfos(KaxAudioSamplingFreq::Create, KaxAudioSamplingFreq_TheId, "AudioSamplingFreq", KaxAudioSamplingFreq_Context);
const EbmlCallbacks KaxAudioOutputSamplingFreq::ClassInfos(KaxAudioOutputSamplingFreq::Create, KaxAudioOutputSamplingFreq_TheId, "AudioOutputSamplingFreq", KaxAudioOutputSamplingFreq_Context);
const EbmlCallbacks KaxAudioChannels::ClassInfos(KaxAudioChannels::Create, KaxAudioChannels_TheId, "AudioChannels", KaxAudioChannels_Context);
const EbmlCallbacks KaxAudioBitDepth::ClassInfos(KaxAudioBitDepth::Create, KaxAudioBitDepth_TheId, "AudioBitDepth", KaxAudioBitDepth_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxAudioPosition::ClassInfos(KaxAudioPosition::Create, KaxAudioPosition_TheId, "AudioPosition", KaxAudioPosition_Context);
#endif // MATROSKA_VERSION
KaxTrackAudio::KaxTrackAudio()
:EbmlMaster(KaxTrackAudio_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,142 +1,142 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackEntryData.cpp 1201 2005-08-30 14:28:27Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
*/
#include "matroska/KaxTrackEntryData.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxTrackTranslate_ContextList[3] =
{
EbmlSemantic(false, false,EBML_INFO(KaxTrackTranslateEditionUID)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateCodec)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateTrackID)),
};
EbmlId KaxTrackNumber_TheId (0xD7, 1);
EbmlId KaxTrackUID_TheId (0x73C5, 2);
EbmlId KaxTrackType_TheId (0x83, 1);
EbmlId KaxTrackFlagDefault_TheId (0x88, 1);
EbmlId KaxTrackFlagForced_TheId (0x55AA, 2);
EbmlId KaxTrackFlagLacing_TheId (0x9C, 1);
EbmlId KaxTrackMinCache_TheId (0x6DE7, 2);
EbmlId KaxTrackMaxCache_TheId (0x6DF8, 2);
EbmlId KaxTrackDefaultDuration_TheId (0x23E383, 3);
EbmlId KaxTrackTimecodeScale_TheId (0x23314F, 3);
EbmlId KaxMaxBlockAdditionID_TheId (0x55EE, 2);
EbmlId KaxTrackName_TheId (0x536E, 2);
EbmlId KaxTrackLanguage_TheId (0x22B59C, 3);
EbmlId KaxCodecID_TheId (0x86, 1);
EbmlId KaxCodecPrivate_TheId (0x63A2, 2);
EbmlId KaxCodecName_TheId (0x258688, 3);
EbmlId KaxTrackAttachmentLink_TheId (0x7446, 2);
EbmlId KaxTrackOverlay_TheId (0x6FAB, 2);
EbmlId KaxTrackTranslate_TheId (0x6624, 2);
EbmlId KaxTrackTranslateEditionUID_TheId(0x66FC, 2);
EbmlId KaxTrackTranslateCodec_TheId (0x66BF, 2);
EbmlId KaxTrackTranslateTrackID_TheId (0x66A5, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxTrackFlagEnabled_TheId (0xB9, 1);
EbmlId KaxCodecSettings_TheId (0x3A9697, 3);
EbmlId KaxCodecInfoURL_TheId (0x3B4040, 3);
EbmlId KaxCodecDownloadURL_TheId (0x26B240, 3);
EbmlId KaxCodecDecodeAll_TheId (0xAA, 1);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackNumber));
const EbmlSemanticContext KaxTrackUID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackUID));
const EbmlSemanticContext KaxTrackType_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackType));
const EbmlSemanticContext KaxTrackFlagDefault_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagDefault));
const EbmlSemanticContext KaxTrackFlagForced_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagForced));
const EbmlSemanticContext KaxTrackFlagLacing_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagLacing));
const EbmlSemanticContext KaxTrackMinCache_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackMinCache));
const EbmlSemanticContext KaxTrackMaxCache_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackMaxCache));
const EbmlSemanticContext KaxTrackDefaultDuration_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackDefaultDuration));
const EbmlSemanticContext KaxTrackTimecodeScale_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTimecodeScale));
const EbmlSemanticContext KaxMaxBlockAdditionID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMaxBlockAdditionID));
const EbmlSemanticContext KaxTrackName_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackName));
const EbmlSemanticContext KaxTrackLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackLanguage));
const EbmlSemanticContext KaxCodecID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecID));
const EbmlSemanticContext KaxCodecPrivate_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecPrivate));
const EbmlSemanticContext KaxCodecName_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecName));
const EbmlSemanticContext KaxTrackAttachmentLink_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackAttachmentLink));
const EbmlSemanticContext KaxTrackOverlay_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackOverlay));
const EbmlSemanticContext KaxTrackTranslate_Context = EbmlSemanticContext(countof(KaxTrackTranslate_ContextList), KaxTrackTranslate_ContextList, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslate));
const EbmlSemanticContext KaxTrackTranslateEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateEditionUID));
const EbmlSemanticContext KaxTrackTranslateCodec_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateCodec));
const EbmlSemanticContext KaxTrackTranslateTrackID_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateTrackID));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxTrackFlagEnabled_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagEnabled));
const EbmlSemanticContext KaxCodecSettings_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecSettings));
const EbmlSemanticContext KaxCodecInfoURL_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecInfoURL));
const EbmlSemanticContext KaxCodecDownloadURL_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecDownloadURL));
const EbmlSemanticContext KaxCodecDecodeAll_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecDecodeAll));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxTrackNumber::ClassInfos(KaxTrackNumber::Create, KaxTrackNumber_TheId, "TrackNumber", KaxTrackNumber_Context);
const EbmlCallbacks KaxTrackUID::ClassInfos(KaxTrackUID::Create, KaxTrackUID_TheId, "TrackUID", KaxTrackUID_Context);
const EbmlCallbacks KaxTrackType::ClassInfos(KaxTrackType::Create, KaxTrackType_TheId, "TrackType", KaxTrackType_Context);
const EbmlCallbacks KaxTrackFlagDefault::ClassInfos(KaxTrackFlagDefault::Create, KaxTrackFlagDefault_TheId, "TrackFlagDefault", KaxTrackFlagDefault_Context);
const EbmlCallbacks KaxTrackFlagForced::ClassInfos(KaxTrackFlagForced::Create, KaxTrackFlagForced_TheId, "TrackFlagForced", KaxTrackFlagForced_Context);
const EbmlCallbacks KaxTrackFlagLacing::ClassInfos(KaxTrackFlagLacing::Create, KaxTrackFlagLacing_TheId, "TrackFlagLacing", KaxTrackFlagLacing_Context);
const EbmlCallbacks KaxTrackMinCache::ClassInfos(KaxTrackMinCache::Create, KaxTrackMinCache_TheId, "TrackMinCache", KaxTrackMinCache_Context);
const EbmlCallbacks KaxTrackMaxCache::ClassInfos(KaxTrackMaxCache::Create, KaxTrackMaxCache_TheId, "TrackMaxCache\0rotomodobopo", KaxTrackMaxCache_Context);
const EbmlCallbacks KaxTrackDefaultDuration::ClassInfos(KaxTrackDefaultDuration::Create, KaxTrackDefaultDuration_TheId, "TrackDefaultDuration", KaxTrackDefaultDuration_Context);
const EbmlCallbacks KaxTrackTimecodeScale::ClassInfos(KaxTrackTimecodeScale::Create, KaxTrackTimecodeScale_TheId, "TrackTimecodeScale", KaxTrackTimecodeScale_Context);
const EbmlCallbacks KaxMaxBlockAdditionID::ClassInfos(KaxMaxBlockAdditionID::Create, KaxMaxBlockAdditionID_TheId, "MaxBlockAdditionID", KaxMaxBlockAdditionID_Context);
const EbmlCallbacks KaxTrackName::ClassInfos(KaxTrackName::Create, KaxTrackName_TheId, "TrackName", KaxTrackName_Context);
const EbmlCallbacks KaxTrackLanguage::ClassInfos(KaxTrackLanguage::Create, KaxTrackLanguage_TheId, "TrackLanguage", KaxTrackLanguage_Context);
const EbmlCallbacks KaxCodecID::ClassInfos(KaxCodecID::Create, KaxCodecID_TheId, "CodecID", KaxCodecID_Context);
const EbmlCallbacks KaxCodecPrivate::ClassInfos(KaxCodecPrivate::Create, KaxCodecPrivate_TheId, "CodecPrivate", KaxCodecPrivate_Context);
const EbmlCallbacks KaxCodecName::ClassInfos(KaxCodecName::Create, KaxCodecName_TheId, "CodecName", KaxCodecName_Context);
const EbmlCallbacks KaxTrackAttachmentLink::ClassInfos(KaxTrackAttachmentLink::Create, KaxTrackAttachmentLink_TheId, "TrackAttachmentLink", KaxTrackAttachmentLink_Context);
const EbmlCallbacks KaxTrackOverlay::ClassInfos(KaxTrackOverlay::Create, KaxTrackOverlay_TheId, "TrackOverlay", KaxTrackOverlay_Context);
const EbmlCallbacks KaxTrackTranslate::ClassInfos(KaxTrackTranslate::Create, KaxTrackTranslate_TheId, "TrackTranslate", KaxTrackTranslate_Context);
const EbmlCallbacks KaxTrackTranslateEditionUID::ClassInfos(KaxTrackTranslateEditionUID::Create, KaxTrackTranslateEditionUID_TheId, "TrackTranslateEditionUID", KaxTrackTranslateEditionUID_Context);
const EbmlCallbacks KaxTrackTranslateCodec::ClassInfos(KaxTrackTranslateCodec::Create, KaxTrackTranslateCodec_TheId, "TrackTranslateCodec", KaxTrackTranslateCodec_Context);
const EbmlCallbacks KaxTrackTranslateTrackID::ClassInfos(KaxTrackTranslateTrackID::Create, KaxTrackTranslateTrackID_TheId, "TrackTranslateTrackID", KaxTrackTranslateTrackID_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxTrackFlagEnabled::ClassInfos(KaxTrackFlagEnabled::Create, KaxTrackFlagEnabled_TheId, "TrackFlagEnabled", KaxTrackFlagEnabled_Context);
const EbmlCallbacks KaxCodecSettings::ClassInfos(KaxCodecSettings::Create, KaxCodecSettings_TheId, "CodecSettings", KaxCodecSettings_Context);
const EbmlCallbacks KaxCodecInfoURL::ClassInfos(KaxCodecInfoURL::Create, KaxCodecInfoURL_TheId, "CodecInfoURL", KaxCodecInfoURL_Context);
const EbmlCallbacks KaxCodecDownloadURL::ClassInfos(KaxCodecDownloadURL::Create, KaxCodecDownloadURL_TheId, "CodecDownloadURL", KaxCodecDownloadURL_Context);
const EbmlCallbacks KaxCodecDecodeAll::ClassInfos(KaxCodecDecodeAll::Create, KaxCodecDecodeAll_TheId, "CodecDecodeAll", KaxCodecDecodeAll_Context);
#endif // MATROSKA_VERSION
KaxTrackTranslate::KaxTrackTranslate()
:EbmlMaster(KaxTrackTranslate_Context)
{}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackEntryData.cpp 1201 2005-08-30 14:28:27Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
*/
#include "matroska/KaxTrackEntryData.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxTrackTranslate_ContextList[3] =
{
EbmlSemantic(false, false,EBML_INFO(KaxTrackTranslateEditionUID)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateCodec)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackTranslateTrackID)),
};
EbmlId KaxTrackNumber_TheId (0xD7, 1);
EbmlId KaxTrackUID_TheId (0x73C5, 2);
EbmlId KaxTrackType_TheId (0x83, 1);
EbmlId KaxTrackFlagDefault_TheId (0x88, 1);
EbmlId KaxTrackFlagForced_TheId (0x55AA, 2);
EbmlId KaxTrackFlagLacing_TheId (0x9C, 1);
EbmlId KaxTrackMinCache_TheId (0x6DE7, 2);
EbmlId KaxTrackMaxCache_TheId (0x6DF8, 2);
EbmlId KaxTrackDefaultDuration_TheId (0x23E383, 3);
EbmlId KaxTrackTimecodeScale_TheId (0x23314F, 3);
EbmlId KaxMaxBlockAdditionID_TheId (0x55EE, 2);
EbmlId KaxTrackName_TheId (0x536E, 2);
EbmlId KaxTrackLanguage_TheId (0x22B59C, 3);
EbmlId KaxCodecID_TheId (0x86, 1);
EbmlId KaxCodecPrivate_TheId (0x63A2, 2);
EbmlId KaxCodecName_TheId (0x258688, 3);
EbmlId KaxTrackAttachmentLink_TheId (0x7446, 2);
EbmlId KaxTrackOverlay_TheId (0x6FAB, 2);
EbmlId KaxTrackTranslate_TheId (0x6624, 2);
EbmlId KaxTrackTranslateEditionUID_TheId(0x66FC, 2);
EbmlId KaxTrackTranslateCodec_TheId (0x66BF, 2);
EbmlId KaxTrackTranslateTrackID_TheId (0x66A5, 2);
#if MATROSKA_VERSION >= 2
EbmlId KaxTrackFlagEnabled_TheId (0xB9, 1);
EbmlId KaxCodecSettings_TheId (0x3A9697, 3);
EbmlId KaxCodecInfoURL_TheId (0x3B4040, 3);
EbmlId KaxCodecDownloadURL_TheId (0x26B240, 3);
EbmlId KaxCodecDecodeAll_TheId (0xAA, 1);
#endif // MATROSKA_VERSION
const EbmlSemanticContext KaxTrackNumber_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackNumber));
const EbmlSemanticContext KaxTrackUID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackUID));
const EbmlSemanticContext KaxTrackType_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackType));
const EbmlSemanticContext KaxTrackFlagDefault_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagDefault));
const EbmlSemanticContext KaxTrackFlagForced_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagForced));
const EbmlSemanticContext KaxTrackFlagLacing_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagLacing));
const EbmlSemanticContext KaxTrackMinCache_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackMinCache));
const EbmlSemanticContext KaxTrackMaxCache_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackMaxCache));
const EbmlSemanticContext KaxTrackDefaultDuration_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackDefaultDuration));
const EbmlSemanticContext KaxTrackTimecodeScale_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTimecodeScale));
const EbmlSemanticContext KaxMaxBlockAdditionID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxMaxBlockAdditionID));
const EbmlSemanticContext KaxTrackName_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackName));
const EbmlSemanticContext KaxTrackLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackLanguage));
const EbmlSemanticContext KaxCodecID_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecID));
const EbmlSemanticContext KaxCodecPrivate_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecPrivate));
const EbmlSemanticContext KaxCodecName_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecName));
const EbmlSemanticContext KaxTrackAttachmentLink_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackAttachmentLink));
const EbmlSemanticContext KaxTrackOverlay_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackOverlay));
const EbmlSemanticContext KaxTrackTranslate_Context = EbmlSemanticContext(countof(KaxTrackTranslate_ContextList), KaxTrackTranslate_ContextList, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslate));
const EbmlSemanticContext KaxTrackTranslateEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateEditionUID));
const EbmlSemanticContext KaxTrackTranslateCodec_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateCodec));
const EbmlSemanticContext KaxTrackTranslateTrackID_Context = EbmlSemanticContext(0, NULL, &KaxTrackTranslate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackTranslateTrackID));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxTrackFlagEnabled_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackFlagEnabled));
const EbmlSemanticContext KaxCodecSettings_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecSettings));
const EbmlSemanticContext KaxCodecInfoURL_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecInfoURL));
const EbmlSemanticContext KaxCodecDownloadURL_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecDownloadURL));
const EbmlSemanticContext KaxCodecDecodeAll_Context = EbmlSemanticContext(0, NULL, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecDecodeAll));
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxTrackNumber::ClassInfos(KaxTrackNumber::Create, KaxTrackNumber_TheId, "TrackNumber", KaxTrackNumber_Context);
const EbmlCallbacks KaxTrackUID::ClassInfos(KaxTrackUID::Create, KaxTrackUID_TheId, "TrackUID", KaxTrackUID_Context);
const EbmlCallbacks KaxTrackType::ClassInfos(KaxTrackType::Create, KaxTrackType_TheId, "TrackType", KaxTrackType_Context);
const EbmlCallbacks KaxTrackFlagDefault::ClassInfos(KaxTrackFlagDefault::Create, KaxTrackFlagDefault_TheId, "TrackFlagDefault", KaxTrackFlagDefault_Context);
const EbmlCallbacks KaxTrackFlagForced::ClassInfos(KaxTrackFlagForced::Create, KaxTrackFlagForced_TheId, "TrackFlagForced", KaxTrackFlagForced_Context);
const EbmlCallbacks KaxTrackFlagLacing::ClassInfos(KaxTrackFlagLacing::Create, KaxTrackFlagLacing_TheId, "TrackFlagLacing", KaxTrackFlagLacing_Context);
const EbmlCallbacks KaxTrackMinCache::ClassInfos(KaxTrackMinCache::Create, KaxTrackMinCache_TheId, "TrackMinCache", KaxTrackMinCache_Context);
const EbmlCallbacks KaxTrackMaxCache::ClassInfos(KaxTrackMaxCache::Create, KaxTrackMaxCache_TheId, "TrackMaxCache\0rotomodobopo", KaxTrackMaxCache_Context);
const EbmlCallbacks KaxTrackDefaultDuration::ClassInfos(KaxTrackDefaultDuration::Create, KaxTrackDefaultDuration_TheId, "TrackDefaultDuration", KaxTrackDefaultDuration_Context);
const EbmlCallbacks KaxTrackTimecodeScale::ClassInfos(KaxTrackTimecodeScale::Create, KaxTrackTimecodeScale_TheId, "TrackTimecodeScale", KaxTrackTimecodeScale_Context);
const EbmlCallbacks KaxMaxBlockAdditionID::ClassInfos(KaxMaxBlockAdditionID::Create, KaxMaxBlockAdditionID_TheId, "MaxBlockAdditionID", KaxMaxBlockAdditionID_Context);
const EbmlCallbacks KaxTrackName::ClassInfos(KaxTrackName::Create, KaxTrackName_TheId, "TrackName", KaxTrackName_Context);
const EbmlCallbacks KaxTrackLanguage::ClassInfos(KaxTrackLanguage::Create, KaxTrackLanguage_TheId, "TrackLanguage", KaxTrackLanguage_Context);
const EbmlCallbacks KaxCodecID::ClassInfos(KaxCodecID::Create, KaxCodecID_TheId, "CodecID", KaxCodecID_Context);
const EbmlCallbacks KaxCodecPrivate::ClassInfos(KaxCodecPrivate::Create, KaxCodecPrivate_TheId, "CodecPrivate", KaxCodecPrivate_Context);
const EbmlCallbacks KaxCodecName::ClassInfos(KaxCodecName::Create, KaxCodecName_TheId, "CodecName", KaxCodecName_Context);
const EbmlCallbacks KaxTrackAttachmentLink::ClassInfos(KaxTrackAttachmentLink::Create, KaxTrackAttachmentLink_TheId, "TrackAttachmentLink", KaxTrackAttachmentLink_Context);
const EbmlCallbacks KaxTrackOverlay::ClassInfos(KaxTrackOverlay::Create, KaxTrackOverlay_TheId, "TrackOverlay", KaxTrackOverlay_Context);
const EbmlCallbacks KaxTrackTranslate::ClassInfos(KaxTrackTranslate::Create, KaxTrackTranslate_TheId, "TrackTranslate", KaxTrackTranslate_Context);
const EbmlCallbacks KaxTrackTranslateEditionUID::ClassInfos(KaxTrackTranslateEditionUID::Create, KaxTrackTranslateEditionUID_TheId, "TrackTranslateEditionUID", KaxTrackTranslateEditionUID_Context);
const EbmlCallbacks KaxTrackTranslateCodec::ClassInfos(KaxTrackTranslateCodec::Create, KaxTrackTranslateCodec_TheId, "TrackTranslateCodec", KaxTrackTranslateCodec_Context);
const EbmlCallbacks KaxTrackTranslateTrackID::ClassInfos(KaxTrackTranslateTrackID::Create, KaxTrackTranslateTrackID_TheId, "TrackTranslateTrackID", KaxTrackTranslateTrackID_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxTrackFlagEnabled::ClassInfos(KaxTrackFlagEnabled::Create, KaxTrackFlagEnabled_TheId, "TrackFlagEnabled", KaxTrackFlagEnabled_Context);
const EbmlCallbacks KaxCodecSettings::ClassInfos(KaxCodecSettings::Create, KaxCodecSettings_TheId, "CodecSettings", KaxCodecSettings_Context);
const EbmlCallbacks KaxCodecInfoURL::ClassInfos(KaxCodecInfoURL::Create, KaxCodecInfoURL_TheId, "CodecInfoURL", KaxCodecInfoURL_Context);
const EbmlCallbacks KaxCodecDownloadURL::ClassInfos(KaxCodecDownloadURL::Create, KaxCodecDownloadURL_TheId, "CodecDownloadURL", KaxCodecDownloadURL_Context);
const EbmlCallbacks KaxCodecDecodeAll::ClassInfos(KaxCodecDecodeAll::Create, KaxCodecDecodeAll_TheId, "CodecDecodeAll", KaxCodecDecodeAll_Context);
#endif // MATROSKA_VERSION
KaxTrackTranslate::KaxTrackTranslate()
:EbmlMaster(KaxTrackTranslate_Context)
{}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,134 +1,134 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackVideo.cpp 738 2004-08-30 09:21:46Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTrackVideo.h"
// sub elements
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
const EbmlSemantic KaxTrackVideo_ContextList[10] =
#else // MATROSKA_VERSION
const EbmlSemantic KaxTrackVideo_ContextList[15] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelWidth)),
EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelHeight)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropBottom)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropTop)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropLeft)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropRight)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayWidth)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayHeight)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoColourSpace)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoFrameRate)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(true , true, EBML_INFO(KaxVideoFlagInterlaced)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoStereoMode)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayUnit)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoAspectRatio)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoGamma)),
#endif // MATROSKA_VERSION
};
const EbmlSemanticContext KaxTrackVideo_Context = EbmlSemanticContext(countof(KaxTrackVideo_ContextList), KaxTrackVideo_ContextList, &KaxTrackEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackVideo));
const EbmlSemanticContext KaxVideoPixelWidth_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelWidth));
const EbmlSemanticContext KaxVideoPixelHeight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelHeight));
const EbmlSemanticContext KaxVideoPixelCropBottom_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropBottom));
const EbmlSemanticContext KaxVideoPixelCropTop_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropTop));
const EbmlSemanticContext KaxVideoPixelCropRight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropLeft));
const EbmlSemanticContext KaxVideoPixelCropLeft_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropRight));
const EbmlSemanticContext KaxVideoDisplayWidth_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayWidth));
const EbmlSemanticContext KaxVideoDisplayHeight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayHeight));
const EbmlSemanticContext KaxVideoColourSpace_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoColourSpace));
const EbmlSemanticContext KaxVideoFrameRate_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoFrameRate));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxVideoFlagInterlaced_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoFlagInterlaced));
const EbmlSemanticContext KaxVideoStereoMode_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoStereoMode));
const EbmlSemanticContext KaxVideoDisplayUnit_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayUnit));
const EbmlSemanticContext KaxVideoAspectRatio_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoAspectRatio));
const EbmlSemanticContext KaxVideoGamma_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoGamma));
#endif // MATROSKA_VERSION
EbmlId KaxTrackVideo_TheId (0xE0, 1);
EbmlId KaxVideoPixelWidth_TheId (0xB0, 1);
EbmlId KaxVideoPixelHeight_TheId (0xBA, 1);
EbmlId KaxVideoPixelCropBottom_TheId(0x54AA, 2);
EbmlId KaxVideoPixelCropTop_TheId (0x54BB, 2);
EbmlId KaxVideoPixelCropLeft_TheId (0x54CC, 2);
EbmlId KaxVideoPixelCropRight_TheId (0x54DD, 2);
EbmlId KaxVideoDisplayWidth_TheId (0x54B0, 2);
EbmlId KaxVideoDisplayHeight_TheId (0x54BA, 2);
EbmlId KaxVideoColourSpace_TheId (0x2EB524, 3);
EbmlId KaxVideoFrameRate_TheId (0x2383E3, 3);
#if MATROSKA_VERSION >= 2
EbmlId KaxVideoFlagInterlaced_TheId (0x9A, 1);
EbmlId KaxVideoStereoMode_TheId (0x53B9, 2);
EbmlId KaxVideoDisplayUnit_TheId (0x54B2, 2);
EbmlId KaxVideoAspectRatio_TheId (0x54B3, 1);
EbmlId KaxVideoGamma_TheId (0x2FB523, 3);
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxTrackVideo::ClassInfos(KaxTrackVideo::Create, KaxTrackVideo_TheId, "TrackAudio", KaxTrackVideo_Context);
const EbmlCallbacks KaxVideoPixelWidth::ClassInfos(KaxVideoPixelWidth::Create, KaxVideoPixelWidth_TheId, "VideoPixelWidth", KaxVideoPixelWidth_Context);
const EbmlCallbacks KaxVideoPixelHeight::ClassInfos(KaxVideoPixelHeight::Create, KaxVideoPixelHeight_TheId, "VideoPixelHeight", KaxVideoPixelHeight_Context);
const EbmlCallbacks KaxVideoPixelCropBottom::ClassInfos(KaxVideoPixelCropBottom::Create, KaxVideoPixelCropBottom_TheId, "VideoPixelCropBottom", KaxVideoPixelCropBottom_Context);
const EbmlCallbacks KaxVideoPixelCropTop::ClassInfos(KaxVideoPixelCropTop::Create, KaxVideoPixelCropTop_TheId, "VideoPixelCropTop", KaxVideoPixelCropTop_Context);
const EbmlCallbacks KaxVideoPixelCropLeft::ClassInfos(KaxVideoPixelCropLeft::Create, KaxVideoPixelCropLeft_TheId, "VideoPixelCropLeft", KaxVideoPixelCropLeft_Context);
const EbmlCallbacks KaxVideoPixelCropRight::ClassInfos(KaxVideoPixelCropRight::Create, KaxVideoPixelCropRight_TheId, "VideoPixelCropRight", KaxVideoPixelCropRight_Context);
const EbmlCallbacks KaxVideoDisplayWidth::ClassInfos(KaxVideoDisplayWidth::Create, KaxVideoDisplayWidth_TheId, "VideoDisplayWidth", KaxVideoDisplayWidth_Context);
const EbmlCallbacks KaxVideoDisplayHeight::ClassInfos(KaxVideoDisplayHeight::Create, KaxVideoDisplayHeight_TheId, "VideoDisplayHeight", KaxVideoDisplayHeight_Context);
const EbmlCallbacks KaxVideoColourSpace::ClassInfos(KaxVideoColourSpace::Create, KaxVideoColourSpace_TheId, "VideoColourSpace", KaxVideoColourSpace_Context);
const EbmlCallbacks KaxVideoFrameRate::ClassInfos(KaxVideoFrameRate::Create, KaxVideoFrameRate_TheId, "VideoFrameRate", KaxVideoFrameRate_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxVideoFlagInterlaced::ClassInfos(KaxVideoFlagInterlaced::Create, KaxVideoFlagInterlaced_TheId, "VideoFlagInterlaced", KaxVideoFlagInterlaced_Context);
const EbmlCallbacks KaxVideoStereoMode::ClassInfos(KaxVideoStereoMode::Create, KaxVideoStereoMode_TheId, "VideoStereoMode", KaxVideoStereoMode_Context);
const EbmlCallbacks KaxVideoDisplayUnit::ClassInfos(KaxVideoDisplayUnit::Create, KaxVideoDisplayUnit_TheId, "VideoDisplayUnit", KaxVideoDisplayUnit_Context);
const EbmlCallbacks KaxVideoAspectRatio::ClassInfos(KaxVideoAspectRatio::Create, KaxVideoAspectRatio_TheId, "VideoAspectRatio", KaxVideoAspectRatio_Context);
const EbmlCallbacks KaxVideoGamma::ClassInfos(KaxVideoGamma::Create, KaxVideoGamma_TheId, "VideoGamma", KaxVideoGamma_Context);
#endif // MATROSKA_VERSION
KaxTrackVideo::KaxTrackVideo()
:EbmlMaster(KaxTrackVideo_Context)
{}
uint32 KaxVideoFrameRate::RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault)
{
assert(false); // no you are not allowed to use this element !
return 0;
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTrackVideo.cpp 738 2004-08-30 09:21:46Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTrackVideo.h"
// sub elements
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION == 1
const EbmlSemantic KaxTrackVideo_ContextList[10] =
#else // MATROSKA_VERSION
const EbmlSemantic KaxTrackVideo_ContextList[15] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelWidth)),
EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelHeight)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropBottom)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropTop)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropLeft)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoPixelCropRight)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayWidth)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayHeight)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoColourSpace)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoFrameRate)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(true , true, EBML_INFO(KaxVideoFlagInterlaced)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoStereoMode)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoDisplayUnit)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoAspectRatio)),
EbmlSemantic(false, true, EBML_INFO(KaxVideoGamma)),
#endif // MATROSKA_VERSION
};
const EbmlSemanticContext KaxTrackVideo_Context = EbmlSemanticContext(countof(KaxTrackVideo_ContextList), KaxTrackVideo_ContextList, &KaxTrackEntry_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackVideo));
const EbmlSemanticContext KaxVideoPixelWidth_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelWidth));
const EbmlSemanticContext KaxVideoPixelHeight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelHeight));
const EbmlSemanticContext KaxVideoPixelCropBottom_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropBottom));
const EbmlSemanticContext KaxVideoPixelCropTop_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropTop));
const EbmlSemanticContext KaxVideoPixelCropRight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropLeft));
const EbmlSemanticContext KaxVideoPixelCropLeft_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoPixelCropRight));
const EbmlSemanticContext KaxVideoDisplayWidth_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayWidth));
const EbmlSemanticContext KaxVideoDisplayHeight_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayHeight));
const EbmlSemanticContext KaxVideoColourSpace_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoColourSpace));
const EbmlSemanticContext KaxVideoFrameRate_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoFrameRate));
#if MATROSKA_VERSION >= 2
const EbmlSemanticContext KaxVideoFlagInterlaced_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoFlagInterlaced));
const EbmlSemanticContext KaxVideoStereoMode_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoStereoMode));
const EbmlSemanticContext KaxVideoDisplayUnit_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoDisplayUnit));
const EbmlSemanticContext KaxVideoAspectRatio_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoAspectRatio));
const EbmlSemanticContext KaxVideoGamma_Context = EbmlSemanticContext(0, NULL, &KaxTrackVideo_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxVideoGamma));
#endif // MATROSKA_VERSION
EbmlId KaxTrackVideo_TheId (0xE0, 1);
EbmlId KaxVideoPixelWidth_TheId (0xB0, 1);
EbmlId KaxVideoPixelHeight_TheId (0xBA, 1);
EbmlId KaxVideoPixelCropBottom_TheId(0x54AA, 2);
EbmlId KaxVideoPixelCropTop_TheId (0x54BB, 2);
EbmlId KaxVideoPixelCropLeft_TheId (0x54CC, 2);
EbmlId KaxVideoPixelCropRight_TheId (0x54DD, 2);
EbmlId KaxVideoDisplayWidth_TheId (0x54B0, 2);
EbmlId KaxVideoDisplayHeight_TheId (0x54BA, 2);
EbmlId KaxVideoColourSpace_TheId (0x2EB524, 3);
EbmlId KaxVideoFrameRate_TheId (0x2383E3, 3);
#if MATROSKA_VERSION >= 2
EbmlId KaxVideoFlagInterlaced_TheId (0x9A, 1);
EbmlId KaxVideoStereoMode_TheId (0x53B9, 2);
EbmlId KaxVideoDisplayUnit_TheId (0x54B2, 2);
EbmlId KaxVideoAspectRatio_TheId (0x54B3, 1);
EbmlId KaxVideoGamma_TheId (0x2FB523, 3);
#endif // MATROSKA_VERSION
const EbmlCallbacks KaxTrackVideo::ClassInfos(KaxTrackVideo::Create, KaxTrackVideo_TheId, "TrackAudio", KaxTrackVideo_Context);
const EbmlCallbacks KaxVideoPixelWidth::ClassInfos(KaxVideoPixelWidth::Create, KaxVideoPixelWidth_TheId, "VideoPixelWidth", KaxVideoPixelWidth_Context);
const EbmlCallbacks KaxVideoPixelHeight::ClassInfos(KaxVideoPixelHeight::Create, KaxVideoPixelHeight_TheId, "VideoPixelHeight", KaxVideoPixelHeight_Context);
const EbmlCallbacks KaxVideoPixelCropBottom::ClassInfos(KaxVideoPixelCropBottom::Create, KaxVideoPixelCropBottom_TheId, "VideoPixelCropBottom", KaxVideoPixelCropBottom_Context);
const EbmlCallbacks KaxVideoPixelCropTop::ClassInfos(KaxVideoPixelCropTop::Create, KaxVideoPixelCropTop_TheId, "VideoPixelCropTop", KaxVideoPixelCropTop_Context);
const EbmlCallbacks KaxVideoPixelCropLeft::ClassInfos(KaxVideoPixelCropLeft::Create, KaxVideoPixelCropLeft_TheId, "VideoPixelCropLeft", KaxVideoPixelCropLeft_Context);
const EbmlCallbacks KaxVideoPixelCropRight::ClassInfos(KaxVideoPixelCropRight::Create, KaxVideoPixelCropRight_TheId, "VideoPixelCropRight", KaxVideoPixelCropRight_Context);
const EbmlCallbacks KaxVideoDisplayWidth::ClassInfos(KaxVideoDisplayWidth::Create, KaxVideoDisplayWidth_TheId, "VideoDisplayWidth", KaxVideoDisplayWidth_Context);
const EbmlCallbacks KaxVideoDisplayHeight::ClassInfos(KaxVideoDisplayHeight::Create, KaxVideoDisplayHeight_TheId, "VideoDisplayHeight", KaxVideoDisplayHeight_Context);
const EbmlCallbacks KaxVideoColourSpace::ClassInfos(KaxVideoColourSpace::Create, KaxVideoColourSpace_TheId, "VideoColourSpace", KaxVideoColourSpace_Context);
const EbmlCallbacks KaxVideoFrameRate::ClassInfos(KaxVideoFrameRate::Create, KaxVideoFrameRate_TheId, "VideoFrameRate", KaxVideoFrameRate_Context);
#if MATROSKA_VERSION >= 2
const EbmlCallbacks KaxVideoFlagInterlaced::ClassInfos(KaxVideoFlagInterlaced::Create, KaxVideoFlagInterlaced_TheId, "VideoFlagInterlaced", KaxVideoFlagInterlaced_Context);
const EbmlCallbacks KaxVideoStereoMode::ClassInfos(KaxVideoStereoMode::Create, KaxVideoStereoMode_TheId, "VideoStereoMode", KaxVideoStereoMode_Context);
const EbmlCallbacks KaxVideoDisplayUnit::ClassInfos(KaxVideoDisplayUnit::Create, KaxVideoDisplayUnit_TheId, "VideoDisplayUnit", KaxVideoDisplayUnit_Context);
const EbmlCallbacks KaxVideoAspectRatio::ClassInfos(KaxVideoAspectRatio::Create, KaxVideoAspectRatio_TheId, "VideoAspectRatio", KaxVideoAspectRatio_Context);
const EbmlCallbacks KaxVideoGamma::ClassInfos(KaxVideoGamma::Create, KaxVideoGamma_TheId, "VideoGamma", KaxVideoGamma_Context);
#endif // MATROSKA_VERSION
KaxTrackVideo::KaxTrackVideo()
:EbmlMaster(KaxTrackVideo_Context)
{}
uint32 KaxVideoFrameRate::RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault)
{
assert(false); // no you are not allowed to use this element !
return 0;
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,114 +1,114 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTracks.cpp 1202 2005-08-30 14:39:01Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTracks.h"
// sub elements
#include "matroska/KaxTrackEntryData.h"
#include "matroska/KaxTrackAudio.h"
#include "matroska/KaxTrackVideo.h"
#include "matroska/KaxContentEncoding.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxTracks_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTrackEntry)),
};
#if MATROSKA_VERSION == 1
const EbmlSemantic KaxTrackEntry_ContextList[22] =
#else // MATROSKA_VERSION
const EbmlSemantic KaxTrackEntry_ContextList[27] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true , true, EBML_INFO(KaxTrackNumber)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackUID)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackType)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagEnabled)),
#endif // MATROSKA_VERSION
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagDefault)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagForced)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagLacing)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackMinCache)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackMaxCache)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackDefaultDuration)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackTimecodeScale)),
EbmlSemantic(true , true, EBML_INFO(KaxMaxBlockAdditionID)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackName)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackLanguage)),
EbmlSemantic(true , true, EBML_INFO(KaxCodecID)),
EbmlSemantic(false, true, EBML_INFO(KaxCodecPrivate)),
EbmlSemantic(false, true, EBML_INFO(KaxCodecName)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackAttachmentLink)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxCodecSettings)),
EbmlSemantic(false, false,EBML_INFO(KaxCodecInfoURL)),
EbmlSemantic(false, false,EBML_INFO(KaxCodecDownloadURL)),
EbmlSemantic(true , true, EBML_INFO(KaxCodecDecodeAll)),
#endif // MATROSKA_VERSION
EbmlSemantic(false, false,EBML_INFO(KaxTrackOverlay)),
EbmlSemantic(false, false,EBML_INFO(KaxTrackTranslate)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackAudio)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackVideo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentEncodings)),
};
const EbmlSemanticContext KaxTracks_Context = EbmlSemanticContext(countof(KaxTracks_ContextList), KaxTracks_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTracks));
const EbmlSemanticContext KaxTrackEntry_Context = EbmlSemanticContext(countof(KaxTrackEntry_ContextList), KaxTrackEntry_ContextList, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackEntry));
EbmlId KaxTracks_TheId (0x1654AE6B, 4);
EbmlId KaxTrackEntry_TheId(0xAE, 1);
const EbmlCallbacks KaxTracks::ClassInfos(KaxTracks::Create, KaxTracks_TheId, "Tracks", KaxTracks_Context);
const EbmlCallbacks KaxTrackEntry::ClassInfos(KaxTrackEntry::Create, KaxTrackEntry_TheId, "TrackEntry", KaxTrackEntry_Context);
KaxTracks::KaxTracks()
:EbmlMaster(KaxTracks_Context)
{}
KaxTrackEntry::KaxTrackEntry()
:EbmlMaster(KaxTrackEntry_Context)
,bGlobalTimecodeScaleIsSet(false)
{}
void KaxTrackEntry::EnableLacing(bool bEnable)
{
KaxTrackFlagLacing & myLacing = GetChild<KaxTrackFlagLacing>(*this);
*(static_cast<EbmlUInteger *>(&myLacing)) = bEnable ? 1 : 0;
}
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxTracks.cpp 1202 2005-08-30 14:39:01Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTracks.h"
// sub elements
#include "matroska/KaxTrackEntryData.h"
#include "matroska/KaxTrackAudio.h"
#include "matroska/KaxTrackVideo.h"
#include "matroska/KaxContentEncoding.h"
#include "matroska/KaxContexts.h"
START_LIBMATROSKA_NAMESPACE
const EbmlSemantic KaxTracks_ContextList[1] =
{
EbmlSemantic(true, false, EBML_INFO(KaxTrackEntry)),
};
#if MATROSKA_VERSION == 1
const EbmlSemantic KaxTrackEntry_ContextList[22] =
#else // MATROSKA_VERSION
const EbmlSemantic KaxTrackEntry_ContextList[27] =
#endif // MATROSKA_VERSION
{
EbmlSemantic(true , true, EBML_INFO(KaxTrackNumber)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackUID)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackType)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagEnabled)),
#endif // MATROSKA_VERSION
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagDefault)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagForced)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackFlagLacing)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackMinCache)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackMaxCache)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackDefaultDuration)),
EbmlSemantic(true , true, EBML_INFO(KaxTrackTimecodeScale)),
EbmlSemantic(true , true, EBML_INFO(KaxMaxBlockAdditionID)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackName)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackLanguage)),
EbmlSemantic(true , true, EBML_INFO(KaxCodecID)),
EbmlSemantic(false, true, EBML_INFO(KaxCodecPrivate)),
EbmlSemantic(false, true, EBML_INFO(KaxCodecName)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackAttachmentLink)),
#if MATROSKA_VERSION >= 2
EbmlSemantic(false, true, EBML_INFO(KaxCodecSettings)),
EbmlSemantic(false, false,EBML_INFO(KaxCodecInfoURL)),
EbmlSemantic(false, false,EBML_INFO(KaxCodecDownloadURL)),
EbmlSemantic(true , true, EBML_INFO(KaxCodecDecodeAll)),
#endif // MATROSKA_VERSION
EbmlSemantic(false, false,EBML_INFO(KaxTrackOverlay)),
EbmlSemantic(false, false,EBML_INFO(KaxTrackTranslate)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackAudio)),
EbmlSemantic(false, true, EBML_INFO(KaxTrackVideo)),
EbmlSemantic(false, true, EBML_INFO(KaxContentEncodings)),
};
const EbmlSemanticContext KaxTracks_Context = EbmlSemanticContext(countof(KaxTracks_ContextList), KaxTracks_ContextList, &KaxSegment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTracks));
const EbmlSemanticContext KaxTrackEntry_Context = EbmlSemanticContext(countof(KaxTrackEntry_ContextList), KaxTrackEntry_ContextList, &KaxTracks_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTrackEntry));
EbmlId KaxTracks_TheId (0x1654AE6B, 4);
EbmlId KaxTrackEntry_TheId(0xAE, 1);
const EbmlCallbacks KaxTracks::ClassInfos(KaxTracks::Create, KaxTracks_TheId, "Tracks", KaxTracks_Context);
const EbmlCallbacks KaxTrackEntry::ClassInfos(KaxTrackEntry::Create, KaxTrackEntry_TheId, "TrackEntry", KaxTrackEntry_Context);
KaxTracks::KaxTracks()
:EbmlMaster(KaxTracks_Context)
{}
KaxTrackEntry::KaxTrackEntry()
:EbmlMaster(KaxTrackEntry_Context)
,bGlobalTimecodeScaleIsSet(false)
{}
void KaxTrackEntry::EnableLacing(bool bEnable)
{
KaxTrackFlagLacing & myLacing = GetChild<KaxTrackFlagLacing>(*this);
*(static_cast<EbmlUInteger *>(&myLacing)) = bEnable ? 1 : 0;
}
END_LIBMATROSKA_NAMESPACE

View File

@ -1,40 +1,40 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2004 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxVersion.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxVersion.h"
START_LIBMATROSKA_NAMESPACE
END_LIBMATROSKA_NAMESPACE
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** 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: KaxVersion.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxVersion.h"
START_LIBMATROSKA_NAMESPACE
END_LIBMATROSKA_NAMESPACE