1/**************************************************************************** 2** libmatroska : parse Matroska files, see http://www.matroska.org/ 3** 4** <file/class description> 5** 6** Copyright (C) 2002-2005 Steve Lhomme. All rights reserved. 7** 8** This file is part of libmatroska. 9** 10** This library is free software; you can redistribute it and/or 11** modify it under the terms of the GNU Lesser General Public 12** License as published by the Free Software Foundation; either 13** version 2.1 of the License, or (at your option) any later version. 14** 15** This library is distributed in the hope that it will be useful, 16** but WITHOUT ANY WARRANTY; without even the implied warranty of 17** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18** Lesser General Public License for more details. 19** 20** You should have received a copy of the GNU Lesser General Public 21** License along with this library; if not, write to the Free Software 22** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23** 24** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** 25** Contact license@matroska.org if any conditions of this licensing are 26** not clear to you. 27** 28**********************************************************************/ 29 30/*! 31 \file 32 \version \$Id: KaxTrackEntryData.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $ 33 \author Steve Lhomme <robux4 @ users.sf.net> 34 \author John Cannon <spyder2555 @ users.sf.net> 35*/ 36#ifndef LIBMATROSKA_TRACK_ENTRY_DATA_H 37#define LIBMATROSKA_TRACK_ENTRY_DATA_H 38 39#include "matroska/KaxTypes.h" 40#include "ebml/EbmlUInteger.h" 41#include "ebml/EbmlFloat.h" 42#include "ebml/EbmlString.h" 43#include "ebml/EbmlUnicodeString.h" 44#include "ebml/EbmlBinary.h" 45#include "ebml/EbmlMaster.h" 46 47using namespace LIBEBML_NAMESPACE; 48 49START_LIBMATROSKA_NAMESPACE 50 51class MATROSKA_DLL_API KaxTrackNumber : public EbmlUInteger { 52 public: 53 KaxTrackNumber() {} 54 KaxTrackNumber(const KaxTrackNumber & ElementToClone) :EbmlUInteger(ElementToClone) {} 55 static EbmlElement & Create() {return *(new KaxTrackNumber);} 56 const EbmlCallbacks & Generic() const {return ClassInfos;} 57 static const EbmlCallbacks ClassInfos; 58 operator const EbmlId &() const {return ClassInfos.GlobalId;} 59 EbmlElement * Clone() const {return new KaxTrackNumber(*this);} 60}; 61 62class MATROSKA_DLL_API KaxTrackUID : public EbmlUInteger { 63 public: 64 KaxTrackUID() {} 65 KaxTrackUID(const KaxTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {} 66 static EbmlElement & Create() {return *(new KaxTrackUID);} 67 const EbmlCallbacks & Generic() const {return ClassInfos;} 68 static const EbmlCallbacks ClassInfos; 69 operator const EbmlId &() const {return ClassInfos.GlobalId;} 70 EbmlElement * Clone() const {return new KaxTrackUID(*this);} 71}; 72 73class MATROSKA_DLL_API KaxTrackType : public EbmlUInteger { 74 public: 75 KaxTrackType() {} 76 KaxTrackType(const KaxTrackType & ElementToClone) :EbmlUInteger(ElementToClone) {} 77 static EbmlElement & Create() {return *(new KaxTrackType);} 78 const EbmlCallbacks & Generic() const {return ClassInfos;} 79 static const EbmlCallbacks ClassInfos; 80 operator const EbmlId &() const {return ClassInfos.GlobalId;} 81 EbmlElement * Clone() const {return new KaxTrackType(*this);} 82}; 83 84#if MATROSKA_VERSION >= 2 85class MATROSKA_DLL_API KaxTrackFlagEnabled : public EbmlUInteger { 86 public: 87 KaxTrackFlagEnabled() :EbmlUInteger(1) {} 88 KaxTrackFlagEnabled(const KaxTrackFlagEnabled & ElementToClone) :EbmlUInteger(ElementToClone) {} 89 static EbmlElement & Create() {return *(new KaxTrackFlagEnabled);} 90 const EbmlCallbacks & Generic() const {return ClassInfos;} 91 static const EbmlCallbacks ClassInfos; 92 operator const EbmlId &() const {return ClassInfos.GlobalId;} 93 EbmlElement * Clone() const {return new KaxTrackFlagEnabled(*this);} 94}; 95#endif // MATROSKA_VERSION 96 97class MATROSKA_DLL_API KaxTrackFlagDefault : public EbmlUInteger { 98 public: 99 KaxTrackFlagDefault() :EbmlUInteger(1) {} 100 KaxTrackFlagDefault(const KaxTrackFlagDefault & ElementToClone) :EbmlUInteger(ElementToClone) {} 101 static EbmlElement & Create() {return *(new KaxTrackFlagDefault);} 102 const EbmlCallbacks & Generic() const {return ClassInfos;} 103 static const EbmlCallbacks ClassInfos; 104 operator const EbmlId &() const {return ClassInfos.GlobalId;} 105 EbmlElement * Clone() const {return new KaxTrackFlagDefault(*this);} 106}; 107 108class MATROSKA_DLL_API KaxTrackFlagForced : public EbmlUInteger { 109 public: 110 KaxTrackFlagForced() :EbmlUInteger(0) {} 111 KaxTrackFlagForced(const KaxTrackFlagForced & ElementToClone) :EbmlUInteger(ElementToClone) {} 112 static EbmlElement & Create() {return *(new KaxTrackFlagForced);} 113 const EbmlCallbacks & Generic() const {return ClassInfos;} 114 static const EbmlCallbacks ClassInfos; 115 operator const EbmlId &() const {return ClassInfos.GlobalId;} 116 EbmlElement * Clone() const {return new KaxTrackFlagForced(*this);} 117}; 118 119class MATROSKA_DLL_API KaxTrackFlagLacing : public EbmlUInteger { 120 public: 121 KaxTrackFlagLacing() :EbmlUInteger(1) {} 122 KaxTrackFlagLacing(const KaxTrackFlagLacing & ElementToClone) :EbmlUInteger(ElementToClone) {} 123 static EbmlElement & Create() {return *(new KaxTrackFlagLacing);} 124 const EbmlCallbacks & Generic() const {return ClassInfos;} 125 static const EbmlCallbacks ClassInfos; 126 operator const EbmlId &() const {return ClassInfos.GlobalId;} 127 EbmlElement * Clone() const {return new KaxTrackFlagLacing(*this);} 128}; 129 130class MATROSKA_DLL_API KaxTrackMinCache : public EbmlUInteger { 131 public: 132 KaxTrackMinCache() :EbmlUInteger(0) {} 133 KaxTrackMinCache(const KaxTrackMinCache & ElementToClone) :EbmlUInteger(ElementToClone) {} 134 static EbmlElement & Create() {return *(new KaxTrackMinCache);} 135 const EbmlCallbacks & Generic() const {return ClassInfos;} 136 static const EbmlCallbacks ClassInfos; 137 operator const EbmlId &() const {return ClassInfos.GlobalId;} 138 EbmlElement * Clone() const {return new KaxTrackMinCache(*this);} 139}; 140 141class MATROSKA_DLL_API KaxTrackMaxCache : public EbmlUInteger { 142 public: 143 KaxTrackMaxCache() {} 144 KaxTrackMaxCache(const KaxTrackMaxCache & ElementToClone) :EbmlUInteger(ElementToClone) {} 145 static EbmlElement & Create() {return *(new KaxTrackMaxCache);} 146 const EbmlCallbacks & Generic() const {return ClassInfos;} 147 static const EbmlCallbacks ClassInfos; 148 operator const EbmlId &() const {return ClassInfos.GlobalId;} 149 EbmlElement * Clone() const {return new KaxTrackMaxCache(*this);} 150}; 151 152class MATROSKA_DLL_API KaxTrackDefaultDuration : public EbmlUInteger { 153 public: 154 KaxTrackDefaultDuration() {} 155 KaxTrackDefaultDuration(const KaxTrackDefaultDuration & ElementToClone) :EbmlUInteger(ElementToClone) {} 156 static EbmlElement & Create() {return *(new KaxTrackDefaultDuration);} 157 const EbmlCallbacks & Generic() const {return ClassInfos;} 158 static const EbmlCallbacks ClassInfos; 159 operator const EbmlId &() const {return ClassInfos.GlobalId;} 160 EbmlElement * Clone() const {return new KaxTrackDefaultDuration(*this);} 161}; 162 163class MATROSKA_DLL_API KaxTrackTimecodeScale : public EbmlFloat { 164 public: 165 KaxTrackTimecodeScale() :EbmlFloat(1.0) {} 166 KaxTrackTimecodeScale(const KaxTrackTimecodeScale & ElementToClone) :EbmlFloat(ElementToClone) {} 167 static EbmlElement & Create() {return *(new KaxTrackTimecodeScale);} 168 const EbmlCallbacks & Generic() const {return ClassInfos;} 169 static const EbmlCallbacks ClassInfos; 170 operator const EbmlId &() const {return ClassInfos.GlobalId;} 171 EbmlElement * Clone() const {return new KaxTrackTimecodeScale(*this);} 172}; 173 174class MATROSKA_DLL_API KaxMaxBlockAdditionID : public EbmlUInteger { 175 public: 176 KaxMaxBlockAdditionID() :EbmlUInteger(0) {} 177 KaxMaxBlockAdditionID(const KaxMaxBlockAdditionID & ElementToClone) :EbmlUInteger(ElementToClone) {} 178 static EbmlElement & Create() {return *(new KaxMaxBlockAdditionID);} 179 const EbmlCallbacks & Generic() const {return ClassInfos;} 180 static const EbmlCallbacks ClassInfos; 181 operator const EbmlId &() const {return ClassInfos.GlobalId;} 182 EbmlElement * Clone() const {return new KaxMaxBlockAdditionID(*this);} 183}; 184 185class MATROSKA_DLL_API KaxTrackName : public EbmlUnicodeString { 186 public: 187 KaxTrackName() {} 188 KaxTrackName(const KaxTrackName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 189 static EbmlElement & Create() {return *(new KaxTrackName);} 190 const EbmlCallbacks & Generic() const {return ClassInfos;} 191 static const EbmlCallbacks ClassInfos; 192 operator const EbmlId &() const {return ClassInfos.GlobalId;} 193 EbmlElement * Clone() const {return new KaxTrackName(*this);} 194}; 195 196class MATROSKA_DLL_API KaxTrackLanguage : public EbmlString { 197 public: 198 KaxTrackLanguage() :EbmlString("eng") {} 199 KaxTrackLanguage(const KaxTrackLanguage & ElementToClone) :EbmlString(ElementToClone) {} 200 static EbmlElement & Create() {return *(new KaxTrackLanguage);} 201 const EbmlCallbacks & Generic() const {return ClassInfos;} 202 static const EbmlCallbacks ClassInfos; 203 operator const EbmlId &() const {return ClassInfos.GlobalId;} 204 EbmlElement * Clone() const {return new KaxTrackLanguage(*this);} 205}; 206 207class MATROSKA_DLL_API KaxCodecID : public EbmlString { 208 public: 209 KaxCodecID() {} 210 KaxCodecID(const KaxCodecID & ElementToClone) :EbmlString(ElementToClone) {} 211 static EbmlElement & Create() {return *(new KaxCodecID);} 212 const EbmlCallbacks & Generic() const {return ClassInfos;} 213 static const EbmlCallbacks ClassInfos; 214 operator const EbmlId &() const {return ClassInfos.GlobalId;} 215 EbmlElement * Clone() const {return new KaxCodecID(*this);} 216}; 217 218class MATROSKA_DLL_API KaxCodecPrivate : public EbmlBinary { 219 public: 220 KaxCodecPrivate() {} 221 KaxCodecPrivate(const KaxCodecPrivate & ElementToClone) :EbmlBinary(ElementToClone){} 222 static EbmlElement & Create() {return *(new KaxCodecPrivate);} 223 bool ValidateSize() const {return true;} // we don't mind about what's inside 224 const EbmlCallbacks & Generic() const {return ClassInfos;} 225 static const EbmlCallbacks ClassInfos; 226 operator const EbmlId &() const {return ClassInfos.GlobalId;} 227 EbmlElement * Clone() const {return new KaxCodecPrivate(*this);} 228}; 229 230class MATROSKA_DLL_API KaxCodecName : public EbmlUnicodeString { 231 public: 232 KaxCodecName() {} 233 KaxCodecName(const KaxCodecName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 234 static EbmlElement & Create() {return *(new KaxCodecName);} 235 const EbmlCallbacks & Generic() const {return ClassInfos;} 236 static const EbmlCallbacks ClassInfos; 237 operator const EbmlId &() const {return ClassInfos.GlobalId;} 238 EbmlElement * Clone() const {return new KaxCodecName(*this);} 239}; 240 241class MATROSKA_DLL_API KaxTrackAttachmentLink : public EbmlBinary { 242 public: 243 KaxTrackAttachmentLink() {} 244 KaxTrackAttachmentLink(const KaxTrackAttachmentLink & ElementToClone) :EbmlBinary(ElementToClone){} 245 static EbmlElement & Create() {return *(new KaxTrackAttachmentLink);} 246 bool ValidateSize() const {return true;} // we don't mind about what's inside 247 const EbmlCallbacks & Generic() const {return ClassInfos;} 248 static const EbmlCallbacks ClassInfos; 249 operator const EbmlId &() const {return ClassInfos.GlobalId;} 250 EbmlElement * Clone() const {return new KaxTrackAttachmentLink(*this);} 251}; 252 253class MATROSKA_DLL_API KaxTrackOverlay : public EbmlUInteger { 254 public: 255 KaxTrackOverlay() {} 256 KaxTrackOverlay(const KaxTrackOverlay & ElementToClone) :EbmlUInteger(ElementToClone) {} 257 static EbmlElement & Create() {return *(new KaxTrackOverlay);} 258 const EbmlCallbacks & Generic() const {return ClassInfos;} 259 static const EbmlCallbacks ClassInfos; 260 operator const EbmlId &() const {return ClassInfos.GlobalId;} 261 EbmlElement * Clone() const {return new KaxTrackOverlay(*this);} 262}; 263 264class MATROSKA_DLL_API KaxTrackTranslate : public EbmlMaster { 265 public: 266 KaxTrackTranslate(); 267 KaxTrackTranslate(const KaxTrackTranslate & ElementToClone) :EbmlMaster(ElementToClone) {} 268 static EbmlElement & Create() {return *(new KaxTrackTranslate);} 269 const EbmlCallbacks & Generic() const {return ClassInfos;} 270 static const EbmlCallbacks ClassInfos; 271 operator const EbmlId &() const {return ClassInfos.GlobalId;} 272 EbmlElement * Clone() const {return new KaxTrackTranslate(*this);} 273}; 274 275class MATROSKA_DLL_API KaxTrackTranslateCodec : public EbmlUInteger { 276 public: 277 KaxTrackTranslateCodec() {} 278 KaxTrackTranslateCodec(const KaxTrackTranslateCodec & ElementToClone) :EbmlUInteger(ElementToClone) {} 279 static EbmlElement & Create() {return *(new KaxTrackTranslateCodec);} 280 const EbmlCallbacks & Generic() const {return ClassInfos;} 281 static const EbmlCallbacks ClassInfos; 282 operator const EbmlId &() const {return ClassInfos.GlobalId;} 283 EbmlElement * Clone() const {return new KaxTrackTranslateCodec(*this);} 284}; 285 286class MATROSKA_DLL_API KaxTrackTranslateEditionUID : public EbmlUInteger { 287 public: 288 KaxTrackTranslateEditionUID() {} 289 KaxTrackTranslateEditionUID(const KaxTrackTranslateEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {} 290 static EbmlElement & Create() {return *(new KaxTrackTranslateEditionUID);} 291 const EbmlCallbacks & Generic() const {return ClassInfos;} 292 static const EbmlCallbacks ClassInfos; 293 operator const EbmlId &() const {return ClassInfos.GlobalId;} 294 EbmlElement * Clone() const {return new KaxTrackTranslateEditionUID(*this);} 295}; 296 297class MATROSKA_DLL_API KaxTrackTranslateTrackID : public EbmlBinary { 298 public: 299 KaxTrackTranslateTrackID() {} 300 KaxTrackTranslateTrackID(const KaxTrackTranslateTrackID & ElementToClone) :EbmlBinary(ElementToClone){} 301 static EbmlElement & Create() {return *(new KaxTrackTranslateTrackID);} 302 bool ValidateSize() const { return true;} 303 const EbmlCallbacks & Generic() const {return ClassInfos;} 304 static const EbmlCallbacks ClassInfos; 305 operator const EbmlId &() const {return ClassInfos.GlobalId;} 306 EbmlElement * Clone() const {return new KaxTrackTranslateTrackID(*this);} 307}; 308 309#if MATROSKA_VERSION >= 2 310class MATROSKA_DLL_API KaxCodecSettings : public EbmlUnicodeString { 311 public: 312 KaxCodecSettings() {} 313 KaxCodecSettings(const KaxCodecSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 314 static EbmlElement & Create() {return *(new KaxCodecSettings);} 315 const EbmlCallbacks & Generic() const {return ClassInfos;} 316 static const EbmlCallbacks ClassInfos; 317 operator const EbmlId &() const {return ClassInfos.GlobalId;} 318 EbmlElement * Clone() const {return new KaxCodecSettings(*this);} 319}; 320 321class MATROSKA_DLL_API KaxCodecInfoURL : public EbmlString { 322 public: 323 KaxCodecInfoURL() {} 324 KaxCodecInfoURL(const KaxCodecInfoURL & ElementToClone) :EbmlString(ElementToClone) {} 325 static EbmlElement & Create() {return *(new KaxCodecInfoURL);} 326 const EbmlCallbacks & Generic() const {return ClassInfos;} 327 static const EbmlCallbacks ClassInfos; 328 operator const EbmlId &() const {return ClassInfos.GlobalId;} 329 EbmlElement * Clone() const {return new KaxCodecInfoURL(*this);} 330}; 331 332class MATROSKA_DLL_API KaxCodecDownloadURL : public EbmlString { 333 public: 334 KaxCodecDownloadURL() {} 335 KaxCodecDownloadURL(const KaxCodecDownloadURL & ElementToClone) :EbmlString(ElementToClone) {} 336 static EbmlElement & Create() {return *(new KaxCodecDownloadURL);} 337 const EbmlCallbacks & Generic() const {return ClassInfos;} 338 static const EbmlCallbacks ClassInfos; 339 operator const EbmlId &() const {return ClassInfos.GlobalId;} 340 EbmlElement * Clone() const {return new KaxCodecDownloadURL(*this);} 341}; 342 343class MATROSKA_DLL_API KaxCodecDecodeAll : public EbmlUInteger { 344 public: 345 KaxCodecDecodeAll() :EbmlUInteger(1) {} 346 KaxCodecDecodeAll(const KaxCodecDecodeAll & ElementToClone) :EbmlUInteger(ElementToClone) {} 347 static EbmlElement & Create() {return *(new KaxCodecDecodeAll);} 348 const EbmlCallbacks & Generic() const {return ClassInfos;} 349 static const EbmlCallbacks ClassInfos; 350 operator const EbmlId &() const {return ClassInfos.GlobalId;} 351 EbmlElement * Clone() const {return new KaxCodecDecodeAll(*this);} 352}; 353#endif // MATROSKA_VERSION 354 355END_LIBMATROSKA_NAMESPACE 356 357#endif // LIBMATROSKA_TRACK_ENTRY_DATA_H 358