use the new macros to define EBML class elements
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@68 a6f86f6d-0131-4f8e-9e7b-e335508773d5
This commit is contained in:
parent
82ff2d978a
commit
0297c74abd
@ -55,6 +55,7 @@ LIB matroska
|
||||
HEADER matroska/KaxContexts.h
|
||||
HEADER matroska/KaxCues.h
|
||||
HEADER matroska/KaxCuesData.h
|
||||
HEADER matroska/KaxDefines.h
|
||||
HEADER matroska/KaxInfo.h
|
||||
HEADER matroska/KaxInfoData.h
|
||||
HEADER matroska/KaxSeekHead.h
|
||||
|
@ -79,6 +79,43 @@ extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDownloadURL_Context;
|
||||
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDecodeAll_Context;
|
||||
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackOverlay_Context;
|
||||
|
||||
#define Context_KaxMatroska KaxMatroska_Context
|
||||
#define Context_KaxSegment KaxSegment_Context
|
||||
#define Context_KaxTrackEntry KaxTrackEntry_Context
|
||||
#define Context_KaxTracks KaxTracks_Context
|
||||
#define Context_KaxTrackVideo KaxTrackVideo_Context
|
||||
#define Context_KaxCluster KaxCluster_Context
|
||||
#define Context_KaxBlockMore KaxBlockMore_Context
|
||||
#define Context_KaxBlockAdditions KaxBlockAdditions_Context
|
||||
#define Context_KaxBlockGroup KaxBlockGroup_Context
|
||||
#define Context_KaxTimeSlice KaxTimeSlice_Context
|
||||
#define Context_KaxSlices KaxSlices_Context
|
||||
#define Context_KaxContentEncoding KaxContentEncoding_Context
|
||||
#define Context_KaxContentEncodings KaxContentEncodings_Context
|
||||
#define Context_KaxContentCompression KaxContentCompression_Context
|
||||
#define Context_KaxContentEncryption KaxContentEncryption_Context
|
||||
#define Context_KaxInfo KaxInfo_Context
|
||||
#define Context_KaxChapterTranslate KaxChapterTranslate_Context
|
||||
#define Context_KaxTrackAudio KaxTrackAudio_Context
|
||||
#define Context_KaxTrackTranslate KaxTrackTranslate_Context
|
||||
#define Context_KaxAttached KaxAttached_Context
|
||||
#define Context_KaxAttachments KaxAttachments_Context
|
||||
#define Context_KaxEditionEntry KaxEditionEntry_Context
|
||||
#define Context_KaxChapters KaxChapters_Context
|
||||
#define Context_KaxChapterAtom KaxChapterAtom_Context
|
||||
#define Context_KaxChapterTrack KaxChapterTrack_Context
|
||||
#define Context_KaxChapterDisplay KaxChapterDisplay_Context
|
||||
#define Context_KaxChapterProcess KaxChapterProcess_Context
|
||||
#define Context_KaxChapterProcessCommand KaxChapterProcessCommand_Context
|
||||
#define Context_KaxClusterSilentTracks KaxClusterSilentTracks_Context
|
||||
#define Context_KaxCues KaxCues_Context
|
||||
#define Context_KaxCuePoint KaxCuePoint_Context
|
||||
#define Context_KaxCueTrackPositions KaxCueTrackPositions_Context
|
||||
#define Context_KaxCueReference KaxCueReference_Context
|
||||
#define Context_KaxSeek KaxSeek_Context
|
||||
#define Context_KaxTags KaxTags_Context
|
||||
#define Context_KaxSeekHead KaxSeekHead_Context
|
||||
|
||||
extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxGlobal_Context();
|
||||
extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxTagsGlobal_Context();
|
||||
|
||||
|
@ -46,14 +46,16 @@
|
||||
#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_DATE(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#else
|
||||
#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_MASTER_GLOBAL(a,b,c,d) DEFINE_xxx_MASTER_GLOBAL(a,b,c,d,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_STRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_UNISTRING(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_BINARY(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_FLOAT(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#define DEFINE_MKX_DATE(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
|
||||
#endif
|
||||
|
||||
#endif // LIBMATROSKA_DEFINES_H
|
||||
|
@ -34,6 +34,7 @@
|
||||
*/
|
||||
#include "matroska/KaxAttached.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
// sub elements
|
||||
|
||||
@ -42,9 +43,9 @@ using namespace LIBEBML_NAMESPACE;
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
#if MATROSKA_VERSION == 1
|
||||
EbmlSemantic KaxAttached_ContextList[5] =
|
||||
static const EbmlSemantic ContextList_KaxAttached[5] =
|
||||
#else // MATROSKA_VERSION
|
||||
EbmlSemantic KaxAttached_ContextList[6] =
|
||||
static const EbmlSemantic ContextList_KaxAttached[6] =
|
||||
#endif // MATROSKA_VERSION
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxFileName)),
|
||||
@ -57,35 +58,15 @@ EbmlSemantic KaxAttached_ContextList[6] =
|
||||
#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);
|
||||
DEFINE_MKX_MASTER (KaxAttached, 0x61A7, 2, KaxAttachments, "AttachedFile");
|
||||
DEFINE_MKX_UNISTRING(KaxFileDescription, 0x467E, 2, KaxAttachments, "FileDescription");
|
||||
DEFINE_MKX_UNISTRING(KaxFileName, 0x466E, 2, KaxAttachments, "FileName");
|
||||
DEFINE_MKX_STRING (KaxMimeType, 0x4660, 2, KaxAttachments, "FileMimeType");
|
||||
DEFINE_MKX_BINARY (KaxFileData, 0x465C, 2, KaxAttachments, "FileData");
|
||||
DEFINE_MKX_UINTEGER (KaxFileUID, 0x46AE, 2, KaxAttachments, "FileUID");
|
||||
#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
|
||||
DEFINE_MKX_BINARY (KaxFileReferral, 0x4675, 2, KaxAttachments, "FileReferral");
|
||||
#endif
|
||||
|
||||
KaxAttached::KaxAttached()
|
||||
:EbmlMaster(KaxAttached_Context)
|
||||
|
@ -35,21 +35,19 @@
|
||||
#include "matroska/KaxAttachments.h"
|
||||
#include "matroska/KaxAttached.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
using namespace LIBEBML_NAMESPACE;
|
||||
|
||||
// sub elements
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
EbmlSemantic KaxAttachments_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxAttachments[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);
|
||||
DEFINE_MKX_MASTER(KaxAttachments, 0x1941A469, 4, KaxSegment, "Attachments");
|
||||
|
||||
KaxAttachments::KaxAttachments()
|
||||
:EbmlMaster(KaxAttachments_Context)
|
||||
|
@ -39,13 +39,14 @@
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxBlockData.h"
|
||||
#include "matroska/KaxCluster.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
#if MATROSKA_VERSION == 1
|
||||
const EbmlSemantic KaxBlockGroup_ContextList[6] =
|
||||
static const EbmlSemantic ContextList_KaxBlockGroup[6] =
|
||||
#else // MATROSKA_VERSION
|
||||
const EbmlSemantic KaxBlockGroup_ContextList[9] =
|
||||
static const EbmlSemantic ContextList_KaxBlockGroup[9] =
|
||||
#endif // MATROSKA_VERSION
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxBlock)),
|
||||
@ -63,55 +64,30 @@ const EbmlSemantic KaxBlockGroup_ContextList[9] =
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxBlockAdditions)),
|
||||
};
|
||||
|
||||
const EbmlSemantic KaxBlockAdditions_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxBlockAdditions[1] =
|
||||
{
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxBlockMore))
|
||||
};
|
||||
|
||||
const EbmlSemantic KaxBlockMore_ContextList[2] =
|
||||
static const EbmlSemantic ContextList_KaxBlockMore[2] =
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxBlockAddID)),
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxBlockAdditional))
|
||||
};
|
||||
|
||||
EbmlId KaxBlockGroup_TheId (0xA0, 1);
|
||||
EbmlId KaxBlock_TheId (0xA1, 1);
|
||||
EbmlId KaxSimpleBlock_TheId (0xA3, 1);
|
||||
EbmlId KaxBlockDuration_TheId (0x9B, 1);
|
||||
DEFINE_MKX_MASTER (KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup");
|
||||
DEFINE_MKX_BINARY (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block");
|
||||
DEFINE_MKX_UINTEGER(KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration");
|
||||
#if MATROSKA_VERSION >= 2
|
||||
EbmlId KaxBlockVirtual_TheId (0xA2, 1);
|
||||
EbmlId KaxCodecState_TheId (0xA4, 1);
|
||||
#endif // MATROSKA_VERSION
|
||||
EbmlId KaxBlockAdditions_TheId (0x75A1, 2);
|
||||
EbmlId KaxBlockMore_TheId (0xA6, 1);
|
||||
EbmlId KaxBlockAddID_TheId (0xEE, 1);
|
||||
EbmlId KaxBlockAdditional_TheId(0xA5, 1);
|
||||
DEFINE_MKX_BINARY (KaxSimpleBlock, 0xA3, 1, KaxCluster, "SimpleBlock");
|
||||
DEFINE_MKX_BINARY (KaxBlockVirtual, 0xA2, 1, KaxBlockGroup, "BlockVirtual");
|
||||
DEFINE_MKX_BINARY (KaxCodecState, 0xA4, 1, KaxBlockGroup, "CodecState");
|
||||
#endif
|
||||
DEFINE_MKX_MASTER (KaxBlockAdditions, 0x75A1, 2, KaxBlockGroup, "BlockAdditions");
|
||||
DEFINE_MKX_MASTER (KaxBlockMore, 0xA6, 1, KaxBlockAdditions, "BlockMore");
|
||||
DEFINE_MKX_UINTEGER(KaxBlockAddID, 0xEE, 1, KaxBlockMore, "BlockAddID");
|
||||
DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, 1, KaxBlockMore, "BlockAdditional");
|
||||
|
||||
const EbmlSemanticContext KaxBlockGroup_Context = EbmlSemanticContext(countof(KaxBlockGroup_ContextList), KaxBlockGroup_ContextList, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockGroup));
|
||||
const EbmlSemanticContext KaxBlock_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlock));
|
||||
const EbmlSemanticContext KaxBlockDuration_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockDuration));
|
||||
#if MATROSKA_VERSION >= 2
|
||||
const EbmlSemanticContext KaxSimpleBlock_Context = EbmlSemanticContext(0, NULL, &KaxCluster_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxSimpleBlock));
|
||||
const EbmlSemanticContext KaxBlockVirtual_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockVirtual));
|
||||
const EbmlSemanticContext KaxCodecState_Context = EbmlSemanticContext(0, NULL, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxCodecState));
|
||||
#endif // MATROSKA_VERSION
|
||||
const EbmlSemanticContext KaxBlockAdditions_Context = EbmlSemanticContext(countof(KaxBlockAdditions_ContextList), KaxBlockAdditions_ContextList, &KaxBlockGroup_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockAdditions));
|
||||
const EbmlSemanticContext KaxBlockMore_Context = EbmlSemanticContext(countof(KaxBlockMore_ContextList), KaxBlockMore_ContextList, &KaxBlockAdditions_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockMore));
|
||||
const EbmlSemanticContext KaxBlockAddID_Context = EbmlSemanticContext(0, NULL, &KaxBlockMore_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockAddID));
|
||||
const EbmlSemanticContext KaxBlockAdditional_Context = EbmlSemanticContext(0, NULL, &KaxBlockMore_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxBlockAdditional));
|
||||
|
||||
const EbmlCallbacks KaxBlockGroup::ClassInfos(KaxBlockGroup::Create, KaxBlockGroup_TheId, "BlockGroup", KaxBlockGroup_Context);
|
||||
const EbmlCallbacks KaxBlock::ClassInfos(KaxBlock::Create, KaxBlock_TheId, "Block", KaxBlock_Context);
|
||||
const EbmlCallbacks KaxBlockDuration::ClassInfos(KaxBlockDuration::Create, KaxBlockDuration_TheId, "BlockDuration", KaxBlockDuration_Context);
|
||||
#if MATROSKA_VERSION >= 2
|
||||
const EbmlCallbacks KaxSimpleBlock::ClassInfos(KaxSimpleBlock::Create, KaxSimpleBlock_TheId, "SimpleBlock", KaxSimpleBlock_Context);
|
||||
const EbmlCallbacks KaxBlockVirtual::ClassInfos(KaxBlockVirtual::Create, KaxBlockVirtual_TheId, "BlockVirtual", KaxBlockVirtual_Context);
|
||||
const EbmlCallbacks KaxCodecState::ClassInfos(KaxCodecState::Create, KaxCodecState_TheId, "CodecState", KaxCodecState_Context);
|
||||
#endif // MATROSKA_VERSION
|
||||
const EbmlCallbacks KaxBlockAdditions::ClassInfos(KaxBlockAdditions::Create, KaxBlockAdditions_TheId, "BlockAdditions", KaxBlockAdditions_Context);
|
||||
const EbmlCallbacks KaxBlockMore::ClassInfos(KaxBlockMore::Create, KaxBlockMore_TheId, "BlockMore", KaxBlockMore_Context);
|
||||
const EbmlCallbacks KaxBlockAddID::ClassInfos(KaxBlockAddID::Create, KaxBlockAddID_TheId, "BlockAddID", KaxBlockAddID_Context);
|
||||
const EbmlCallbacks KaxBlockAdditional::ClassInfos(KaxBlockAdditional::Create, KaxBlockAdditional_TheId, "BlockAdditional", KaxBlockAdditional_Context);
|
||||
|
||||
DataBuffer * DataBuffer::Clone()
|
||||
{
|
||||
|
@ -35,17 +35,18 @@
|
||||
#include "matroska/KaxBlockData.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxBlock.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
using namespace LIBEBML_NAMESPACE;
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
const EbmlSemantic KaxSlices_ContextList[1] =
|
||||
const EbmlSemantic ContextList_KaxSlices[1] =
|
||||
{
|
||||
EbmlSemantic(false, false, EBML_INFO(KaxTimeSlice)),
|
||||
};
|
||||
|
||||
const EbmlSemantic KaxTimeSlice_ContextList[5] =
|
||||
const EbmlSemantic ContextList_KaxTimeSlice[5] =
|
||||
{
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxSliceLaceNumber)),
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxSliceFrameNumber)),
|
||||
@ -54,44 +55,19 @@ const EbmlSemantic KaxTimeSlice_ContextList[5] =
|
||||
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);
|
||||
DEFINE_MKX_UINTEGER(KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced");
|
||||
DEFINE_MKX_SINTEGER(KaxReferenceBlock, 0xFB, 1, KaxBlockGroup, "ReferenceBlock");
|
||||
DEFINE_MKX_MASTER (KaxSlices, 0x8E, 1, KaxBlockGroup, "Slices");
|
||||
DEFINE_MKX_MASTER (KaxTimeSlice, 0xE8, 1, KaxSlices, "TimeSlice");
|
||||
DEFINE_MKX_UINTEGER(KaxSliceLaceNumber, 0xCC, 1, KaxTimeSlice, "SliceLaceNumber");
|
||||
DEFINE_MKX_UINTEGER(KaxSliceFrameNumber, 0xCD, 1, KaxTimeSlice, "SliceFrameNumber");
|
||||
DEFINE_MKX_UINTEGER(KaxSliceBlockAddID, 0xCB, 1, KaxTimeSlice, "SliceBlockAddID");
|
||||
DEFINE_MKX_UINTEGER(KaxSliceDelay, 0xCE, 1, KaxTimeSlice, "SliceDelay");
|
||||
DEFINE_MKX_UINTEGER(KaxSliceDuration, 0xCF, 1, KaxTimeSlice, "SliceDuration");
|
||||
#if MATROSKA_VERSION >= 2
|
||||
EbmlId KaxReferenceVirtual_TheId (0xFD, 1);
|
||||
#endif // MATROSKA_VERSION
|
||||
DEFINE_MKX_UINTEGER(KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual");
|
||||
#endif
|
||||
|
||||
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)
|
||||
|
@ -34,16 +34,17 @@
|
||||
*/
|
||||
#include "matroska/KaxChapters.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
// sub elements
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
EbmlSemantic KaxChapters_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxChapters[1] =
|
||||
{
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxEditionEntry)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxEditionEntry_ContextList[5] =
|
||||
static const EbmlSemantic ContextList_KaxEditionEntry[5] =
|
||||
{
|
||||
EbmlSemantic(false, true , EBML_INFO(KaxEditionUID)),
|
||||
EbmlSemantic(true , true , EBML_INFO(KaxEditionFlagHidden)),
|
||||
@ -52,7 +53,7 @@ EbmlSemantic KaxEditionEntry_ContextList[5] =
|
||||
EbmlSemantic(true , false, EBML_INFO(KaxChapterAtom)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxChapterAtom_ContextList[12] =
|
||||
static const EbmlSemantic ContextList_KaxChapterAtom[12] =
|
||||
{
|
||||
EbmlSemantic(false, false, EBML_INFO(KaxChapterAtom)),
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxChapterUID)),
|
||||
@ -68,114 +69,59 @@ EbmlSemantic KaxChapterAtom_ContextList[12] =
|
||||
EbmlSemantic(false, false, EBML_INFO(KaxChapterProcess)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxChapterTrack_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxChapterTrack[1] =
|
||||
{
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxChapterTrackNumber)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxChapterDisplay_ContextList[3] =
|
||||
static const EbmlSemantic ContextList_KaxChapterDisplay[3] =
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxChapterString)),
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxChapterLanguage)),
|
||||
EbmlSemantic(false, false, EBML_INFO(KaxChapterCountry)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxChapterProcess_ContextList[3] =
|
||||
static const EbmlSemantic ContextList_KaxChapterProcess[3] =
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxChapterProcessCodecID)),
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxChapterProcessPrivate)),
|
||||
EbmlSemantic(false, false, EBML_INFO(KaxChapterProcessCommand)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxChapterProcessCommand_ContextList[2] =
|
||||
static const EbmlSemantic ContextList_KaxChapterProcessCommand[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));
|
||||
DEFINE_MKX_MASTER (KaxChapters, 0x1043A770, 4, KaxSegment, "Chapters");
|
||||
DEFINE_MKX_MASTER (KaxEditionEntry, 0x45B9, 2, KaxChapters, "EditionEntry");
|
||||
DEFINE_MKX_UINTEGER (KaxEditionUID, 0x45BC, 2, KaxEditionEntry, "EditionUID");
|
||||
DEFINE_MKX_UINTEGER (KaxEditionFlagHidden, 0x45BD, 2, KaxEditionEntry, "EditionFlagHidden");
|
||||
DEFINE_MKX_UINTEGER (KaxEditionFlagDefault, 0x45DB, 2, KaxEditionEntry, "EditionFlagDefault");
|
||||
DEFINE_MKX_UINTEGER (KaxEditionFlagOrdered, 0x45DD, 2, KaxEditionEntry, "EditionFlagOrdered");
|
||||
DEFINE_MKX_MASTER (KaxChapterAtom, 0xB6, 1, KaxEditionEntry, "ChapterAtom");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterUID, 0x73C4, 2, KaxChapterAtom, "ChapterUID");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterTimeStart, 0x91, 1, KaxChapterAtom, "ChapterTimeStart");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterTimeEnd, 0x92, 1, KaxChapterAtom, "ChapterTimeEnd");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterFlagHidden, 0x98, 1, KaxChapterAtom, "ChapterFlagHidden");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterFlagEnabled, 0x4598, 2, KaxChapterAtom, "ChapterFlagEnabled");
|
||||
DEFINE_MKX_BINARY (KaxChapterSegmentUID, 0x6E67, 2, KaxChapterAtom, "ChapterSegmentUID");
|
||||
DEFINE_MKX_BINARY (KaxChapterSegmentEditionUID, 0x6EBC, 2, KaxChapterAtom, "ChapterSegmentEditionUID");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterPhysicalEquiv, 0x63C3, 2, KaxChapterAtom, "ChapterPhysicalEquiv");
|
||||
DEFINE_MKX_MASTER (KaxChapterTrack, 0x8F, 1, KaxChapterAtom, "ChapterTrack");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterTrackNumber, 0x89, 1, KaxChapterTrack, "ChapterTrackNumber");
|
||||
DEFINE_MKX_MASTER (KaxChapterDisplay, 0x80, 1, KaxChapterAtom, "ChapterDisplay");
|
||||
DEFINE_MKX_UNISTRING(KaxChapterString, 0x85, 1, KaxChapterDisplay, "ChapterString");
|
||||
DEFINE_MKX_STRING (KaxChapterLanguage, 0x437C, 2, KaxChapterLanguage, "ChapterLanguage"); // parent context ?
|
||||
DEFINE_MKX_STRING (KaxChapterCountry, 0x437E, 2, KaxChapterCountry, "ChapterCountry"); // parent context ?
|
||||
DEFINE_MKX_MASTER (KaxChapterProcess, 0x6944, 2, KaxChapterAtom, "ChapterProcess");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterProcessCodecID, 0x6955, 2, KaxChapterProcess, "ChapterProcessCodecID");
|
||||
DEFINE_MKX_BINARY (KaxChapterProcessPrivate, 0x450D, 2, KaxChapterProcess, "ChapterProcessPrivate");
|
||||
DEFINE_MKX_MASTER (KaxChapterProcessCommand, 0x6911, 2, KaxChapterProcess, "ChapterProcessCommand");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterProcessTime, 0x6922, 2, KaxChapterProcessCommand, "ChapterProcessTime");
|
||||
DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, 2, KaxChapterProcessCommand, "ChapterProcessData");
|
||||
|
||||
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)
|
||||
|
@ -35,14 +35,15 @@
|
||||
#include "matroska/KaxBlock.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxSegment.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
// sub elements
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
#if MATROSKA_VERSION == 1
|
||||
EbmlSemantic KaxCluster_ContextList[5] =
|
||||
static const EbmlSemantic ContextList_KaxCluster[5] =
|
||||
#else // MATROSKA_VERSION
|
||||
EbmlSemantic KaxCluster_ContextList[6] =
|
||||
static const EbmlSemantic ContextList_KaxCluster[6] =
|
||||
#endif // MATROSKA_VERSION
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxClusterTimecode)),
|
||||
@ -55,10 +56,7 @@ EbmlSemantic KaxCluster_ContextList[6] =
|
||||
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);
|
||||
DEFINE_MKX_MASTER(KaxCluster, 0x1F43B675, 4, KaxSegment, "Cluster");
|
||||
|
||||
KaxCluster::KaxCluster()
|
||||
:EbmlMaster(KaxCluster_Context)
|
||||
|
@ -34,31 +34,20 @@
|
||||
*/
|
||||
#include "matroska/KaxClusterData.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.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] =
|
||||
static const EbmlSemantic ContextList_KaxClusterSilentTracks[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);
|
||||
DEFINE_MKX_UINTEGER(KaxClusterTimecode, 0xE7, 1, KaxCluster, "ClusterTimecode");
|
||||
DEFINE_MKX_MASTER (KaxClusterSilentTracks, 0x5854, 2, KaxCluster, "ClusterSilentTracks")
|
||||
DEFINE_MKX_UINTEGER(KaxClusterSilentTrackNumber, 0x58D7, 2, KaxClusterSilentTracks, "ClusterSilentTrackNumber");
|
||||
DEFINE_MKX_UINTEGER(KaxClusterPosition, 0xA7, 1, KaxCluster, "ClusterPosition");
|
||||
DEFINE_MKX_UINTEGER(KaxClusterPrevSize, 0xAB, 1, KaxCluster, "ClusterPrevSize");
|
||||
|
||||
KaxClusterSilentTracks::KaxClusterSilentTracks()
|
||||
:EbmlMaster(KaxClusterSilentTracks_Context)
|
||||
|
@ -34,14 +34,15 @@
|
||||
*/
|
||||
#include "matroska/KaxContentEncoding.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
const EbmlSemantic KaxContentEncodings_ContextList[1] = {
|
||||
static const EbmlSemantic ContextList_KaxContentEncodings[1] = {
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxContentEncoding)),
|
||||
};
|
||||
|
||||
const EbmlSemantic KaxContentEncoding_ContextList[5] = {
|
||||
static const EbmlSemantic ContextList_KaxContentEncoding[5] = {
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingOrder)),
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingScope)),
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxContentEncodingType)),
|
||||
@ -49,12 +50,12 @@ const EbmlSemantic KaxContentEncoding_ContextList[5] = {
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxContentEncryption)),
|
||||
};
|
||||
|
||||
const EbmlSemantic KaxContentCompression_ContextList[2] = {
|
||||
static const EbmlSemantic ContextList_KaxContentCompression[2] = {
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxContentCompAlgo)),
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxContentCompSettings)),
|
||||
};
|
||||
|
||||
const EbmlSemantic KaxContentEncryption_ContextList[6] = {
|
||||
static const EbmlSemantic ContextList_KaxContentEncryption[6] = {
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxContentEncAlgo)),
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxContentEncKeyID)),
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxContentSignature)),
|
||||
@ -63,177 +64,21 @@ const EbmlSemantic KaxContentEncryption_ContextList[6] = {
|
||||
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);
|
||||
DEFINE_MKX_MASTER (KaxContentEncodings, 0x6d80, 2, KaxTrackEntry, "ContentEncodings");
|
||||
DEFINE_MKX_MASTER (KaxContentEncoding, 0x6240, 2, KaxContentEncodings, "ContentEncoding");
|
||||
DEFINE_MKX_UINTEGER(KaxContentEncodingOrder, 0x5031, 2, KaxContentEncoding, "ContentEncodingOrder");
|
||||
DEFINE_MKX_UINTEGER(KaxContentEncodingScope, 0x5032, 2, KaxContentEncoding, "ContentEncodingScope");
|
||||
DEFINE_MKX_UINTEGER(KaxContentEncodingType, 0x5033, 2, KaxContentEncoding, "ContentEncodingType");
|
||||
DEFINE_MKX_MASTER (KaxContentCompression, 0x5034, 2, KaxContentEncoding, "ContentCompression");
|
||||
DEFINE_MKX_UINTEGER(KaxContentCompAlgo, 0x4254, 2, KaxContentCompression, "ContentCompAlgo");
|
||||
DEFINE_MKX_UINTEGER(KaxContentCompSettings, 0x4255, 2, KaxContentCompression, "ContentCompSettings");
|
||||
DEFINE_MKX_MASTER (KaxContentEncryption, 0x5035, 2, KaxContentEncoding, "ContentEncryption");
|
||||
DEFINE_MKX_UINTEGER(KaxContentEncAlgo, 0x47e1, 2, KaxContentEncryption, "ContentEncAlgo");
|
||||
DEFINE_MKX_BINARY (KaxContentEncKeyID, 0x47e2, 2, KaxContentEncryption, "ContentEncKeyID");
|
||||
DEFINE_MKX_BINARY (KaxContentSignature, 0x47e3, 2, KaxContentEncryption, "ContentSignature");
|
||||
DEFINE_MKX_BINARY (KaxContentSigKeyID, 0x47e4, 2, KaxContentEncryption, "ContentSigKeyID");
|
||||
DEFINE_MKX_UINTEGER(KaxContentSigAlgo, 0x47e5, 2, KaxContentEncryption, "ContentSigAlgo");
|
||||
DEFINE_MKX_UINTEGER(KaxContentSigHashAlgo, 0x47e6, 2, KaxContentEncryption, "ContentSigHashAlgo");
|
||||
|
||||
KaxContentEncodings::KaxContentEncodings():
|
||||
EbmlMaster(KaxContentEncodings_Context) {
|
||||
|
@ -36,19 +36,17 @@
|
||||
#include "matroska/KaxCuesData.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "ebml/EbmlStream.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
// sub elements
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
EbmlSemantic KaxCues_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxCues[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);
|
||||
DEFINE_MKX_MASTER(KaxCues, 0x1C53BB6B, 4, KaxSegment, "Cues");
|
||||
|
||||
KaxCues::KaxCues()
|
||||
:EbmlMaster(KaxCues_Context)
|
||||
|
@ -1,329 +1,300 @@
|
||||
/****************************************************************************
|
||||
** 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::IsSmallerThan(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->IsSmallerThan(TimeCodeB))
|
||||
return true;
|
||||
|
||||
if (TimeCodeB->IsSmallerThan(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->IsSmallerThan(TrackB))
|
||||
return true;
|
||||
|
||||
if (TrackB->IsSmallerThan(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"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
static const EbmlSemantic ContextList_KaxCuePoint[2] =
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(KaxCueTime)),
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxCueTrackPositions)),
|
||||
};
|
||||
|
||||
#if MATROSKA_VERSION == 1
|
||||
static const EbmlSemantic ContextList_KaxCueTrackPositions[3] =
|
||||
#else // MATROSKA_VERSION
|
||||
static const EbmlSemantic ContextList_KaxCueTrackPositions[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
|
||||
static const EbmlSemantic ContextList_KaxCueReference[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
|
||||
|
||||
DEFINE_MKX_MASTER (KaxCuePoint, 0xBB, 1, KaxCues, "CuePoint");
|
||||
DEFINE_MKX_UINTEGER(KaxCueTime, 0xB3, 1, KaxCuePoint, "CueTime");
|
||||
DEFINE_MKX_MASTER (KaxCueTrackPositions, 0xB7, 1, KaxCuePoint, "CueTrackPositions");
|
||||
DEFINE_MKX_UINTEGER(KaxCueTrack, 0xF7, 1, KaxCueTrackPositions, "CueTrack");
|
||||
DEFINE_MKX_UINTEGER(KaxCueClusterPosition, 0xF1, 1, KaxCueTrackPositions, "CueClusterPosition");
|
||||
DEFINE_MKX_UINTEGER(KaxCueBlockNumber, 0x5378, 2, KaxCueTrackPositions, "CueBlockNumber");
|
||||
#if MATROSKA_VERSION >= 2
|
||||
DEFINE_MKX_UINTEGER(KaxCueCodecState, 0xEA, 1, KaxCueTrackPositions, "CueCodecState");
|
||||
DEFINE_MKX_MASTER (KaxCueReference, 0xDB, 1, KaxCueTrackPositions, "CueReference");
|
||||
DEFINE_MKX_UINTEGER(KaxCueRefTime, 0x96, 1, KaxCueReference, "CueRefTime");
|
||||
DEFINE_MKX_UINTEGER(KaxCueRefCluster, 0x97, 1, KaxCueRefTime, "CueRefCluster");
|
||||
DEFINE_MKX_UINTEGER(KaxCueRefNumber, 0x535F, 2, KaxCueRefTime, "CueRefNumber");
|
||||
DEFINE_MKX_UINTEGER(KaxCueRefCodecState, 0xEB, 1, KaxCueRefTime, "CueRefCodecState");
|
||||
#endif
|
||||
|
||||
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::IsSmallerThan(const EbmlElement * EltB) const
|
||||
{
|
||||
assert(EbmlId(*this) == EBML_ID(KaxCuePoint));
|
||||
assert(EbmlId(*EltB) == EBML_ID(KaxCuePoint));
|
||||
|
||||
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->IsSmallerThan(TimeCodeB))
|
||||
return true;
|
||||
|
||||
if (TimeCodeB->IsSmallerThan(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->IsSmallerThan(TrackB))
|
||||
return true;
|
||||
|
||||
if (TrackB->IsSmallerThan(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
|
||||
|
@ -36,11 +36,12 @@
|
||||
#include "matroska/KaxInfoData.h"
|
||||
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
// sub elements
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
const EbmlSemantic KaxInfo_ContextList[14] =
|
||||
static const EbmlSemantic ContextList_KaxInfo[14] =
|
||||
{
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxSegmentUID)),
|
||||
EbmlSemantic(false, true, EBML_INFO(KaxSegmentFilename)),
|
||||
@ -58,17 +59,9 @@ const EbmlSemantic KaxInfo_ContextList[14] =
|
||||
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);
|
||||
DEFINE_MKX_MASTER (KaxInfo, 0x1549A966, 4, KaxSegment, "Info");
|
||||
DEFINE_MKX_UNISTRING(KaxMuxingApp, 0x4D80, 2, KaxInfo, "MuxingApp");
|
||||
DEFINE_MKX_UNISTRING(KaxWritingApp, 0x5741, 2, KaxInfo, "WritingApp");
|
||||
|
||||
KaxInfo::KaxInfo()
|
||||
:EbmlMaster(KaxInfo_Context)
|
||||
|
@ -35,64 +35,32 @@
|
||||
*/
|
||||
#include "matroska/KaxInfoData.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
const EbmlSemantic KaxChapterTranslate_ContextList[3] =
|
||||
static const EbmlSemantic ContextList_KaxChapterTranslate[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);
|
||||
DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, 2, KaxInfo, "ChapterTranslate");
|
||||
DEFINE_MKX_UNISTRING(KaxSegmentFilename, 0x7384, 2, KaxInfo, "SegmentFilename");
|
||||
DEFINE_MKX_BINARY (KaxPrevUID, 0x3CB923, 3, KaxInfo, "PrevUID");
|
||||
DEFINE_MKX_UNISTRING(KaxPrevFilename, 0x3C83AB, 3, KaxInfo, "PrevFilename");
|
||||
DEFINE_MKX_BINARY (KaxNextUID, 0x3EB923, 3, KaxInfo, "NextUID");
|
||||
DEFINE_MKX_UNISTRING(KaxNextFilename, 0x3E83BB, 3, KaxInfo, "NextFilename");
|
||||
DEFINE_MKX_BINARY (KaxSegmentFamily, 0x4444, 2, KaxInfo, "SegmentFamily");
|
||||
DEFINE_MKX_MASTER (KaxChapterTranslate, 0x6924, 2, KaxInfo, "ChapterTranslate");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterTranslateEditionUID, 0x69FC, 2, KaxChapterTranslate, "ChapterTranslateEditionUID");
|
||||
DEFINE_MKX_UINTEGER (KaxChapterTranslateCodec, 0x69BF, 2, KaxChapterTranslate, "ChapterTranslateCodec");
|
||||
DEFINE_MKX_BINARY (KaxChapterTranslateID, 0x69A5, 2, KaxChapterTranslate, "ChapterTranslateID");
|
||||
DEFINE_MKX_UINTEGER (KaxTimecodeScale, 0x2AD7B1, 3, KaxInfo, "TimecodeScale");
|
||||
DEFINE_MKX_FLOAT (KaxDuration, 0x4489, 2, KaxInfo, "Duration");
|
||||
DEFINE_MKX_DATE (KaxDateUTC, 0x4461, 2, KaxInfo, "DateUTC");
|
||||
DEFINE_MKX_UNISTRING(KaxTitle, 0x7BA9, 2, KaxInfo, "Title");
|
||||
|
||||
KaxChapterTranslate::KaxChapterTranslate()
|
||||
:EbmlMaster(KaxChapterTranslate_Context)
|
||||
|
@ -36,37 +36,28 @@
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxSegment.h"
|
||||
#include "matroska/KaxCues.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
using namespace LIBEBML_NAMESPACE;
|
||||
|
||||
// sub elements
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
EbmlSemantic KaxSeekHead_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxSeekHead[1] =
|
||||
{
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxSeek)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxSeek_ContextList[2] =
|
||||
static const EbmlSemantic ContextList_KaxSeek[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);
|
||||
DEFINE_MKX_MASTER (KaxSeekHead, 0x114D9B74, 4, KaxSegment, "SeekHeader");
|
||||
DEFINE_MKX_MASTER (KaxSeek, 0x4DBB, 2, KaxSeekHead, "SeekPoint");
|
||||
DEFINE_MKX_BINARY (KaxSeekID, 0x53AB, 2, KaxSeek, "SeekID");
|
||||
DEFINE_MKX_UINTEGER(KaxSeekPosition, 0x53AC, 2, KaxSeek, "SeekPosition");
|
||||
|
||||
KaxSeekHead::KaxSeekHead()
|
||||
:EbmlMaster(KaxSeekHead_Context)
|
||||
|
@ -45,16 +45,17 @@
|
||||
#include "matroska/KaxAttachments.h"
|
||||
#include "matroska/KaxTags.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
EbmlSemantic KaxMatroska_ContextList[2] =
|
||||
static const EbmlSemantic ContextList_KaxMatroska[2] =
|
||||
{
|
||||
EbmlSemantic(true, true, EBML_INFO(EbmlHead)),
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxSegment)),
|
||||
};
|
||||
|
||||
EbmlSemantic KaxSegment_ContextList[8] =
|
||||
static const EbmlSemantic ContextList_KaxSegment[8] =
|
||||
{
|
||||
EbmlSemantic(false, false, EBML_INFO(KaxCluster)),
|
||||
EbmlSemantic(false, false, EBML_INFO(KaxSeekHead)),
|
||||
@ -66,11 +67,8 @@ EbmlSemantic KaxSegment_ContextList[8] =
|
||||
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);
|
||||
DEFINE_MKX_MASTER_GLOBAL(KaxMatroska, -1, 5, "Matroska");
|
||||
DEFINE_MKX_MASTER_ORPHAN(KaxSegment, 0x18538067, 4, "Segment\0rotomopogo");
|
||||
|
||||
KaxSegment::KaxSegment()
|
||||
:EbmlMaster(KaxSegment_Context)
|
||||
|
@ -36,22 +36,19 @@
|
||||
#include "matroska/KaxTags.h"
|
||||
#include "matroska/KaxTag.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
using namespace LIBEBML_NAMESPACE;
|
||||
|
||||
// sub elements
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
EbmlSemantic KaxTags_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxTags[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);
|
||||
DEFINE_MKX_MASTER(KaxTags, 0x1254C367, 4, KaxSegment, "Tags");
|
||||
|
||||
KaxTags::KaxTags()
|
||||
:EbmlMaster(KaxTags_Context)
|
||||
|
@ -36,13 +36,14 @@
|
||||
|
||||
// sub elements
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
#if MATROSKA_VERSION == 1
|
||||
const EbmlSemantic KaxTrackAudio_ContextList[4] =
|
||||
static const EbmlSemantic ContextList_KaxTrackAudio[4] =
|
||||
#else // MATROSKA_VERSION
|
||||
const EbmlSemantic KaxTrackAudio_ContextList[5] =
|
||||
static const EbmlSemantic ContextList_KaxTrackAudio[5] =
|
||||
#endif // MATROSKA_VERSION
|
||||
{
|
||||
EbmlSemantic(true , true, EBML_INFO(KaxAudioSamplingFreq)),
|
||||
@ -54,32 +55,14 @@ const EbmlSemantic KaxTrackAudio_ContextList[5] =
|
||||
#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));
|
||||
DEFINE_MKX_MASTER (KaxTrackAudio, 0xE1, 1, KaxTrackEntry, "TrackAudio");
|
||||
DEFINE_MKX_FLOAT (KaxAudioSamplingFreq, 0xB5, 1, KaxTrackAudio, "AudioSamplingFreq");
|
||||
DEFINE_MKX_FLOAT (KaxAudioOutputSamplingFreq, 0x78B5, 2, KaxTrackAudio, "AudioOutputSamplingFreq");
|
||||
DEFINE_MKX_UINTEGER(KaxAudioChannels, 0x9F, 1, KaxTrackAudio, "AudioChannels");
|
||||
DEFINE_MKX_UINTEGER(KaxAudioBitDepth, 0x6264, 2, KaxTrackAudio, "AudioBitDepth");
|
||||
#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
|
||||
DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition");
|
||||
#endif
|
||||
|
||||
KaxTrackAudio::KaxTrackAudio()
|
||||
:EbmlMaster(KaxTrackAudio_Context)
|
||||
|
@ -35,105 +35,46 @@
|
||||
*/
|
||||
#include "matroska/KaxTrackEntryData.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
const EbmlSemantic KaxTrackTranslate_ContextList[3] =
|
||||
static const EbmlSemantic ContextList_KaxTrackTranslate[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);
|
||||
DEFINE_MKX_UINTEGER (KaxTrackNumber, 0xD7, 1, KaxTracks, "TrackNumber");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackUID, 0x73C5, 2, KaxTracks, "TrackUID");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackType, 0x83, 1, KaxTracks, "TrackType");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackFlagDefault, 0x88, 1, KaxTracks, "TrackFlagEnabled");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackFlagForced, 0x55AA, 2, KaxTracks, "TrackFlagForced");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackFlagLacing, 0x9C, 1, KaxTracks, "TrackFlagLacing");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackMinCache, 0x6DE7, 2, KaxTracks, "TrackMinCache");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackMaxCache, 0x6DF8, 2, KaxTracks, "TrackMaxCache\0rotomodobopo");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackDefaultDuration, 0x23E383, 3, KaxTracks, "TrackDefaultDuration");
|
||||
DEFINE_MKX_FLOAT (KaxTrackTimecodeScale, 0x23314F, 3, KaxTracks, "TrackTimecodeScale");
|
||||
DEFINE_MKX_UINTEGER (KaxMaxBlockAdditionID, 0x55EE, 2, KaxTracks, "MaxBlockAdditionID");
|
||||
DEFINE_MKX_UNISTRING(KaxTrackName, 0x536E, 2, KaxTracks, "TrackName");
|
||||
DEFINE_MKX_STRING (KaxTrackLanguage, 0x22B59C, 3, KaxTracks, "TrackLanguage");
|
||||
DEFINE_MKX_STRING (KaxCodecID, 0x86, 1, KaxTracks, "CodecID");
|
||||
DEFINE_MKX_BINARY (KaxCodecPrivate, 0x63A2, 2, KaxTracks, "CodecPrivate");
|
||||
DEFINE_MKX_UNISTRING(KaxCodecName, 0x258688, 3, KaxTracks, "CodecName");
|
||||
DEFINE_MKX_BINARY (KaxTrackAttachmentLink, 0x7446, 2, KaxTracks, "TrackAttachmentLink");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackOverlay, 0x6FAB, 2, KaxTracks, "TrackOverlay");
|
||||
DEFINE_MKX_MASTER (KaxTrackTranslate, 0x6624, 2, KaxTracks, "TrackTranslate");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackTranslateEditionUID, 0x66FC, 2, KaxTrackTranslate, "TrackTranslateEditionUID");
|
||||
DEFINE_MKX_UINTEGER (KaxTrackTranslateCodec, 0x66BF, 2, KaxTrackTranslate, "TrackTranslateCodec");
|
||||
DEFINE_MKX_BINARY (KaxTrackTranslateTrackID, 0x66A5, 2, KaxTrackTranslate, "TrackTranslateTrackID");
|
||||
#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
|
||||
DEFINE_MKX_UINTEGER (KaxTrackFlagEnabled, 0xB9, 1, KaxTracks, "TrackFlagDefault");
|
||||
DEFINE_MKX_UNISTRING(KaxCodecSettings, 0x3A9697, 3, KaxTracks, "CodecSettings");
|
||||
DEFINE_MKX_STRING (KaxCodecInfoURL, 0x3B4040, 3, KaxTracks, "CodecInfoURL");
|
||||
DEFINE_MKX_STRING (KaxCodecDownloadURL, 0x26B240, 3, KaxTracks, "CodecDownloadURL");
|
||||
DEFINE_MKX_UINTEGER (KaxCodecDecodeAll, 0xAA, 1, KaxTracks, "CodecDecodeAll");
|
||||
#endif
|
||||
|
||||
KaxTrackTranslate::KaxTrackTranslate()
|
||||
:EbmlMaster(KaxTrackTranslate_Context)
|
||||
|
@ -36,13 +36,14 @@
|
||||
|
||||
// sub elements
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
#if MATROSKA_VERSION == 1
|
||||
const EbmlSemantic KaxTrackVideo_ContextList[10] =
|
||||
static const EbmlSemantic ContextList_KaxTrackVideo[10] =
|
||||
#else // MATROSKA_VERSION
|
||||
const EbmlSemantic KaxTrackVideo_ContextList[15] =
|
||||
static const EbmlSemantic ContextList_KaxTrackVideo[15] =
|
||||
#endif // MATROSKA_VERSION
|
||||
{
|
||||
EbmlSemantic(true , true, EBML_INFO(KaxVideoPixelWidth)),
|
||||
@ -64,62 +65,24 @@ const EbmlSemantic KaxTrackVideo_ContextList[15] =
|
||||
#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));
|
||||
DEFINE_MKX_MASTER (KaxTrackVideo, 0xE0, 1, KaxTrackEntry, "TrackVideo");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoPixelWidth, 0xB0, 1, KaxTrackVideo, "VideoPixelWidth");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoPixelHeight, 0xBA, 1, KaxTrackVideo, "VideoPixelHeight");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoPixelCropBottom, 0x54AA, 2, KaxTrackVideo, "VideoPixelCropBottom");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoPixelCropTop, 0x54BB, 2, KaxTrackVideo, "VideoPixelCropTop");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoPixelCropLeft, 0x54CC, 2, KaxTrackVideo, "VideoPixelCropLeft");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoPixelCropRight, 0x54DD, 2, KaxTrackVideo, "VideoPixelCropRight");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoDisplayWidth, 0x54B0, 2, KaxTrackVideo, "VideoDisplayWidth");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoDisplayHeight, 0x54BA, 2, KaxTrackVideo, "VideoDisplayHeight");
|
||||
DEFINE_MKX_BINARY (KaxVideoColourSpace, 0x2EB524, 3, KaxTrackVideo, "VideoColourSpace");
|
||||
DEFINE_MKX_FLOAT (KaxVideoFrameRate, 0x2383E3, 3, KaxTrackVideo, "VideoFrameRate");
|
||||
#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
|
||||
DEFINE_MKX_UINTEGER(KaxVideoFlagInterlaced, 0x9A, 1, KaxTrackVideo, "VideoFlagInterlaced");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoStereoMode, 0x53B9, 2, KaxTrackVideo, "VideoStereoMode");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoDisplayUnit, 0x54B2, 2, KaxTrackVideo, "VideoDisplayUnit");
|
||||
DEFINE_MKX_UINTEGER(KaxVideoAspectRatio, 0x54B3, 2, KaxTrackVideo, "VideoAspectRatio");
|
||||
DEFINE_MKX_FLOAT (KaxVideoGamma, 0x2FB523, 3, KaxTrackVideo, "VideoGamma");
|
||||
#endif
|
||||
|
||||
KaxTrackVideo::KaxTrackVideo()
|
||||
:EbmlMaster(KaxTrackVideo_Context)
|
||||
|
@ -40,18 +40,19 @@
|
||||
#include "matroska/KaxTrackVideo.h"
|
||||
#include "matroska/KaxContentEncoding.h"
|
||||
#include "matroska/KaxContexts.h"
|
||||
#include "matroska/KaxDefines.h"
|
||||
|
||||
START_LIBMATROSKA_NAMESPACE
|
||||
|
||||
const EbmlSemantic KaxTracks_ContextList[1] =
|
||||
static const EbmlSemantic ContextList_KaxTracks[1] =
|
||||
{
|
||||
EbmlSemantic(true, false, EBML_INFO(KaxTrackEntry)),
|
||||
};
|
||||
|
||||
#if MATROSKA_VERSION == 1
|
||||
const EbmlSemantic KaxTrackEntry_ContextList[22] =
|
||||
static const EbmlSemantic ContextList_KaxTrackEntry[22] =
|
||||
#else // MATROSKA_VERSION
|
||||
const EbmlSemantic KaxTrackEntry_ContextList[27] =
|
||||
static const EbmlSemantic ContextList_KaxTrackEntry[27] =
|
||||
#endif // MATROSKA_VERSION
|
||||
{
|
||||
EbmlSemantic(true , true, EBML_INFO(KaxTrackNumber)),
|
||||
@ -87,14 +88,8 @@ const EbmlSemantic KaxTrackEntry_ContextList[27] =
|
||||
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);
|
||||
DEFINE_MKX_MASTER(KaxTracks, 0x1654AE6B, 4, KaxSegment, "Tracks");
|
||||
DEFINE_MKX_MASTER(KaxTrackEntry, 0xAE, 1, KaxTracks, "TrackEntry");
|
||||
|
||||
KaxTracks::KaxTracks()
|
||||
:EbmlMaster(KaxTracks_Context)
|
||||
|
Loading…
x
Reference in New Issue
Block a user