1/**************************************************************************** 2** libmatroska : parse Matroska files, see http://www.matroska.org/ 3** 4** <file/class MATROSKA_DLL_API description> 5** 6** Copyright (C) 2002-2004 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** 26** Contact license@matroska.org if any conditions of this licensing are 27** not clear to you. 28** 29**********************************************************************/ 30 31/*! 32 \file 33 \version \$Id: KaxTag.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $ 34 \author Jory Stone <jcsston @ toughguy.net> 35 \author Steve Lhomme <robux4 @ users.sf.net> 36*/ 37#ifndef LIBMATROSKA_TAG_H 38#define LIBMATROSKA_TAG_H 39 40#include "matroska/KaxTypes.h" 41#include "ebml/EbmlMaster.h" 42#include "ebml/EbmlFloat.h" 43#include "ebml/EbmlSInteger.h" 44#include "ebml/EbmlUInteger.h" 45#include "ebml/EbmlString.h" 46#include "ebml/EbmlUnicodeString.h" 47#include "ebml/EbmlBinary.h" 48 49using namespace LIBEBML_NAMESPACE; 50 51START_LIBMATROSKA_NAMESPACE 52 53class MATROSKA_DLL_API KaxTag : public EbmlMaster { 54 public: 55 KaxTag(); 56 KaxTag(const KaxTag & ElementToClone) :EbmlMaster(ElementToClone) {} 57 static EbmlElement & Create() {return *(new KaxTag);} 58 const EbmlCallbacks & Generic() const {return ClassInfos;} 59 static const EbmlCallbacks ClassInfos; 60 operator const EbmlId &() const {return ClassInfos.GlobalId;} 61 EbmlElement * Clone() const {return new KaxTag(*this);} 62}; 63 64class MATROSKA_DLL_API KaxTagTargets : public EbmlMaster { 65 public: 66 KaxTagTargets(); 67 KaxTagTargets(const KaxTagTargets & ElementToClone) :EbmlMaster(ElementToClone) {} 68 static EbmlElement & Create() {return *(new KaxTagTargets);} 69 const EbmlCallbacks & Generic() const {return ClassInfos;} 70 static const EbmlCallbacks ClassInfos; 71 operator const EbmlId &() const {return ClassInfos.GlobalId;} 72 EbmlElement * Clone() const {return new KaxTagTargets(*this);} 73}; 74 75class MATROSKA_DLL_API KaxTagGeneral : public EbmlMaster { 76 public: 77 KaxTagGeneral(); 78 KaxTagGeneral(const KaxTagGeneral & ElementToClone) :EbmlMaster(ElementToClone) {} 79 static EbmlElement & Create() {return *(new KaxTagGeneral);} 80 const EbmlCallbacks & Generic() const {return ClassInfos;} 81 static const EbmlCallbacks ClassInfos; 82 operator const EbmlId &() const {return ClassInfos.GlobalId;} 83 EbmlElement * Clone() const {return new KaxTagGeneral(*this);} 84}; 85 86class MATROSKA_DLL_API KaxTagGenres : public EbmlMaster { 87 public: 88 KaxTagGenres(); 89 KaxTagGenres(const KaxTagGenres & ElementToClone) :EbmlMaster(ElementToClone) {} 90 static EbmlElement & Create() {return *(new KaxTagGenres);} 91 const EbmlCallbacks & Generic() const {return ClassInfos;} 92 static const EbmlCallbacks ClassInfos; 93 operator const EbmlId &() const {return ClassInfos.GlobalId;} 94 EbmlElement * Clone() const {return new KaxTagGenres(*this);} 95}; 96 97class MATROSKA_DLL_API KaxTagAudioSpecific : public EbmlMaster { 98 public: 99 KaxTagAudioSpecific(); 100 KaxTagAudioSpecific(const KaxTagAudioSpecific & ElementToClone) :EbmlMaster(ElementToClone) {} 101 static EbmlElement & Create() {return *(new KaxTagAudioSpecific);} 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 KaxTagAudioSpecific(*this);} 106}; 107 108class MATROSKA_DLL_API KaxTagImageSpecific : public EbmlMaster { 109 public: 110 KaxTagImageSpecific(); 111 KaxTagImageSpecific(const KaxTagImageSpecific & ElementToClone) :EbmlMaster(ElementToClone) {} 112 static EbmlElement & Create() {return *(new KaxTagImageSpecific);} 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 KaxTagImageSpecific(*this);} 117}; 118 119class MATROSKA_DLL_API KaxTagTargetTypeValue : public EbmlUInteger { 120 public: 121 KaxTagTargetTypeValue() :EbmlUInteger(50) {} 122 KaxTagTargetTypeValue(const KaxTagTargetTypeValue & ElementToClone) :EbmlUInteger(ElementToClone) {} 123 124 static EbmlElement & Create() {return *(new KaxTagTargetTypeValue);} 125 const EbmlCallbacks & Generic() const {return ClassInfos;} 126 static const EbmlCallbacks ClassInfos; 127 operator const EbmlId &() const {return ClassInfos.GlobalId;} 128 EbmlElement * Clone() const {return new KaxTagTargetTypeValue(*this);} 129}; 130 131class MATROSKA_DLL_API KaxTagTargetType : public EbmlString { 132 public: 133 KaxTagTargetType() {} 134 KaxTagTargetType(const KaxTagTargetType & ElementToClone) :EbmlString(ElementToClone) {} 135 static EbmlElement & Create() {return *(new KaxTagTargetType);} 136 const EbmlCallbacks & Generic() const {return ClassInfos;} 137 static const EbmlCallbacks ClassInfos; 138 operator const EbmlId &() const {return ClassInfos.GlobalId;} 139 EbmlElement * Clone() const {return new KaxTagTargetType(*this);} 140}; 141 142class MATROSKA_DLL_API KaxTagTrackUID : public EbmlUInteger { 143 public: 144 KaxTagTrackUID() :EbmlUInteger(0) {} 145 KaxTagTrackUID(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {} 146 147 static EbmlElement & Create() {return *(new KaxTagTrackUID);} 148 const EbmlCallbacks & Generic() const {return ClassInfos;} 149 static const EbmlCallbacks ClassInfos; 150 operator const EbmlId &() const {return ClassInfos.GlobalId;} 151 EbmlElement * Clone() const {return new KaxTagTrackUID(*this);} 152}; 153 154class MATROSKA_DLL_API KaxTagEditionUID : public EbmlUInteger { 155 public: 156 KaxTagEditionUID() :EbmlUInteger(0) {} 157 KaxTagEditionUID(const KaxTagEditionUID & ElementToClone) :EbmlUInteger(ElementToClone) {} 158 static EbmlElement & Create() {return *(new KaxTagEditionUID);} 159 const EbmlCallbacks & Generic() const {return ClassInfos;} 160 static const EbmlCallbacks ClassInfos; 161 operator const EbmlId &() const {return ClassInfos.GlobalId;} 162 EbmlElement * Clone() const {return new KaxTagEditionUID(*this);} 163}; 164 165class MATROSKA_DLL_API KaxTagChapterUID : public EbmlUInteger { 166 public: 167 KaxTagChapterUID() :EbmlUInteger(0) {} 168 KaxTagChapterUID(const KaxTagChapterUID & ElementToClone) :EbmlUInteger(ElementToClone) {} 169 static EbmlElement & Create() {return *(new KaxTagChapterUID);} 170 const EbmlCallbacks & Generic() const {return ClassInfos;} 171 static const EbmlCallbacks ClassInfos; 172 operator const EbmlId &() const {return ClassInfos.GlobalId;} 173 EbmlElement * Clone() const {return new KaxTagChapterUID(*this);} 174}; 175 176class MATROSKA_DLL_API KaxTagAttachmentUID : public EbmlUInteger { 177 public: 178 KaxTagAttachmentUID() :EbmlUInteger(0) {} 179 KaxTagAttachmentUID(const KaxTagAttachmentUID & ElementToClone) :EbmlUInteger(ElementToClone) {} 180 static EbmlElement & Create() {return *(new KaxTagAttachmentUID);} 181 const EbmlCallbacks & Generic() const {return ClassInfos;} 182 static const EbmlCallbacks ClassInfos; 183 operator const EbmlId &() const {return ClassInfos.GlobalId;} 184 EbmlElement * Clone() const {return new KaxTagAttachmentUID(*this);} 185}; 186 187class MATROSKA_DLL_API KaxTagArchivalLocation : public EbmlUnicodeString { 188 public: 189 KaxTagArchivalLocation() {} 190 KaxTagArchivalLocation(const KaxTagArchivalLocation & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 191 static EbmlElement & Create() {return *(new KaxTagArchivalLocation);} 192 const EbmlCallbacks & Generic() const {return ClassInfos;} 193 static const EbmlCallbacks ClassInfos; 194 operator const EbmlId &() const {return ClassInfos.GlobalId;} 195 EbmlElement * Clone() const {return new KaxTagArchivalLocation(*this);} 196}; 197 198class MATROSKA_DLL_API KaxTagAudioEncryption : public EbmlBinary { 199 public: 200 KaxTagAudioEncryption() {} 201 KaxTagAudioEncryption(const KaxTagAudioEncryption & ElementToClone) :EbmlBinary(ElementToClone){} 202 static EbmlElement & Create() {return *(new KaxTagAudioEncryption);} 203 bool ValidateSize() const {return true;} // we don't mind about what's inside 204 const EbmlCallbacks & Generic() const {return ClassInfos;} 205 static const EbmlCallbacks ClassInfos; 206 operator const EbmlId &() const {return ClassInfos.GlobalId;} 207 EbmlElement * Clone() const {return new KaxTagAudioEncryption(*this);} 208}; 209 210class MATROSKA_DLL_API KaxTagAudioGain : public EbmlFloat { 211 public: 212 KaxTagAudioGain() {} 213 KaxTagAudioGain(const KaxTagAudioGain & ElementToClone) :EbmlFloat(ElementToClone) {} 214 static EbmlElement & Create() {return *(new KaxTagAudioGain);} 215 const EbmlCallbacks & Generic() const {return ClassInfos;} 216 static const EbmlCallbacks ClassInfos; 217 operator const EbmlId &() const {return ClassInfos.GlobalId;} 218 EbmlElement * Clone() const {return new KaxTagAudioGain(*this);} 219}; 220 221class MATROSKA_DLL_API KaxTagAudioGenre : public EbmlString { 222 public: 223 KaxTagAudioGenre() {} 224 KaxTagAudioGenre(const KaxTagAudioGenre & ElementToClone) :EbmlString(ElementToClone) {} 225 static EbmlElement & Create() {return *(new KaxTagAudioGenre);} 226 const EbmlCallbacks & Generic() const {return ClassInfos;} 227 static const EbmlCallbacks ClassInfos; 228 operator const EbmlId &() const {return ClassInfos.GlobalId;} 229 EbmlElement * Clone() const {return new KaxTagAudioGenre(*this);} 230}; 231 232class MATROSKA_DLL_API KaxTagAudioPeak : public EbmlFloat { 233 public: 234 KaxTagAudioPeak() {} 235 KaxTagAudioPeak(const KaxTagAudioPeak & ElementToClone) :EbmlFloat(ElementToClone) {} 236 static EbmlElement & Create() {return *(new KaxTagAudioPeak);} 237 const EbmlCallbacks & Generic() const {return ClassInfos;} 238 static const EbmlCallbacks ClassInfos; 239 operator const EbmlId &() const {return ClassInfos.GlobalId;} 240 EbmlElement * Clone() const {return new KaxTagAudioPeak(*this);} 241}; 242 243class MATROSKA_DLL_API KaxTagBibliography : public EbmlUnicodeString { 244 public: 245 KaxTagBibliography() {} 246 KaxTagBibliography(const KaxTagBibliography & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 247 static EbmlElement & Create() {return *(new KaxTagBibliography);} 248 const EbmlCallbacks & Generic() const {return ClassInfos;} 249 static const EbmlCallbacks ClassInfos; 250 operator const EbmlId &() const {return ClassInfos.GlobalId;} 251 EbmlElement * Clone() const {return new KaxTagBibliography(*this);} 252}; 253 254class MATROSKA_DLL_API KaxTagBPM : public EbmlFloat { 255 public: 256 KaxTagBPM() {} 257 KaxTagBPM(const KaxTagBPM & ElementToClone) :EbmlFloat(ElementToClone) {} 258 static EbmlElement & Create() {return *(new KaxTagBPM);} 259 const EbmlCallbacks & Generic() const {return ClassInfos;} 260 static const EbmlCallbacks ClassInfos; 261 operator const EbmlId &() const {return ClassInfos.GlobalId;} 262 EbmlElement * Clone() const {return new KaxTagBPM(*this);} 263}; 264 265class MATROSKA_DLL_API KaxTagCaptureDPI : public EbmlUInteger { 266 public: 267 KaxTagCaptureDPI() {} 268 KaxTagCaptureDPI(const KaxTagCaptureDPI & ElementToClone) :EbmlUInteger(ElementToClone) {} 269 static EbmlElement & Create() {return *(new KaxTagCaptureDPI);} 270 const EbmlCallbacks & Generic() const {return ClassInfos;} 271 static const EbmlCallbacks ClassInfos; 272 operator const EbmlId &() const {return ClassInfos.GlobalId;} 273 EbmlElement * Clone() const {return new KaxTagCaptureDPI(*this);} 274}; 275 276class MATROSKA_DLL_API KaxTagCaptureLightness : public EbmlBinary { 277 public: 278 KaxTagCaptureLightness() {} 279 KaxTagCaptureLightness(const KaxTagCaptureLightness & ElementToClone) :EbmlBinary(ElementToClone){} 280 static EbmlElement & Create() {return *(new KaxTagCaptureLightness);} 281 bool ValidateSize() const {return true;} // we don't mind about what's inside 282 const EbmlCallbacks & Generic() const {return ClassInfos;} 283 static const EbmlCallbacks ClassInfos; 284 operator const EbmlId &() const {return ClassInfos.GlobalId;} 285 EbmlElement * Clone() const {return new KaxTagCaptureLightness(*this);} 286}; 287 288class MATROSKA_DLL_API KaxTagCapturePaletteSetting : public EbmlUInteger { 289 public: 290 KaxTagCapturePaletteSetting() {} 291 KaxTagCapturePaletteSetting(const KaxTagCapturePaletteSetting & ElementToClone) :EbmlUInteger(ElementToClone) {} 292 static EbmlElement & Create() {return *(new KaxTagCapturePaletteSetting);} 293 const EbmlCallbacks & Generic() const {return ClassInfos;} 294 static const EbmlCallbacks ClassInfos; 295 operator const EbmlId &() const {return ClassInfos.GlobalId;} 296 EbmlElement * Clone() const {return new KaxTagCapturePaletteSetting(*this);} 297}; 298 299class MATROSKA_DLL_API KaxTagCaptureSharpness : public EbmlBinary { 300 public: 301 KaxTagCaptureSharpness() {} 302 KaxTagCaptureSharpness(const KaxTagCaptureSharpness & ElementToClone) :EbmlBinary(ElementToClone){} 303 static EbmlElement & Create() {return *(new KaxTagCaptureSharpness);} 304 bool ValidateSize() const {return true;} // we don't mind about what's inside 305 const EbmlCallbacks & Generic() const {return ClassInfos;} 306 static const EbmlCallbacks ClassInfos; 307 operator const EbmlId &() const {return ClassInfos.GlobalId;} 308 EbmlElement * Clone() const {return new KaxTagCaptureSharpness(*this);} 309}; 310 311class MATROSKA_DLL_API KaxTagCropped : public EbmlUnicodeString { 312 public: 313 KaxTagCropped() {} 314 KaxTagCropped(const KaxTagCropped & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 315 static EbmlElement & Create() {return *(new KaxTagCropped);} 316 const EbmlCallbacks & Generic() const {return ClassInfos;} 317 static const EbmlCallbacks ClassInfos; 318 operator const EbmlId &() const {return ClassInfos.GlobalId;} 319 EbmlElement * Clone() const {return new KaxTagCropped(*this);} 320}; 321 322class MATROSKA_DLL_API KaxTagDiscTrack : public EbmlUInteger { 323 public: 324 KaxTagDiscTrack() {} 325 KaxTagDiscTrack(const KaxTagDiscTrack & ElementToClone) :EbmlUInteger(ElementToClone) {} 326 static EbmlElement & Create() {return *(new KaxTagDiscTrack);} 327 const EbmlCallbacks & Generic() const {return ClassInfos;} 328 static const EbmlCallbacks ClassInfos; 329 operator const EbmlId &() const {return ClassInfos.GlobalId;} 330 EbmlElement * Clone() const {return new KaxTagDiscTrack(*this);} 331}; 332 333class MATROSKA_DLL_API KaxTagEncoder : public EbmlUnicodeString { 334 public: 335 KaxTagEncoder() {} 336 KaxTagEncoder(const KaxTagEncoder & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 337 static EbmlElement & Create() {return *(new KaxTagEncoder);} 338 const EbmlCallbacks & Generic() const {return ClassInfos;} 339 static const EbmlCallbacks ClassInfos; 340 operator const EbmlId &() const {return ClassInfos.GlobalId;} 341 EbmlElement * Clone() const {return new KaxTagEncoder(*this);} 342}; 343 344class MATROSKA_DLL_API KaxTagEncodeSettings : public EbmlUnicodeString { 345 public: 346 KaxTagEncodeSettings() {} 347 KaxTagEncodeSettings(const KaxTagEncodeSettings & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 348 static EbmlElement & Create() {return *(new KaxTagEncodeSettings);} 349 const EbmlCallbacks & Generic() const {return ClassInfos;} 350 static const EbmlCallbacks ClassInfos; 351 operator const EbmlId &() const {return ClassInfos.GlobalId;} 352 EbmlElement * Clone() const {return new KaxTagEncodeSettings(*this);} 353}; 354 355class MATROSKA_DLL_API KaxTagEqualisation : public EbmlBinary { 356 public: 357 KaxTagEqualisation() {} 358 KaxTagEqualisation(const KaxTagEqualisation & ElementToClone) :EbmlBinary(ElementToClone){} 359 static EbmlElement & Create() {return *(new KaxTagEqualisation);} 360 bool ValidateSize() const {return true;} // we don't mind about what's inside 361 const EbmlCallbacks & Generic() const {return ClassInfos;} 362 static const EbmlCallbacks ClassInfos; 363 operator const EbmlId &() const {return ClassInfos.GlobalId;} 364 EbmlElement * Clone() const {return new KaxTagEqualisation(*this);} 365}; 366 367class MATROSKA_DLL_API KaxTagFile : public EbmlUnicodeString { 368 public: 369 KaxTagFile() {} 370 KaxTagFile(const KaxTagFile & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 371 static EbmlElement & Create() {return *(new KaxTagFile);} 372 const EbmlCallbacks & Generic() const {return ClassInfos;} 373 static const EbmlCallbacks ClassInfos; 374 operator const EbmlId &() const {return ClassInfos.GlobalId;} 375 EbmlElement * Clone() const {return new KaxTagFile(*this);} 376}; 377 378class MATROSKA_DLL_API KaxTagInitialKey : public EbmlString { 379 public: 380 KaxTagInitialKey() {} 381 KaxTagInitialKey(const KaxTagInitialKey & ElementToClone) :EbmlString(ElementToClone) {} 382 static EbmlElement & Create() {return *(new KaxTagInitialKey);} 383 const EbmlCallbacks & Generic() const {return ClassInfos;} 384 static const EbmlCallbacks ClassInfos; 385 operator const EbmlId &() const {return ClassInfos.GlobalId;} 386 EbmlElement * Clone() const {return new KaxTagInitialKey(*this);} 387}; 388 389class MATROSKA_DLL_API KaxTagKeywords : public EbmlUnicodeString { 390 public: 391 KaxTagKeywords() {} 392 KaxTagKeywords(const KaxTagKeywords & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 393 static EbmlElement & Create() {return *(new KaxTagKeywords);} 394 const EbmlCallbacks & Generic() const {return ClassInfos;} 395 static const EbmlCallbacks ClassInfos; 396 operator const EbmlId &() const {return ClassInfos.GlobalId;} 397 EbmlElement * Clone() const {return new KaxTagKeywords(*this);} 398}; 399 400class MATROSKA_DLL_API KaxTagLanguage : public EbmlString { 401 public: 402 KaxTagLanguage() {} 403 KaxTagLanguage(const KaxTagLanguage & ElementToClone) :EbmlString(ElementToClone) {} 404 static EbmlElement & Create() {return *(new KaxTagLanguage);} 405 const EbmlCallbacks & Generic() const {return ClassInfos;} 406 static const EbmlCallbacks ClassInfos; 407 operator const EbmlId &() const {return ClassInfos.GlobalId;} 408 EbmlElement * Clone() const {return new KaxTagLanguage(*this);} 409}; 410 411class MATROSKA_DLL_API KaxTagLength : public EbmlUInteger { 412 public: 413 KaxTagLength() {} 414 KaxTagLength(const KaxTagLength & ElementToClone) :EbmlUInteger(ElementToClone) {} 415 static EbmlElement & Create() {return *(new KaxTagLength);} 416 const EbmlCallbacks & Generic() const {return ClassInfos;} 417 static const EbmlCallbacks ClassInfos; 418 operator const EbmlId &() const {return ClassInfos.GlobalId;} 419 EbmlElement * Clone() const {return new KaxTagLength(*this);} 420}; 421 422class MATROSKA_DLL_API KaxTagMood : public EbmlUnicodeString { 423 public: 424 KaxTagMood() {} 425 KaxTagMood(const KaxTagMood & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 426 static EbmlElement & Create() {return *(new KaxTagMood);} 427 const EbmlCallbacks & Generic() const {return ClassInfos;} 428 static const EbmlCallbacks ClassInfos; 429 operator const EbmlId &() const {return ClassInfos.GlobalId;} 430 EbmlElement * Clone() const {return new KaxTagMood(*this);} 431}; 432 433class MATROSKA_DLL_API KaxTagOfficialAudioFileURL : public EbmlString { 434 public: 435 KaxTagOfficialAudioFileURL() {} 436 KaxTagOfficialAudioFileURL(const KaxTagOfficialAudioFileURL & ElementToClone) :EbmlString(ElementToClone) {} 437 static EbmlElement & Create() {return *(new KaxTagOfficialAudioFileURL);} 438 const EbmlCallbacks & Generic() const {return ClassInfos;} 439 static const EbmlCallbacks ClassInfos; 440 operator const EbmlId &() const {return ClassInfos.GlobalId;} 441 EbmlElement * Clone() const {return new KaxTagOfficialAudioFileURL(*this);} 442}; 443 444class MATROSKA_DLL_API KaxTagOfficialAudioSourceURL : public EbmlString { 445 public: 446 KaxTagOfficialAudioSourceURL() {} 447 KaxTagOfficialAudioSourceURL(const KaxTagOfficialAudioSourceURL & ElementToClone) :EbmlString(ElementToClone) {} 448 static EbmlElement & Create() {return *(new KaxTagOfficialAudioSourceURL);} 449 const EbmlCallbacks & Generic() const {return ClassInfos;} 450 static const EbmlCallbacks ClassInfos; 451 operator const EbmlId &() const {return ClassInfos.GlobalId;} 452 EbmlElement * Clone() const {return new KaxTagOfficialAudioSourceURL(*this);} 453}; 454 455class MATROSKA_DLL_API KaxTagOriginalDimensions : public EbmlString { 456 public: 457 KaxTagOriginalDimensions() {} 458 KaxTagOriginalDimensions(const KaxTagOriginalDimensions & ElementToClone) :EbmlString(ElementToClone) {} 459 static EbmlElement & Create() {return *(new KaxTagOriginalDimensions);} 460 const EbmlCallbacks & Generic() const {return ClassInfos;} 461 static const EbmlCallbacks ClassInfos; 462 operator const EbmlId &() const {return ClassInfos.GlobalId;} 463 EbmlElement * Clone() const {return new KaxTagOriginalDimensions(*this);} 464}; 465 466class MATROSKA_DLL_API KaxTagOriginalMediaType : public EbmlUnicodeString { 467 public: 468 KaxTagOriginalMediaType() {} 469 KaxTagOriginalMediaType(const KaxTagOriginalMediaType & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 470 static EbmlElement & Create() {return *(new KaxTagOriginalMediaType);} 471 const EbmlCallbacks & Generic() const {return ClassInfos;} 472 static const EbmlCallbacks ClassInfos; 473 operator const EbmlId &() const {return ClassInfos.GlobalId;} 474 EbmlElement * Clone() const {return new KaxTagOriginalMediaType(*this);} 475}; 476 477class MATROSKA_DLL_API KaxTagPlayCounter : public EbmlUInteger { 478 public: 479 KaxTagPlayCounter() {} 480 KaxTagPlayCounter(const KaxTagPlayCounter & ElementToClone) :EbmlUInteger(ElementToClone) {} 481 static EbmlElement & Create() {return *(new KaxTagPlayCounter);} 482 const EbmlCallbacks & Generic() const {return ClassInfos;} 483 static const EbmlCallbacks ClassInfos; 484 operator const EbmlId &() const {return ClassInfos.GlobalId;} 485 EbmlElement * Clone() const {return new KaxTagPlayCounter(*this);} 486}; 487 488class MATROSKA_DLL_API KaxTagPlaylistDelay : public EbmlUInteger { 489 public: 490 KaxTagPlaylistDelay() {} 491 KaxTagPlaylistDelay(const KaxTagPlaylistDelay & ElementToClone) :EbmlUInteger(ElementToClone) {} 492 static EbmlElement & Create() {return *(new KaxTagPlaylistDelay);} 493 const EbmlCallbacks & Generic() const {return ClassInfos;} 494 static const EbmlCallbacks ClassInfos; 495 operator const EbmlId &() const {return ClassInfos.GlobalId;} 496 EbmlElement * Clone() const {return new KaxTagPlaylistDelay(*this);} 497}; 498 499class MATROSKA_DLL_API KaxTagPopularimeter : public EbmlSInteger { 500 public: 501 KaxTagPopularimeter() {} 502 KaxTagPopularimeter(const KaxTagPopularimeter & ElementToClone) :EbmlSInteger(ElementToClone) {} 503 static EbmlElement & Create() {return *(new KaxTagPopularimeter);} 504 const EbmlCallbacks & Generic() const {return ClassInfos;} 505 static const EbmlCallbacks ClassInfos; 506 operator const EbmlId &() const {return ClassInfos.GlobalId;} 507 EbmlElement * Clone() const {return new KaxTagPopularimeter(*this);} 508}; 509 510class MATROSKA_DLL_API KaxTagProduct : public EbmlUnicodeString { 511 public: 512 KaxTagProduct() {} 513 KaxTagProduct(const KaxTagProduct & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 514 static EbmlElement & Create() {return *(new KaxTagProduct);} 515 const EbmlCallbacks & Generic() const {return ClassInfos;} 516 static const EbmlCallbacks ClassInfos; 517 operator const EbmlId &() const {return ClassInfos.GlobalId;} 518 EbmlElement * Clone() const {return new KaxTagProduct(*this);} 519}; 520 521class MATROSKA_DLL_API KaxTagRating : public EbmlBinary { 522 public: 523 KaxTagRating() {} 524 KaxTagRating(const KaxTagRating & ElementToClone) :EbmlBinary(ElementToClone){} 525 static EbmlElement & Create() {return *(new KaxTagRating);} 526 bool ValidateSize() const {return true;} // we don't mind about what's inside 527 const EbmlCallbacks & Generic() const {return ClassInfos;} 528 static const EbmlCallbacks ClassInfos; 529 operator const EbmlId &() const {return ClassInfos.GlobalId;} 530 EbmlElement * Clone() const {return new KaxTagRating(*this);} 531}; 532 533class MATROSKA_DLL_API KaxTagRecordLocation : public EbmlString { 534 public: 535 KaxTagRecordLocation() {} 536 KaxTagRecordLocation(const KaxTagRecordLocation & ElementToClone) :EbmlString(ElementToClone) {} 537 static EbmlElement & Create() {return *(new KaxTagRecordLocation);} 538 const EbmlCallbacks & Generic() const {return ClassInfos;} 539 static const EbmlCallbacks ClassInfos; 540 operator const EbmlId &() const {return ClassInfos.GlobalId;} 541 EbmlElement * Clone() const {return new KaxTagRecordLocation(*this);} 542}; 543 544class MATROSKA_DLL_API KaxTagSetPart : public EbmlUInteger { 545 public: 546 KaxTagSetPart() {} 547 KaxTagSetPart(const KaxTagSetPart & ElementToClone) :EbmlUInteger(ElementToClone) {} 548 static EbmlElement & Create() {return *(new KaxTagSetPart);} 549 const EbmlCallbacks & Generic() const {return ClassInfos;} 550 static const EbmlCallbacks ClassInfos; 551 operator const EbmlId &() const {return ClassInfos.GlobalId;} 552 EbmlElement * Clone() const {return new KaxTagSetPart(*this);} 553}; 554 555class MATROSKA_DLL_API KaxTagSource : public EbmlUnicodeString { 556 public: 557 KaxTagSource() {} 558 KaxTagSource(const KaxTagSource & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 559 static EbmlElement & Create() {return *(new KaxTagSource);} 560 const EbmlCallbacks & Generic() const {return ClassInfos;} 561 static const EbmlCallbacks ClassInfos; 562 operator const EbmlId &() const {return ClassInfos.GlobalId;} 563 EbmlElement * Clone() const {return new KaxTagSource(*this);} 564}; 565 566class MATROSKA_DLL_API KaxTagSourceForm : public EbmlUnicodeString { 567 public: 568 KaxTagSourceForm() {} 569 KaxTagSourceForm(const KaxTagSourceForm & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 570 static EbmlElement & Create() {return *(new KaxTagSourceForm);} 571 const EbmlCallbacks & Generic() const {return ClassInfos;} 572 static const EbmlCallbacks ClassInfos; 573 operator const EbmlId &() const {return ClassInfos.GlobalId;} 574 EbmlElement * Clone() const {return new KaxTagSourceForm(*this);} 575}; 576 577class MATROSKA_DLL_API KaxTagSubGenre : public EbmlString { 578 public: 579 KaxTagSubGenre() {} 580 KaxTagSubGenre(const KaxTagSubGenre & ElementToClone) :EbmlString(ElementToClone) {} 581 static EbmlElement & Create() {return *(new KaxTagSubGenre);} 582 const EbmlCallbacks & Generic() const {return ClassInfos;} 583 static const EbmlCallbacks ClassInfos; 584 operator const EbmlId &() const {return ClassInfos.GlobalId;} 585 EbmlElement * Clone() const {return new KaxTagSubGenre(*this);} 586}; 587 588class MATROSKA_DLL_API KaxTagSubject : public EbmlUnicodeString { 589 public: 590 KaxTagSubject() {} 591 KaxTagSubject(const KaxTagSubject & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 592 static EbmlElement & Create() {return *(new KaxTagSubject);} 593 const EbmlCallbacks & Generic() const {return ClassInfos;} 594 static const EbmlCallbacks ClassInfos; 595 operator const EbmlId &() const {return ClassInfos.GlobalId;} 596 EbmlElement * Clone() const {return new KaxTagSubject(*this);} 597}; 598 599class MATROSKA_DLL_API KaxTagUnsynchronisedText : public EbmlUnicodeString { 600 public: 601 KaxTagUnsynchronisedText() {} 602 KaxTagUnsynchronisedText(const KaxTagUnsynchronisedText & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 603 static EbmlElement & Create() {return *(new KaxTagUnsynchronisedText);} 604 const EbmlCallbacks & Generic() const {return ClassInfos;} 605 static const EbmlCallbacks ClassInfos; 606 operator const EbmlId &() const {return ClassInfos.GlobalId;} 607 EbmlElement * Clone() const {return new KaxTagUnsynchronisedText(*this);} 608}; 609 610class MATROSKA_DLL_API KaxTagUserDefinedURL : public EbmlString { 611 public: 612 KaxTagUserDefinedURL() {} 613 KaxTagUserDefinedURL(const KaxTagUserDefinedURL & ElementToClone) :EbmlString(ElementToClone) {} 614 static EbmlElement & Create() {return *(new KaxTagUserDefinedURL);} 615 const EbmlCallbacks & Generic() const {return ClassInfos;} 616 static const EbmlCallbacks ClassInfos; 617 operator const EbmlId &() const {return ClassInfos.GlobalId;} 618 EbmlElement * Clone() const {return new KaxTagUserDefinedURL(*this);} 619}; 620 621class MATROSKA_DLL_API KaxTagVideoGenre : public EbmlBinary { 622 public: 623 KaxTagVideoGenre() {} 624 KaxTagVideoGenre(const KaxTagVideoGenre & ElementToClone) :EbmlBinary(ElementToClone){} 625 static EbmlElement & Create() {return *(new KaxTagVideoGenre);} 626 bool ValidateSize() const {return (Size >= 2);} 627 const EbmlCallbacks & Generic() const {return ClassInfos;} 628 static const EbmlCallbacks ClassInfos; 629 operator const EbmlId &() const {return ClassInfos.GlobalId;} 630 EbmlElement * Clone() const {return new KaxTagVideoGenre(*this);} 631}; 632 633class MATROSKA_DLL_API KaxTagSimple : public EbmlMaster { 634 public: 635 KaxTagSimple(); 636 KaxTagSimple(const KaxTagSimple & ElementToClone) :EbmlMaster(ElementToClone) {} 637 static EbmlElement & Create() {return *(new KaxTagSimple);} 638 const EbmlCallbacks & Generic() const {return ClassInfos;} 639 static const EbmlCallbacks ClassInfos; 640 operator const EbmlId &() const {return ClassInfos.GlobalId;} 641 EbmlElement * Clone() const {return new KaxTagSimple(*this);} 642}; 643 644class MATROSKA_DLL_API KaxTagName : public EbmlUnicodeString { 645 public: 646 KaxTagName() {} 647 KaxTagName(const KaxTagName & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 648 static EbmlElement & Create() {return *(new KaxTagName);} 649 const EbmlCallbacks & Generic() const {return ClassInfos;} 650 static const EbmlCallbacks ClassInfos; 651 operator const EbmlId &() const {return ClassInfos.GlobalId;} 652 EbmlElement * Clone() const {return new KaxTagName(*this);} 653}; 654 655class MATROSKA_DLL_API KaxTagLangue : public EbmlString { 656 public: 657 KaxTagLangue(): EbmlString("und") {} 658 KaxTagLangue(const KaxTagLangue & ElementToClone) :EbmlString(ElementToClone) {} 659 static EbmlElement & Create() {return *(new KaxTagLangue);} 660 const EbmlCallbacks & Generic() const {return ClassInfos;} 661 static const EbmlCallbacks ClassInfos; 662 operator const EbmlId &() const {return ClassInfos.GlobalId;} 663 EbmlElement * Clone() const {return new KaxTagLangue(*this);} 664}; 665 666class MATROSKA_DLL_API KaxTagDefault : public EbmlUInteger { 667 public: 668 KaxTagDefault() :EbmlUInteger(1) {} 669 KaxTagDefault(const KaxTagTrackUID & ElementToClone) :EbmlUInteger(ElementToClone) {} 670 671 static EbmlElement & Create() {return *(new KaxTagDefault);} 672 const EbmlCallbacks & Generic() const {return ClassInfos;} 673 static const EbmlCallbacks ClassInfos; 674 operator const EbmlId &() const {return ClassInfos.GlobalId;} 675 EbmlElement * Clone() const {return new KaxTagDefault(*this);} 676}; 677 678class MATROSKA_DLL_API KaxTagString : public EbmlUnicodeString { 679 public: 680 KaxTagString() {} 681 KaxTagString(const KaxTagString & ElementToClone) :EbmlUnicodeString(ElementToClone) {} 682 static EbmlElement & Create() {return *(new KaxTagString);} 683 const EbmlCallbacks & Generic() const {return ClassInfos;} 684 static const EbmlCallbacks ClassInfos; 685 operator const EbmlId &() const {return ClassInfos.GlobalId;} 686 EbmlElement * Clone() const {return new KaxTagString(*this);} 687}; 688 689class MATROSKA_DLL_API KaxTagBinary : public EbmlBinary { 690 public: 691 KaxTagBinary() {} 692 KaxTagBinary(const KaxTagBinary & ElementToClone) :EbmlBinary(ElementToClone){} 693 static EbmlElement & Create() {return *(new KaxTagBinary);} 694 bool ValidateSize() const {return (Size >= 0);} 695 const EbmlCallbacks & Generic() const {return ClassInfos;} 696 static const EbmlCallbacks ClassInfos; 697 operator const EbmlId &() const {return ClassInfos.GlobalId;} 698 EbmlElement * Clone() const {return new KaxTagBinary(*this);} 699}; 700 701END_LIBMATROSKA_NAMESPACE 702 703#endif // LIBMATROSKA_TAG_H 704