70 Commits

Author SHA1 Message Date
Steve Lhomme
fb1eddb293 add support for SeekPreRoll 2013-06-15 18:27:49 +02:00
Steve Lhomme
edcf087607 add DiscardPadding and CodecDelay elements 2013-06-15 18:22:34 +02:00
Moritz Bunkus
de304c170a Merge pull request #1 from RedDwarf69/master
Linux packaging
2013-04-20 02:54:23 -07:00
Cristian Morales Vega
40a5b6e130 Update licensing information
- Substitute LICENSE.LGPL for the latest copy from http://www.gnu.org/
- Update the FSF address and links in all the file headers
- Relicense QPL/GPL files to LGPL
2013-04-20 09:57:44 +01:00
Cristian Morales Vega
e23d29d21b Use Linux-style EOL for non Windows specific files 2013-04-14 16:34:22 +01:00
Cristian Morales Vega
a8f9a28def Fix typo 2013-04-14 16:29:57 +01:00
Cristian Morales Vega
773e7d7755 Add DESTDIR option to Linux Makefile 2013-04-14 16:29:21 +01:00
Cristian Morales Vega
4f5d0b977c Add "link" option to Linux Makefile 2013-04-14 16:27:32 +01:00
Cristian Morales Vega
1a15920ee4 Stop using -ansi -fno-gnu-keywords in Linux
There is no need for -fno-gnu-keywords (which was implied by -ansi) in the
current code.
-ansi disables GCC built-in functions, which add optimizations and extra
security checks in some cases. It may be good to use it (and -pedantic) while
developing to try to keep the code ANSI standard, but users should have binaries
compiled without the option.
2013-04-14 16:23:32 +01:00
Moritz Bunkus
264a7537e5 Remove Debian build files & update ChangeLog 2013-03-19 20:13:20 +01:00
Moritz Bunkus
bdcc3ef3a1 Update ChangeLog 2013-03-19 17:55:52 +01:00
Moritz Bunkus
734b6a1803 Add new element 'DefaultDecodedFieldDuration'
See
http://lists.matroska.org/pipermail/matroska-devel/2012-December/004371.html
2013-03-19 12:07:42 +01:00
Moritz Bunkus
c718d51867 Ignore files built during compilation 2013-03-19 12:06:36 +01:00
Steve Lhomme
f3f1214c13 add alphaMode for WebM 2013-02-05 18:56:40 +01:00
Moritz Bunkus
08eb86ee0a Sync with specs: remove TrackTimecodeDenominator; add ChapterStringUID
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@869 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-12-02 14:12:58 +00:00
Steve Lhomme
0a96109b73 specs: introduce ChapterStringUID for WebVTT cue identifiers
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@867 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-10-28 07:58:23 +00:00
Moritz Bunkus
0f3f33bf6f Make CueDuration a child of CueTrackPositions
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@862 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-24 21:39:23 +00:00
Moritz Bunkus
4ac544deac Add missing RenderData() declaration for KaxTrackTimecodeScale
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@861 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-24 21:01:00 +00:00
Steve Lhomme
a463c247a6 update the ChangeLog with recent changes
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@858 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-23 09:53:17 +00:00
Steve Lhomme
e06fb9db92 add TimecodeScaleDenominator to make a fraction with TimecodeScale in Matroska v4
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@856 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-23 09:18:56 +00:00
Steve Lhomme
726c4bee88 no more TrackTimecodeScale in Matroska v4
no more TrackTimecodeScale writing in libmatroska

git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@853 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-23 08:44:42 +00:00
Moritz Bunkus
3fbe2877fb Bump version number, library .so version number, add ChangeLog info
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@849 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-22 22:30:44 +00:00
Moritz Bunkus
7648e65aac Add new elements from specdata.xml
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@848 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-22 22:30:01 +00:00
Moritz Bunkus
0f6409c2f1 Remove conversion operator that will never be called
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@843 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2012-09-04 07:53:21 +00:00
Moritz Bunkus
699562e709 Fix several gcc warnings occurring with -Wextra
Warnings fixed are:

- warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
- warning: unused parameter ... [-Wunused-parameter]
- warning: comparison is always true due to limited range of data type [-Wtype-limits]



git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@823 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-11-25 21:23:21 +00:00
Moritz Bunkus
94391f1f4e Bump library so version number due to binary incompatible changes
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@815 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-09-23 13:44:05 +00:00
Moritz Bunkus
c5f95ca5ad changelog update, version number updates
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@812 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-09-23 11:54:54 +00:00
Steve Lhomme
945625f4e3 libmatroska: bump the version to 1.3.0 as the KaxChapterSegmentEditionUID is not binary compatible
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@809 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-09-11 15:56:11 +00:00
Steve Lhomme
4e905afe8d specs: make ChapterSegmentEditionUID an unsigned integer to match the ChapterEditionUID it's supposed to target
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@807 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-09-11 15:13:32 +00:00
Moritz Bunkus
c5e1f64a43 Move definition of KaxCodeVersion into the library
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@804 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-09-11 09:04:00 +00:00
Moritz Bunkus
b5306bbeda Always initialize member variables
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@792 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-08-24 18:59:02 +00:00
Moritz Bunkus
9fd2a78333 Removed set but unused variable
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@787 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-07-11 20:08:46 +00:00
Moritz Bunkus
3a34fb5a2e spec file version number bump
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@769 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-26 18:14:46 +00:00
Moritz Bunkus
1212eca974 Release date update
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@764 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-26 17:42:58 +00:00
Moritz Bunkus
890be90df1 Bumped version number in Debian changelog
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@761 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-15 12:05:18 +00:00
Moritz Bunkus
8c4a6cccb4 Bumped the library SONAME due to binary incompatibility
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@760 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-15 12:00:37 +00:00
Steve Lhomme
4edebabe92 libmatroska: the new version will be 1.2.0 due to ABI changes
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@758 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-15 11:13:11 +00:00
Steve Lhomme
2f1c0dd15b update the version headers
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@756 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-12 09:21:05 +00:00
Steve Lhomme
86036dfabb libmatroska: update ChangeLog & version
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@754 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-12 09:13:47 +00:00
Steve Lhomme
f5f263461f libmatroska: do not read data in KaxBlockVirtual, just skip it
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@753 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-12 09:08:10 +00:00
Steve Lhomme
5ca6d6c747 libmatroska: properly use the macros for Context_KaxMatroska
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@752 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-12 07:13:28 +00:00
Steve Lhomme
6304254275 libmatroska: bring back KaxMatroska_Context (used in VLC)
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@751 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-06-11 16:20:19 +00:00
Steve Lhomme
13c11f7c32 libmatroska: try to fix some EBML test includes
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@726 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-03-27 17:18:50 +00:00
Steve Lhomme
7a815aae19 libmatroska: use the generated semantic code instead of the manual one
+ don't allow writing not supported elements

git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@725 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-03-27 17:09:02 +00:00
Moritz Bunkus
9201cd4b98 Updated the "Section" entries in the Debian package file
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@717 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-03-25 10:48:59 +00:00
Steve Lhomme
9e32281dca libmatroska: fix some semantic mismatch with the specs
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@712 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-03-22 08:31:00 +00:00
Steve Lhomme
e5d8c2585c remove no longer needed tests for old/outdated/previous tag system (from impulze https://sourceforge.net/tracker/?func=detail&aid=3170459&group_id=68739&atid=522230)
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@673 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-02-12 12:42:33 +00:00
Moritz Bunkus
e6d2bfa361 Updated spec file version numbers
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@665 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-01-30 14:46:37 +00:00
Moritz Bunkus
d304c4a68e Wrong package name
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@662 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-01-30 14:41:47 +00:00
Moritz Bunkus
ab0ab8c6a8 Updated Debian changelog
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@656 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-01-30 14:32:25 +00:00
Moritz Bunkus
5f83bf353c Set release date
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@653 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-01-30 11:00:38 +00:00
Moritz Bunkus
dfe495cf23 Increased library .so name to .3
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@649 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2011-01-29 11:48:16 +00:00
Steve Lhomme
697ce73358 fix a memory leak in KaxReferenceBlock when an internal KaxBlockBlob was created
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@546 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-09-10 08:39:15 +00:00
Steve Lhomme
f1349f9639 libmatroska: add KaxTrackOperation and related elements for combined stereo/3D tracks or joined virtual tracks
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@545 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-09-05 09:27:51 +00:00
Steve Lhomme
4aa2a17bab libebml/libmatroska: compile under MinGW32 even if the source path has spaces
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@505 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-08-15 13:15:29 +00:00
Steve Lhomme
72abb5578e libmatroska: add KaxTrackDependency and related elements for combined stereo/3D tracks
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@480 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-08-07 09:42:47 +00:00
Steve Lhomme
5ebfbd2cda libmatroska: KaxCues::AddBlockGroup() was removed as it's broken beyond repair
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@453 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-07-29 19:06:19 +00:00
Steve Lhomme
2be628cfe9 libmatroska: add the possibility for a DataBuffer class to use its own internal memory
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@394 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-07-05 11:38:15 +00:00
Steve Lhomme
775c5aecf3 libmatroska: remove KaxTagMulti from the non-generated makefiles
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@393 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-07-05 10:03:20 +00:00
Steve Lhomme
a8d891945f ChangeLog update
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@386 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-07-04 09:33:42 +00:00
Steve Lhomme
64b3fed7f6 libmatroska: remove all references to the old/outdated/previous tag system
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@385 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-07-04 09:32:26 +00:00
Steve Lhomme
73aa75ee8a libmatroska: fix the test6 code (it was using the old tags system)
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@384 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-07-04 09:19:13 +00:00
Steve Lhomme
9ee55d7c1c only use a single coremake dir in the tree (from corec/tools/coremake)
add a coremake solution to build the libmatroska test files via coremake

git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@383 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-07-04 09:17:57 +00:00
Steve Lhomme
429911394f libmatroska: HAVE_EBML2 comes from the config.h and HAS_EBML2 comes from the makefile
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@353 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-06-27 05:24:02 +00:00
Steve Lhomme
9db1423dc0 libmatroska: add a missing svn:keywords
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@348 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-06-26 09:10:20 +00:00
Steve Lhomme
4a7dbe6291 libebml: move some operator code in the .cpp files (MSVC has issues in DLLs)
+ libmatroska ChangeLog

git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@347 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-06-26 09:07:13 +00:00
Steve Lhomme
daa4e095d5 libmatroska: change the order of an export so that it actually works
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@344 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-06-25 14:59:35 +00:00
Steve Lhomme
25665a5867 libmatroska: the next lib will be 1.1.0 because of binary incompatibility
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@337 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-06-24 16:22:29 +00:00
Steve Lhomme
0f82b00c63 libmatroska: give access to the SetParent to KaxSimpleBlock as well
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@336 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-06-24 16:21:14 +00:00
Moritz Bunkus
b4cdac7827 Updated version numbers and fixed DOS style newlines in spec files
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@332 a6f86f6d-0131-4f8e-9e7b-e335508773d5
2010-06-21 21:55:51 +00:00
91 changed files with 8661 additions and 9786 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.[ao]

3949
ChangeLog

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

186
debian/changelog vendored
View File

@@ -1,186 +0,0 @@
libmatroska (1.0.0-1) lucid; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sat, 05 Jun 2010 10:39:00 +0200
libmatroska (0.9.0-1) karmic; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sun, 09 May 2010 16:59:20 +0200
libmatroska (0.8.1-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Mon, 16 Jan 2007 17:00:30 +0100
libmatroska (0.8.0-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Tue, 18 Oct 2005 20:00:18 +0200
libmatroska (0.7.7-2) unstable; urgency=low
* Rebuilt with g++ 4.0.2.
-- Moritz Bunkus <moritz@bunkus.org> Sat, 15 Oct 2005 14:25:46 +0200
libmatroska (0.7.7-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Fri, 20 May 2005 16:28:21 +0200
libmatroska (0.7.6-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sat, 16 Apr 2005 13:24:30 +0200
libmatroska (0.7.5-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sun, 6 Feb 2005 21:02:42 +0100
libmatroska (0.7.4-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sun, 26 Sep 2004 12:35:05 +0200
libmatroska (0.7.3-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Mon, 16 Aug 2004 22:52:57 +0200
libmatroska (0.7.2-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Wed, 4 Aug 2004 19:49:25 +0200
libmatroska (0.7.1-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sun, 25 Jul 2004 12:41:11 +0200
libmatroska (0.7.0-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Fri, 23 Apr 2004 18:45:32 +0200
libmatroska (0.6.3-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Mon, 5 Jan 2004 19:55:59 +0100
libmatroska (0.6.2-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Tue, 30 Dec 2003 10:59:47 +0100
libmatroska (0.6.1-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Thu, 30 Oct 2003 13:49:33 +0100
libmatroska (0.6.0-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Tue, 28 Oct 2003 23:09:34 +0100
libmatroska (0.5.3-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Wed, 22 Oct 2003 19:22:10 +0200
libmatroska (0.5.2-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Wed, 17 Sep 2003 22:22:10 +0200
libmatroska (0.5.1-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Mon, 1 Sep 2003 13:42:56 +0200
libmatroska (0.5.0-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Mon, 28 Jul 2003 10:49:27 +0200
libmatroska (0.4.4-2) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sat, 14 Jun 2003 17:40:11 +0200
libmatroska (0.4.4-1) unstable; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Wed, 11 Jun 2003 20:32:09 +0200
libmatroska (0.4.3-1) unstable; urgency=low
* New version with API changes.
-- Moritz Bunkus <moritz@bunkus.org> Wed, 21 May 2003 22:35:52 +0200
libmatroska (0.4.2-1) unstable; urgency=low
* New version with API changes.
-- Moritz Bunkus <moritz@bunkus.org> Tue, 6 May 2003 22:33:44 +0200
libmatroska (0.4.1-2) unstable; urgency=low
* Compiled with gcc 3.2.3
-- Moritz Bunkus <moritz@bunkus.org> Sun, 04 May 2003 22:11:33 +0200
libmatroska (0.4.1-1) unstable; urgency=low
* Some bugfixes, memleak fixed.
-- Moritz Bunkus <moritz@bunkus.org> Sat, 03 May 2003 23:07:33 +0200
libmatroska (0.4.0-1) unstable; urgency=low
* First alpha release :)
-- Moritz Bunkus <moritz@bunkus.org> Wed, 30 Apr 2003 10:44:33 +0200
libmatroska (0.2.0.20030425) unstable; urgency=low
* New version with bugfixes by Steve.
-- Moritz Bunkus <moritz@bunkus.org> Fri, 25 Apr 2003 20:01:49 +0200
libmatroska (0.2.0.20030421) unstable; urgency=low
* Separated libebml from libmatroska like in the upstream sources.)
-- Moritz Bunkus <moritz@bunkus.org> Mon, 21 Apr 2003 16:33:36 +0200
libmatroska (0.0.20030225) unstable; urgency=low
* Initial Release.
-- Moritz Bunkus <moritz@bunkus.org> Tue, 25 Feb 2003 18:28:52 +0100

16
debian/control vendored
View File

@@ -1,16 +0,0 @@
Source: libmatroska
Priority: optional
Maintainer: Moritz Bunkus <moritz@bunkus.org>
Build-Depends: debhelper (>> 3.0.0), libebml-dev (>= 1.0.0-1)
Standards-Version: 3.5.8
Package: libmatroska-dev
Section: devel
Architecture: any
Depends: libebml-dev (>= 1.0.0-1)
Description: an extensible open standard Audio/Video container format
Matroska is aiming to become the standard of Multimedia
Container Formats one day. It is based on EBML (Extensible Binary
Meta Language), a kind of binary version of XML. This way the
significant advantages in terms of future format extensability
are gained without breaking file support in old parsers.

26
debian/copyright vendored
View File

@@ -1,26 +0,0 @@
This package was debianized by Moritz Bunkus <moritz@bunkus.org> on
Mon, 21 Apr 2003 12:49:33 +0200.
It was downloaded from http://www.matroska.org/
Upstream Author: Steve Lhomme <steve.lhomme@free.fr>
Copyright (C) 2002-2003 Steve Lhomme. All rights reserved.
This file may be distributed under the terms of the Q Public License
as defined by Trolltech AS of Norway and appearing in the file
LICENSE.QPL included in the packaging of this file.
This proram is also licensed under the GPL. See
/usr/share/common-licenses/GPL for details.
Licensees holding an other license may use this file in accordance with
the Agreement provided with the Software.
This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
See http://www.matroska.org/license/qpl/ for QPL licensing information.
Contact license@matroska.org if any conditions of this licensing are
not clear to you.

2
debian/dirs vendored
View File

@@ -1,2 +0,0 @@
usr/bin
usr/sbin

0
debian/docs vendored
View File

View File

@@ -1,2 +0,0 @@
usr/lib
usr/include

View File

@@ -1,2 +0,0 @@
usr/include/*
usr/lib/lib*.a

95
debian/rules vendored
View File

@@ -1,95 +0,0 @@
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This is the debhelper compatibility version to use.
export DH_COMPAT=4
# shared library versions, option 1
version=2.0.5
major=2
# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
#version=`ls src/.libs/lib*.so.* | \
# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
#major=`ls src/.libs/lib*.so.* | \
# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
# configure: configure-stamp
# configure-stamp:
# dh_testdir
# # Add here commands to configure the package.
# touch configure-stamp
build: build-stamp
build-stamp:
dh_testdir
# Add here commands to compile the package.
$(MAKE) -C make/linux $(DEB_BUILD_OPTIONS) LIBEBML_INCLUDE_DIR=/usr/include/ebml staticlib
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp
# Add here commands to clean up after the build process.
-$(MAKE) -C make/linux $(DEB_BUILD_OPTIONS) clean
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Add here commands to install the package into debian/tmp
$(MAKE) -C make/linux prefix=$(CURDIR)/debian/tmp/usr \
install_headers install_staticlib
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_movefiles
# dh_installdebconf
dh_installdocs
# dh_installexamples
# dh_installmenu
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_installinit
# dh_installcron
# dh_installman
# dh_installinfo
# dh_undocumented
dh_installchangelogs ChangeLog
dh_link
# dh_strip
dh_compress
dh_fixperms
dh_makeshlibs
dh_installdeb
# dh_perl
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

View File

@@ -1,8 +1,8 @@
Include "*/*.proj" #include "*/*.proj"
LIB matroska LIB matroska
{ {
PROJECT_VERSION 1.0.0 PROJECT_VERSION 1.3.0
INCLUDE . INCLUDE .
EXPINCLUDE . EXPINCLUDE .
@@ -24,50 +24,30 @@ LIB matroska
SOURCE src/KaxAttachments.cpp SOURCE src/KaxAttachments.cpp
SOURCE src/KaxBlock.cpp SOURCE src/KaxBlock.cpp
SOURCE src/KaxBlockData.cpp SOURCE src/KaxBlockData.cpp
SOURCE src/KaxChapters.cpp
SOURCE src/KaxCluster.cpp SOURCE src/KaxCluster.cpp
SOURCE src/KaxClusterData.cpp
SOURCE src/KaxContentEncoding.cpp
SOURCE src/KaxContexts.cpp SOURCE src/KaxContexts.cpp
SOURCE src/KaxCues.cpp SOURCE src/KaxCues.cpp
SOURCE src/KaxCuesData.cpp SOURCE src/KaxCuesData.cpp
SOURCE src/KaxInfo.cpp
SOURCE src/KaxInfoData.cpp SOURCE src/KaxInfoData.cpp
SOURCE src/KaxSeekHead.cpp SOURCE src/KaxSeekHead.cpp
SOURCE src/KaxSegment.cpp SOURCE src/KaxSegment.cpp
SOURCE src/KaxTag.cpp SOURCE src/KaxSemantic.cpp
SOURCE src/KaxTagMulti.cpp
SOURCE src/KaxTags.cpp
SOURCE src/KaxTrackAudio.cpp
SOURCE src/KaxTrackEntryData.cpp
SOURCE src/KaxTrackVideo.cpp
SOURCE src/KaxTracks.cpp SOURCE src/KaxTracks.cpp
SOURCE src/KaxVersion.cpp SOURCE src/KaxVersion.cpp
HEADER matroska/FileKax.h HEADER matroska/FileKax.h
HEADER matroska/KaxAttached.h
HEADER matroska/KaxAttachments.h
HEADER matroska/KaxBlock.h HEADER matroska/KaxBlock.h
HEADER matroska/KaxBlockData.h HEADER matroska/KaxBlockData.h
HEADER matroska/KaxChapters.h
HEADER matroska/KaxCluster.h HEADER matroska/KaxCluster.h
HEADER matroska/KaxClusterData.h
HEADER matroska/KaxConfig.h HEADER matroska/KaxConfig.h
HEADER matroska/KaxContentEncoding.h
HEADER matroska/KaxContexts.h HEADER matroska/KaxContexts.h
HEADER matroska/KaxCues.h HEADER matroska/KaxCues.h
HEADER matroska/KaxCuesData.h HEADER matroska/KaxCuesData.h
HEADER matroska/KaxDefines.h HEADER matroska/KaxDefines.h
HEADER matroska/KaxInfo.h
HEADER matroska/KaxInfoData.h HEADER matroska/KaxInfoData.h
HEADER matroska/KaxSeekHead.h HEADER matroska/KaxSeekHead.h
HEADER matroska/KaxSegment.h HEADER matroska/KaxSegment.h
HEADER matroska/KaxTag.h HEADER matroska/KaxSemantic.h
HEADER matroska/KaxTagMulti.h
HEADER matroska/KaxTags.h
HEADER matroska/KaxTrackAudio.h
HEADER matroska/KaxTrackEntryData.h
HEADER matroska/KaxTrackVideo.h
HEADER matroska/KaxTracks.h HEADER matroska/KaxTracks.h
HEADER matroska/KaxTypes.h HEADER matroska/KaxTypes.h
HEADER matroska/KaxVersion.h HEADER matroska/KaxVersion.h

View File

@@ -1,211 +1,211 @@
# Doxyfile 1.3 # Doxyfile 1.3
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# General configuration options # General configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
PROJECT_NAME = libmatroska PROJECT_NAME = libmatroska
PROJECT_NUMBER = 0.5.0 PROJECT_NUMBER = 0.5.0
OUTPUT_DIRECTORY = ../../doc/src OUTPUT_DIRECTORY = ../../doc/src
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = YES USE_WINDOWS_ENCODING = YES
EXTRACT_ALL = YES EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO HIDE_IN_BODY_DOCS = NO
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = YES INLINE_INHERITED_MEMB = YES
FULL_PATH_NAMES = NO FULL_PATH_NAMES = NO
STRIP_FROM_PATH = STRIP_FROM_PATH =
INTERNAL_DOCS = NO INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES CASE_SENSE_NAMES = YES
SHORT_NAMES = NO SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = NO SHOW_INCLUDE_FILES = NO
JAVADOC_AUTOBRIEF = YES JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = YES DETAILS_AT_TOP = YES
INHERIT_DOCS = YES INHERIT_DOCS = YES
INLINE_INFO = YES INLINE_INFO = YES
SORT_MEMBER_DOCS = NO SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = NO DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 2 TAB_SIZE = 2
GENERATE_TODOLIST = YES GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES GENERATE_DEPRECATEDLIST= YES
ALIASES = ALIASES =
ENABLED_SECTIONS = ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_OUTPUT_JAVA = NO
SHOW_USED_FILES = YES SHOW_USED_FILES = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
QUIET = NO QUIET = NO
WARNINGS = YES WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES
WARN_FORMAT = "$file:$line: $text" WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = ../../libebml/src \ INPUT = ../../libebml/src \
../../libebml/src/platform/win32 \ ../../libebml/src/platform/win32 \
../../libebml/ebml \ ../../libebml/ebml \
../../libebml/ebml/c \ ../../libebml/ebml/c \
../src \ ../src \
../matroska \ ../matroska \
../matroska/c ../matroska/c
FILE_PATTERNS = *.cpp \ FILE_PATTERNS = *.cpp \
*.h *.h
RECURSIVE = NO RECURSIVE = NO
EXCLUDE = EXCLUDE =
EXCLUDE_SYMLINKS = NO EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = EXCLUDE_PATTERNS =
EXAMPLE_PATH = EXAMPLE_PATH =
EXAMPLE_PATTERNS = EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO EXAMPLE_RECURSIVE = NO
IMAGE_PATH = IMAGE_PATH =
INPUT_FILTER = INPUT_FILTER =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
SOURCE_BROWSER = YES SOURCE_BROWSER = YES
INLINE_SOURCES = NO INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = YES REFERENCES_RELATION = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5 COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX = IGNORE_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the HTML output # configuration options related to the HTML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_OUTPUT = html HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html HTML_FILE_EXTENSION = .html
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = libmatroska.css HTML_STYLESHEET = libmatroska.css
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
CHM_FILE = CHM_FILE =
HHC_LOCATION = HHC_LOCATION =
GENERATE_CHI = NO GENERATE_CHI = NO
BINARY_TOC = NO BINARY_TOC = NO
TOC_EXPAND = NO TOC_EXPAND = NO
DISABLE_INDEX = NO DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4 ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_LATEX = YES GENERATE_LATEX = YES
LATEX_OUTPUT = latex LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = YES COMPACT_LATEX = YES
PAPER_TYPE = a4wide PAPER_TYPE = a4wide
EXTRA_PACKAGES = EXTRA_PACKAGES =
LATEX_HEADER = LATEX_HEADER =
PDF_HYPERLINKS = YES PDF_HYPERLINKS = YES
USE_PDFLATEX = YES USE_PDFLATEX = YES
LATEX_BATCHMODE = NO LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO LATEX_HIDE_INDICES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to the RTF output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_RTF = YES GENERATE_RTF = YES
RTF_OUTPUT = rtf RTF_OUTPUT = rtf
COMPACT_RTF = NO COMPACT_RTF = NO
RTF_HYPERLINKS = YES RTF_HYPERLINKS = YES
RTF_STYLESHEET_FILE = RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE = RTF_EXTENSIONS_FILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the man page output # configuration options related to the man page output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_MAN = NO GENERATE_MAN = NO
MAN_OUTPUT = man MAN_OUTPUT = man
MAN_EXTENSION = .3 MAN_EXTENSION = .3
MAN_LINKS = YES MAN_LINKS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the XML output # configuration options related to the XML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = NO GENERATE_XML = NO
XML_SCHEMA = XML_SCHEMA =
XML_DTD = XML_DTD =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output # configuration options for the AutoGen Definitions output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO GENERATE_AUTOGEN_DEF = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the Perl module output # configuration options related to the Perl module output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_PERLMOD = NO GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX = PERLMOD_MAKEVAR_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES
INCLUDE_PATH = INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = PREDEFINED =
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::addtions related to external references # Configuration::addtions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = GENERATE_TAGFILE =
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
DOT_PATH = DOT_PATH =
DOTFILE_DIRS = DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 0 MAX_DOT_GRAPH_DEPTH = 0
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
DOT_CLEANUP = YES DOT_CLEANUP = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::addtions related to the search engine # Configuration::addtions related to the search engine
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
SEARCHENGINE = NO SEARCHENGINE = NO
CGI_NAME = search.cgi CGI_NAME = search.cgi
CGI_URL = CGI_URL =
DOC_URL = DOC_URL =
DOC_ABSPATH = DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/ BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS = EXT_DOC_PATHS =

View File

@@ -1,178 +1,179 @@
# libmatroska core Makefile (used in cygwin) # libmatroska core Makefile (used in cygwin)
# $Id: Makefile 1254 2006-06-02 14:32:52Z mosu $ # $Id: Makefile 1254 2006-06-02 14:32:52Z mosu $
# Author: Steve Lhomme <robux4 @ users.sf.net> # Author: Steve Lhomme <robux4 @ users.sf.net>
# Author: Moritz Bunkus <moritz @ bunkus.org> # Author: Moritz Bunkus <moritz @ bunkus.org>
# #
# The library is built without debug information. If you want # The library is built without debug information. If you want
# debug information to be included then compile with # debug information to be included then compile with
# 'make DEBUG=yes'. # 'make DEBUG=yes'.
# #
# Paths # Paths
# BeOS wants the libs and headers in /boot/home/config # BeOS wants the libs and headers in /boot/home/config
ifeq (BeOS,$(shell uname -s)) ifeq (BeOS,$(shell uname -s))
prefix=/boot/home/config prefix=/boot/home/config
else else
prefix=/usr/local prefix=/usr/local
endif endif
libdir=$(prefix)/lib libdir=$(prefix)/lib
includedir=$(prefix)/include/matroska includedir=$(prefix)/include/matroska
# Programs # Programs
CROSS = CROSS =
CXX = $(CROSS)g++ CXX = $(CROSS)g++
LD = $(CXX) LD = $(CXX)
AR = $(CROSS)ar AR = $(CROSS)ar
RANLIB = $(CROSS)ranlib RANLIB = $(CROSS)ranlib
INSTALL = install INSTALL = install
INSTALL_OPTS = -m 644 INSTALL_OPTS = -m 644
INSTALL_OPTS_LIB = -m 644 INSTALL_OPTS_LIB = -m 644
INSTALL_DIR_OPTS = -m 755 INSTALL_DIR_OPTS = -m 755
CWD=$(shell pwd) CWD=$(shell pwd)
# Options # Options
LIBEBML_INCLUDE_DIR=$(CWD)/../../../libebml LIBEBML_INCLUDE_DIR=$(CWD)/../../../libebml
LIBEBML_LIB_DIR=$(CWD)/../../../libebml/make/linux LIBEBML_LIB_DIR=$(CWD)/../../../libebml/make/linux
EXTENSION=.cpp EXTENSION=.cpp
ifeq (yes,$(DEBUG)) ifeq (yes,$(DEBUG))
DEBUGFLAGS=-g -DDEBUG DEBUGFLAGS=-g -DDEBUG
endif endif
SRC_DIR=$(CWD)/../../src/ ifeq (Darwin,$(shell uname -s))
INCLUDE_DIR=$(CWD)/../../matroska link=static
MUX_SRC_DIR=$(CWD)/../../test/mux/ else
TAG_SRC_DIR=$(CWD)/../../test/tags/ link=both
endif
# Librarires
INCLUDE=-I$(CWD)/../.. -I$(LIBEBML_INCLUDE_DIR) targets_both = staticlib sharedlib
LIBS= targets_shared = sharedlib
MUX_LIBS=-lmatroska -lebml $(LIBICONV) targets_static = staticlib
# Names SRC_DIR=$(CWD)/../../src/
LIBRARY=libmatroska.a INCLUDE_DIR=$(CWD)/../../matroska
LIBRARY_SO=libmatroska.so MUX_SRC_DIR=$(CWD)/../../test/mux/
LIBRARY_SO_VER=libmatroska.so.2 TAG_SRC_DIR=$(CWD)/../../test/tags/
# source-files # Libraries
sources:=$(wildcard ${SRC_DIR}*$(EXTENSION)) INCLUDE=-I$(CWD)/../.. -I$(LIBEBML_INCLUDE_DIR)
LIBS=
# header files; replace .cxx extension with .h MUX_LIBS=-lmatroska -lebml $(LIBICONV)
headers:=$(patsubst %$(EXTENSION),%.h,$(sources))
# Names
# object files; replace .cxx extension with .o LIBRARY=libmatroska.a
objects:=$(patsubst %$(EXTENSION),%.o,$(sources)) LIBRARY_SO=libmatroska.so
LIBRARY_SO_VER=libmatroska.so.6
objects_so:=$(patsubst %$(EXTENSION),%.lo,$(sources))
# source-files
WARNINGFLAGS=-Wall -Wno-unknown-pragmas -ansi -fno-gnu-keywords -D_GNU_SOURCE \ sources:=$(wildcard ${SRC_DIR}*$(EXTENSION))
-Wshadow
COMPILEFLAGS=$(DEBUGFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(WARNINGFLAGS) $(INCLUDE) # header files; replace .cxx extension with .h
LINKFLAGS=-L. -L$(LIBEBML_LIB_DIR) $(LDFLAGS) headers:=$(patsubst %$(EXTENSION),%.h,$(sources))
DEPENDFLAGS = $(CXXFLAGS) $(INCLUDE)
# object files; replace .cxx extension with .o
ifeq (Darwin,$(shell uname -s)) objects:=$(patsubst %$(EXTENSION),%.o,$(sources))
all: staticlib
else objects_so:=$(patsubst %$(EXTENSION),%.lo,$(sources))
all: staticlib sharedlib
endif WARNINGFLAGS=-Wall -Wextra -Wno-unknown-pragmas -D_GNU_SOURCE -Wshadow
COMPILEFLAGS=$(DEBUGFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(WARNINGFLAGS) $(INCLUDE)
staticlib: $(LIBRARY) LINKFLAGS=-L. -L$(LIBEBML_LIB_DIR) $(LDFLAGS)
DEPENDFLAGS = $(CXXFLAGS) $(INCLUDE)
sharedlib: $(LIBRARY_SO)
all: $(targets_$(link))
lib:
@echo "Use the 'staticlib', 'sharedlib' or 'all' targets." staticlib: $(LIBRARY)
@false
sharedlib: $(LIBRARY_SO)
# Build rules
%.o: %$(EXTENSION) lib:
$(CXX) -c $(COMPILEFLAGS) -o $@ $< @echo "Use the 'staticlib', 'sharedlib' or 'all' targets."
@false
%.lo: %$(EXTENSION)
$(CXX) -c $(COMPILEFLAGS) -fPIC -o $@ $< # Build rules
%.o: %$(EXTENSION)
$(LIBRARY): $(objects) $(CXX) -c $(COMPILEFLAGS) -o $@ $<
$(AR) rcvu $@ $(objects)
$(RANLIB) $@ %.lo: %$(EXTENSION)
$(CXX) -c $(COMPILEFLAGS) -fPIC -o $@ $<
$(LIBRARY_SO): $(objects_so)
$(CXX) -shared -Wl,-soname,$(LIBRARY_SO_VER) -o $(LIBRARY_SO_VER) $(objects_so) -lebml $(LIBRARY): $(objects)
rm -f $(LIBRARY_SO) $(AR) rcvu $@ $(objects)
ln -s $(LIBRARY_SO_VER) $(LIBRARY_SO) $(RANLIB) $@
clean: cleantest $(LIBRARY_SO): $(objects_so)
rm -f $(objects) $(objects_so) $(CXX) -shared -Wl,-soname,$(LIBRARY_SO_VER) -o $(LIBRARY_SO_VER) $(objects_so) -lebml
rm -f $(LIBRARY) rm -f $(LIBRARY_SO)
rm -f $(LIBRARY_SO) ln -s $(LIBRARY_SO_VER) $(LIBRARY_SO)
rm -f $(LIBRARY_SO_VER)
rm -f CORE clean: cleantest
rm -f $(objects) $(objects_so)
cleantest: rm -f $(LIBRARY)
rm -f test6 test8 test9 test6.o test8.o test9.o rm -f $(LIBRARY_SO)
rm -f $(LIBRARY_SO_VER)
distclean dist-clean: clean rm -f CORE
rm -f .depend
cleantest:
depend: rm -f test6 test8 test9 test6.o test8.o test9.o
@echo Calculating dependecies:
@rm -f .depend distclean dist-clean: clean
@touch .depend rm -f .depend
@for i in $(sources); do \
o="`echo $$i | sed -e 's/\.c$$/.o/' -e 's/\.cpp$$/.o/'`" ; \ depend:
echo ' ' $$i: $$o ; \ @echo Calculating dependecies:
$(CXX) $(DEPENDFLAGS) -MM -MT $$o $$i >> .depend ; \ @rm -f .depend
done @touch .depend
@for i in $(sources); do \
test: test6 test9 o="`echo $$i | sed -e 's/\.c$$/.o/' -e 's/\.cpp$$/.o/'`" ; \
echo ' ' $$i: $$o ; \
test6: test6.o $(LIBRARY) $(LIBRARY_SO) $(CXX) $(DEPENDFLAGS) -MM -MT $$o $$i >> .depend ; \
$(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS) done
test6.o: $(MUX_SRC_DIR)test6.cpp test: test6 test9
$(CXX) -c $(COMPILEFLAGS) -o $@ $<
test6: test6.o $(LIBRARY) $(LIBRARY_SO)
test8: test8.o $(LIBRARY) $(LIBRARY_SO) $(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
$(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
test6.o: $(MUX_SRC_DIR)test6.cpp
test8.o: $(MUX_SRC_DIR)test8.cpp $(CXX) -c $(COMPILEFLAGS) -o $@ $<
$(CXX) -c $(COMPILEFLAGS) -o $@ $<
test8: test8.o $(LIBRARY) $(LIBRARY_SO)
test9: test9.o $(LIBRARY) $(LIBRARY_SO) $(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
$(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
test8.o: $(MUX_SRC_DIR)test8.cpp
test9.o: $(TAG_SRC_DIR)test9.cpp $(CXX) -c $(COMPILEFLAGS) -o $@ $<
$(CXX) -c $(COMPILEFLAGS) -o $@ $<
test9: test9.o $(LIBRARY) $(LIBRARY_SO)
ifeq (Darwin,$(shell uname -s)) $(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
install: install_staticlib install_headers
else test9.o: $(TAG_SRC_DIR)test9.cpp
install: install_staticlib install_sharedlib install_headers $(CXX) -c $(COMPILEFLAGS) -o $@ $<
endif
install: $(targets_$(link):%=install_%) install_headers
install_headers:
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(includedir) install_headers:
for i in $(INCLUDE_DIR)/*.h; do \ $(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(includedir)
$(INSTALL) $(INSTALL_OPTS) $$i $(includedir) ; \ for i in $(INCLUDE_DIR)/*.h; do \
done $(INSTALL) $(INSTALL_OPTS) $$i $(DESTDIR)$(includedir) ; \
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(includedir)/c done
for i in $(INCLUDE_DIR)/c/*.h; do \ $(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(includedir)/c
$(INSTALL) $(INSTALL_OPTS) $$i $(includedir)/c ; \ for i in $(INCLUDE_DIR)/c/*.h; do \
done $(INSTALL) $(INSTALL_OPTS) $$i $(DESTDIR)$(includedir)/c ; \
done
install_staticlib: $(LIBRARY)
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(libdir) install_staticlib: $(LIBRARY)
$(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY) $(libdir) $(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(libdir)
$(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY) $(DESTDIR)$(libdir)
install_sharedlib: $(LIBRARY_SO)
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(libdir) install_sharedlib: $(LIBRARY_SO)
$(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY_SO_VER) $(libdir) $(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(libdir)
ln -fs $(LIBRARY_SO_VER) $(libdir)/$(LIBRARY_SO) $(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY_SO_VER) $(DESTDIR)$(libdir)
ln -fs $(LIBRARY_SO_VER) $(DESTDIR)$(libdir)/$(LIBRARY_SO)
ifneq ($(wildcard .depend),)
include .depend ifneq ($(wildcard .depend),)
endif include .depend
endif
# DO NOT DELETE
# DO NOT DELETE

View File

@@ -1,98 +1,98 @@
## ##
## This Makefile is made for cygwin, but might probably work on any standard UNIX too ## This Makefile is made for cygwin, but might probably work on any standard UNIX too
## ##
#**************************************************************************** #****************************************************************************
# DEBUG can be set to YES to include debugging info, or NO otherwise # DEBUG can be set to YES to include debugging info, or NO otherwise
DEBUG = YES DEBUG = YES
# PROFILE can be set to YES to include profiling info, or NO otherwise # PROFILE can be set to YES to include profiling info, or NO otherwise
PROFILE = NO PROFILE = NO
#**************************************************************************** #****************************************************************************
CC = gcc CC = gcc
CXX = g++ CXX = g++
LD = gcc LD = gcc
AR = ar rcvu AR = ar rcvu
RANLIB = ranlib RANLIB = ranlib
DEPEND = makedepend DEPEND = makedepend
INDENT =indent --gnu-style -ut -ts6 -br -npsl -npcs INDENT =indent --gnu-style -ut -ts6 -br -npsl -npcs
DELETE =rm -f DELETE =rm -f
GLOBAL_CFLAGS = -Wall -Wno-unknown-pragmas -Wno-format GLOBAL_CFLAGS = -Wall -Wno-unknown-pragmas -Wno-format
DEBUG_CFLAGS = -g -O0 -DDEBUG ${GLOBAL_CFLAGS} DEBUG_CFLAGS = -g -O0 -DDEBUG ${GLOBAL_CFLAGS}
RELEASE_CFLAGS = -O2 ${GLOBAL_CFLAGS} RELEASE_CFLAGS = -O2 ${GLOBAL_CFLAGS}
P_OPTIONS = -pedantic P_OPTIONS = -pedantic
LIBS = LIBS =
DEBUG_CXXFLAGS = ${DEBUG_CFLAGS} DEBUG_CXXFLAGS = ${DEBUG_CFLAGS}
RELEASE_CXXFLAGS = ${RELEASE_CFLAGS} RELEASE_CXXFLAGS = ${RELEASE_CFLAGS}
DEBUG_LDFLAGS = -g DEBUG_LDFLAGS = -g
RELEASE_LDFLAGS = RELEASE_LDFLAGS =
ifeq (YES, ${DEBUG}) ifeq (YES, ${DEBUG})
CFLAGS = ${DEBUG_CFLAGS} ${INCS} ${P_OPTIONS} CFLAGS = ${DEBUG_CFLAGS} ${INCS} ${P_OPTIONS}
CXXFLAGS = ${DEBUG_CXXFLAGS} ${INCS} ${P_OPTIONS} CXXFLAGS = ${DEBUG_CXXFLAGS} ${INCS} ${P_OPTIONS}
LDFLAGS = ${DEBUG_LDFLAGS} LDFLAGS = ${DEBUG_LDFLAGS}
DEPENDFLAGS = ${DEBUG_CFLAGS} ${INCS} DEPENDFLAGS = ${DEBUG_CFLAGS} ${INCS}
else else
CFLAGS = ${RELEASE_CFLAGS} ${INCS} ${P_OPTIONS} CFLAGS = ${RELEASE_CFLAGS} ${INCS} ${P_OPTIONS}
CXXFLAGS = ${RELEASE_CXXFLAGS} ${INCS} ${P_OPTIONS} CXXFLAGS = ${RELEASE_CXXFLAGS} ${INCS} ${P_OPTIONS}
LDFLAGS = ${RELEASE_LDFLAGS} LDFLAGS = ${RELEASE_LDFLAGS}
DEPENDFLAGS = ${RELEASE_CFLAGS} ${INCS} DEPENDFLAGS = ${RELEASE_CFLAGS} ${INCS}
endif endif
ifeq (YES, ${PROFILE}) ifeq (YES, ${PROFILE})
CFLAGS := ${CFLAGS} -pg CFLAGS := ${CFLAGS} -pg
CXXFLAGS := ${CXXFLAGS} -pg CXXFLAGS := ${CXXFLAGS} -pg
LDFLAGS := ${LDFLAGS} -pg LDFLAGS := ${LDFLAGS} -pg
endif endif
#**************************************************************************** #****************************************************************************
# Preprocessor directives # Preprocessor directives
#**************************************************************************** #****************************************************************************
ifeq (YES, ${PROFILE}) ifeq (YES, ${PROFILE})
DEFS = DEFS =
else else
DEFS = DEFS =
endif endif
#**************************************************************************** #****************************************************************************
# Include paths # Include paths
#**************************************************************************** #****************************************************************************
#INCS := -I/usr/include/g++-2 -I/usr/local/include #INCS := -I/usr/include/g++-2 -I/usr/local/include
#INCS = #INCS =
#**************************************************************************** #****************************************************************************
# Makefile code common to all platforms # Makefile code common to all platforms
#**************************************************************************** #****************************************************************************
CFLAGS := ${CFLAGS} ${DEFS} CFLAGS := ${CFLAGS} ${DEFS}
CXXFLAGS := ${CXXFLAGS} ${DEFS} CXXFLAGS := ${CXXFLAGS} ${DEFS}
#**************************************************************************** #****************************************************************************
# General rules # General rules
#**************************************************************************** #****************************************************************************
indent: indent:
$(INDENT) --line-length 100 ${SRCS} ${SRCS_HEADERS} $(INDENT) --line-length 100 ${SRCS} ${SRCS_HEADERS}
$(DELETE) *.*~ $(DELETE) *.*~
indent80: indent80:
$(INDENT) --line-length 80 ${SRCS} ${SRCS_HEADERS} $(INDENT) --line-length 80 ${SRCS} ${SRCS_HEADERS}
$(DELETE) *.*~ $(DELETE) *.*~
clean: clean:
rm -f core *.o *.so *.a *.exe rm -f core *.o *.so *.a *.exe
# what are the source dependencies # what are the source dependencies
depend: $(SRCS) depend: $(SRCS)
$(DEPEND) $(DEPENDFLAGS) $(SRCS) $(DEPEND) $(DEPENDFLAGS) $(SRCS)

View File

@@ -1,18 +1,18 @@
#!/bin/sh #!/bin/sh
# A small script that looks for duplicate EBML IDs in all of libmatroska's # A small script that looks for duplicate EBML IDs in all of libmatroska's
# source files. # source files.
echo 'Duplicate IDs:' echo 'Duplicate IDs:'
grep -h '^EbmlId.*_TheId' ../../src/*cpp | \ grep -h '^EbmlId.*_TheId' ../../src/*cpp | \
sed -e 's/TheId/TheId /' | \ sed -e 's/TheId/TheId /' | \
awk '{ print $3 }' | \ awk '{ print $3 }' | \
sed -e 's/(//' -e 's/,//' | \ sed -e 's/(//' -e 's/,//' | \
sort | \ sort | \
uniq -d | \ uniq -d | \
( while read id ; do ( while read id ; do
echo '' echo ''
echo ${id}: echo ${id}:
grep -i $id ../../src/*cpp grep -i $id ../../src/*cpp
done ) done )

View File

@@ -1,61 +1,61 @@
# SPEC file for (at least) Fedora Core 1, 2, 3 # SPEC file for (at least) Fedora Core 1, 2, 3
Name: libmatroska Name: libmatroska
Version: 0.8.1 Version: 1.4.0
Release: 1 Release: 1
License: LGPL License: LGPL
Summary: Matroska Video Container Summary: Matroska Video Container
Group: System Environment/Libraries Group: System Environment/Libraries
URL: http://www.matroska.org/ URL: http://www.matroska.org/
Vendor: Moritz Bunkus <moritz@bunkus.org> Vendor: Moritz Bunkus <moritz@bunkus.org>
Source: http://dl.matroska.org/downloads/%{name}/%{name}-%{version}.tar.bz2 Source: http://dl.matroska.org/downloads/%{name}/%{name}-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-root BuildRoot: %{_tmppath}/%{name}-root
%description %description
Matroska aims to become THE Standard of Multimedia Container Formats. Matroska aims to become THE Standard of Multimedia Container Formats.
It was derived from a project called MCF, but differentiates from it It was derived from a project called MCF, but differentiates from it
significantly because it is based on EBML (Extensible Binary Meta significantly because it is based on EBML (Extensible Binary Meta
Language), a binary derivative of XML. EBML enables the Matroska Language), a binary derivative of XML. EBML enables the Matroska
Development Team to gain significant advantages in terms of future Development Team to gain significant advantages in terms of future
format extensibility, without breaking file support in old parsers. format extensibility, without breaking file support in old parsers.
%package devel %package devel
Summary: Matroska Video Container headers/development files Summary: Matroska Video Container headers/development files
Group: Development/Libraries Group: Development/Libraries
%description devel %description devel
Headers for libmatroska. Headers for libmatroska.
%prep %prep
%setup -q %setup -q
%build %build
cd make/linux cd make/linux
CFLAGS="$RPM_OPT_FLAGS" \ CFLAGS="$RPM_OPT_FLAGS" \
make \ make \
prefix="%{_prefix}" \ prefix="%{_prefix}" \
LIBEBML_INCLUDE_DIR=%{_includedir} \ LIBEBML_INCLUDE_DIR=%{_includedir} \
LIBEBML_LIB_DIR=%{_libdir} \ LIBEBML_LIB_DIR=%{_libdir} \
staticlib staticlib
cd ../.. cd ../..
%install %install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
cd make/linux cd make/linux
make prefix=$RPM_BUILD_ROOT/%{_prefix} libdir=$RPM_BUILD_ROOT/%{_libdir} install_staticlib install_headers make prefix=$RPM_BUILD_ROOT/%{_prefix} libdir=$RPM_BUILD_ROOT/%{_libdir} install_staticlib install_headers
cd ../.. cd ../..
%clean %clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
%files devel %files devel
%defattr(-, root, root) %defattr(-, root, root)
%{_includedir}/matroska/*.h %{_includedir}/matroska/*.h
%{_includedir}/matroska/c/*.h %{_includedir}/matroska/c/*.h
%{_libdir}/libmatroska.a %{_libdir}/libmatroska.a
%changelog %changelog
* Sat Apr 16 2005 Moritz Bunkus <moritz@bunkus.org> * Sat Apr 16 2005 Moritz Bunkus <moritz@bunkus.org>
- updated for the new libmatroska build targets - updated for the new libmatroska build targets
* Fri May 15 2003 Ronald Bultje <rbultje@ronald.bitfreak.net> * Fri May 15 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- create spec file - create spec file

View File

@@ -1,73 +1,73 @@
# #
# spec file for package libmatroska for (at least) SuSE 9.0, 9.1 # spec file for package libmatroska for (at least) SuSE 9.0, 9.1
# #
# Copyright (c) 2004 SUSE LINUX AG, Nuernberg, Germany. # Copyright (c) 2004 SUSE LINUX AG, Nuernberg, Germany.
# This file and all modifications and additions to the pristine # This file and all modifications and additions to the pristine
# package are under the same license as the package itself. # package are under the same license as the package itself.
# #
# Please submit bugfixes or comments via http://www.suse.de/feedback/ # Please submit bugfixes or comments via http://www.suse.de/feedback/
# #
# neededforbuild gcc-c++ libebml libstdc++-devel # neededforbuild gcc-c++ libebml libstdc++-devel
BuildRequires: bzip2 cpp libebml make tar zlib zlib-devel binutils gcc gcc-c++ libstdc++-devel perl rpm BuildRequires: bzip2 cpp libebml make tar zlib zlib-devel binutils gcc gcc-c++ libstdc++-devel perl rpm
Name: libmatroska Name: libmatroska
URL: http://dl.matroska.org/downloads/libmatroska/ URL: http://dl.matroska.org/downloads/libmatroska/
Version: 0.8.1 Version: 1.4.0
Release: 1 Release: 1
Summary: library to deal with matroska files. Summary: library to deal with matroska files.
License: LGPL License: LGPL
Group: Development/Libraries/Other Group: Development/Libraries/Other
Source: %{name}-%{version}.tar.bz2 Source: %{name}-%{version}.tar.bz2
Summary: library to deal with matroska files. Summary: library to deal with matroska files.
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
Prefix: /usr Prefix: /usr
%description %description
libmatroska is a C++ libary to parse Matroska files (.mkv and .mka). It libmatroska is a C++ libary to parse Matroska files (.mkv and .mka). It
depends on libebml to work. You only need this package to compile your depends on libebml to work. You only need this package to compile your
own applications. own applications.
Authors: Authors:
-------- --------
Steve Lhomme <steve.lhomme@free.fr> Steve Lhomme <steve.lhomme@free.fr>
Moritz Bunkus <moritz@bunkus.org> Moritz Bunkus <moritz@bunkus.org>
%prep %prep
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%setup %setup
%build %build
export CFLAGS="$RPM_OPT_FLAGS" export CFLAGS="$RPM_OPT_FLAGS"
cd make/linux cd make/linux
make prefix=$RPM_BUILD_ROOT/usr libdir=$RPM_BUILD_ROOT/%{_libdir} staticlib make prefix=$RPM_BUILD_ROOT/usr libdir=$RPM_BUILD_ROOT/%{_libdir} staticlib
%install %install
cd make/linux cd make/linux
make prefix=$RPM_BUILD_ROOT/usr libdir=$RPM_BUILD_ROOT/%{_libdir} install_staticlib install_headers make prefix=$RPM_BUILD_ROOT/usr libdir=$RPM_BUILD_ROOT/%{_libdir} install_staticlib install_headers
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%post %post
%run_ldconfig %run_ldconfig
%postun %postun
%run_ldconfig %run_ldconfig
%files %files
%defattr (-,root,root) %defattr (-,root,root)
%{_libdir}/libmatroska.a %{_libdir}/libmatroska.a
/usr/include/matroska /usr/include/matroska
# /usr/include/ebml/* # /usr/include/ebml/*
%changelog -n libmatroska %changelog -n libmatroska
* Sat Apr 16 2005 - moritz@bunkus.org * Sat Apr 16 2005 - moritz@bunkus.org
- updated for the new libmatroska build targets - updated for the new libmatroska build targets
* Thu Sep 02 2004 - seife@suse.de * Thu Sep 02 2004 - seife@suse.de
- add libebml to neededforbuild - add libebml to neededforbuild
* Wed Sep 01 2004 - seife@suse.de * Wed Sep 01 2004 - seife@suse.de
- initial submission - initial submission

View File

@@ -258,7 +258,6 @@
9091E0C904C1CA1D0040EA6E, 9091E0C904C1CA1D0040EA6E,
9091E0CA04C1CA1D0040EA6E, 9091E0CA04C1CA1D0040EA6E,
9091E0CB04C1CA1D0040EA6E, 9091E0CB04C1CA1D0040EA6E,
9091E0CC04C1CA1D0040EA6E,
9091E0CD04C1CA1D0040EA6E, 9091E0CD04C1CA1D0040EA6E,
9091E0CE04C1CA1D0040EA6E, 9091E0CE04C1CA1D0040EA6E,
9091E0CF04C1CA1D0040EA6E, 9091E0CF04C1CA1D0040EA6E,
@@ -289,7 +288,6 @@
9091E09A04C1C9FA0040EA6E, 9091E09A04C1C9FA0040EA6E,
9091E09B04C1C9FA0040EA6E, 9091E09B04C1C9FA0040EA6E,
9091E09C04C1C9FA0040EA6E, 9091E09C04C1C9FA0040EA6E,
9091E09D04C1C9FA0040EA6E,
9091E09E04C1C9FA0040EA6E, 9091E09E04C1C9FA0040EA6E,
9091E09F04C1C9FA0040EA6E, 9091E09F04C1C9FA0040EA6E,
9091E0A004C1C9FA0040EA6E, 9091E0A004C1C9FA0040EA6E,
@@ -473,13 +471,6 @@
path = ../../src/KaxTag.cpp; path = ../../src/KaxTag.cpp;
refType = 2; refType = 2;
}; };
9091E09D04C1C9FA0040EA6E = {
fileEncoding = 5;
isa = PBXFileReference;
name = KaxTagMulti.cpp;
path = ../../src/KaxTagMulti.cpp;
refType = 2;
};
9091E09E04C1C9FA0040EA6E = { 9091E09E04C1C9FA0040EA6E = {
fileEncoding = 5; fileEncoding = 5;
isa = PBXFileReference; isa = PBXFileReference;
@@ -641,13 +632,6 @@
path = ../../matroska/KaxTag.h; path = ../../matroska/KaxTag.h;
refType = 2; refType = 2;
}; };
9091E0CC04C1CA1D0040EA6E = {
fileEncoding = 5;
isa = PBXFileReference;
name = KaxTagMulti.h;
path = ../../matroska/KaxTagMulti.h;
refType = 2;
};
9091E0CD04C1CA1D0040EA6E = { 9091E0CD04C1CA1D0040EA6E = {
fileEncoding = 5; fileEncoding = 5;
isa = PBXFileReference; isa = PBXFileReference;
@@ -1025,7 +1009,6 @@
9091E18F04C1CC0E0040EA6E, 9091E18F04C1CC0E0040EA6E,
9091E19004C1CC0F0040EA6E, 9091E19004C1CC0F0040EA6E,
9091E19104C1CC100040EA6E, 9091E19104C1CC100040EA6E,
9091E19204C1CC100040EA6E,
9091E19304C1CC110040EA6E, 9091E19304C1CC110040EA6E,
9091E19404C1CC110040EA6E, 9091E19404C1CC110040EA6E,
9091E19504C1CC120040EA6E, 9091E19504C1CC120040EA6E,
@@ -1071,7 +1054,6 @@
9091E16D04C1CBF60040EA6E, 9091E16D04C1CBF60040EA6E,
9091E16E04C1CBF70040EA6E, 9091E16E04C1CBF70040EA6E,
9091E16F04C1CBF70040EA6E, 9091E16F04C1CBF70040EA6E,
9091E17004C1CBF80040EA6E,
9091E17104C1CBF90040EA6E, 9091E17104C1CBF90040EA6E,
9091E17204C1CBFA0040EA6E, 9091E17204C1CBFA0040EA6E,
9091E17304C1CBFA0040EA6E, 9091E17304C1CBFA0040EA6E,
@@ -1203,7 +1185,6 @@
9091E27604C1CE340040EA6E, 9091E27604C1CE340040EA6E,
9091E27704C1CE350040EA6E, 9091E27704C1CE350040EA6E,
9091E27804C1CE360040EA6E, 9091E27804C1CE360040EA6E,
9091E27904C1CE360040EA6E,
9091E27A04C1CE370040EA6E, 9091E27A04C1CE370040EA6E,
9091E27B04C1CE370040EA6E, 9091E27B04C1CE370040EA6E,
9091E27C04C1CE380040EA6E, 9091E27C04C1CE380040EA6E,
@@ -1256,7 +1237,6 @@
9091E25E04C1CE230040EA6E, 9091E25E04C1CE230040EA6E,
9091E25F04C1CE240040EA6E, 9091E25F04C1CE240040EA6E,
9091E26004C1CE250040EA6E, 9091E26004C1CE250040EA6E,
9091E26104C1CE250040EA6E,
9091E26204C1CE260040EA6E, 9091E26204C1CE260040EA6E,
9091E26304C1CE260040EA6E, 9091E26304C1CE260040EA6E,
9091E26404C1CE270040EA6E, 9091E26404C1CE270040EA6E,
@@ -1359,7 +1339,6 @@
9091E21A04C1CDD90040EA6E, 9091E21A04C1CDD90040EA6E,
9091E21B04C1CDD90040EA6E, 9091E21B04C1CDD90040EA6E,
9091E21C04C1CDDA0040EA6E, 9091E21C04C1CDDA0040EA6E,
9091E21E04C1CDDB0040EA6E,
9091E21F04C1CDDC0040EA6E, 9091E21F04C1CDDC0040EA6E,
9091E22004C1CDDD0040EA6E, 9091E22004C1CDDD0040EA6E,
9091E22104C1CDDD0040EA6E, 9091E22104C1CDDD0040EA6E,
@@ -1411,7 +1390,6 @@
9091E20204C1CDB90040EA6E, 9091E20204C1CDB90040EA6E,
9091E20304C1CDB90040EA6E, 9091E20304C1CDB90040EA6E,
9091E20404C1CDBA0040EA6E, 9091E20404C1CDBA0040EA6E,
9091E20504C1CDBA0040EA6E,
9091E20604C1CDBB0040EA6E, 9091E20604C1CDBB0040EA6E,
9091E20704C1CDBC0040EA6E, 9091E20704C1CDBC0040EA6E,
9091E20804C1CDBE0040EA6E, 9091E20804C1CDBE0040EA6E,
@@ -1512,12 +1490,6 @@
settings = { settings = {
}; };
}; };
9091E17004C1CBF80040EA6E = {
fileRef = 9091E09D04C1C9FA0040EA6E;
isa = PBXBuildFile;
settings = {
};
};
9091E17104C1CBF90040EA6E = { 9091E17104C1CBF90040EA6E = {
fileRef = 9091E09C04C1C9FA0040EA6E; fileRef = 9091E09C04C1C9FA0040EA6E;
isa = PBXBuildFile; isa = PBXBuildFile;
@@ -1716,12 +1688,6 @@
settings = { settings = {
}; };
}; };
9091E19204C1CC100040EA6E = {
fileRef = 9091E0CC04C1CA1D0040EA6E;
isa = PBXBuildFile;
settings = {
};
};
9091E19304C1CC110040EA6E = { 9091E19304C1CC110040EA6E = {
fileRef = 9091E0CD04C1CA1D0040EA6E; fileRef = 9091E0CD04C1CA1D0040EA6E;
isa = PBXBuildFile; isa = PBXBuildFile;
@@ -2400,12 +2366,6 @@
settings = { settings = {
}; };
}; };
9091E20504C1CDBA0040EA6E = {
fileRef = 9091E09D04C1C9FA0040EA6E;
isa = PBXBuildFile;
settings = {
};
};
9091E20604C1CDBB0040EA6E = { 9091E20604C1CDBB0040EA6E = {
fileRef = 9091E09E04C1C9FA0040EA6E; fileRef = 9091E09E04C1C9FA0040EA6E;
isa = PBXBuildFile; isa = PBXBuildFile;
@@ -2544,12 +2504,6 @@
settings = { settings = {
}; };
}; };
9091E21E04C1CDDB0040EA6E = {
fileRef = 9091E0CC04C1CA1D0040EA6E;
isa = PBXBuildFile;
settings = {
};
};
9091E21F04C1CDDC0040EA6E = { 9091E21F04C1CDDC0040EA6E = {
fileRef = 9091E0CD04C1CA1D0040EA6E; fileRef = 9091E0CD04C1CA1D0040EA6E;
isa = PBXBuildFile; isa = PBXBuildFile;
@@ -2946,12 +2900,6 @@
settings = { settings = {
}; };
}; };
9091E26104C1CE250040EA6E = {
fileRef = 9091E09D04C1C9FA0040EA6E;
isa = PBXBuildFile;
settings = {
};
};
9091E26204C1CE260040EA6E = { 9091E26204C1CE260040EA6E = {
fileRef = 9091E09E04C1C9FA0040EA6E; fileRef = 9091E09E04C1C9FA0040EA6E;
isa = PBXBuildFile; isa = PBXBuildFile;
@@ -3090,12 +3038,6 @@
settings = { settings = {
}; };
}; };
9091E27904C1CE360040EA6E = {
fileRef = 9091E0CC04C1CA1D0040EA6E;
isa = PBXBuildFile;
settings = {
};
};
9091E27A04C1CE370040EA6E = { 9091E27A04C1CE370040EA6E = {
fileRef = 9091E0CD04C1CA1D0040EA6E; fileRef = 9091E0CD04C1CA1D0040EA6E;
isa = PBXBuildFile; isa = PBXBuildFile;

View File

@@ -1,7 +1,7 @@
#!/usr/bin/sh #!/usr/bin/sh
# you should have "doxygen" in your path # you should have "doxygen" in your path
# http://www.doxygen.org/ # http://www.doxygen.org/
echo make Documentation echo make Documentation
doxygen Doxyfile > Doxygen.log.txt 2> Doxygen.err.txt doxygen Doxyfile > Doxygen.log.txt 2> Doxygen.err.txt

View File

@@ -43,7 +43,7 @@ FLAGS += -DEBML_DLL
endif endif
endif endif
CWD = $(shell pwd) CWD = $(shell pwd)
INCS = -I$(CWD)/../.. -I$(EBML_DIR) INCS = -I"$(CWD)/../.." -I$(EBML_DIR)
LDFLAGS = -L. -L$(EBML_DIR)/make/mingw32 LDFLAGS = -L. -L$(EBML_DIR)/make/mingw32
COMPILEFLAGS = $(DEBUGFLAGS) $(INCS) $(FLAGS) $(CXXFLAGS) COMPILEFLAGS = $(DEBUGFLAGS) $(INCS) $(FLAGS) $(CXXFLAGS)
TESTS = test6 test8 test9 TESTS = test6 test8 test9

View File

@@ -153,10 +153,6 @@ SOURCE=..\..\..\..\src\KaxTag.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\..\..\src\KaxTagMulti.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxTags.cpp SOURCE=..\..\..\..\src\KaxTags.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
@@ -257,10 +253,6 @@ SOURCE=..\..\..\..\matroska\KaxTag.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\..\..\matroska\KaxTagMulti.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTags.h SOURCE=..\..\..\..\matroska\KaxTags.h
# End Source File # End Source File
# Begin Source File # Begin Source File

View File

@@ -164,9 +164,6 @@
<File <File
RelativePath="..\..\..\..\src\KaxTag.cpp"> RelativePath="..\..\..\..\src\KaxTag.cpp">
</File> </File>
<File
RelativePath="..\..\..\..\src\KaxTagMulti.cpp">
</File>
<File <File
RelativePath="..\..\..\..\src\KaxTags.cpp"> RelativePath="..\..\..\..\src\KaxTags.cpp">
</File> </File>
@@ -241,9 +238,6 @@
<File <File
RelativePath="..\..\..\..\matroska\KaxTag.h"> RelativePath="..\..\..\..\matroska\KaxTag.h">
</File> </File>
<File
RelativePath="..\..\..\..\matroska\KaxTagMulti.h">
</File>
<File <File
RelativePath="..\..\..\..\matroska\KaxTags.h"> RelativePath="..\..\..\..\matroska\KaxTags.h">
</File> </File>

View File

@@ -170,9 +170,6 @@
<File <File
RelativePath="..\..\..\..\src\KaxTag.cpp"> RelativePath="..\..\..\..\src\KaxTag.cpp">
</File> </File>
<File
RelativePath="..\..\..\..\src\KaxTagMulti.cpp">
</File>
<File <File
RelativePath="..\..\..\..\src\KaxTags.cpp"> RelativePath="..\..\..\..\src\KaxTags.cpp">
</File> </File>
@@ -249,9 +246,6 @@
<File <File
RelativePath="..\..\..\..\matroska\KaxTag.h"> RelativePath="..\..\..\..\matroska\KaxTag.h">
</File> </File>
<File
RelativePath="..\..\..\..\matroska\KaxTagMulti.h">
</File>
<File <File
RelativePath="..\..\..\..\matroska\KaxTags.h"> RelativePath="..\..\..\..\matroska\KaxTags.h">
</File> </File>

View File

@@ -156,9 +156,6 @@
<File <File
RelativePath="..\..\..\..\src\KaxTag.cpp"> RelativePath="..\..\..\..\src\KaxTag.cpp">
</File> </File>
<File
RelativePath="..\..\..\..\src\KaxTagMulti.cpp">
</File>
<File <File
RelativePath="..\..\..\..\src\KaxTags.cpp"> RelativePath="..\..\..\..\src\KaxTags.cpp">
</File> </File>
@@ -235,9 +232,6 @@
<File <File
RelativePath="..\..\..\..\matroska\KaxTag.h"> RelativePath="..\..\..\..\matroska\KaxTag.h">
</File> </File>
<File
RelativePath="..\..\..\..\matroska\KaxTagMulti.h">
</File>
<File <File
RelativePath="..\..\..\..\matroska\KaxTags.h"> RelativePath="..\..\..\..\matroska\KaxTags.h">
</File> </File>

View File

@@ -1,163 +1,163 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: FileKax.h,v 1.5 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: FileKax.h,v 1.5 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_FILE_H #ifndef LIBMATROSKA_FILE_H
#define LIBMATROSKA_FILE_H #define LIBMATROSKA_FILE_H
//#include <vector> //#include <vector>
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/IOCallback.h" #include "ebml/IOCallback.h"
//#include "MainHeader.h" //#include "MainHeader.h"
//#include "TrackType.h" //#include "TrackType.h"
//#include "StreamInfo.h" //#include "StreamInfo.h"
//#include "Cluster.h" //#include "Cluster.h"
//#include "CodecHeader.h" //#include "CodecHeader.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
//class Track; //class Track;
//class Frame; //class Frame;
/*! /*!
\class MATROSKA_DLL_API FileMatroska \class MATROSKA_DLL_API FileMatroska
\brief General container of all the parameters and data of an Matroska file \brief General container of all the parameters and data of an Matroska file
\todo Handle the filename and next filename \todo Handle the filename and next filename
\todo Handle the IOCallback selection/type \todo Handle the IOCallback selection/type
*/ */
class MATROSKA_DLL_API FileMatroska { class MATROSKA_DLL_API FileMatroska {
public: public:
FileMatroska(IOCallback & output); FileMatroska(IOCallback & output);
~FileMatroska(); ~FileMatroska();
#ifdef OLD #ifdef OLD
filepos_t RenderHead(const std::string & aEncoderApp); filepos_t RenderHead(const std::string & aEncoderApp);
uint32 ReadHead(); uint32 ReadHead();
uint32 ReadTracks(); uint32 ReadTracks();
uint32 ReadCodec(); uint32 ReadCodec();
void Close(const uint32 aTimeLength); void Close(const uint32 aTimeLength);
inline void type_SetInfo(const std::string & aStr) {myMainHeader.type_SetInfo(aStr);} inline void type_SetInfo(const std::string & aStr) {myMainHeader.type_SetInfo(aStr);}
inline void type_SetAds(const std::string & aStr) {myMainHeader.type_SetAds(aStr);} inline void type_SetAds(const std::string & aStr) {myMainHeader.type_SetAds(aStr);}
inline void type_SetSize(const std::string & aStr) {myMainHeader.type_SetSize(aStr);} inline void type_SetSize(const std::string & aStr) {myMainHeader.type_SetSize(aStr);}
inline void type_SetSize(uint64 aSize) {myMainHeader.type_SetSize(aSize);} inline void type_SetSize(uint64 aSize) {myMainHeader.type_SetSize(aSize);}
inline uint8 GetTrackNumber() const { return myTracks.size(); } inline uint8 GetTrackNumber() const { return myTracks.size(); }
void track_SetName(Track * aTrack, const std::string & aName); void track_SetName(Track * aTrack, const std::string & aName);
void track_SetLaced(Track * aTrack, bool bLaced = true); void track_SetLaced(Track * aTrack, bool bLaced = true);
Track * CreateTrack(const track_type aType); Track * CreateTrack(const track_type aType);
inline Track * GetTrack(const uint8 aTrackNb) const inline Track * GetTrack(const uint8 aTrackNb) const
{ {
if (aTrackNb > myTracks.size()) if (aTrackNb > myTracks.size())
return NULL; return NULL;
else else
return myTracks[aTrackNb-1]; return myTracks[aTrackNb-1];
} }
void Track_GetInfo(const Track * aTrack, TrackInfo & aTrackInfo) const; void Track_GetInfo(const Track * aTrack, TrackInfo & aTrackInfo) const;
void Track_SetInfo_Audio(Track * aTrack, const TrackInfoAudio & aTrackInfo); void Track_SetInfo_Audio(Track * aTrack, const TrackInfoAudio & aTrackInfo);
void Track_GetInfo_Audio(const Track * aTrack, TrackInfoAudio & aTrackInfo) const; void Track_GetInfo_Audio(const Track * aTrack, TrackInfoAudio & aTrackInfo) const;
void Track_SetInfo_Video(Track * aTrack, const TrackInfoVideo & aTrackInfo); void Track_SetInfo_Video(Track * aTrack, const TrackInfoVideo & aTrackInfo);
void Track_GetInfo_Video(const Track * aTrack, TrackInfoVideo & aTrackInfo) const; void Track_GetInfo_Video(const Track * aTrack, TrackInfoVideo & aTrackInfo) const;
void SelectReadingTrack(Track * aTrack, bool select = true); void SelectReadingTrack(Track * aTrack, bool select = true);
/*! /*!
\return wether the frame has been added or not \return wether the frame has been added or not
*/ */
bool AddFrame(Track * aTrack, const uint32 aTimecode, const binary *aFrame, const uint32 aFrameSize, bool AddFrame(Track * aTrack, const uint32 aTimecode, const binary *aFrame, const uint32 aFrameSize,
bool aKeyFrame = true, bool aBFrame = false); bool aKeyFrame = true, bool aBFrame = false);
/*! /*!
\return wether the frame has been read or not \return wether the frame has been read or not
*/ */
bool ReadFrame(Track * & aTrack, uint32 & aTimecode, const binary * & aFrame, uint32 & aFrameSize, bool ReadFrame(Track * & aTrack, uint32 & aTimecode, const binary * & aFrame, uint32 & aFrameSize,
bool & aKeyFrame, bool & aBFrame); bool & aKeyFrame, bool & aBFrame);
/* /*
Render the pending cluster to file Render the pending cluster to file
*/ */
void Flush(); void Flush();
void SetMaxClusterSize(const uint32 value); void SetMaxClusterSize(const uint32 value);
void SetMinClusterSize(const uint32 value) {myMinClusterSize = value;} void SetMinClusterSize(const uint32 value) {myMinClusterSize = value;}
protected: protected:
MainHeader myMainHeader; MainHeader myMainHeader;
std::vector<Track *> myTracks; std::vector<Track *> myTracks;
std::vector<uint8> mySelectedTracks; std::vector<uint8> mySelectedTracks;
// Track *findTrack(Track * aTrack) const; // Track *findTrack(Track * aTrack) const;
Cluster myCurrWriteCluster; /// \todo merge with the write one ? Cluster myCurrWriteCluster; /// \todo merge with the write one ?
uint32 myReadBlockNumber; uint32 myReadBlockNumber;
Cluster myCurrReadCluster; Cluster myCurrReadCluster;
binary * myCurrReadBlock; ///< The buffer containing the current read block binary * myCurrReadBlock; ///< The buffer containing the current read block
uint32 myCurrReadBlockSize; ///< The size of the buffer containing the current read block uint32 myCurrReadBlockSize; ///< The size of the buffer containing the current read block
uint8 myCurrReadBlockTrack; ///< The track number of the current track to read uint8 myCurrReadBlockTrack; ///< The track number of the current track to read
uint32 myMaxClusterSize; uint32 myMaxClusterSize;
uint32 myMinClusterSize; uint32 myMinClusterSize;
StreamInfo myStreamInfo; StreamInfo myStreamInfo;
CodecHeader myCodecHeader; CodecHeader myCodecHeader;
inline bool IsMyTrack(const Track * aTrack) const; inline bool IsMyTrack(const Track * aTrack) const;
inline bool IsReadingTrack(const uint8 aTrackNum) const; inline bool IsReadingTrack(const uint8 aTrackNum) const;
#endif // OLD #endif // OLD
IOCallback & myFile; IOCallback & myFile;
}; };
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
MATROSKA_DLL_API void matroska_init(); MATROSKA_DLL_API void matroska_init();
MATROSKA_DLL_API void matroska_done(); MATROSKA_DLL_API void matroska_done();
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // FILE_KAX_HPP #endif // FILE_KAX_HPP

View File

@@ -1,73 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class MATROSKA_DLL_API description> ** <file/class MATROSKA_DLL_API description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxAttached.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxAttached.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_ATTACHED_H #ifndef LIBMATROSKA_ATTACHED_H
#define LIBMATROSKA_ATTACHED_H #define LIBMATROSKA_ATTACHED_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUnicodeString.h" #endif // LIBMATROSKA_ATTACHED_H
#include "ebml/EbmlString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlUInteger.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxAttached)
};
DECLARE_MKX_UNISTRING(KaxFileDescription)
};
DECLARE_MKX_UNISTRING(KaxFileName)
};
DECLARE_MKX_STRING(KaxMimeType)
};
DECLARE_MKX_BINARY(KaxFileData)
};
DECLARE_MKX_BINARY(KaxFileReferral)
};
DECLARE_MKX_UINTEGER(KaxFileUID)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_ATTACHED_H

View File

@@ -1,51 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxAttachments.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxAttachments.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_ATTACHEMENTS_H #ifndef LIBMATROSKA_ATTACHEMENTS_H
#define LIBMATROSKA_ATTACHEMENTS_H #define LIBMATROSKA_ATTACHEMENTS_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxDefines.h" #endif // LIBMATROSKA_ATTACHEMENTS_H
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxAttachments)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_ATTACHEMENTS_H

View File

@@ -1,383 +1,388 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\todo add a PureBlock class to group functionalities between Block and BlockVirtual \todo add a PureBlock class to group functionalities between Block and BlockVirtual
\version \$Id: KaxBlock.h,v 1.24 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxBlock.h,v 1.24 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
\author Julien Coloos <suiryc @ users.sf.net> \author Julien Coloos <suiryc @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_BLOCK_H #ifndef LIBMATROSKA_BLOCK_H
#define LIBMATROSKA_BLOCK_H #define LIBMATROSKA_BLOCK_H
#include <vector> #include <vector>
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlBinary.h" #include "ebml/EbmlBinary.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
class KaxCluster; class KaxCluster;
class KaxReferenceBlock; class KaxReferenceBlock;
class KaxInternalBlock; class KaxInternalBlock;
class KaxBlockBlob; class KaxBlockBlob;
class MATROSKA_DLL_API DataBuffer { class MATROSKA_DLL_API DataBuffer {
protected: protected:
binary * myBuffer; binary * myBuffer;
uint32 mySize; uint32 mySize;
bool bValidValue; bool bValidValue;
bool (*myFreeBuffer)(const DataBuffer & aBuffer); // method to free the internal buffer bool (*myFreeBuffer)(const DataBuffer & aBuffer); // method to free the internal buffer
bool bInternalBuffer;
public:
DataBuffer(binary * aBuffer, uint32 aSize, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = NULL) public:
:myBuffer(aBuffer) DataBuffer(binary * aBuffer, uint32 aSize, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = NULL, bool _bInternalBuffer = false)
,mySize(aSize) :myBuffer(NULL)
,bValidValue(true) ,mySize(aSize)
,myFreeBuffer(aFreeBuffer) ,bValidValue(true)
{} ,myFreeBuffer(aFreeBuffer)
virtual ~DataBuffer() {} ,bInternalBuffer(_bInternalBuffer)
virtual binary * Buffer() {return myBuffer;} {
virtual uint32 & Size() {return mySize;}; if (bInternalBuffer)
virtual const binary * Buffer() const {return myBuffer;} {
virtual const uint32 Size() const {return mySize;}; myBuffer = new binary[mySize];
bool FreeBuffer(const DataBuffer & aBuffer) { if (myBuffer == NULL)
bool bResult = true; bValidValue = false;
if (myBuffer != NULL && myFreeBuffer != NULL && bValidValue) { else
bResult = myFreeBuffer(aBuffer); memcpy(myBuffer, aBuffer, mySize);
myBuffer = NULL; }
bValidValue = false; else
} myBuffer = aBuffer;
return bResult; }
}
virtual ~DataBuffer() {}
virtual DataBuffer * Clone(); virtual binary * Buffer() {assert(bValidValue); return myBuffer;}
}; virtual uint32 & Size() {return mySize;};
virtual const binary * Buffer() const {assert(bValidValue); return myBuffer;}
class MATROSKA_DLL_API SimpleDataBuffer : public DataBuffer { virtual uint32 Size() const {return mySize;};
public: bool FreeBuffer(const DataBuffer & aBuffer) {
SimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = myFreeBuffer) bool bResult = true;
:DataBuffer(aBuffer + aOffset, aSize, aFreeBuffer) if (myBuffer != NULL && bValidValue) {
,Offset(aOffset) if (myFreeBuffer != NULL)
,BaseBuffer(aBuffer) bResult = myFreeBuffer(aBuffer);
{} if (bInternalBuffer)
virtual ~SimpleDataBuffer() {} delete [] myBuffer;
myBuffer = NULL;
DataBuffer * Clone() {return new SimpleDataBuffer(*this);} mySize = 0;
bValidValue = false;
protected: }
uint32 Offset; return bResult;
binary * BaseBuffer; }
static bool myFreeBuffer(const DataBuffer & aBuffer) virtual DataBuffer * Clone();
{ };
binary *_Buffer = static_cast<const SimpleDataBuffer*>(&aBuffer)->BaseBuffer;
if (_Buffer != NULL) class MATROSKA_DLL_API SimpleDataBuffer : public DataBuffer {
free(_Buffer); public:
return true; SimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset, bool (*aFreeBuffer)(const DataBuffer & aBuffer) = myFreeBuffer)
} :DataBuffer(aBuffer + aOffset, aSize, aFreeBuffer)
,Offset(aOffset)
SimpleDataBuffer(const SimpleDataBuffer & ToClone); ,BaseBuffer(aBuffer)
}; {}
virtual ~SimpleDataBuffer() {}
/*!
\note the data is copied locally, it can be freed right away DataBuffer * Clone() {return new SimpleDataBuffer(*this);}
* /
class MATROSKA_DLL_API NotSoSimpleDataBuffer : public SimpleDataBuffer { protected:
public: uint32 Offset;
NotSoSimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset) binary * BaseBuffer;
:SimpleDataBuffer(new binary[aSize - aOffset], aSize, 0)
{ static bool myFreeBuffer(const DataBuffer & aBuffer)
memcpy(BaseBuffer, aBuffer + aOffset, aSize - aOffset); {
} binary *_Buffer = static_cast<const SimpleDataBuffer*>(&aBuffer)->BaseBuffer;
}; if (_Buffer != NULL)
*/ free(_Buffer);
return true;
DECLARE_MKX_MASTER(KaxBlockGroup) }
public:
~KaxBlockGroup(); SimpleDataBuffer(const SimpleDataBuffer & ToClone);
};
/*!
\brief Addition of a frame without references /*!
*/ \note the data is copied locally, it can be freed right away
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO); * /
/*! class MATROSKA_DLL_API NotSoSimpleDataBuffer : public SimpleDataBuffer {
\brief Addition of a frame with a backward reference (P frame) public:
*/ NotSoSimpleDataBuffer(binary * aBuffer, uint32 aSize, uint32 aOffset)
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO); :SimpleDataBuffer(new binary[aSize - aOffset], aSize, 0)
{
/*! memcpy(BaseBuffer, aBuffer + aOffset, aSize - aOffset);
\brief Addition of a frame with a backward+forward reference (B frame) }
*/ };
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO); */
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockBlob * PastBlock, const KaxBlockBlob * ForwBlock, LacingType lacing = LACING_AUTO);
DECLARE_MKX_MASTER(KaxBlockGroup)
void SetParent(KaxCluster & aParentCluster); public:
~KaxBlockGroup();
void SetParentTrack(const KaxTrackEntry & aParentTrack) {
ParentTrack = &aParentTrack; /*!
} \brief Addition of a frame without references
*/
/*! bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO);
\brief Set the duration of the contained frame(s) (for the total number of frames) /*!
*/ \brief Addition of a frame with a backward reference (P frame)
void SetBlockDuration(uint64 TimeLength); */
bool GetBlockDuration(uint64 &TheTimecode) const; bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO);
/*! /*!
\return the global timecode of this Block (not just the delta to the Cluster) \brief Addition of a frame with a backward+forward reference (B frame)
*/ */
uint64 GlobalTimecode() const; bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO);
uint64 GlobalTimecodeScale() const { bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, const KaxBlockBlob * PastBlock, const KaxBlockBlob * ForwBlock, LacingType lacing = LACING_AUTO);
assert(ParentTrack != NULL);
return ParentTrack->GlobalTimecodeScale(); void SetParent(KaxCluster & aParentCluster);
}
void SetParentTrack(const KaxTrackEntry & aParentTrack) {
uint16 TrackNumber() const; ParentTrack = &aParentTrack;
}
uint64 ClusterPosition() const;
/*!
/*! \brief Set the duration of the contained frame(s) (for the total number of frames)
\return the number of references to other frames */
*/ void SetBlockDuration(uint64 TimeLength);
unsigned int ReferenceCount() const; bool GetBlockDuration(uint64 &TheTimecode) const;
const KaxReferenceBlock & Reference(unsigned int Index) const;
/*!
/*! \return the global timecode of this Block (not just the delta to the Cluster)
\brief release all the frames of all Blocks */
*/ uint64 GlobalTimecode() const;
void ReleaseFrames(); uint64 GlobalTimecodeScale() const {
assert(ParentTrack != NULL);
operator KaxInternalBlock &(); return ParentTrack->GlobalTimecodeScale();
}
const KaxCluster *GetParentCluster() const { return ParentCluster; }
uint16 TrackNumber() const;
protected:
KaxCluster * ParentCluster; uint64 ClusterPosition() const;
const KaxTrackEntry * ParentTrack;
}; /*!
\return the number of references to other frames
class KaxInternalBlock : public EbmlBinary { */
public: unsigned int ReferenceCount() const;
KaxInternalBlock(EBML_DEF_CONS EBML_DEF_SEP bool bSimple EBML_DEF_SEP EBML_EXTRA_PARAM) :EBML_DEF_BINARY_INIT EBML_DEF_SEP bLocalTimecodeUsed(false), mLacing(LACING_AUTO), mInvisible(false) const KaxReferenceBlock & Reference(unsigned int Index) const;
,ParentCluster(NULL), bIsSimple(bSimple), bIsKeyframe(true), bIsDiscardable(false)
{} /*!
KaxInternalBlock(const KaxInternalBlock & ElementToClone); \brief release all the frames of all Blocks
~KaxInternalBlock(); */
virtual bool ValidateSize() const; void ReleaseFrames();
uint16 TrackNum() const {return TrackNumber;} operator KaxInternalBlock &();
/*!
\todo !!!! This method needs to be changes ! const KaxCluster *GetParentCluster() const { return ParentCluster; }
*/
uint64 GlobalTimecode() const {return Timecode;} protected:
KaxCluster * ParentCluster;
/*! const KaxTrackEntry * ParentTrack;
\note override this function to generate the Data/Size on the fly, unlike the usual binary elements };
*/
filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); class KaxInternalBlock : public EbmlBinary {
filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA); public:
KaxInternalBlock(EBML_DEF_CONS EBML_DEF_SEP bool bSimple EBML_DEF_SEP EBML_EXTRA_PARAM) :EBML_DEF_BINARY_INIT EBML_DEF_SEP bLocalTimecodeUsed(false), mLacing(LACING_AUTO), mInvisible(false)
/*! ,ParentCluster(NULL), bIsSimple(bSimple), bIsKeyframe(true), bIsDiscardable(false)
\brief Only read the head of the Block (not internal data) {}
\note convenient when you are parsing the file quickly KaxInternalBlock(const KaxInternalBlock & ElementToClone);
*/ ~KaxInternalBlock();
uint64 ReadInternalHead(IOCallback & input); virtual bool ValidateSize() const;
unsigned int NumberFrames() const { return SizeList.size();} uint16 TrackNum() const {return TrackNumber;}
DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];} /*!
\todo !!!! This method needs to be changes !
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false); */
uint64 GlobalTimecode() const {return Timecode;}
/*!
\brief release all the frames of all Blocks /*!
*/ \note override this function to generate the Data/Size on the fly, unlike the usual binary elements
void ReleaseFrames(); */
filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
void SetParent(KaxCluster & aParentCluster); filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);
/*! /*!
\return Returns the lacing type that produces the smallest footprint. \brief Only read the head of the Block (not internal data)
*/ \note convenient when you are parsing the file quickly
LacingType GetBestLacingType() const; */
uint64 ReadInternalHead(IOCallback & input);
/*!
\param FrameNumber 0 for the first frame unsigned int NumberFrames() const { return SizeList.size();}
\return the position in the stream for a given frame DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];}
\note return -1 if the position doesn't exist
*/ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false);
int64 GetDataPosition(size_t FrameNumber = 0);
/*!
/*! \brief release all the frames of all Blocks
\param FrameNumber 0 for the first frame */
\return the size of a given frame void ReleaseFrames();
\note return -1 if the position doesn't exist
*/ void SetParent(KaxCluster & aParentCluster);
int64 GetFrameSize(size_t FrameNumber = 0);
/*!
bool IsInvisible() const { return mInvisible; } \return Returns the lacing type that produces the smallest footprint.
*/
uint64 ClusterPosition() const; LacingType GetBestLacingType() const;
protected: /*!
std::vector<DataBuffer *> myBuffers; \param FrameNumber 0 for the first frame
std::vector<int32> SizeList; \return the position in the stream for a given frame
uint64 Timecode; // temporary timecode of the first frame, non scaled \note return -1 if the position doesn't exist
int16 LocalTimecode; */
bool bLocalTimecodeUsed; int64 GetDataPosition(size_t FrameNumber = 0);
uint16 TrackNumber;
LacingType mLacing; /*!
bool mInvisible; \param FrameNumber 0 for the first frame
uint64 FirstFrameLocation; \return the size of a given frame
\note return -1 if the position doesn't exist
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false); */
int64 GetFrameSize(size_t FrameNumber = 0);
KaxCluster * ParentCluster;
bool bIsSimple; bool IsInvisible() const { return mInvisible; }
bool bIsKeyframe;
bool bIsDiscardable; uint64 ClusterPosition() const;
};
protected:
DECLARE_MKX_CONTEXT(KaxBlock); std::vector<DataBuffer *> myBuffers;
class MATROSKA_DLL_API KaxBlock : public KaxInternalBlock { std::vector<int32> SizeList;
public: uint64 Timecode; // temporary timecode of the first frame, non scaled
KaxBlock(EBML_EXTRA_PARAM) :KaxInternalBlock(EBML_DEF_BINARY_CTX(KaxBlock)EBML_DEF_SEP false EBML_DEF_SEP EBML_EXTRA_CALL) {} int16 LocalTimecode;
EBML_CONCRETE_CLASS(KaxBlock) bool bLocalTimecodeUsed;
}; uint16 TrackNumber;
LacingType mLacing;
#if MATROSKA_VERSION >= 2 bool mInvisible;
DECLARE_MKX_CONTEXT(KaxSimpleBlock); uint64 FirstFrameLocation;
class MATROSKA_DLL_API KaxSimpleBlock : public KaxInternalBlock {
public: filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false);
KaxSimpleBlock(EBML_EXTRA_PARAM) :KaxInternalBlock(EBML_DEF_BINARY_CTX(KaxSimpleBlock)EBML_DEF_SEP true EBML_DEF_SEP EBML_EXTRA_CALL) {}
KaxCluster * ParentCluster;
void SetKeyframe(bool b_keyframe) { bIsKeyframe = b_keyframe; } bool bIsSimple;
void SetDiscardable(bool b_discard) { bIsDiscardable = b_discard; } bool bIsKeyframe;
bool bIsDiscardable;
bool IsKeyframe() const { return bIsKeyframe; } };
bool IsDiscardable() const { return bIsDiscardable; }
DECLARE_MKX_CONTEXT(KaxBlock);
operator KaxInternalBlock &() { return *this; } class MATROSKA_DLL_API KaxBlock : public KaxInternalBlock {
public:
EBML_CONCRETE_CLASS(KaxSimpleBlock) KaxBlock(EBML_EXTRA_PARAM) :KaxInternalBlock(EBML_DEF_BINARY_CTX(KaxBlock)EBML_DEF_SEP false EBML_DEF_SEP EBML_EXTRA_CALL) {}
}; EBML_CONCRETE_CLASS(KaxBlock)
#endif // MATROSKA_VERSION };
class MATROSKA_DLL_API KaxBlockBlob { #if MATROSKA_VERSION >= 2
public: DECLARE_MKX_CONTEXT(KaxSimpleBlock);
KaxBlockBlob(BlockBlobType sblock_mode) :ParentCluster(NULL), SimpleBlockMode(sblock_mode) { class MATROSKA_DLL_API KaxSimpleBlock : public KaxInternalBlock {
bUseSimpleBlock = (sblock_mode != BLOCK_BLOB_NO_SIMPLE); public:
Block.group = NULL; KaxSimpleBlock(EBML_EXTRA_PARAM) :KaxInternalBlock(EBML_DEF_BINARY_CTX(KaxSimpleBlock)EBML_DEF_SEP true EBML_DEF_SEP EBML_EXTRA_CALL) {}
}
void SetKeyframe(bool b_keyframe) { bIsKeyframe = b_keyframe; }
~KaxBlockBlob() { void SetDiscardable(bool b_discard) { bIsDiscardable = b_discard; }
#if MATROSKA_VERSION >= 2
if (bUseSimpleBlock) bool IsKeyframe() const { return bIsKeyframe; }
delete Block.simpleblock; bool IsDiscardable() const { return bIsDiscardable; }
else
#endif // MATROSKA_VERSION void SetParent(KaxCluster & aParentCluster);
delete Block.group;
} EBML_CONCRETE_CLASS(KaxSimpleBlock)
};
operator KaxBlockGroup &(); #endif // MATROSKA_VERSION
operator const KaxBlockGroup &() const;
#if MATROSKA_VERSION >= 2 /// Placeholder class for either a BlockGroup or a SimpleBlock
operator KaxSimpleBlock &(); class MATROSKA_DLL_API KaxBlockBlob {
#endif public:
operator KaxInternalBlock &(); KaxBlockBlob(BlockBlobType sblock_mode) :ParentCluster(NULL), SimpleBlockMode(sblock_mode) {
operator const KaxInternalBlock &() const; bUseSimpleBlock = (sblock_mode != BLOCK_BLOB_NO_SIMPLE);
Block.group = NULL;
void SetBlockGroup( KaxBlockGroup &BlockRef ); }
void SetBlockDuration(uint64 TimeLength); ~KaxBlockBlob() {
#if MATROSKA_VERSION >= 2
void SetParent(KaxCluster & aParentCluster); if (bUseSimpleBlock)
bool AddFrameAuto(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, const KaxBlockBlob * PastBlock = NULL, const KaxBlockBlob * ForwBlock = NULL); delete Block.simpleblock;
else
bool IsSimpleBlock() const {return bUseSimpleBlock;} #endif // MATROSKA_VERSION
delete Block.group;
bool ReplaceSimpleByGroup(); }
protected:
KaxCluster * ParentCluster; operator KaxBlockGroup &();
union { operator const KaxBlockGroup &() const;
KaxBlockGroup *group; #if MATROSKA_VERSION >= 2
#if MATROSKA_VERSION >= 2 operator KaxSimpleBlock &();
KaxSimpleBlock *simpleblock; #endif
#endif // MATROSKA_VERSION operator KaxInternalBlock &();
} Block; operator const KaxInternalBlock &() const;
bool bUseSimpleBlock;
BlockBlobType SimpleBlockMode; void SetBlockGroup( KaxBlockGroup &BlockRef );
};
void SetBlockDuration(uint64 TimeLength);
DECLARE_MKX_UINTEGER(KaxBlockDuration)
}; void SetParent(KaxCluster & aParentCluster);
bool AddFrameAuto(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, const KaxBlockBlob * PastBlock = NULL, const KaxBlockBlob * ForwBlock = NULL);
#if MATROSKA_VERSION >= 2
DECLARE_MKX_BINARY_CONS(KaxBlockVirtual) bool IsSimpleBlock() const {return bUseSimpleBlock;}
public:
~KaxBlockVirtual(); bool ReplaceSimpleByGroup();
protected:
/*! KaxCluster * ParentCluster;
\note override this function to generate the Data/Size on the fly, unlike the usual binary elements union {
*/ KaxBlockGroup *group;
filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); #if MATROSKA_VERSION >= 2
KaxSimpleBlock *simpleblock;
void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;} #endif // MATROSKA_VERSION
} Block;
protected: bool bUseSimpleBlock;
uint64 Timecode; // temporary timecode of the first frame if there are more than one BlockBlobType SimpleBlockMode;
uint16 TrackNumber; };
binary DataBlock[5];
#if MATROSKA_VERSION >= 2
const KaxCluster * ParentCluster; DECLARE_MKX_BINARY_CONS(KaxBlockVirtual)
}; public:
#endif // MATROSKA_VERSION ~KaxBlockVirtual();
DECLARE_MKX_BINARY(KaxBlockAdditional) /*!
}; \note override this function to generate the Data/Size on the fly, unlike the usual binary elements
*/
DECLARE_MKX_MASTER(KaxBlockAdditions) filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
};
void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;}
DECLARE_MKX_MASTER(KaxBlockMore)
}; filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
DECLARE_MKX_UINTEGER(KaxBlockAddID) filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);
};
protected:
DECLARE_MKX_BINARY(KaxCodecState) uint64 Timecode; // temporary timecode of the first frame if there are more than one
}; uint16 TrackNumber;
binary DataBlock[5];
END_LIBMATROSKA_NAMESPACE
const KaxCluster * ParentCluster;
#endif // LIBMATROSKA_BLOCK_H };
#endif // MATROSKA_VERSION
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_BLOCK_H

View File

@@ -1,103 +1,74 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxBlockData.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxBlockData.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_BLOCK_ADDITIONAL_H #ifndef LIBMATROSKA_BLOCK_ADDITIONAL_H
#define LIBMATROSKA_BLOCK_ADDITIONAL_H #define LIBMATROSKA_BLOCK_ADDITIONAL_H
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h" #include "ebml/EbmlUInteger.h"
#include "ebml/EbmlSInteger.h" #include "ebml/EbmlSInteger.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxBlock.h"
using namespace LIBEBML_NAMESPACE;
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
START_LIBMATROSKA_NAMESPACE
class KaxReferenceBlock;
class KaxBlockGroup; /*!
class KaxBlockBlob; \brief element used for B frame-likes
*/
DECLARE_MKX_UINTEGER(KaxReferencePriority) DECLARE_MKX_SINTEGER_CONS(KaxReferenceBlock)
}; public:
~KaxReferenceBlock();
/*! /*!
\brief element used for B frame-likes \brief override this method to compute the timecode value
*/ */
DECLARE_MKX_SINTEGER_CONS(KaxReferenceBlock) virtual filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
public:
/*! const KaxBlockBlob & RefBlock() const;
\brief override this method to compute the timecode value void SetReferencedBlock(const KaxBlockBlob * aRefdBlock);
*/ void SetReferencedBlock(const KaxBlockGroup & aRefdBlock);
virtual filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); void SetParentBlock(const KaxBlockGroup & aParentBlock) {ParentBlock = &aParentBlock;}
const KaxBlockBlob & RefBlock() const; protected:
void SetReferencedBlock(const KaxBlockBlob * aRefdBlock); const KaxBlockBlob * RefdBlock;
void SetReferencedBlock(const KaxBlockGroup & aRefdBlock); const KaxBlockGroup * ParentBlock;
void SetParentBlock(const KaxBlockGroup & aParentBlock) {ParentBlock = &aParentBlock;} void SetReferencedTimecode(int64 refTimecode) {*static_cast<EbmlSInteger*>(this) = refTimecode; bTimecodeSet = true;};
bool bTimecodeSet;
protected: bool bOurBlob;
const KaxBlockBlob * RefdBlock; void FreeBlob();
const KaxBlockGroup * ParentBlock; };
void SetReferencedTimecode(int64 refTimecode) {*static_cast<EbmlSInteger*>(this) = refTimecode; bTimecodeSet = true;};
bool bTimecodeSet; END_LIBMATROSKA_NAMESPACE
};
#endif // LIBMATROSKA_BLOCK_ADDITIONAL_H
#if MATROSKA_VERSION >= 2
DECLARE_MKX_SINTEGER(KaxReferenceVirtual)
};
#endif // MATROSKA_VERSION
DECLARE_MKX_MASTER(KaxTimeSlice)
};
DECLARE_MKX_MASTER(KaxSlices)
};
DECLARE_MKX_UINTEGER(KaxSliceLaceNumber)
};
DECLARE_MKX_UINTEGER(KaxSliceFrameNumber)
};
DECLARE_MKX_UINTEGER(KaxSliceBlockAddID)
};
DECLARE_MKX_UINTEGER(KaxSliceDelay)
};
DECLARE_MKX_UINTEGER(KaxSliceDuration)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_BLOCK_ADDITIONAL_H

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -35,103 +35,6 @@
#ifndef LIBMATROSKA_CHAPTERS_H #ifndef LIBMATROSKA_CHAPTERS_H
#define LIBMATROSKA_CHAPTERS_H #define LIBMATROSKA_CHAPTERS_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlBinary.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxChapters)
};
DECLARE_MKX_MASTER(KaxEditionEntry)
};
DECLARE_MKX_UINTEGER(KaxEditionUID)
};
DECLARE_MKX_UINTEGER(KaxEditionFlagHidden)
};
DECLARE_MKX_UINTEGER(KaxEditionFlagDefault)
};
DECLARE_MKX_UINTEGER(KaxEditionFlagOrdered)
};
DECLARE_MKX_MASTER(KaxChapterAtom)
};
DECLARE_MKX_UINTEGER(KaxChapterUID)
};
DECLARE_MKX_UINTEGER(KaxChapterTimeStart)
};
DECLARE_MKX_UINTEGER(KaxChapterTimeEnd)
};
DECLARE_MKX_UINTEGER(KaxChapterFlagHidden)
};
DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled)
};
DECLARE_MKX_BINARY(KaxChapterSegmentUID)
public:
virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
};
DECLARE_MKX_BINARY(KaxChapterSegmentEditionUID)
public:
virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
};
DECLARE_MKX_UINTEGER(KaxChapterPhysicalEquiv)
};
DECLARE_MKX_MASTER(KaxChapterTrack)
};
DECLARE_MKX_UINTEGER(KaxChapterTrackNumber)
};
DECLARE_MKX_MASTER(KaxChapterDisplay)
};
DECLARE_MKX_UNISTRING(KaxChapterString)
};
DECLARE_MKX_STRING(KaxChapterLanguage)
};
DECLARE_MKX_STRING(KaxChapterCountry)
};
DECLARE_MKX_MASTER(KaxChapterProcess)
};
DECLARE_MKX_UINTEGER(KaxChapterProcessCodecID)
};
DECLARE_MKX_BINARY(KaxChapterProcessPrivate)
};
DECLARE_MKX_MASTER(KaxChapterProcessCommand)
};
DECLARE_MKX_UINTEGER(KaxChapterProcessTime)
};
DECLARE_MKX_BINARY(KaxChapterProcessData)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CHAPTERS_H #endif // LIBMATROSKA_CHAPTERS_H

View File

@@ -1,160 +1,159 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxCluster.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxCluster.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
\author Julien Coloos <suiryc @ users.sf.net> \author Julien Coloos <suiryc @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CLUSTER_H #ifndef LIBMATROSKA_CLUSTER_H
#define LIBMATROSKA_CLUSTER_H #define LIBMATROSKA_CLUSTER_H
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
#include "matroska/KaxBlock.h" #include "matroska/KaxBlock.h"
#include "matroska/KaxCues.h" #include "matroska/KaxCues.h"
#include "matroska/KaxClusterData.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
START_LIBMATROSKA_NAMESPACE
class KaxSegment;
class KaxSegment;
DECLARE_MKX_MASTER_CONS(KaxCluster)
DECLARE_MKX_MASTER_CONS(KaxCluster) public:
public: /*!
/*! \brief Addition of a frame without references
\brief Addition of a frame without references
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment */
*/ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing = LACING_AUTO);
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing = LACING_AUTO); /*!
/*! \brief Addition of a frame with a backward reference (P frame)
\brief Addition of a frame with a backward reference (P frame) \param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
*/ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO);
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing = LACING_AUTO);
/*!
/*! \brief Addition of a frame with a backward+forward reference (B frame)
\brief Addition of a frame with a backward+forward reference (B frame) \param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
\param the timecode is expressed in nanoseconds, relative to the beggining of the Segment
*/
*/ bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO);
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing = LACING_AUTO);
/*!
/*! \brief Render the data to the stream and retrieve the position of BlockGroups for later cue entries
\brief Render the data to the stream and retrieve the position of BlockGroups for later cue entries */
*/ filepos_t Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault = false);
filepos_t Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault = false);
/*!
/*! \return the global timecode of this Cluster
\return the global timecode of this Cluster */
*/ uint64 GlobalTimecode() const;
uint64 GlobalTimecode() const;
KaxBlockGroup & GetNewBlock();
KaxBlockGroup & GetNewBlock();
/*!
/*! \brief release all the frames of all Blocks
\brief release all the frames of all Blocks \note this is a convenience to be able to keep Clusters+Blocks in memory (for future reference) withouht being a memory hog
\note this is a convenience to be able to keep Clusters+Blocks in memory (for future reference) withouht being a memory hog */
*/ void ReleaseFrames();
void ReleaseFrames();
/*!
/*! \brief return the position offset compared to the beggining of the Segment
\brief return the position offset compared to the beggining of the Segment */
*/ uint64 GetPosition() const;
uint64 GetPosition() const;
void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;}
void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;}
void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) {
void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) { bPreviousTimecodeIsSet = true;
bPreviousTimecodeIsSet = true; PreviousTimecode = aPreviousTimecode;
PreviousTimecode = aPreviousTimecode; SetGlobalTimecodeScale(aTimecodeScale);
SetGlobalTimecodeScale(aTimecodeScale); }
}
/*!
/*! \note dirty hack to get the mandatory data back after reading
\note dirty hack to get the mandatory data back after reading \todo there should be a better way to get mandatory data
\todo there should be a better way to get mandatory data */
*/ void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) {
void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) { SetGlobalTimecodeScale(aTimecodeScale);
SetGlobalTimecodeScale(aTimecodeScale); MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale;
MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale; bFirstFrameInside = bPreviousTimecodeIsSet = true;
bFirstFrameInside = bPreviousTimecodeIsSet = true; }
}
int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const;
int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const;
uint64 GetBlockGlobalTimecode(int16 LocalTimecode);
uint64 GetBlockGlobalTimecode(int16 LocalTimecode);
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) { TimecodeScale = aGlobalTimecodeScale;
TimecodeScale = aGlobalTimecodeScale; bTimecodeScaleIsSet = true;
bTimecodeScaleIsSet = true; }
} uint64 GlobalTimecodeScale() const {
uint64 GlobalTimecodeScale() const { assert(bTimecodeScaleIsSet);
assert(bTimecodeScaleIsSet); return TimecodeScale;
return TimecodeScale; }
}
bool SetSilentTrackUsed()
bool SetSilentTrackUsed() {
{ bSilentTracksUsed = true;
bSilentTracksUsed = true; return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL;
return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL; }
}
bool AddBlockBlob(KaxBlockBlob * NewBlob);
bool AddBlockBlob(KaxBlockBlob * NewBlob);
const KaxSegment *GetParentSegment() const { return ParentSegment; }
const KaxSegment *GetParentSegment() const { return ParentSegment; }
protected:
protected: KaxBlockBlob * currentNewBlob;
KaxBlockBlob * currentNewBlob; std::vector<KaxBlockBlob*> Blobs;
std::vector<KaxBlockBlob*> Blobs; KaxBlockGroup * currentNewBlock;
KaxBlockGroup * currentNewBlock; const KaxSegment * ParentSegment;
const KaxSegment * ParentSegment;
uint64 MinTimecode, MaxTimecode, PreviousTimecode;
uint64 MinTimecode, MaxTimecode, PreviousTimecode; int64 TimecodeScale;
int64 TimecodeScale;
bool bFirstFrameInside; // used to speed research
bool bFirstFrameInside; // used to speed research bool bPreviousTimecodeIsSet;
bool bPreviousTimecodeIsSet; bool bTimecodeScaleIsSet;
bool bTimecodeScaleIsSet; bool bSilentTracksUsed;
bool bSilentTracksUsed;
/*!
/*! \note method used internally
\note method used internally */
*/ bool AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing);
bool AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing); };
};
END_LIBMATROSKA_NAMESPACE
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CLUSTER_H
#endif // LIBMATROSKA_CLUSTER_H

View File

@@ -1,64 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class MATROSKA_DLL_API description> ** <file/class MATROSKA_DLL_API description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxClusterData.h,v 1.9 2004/04/21 19:50:10 mosu Exp $ \version \$Id: KaxClusterData.h,v 1.9 2004/04/21 19:50:10 mosu Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CLUSTER_DATA_H #ifndef LIBMATROSKA_CLUSTER_DATA_H
#define LIBMATROSKA_CLUSTER_DATA_H #define LIBMATROSKA_CLUSTER_DATA_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h" #endif // LIBMATROSKA_CLUSTER_DATA_H
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_UINTEGER(KaxClusterTimecode)
};
DECLARE_MKX_MASTER(KaxClusterSilentTracks)
};
DECLARE_MKX_UINTEGER(KaxClusterSilentTrackNumber)
};
DECLARE_MKX_UINTEGER(KaxClusterPosition)
};
DECLARE_MKX_UINTEGER(KaxClusterPrevSize)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CLUSTER_DATA_H

View File

@@ -1,70 +1,70 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxConfig.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxConfig.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
\author Moritz Bunkus <moritz @ bunkus.org> \author Moritz Bunkus <moritz @ bunkus.org>
*/ */
#ifndef LIBMATROSKA_CONFIG_H #ifndef LIBMATROSKA_CONFIG_H
#define LIBMATROSKA_CONFIG_H #define LIBMATROSKA_CONFIG_H
#define LIBMATROSKA_NAMESPACE libmatroska #define LIBMATROSKA_NAMESPACE libmatroska
#if defined(NO_NAMESPACE) // for older GCC #if defined(NO_NAMESPACE) // for older GCC
# define START_LIBMATROSKA_NAMESPACE # define START_LIBMATROSKA_NAMESPACE
# define END_LIBMATROSKA_NAMESPACE # define END_LIBMATROSKA_NAMESPACE
#else // NO_NAMESPACE #else // NO_NAMESPACE
# define START_LIBMATROSKA_NAMESPACE namespace LIBMATROSKA_NAMESPACE { # define START_LIBMATROSKA_NAMESPACE namespace LIBMATROSKA_NAMESPACE {
# define END_LIBMATROSKA_NAMESPACE }; # define END_LIBMATROSKA_NAMESPACE };
#endif // NO_NAMESPACE #endif // NO_NAMESPACE
// There are special implementations for certain platforms. For example on Windows // There are special implementations for certain platforms. For example on Windows
// we use the Win32 file API. here we set the appropriate macros. // we use the Win32 file API. here we set the appropriate macros.
#if defined(_WIN32)||defined(WIN32) #if defined(_WIN32)||defined(WIN32)
# if defined(MATROSKA_DLL) # if defined(MATROSKA_DLL)
# if defined(MATROSKA_DLL_EXPORT) # if defined(MATROSKA_DLL_EXPORT)
# define MATROSKA_DLL_API __declspec(dllexport) # define MATROSKA_DLL_API __declspec(dllexport)
# else // MATROSKA_DLL_EXPORT # else // MATROSKA_DLL_EXPORT
# define MATROSKA_DLL_API __declspec(dllimport) # define MATROSKA_DLL_API __declspec(dllimport)
# endif // MATROSKA_DLL_EXPORT # endif // MATROSKA_DLL_EXPORT
# else // MATROSKA_DLL # else // MATROSKA_DLL
# define MATROSKA_DLL_API # define MATROSKA_DLL_API
# endif // MATROSKA_DLL # endif // MATROSKA_DLL
#else #else
# define MATROSKA_DLL_API # define MATROSKA_DLL_API
#endif #endif
#if !defined(MATROSKA_VERSION) #if !defined(MATROSKA_VERSION)
#define MATROSKA_VERSION 2 #define MATROSKA_VERSION 2
#endif // MATROSKA_VERSION #endif // MATROSKA_VERSION
#endif // LIBMATROSKA_CONFIG_H #endif // LIBMATROSKA_CONFIG_H

View File

@@ -1,95 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxContentEncoding.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxContentEncoding.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Moritz Bunkus <moritz @ bunkus.org> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CONTENT_ENCODING_H #ifndef LIBMATROSKA_CONTENT_ENCODING_H
#define LIBMATROSKA_CONTENT_ENCODING_H #define LIBMATROSKA_CONTENT_ENCODING_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h" #endif // LIBMATROSKA_CONTENT_ENCODING_H
#include "ebml/EbmlBinary.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxContentEncodings)
};
DECLARE_MKX_MASTER(KaxContentEncoding)
};
DECLARE_MKX_UINTEGER(KaxContentEncodingOrder)
};
DECLARE_MKX_UINTEGER(KaxContentEncodingScope)
};
DECLARE_MKX_UINTEGER(KaxContentEncodingType)
};
DECLARE_MKX_MASTER(KaxContentCompression)
};
DECLARE_MKX_UINTEGER(KaxContentCompAlgo)
};
DECLARE_MKX_BINARY(KaxContentCompSettings)
};
DECLARE_MKX_MASTER(KaxContentEncryption)
};
DECLARE_MKX_UINTEGER(KaxContentEncAlgo)
};
DECLARE_MKX_BINARY(KaxContentEncKeyID)
};
DECLARE_MKX_BINARY(KaxContentSignature)
};
DECLARE_MKX_BINARY(KaxContentSigKeyID)
};
DECLARE_MKX_UINTEGER(KaxContentSigAlgo)
};
DECLARE_MKX_UINTEGER(KaxContentSigHashAlgo)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CONTENT_ENCODING_H

View File

@@ -1,103 +1,103 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxContexts.h,v 1.6 2004/04/14 23:26:17 robux4 Exp $ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CONTEXTS_H #ifndef LIBMATROSKA_CONTEXTS_H
#define LIBMATROSKA_CONTEXTS_H #define LIBMATROSKA_CONTEXTS_H
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlElement.h" #include "ebml/EbmlElement.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
extern const EbmlSemanticContext MATROSKA_DLL_API KaxMatroska_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxMatroska_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxSegment_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxSegment_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttachments_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttachments_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttached_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxAttached_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileDescription_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileDescription_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileName_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxMimeType_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxMimeType_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileData_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxFileData_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxChapters_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxChapters_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCluster_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCluster_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTags_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTags_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTag_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTag_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxBlockGroup_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxBlockGroup_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferencePriority_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferencePriority_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceBlock_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceBlock_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceVirtual_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxReferenceVirtual_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCues_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCues_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxInfo_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxInfo_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxSeekHead_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxSeekHead_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTracks_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTracks_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackEntry_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackEntry_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackNumber_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackNumber_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackType_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackType_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagEnabled_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagEnabled_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagDefault_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagDefault_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagLacing_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackFlagLacing_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackName_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackLanguage_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackLanguage_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecID_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecID_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecPrivate_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecPrivate_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecName_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecName_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecSettings_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecSettings_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecInfoURL_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecInfoURL_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDownloadURL_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDownloadURL_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDecodeAll_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxCodecDecodeAll_Context;
extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackOverlay_Context; extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackOverlay_Context;
#define Context_KaxMatroska KaxMatroska_Context #define Context_KaxMatroska KaxMatroska_Context
#define Context_KaxSegment KaxSegment_Context #define Context_KaxSegment KaxSegment_Context
#define Context_KaxTrackEntry KaxTrackEntry_Context #define Context_KaxTrackEntry KaxTrackEntry_Context
#define Context_KaxTracks KaxTracks_Context #define Context_KaxTracks KaxTracks_Context
#define Context_KaxCluster KaxCluster_Context #define Context_KaxCluster KaxCluster_Context
#define Context_KaxBlockGroup KaxBlockGroup_Context #define Context_KaxBlockGroup KaxBlockGroup_Context
#define Context_KaxInfo KaxInfo_Context #define Context_KaxInfo KaxInfo_Context
#define Context_KaxAttached KaxAttached_Context #define Context_KaxAttached KaxAttached_Context
#define Context_KaxAttachments KaxAttachments_Context #define Context_KaxAttachments KaxAttachments_Context
#define Context_KaxChapters KaxChapters_Context #define Context_KaxChapters KaxChapters_Context
#define Context_KaxCues KaxCues_Context #define Context_KaxCues KaxCues_Context
#define Context_KaxTags KaxTags_Context #define Context_KaxTags KaxTags_Context
#define Context_KaxSeekHead KaxSeekHead_Context #define Context_KaxSeekHead KaxSeekHead_Context
#define Context_KaxTag KaxTag_Context #define Context_KaxTag KaxTag_Context
#define Context_KaxTagCommercial KaxTagCommercial_Context #define Context_KaxTagCommercial KaxTagCommercial_Context
extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxGlobal_Context(); extern MATROSKA_DLL_API const EbmlSemanticContext & GetKaxGlobal_Context();
//extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxTagsGlobal_Context(); //extern MATROSKA_DLL_API const EbmlSemanticContext & GetKaxTagsGlobal_Context();
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CONTEXTS_H #endif // LIBMATROSKA_CONTEXTS_H

View File

@@ -1,91 +1,91 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxCues.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxCues.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CUES_H #ifndef LIBMATROSKA_CUES_H
#define LIBMATROSKA_CUES_H #define LIBMATROSKA_CUES_H
#include <vector> #include <vector>
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "matroska/KaxBlock.h" #include "matroska/KaxBlock.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
class KaxCuePoint; class KaxCuePoint;
DECLARE_MKX_MASTER(KaxCues) DECLARE_MKX_MASTER(KaxCues)
public: public:
~KaxCues(); ~KaxCues();
bool AddBlockGroup(const KaxBlockGroup & BlockReference); //bool AddBlockGroup(const KaxBlockGroup & BlockReference); // deprecated
bool AddBlockBlob(const KaxBlockBlob & BlockReference); bool AddBlockBlob(const KaxBlockBlob & BlockReference);
/*! /*!
\brief Indicate that the position for this Block is set \brief Indicate that the position for this Block is set
*/ */
void PositionSet(const KaxBlockGroup & BlockReference); void PositionSet(const KaxBlockGroup & BlockReference);
void PositionSet(const KaxBlockBlob & BlockReference); void PositionSet(const KaxBlockBlob & BlockReference);
/*! /*!
\brief override to sort by timecode/track \brief override to sort by timecode/track
*/ */
filepos_t Render(IOCallback & output, bool bSaveDefault = false) { filepos_t Render(IOCallback & output, bool bSaveDefault = false) {
Sort(); Sort();
return EbmlMaster::Render(output, bSaveDefault); return EbmlMaster::Render(output, bSaveDefault);
} }
uint64 GetTimecodePosition(uint64 aTimecode) const; uint64 GetTimecodePosition(uint64 aTimecode) const;
const KaxCuePoint * GetTimecodePoint(uint64 aTimecode) const; const KaxCuePoint * GetTimecodePoint(uint64 aTimecode) const;
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) { void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
mGlobalTimecodeScale = aGlobalTimecodeScale; mGlobalTimecodeScale = aGlobalTimecodeScale;
bGlobalTimecodeScaleIsSet = true; bGlobalTimecodeScaleIsSet = true;
} }
uint64 GlobalTimecodeScale() const { uint64 GlobalTimecodeScale() const {
assert(bGlobalTimecodeScaleIsSet); assert(bGlobalTimecodeScaleIsSet);
return mGlobalTimecodeScale; return mGlobalTimecodeScale;
} }
protected: protected:
std::vector<const KaxBlockBlob *> myTempReferences; std::vector<const KaxBlockBlob *> myTempReferences;
bool bGlobalTimecodeScaleIsSet; bool bGlobalTimecodeScaleIsSet;
uint64 mGlobalTimecodeScale; uint64 mGlobalTimecodeScale;
}; };
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CUES_H #endif // LIBMATROSKA_CUES_H

View File

@@ -1,104 +1,77 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxCuesData.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxCuesData.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CUES_DATA_H #ifndef LIBMATROSKA_CUES_DATA_H
#define LIBMATROSKA_CUES_DATA_H #define LIBMATROSKA_CUES_DATA_H
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlUInteger.h" #include "ebml/EbmlUInteger.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
class KaxBlockGroup; class KaxBlockGroup;
class KaxBlockBlob; class KaxBlockBlob;
class KaxCueTrackPositions; class KaxCueTrackPositions;
class KaxInternalBlock; class KaxInternalBlock;
DECLARE_MKX_MASTER(KaxCuePoint) DECLARE_MKX_MASTER(KaxCuePoint)
public: public:
void PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale); void PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale);
void PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale); void PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale);
virtual bool IsSmallerThan(const EbmlElement *Cmp) const; virtual bool IsSmallerThan(const EbmlElement *Cmp) const;
const KaxCueTrackPositions * GetSeekPosition() const; const KaxCueTrackPositions * GetSeekPosition() const;
bool Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const; bool Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const;
}; };
DECLARE_MKX_UINTEGER(KaxCueTime) DECLARE_MKX_MASTER(KaxCueTrackPositions)
}; public:
uint64 ClusterPosition() const;
DECLARE_MKX_MASTER(KaxCueTrackPositions) uint16 TrackNumber() const;
public: };
uint64 ClusterPosition() const;
uint16 TrackNumber() const; #if MATROSKA_VERSION >= 2
}; DECLARE_MKX_MASTER(KaxCueReference)
public:
DECLARE_MKX_UINTEGER(KaxCueTrack) void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale);
}; void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale);
};
DECLARE_MKX_UINTEGER(KaxCueClusterPosition) #endif // MATROSKA_VERSION
};
END_LIBMATROSKA_NAMESPACE
DECLARE_MKX_UINTEGER(KaxCueBlockNumber)
}; #endif // LIBMATROSKA_CUES_DATA_H
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxCueCodecState)
};
DECLARE_MKX_MASTER(KaxCueReference)
public:
void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale);
void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale);
};
DECLARE_MKX_UINTEGER(KaxCueRefTime)
};
DECLARE_MKX_UINTEGER(KaxCueRefCluster)
};
DECLARE_MKX_UINTEGER(KaxCueRefNumber)
};
DECLARE_MKX_UINTEGER(KaxCueRefCodecState)
};
#endif // MATROSKA_VERSION
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_CUES_DATA_H

View File

@@ -17,9 +17,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -36,12 +36,13 @@
#include "ebml/EbmlVersion.h" #include "ebml/EbmlVersion.h"
#include "ebml/EbmlElement.h" #include "ebml/EbmlElement.h"
#if defined(HAVE_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
#define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,EBML_SemanticGlobal) #define DEFINE_MKX_CONTEXT(a) DEFINE_xxx_CONTEXT(a,EBML_SemanticGlobal)
#define DEFINE_MKX_MASTER_CONS(a,b,c,d,e) DEFINE_xxx_MASTER_CONS(a,b,d,e,EBML_SemanticGlobal) #define DEFINE_MKX_MASTER_CONS(a,b,c,d,e) DEFINE_xxx_MASTER_CONS(a,b,d,e,EBML_SemanticGlobal)
#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,d,e,EBML_SemanticGlobal) #define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,d,e,EBML_SemanticGlobal)
#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,d,EBML_SemanticGlobal) #define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,d,EBML_SemanticGlobal)
#define DEFINE_MKX_UINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,d,e,EBML_SemanticGlobal,v) #define DEFINE_MKX_UINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,d,e,EBML_SemanticGlobal,v)
#define DEFINE_MKX_SINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_SINTEGER_DEF(a,b,d,e,EBML_SemanticGlobal,v)
#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,d,e,EBML_SemanticGlobal) #define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_UINTEGER(a,b,d,e,EBML_SemanticGlobal)
#define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,d,e,EBML_SemanticGlobal) #define DEFINE_MKX_SINTEGER(a,b,c,d,e) DEFINE_xxx_SINTEGER(a,b,d,e,EBML_SemanticGlobal)
#define DEFINE_MKX_SINTEGER_CONS(a,b,c,d,e) DEFINE_xxx_SINTEGER_CONS(a,b,d,e,EBML_SemanticGlobal) #define DEFINE_MKX_SINTEGER_CONS(a,b,c,d,e) DEFINE_xxx_SINTEGER_CONS(a,b,d,e,EBML_SemanticGlobal)
@@ -130,6 +131,7 @@ class MATROSKA_DLL_API x : public EbmlMaster { \
#define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context) #define DEFINE_MKX_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)
#define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(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_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) #define DEFINE_MKX_UINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_UINTEGER_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)
#define DEFINE_MKX_SINTEGER_DEF(a,b,c,d,e,v) DEFINE_xxx_SINTEGER_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)
#define DEFINE_MKX_UINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context) #define DEFINE_MKX_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_SINTEGER(a,b,c,d,e) DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)
#define DEFINE_MKX_STRING_DEF(a,b,c,d,e,v) DEFINE_xxx_STRING_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v) #define DEFINE_MKX_STRING_DEF(a,b,c,d,e,v) DEFINE_xxx_STRING_DEF(a,b,c,d,e,*GetKaxGlobal_Context,v)

View File

@@ -1,58 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class MATROSKA_DLL_API description> ** <file/class MATROSKA_DLL_API description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxInfo.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxInfo.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_INFO_H #ifndef LIBMATROSKA_INFO_H
#define LIBMATROSKA_INFO_H #define LIBMATROSKA_INFO_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUnicodeString.h" #endif // LIBMATROSKA_INFO_H
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxInfo)
};
DECLARE_MKX_UNISTRING(KaxMuxingApp)
};
DECLARE_MKX_UNISTRING(KaxWritingApp)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_INFO_H

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -45,22 +45,12 @@
#include "ebml/EbmlDate.h" #include "ebml/EbmlDate.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxSemantic.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_BINARY(KaxSegmentUID)
public:
#if defined(HAVE_EBML2)
KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_PARAM);
#endif
virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
};
DECLARE_MKX_UNISTRING(KaxSegmentFilename)
};
DECLARE_MKX_CONTEXT(KaxPrevUID); DECLARE_MKX_CONTEXT(KaxPrevUID);
class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID { class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {
public: public:
@@ -71,9 +61,6 @@ class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {
EBML_CONCRETE_CLASS(KaxPrevUID) EBML_CONCRETE_CLASS(KaxPrevUID)
}; };
DECLARE_MKX_UNISTRING(KaxPrevFilename)
};
DECLARE_MKX_CONTEXT(KaxNextUID); DECLARE_MKX_CONTEXT(KaxNextUID);
class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID { class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {
public: public:
@@ -84,38 +71,6 @@ class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {
EBML_CONCRETE_CLASS(KaxNextUID) EBML_CONCRETE_CLASS(KaxNextUID)
}; };
DECLARE_MKX_UNISTRING(KaxNextFilename)
};
DECLARE_MKX_BINARY(KaxSegmentFamily)
public:
virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
};
DECLARE_MKX_MASTER(KaxChapterTranslate)
};
DECLARE_MKX_UINTEGER(KaxChapterTranslateCodec)
};
DECLARE_MKX_UINTEGER(KaxChapterTranslateEditionUID)
};
DECLARE_MKX_BINARY(KaxChapterTranslateID)
};
DECLARE_MKX_UINTEGER(KaxTimecodeScale)
};
DECLARE_MKX_FLOAT(KaxDuration)
};
DECLARE_MKX_DATE(KaxDateUTC)
};
DECLARE_MKX_UNISTRING(KaxTitle)
};
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_INFO_DATA_H #endif // LIBMATROSKA_INFO_DATA_H

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -46,7 +46,13 @@ using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
class KaxSegment; class KaxSegment;
class KaxSeek;
DECLARE_MKX_MASTER(KaxSeek)
public:
int64 Location() const;
bool IsEbmlId(const EbmlId & aId) const;
bool IsEbmlId(const KaxSeek & aPoint) const;
};
DECLARE_MKX_MASTER(KaxSeekHead) DECLARE_MKX_MASTER(KaxSeekHead)
public: public:
@@ -60,21 +66,6 @@ DECLARE_MKX_MASTER(KaxSeekHead)
KaxSeek * FindNextOf(const KaxSeek &aPrev) const; KaxSeek * FindNextOf(const KaxSeek &aPrev) const;
}; };
DECLARE_MKX_MASTER(KaxSeek)
public:
int64 Location() const;
bool IsEbmlId(const EbmlId & aId) const;
bool IsEbmlId(const KaxSeek & aPoint) const;
};
DECLARE_MKX_BINARY(KaxSeekID)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() <= 4;}
};
DECLARE_MKX_UINTEGER(KaxSeekPosition)
};
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_SEEK_HEAD_H #endif // LIBMATROSKA_SEEK_HEAD_H

View File

@@ -1,62 +1,62 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class MATROSKA_DLL_API description> ** <file/class MATROSKA_DLL_API description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxSegment.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxSegment.h,v 1.8 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_SEGMENT_H #ifndef LIBMATROSKA_SEGMENT_H
#define LIBMATROSKA_SEGMENT_H #define LIBMATROSKA_SEGMENT_H
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER_CONS(KaxSegment) DECLARE_MKX_MASTER_CONS(KaxSegment)
public: public:
/*! /*!
\brief give the position of the element in the segment \brief give the position of the element in the segment
*/ */
uint64 GetRelativePosition(const EbmlElement & Elt) const; uint64 GetRelativePosition(const EbmlElement & Elt) const;
uint64 GetRelativePosition(uint64 aGlobalPosition) const; uint64 GetRelativePosition(uint64 aGlobalPosition) const;
/*! /*!
\brief give the position of the element in the file \brief give the position of the element in the file
*/ */
uint64 GetGlobalPosition(uint64 aRelativePosition) const; uint64 GetGlobalPosition(uint64 aRelativePosition) const;
}; };
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_SEGMENT_H #endif // LIBMATROSKA_SEGMENT_H

741
matroska/KaxSemantic.h Normal file
View File

@@ -0,0 +1,741 @@
/**********************************************************************
** DO NOT EDIT, GENERATED WITH DATA2LIB
**
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** Copyright (c) 2002-2010, Matroska (non-profit organisation)
** All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
**
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef LIBMATROSKA_SEMANTIC_H
#define LIBMATROSKA_SEMANTIC_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlSInteger.h"
#include "ebml/EbmlDate.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_BINARY (KaxSeekID)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() <= 4;}
};
DECLARE_MKX_UINTEGER(KaxSeekPosition)
};
DECLARE_MKX_MASTER(KaxInfo)
};
DECLARE_MKX_BINARY (KaxSegmentUID)
#if defined(HAVE_EBML2) || defined(HAS_EBML2)
public:
KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_PARAM);
#endif
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
};
DECLARE_MKX_UNISTRING(KaxSegmentFilename)
};
DECLARE_MKX_UNISTRING(KaxPrevFilename)
};
DECLARE_MKX_UNISTRING(KaxNextFilename)
};
DECLARE_MKX_BINARY (KaxSegmentFamily)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
};
DECLARE_MKX_MASTER(KaxChapterTranslate)
};
DECLARE_MKX_UINTEGER(KaxChapterTranslateEditionUID)
};
DECLARE_MKX_UINTEGER(KaxChapterTranslateCodec)
};
DECLARE_MKX_BINARY (KaxChapterTranslateID)
};
DECLARE_MKX_UINTEGER(KaxTimecodeScale)
};
DECLARE_MKX_FLOAT(KaxDuration)
};
DECLARE_MKX_DATE (KaxDateUTC)
};
DECLARE_MKX_UNISTRING(KaxTitle)
};
DECLARE_MKX_UNISTRING(KaxMuxingApp)
};
DECLARE_MKX_UNISTRING(KaxWritingApp)
};
DECLARE_MKX_UINTEGER(KaxClusterTimecode)
};
DECLARE_MKX_MASTER(KaxClusterSilentTracks)
};
DECLARE_MKX_UINTEGER(KaxClusterSilentTrackNumber)
};
DECLARE_MKX_UINTEGER(KaxClusterPosition)
};
DECLARE_MKX_UINTEGER(KaxClusterPrevSize)
};
DECLARE_MKX_MASTER(KaxBlockAdditions)
};
DECLARE_MKX_MASTER(KaxBlockMore)
};
DECLARE_MKX_UINTEGER(KaxBlockAddID)
};
DECLARE_MKX_BINARY (KaxBlockAdditional)
};
DECLARE_MKX_UINTEGER(KaxBlockDuration)
};
DECLARE_MKX_UINTEGER(KaxReferencePriority)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_SINTEGER(KaxReferenceVirtual)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_BINARY (KaxCodecState)
};
DECLARE_MKX_SINTEGER(KaxDiscardPadding)
};
#endif
DECLARE_MKX_MASTER(KaxSlices)
};
DECLARE_MKX_MASTER(KaxTimeSlice)
};
DECLARE_MKX_UINTEGER(KaxSliceLaceNumber)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxSliceFrameNumber)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_UINTEGER(KaxSliceBlockAddID)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_UINTEGER(KaxSliceDelay)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_UINTEGER(KaxSliceDuration)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_MASTER(KaxReferenceFrame)
};
DECLARE_MKX_UINTEGER(KaxReferenceOffset)
};
DECLARE_MKX_UINTEGER(KaxReferenceTimeCode)
};
DECLARE_MKX_BINARY (KaxEncryptedBlock)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
#endif
DECLARE_MKX_MASTER(KaxTracks)
};
DECLARE_MKX_UINTEGER(KaxTrackNumber)
};
DECLARE_MKX_UINTEGER(KaxTrackUID)
};
DECLARE_MKX_UINTEGER(KaxTrackType)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxTrackFlagEnabled)
};
#endif
DECLARE_MKX_UINTEGER(KaxTrackFlagDefault)
};
DECLARE_MKX_UINTEGER(KaxTrackFlagForced)
};
DECLARE_MKX_UINTEGER(KaxTrackFlagLacing)
};
DECLARE_MKX_UINTEGER(KaxTrackMinCache)
};
DECLARE_MKX_UINTEGER(KaxTrackMaxCache)
};
DECLARE_MKX_UINTEGER(KaxTrackDefaultDuration)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxTrackDefaultDecodedFieldDuration)
};
#endif
DECLARE_MKX_FLOAT(KaxTrackTimecodeScale)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_SINTEGER(KaxTrackOffset)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
#endif
DECLARE_MKX_UINTEGER(KaxMaxBlockAdditionID)
};
DECLARE_MKX_UNISTRING(KaxTrackName)
};
DECLARE_MKX_STRING(KaxTrackLanguage)
};
DECLARE_MKX_STRING(KaxCodecID)
};
DECLARE_MKX_BINARY (KaxCodecPrivate)
};
DECLARE_MKX_UNISTRING(KaxCodecName)
};
DECLARE_MKX_UINTEGER(KaxTrackAttachmentLink)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UNISTRING(KaxCodecSettings)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_STRING(KaxCodecInfoURL)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_STRING(KaxCodecDownloadURL)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_UINTEGER(KaxCodecDecodeAll)
};
#endif
DECLARE_MKX_UINTEGER(KaxTrackOverlay)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxCodecDelay)
};
DECLARE_MKX_UINTEGER(KaxSeekPreRoll)
};
#endif
DECLARE_MKX_MASTER(KaxTrackTranslate)
};
DECLARE_MKX_UINTEGER(KaxTrackTranslateEditionUID)
};
DECLARE_MKX_UINTEGER(KaxTrackTranslateCodec)
};
DECLARE_MKX_BINARY (KaxTrackTranslateTrackID)
};
DECLARE_MKX_MASTER(KaxTrackVideo)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced)
};
DECLARE_MKX_UINTEGER(KaxVideoStereoMode)
};
DECLARE_MKX_UINTEGER(KaxVideoAlphaMode)
};
DECLARE_MKX_UINTEGER(KaxOldStereoMode)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
#endif
DECLARE_MKX_UINTEGER(KaxVideoPixelWidth)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelHeight)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropBottom)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropTop)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropLeft)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropRight)
};
DECLARE_MKX_UINTEGER(KaxVideoDisplayWidth)
};
DECLARE_MKX_UINTEGER(KaxVideoDisplayHeight)
};
DECLARE_MKX_UINTEGER(KaxVideoDisplayUnit)
};
DECLARE_MKX_UINTEGER(KaxVideoAspectRatio)
};
DECLARE_MKX_BINARY (KaxVideoColourSpace)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 4;}
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_FLOAT(KaxVideoGamma)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_FLOAT(KaxVideoFrameRate)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
#endif
DECLARE_MKX_MASTER(KaxTrackAudio)
};
DECLARE_MKX_FLOAT(KaxAudioSamplingFreq)
};
DECLARE_MKX_FLOAT(KaxAudioOutputSamplingFreq)
};
DECLARE_MKX_UINTEGER(KaxAudioChannels)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_BINARY (KaxAudioPosition)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
#endif
DECLARE_MKX_UINTEGER(KaxAudioBitDepth)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_MASTER(KaxTrackOperation)
};
DECLARE_MKX_MASTER(KaxTrackCombinePlanes)
};
DECLARE_MKX_MASTER(KaxTrackPlane)
};
DECLARE_MKX_UINTEGER(KaxTrackPlaneUID)
};
DECLARE_MKX_UINTEGER(KaxTrackPlaneType)
};
DECLARE_MKX_MASTER(KaxTrackJoinBlocks)
};
DECLARE_MKX_UINTEGER(KaxTrackJoinUID)
};
DECLARE_MKX_UINTEGER(KaxTrickTrackUID)
};
DECLARE_MKX_BINARY (KaxTrickTrackSegmentUID)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
};
DECLARE_MKX_UINTEGER(KaxTrickTrackFlag)
};
DECLARE_MKX_UINTEGER(KaxTrickMasterTrackUID)
};
DECLARE_MKX_BINARY (KaxTrickMasterTrackSegmentUID)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
};
#endif
DECLARE_MKX_MASTER(KaxContentEncodings)
};
DECLARE_MKX_MASTER(KaxContentEncoding)
};
DECLARE_MKX_UINTEGER(KaxContentEncodingOrder)
};
DECLARE_MKX_UINTEGER(KaxContentEncodingScope)
};
DECLARE_MKX_UINTEGER(KaxContentEncodingType)
};
DECLARE_MKX_MASTER(KaxContentCompression)
};
DECLARE_MKX_UINTEGER(KaxContentCompAlgo)
};
DECLARE_MKX_BINARY (KaxContentCompSettings)
};
DECLARE_MKX_MASTER(KaxContentEncryption)
};
DECLARE_MKX_UINTEGER(KaxContentEncAlgo)
};
DECLARE_MKX_BINARY (KaxContentEncKeyID)
};
DECLARE_MKX_BINARY (KaxContentSignature)
};
DECLARE_MKX_BINARY (KaxContentSigKeyID)
};
DECLARE_MKX_UINTEGER(KaxContentSigAlgo)
};
DECLARE_MKX_UINTEGER(KaxContentSigHashAlgo)
};
DECLARE_MKX_UINTEGER(KaxCueTime)
};
DECLARE_MKX_UINTEGER(KaxCueTrack)
};
DECLARE_MKX_UINTEGER(KaxCueClusterPosition)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxCueRelativePosition)
};
DECLARE_MKX_UINTEGER(KaxCueDuration)
};
#endif
DECLARE_MKX_UINTEGER(KaxCueBlockNumber)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxCueCodecState)
};
DECLARE_MKX_UINTEGER(KaxCueRefTime)
};
DECLARE_MKX_UINTEGER(KaxCueRefCluster)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_UINTEGER(KaxCueRefNumber)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_UINTEGER(KaxCueRefCodecState)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
#endif
DECLARE_MKX_MASTER(KaxAttachments)
};
DECLARE_MKX_MASTER(KaxAttached)
};
DECLARE_MKX_UNISTRING(KaxFileDescription)
};
DECLARE_MKX_UNISTRING(KaxFileName)
};
DECLARE_MKX_STRING(KaxMimeType)
};
DECLARE_MKX_BINARY (KaxFileData)
};
DECLARE_MKX_UINTEGER(KaxFileUID)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_BINARY (KaxFileReferral)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
DECLARE_MKX_UINTEGER(KaxFileUsedStartTime)
};
DECLARE_MKX_UINTEGER(KaxFileUsedEndTime)
};
#endif
DECLARE_MKX_MASTER(KaxChapters)
};
DECLARE_MKX_MASTER(KaxEditionEntry)
};
DECLARE_MKX_UINTEGER(KaxEditionUID)
};
DECLARE_MKX_UINTEGER(KaxEditionFlagHidden)
};
DECLARE_MKX_UINTEGER(KaxEditionFlagDefault)
};
DECLARE_MKX_UINTEGER(KaxEditionFlagOrdered)
};
DECLARE_MKX_MASTER(KaxChapterAtom)
};
DECLARE_MKX_UINTEGER(KaxChapterUID)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UNISTRING(KaxChapterStringUID)
};
#endif
DECLARE_MKX_UINTEGER(KaxChapterTimeStart)
};
DECLARE_MKX_UINTEGER(KaxChapterTimeEnd)
};
DECLARE_MKX_UINTEGER(KaxChapterFlagHidden)
};
DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled)
};
DECLARE_MKX_BINARY (KaxChapterSegmentUID)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
};
DECLARE_MKX_UINTEGER(KaxChapterSegmentEditionUID)
};
DECLARE_MKX_UINTEGER(KaxChapterPhysicalEquiv)
};
DECLARE_MKX_MASTER(KaxChapterTrack)
};
DECLARE_MKX_UINTEGER(KaxChapterTrackNumber)
};
DECLARE_MKX_MASTER(KaxChapterDisplay)
};
DECLARE_MKX_UNISTRING(KaxChapterString)
};
DECLARE_MKX_STRING(KaxChapterLanguage)
};
DECLARE_MKX_STRING(KaxChapterCountry)
};
DECLARE_MKX_MASTER(KaxChapterProcess)
};
DECLARE_MKX_UINTEGER(KaxChapterProcessCodecID)
};
DECLARE_MKX_BINARY (KaxChapterProcessPrivate)
};
DECLARE_MKX_MASTER(KaxChapterProcessCommand)
};
DECLARE_MKX_UINTEGER(KaxChapterProcessTime)
};
DECLARE_MKX_BINARY (KaxChapterProcessData)
};
DECLARE_MKX_MASTER(KaxTags)
};
DECLARE_MKX_MASTER(KaxTag)
};
DECLARE_MKX_MASTER(KaxTagTargets)
};
DECLARE_MKX_UINTEGER(KaxTagTargetTypeValue)
};
DECLARE_MKX_STRING(KaxTagTargetType)
};
DECLARE_MKX_UINTEGER(KaxTagTrackUID)
};
DECLARE_MKX_UINTEGER(KaxTagEditionUID)
};
DECLARE_MKX_UINTEGER(KaxTagChapterUID)
};
DECLARE_MKX_UINTEGER(KaxTagAttachmentUID)
};
DECLARE_MKX_MASTER(KaxTagSimple)
};
DECLARE_MKX_UNISTRING(KaxTagName)
};
DECLARE_MKX_STRING(KaxTagLangue)
};
DECLARE_MKX_UINTEGER(KaxTagDefault)
};
DECLARE_MKX_UNISTRING(KaxTagString)
};
DECLARE_MKX_BINARY (KaxTagBinary)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_SEMANTIC_H

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -30,202 +30,11 @@
/*! /*!
\file \file
\version \$Id$ \version \$Id$
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_TAG_H #ifndef LIBMATROSKA_TAG_H
#define LIBMATROSKA_TAG_H #define LIBMATROSKA_TAG_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlSInteger.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxTag)
};
DECLARE_MKX_MASTER(KaxTagTargets)
};
DECLARE_MKX_MASTER(KaxTagGeneral)
};
DECLARE_MKX_MASTER(KaxTagGenres)
};
DECLARE_MKX_MASTER(KaxTagAudioSpecific)
};
DECLARE_MKX_MASTER(KaxTagImageSpecific)
};
DECLARE_MKX_UINTEGER(KaxTagTargetTypeValue)
};
DECLARE_MKX_STRING(KaxTagTargetType)
};
DECLARE_MKX_UINTEGER(KaxTagTrackUID)
};
DECLARE_MKX_UINTEGER(KaxTagEditionUID)
};
DECLARE_MKX_UINTEGER(KaxTagChapterUID)
};
DECLARE_MKX_UINTEGER(KaxTagAttachmentUID)
};
DECLARE_MKX_UNISTRING(KaxTagArchivalLocation)
};
DECLARE_MKX_BINARY(KaxTagAudioEncryption)
};
DECLARE_MKX_FLOAT(KaxTagAudioGain)
};
DECLARE_MKX_STRING(KaxTagAudioGenre)
};
DECLARE_MKX_FLOAT(KaxTagAudioPeak)
};
DECLARE_MKX_UNISTRING(KaxTagBibliography)
};
DECLARE_MKX_FLOAT(KaxTagBPM)
};
DECLARE_MKX_UINTEGER(KaxTagCaptureDPI)
};
DECLARE_MKX_BINARY(KaxTagCaptureLightness)
};
DECLARE_MKX_UINTEGER(KaxTagCapturePaletteSetting)
};
DECLARE_MKX_BINARY(KaxTagCaptureSharpness)
};
DECLARE_MKX_UNISTRING(KaxTagCropped)
};
DECLARE_MKX_UINTEGER(KaxTagDiscTrack)
};
DECLARE_MKX_UNISTRING(KaxTagEncoder)
};
DECLARE_MKX_UNISTRING(KaxTagEncodeSettings)
};
DECLARE_MKX_BINARY(KaxTagEqualisation)
};
DECLARE_MKX_UNISTRING(KaxTagFile)
};
DECLARE_MKX_STRING(KaxTagInitialKey)
};
DECLARE_MKX_UNISTRING(KaxTagKeywords)
};
DECLARE_MKX_STRING(KaxTagLanguage)
};
DECLARE_MKX_UINTEGER(KaxTagLength)
};
DECLARE_MKX_UNISTRING(KaxTagMood)
};
DECLARE_MKX_STRING(KaxTagOfficialAudioFileURL)
};
DECLARE_MKX_STRING(KaxTagOfficialAudioSourceURL)
};
DECLARE_MKX_STRING(KaxTagOriginalDimensions)
};
DECLARE_MKX_UNISTRING(KaxTagOriginalMediaType)
};
DECLARE_MKX_UINTEGER(KaxTagPlayCounter)
};
DECLARE_MKX_UINTEGER(KaxTagPlaylistDelay)
};
DECLARE_MKX_SINTEGER(KaxTagPopularimeter)
};
DECLARE_MKX_UNISTRING(KaxTagProduct)
};
DECLARE_MKX_BINARY(KaxTagRating)
};
DECLARE_MKX_STRING(KaxTagRecordLocation)
};
DECLARE_MKX_UINTEGER(KaxTagSetPart)
};
DECLARE_MKX_UNISTRING(KaxTagSource)
};
DECLARE_MKX_UNISTRING(KaxTagSourceForm)
};
DECLARE_MKX_STRING(KaxTagSubGenre)
};
DECLARE_MKX_UNISTRING(KaxTagSubject)
};
DECLARE_MKX_UNISTRING(KaxTagUnsynchronisedText)
};
DECLARE_MKX_STRING(KaxTagUserDefinedURL)
};
DECLARE_MKX_BINARY(KaxTagVideoGenre)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && (GetSize() >= 2);}
};
DECLARE_MKX_MASTER(KaxTagSimple)
};
DECLARE_MKX_UNISTRING(KaxTagName)
};
DECLARE_MKX_STRING(KaxTagLangue)
};
DECLARE_MKX_UINTEGER(KaxTagDefault)
};
DECLARE_MKX_UNISTRING(KaxTagString)
};
DECLARE_MKX_BINARY(KaxTagBinary)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TAG_H #endif // LIBMATROSKA_TAG_H

View File

@@ -1,304 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class MATROSKA_DLL_API description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id$
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#ifndef LIBMATROSKA_TAGMULTI_H
#define LIBMATROSKA_TAGMULTI_H
#include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlDate.h"
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlSInteger.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
enum KaxTagMultiCommercialTypes {
KaxTagMultiCommercialType_FilePurchase = 1, //Information on where to purchase this file. This is akin to the WPAY tag in ID3.
KaxTagMultiCommercialType_ItemPurchase, //Information on where to purchase this album. This is akin to the WCOM tag in ID3.
KaxTagMultiCommercialType_Owner //Information on the purchase that occurred for this file. This is akin to the OWNE tag in ID3.
};
enum KaxTagMultiDateTypes {
KaxTagMultiDateType_EncodingDate = 1, //The time that the encoding of this item was completed. This is akin to the TDEN tag in ID3.
KaxTagMultiDateType_RecordingDate, //The time that the recording began, and finished. This is akin to the TDRC tag in ID3.
KaxTagMultiDateType_ReleaseDate, //The time that the item was originaly released. This is akin to the TDRL tag in ID3.
KaxTagMultiDateType_OriginalReleaseDate, //The time that the item was originaly released if it is a remake. This is akin to the TDOR tag in ID3.
KaxTagMultiDateType_TaggingDate, //The time that the tags were done for this item. This is akin to the TDTG tag in ID3.
KaxTagMultiDateType_DigitizingDate //The time that the item was tranfered to a digital medium. This is akin to the IDIT tag in RIFF
};
enum KaxTagMultiEntitiesTypes {
KaxTagMultiEntitiesType_LyricistTextWriter = 1, //The person that wrote the words/script for this item. This is akin to the TEXT tag in ID3.
KaxTagMultiEntitiesType_Composer, //The name of the composer of this item. This is akin to the TCOM tag in ID3.
KaxTagMultiEntitiesType_LeadPerformerSoloist, //This is akin to the TPE1 tag in ID3.
KaxTagMultiEntitiesType_BandOrchestraAccompaniment, //This is akin to the TPE2 tag in ID3.
KaxTagMultiEntitiesType_OriginalLyricistTextWriter, //This is akin to the TOLY tag in ID3.
KaxTagMultiEntitiesType_OriginalArtistPerformer, //This is akin to the TOPE tag in ID3.
KaxTagMultiEntitiesType_OriginalAlbumMovieShowTitle, //This is akin to the TOAL tag in ID3.
KaxTagMultiEntitiesType_ConductorPerformerRefinement, //This is akin to the TPE3 tag in ID3.
KaxTagMultiEntitiesType_InterpretedRemixedBy, //This is akin to the TPE4 tag in ID3.
KaxTagMultiEntitiesType_Director, //This is akin to the IART tag in RIFF
KaxTagMultiEntitiesType_ProducedBy, //This is akin to the IPRO tag in Extended RIFF
KaxTagMultiEntitiesType_Cinematographer, //This is akin to the ICNM tag in Extended RIFF
KaxTagMultiEntitiesType_ProductionDesigner, //This is akin to the IPDS tag in Extended RIFF
KaxTagMultiEntitiesType_CostumeDesigner, //This is akin to the ICDS tag in Extended RIFF
KaxTagMultiEntitiesType_ProductionStudio, //This is akin to the ISTD tag in Extended RIFF
KaxTagMultiEntitiesType_DistributedBy, //This is akin to the IDST tag in Extended RIFF
KaxTagMultiEntitiesType_CommissionedBy, //This is akin to the ICMS tag in RIFF
KaxTagMultiEntitiesType_Engineer, //This is akin to the IENG tag in RIFF
KaxTagMultiEntitiesType_EditedBy, //This is akin to the IEDT tag in Extended RIFF
KaxTagMultiEntitiesType_EncodedBy, //This is akin to the TENC tag in ID3.
KaxTagMultiEntitiesType_RippedBy, //This is akin to the IRIP tag in Extended RIFF
KaxTagMultiEntitiesType_InvolvedPeopleList, //A very general tag for everyone else that wants to be listed. This is akin to the TMCL tag in ID3.
KaxTagMultiEntitiesType_InternetRadioStationName, //This is akin to the TSRN tag in ID3.
KaxTagMultiEntitiesType_Publisher //This is akin to the TPUB tag in ID3.
};
enum KaxTagMultiIdentifierTypes {
KaxTagMultiIdentifierType_ISRC = 1, //String, The International Standard Recording Code
KaxTagMultiIdentifierType_CDIdentifier, //Binary, This is a binary dump of the TOC of the CDROM that this item was taken from. This holds the same information as the MCDI in ID3.
KaxTagMultiIdentifierType_ISBN, //String, International Standard Book Number
KaxTagMultiIdentifierType_Catalog, //String, sometimes the EAN/UPC, often some letters followed by some numbers
KaxTagMultiIdentifierType_EAN, //String, EAN-13 bar code identifier
KaxTagMultiIdentifierType_UPC, //String, UPC-A bar code identifier
KaxTagMultiIdentifierType_LabelCode, //String, Typically printed as ________ (LC) xxxx) ~~~~~~~~ or _________ (LC) 0xxxx) ~~~~~~~~~ on CDs medias or covers, where xxxx is a 4-digit number.
KaxTagMultiIdentifierType_LCCN, //String, Library of Congress Control Number
KaxTagMultiIdentifierType_UniqueFileIdentifier, //Binary, This used for a dump of the UFID field in ID3. This field would only be used if the item was pulled from an MP3.
CDROM_CD_TEXT_PACK_TOC_INFO2 //Binary
};
enum KaxTagMultiLegalTypes {
KaxTagMultiLegalType_Copyright = 1, //The copyright information as per the copyright holder. This is akin to the TCOP tag in ID3.
KaxTagMultiLegalType_ProductionCopyright, //The copyright information as per the production copyright holder. This is akin to the TPRO tag in ID3.
KaxTagMultiLegalType_TermsOfUse //The terms of use for this item. This is akin to the USER tag in ID3.
};
enum KaxTagMultiTitleTypes {
KaxTagMultiTitleType_TrackTitle = 1,
//The title of this item. In the case of a track, the Name element should be identical to the Name element.
//For example, for music you might label this "Canon in D", or for video's audio track you might use "English 5.1" This is akin to the TIT2 tag in ID3.
KaxTagMultiTitleType_AlbumMovieShowTitle,
//This is the name given to a grouping of tracks and/or chapters.
//For example, all video, audio, and subtitle tracks for a movie would be grouped under this and be given the name of the movie.
//All tracks for a particular CD would be grouped together under the title of the CD, or if all tracks for a CD were recorded as a single track, seperated by chapters, the same would apply.
//You could use this to label episode 3 of The Simpsons. This is akin to the TALB tag in ID3.
KaxTagMultiTitleType_SetTitle, //This would be used to label a set of ID 2. For example, season 13 of The Simpsons.
KaxTagMultiTitleType_Series //This would be used to label a set of ID 3. For example, The Simpsons.
};
DECLARE_MKX_MASTER(KaxTagMultiComment)
};
DECLARE_MKX_STRING(KaxTagMultiCommentName)
};
DECLARE_MKX_UNISTRING(KaxTagMultiCommentComments)
};
DECLARE_MKX_STRING(KaxTagMultiCommentLanguage)
};
DECLARE_MKX_MASTER(KaxTagMultiCommercial)
};
DECLARE_MKX_MASTER(KaxTagCommercial)
};
DECLARE_MKX_UINTEGER(KaxTagMultiCommercialType)
};
DECLARE_MKX_UNISTRING(KaxTagMultiCommercialAddress)
};
DECLARE_MKX_STRING(KaxTagMultiCommercialURL)
};
DECLARE_MKX_STRING(KaxTagMultiCommercialEmail)
};
DECLARE_MKX_MASTER(KaxTagMultiPrice)
};
DECLARE_MKX_STRING(KaxTagMultiPriceCurrency)
};
DECLARE_MKX_FLOAT(KaxTagMultiPriceAmount)
};
DECLARE_MKX_DATE(KaxTagMultiPricePriceDate)
};
DECLARE_MKX_MASTER(KaxTagMultiDate)
};
DECLARE_MKX_MASTER(KaxTagDate)
};
DECLARE_MKX_UINTEGER(KaxTagMultiDateType)
};
DECLARE_MKX_DATE(KaxTagMultiDateDateBegin)
};
DECLARE_MKX_DATE(KaxTagMultiDateDateEnd)
};
DECLARE_MKX_MASTER(KaxTagMultiEntity)
};
DECLARE_MKX_MASTER(KaxTagEntity)
};
DECLARE_MKX_UINTEGER(KaxTagMultiEntityType)
};
DECLARE_MKX_UNISTRING(KaxTagMultiEntityName)
};
DECLARE_MKX_UNISTRING(KaxTagMultiEntityAddress)
};
DECLARE_MKX_STRING(KaxTagMultiEntityURL)
};
DECLARE_MKX_STRING(KaxTagMultiEntityEmail)
};
DECLARE_MKX_MASTER(KaxTagMultiIdentifier)
};
DECLARE_MKX_MASTER(KaxTagIdentifier)
};
DECLARE_MKX_UINTEGER(KaxTagMultiIdentifierType)
};
DECLARE_MKX_BINARY(KaxTagMultiIdentifierBinary)
};
DECLARE_MKX_UNISTRING(KaxTagMultiIdentifierString)
};
DECLARE_MKX_MASTER(KaxTagMultiLegal)
};
DECLARE_MKX_MASTER(KaxTagLegal)
};
DECLARE_MKX_UINTEGER(KaxTagMultiLegalType)
};
DECLARE_MKX_UNISTRING(KaxTagMultiLegalContent)
};
DECLARE_MKX_STRING(KaxTagMultiLegalURL)
};
DECLARE_MKX_UNISTRING(KaxTagMultiLegalAddress)
};
DECLARE_MKX_MASTER(KaxTagMultiTitle)
};
DECLARE_MKX_MASTER(KaxTagTitle)
};
DECLARE_MKX_UINTEGER(KaxTagMultiTitleType)
};
DECLARE_MKX_UNISTRING(KaxTagMultiTitleName)
};
DECLARE_MKX_UNISTRING(KaxTagMultiTitleSubTitle)
};
DECLARE_MKX_UNISTRING(KaxTagMultiTitleEdition)
};
DECLARE_MKX_UNISTRING(KaxTagMultiTitleAddress)
};
DECLARE_MKX_STRING(KaxTagMultiTitleURL)
};
DECLARE_MKX_STRING(KaxTagMultiTitleEmail)
};
DECLARE_MKX_STRING(KaxTagMultiTitleLanguage)
};
DECLARE_MKX_MASTER(KaxTagMultiAttachment)
};
DECLARE_MKX_MASTER(KaxTagAttachment)
};
DECLARE_MKX_UINTEGER(KaxTagAttachmentID)
};
#if 0
DECLARE_MKX_FLOAT(KaxTagBPM)
};
DECLARE_MKX_SINTEGER(KaxTagPopularimeter)
};
DECLARE_MKX_BINARY(KaxTagRating)
};
DECLARE_MKX_UINTEGER(KaxTagSetPart)
};
DECLARE_MKX_STRING(KaxTagUserDefinedURL)
};
DECLARE_MKX_BINARY(KaxTagVideoSecondaryGenre)
public:
virtual bool ValidateSize() const {return IsFiniteSize() && (Size >= 4);
};
DECLARE_MKX_UNISTRING(KaxWritingApp)
};
#endif
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TAGMULTI_H

View File

@@ -1,51 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class MATROSKA_DLL_API description> ** <file/class MATROSKA_DLL_API description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxTags.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxTags.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_TAGS_H #ifndef LIBMATROSKA_TAGS_H
#define LIBMATROSKA_TAGS_H #define LIBMATROSKA_TAGS_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxDefines.h" #endif // LIBMATROSKA_TAGS_H
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxTags)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TAGS_H

View File

@@ -1,71 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class MATROSKA_DLL_API description> ** <file/class MATROSKA_DLL_API description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxTrackAudio.h,v 1.11 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxTrackAudio.h,v 1.11 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_TRACK_AUDIO_H #ifndef LIBMATROSKA_TRACK_AUDIO_H
#define LIBMATROSKA_TRACK_AUDIO_H #define LIBMATROSKA_TRACK_AUDIO_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlFloat.h" #endif // LIBMATROSKA_TRACK_AUDIO_H
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxTrackAudio)
};
DECLARE_MKX_FLOAT(KaxAudioSamplingFreq)
};
DECLARE_MKX_FLOAT(KaxAudioOutputSamplingFreq)
};
DECLARE_MKX_UINTEGER(KaxAudioChannels)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_BINARY(KaxAudioPosition)
};
#endif // MATROSKA_VERSION
DECLARE_MKX_UINTEGER(KaxAudioBitDepth)
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_AUDIO_H

View File

@@ -1,139 +1,40 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxTrackEntryData.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxTrackEntryData.h,v 1.9 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net> */
*/ #ifndef LIBMATROSKA_TRACK_ENTRY_DATA_H
#ifndef LIBMATROSKA_TRACK_ENTRY_DATA_H #define LIBMATROSKA_TRACK_ENTRY_DATA_H
#define LIBMATROSKA_TRACK_ENTRY_DATA_H
#include "matroska/KaxSemantic.h"
#include "matroska/KaxTypes.h"
#include "ebml/EbmlUInteger.h" #endif // LIBMATROSKA_TRACK_ENTRY_DATA_H
#include "ebml/EbmlFloat.h"
#include "ebml/EbmlString.h"
#include "ebml/EbmlUnicodeString.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlMaster.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_UINTEGER(KaxTrackNumber)
};
DECLARE_MKX_UINTEGER(KaxTrackUID)
};
DECLARE_MKX_UINTEGER(KaxTrackType)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxTrackFlagEnabled)
};
#endif // MATROSKA_VERSION
DECLARE_MKX_UINTEGER(KaxTrackFlagDefault)
};
DECLARE_MKX_UINTEGER(KaxTrackFlagForced)
};
DECLARE_MKX_UINTEGER(KaxTrackFlagLacing)
};
DECLARE_MKX_UINTEGER(KaxTrackMinCache)
};
DECLARE_MKX_UINTEGER(KaxTrackMaxCache)
};
DECLARE_MKX_UINTEGER(KaxTrackDefaultDuration)
};
DECLARE_MKX_FLOAT(KaxTrackTimecodeScale)
};
DECLARE_MKX_UINTEGER(KaxMaxBlockAdditionID)
};
DECLARE_MKX_UNISTRING(KaxTrackName)
};
DECLARE_MKX_STRING(KaxTrackLanguage)
};
DECLARE_MKX_STRING(KaxCodecID)
};
DECLARE_MKX_BINARY(KaxCodecPrivate)
};
DECLARE_MKX_UNISTRING(KaxCodecName)
};
DECLARE_MKX_BINARY(KaxTrackAttachmentLink)
};
DECLARE_MKX_UINTEGER(KaxTrackOverlay)
};
DECLARE_MKX_MASTER(KaxTrackTranslate)
};
DECLARE_MKX_UINTEGER(KaxTrackTranslateCodec)
};
DECLARE_MKX_UINTEGER(KaxTrackTranslateEditionUID)
};
DECLARE_MKX_BINARY(KaxTrackTranslateTrackID)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UNISTRING(KaxCodecSettings)
};
DECLARE_MKX_STRING(KaxCodecInfoURL)
};
DECLARE_MKX_STRING(KaxCodecDownloadURL)
};
DECLARE_MKX_UINTEGER(KaxCodecDecodeAll)
};
#endif // MATROSKA_VERSION
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_ENTRY_DATA_H

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -35,76 +35,6 @@
#ifndef LIBMATROSKA_TRACK_VIDEO_H #ifndef LIBMATROSKA_TRACK_VIDEO_H
#define LIBMATROSKA_TRACK_VIDEO_H #define LIBMATROSKA_TRACK_VIDEO_H
#include "matroska/KaxTypes.h" #include "matroska/KaxSemantic.h"
#include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h"
#include "ebml/EbmlBinary.h"
#include "ebml/EbmlFloat.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxTrackVideo)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced)
};
DECLARE_MKX_UINTEGER(KaxVideoStereoMode)
};
#endif // MATROSKA_VERSION
DECLARE_MKX_UINTEGER(KaxVideoPixelWidth)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelHeight)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropBottom)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropTop)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropLeft)
};
DECLARE_MKX_UINTEGER(KaxVideoPixelCropRight)
};
DECLARE_MKX_UINTEGER(KaxVideoDisplayWidth)
};
DECLARE_MKX_UINTEGER(KaxVideoDisplayHeight)
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxVideoDisplayUnit)
};
DECLARE_MKX_UINTEGER(KaxVideoAspectRatio)
};
#endif // MATROSKA_VERSION
DECLARE_MKX_BINARY(KaxVideoColourSpace)
public:
bool ValidateSize(void) const {return IsFiniteSize() && (GetSize() == 4);}
};
#if MATROSKA_VERSION >= 2
DECLARE_MKX_FLOAT(KaxVideoGamma)
};
#endif // MATROSKA_VERSION
DECLARE_MKX_FLOAT(KaxVideoFrameRate)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
};
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACK_VIDEO_H #endif // LIBMATROSKA_TRACK_VIDEO_H

View File

@@ -1,81 +1,78 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxTracks.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxTracks.h,v 1.7 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_TRACKS_H #ifndef LIBMATROSKA_TRACKS_H
#define LIBMATROSKA_TRACKS_H #define LIBMATROSKA_TRACKS_H
#include "matroska/KaxTypes.h" #include "matroska/KaxTypes.h"
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "ebml/EbmlUInteger.h" #include "ebml/EbmlUInteger.h"
#include "matroska/KaxTrackEntryData.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxSemantic.h"
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_MASTER(KaxTracks) DECLARE_MKX_MASTER(KaxTrackEntry)
}; public:
EbmlUInteger & TrackNumber() const { return *(static_cast<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); }
DECLARE_MKX_MASTER(KaxTrackEntry)
public: void EnableLacing(bool bEnable = true);
EbmlUInteger & TrackNumber() const { return *(static_cast<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); }
/*!
void EnableLacing(bool bEnable = true); \note lacing set by default
*/
/*! inline bool LacingEnabled() const {
\note lacing set by default KaxTrackFlagLacing * myLacing = static_cast<KaxTrackFlagLacing *>(FindFirstElt(EBML_INFO(KaxTrackFlagLacing)));
*/ return((myLacing == NULL) || (uint8(*myLacing) != 0));
inline bool LacingEnabled() const { }
KaxTrackFlagLacing * myLacing = static_cast<KaxTrackFlagLacing *>(FindFirstElt(EBML_INFO(KaxTrackFlagLacing)));
return((myLacing == NULL) || (uint8(*myLacing) != 0)); void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
} mGlobalTimecodeScale = aGlobalTimecodeScale;
bGlobalTimecodeScaleIsSet = true;
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) { }
mGlobalTimecodeScale = aGlobalTimecodeScale; uint64 GlobalTimecodeScale() const {
bGlobalTimecodeScaleIsSet = true; assert(bGlobalTimecodeScaleIsSet);
} return mGlobalTimecodeScale;
uint64 GlobalTimecodeScale() const { }
assert(bGlobalTimecodeScaleIsSet);
return mGlobalTimecodeScale; protected:
} bool bGlobalTimecodeScaleIsSet;
uint64 mGlobalTimecodeScale;
protected: };
bool bGlobalTimecodeScaleIsSet;
uint64 mGlobalTimecodeScale; END_LIBMATROSKA_NAMESPACE
};
#endif // LIBMATROSKA_TRACKS_H
END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACKS_H

View File

@@ -1,59 +1,59 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxTypes.h,v 1.4 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxTypes.h,v 1.4 2004/04/14 23:26:17 robux4 Exp $
*/ */
#ifndef LIBMATROSKA_TYPES_H #ifndef LIBMATROSKA_TYPES_H
#define LIBMATROSKA_TYPES_H #define LIBMATROSKA_TYPES_H
#include "matroska/KaxConfig.h" #include "matroska/KaxConfig.h"
#include "ebml/EbmlTypes.h" #include "ebml/EbmlTypes.h"
#include "matroska/c/libmatroska_t.h" #include "matroska/c/libmatroska_t.h"
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
enum LacingType { enum LacingType {
LACING_NONE = 0, LACING_NONE = 0,
LACING_XIPH, LACING_XIPH,
LACING_FIXED, LACING_FIXED,
LACING_EBML, LACING_EBML,
LACING_AUTO LACING_AUTO
}; };
enum BlockBlobType { enum BlockBlobType {
BLOCK_BLOB_NO_SIMPLE = 0, BLOCK_BLOB_NO_SIMPLE = 0,
BLOCK_BLOB_SIMPLE_AUTO, BLOCK_BLOB_SIMPLE_AUTO,
BLOCK_BLOB_ALWAYS_SIMPLE, BLOCK_BLOB_ALWAYS_SIMPLE,
}; };
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TYPES_H #endif // LIBMATROSKA_TYPES_H

View File

@@ -17,9 +17,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -40,10 +40,10 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
#define LIBMATROSKA_VERSION 0x010000 #define LIBMATROSKA_VERSION 0x010400
static const std::string KaxCodeVersion = "1.0.0"; extern const std::string KaxCodeVersion;
static const std::string KaxCodeDate = __TIMESTAMP__; extern const std::string KaxCodeDate;
/*! /*!
\todo Improve the CRC/ECC system (backward and forward possible ?) to fit streaming/live writing/simple reading \todo Improve the CRC/ECC system (backward and forward possible ?) to fit streaming/live writing/simple reading

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information. ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.
** **
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -452,14 +452,14 @@ END_LIBMATROSKA_NAMESPACE
void matroska_init() void matroska_init()
{ {
#if defined(HAVE_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
ebml_init(); ebml_init();
#endif #endif
} }
void matroska_done() void matroska_done()
{ {
#if defined(HAVE_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
ebml_done(); ebml_done();
#endif #endif
} }

View File

@@ -1,72 +1,51 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxAttached.cpp 1202 2005-08-30 14:39:01Z robux4 $ \version \$Id: KaxAttached.cpp 1202 2005-08-30 14:39:01Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "matroska/KaxAttached.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxSemantic.h"
// sub elements // sub elements
using namespace LIBEBML_NAMESPACE; using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxAttached) KaxAttached::KaxAttached(EBML_EXTRA_DEF)
DEFINE_SEMANTIC_ITEM(true, true, KaxFileName) :EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxAttached) EBML_DEF_SEP EBML_EXTRA_CALL)
DEFINE_SEMANTIC_ITEM(true, true, KaxMimeType) {
DEFINE_SEMANTIC_ITEM(true, true, KaxFileData) SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
DEFINE_SEMANTIC_ITEM(false, true, KaxFileDescription) }
DEFINE_SEMANTIC_ITEM(true, true, KaxFileUID)
#if MATROSKA_VERSION >= 2 END_LIBMATROSKA_NAMESPACE
DEFINE_SEMANTIC_ITEM(false, true, KaxFileReferral)
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxAttached)
DEFINE_MKX_MASTER_CONS(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
DEFINE_MKX_BINARY (KaxFileReferral, 0x4675, 2, KaxAttachments, "FileReferral");
#endif
KaxAttached::KaxAttached(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxAttached) EBML_DEF_SEP EBML_EXTRA_CALL)
{
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,57 +1,50 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxAttachments.cpp 640 2004-07-09 21:05:36Z mosu $ \version \$Id: KaxAttachments.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "matroska/KaxAttachments.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxAttached.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxSemantic.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
using namespace LIBEBML_NAMESPACE;
// sub elements
// sub elements START_LIBMATROSKA_NAMESPACE
START_LIBMATROSKA_NAMESPACE
KaxAttachments::KaxAttachments(EBML_EXTRA_DEF)
DEFINE_START_SEMANTIC(KaxAttachments) :EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxAttachments) EBML_DEF_SEP EBML_EXTRA_CALL)
DEFINE_SEMANTIC_ITEM(true, false, KaxAttached) ///< EBMLVersion {
DEFINE_END_SEMANTIC(KaxAttachments) SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
}
DEFINE_MKX_MASTER_CONS(KaxAttachments, 0x1941A469, 4, KaxSegment, "Attachments");
END_LIBMATROSKA_NAMESPACE
KaxAttachments::KaxAttachments(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxAttachments) EBML_DEF_SEP EBML_EXTRA_CALL)
{
SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
}
END_LIBMATROSKA_NAMESPACE

File diff suppressed because it is too large Load Diff

View File

@@ -1,118 +1,114 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxBlockData.cpp 1226 2005-10-13 21:16:43Z robux4 $ \version \$Id: KaxBlockData.cpp 1226 2005-10-13 21:16:43Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include <cassert> #include <cassert>
#include "matroska/KaxBlockData.h" #include "matroska/KaxBlockData.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxBlock.h" #include "matroska/KaxBlock.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxSemantic.h"
using namespace LIBEBML_NAMESPACE;
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxSlices)
DEFINE_SEMANTIC_ITEM(false, false, KaxTimeSlice) const KaxBlockBlob & KaxReferenceBlock::RefBlock() const
DEFINE_END_SEMANTIC(KaxSlices) {
assert(RefdBlock != NULL);
DEFINE_START_SEMANTIC(KaxTimeSlice) return *RefdBlock;
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceLaceNumber) }
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceFrameNumber)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceBlockAddID) KaxReferenceBlock::KaxReferenceBlock(EBML_EXTRA_DEF)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDelay) :EBML_DEF_SINTEGER(KaxReferenceBlock)EBML_DEF_SEP
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDuration) RefdBlock(NULL)
DEFINE_END_SEMANTIC(KaxTimeSlice) ,ParentBlock(NULL)
,bTimecodeSet(false)
DEFINE_MKX_UINTEGER_DEF (KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced", 0); ,bOurBlob(false)
DEFINE_MKX_SINTEGER_CONS(KaxReferenceBlock, 0xFB, 1, KaxBlockGroup, "ReferenceBlock"); {
DEFINE_MKX_MASTER (KaxSlices, 0x8E, 1, KaxBlockGroup, "Slices"); bTimecodeSet = false;
DEFINE_MKX_MASTER (KaxTimeSlice, 0xE8, 1, KaxSlices, "TimeSlice"); }
DEFINE_MKX_UINTEGER_DEF (KaxSliceLaceNumber, 0xCC, 1, KaxTimeSlice, "SliceLaceNumber", 0);
DEFINE_MKX_UINTEGER_DEF (KaxSliceFrameNumber, 0xCD, 1, KaxTimeSlice, "SliceFrameNumber", 0); KaxReferenceBlock::KaxReferenceBlock(const KaxReferenceBlock & ElementToClone)
DEFINE_MKX_UINTEGER_DEF (KaxSliceBlockAddID, 0xCB, 1, KaxTimeSlice, "SliceBlockAddID", 0); :EbmlSInteger(ElementToClone)
DEFINE_MKX_UINTEGER (KaxSliceDelay, 0xCE, 1, KaxTimeSlice, "SliceDelay"); ,RefdBlock(NULL)
DEFINE_MKX_UINTEGER_DEF (KaxSliceDuration, 0xCF, 1, KaxTimeSlice, "SliceDuration", 0); ,ParentBlock(NULL)
#if MATROSKA_VERSION >= 2 ,bTimecodeSet(ElementToClone.bTimecodeSet)
DEFINE_MKX_SINTEGER (KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual"); ,bOurBlob(false)
#endif {
}
const KaxBlockBlob & KaxReferenceBlock::RefBlock() const KaxReferenceBlock::~KaxReferenceBlock()
{ {
assert(RefdBlock != NULL); FreeBlob();
return *RefdBlock; }
}
void KaxReferenceBlock::FreeBlob()
KaxReferenceBlock::KaxReferenceBlock(EBML_EXTRA_DEF) {
:EBML_DEF_SINTEGER(KaxReferenceBlock)EBML_DEF_SEP if (bOurBlob && RefdBlock!=NULL)
RefdBlock(NULL) delete RefdBlock;
,ParentBlock(NULL) RefdBlock = NULL;
{ }
bTimecodeSet = false;
} filepos_t KaxReferenceBlock::UpdateSize(bool bSaveDefault, bool bForceRender)
{
KaxReferenceBlock::KaxReferenceBlock(const KaxReferenceBlock & ElementToClone) if (!bTimecodeSet) {
:EbmlSInteger(ElementToClone) assert(RefdBlock != NULL);
,bTimecodeSet(ElementToClone.bTimecodeSet) assert(ParentBlock != NULL);
{
} const KaxInternalBlock &block = *RefdBlock;
*static_cast<EbmlSInteger*>(this) = (int64(block.GlobalTimecode()) - int64(ParentBlock->GlobalTimecode())) / int64(ParentBlock->GlobalTimecodeScale());
filepos_t KaxReferenceBlock::UpdateSize(bool bSaveDefault, bool bForceRender) }
{ return EbmlSInteger::UpdateSize(bSaveDefault, bForceRender);
if (!bTimecodeSet) { }
assert(RefdBlock != NULL);
assert(ParentBlock != NULL); void KaxReferenceBlock::SetReferencedBlock(const KaxBlockBlob * aRefdBlock)
{
const KaxInternalBlock &block = *RefdBlock; assert(RefdBlock == NULL);
*static_cast<EbmlSInteger*>(this) = (int64(block.GlobalTimecode()) - int64(ParentBlock->GlobalTimecode())) / int64(ParentBlock->GlobalTimecodeScale()); assert(aRefdBlock != NULL);
} FreeBlob();
return EbmlSInteger::UpdateSize(bSaveDefault, bForceRender); RefdBlock = aRefdBlock;
} bOurBlob = true;
SetValueIsSet();
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockBlob * aRefdBlock) }
{
assert(RefdBlock == NULL); void KaxReferenceBlock::SetReferencedBlock(const KaxBlockGroup & aRefdBlock)
assert(aRefdBlock != NULL); {
RefdBlock = aRefdBlock; FreeBlob();
SetValueIsSet(); KaxBlockBlob *block_blob = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
} block_blob->SetBlockGroup(*const_cast<KaxBlockGroup*>(&aRefdBlock));
RefdBlock = block_blob;
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockGroup & aRefdBlock) bOurBlob = true;
{ SetValueIsSet();
KaxBlockBlob *block_blob = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE); }
block_blob->SetBlockGroup(*const_cast<KaxBlockGroup*>(&aRefdBlock));
RefdBlock = block_blob; END_LIBMATROSKA_NAMESPACE
SetValueIsSet();
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,118 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxChapters.cpp 1201 2005-08-30 14:28:27Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxChapters.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxChapters)
DEFINE_SEMANTIC_ITEM(true, false, KaxEditionEntry)
DEFINE_END_SEMANTIC(KaxChapters)
DEFINE_START_SEMANTIC(KaxEditionEntry)
DEFINE_SEMANTIC_ITEM(false, true, KaxEditionUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxEditionFlagHidden)
DEFINE_SEMANTIC_ITEM(true, true, KaxEditionFlagDefault)
DEFINE_SEMANTIC_ITEM(false, true, KaxEditionFlagOrdered)
DEFINE_SEMANTIC_ITEM(true, false, KaxChapterAtom)
DEFINE_END_SEMANTIC(KaxEditionEntry)
DEFINE_START_SEMANTIC(KaxChapterAtom)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterAtom)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTimeStart)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterTimeEnd)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterFlagHidden)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterFlagEnabled)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterSegmentUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterSegmentEditionUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterPhysicalEquiv)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterTrack)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterDisplay)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterProcess)
DEFINE_END_SEMANTIC(KaxChapterAtom)
DEFINE_START_SEMANTIC(KaxChapterTrack)
DEFINE_SEMANTIC_ITEM(true, false, KaxChapterTrackNumber)
DEFINE_END_SEMANTIC(KaxChapterTrack)
DEFINE_START_SEMANTIC(KaxChapterDisplay)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterString)
DEFINE_SEMANTIC_ITEM(true, false, KaxChapterLanguage)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterCountry)
DEFINE_END_SEMANTIC(KaxChapterDisplay)
DEFINE_START_SEMANTIC(KaxChapterProcess)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessCodecID)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterProcessPrivate)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterProcessCommand)
DEFINE_END_SEMANTIC(KaxChapterProcess)
DEFINE_START_SEMANTIC(KaxChapterProcessCommand)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessTime)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessData)
DEFINE_END_SEMANTIC(KaxChapterProcessCommand)
DEFINE_MKX_MASTER (KaxChapters, 0x1043A770, 4, KaxSegment, "Chapters");
DEFINE_MKX_MASTER (KaxEditionEntry, 0x45B9, 2, KaxChapters, "EditionEntry");
DEFINE_MKX_UINTEGER (KaxEditionUID, 0x45BC, 2, KaxEditionEntry, "EditionUID");
DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagHidden, 0x45BD, 2, KaxEditionEntry, "EditionFlagHidden", 0);
DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagDefault, 0x45DB, 2, KaxEditionEntry, "EditionFlagDefault", 0);
DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagOrdered, 0x45DD, 2, KaxEditionEntry, "EditionFlagOrdered", 0);
DEFINE_MKX_MASTER (KaxChapterAtom, 0xB6, 1, KaxEditionEntry, "ChapterAtom");
DEFINE_MKX_UINTEGER (KaxChapterUID, 0x73C4, 2, KaxChapterAtom, "ChapterUID");
DEFINE_MKX_UINTEGER (KaxChapterTimeStart, 0x91, 1, KaxChapterAtom, "ChapterTimeStart");
DEFINE_MKX_UINTEGER (KaxChapterTimeEnd, 0x92, 1, KaxChapterAtom, "ChapterTimeEnd");
DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagHidden, 0x98, 1, KaxChapterAtom, "ChapterFlagHidden", 0);
DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagEnabled, 0x4598, 2, KaxChapterAtom, "ChapterFlagEnabled", 1);
DEFINE_MKX_BINARY (KaxChapterSegmentUID, 0x6E67, 2, KaxChapterAtom, "ChapterSegmentUID");
DEFINE_MKX_BINARY (KaxChapterSegmentEditionUID, 0x6EBC, 2, KaxChapterAtom, "ChapterSegmentEditionUID");
DEFINE_MKX_UINTEGER (KaxChapterPhysicalEquiv, 0x63C3, 2, KaxChapterAtom, "ChapterPhysicalEquiv");
DEFINE_MKX_MASTER (KaxChapterTrack, 0x8F, 1, KaxChapterAtom, "ChapterTrack");
DEFINE_MKX_UINTEGER (KaxChapterTrackNumber, 0x89, 1, KaxChapterTrack, "ChapterTrackNumber");
DEFINE_MKX_MASTER (KaxChapterDisplay, 0x80, 1, KaxChapterAtom, "ChapterDisplay");
DEFINE_MKX_UNISTRING (KaxChapterString, 0x85, 1, KaxChapterDisplay, "ChapterString");
DEFINE_MKX_STRING_DEF (KaxChapterLanguage, 0x437C, 2, KaxChapterLanguage, "ChapterLanguage", "eng"); // parent context ?
DEFINE_MKX_STRING (KaxChapterCountry, 0x437E, 2, KaxChapterCountry, "ChapterCountry"); // parent context ?
DEFINE_MKX_MASTER (KaxChapterProcess, 0x6944, 2, KaxChapterAtom, "ChapterProcess");
DEFINE_MKX_UINTEGER_DEF(KaxChapterProcessCodecID, 0x6955, 2, KaxChapterProcess, "ChapterProcessCodecID", 0);
DEFINE_MKX_BINARY (KaxChapterProcessPrivate, 0x450D, 2, KaxChapterProcess, "ChapterProcessPrivate");
DEFINE_MKX_MASTER (KaxChapterProcessCommand, 0x6911, 2, KaxChapterProcess, "ChapterProcessCommand");
DEFINE_MKX_UINTEGER (KaxChapterProcessTime, 0x6922, 2, KaxChapterProcessCommand, "ChapterProcessTime");
DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, 2, KaxChapterProcessCommand, "ChapterProcessData");
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,334 +1,320 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxCluster.cpp 1228 2005-10-14 19:36:51Z robux4 $ \version \$Id: KaxCluster.cpp 1228 2005-10-14 19:36:51Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "matroska/KaxCluster.h" #include "matroska/KaxCluster.h"
#include "matroska/KaxClusterData.h" #include "matroska/KaxBlock.h"
#include "matroska/KaxBlock.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxSegment.h"
#include "matroska/KaxSegment.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxDefines.h"
// sub elements
// sub elements START_LIBMATROSKA_NAMESPACE
START_LIBMATROSKA_NAMESPACE
KaxCluster::KaxCluster(EBML_EXTRA_DEF)
DEFINE_START_SEMANTIC(KaxCluster) :EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxCluster) EBML_DEF_SEP EBML_EXTRA_CALL)
DEFINE_SEMANTIC_ITEM(true, true, KaxClusterTimecode) ,currentNewBlock(NULL)
DEFINE_SEMANTIC_ITEM(false, true, KaxClusterSilentTracks) ,ParentSegment(NULL)
DEFINE_SEMANTIC_ITEM(false, true, KaxClusterPrevSize) ,bFirstFrameInside(false)
DEFINE_SEMANTIC_ITEM(false, false, KaxBlockGroup) ,bPreviousTimecodeIsSet(false)
#if MATROSKA_VERSION == 2 ,bTimecodeScaleIsSet(false)
DEFINE_SEMANTIC_ITEM(false, false, KaxSimpleBlock) ,bSilentTracksUsed(false)
#endif {}
DEFINE_SEMANTIC_ITEM(false, true, KaxClusterPosition)
DEFINE_END_SEMANTIC(KaxCluster) KaxCluster::KaxCluster(const KaxCluster & ElementToClone)
:EbmlMaster(ElementToClone)
DEFINE_MKX_MASTER_CONS(KaxCluster, 0x1F43B675, 4, KaxSegment, "Cluster"); ,bSilentTracksUsed(ElementToClone.bSilentTracksUsed)
{
KaxCluster::KaxCluster(EBML_EXTRA_DEF) // update the parent of each children
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxCluster) EBML_DEF_SEP EBML_EXTRA_CALL) EBML_MASTER_ITERATOR Itr = begin();
,currentNewBlock(NULL) while (Itr != end())
,ParentSegment(NULL) {
,bFirstFrameInside(false) if (EbmlId(**Itr) == EBML_ID(KaxBlockGroup)) {
,bPreviousTimecodeIsSet(false) static_cast<KaxBlockGroup *>(*Itr)->SetParent(*this);
,bTimecodeScaleIsSet(false) } else if (EbmlId(**Itr) == EBML_ID(KaxBlock)) {
,bSilentTracksUsed(false) static_cast<KaxBlock *>(*Itr)->SetParent(*this);
{} #if MATROSKA_VERSION >= 2
} else if (EbmlId(**Itr) == EBML_ID(KaxBlockVirtual)) {
KaxCluster::KaxCluster(const KaxCluster & ElementToClone) static_cast<KaxBlockVirtual *>(*Itr)->SetParent(*this);
:EbmlMaster(ElementToClone) #endif // MATROSKA_VERSION
,bSilentTracksUsed(ElementToClone.bSilentTracksUsed) }
{ ++Itr;
// update the parent of each children }
EBML_MASTER_ITERATOR Itr = begin(); }
while (Itr != end())
{ bool KaxCluster::AddBlockBlob(KaxBlockBlob * NewBlob)
if (EbmlId(**Itr) == EBML_ID(KaxBlockGroup)) { {
static_cast<KaxBlockGroup *>(*Itr)->SetParent(*this); Blobs.push_back(NewBlob);
} else if (EbmlId(**Itr) == EBML_ID(KaxBlock)) { return true;
static_cast<KaxBlock *>(*Itr)->SetParent(*this); }
#if MATROSKA_VERSION >= 2
} else if (EbmlId(**Itr) == EBML_ID(KaxBlockVirtual)) { bool KaxCluster::AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing)
static_cast<KaxBlockVirtual *>(*Itr)->SetParent(*this); {
#endif // MATROSKA_VERSION if (!bFirstFrameInside) {
} bFirstFrameInside = true;
++Itr; MinTimecode = MaxTimecode = timecode;
} } else {
} if (timecode < MinTimecode)
MinTimecode = timecode;
bool KaxCluster::AddBlockBlob(KaxBlockBlob * NewBlob) if (timecode > MaxTimecode)
{ MaxTimecode = timecode;
Blobs.push_back(NewBlob); }
return true;
} MyNewBlock = NULL;
bool KaxCluster::AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing) if (lacing == LACING_NONE || !track.LacingEnabled()) {
{ currentNewBlock = NULL;
if (!bFirstFrameInside) { }
bFirstFrameInside = true;
MinTimecode = MaxTimecode = timecode; // force creation of a new block
} else { if (currentNewBlock == NULL || uint32(track.TrackNumber()) != uint32(currentNewBlock->TrackNumber()) || PastBlock != NULL || ForwBlock != NULL) {
if (timecode < MinTimecode) KaxBlockGroup & aNewBlock = GetNewBlock();
MinTimecode = timecode; MyNewBlock = currentNewBlock = &aNewBlock;
if (timecode > MaxTimecode) currentNewBlock = &aNewBlock;
MaxTimecode = timecode; }
}
if (PastBlock != NULL) {
MyNewBlock = NULL; if (ForwBlock != NULL) {
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, *ForwBlock, lacing)) {
if (lacing == LACING_NONE || !track.LacingEnabled()) { // more data are allowed in this Block
currentNewBlock = NULL; return true;
} } else {
currentNewBlock = NULL;
// force creation of a new block return false;
if (currentNewBlock == NULL || uint32(track.TrackNumber()) != uint32(currentNewBlock->TrackNumber()) || PastBlock != NULL || ForwBlock != NULL) { }
KaxBlockGroup & aNewBlock = GetNewBlock(); } else {
MyNewBlock = currentNewBlock = &aNewBlock; if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, lacing)) {
currentNewBlock = &aNewBlock; // more data are allowed in this Block
} return true;
} else {
if (PastBlock != NULL) { currentNewBlock = NULL;
if (ForwBlock != NULL) { return false;
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, *ForwBlock, lacing)) { }
// more data are allowed in this Block }
return true; } else {
} else { if (currentNewBlock->AddFrame(track, timecode, buffer, lacing)) {
currentNewBlock = NULL; // more data are allowed in this Block
return false; return true;
} } else {
} else { currentNewBlock = NULL;
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, lacing)) { return false;
// more data are allowed in this Block }
return true; }
} else { }
currentNewBlock = NULL;
return false; bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing)
} {
} assert(Blobs.size() == 0); // mutually exclusive for the moment
} else { return AddFrameInternal(track, timecode, buffer, MyNewBlock, NULL, NULL, lacing);
if (currentNewBlock->AddFrame(track, timecode, buffer, lacing)) { }
// more data are allowed in this Block
return true; bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing)
} else { {
currentNewBlock = NULL; assert(Blobs.size() == 0); // mutually exclusive for the moment
return false; return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, NULL, lacing);
} }
}
} bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing)
{
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, LacingType lacing) assert(Blobs.size() == 0); // mutually exclusive for the moment
{ return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, &ForwBlock, lacing);
assert(Blobs.size() == 0); // mutually exclusive for the moment }
return AddFrameInternal(track, timecode, buffer, MyNewBlock, NULL, NULL, lacing);
} /*!
\todo only put the Blocks written in the cue entries
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing) */
{ filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault)
assert(Blobs.size() == 0); // mutually exclusive for the moment {
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, NULL, lacing); filepos_t Result = 0;
} size_t Index;
EBML_MASTER_ITERATOR TrkItr, Itr;
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing)
{ // update the Timecode of the Cluster before writing
assert(Blobs.size() == 0); // mutually exclusive for the moment KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, &ForwBlock, lacing); *static_cast<EbmlUInteger *>(Timecode) = GlobalTimecode() / GlobalTimecodeScale();
}
if (Blobs.size() == 0) {
/*! // old-school direct KaxBlockGroup
\todo only put the Blocks written in the cue entries
*/ // SilentTracks handling
filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault) // check the parent cluster for existing tracks and see if they are contained in this cluster or not
{ if (bSilentTracksUsed)
filepos_t Result = 0; {
size_t Index; KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
EBML_MASTER_ITERATOR TrkItr, Itr; for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr)
{
// update the Timecode of the Cluster before writing if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry))
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode))); {
*static_cast<EbmlUInteger *>(Timecode) = GlobalTimecode() / GlobalTimecodeScale(); KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr);
uint32 tracknum = entry.TrackNumber();
if (Blobs.size() == 0) { for (Itr = begin(); Itr != end(); ++Itr)
// old-school direct KaxBlockGroup {
if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {
// SilentTracks handling KaxBlockGroup & group = *static_cast<KaxBlockGroup *>(*Itr);
// check the parent cluster for existing tracks and see if they are contained in this cluster or not if (group.TrackNumber() == tracknum)
if (bSilentTracksUsed) break; // this track is used
{ }
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks))); }
for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr) // the track wasn't found in this cluster
{ if (Itr == end())
if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry)) {
{ KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr); assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
uint32 tracknum = entry.TrackNumber(); KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
for (Itr = begin(); Itr != end(); ++Itr) *static_cast<EbmlUInteger *>(trackelt) = tracknum;
{ }
if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) { }
KaxBlockGroup & group = *static_cast<KaxBlockGroup *>(*Itr); }
if (group.TrackNumber() == tracknum) }
break; // this track is used
} Result = EbmlMaster::Render(output, bSaveDefault);
} // For all Blocks add their position on the CueEntry
// the track wasn't found in this cluster
if (Itr == end()) for (Itr = begin(); Itr != end(); ++Itr)
{ {
KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks))); if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {
assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>(*Itr));
KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber))); }
*static_cast<EbmlUInteger *>(trackelt) = tracknum; }
} } else {
} // new school, using KaxBlockBlob
} for (Index = 0; Index<Blobs.size(); Index++)
} {
#if MATROSKA_VERSION >= 2
Result = EbmlMaster::Render(output, bSaveDefault); if (Blobs[Index]->IsSimpleBlock())
// For all Blocks add their position on the CueEntry PushElement( (KaxSimpleBlock&) *Blobs[Index] );
else
for (Itr = begin(); Itr != end(); ++Itr) #endif
{ PushElement( (KaxBlockGroup&) *Blobs[Index] );
if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) { }
CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>(*Itr));
} // SilentTracks handling
} // check the parent cluster for existing tracks and see if they are contained in this cluster or not
} else { if (bSilentTracksUsed)
// new school, using KaxBlockBlob {
for (Index = 0; Index<Blobs.size(); Index++) KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
{ for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr)
#if MATROSKA_VERSION >= 2 {
if (Blobs[Index]->IsSimpleBlock()) if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry))
PushElement( (KaxSimpleBlock&) *Blobs[Index] ); {
else KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr);
#endif uint32 tracknum = entry.TrackNumber();
PushElement( (KaxBlockGroup&) *Blobs[Index] ); for (Index = 0; Index<Blobs.size(); Index++) {
} if (((KaxInternalBlock&)*Blobs[Index]).TrackNum() == tracknum)
break; // this track is used
// SilentTracks handling }
// check the parent cluster for existing tracks and see if they are contained in this cluster or not // the track wasn't found in this cluster
if (bSilentTracksUsed) if (Index == ListSize())
{ {
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks))); KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr) assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
{ KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry)) *static_cast<EbmlUInteger *>(trackelt) = tracknum;
{ }
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr); }
uint32 tracknum = entry.TrackNumber(); }
for (Index = 0; Index<Blobs.size(); Index++) { }
if (((KaxInternalBlock&)*Blobs[Index]).TrackNum() == tracknum)
break; // this track is used Result = EbmlMaster::Render(output, bSaveDefault);
}
// the track wasn't found in this cluster // For all Blocks add their position on the CueEntry
if (Index == ListSize()) for (Index = 0; Index<Blobs.size(); Index++) {
{ CueToUpdate.PositionSet(*Blobs[Index]);
KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks))); }
assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber))); Blobs.clear();
*static_cast<EbmlUInteger *>(trackelt) = tracknum; }
}
} return Result;
} }
}
/*!
Result = EbmlMaster::Render(output, bSaveDefault); \todo automatically choose valid timecode for the Cluster based on the previous cluster timecode (must be incremental)
*/
// For all Blocks add their position on the CueEntry uint64 KaxCluster::GlobalTimecode() const
for (Index = 0; Index<Blobs.size(); Index++) { {
CueToUpdate.PositionSet(*Blobs[Index]); assert(bPreviousTimecodeIsSet);
} uint64 result = MinTimecode;
Blobs.clear(); if (result < PreviousTimecode)
} result = PreviousTimecode + 1;
return Result; return result;
} }
/*! /*!
\todo automatically choose valid timecode for the Cluster based on the previous cluster timecode (must be incremental) \brief retrieve the relative
*/ \todo !!! We need a way to know the TimecodeScale
uint64 KaxCluster::GlobalTimecode() const */
{ int16 KaxCluster::GetBlockLocalTimecode(uint64 aGlobalTimecode) const
assert(bPreviousTimecodeIsSet); {
uint64 result = MinTimecode; int64 TimecodeDelay = (int64(aGlobalTimecode) - int64(GlobalTimecode())) / int64(GlobalTimecodeScale());
assert(TimecodeDelay >= int16(0x8000) && TimecodeDelay <= int16(0x7FFF));
if (result < PreviousTimecode) return int16(TimecodeDelay);
result = PreviousTimecode + 1; }
return result; uint64 KaxCluster::GetBlockGlobalTimecode(int16 GlobalSavedTimecode)
} {
if (!bFirstFrameInside) {
/*! KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
\brief retrieve the relative assert (bFirstFrameInside); // use the InitTimecode() hack for now
\todo !!! We need a way to know the TimecodeScale MinTimecode = MaxTimecode = PreviousTimecode = *static_cast<EbmlUInteger *>(Timecode);
*/ bFirstFrameInside = true;
int16 KaxCluster::GetBlockLocalTimecode(uint64 aGlobalTimecode) const bPreviousTimecodeIsSet = true;
{ }
int64 TimecodeDelay = (int64(aGlobalTimecode) - int64(GlobalTimecode())) / int64(GlobalTimecodeScale()); return int64(GlobalSavedTimecode * GlobalTimecodeScale()) + GlobalTimecode();
assert(TimecodeDelay >= int16(0x8000) && TimecodeDelay <= int16(0x7FFF)); }
return int16(TimecodeDelay);
} KaxBlockGroup & KaxCluster::GetNewBlock()
{
uint64 KaxCluster::GetBlockGlobalTimecode(int16 GlobalSavedTimecode) KaxBlockGroup & MyBlock = AddNewChild<KaxBlockGroup>(*this);
{ MyBlock.SetParent(*this);
if (!bFirstFrameInside) { return MyBlock;
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode))); }
assert (bFirstFrameInside); // use the InitTimecode() hack for now
MinTimecode = MaxTimecode = PreviousTimecode = *static_cast<EbmlUInteger *>(Timecode); void KaxCluster::ReleaseFrames()
bFirstFrameInside = true; {
bPreviousTimecodeIsSet = true; EBML_MASTER_ITERATOR Itr;
} for (Itr = begin(); Itr != end(); ++Itr)
return int64(GlobalSavedTimecode * GlobalTimecodeScale()) + GlobalTimecode(); {
} if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {
static_cast<KaxBlockGroup*>(*Itr)->ReleaseFrames();
KaxBlockGroup & KaxCluster::GetNewBlock() }
{ }
KaxBlockGroup & MyBlock = AddNewChild<KaxBlockGroup>(*this); }
MyBlock.SetParent(*this);
return MyBlock; uint64 KaxCluster::GetPosition() const
} {
assert(ParentSegment != NULL);
void KaxCluster::ReleaseFrames() return ParentSegment->GetRelativePosition(*this);
{ }
EBML_MASTER_ITERATOR Itr;
for (Itr = begin(); Itr != end(); ++Itr) END_LIBMATROSKA_NAMESPACE
{
if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {
static_cast<KaxBlockGroup*>(*Itr)->ReleaseFrames();
}
}
}
uint64 KaxCluster::GetPosition() const
{
assert(ParentSegment != NULL);
return ParentSegment->GetRelativePosition(*this);
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,51 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxClusterData.cpp 955 2004-11-28 15:24:37Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxClusterData.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxClusterSilentTracks)
DEFINE_SEMANTIC_ITEM(false, false, KaxClusterSilentTrackNumber)
DEFINE_END_SEMANTIC(KaxClusterSilentTracks)
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");
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,83 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxContentEncoding.cpp 640 2004-07-09 21:05:36Z mosu $
\author Moritz Bunkus <moritz @ bunkus.org>
*/
#include "matroska/KaxContentEncoding.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxContentEncodings)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncoding)
DEFINE_END_SEMANTIC(KaxContentEncodings)
DEFINE_START_SEMANTIC(KaxContentEncoding)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingOrder)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingScope)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingType)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentCompression)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncryption)
DEFINE_END_SEMANTIC(KaxContentEncoding)
DEFINE_START_SEMANTIC(KaxContentCompression)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentCompAlgo)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentCompSettings)
DEFINE_END_SEMANTIC(KaxContentCompression)
DEFINE_START_SEMANTIC(KaxContentEncryption)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncAlgo)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncKeyID)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSignature)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigKeyID)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigAlgo)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigHashAlgo)
DEFINE_END_SEMANTIC(KaxContentEncryption)
DEFINE_MKX_MASTER (KaxContentEncodings, 0x6d80, 2, KaxTrackEntry, "ContentEncodings");
DEFINE_MKX_MASTER (KaxContentEncoding, 0x6240, 2, KaxContentEncodings, "ContentEncoding");
DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingOrder, 0x5031, 2, KaxContentEncoding, "ContentEncodingOrder", 0);
DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingScope, 0x5032, 2, KaxContentEncoding, "ContentEncodingScope", 1);
DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingType, 0x5033, 2, KaxContentEncoding, "ContentEncodingType", 0);
DEFINE_MKX_MASTER (KaxContentCompression, 0x5034, 2, KaxContentEncoding, "ContentCompression");
DEFINE_MKX_UINTEGER_DEF(KaxContentCompAlgo, 0x4254, 2, KaxContentCompression, "ContentCompAlgo", 0);
DEFINE_MKX_BINARY (KaxContentCompSettings, 0x4255, 2, KaxContentCompression, "ContentCompSettings");
DEFINE_MKX_MASTER (KaxContentEncryption, 0x5035, 2, KaxContentEncoding, "ContentEncryption");
DEFINE_MKX_UINTEGER_DEF(KaxContentEncAlgo, 0x47e1, 2, KaxContentEncryption, "ContentEncAlgo", 0);
DEFINE_MKX_BINARY (KaxContentEncKeyID, 0x47e2, 2, KaxContentEncryption, "ContentEncKeyID");
DEFINE_MKX_BINARY (KaxContentSignature, 0x47e3, 2, KaxContentEncryption, "ContentSignature");
DEFINE_MKX_BINARY (KaxContentSigKeyID, 0x47e4, 2, KaxContentEncryption, "ContentSigKeyID");
DEFINE_MKX_UINTEGER_DEF(KaxContentSigAlgo, 0x47e5, 2, KaxContentEncryption, "ContentSigAlgo", 0);
DEFINE_MKX_UINTEGER_DEF(KaxContentSigHashAlgo, 0x47e6, 2, KaxContentEncryption, "ContentSigHashAlgo", 0);
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,61 +1,67 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxContexts.cpp 640 2004-07-09 21:05:36Z mosu $ \version \$Id: KaxContexts.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "ebml/EbmlContexts.h" #include "ebml/EbmlContexts.h"
#include "matroska/KaxContexts.h" #include "ebml/EbmlHead.h"
#include "matroska/KaxAttached.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxAttachments.h" #include "matroska/KaxBlock.h"
#include "matroska/KaxBlock.h" #include "matroska/KaxCluster.h"
#include "matroska/KaxCluster.h" #include "matroska/KaxSegment.h"
#include "matroska/KaxSegment.h" #include "matroska/KaxTracks.h"
#include "matroska/KaxTracks.h"
using namespace LIBEBML_NAMESPACE;
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxMatroska)
DEFINE_SEMANTIC_CONTEXT(KaxSegment) DEFINE_SEMANTIC_ITEM(true, true, EbmlHead)
DEFINE_SEMANTIC_CONTEXT(KaxAttached) DEFINE_SEMANTIC_ITEM(false, false, KaxSegment)
DEFINE_SEMANTIC_CONTEXT(KaxAttachments) DEFINE_END_SEMANTIC(KaxMatroska)
DEFINE_SEMANTIC_CONTEXT(KaxBlockGroup)
DEFINE_SEMANTIC_CONTEXT(KaxCluster) DEFINE_MKX_CONTEXT(KaxMatroska)
DEFINE_SEMANTIC_CONTEXT(KaxTrackEntry)
DEFINE_SEMANTIC_CONTEXT(KaxSegment)
// for the moment DEFINE_SEMANTIC_CONTEXT(KaxAttached)
const EbmlSemanticContext & GetKaxGlobal_Context() DEFINE_SEMANTIC_CONTEXT(KaxAttachments)
{ DEFINE_SEMANTIC_CONTEXT(KaxBlockGroup)
return GetEbmlGlobal_Context(); DEFINE_SEMANTIC_CONTEXT(KaxCluster)
} DEFINE_SEMANTIC_CONTEXT(KaxTrackEntry)
END_LIBMATROSKA_NAMESPACE // for the moment
const EbmlSemanticContext & GetKaxGlobal_Context()
{
return GetEbmlGlobal_Context();
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -17,9 +17,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -37,36 +37,34 @@
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "ebml/EbmlStream.h" #include "ebml/EbmlStream.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxSemantic.h"
// sub elements // sub elements
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxCues)
DEFINE_SEMANTIC_ITEM(true, false, KaxCuePoint)
DEFINE_END_SEMANTIC(KaxCues)
DEFINE_MKX_MASTER(KaxCues, 0x1C53BB6B, 4, KaxSegment, "Cues");
KaxCues::~KaxCues() KaxCues::~KaxCues()
{ {
assert(myTempReferences.size() == 0); // otherwise that means you have added references and forgot to set the position assert(myTempReferences.size() == 0); // otherwise that means you have added references and forgot to set the position
} }
/* deprecated and wrong
bool KaxCues::AddBlockGroup(const KaxBlockGroup & BlockRef) bool KaxCues::AddBlockGroup(const KaxBlockGroup & BlockRef)
{ {
// Do not add the element if it's already present. // Do not add the element if it's already present.
std::vector<const KaxBlockBlob *>::iterator ListIdx; std::vector<const KaxBlockBlob *>::iterator ListIdx;
KaxBlockBlob &BlockReference = *(new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE)); KaxBlockBlob *BlockReference = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
BlockReference.SetBlockGroup(*const_cast<KaxBlockGroup*>(&BlockRef)); BlockReference->SetBlockGroup(*const_cast<KaxBlockGroup*>(&BlockRef));
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++)
if (*ListIdx == &BlockReference) if (&(KaxBlockGroup&)*ListIdx == &BlockRef)
{
delete BlockReference;
return true; return true;
}
myTempReferences.push_back(&BlockReference); myTempReferences.push_back(BlockReference);
return true; return true;
} }
*/
bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference) bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference)
{ {
// Do not add the element if it's already present. // Do not add the element if it's already present.
@@ -122,7 +120,6 @@ const KaxCuePoint * KaxCues::GetTimecodePoint(uint64 aTimecode) const
uint64 TimecodeToLocate = aTimecode / GlobalTimecodeScale(); uint64 TimecodeToLocate = aTimecode / GlobalTimecodeScale();
const KaxCuePoint * aPointPrev = NULL; const KaxCuePoint * aPointPrev = NULL;
uint64 aPrevTime = 0; uint64 aPrevTime = 0;
const KaxCuePoint * aPointNext = NULL;
uint64 aNextTime = EBML_PRETTYLONGINT(0xFFFFFFFFFFFF); uint64 aNextTime = EBML_PRETTYLONGINT(0xFFFFFFFFFFFF);
EBML_MASTER_CONST_ITERATOR Itr; EBML_MASTER_CONST_ITERATOR Itr;
@@ -141,7 +138,6 @@ const KaxCuePoint * KaxCues::GetTimecodePoint(uint64 aTimecode) const
} }
if (_Time < aNextTime && _Time > TimecodeToLocate) { if (_Time < aNextTime && _Time > TimecodeToLocate) {
aNextTime= _Time; aNextTime= _Time;
aPointNext = tmp;
} }
} }
} }

View File

@@ -1,279 +1,241 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxCuesData.cpp 1265 2007-01-14 17:20:35Z mosu $ \version \$Id: KaxCuesData.cpp 1265 2007-01-14 17:20:35Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include <cassert> #include <cassert>
#include "matroska/KaxCuesData.h" #include "matroska/KaxCuesData.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxBlock.h" #include "matroska/KaxBlock.h"
#include "matroska/KaxBlockData.h" #include "matroska/KaxBlockData.h"
#include "matroska/KaxCluster.h" #include "matroska/KaxCluster.h"
#include "matroska/KaxSegment.h" #include "matroska/KaxSegment.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxSemantic.h"
START_LIBMATROSKA_NAMESPACE
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxCuePoint)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueTime) /*!
DEFINE_SEMANTIC_ITEM(true, false, KaxCueTrackPositions) \todo handle codec state checking
DEFINE_END_SEMANTIC(KaxCuePoint) \todo remove duplicate references (reference to 2 frames that each reference the same frame)
*/
DEFINE_START_SEMANTIC(KaxCueTrackPositions) void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueTrack) {
DEFINE_SEMANTIC_ITEM(true, true, KaxCueClusterPosition) // fill me
DEFINE_SEMANTIC_ITEM(false, true, KaxCueBlockNumber) KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
#if MATROSKA_VERSION >= 2 *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
DEFINE_SEMANTIC_ITEM(false, true, KaxCueCodecState)
DEFINE_SEMANTIC_ITEM(false, false, KaxCueReference) KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
#endif // MATROSKA_VERSION KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
DEFINE_END_SEMANTIC(KaxCueTrackPositions) *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber();
#if MATROSKA_VERSION >= 2 KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
DEFINE_START_SEMANTIC(KaxCueReference) *static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
DEFINE_SEMANTIC_ITEM(true, true, KaxCueRefTime)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueRefCluster) #if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxCueRefNumber) // handle reference use
DEFINE_SEMANTIC_ITEM(false, true, KaxCueRefCodecState) if (BlockReference.ReferenceCount() != 0)
DEFINE_END_SEMANTIC(KaxCueReference) {
#endif // MATROSKA_VERSION unsigned int i;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
DEFINE_MKX_MASTER (KaxCuePoint, 0xBB, 1, KaxCues, "CuePoint"); KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
DEFINE_MKX_UINTEGER (KaxCueTime, 0xB3, 1, KaxCuePoint, "CueTime"); NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
DEFINE_MKX_MASTER (KaxCueTrackPositions, 0xB7, 1, KaxCuePoint, "CueTrackPositions"); }
DEFINE_MKX_UINTEGER (KaxCueTrack, 0xF7, 1, KaxCueTrackPositions, "CueTrack"); }
DEFINE_MKX_UINTEGER (KaxCueClusterPosition, 0xF1, 1, KaxCueTrackPositions, "CueClusterPosition");
DEFINE_MKX_UINTEGER_DEF(KaxCueBlockNumber, 0x5378, 2, KaxCueTrackPositions, "CueBlockNumber", 1); KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState)));
#if MATROSKA_VERSION >= 2 if (CodecState != NULL) {
DEFINE_MKX_UINTEGER_DEF(KaxCueCodecState, 0xEA, 1, KaxCueTrackPositions, "CueCodecState", 0); KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
DEFINE_MKX_MASTER (KaxCueReference, 0xDB, 1, KaxCueTrackPositions, "CueReference"); *static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
DEFINE_MKX_UINTEGER (KaxCueRefTime, 0x96, 1, KaxCueReference, "CueRefTime"); }
DEFINE_MKX_UINTEGER (KaxCueRefCluster, 0x97, 1, KaxCueRefTime, "CueRefCluster"); #endif // MATROSKA_VERSION
DEFINE_MKX_UINTEGER_DEF(KaxCueRefNumber, 0x535F, 2, KaxCueRefTime, "CueRefNumber", 1);
DEFINE_MKX_UINTEGER_DEF(KaxCueRefCodecState, 0xEB, 1, KaxCueRefTime, "CueRefCodecState", 0); SetValueIsSet();
#endif }
/*! void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale)
\todo handle codec state checking {
\todo remove duplicate references (reference to 2 frames that each reference the same frame) const KaxInternalBlock &BlockReference = BlobReference;
*/
void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale) // fill me
{ KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
// fill me *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale; KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this); *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum();
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber(); KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition(); #if 0 // MATROSKA_VERSION >= 2
// handle reference use
#if MATROSKA_VERSION >= 2 if (BlockReference.ReferenceCount() != 0)
// handle reference use {
if (BlockReference.ReferenceCount() != 0) unsigned int i;
{ for (i=0; i<BlockReference.ReferenceCount(); i++) {
unsigned int i; KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
for (i=0; i<BlockReference.ReferenceCount(); i++) { NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions); }
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale); }
} #endif // MATROSKA_VERSION
}
#if MATROSKA_VERSION >= 2
KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState))); if (!BlobReference.IsSimpleBlock()) {
if (CodecState != NULL) { const KaxBlockGroup &BlockGroup = BlobReference;
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions); const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState)));
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition()); if (CodecState != NULL) {
} KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
#endif // MATROSKA_VERSION *static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
}
SetValueIsSet(); }
} #endif // MATROSKA_VERSION
void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale) SetValueIsSet();
{ }
const KaxInternalBlock &BlockReference = BlobReference;
#if MATROSKA_VERSION >= 2
// fill me /*!
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this); \todo handle codec state checking
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale; */
void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale)
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this); {
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions); const KaxInternalBlock & theBlock = BlockReference;
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum(); KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale;
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition(); KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this);
*static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition();
#if 0 // MATROSKA_VERSION >= 2
// handle reference use #ifdef OLD
if (BlockReference.ReferenceCount() != 0) // handle recursive reference use
{ if (BlockReference.ReferenceCount() != 0)
unsigned int i; {
for (i=0; i<BlockReference.ReferenceCount(); i++) { unsigned int i;
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions); for (i=0; i<BlockReference.ReferenceCount(); i++) {
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale); AddReference(BlockReference.Reference(i).RefBlock());
} }
} }
#endif // MATROSKA_VERSION #endif /* OLD */
}
#if MATROSKA_VERSION >= 2 #endif
if (!BlobReference.IsSimpleBlock()) {
const KaxBlockGroup &BlockGroup = BlobReference; bool KaxCuePoint::IsSmallerThan(const EbmlElement * EltB) const
const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState))); {
if (CodecState != NULL) { assert(EbmlId(*this) == EBML_ID(KaxCuePoint));
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions); assert(EbmlId(*EltB) == EBML_ID(KaxCuePoint));
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
} const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(EltB);
}
#endif // MATROSKA_VERSION // compare timecode
const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime)));
SetValueIsSet(); if (TimeCodeA == NULL)
} return false;
#if MATROSKA_VERSION >= 2 const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime)));
/*! if (TimeCodeB == NULL)
\todo handle codec state checking return false;
*/
void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale) if (TimeCodeA->IsSmallerThan(TimeCodeB))
{ return true;
const KaxInternalBlock & theBlock = BlockReference;
KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this); if (TimeCodeB->IsSmallerThan(TimeCodeA))
*static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale; return false;
KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this); // compare tracks (timecodes are equal)
*static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition(); const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack)));
if (TrackA == NULL)
#ifdef OLD return false;
// handle recursive reference use
if (BlockReference.ReferenceCount() != 0) const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack)));
{ if (TrackB == NULL)
unsigned int i; return false;
for (i=0; i<BlockReference.ReferenceCount(); i++) {
AddReference(BlockReference.Reference(i).RefBlock()); if (TrackA->IsSmallerThan(TrackB))
} return true;
}
#endif /* OLD */ if (TrackB->IsSmallerThan(TrackA))
} return false;
#endif
return false;
bool KaxCuePoint::IsSmallerThan(const EbmlElement * EltB) const }
{
assert(EbmlId(*this) == EBML_ID(KaxCuePoint)); bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const
assert(EbmlId(*EltB) == EBML_ID(KaxCuePoint)); {
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime)));
const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(EltB); if (aTime == NULL)
return false;
// compare timecode aTimecode = uint64(*aTime) * GlobalTimecodeScale;
const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime))); return true;
if (TimeCodeA == NULL) }
return false;
/*!
const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime))); \brief return the position of the Cluster to load
if (TimeCodeB == NULL) */
return false; const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const
{
if (TimeCodeA->IsSmallerThan(TimeCodeB)) const KaxCueTrackPositions * result = NULL;
return true; uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF);
// find the position of the "earlier" Cluster
if (TimeCodeB->IsSmallerThan(TimeCodeA)) const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions)));
return false; while (aPoss != NULL)
{
// compare tracks (timecodes are equal) const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack))); if (aPos != NULL && uint64(*aPos) < aPosition) {
if (TrackA == NULL) aPosition = uint64(*aPos);
return false; result = aPoss;
}
const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack)));
if (TrackB == NULL) aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss));
return false; }
return result;
if (TrackA->IsSmallerThan(TrackB)) }
return true;
uint64 KaxCueTrackPositions::ClusterPosition() const
if (TrackB->IsSmallerThan(TrackA)) {
return false; const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos == NULL)
return false; return 0;
}
return uint64(*aPos);
bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const }
{
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime))); uint16 KaxCueTrackPositions::TrackNumber() const
if (aTime == NULL) {
return false; const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack)));
aTimecode = uint64(*aTime) * GlobalTimecodeScale; if (aTrack == NULL)
return true; return 0;
}
return uint16(*aTrack);
/*! }
\brief return the position of the Cluster to load
*/
const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const END_LIBMATROSKA_NAMESPACE
{
const KaxCueTrackPositions * result = NULL;
uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF);
// find the position of the "earlier" Cluster
const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions)));
while (aPoss != NULL)
{
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos != NULL && uint64(*aPos) < aPosition) {
aPosition = uint64(*aPos);
result = aPoss;
}
aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss));
}
return result;
}
uint64 KaxCueTrackPositions::ClusterPosition() const
{
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos == NULL)
return 0;
return uint64(*aPos);
}
uint16 KaxCueTrackPositions::TrackNumber() const
{
const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack)));
if (aTrack == NULL)
return 0;
return uint16(*aTrack);
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,65 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxInfo.cpp 1078 2005-03-03 13:13:04Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxInfo.h"
#include "matroska/KaxInfoData.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
// sub elements
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxInfo)
DEFINE_SEMANTIC_ITEM(false, true, KaxSegmentUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxSegmentFilename)
DEFINE_SEMANTIC_ITEM(false, true, KaxPrevUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxPrevFilename)
DEFINE_SEMANTIC_ITEM(false, true, KaxNextUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxNextFilename)
DEFINE_SEMANTIC_ITEM(false, false, KaxSegmentFamily)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterTranslate)
DEFINE_SEMANTIC_ITEM(true, true, KaxTimecodeScale)
DEFINE_SEMANTIC_ITEM(false, true, KaxDuration)
DEFINE_SEMANTIC_ITEM(false, true, KaxDateUTC)
DEFINE_SEMANTIC_ITEM(false, true, KaxTitle)
DEFINE_SEMANTIC_ITEM(true, true, KaxMuxingApp)
DEFINE_SEMANTIC_ITEM(true, true, KaxWritingApp)
DEFINE_END_SEMANTIC(KaxInfo)
DEFINE_MKX_MASTER (KaxInfo, 0x1549A966, 4, KaxSegment, "Info");
DEFINE_MKX_UNISTRING(KaxMuxingApp, 0x4D80, 2, KaxInfo, "MuxingApp");
DEFINE_MKX_UNISTRING(KaxWritingApp, 0x5741, 2, KaxInfo, "WritingApp");
END_LIBMATROSKA_NAMESPACE

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -36,31 +36,10 @@
#include "matroska/KaxInfoData.h" #include "matroska/KaxInfoData.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxSemantic.h"
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxChapterTranslate)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterTranslateEditionUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTranslateCodec)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTranslateID)
DEFINE_END_SEMANTIC(KaxChapterTranslate)
DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, 2, KaxInfo, "SegmentUID");
DEFINE_MKX_UNISTRING (KaxSegmentFilename, 0x7384, 2, KaxInfo, "SegmentFilename");
DEFINE_MKX_BINARY_CONS (KaxPrevUID, 0x3CB923, 3, KaxInfo, "PrevUID");
DEFINE_MKX_UNISTRING (KaxPrevFilename, 0x3C83AB, 3, KaxInfo, "PrevFilename");
DEFINE_MKX_BINARY_CONS (KaxNextUID, 0x3EB923, 3, KaxInfo, "NextUID");
DEFINE_MKX_UNISTRING (KaxNextFilename, 0x3E83BB, 3, KaxInfo, "NextFilename");
DEFINE_MKX_BINARY (KaxSegmentFamily, 0x4444, 2, KaxInfo, "SegmentFamily");
DEFINE_MKX_MASTER (KaxChapterTranslate, 0x6924, 2, KaxInfo, "ChapterTranslate");
DEFINE_MKX_UINTEGER (KaxChapterTranslateEditionUID, 0x69FC, 2, KaxChapterTranslate, "ChapterTranslateEditionUID");
DEFINE_MKX_UINTEGER (KaxChapterTranslateCodec, 0x69BF, 2, KaxChapterTranslate, "ChapterTranslateCodec");
DEFINE_MKX_BINARY (KaxChapterTranslateID, 0x69A5, 2, KaxChapterTranslate, "ChapterTranslateID");
DEFINE_MKX_UINTEGER_DEF(KaxTimecodeScale, 0x2AD7B1, 3, KaxInfo, "TimecodeScale", 1000000);
DEFINE_MKX_FLOAT (KaxDuration, 0x4489, 2, KaxInfo, "Duration");
DEFINE_MKX_DATE (KaxDateUTC, 0x4461, 2, KaxInfo, "DateUTC");
DEFINE_MKX_UNISTRING (KaxTitle, 0x7BA9, 2, KaxInfo, "Title");
KaxPrevUID::KaxPrevUID(EBML_EXTRA_DEF) KaxPrevUID::KaxPrevUID(EBML_EXTRA_DEF)
:KaxSegmentUID(EBML_DEF_BINARY_CTX(KaxPrevUID) EBML_DEF_SEP EBML_EXTRA_CALL) :KaxSegmentUID(EBML_DEF_BINARY_CTX(KaxPrevUID) EBML_DEF_SEP EBML_EXTRA_CALL)
{ {
@@ -71,7 +50,7 @@ KaxNextUID::KaxNextUID(EBML_EXTRA_DEF)
{ {
} }
#if defined(HAVE_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
KaxSegmentUID::KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_DEF) KaxSegmentUID::KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_DEF)
:EbmlBinary(EBML_DEF_PARAM EBML_DEF_SEP EBML_EXTRA_CALL) :EbmlBinary(EBML_DEF_PARAM EBML_DEF_SEP EBML_EXTRA_CALL)
{ {

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -43,20 +43,6 @@ using namespace LIBEBML_NAMESPACE;
// sub elements // sub elements
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxSeekHead)
DEFINE_SEMANTIC_ITEM(true, false, KaxSeek)
DEFINE_END_SEMANTIC(KaxSeekHead)
DEFINE_START_SEMANTIC(KaxSeek)
DEFINE_SEMANTIC_ITEM(true, true, KaxSeekID)
DEFINE_SEMANTIC_ITEM(true, true, KaxSeekPosition)
DEFINE_END_SEMANTIC(KaxSeek)
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");
/*! /*!
\todo verify that the element is not already in the list \todo verify that the element is not already in the list
*/ */

View File

@@ -1,109 +1,85 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxSegment.cpp 1096 2005-03-17 09:14:52Z robux4 $ \version \$Id: KaxSegment.cpp 1096 2005-03-17 09:14:52Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "matroska/KaxSegment.h" #include "matroska/KaxSegment.h"
#include "ebml/EbmlHead.h" #include "ebml/EbmlHead.h"
// sub elements // sub elements
#include "matroska/KaxCluster.h" #include "matroska/KaxCluster.h"
#include "matroska/KaxSeekHead.h" #include "matroska/KaxSeekHead.h"
#include "matroska/KaxCues.h" #include "matroska/KaxCues.h"
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
#include "matroska/KaxInfo.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxChapters.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxAttachments.h"
#include "matroska/KaxTags.h" START_LIBMATROSKA_NAMESPACE
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h" KaxSegment::KaxSegment(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxSegment) EBML_DEF_SEP EBML_EXTRA_CALL)
START_LIBMATROSKA_NAMESPACE {
SetSizeLength(5); // mandatory min size support (for easier updating) (2^(7*5)-2 = 32Go)
DEFINE_START_SEMANTIC(KaxMatroska) SetSizeInfinite(); // by default a segment is big and the size is unknown in advance
DEFINE_SEMANTIC_ITEM(true, true, EbmlHead) }
DEFINE_SEMANTIC_ITEM(true, false, KaxSegment)
DEFINE_END_SEMANTIC(KaxMatroska) KaxSegment::KaxSegment(const KaxSegment & ElementToClone)
:EbmlMaster(ElementToClone)
DEFINE_START_SEMANTIC(KaxSegment) {
DEFINE_SEMANTIC_ITEM(false, false, KaxCluster) // update the parent of each children
DEFINE_SEMANTIC_ITEM(false, false, KaxSeekHead) EBML_MASTER_ITERATOR Itr = begin();
DEFINE_SEMANTIC_ITEM(false, true, KaxCues) while (Itr != end())
DEFINE_SEMANTIC_ITEM(false, false, KaxTracks) {
DEFINE_SEMANTIC_ITEM(true, true, KaxInfo) if (EbmlId(**Itr) == EBML_ID(KaxCluster)) {
DEFINE_SEMANTIC_ITEM(false, true, KaxChapters) static_cast<KaxCluster *>(*Itr)->SetParent(*this);
DEFINE_SEMANTIC_ITEM(false, true, KaxAttachments) }
DEFINE_SEMANTIC_ITEM(false, true, KaxTags) ++Itr;
DEFINE_END_SEMANTIC(KaxSegment) }
}
DEFINE_MKX_CONTEXT(KaxMatroska);
DEFINE_MKX_MASTER_ORPHAN(KaxSegment, 0x18538067, 4, "Segment\0rotomopogo"); uint64 KaxSegment::GetRelativePosition(uint64 aGlobalPosition) const
{
KaxSegment::KaxSegment(EBML_EXTRA_DEF) return aGlobalPosition - GetElementPosition() - HeadSize();
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxSegment) EBML_DEF_SEP EBML_EXTRA_CALL) }
{
SetSizeLength(5); // mandatory min size support (for easier updating) (2^(7*5)-2 = 32Go) uint64 KaxSegment::GetRelativePosition(const EbmlElement & Elt) const
SetSizeInfinite(); // by default a segment is big and the size is unknown in advance {
} return GetRelativePosition(Elt.GetElementPosition());
}
KaxSegment::KaxSegment(const KaxSegment & ElementToClone)
:EbmlMaster(ElementToClone) uint64 KaxSegment::GetGlobalPosition(uint64 aRelativePosition) const
{ {
// update the parent of each children return aRelativePosition + GetElementPosition() + HeadSize();
EBML_MASTER_ITERATOR Itr = begin(); }
while (Itr != end())
{ END_LIBMATROSKA_NAMESPACE
if (EbmlId(**Itr) == EBML_ID(KaxCluster)) {
static_cast<KaxCluster *>(*Itr)->SetParent(*this);
}
++Itr;
}
}
uint64 KaxSegment::GetRelativePosition(uint64 aGlobalPosition) const
{
return aGlobalPosition - GetElementPosition() - HeadSize();
}
uint64 KaxSegment::GetRelativePosition(const EbmlElement & Elt) const
{
return GetRelativePosition(Elt.GetElementPosition());
}
uint64 KaxSegment::GetGlobalPosition(uint64 aRelativePosition) const
{
return aRelativePosition + GetElementPosition() + HeadSize();
}
END_LIBMATROSKA_NAMESPACE

801
src/KaxSemantic.cpp Normal file
View File

@@ -0,0 +1,801 @@
/**********************************************************************
** DO NOT EDIT, GENERATED WITH DATA2LIB
**
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** Copyright (c) 2002-2010, Matroska (non-profit organisation)
** All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
**
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "matroska/KaxContexts.h"
#include "matroska/KaxSemantic.h"
#include "matroska/KaxSegment.h"
#include "matroska/KaxSeekHead.h"
#include "matroska/KaxCluster.h"
#include "matroska/KaxTracks.h"
#include "matroska/KaxCues.h"
#include "matroska/KaxInfoData.h"
#include "matroska/KaxBlockData.h"
#include "matroska/KaxCuesData.h"
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxSegment)
DEFINE_SEMANTIC_ITEM(false, false, KaxSeekHead)
DEFINE_SEMANTIC_ITEM(true, false, KaxInfo)
DEFINE_SEMANTIC_ITEM(false, false, KaxCluster)
DEFINE_SEMANTIC_ITEM(false, false, KaxTracks)
DEFINE_SEMANTIC_ITEM(false, true, KaxCues)
DEFINE_SEMANTIC_ITEM(false, true, KaxAttachments)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapters)
DEFINE_SEMANTIC_ITEM(false, false, KaxTags)
DEFINE_END_SEMANTIC(KaxSegment)
DEFINE_MKX_MASTER_ORPHAN(KaxSegment, 0x18538067, 4, "Segment");
DEFINE_START_SEMANTIC(KaxSeekHead)
DEFINE_SEMANTIC_ITEM(true, false, KaxSeek)
DEFINE_END_SEMANTIC(KaxSeekHead)
DEFINE_MKX_MASTER(KaxSeekHead, 0x114D9B74, 4, KaxSegment, "SeekHeader");
DEFINE_START_SEMANTIC(KaxSeek)
DEFINE_SEMANTIC_ITEM(true, true, KaxSeekID)
DEFINE_SEMANTIC_ITEM(true, true, KaxSeekPosition)
DEFINE_END_SEMANTIC(KaxSeek)
DEFINE_MKX_MASTER(KaxSeek, 0x4DBB, 2, KaxSeekHead, "SeekPoint");
DEFINE_MKX_BINARY (KaxSeekID, 0x53AB, 2, KaxSeek, "SeekID");
DEFINE_MKX_UINTEGER(KaxSeekPosition, 0x53AC, 2, KaxSeek, "SeekPosition");
DEFINE_START_SEMANTIC(KaxInfo)
DEFINE_SEMANTIC_ITEM(false, true, KaxSegmentUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxSegmentFilename)
DEFINE_SEMANTIC_ITEM(false, true, KaxPrevUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxPrevFilename)
DEFINE_SEMANTIC_ITEM(false, true, KaxNextUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxNextFilename)
DEFINE_SEMANTIC_ITEM(false, false, KaxSegmentFamily)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterTranslate)
DEFINE_SEMANTIC_ITEM(true, true, KaxTimecodeScale)
DEFINE_SEMANTIC_ITEM(false, true, KaxDuration)
DEFINE_SEMANTIC_ITEM(false, true, KaxDateUTC)
DEFINE_SEMANTIC_ITEM(false, true, KaxTitle)
DEFINE_SEMANTIC_ITEM(true, true, KaxMuxingApp)
DEFINE_SEMANTIC_ITEM(true, true, KaxWritingApp)
DEFINE_END_SEMANTIC(KaxInfo)
DEFINE_MKX_MASTER(KaxInfo, 0x1549A966, 4, KaxSegment, "Info");
DEFINE_MKX_BINARY (KaxSegmentUID, 0x73A4, 2, KaxInfo, "SegmentUID");
DEFINE_MKX_UNISTRING(KaxSegmentFilename, 0x7384, 2, KaxInfo, "SegmentFilename");
DEFINE_MKX_BINARY_CONS(KaxPrevUID, 0x3CB923, 3, KaxInfo, "PrevUID");
DEFINE_MKX_UNISTRING(KaxPrevFilename, 0x3C83AB, 3, KaxInfo, "PrevFilename");
DEFINE_MKX_BINARY_CONS(KaxNextUID, 0x3EB923, 3, KaxInfo, "NextUID");
DEFINE_MKX_UNISTRING(KaxNextFilename, 0x3E83BB, 3, KaxInfo, "NextFilename");
DEFINE_MKX_BINARY (KaxSegmentFamily, 0x4444, 2, KaxInfo, "SegmentFamily");
DEFINE_START_SEMANTIC(KaxChapterTranslate)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterTranslateEditionUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTranslateCodec)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTranslateID)
DEFINE_END_SEMANTIC(KaxChapterTranslate)
DEFINE_MKX_MASTER(KaxChapterTranslate, 0x6924, 2, KaxInfo, "ChapterTranslate");
DEFINE_MKX_UINTEGER(KaxChapterTranslateEditionUID, 0x69FC, 2, KaxChapterTranslate, "ChapterTranslateEditionUID");
DEFINE_MKX_UINTEGER(KaxChapterTranslateCodec, 0x69BF, 2, KaxChapterTranslate, "ChapterTranslateCodec");
DEFINE_MKX_BINARY (KaxChapterTranslateID, 0x69A5, 2, KaxChapterTranslate, "ChapterTranslateID");
DEFINE_MKX_UINTEGER_DEF(KaxTimecodeScale, 0x2AD7B1, 3, KaxInfo, "TimecodeScale", 1000000);
DEFINE_MKX_FLOAT(KaxDuration, 0x4489, 2, KaxInfo, "Duration");
DEFINE_MKX_DATE (KaxDateUTC, 0x4461, 2, KaxInfo, "DateUTC");
DEFINE_MKX_UNISTRING(KaxTitle, 0x7BA9, 2, KaxInfo, "Title");
DEFINE_MKX_UNISTRING(KaxMuxingApp, 0x4D80, 2, KaxInfo, "MuxingApp");
DEFINE_MKX_UNISTRING(KaxWritingApp, 0x5741, 2, KaxInfo, "WritingApp");
DEFINE_START_SEMANTIC(KaxCluster)
DEFINE_SEMANTIC_ITEM(true, true, KaxClusterTimecode)
DEFINE_SEMANTIC_ITEM(false, true, KaxClusterSilentTracks)
DEFINE_SEMANTIC_ITEM(false, true, KaxClusterPosition)
DEFINE_SEMANTIC_ITEM(false, true, KaxClusterPrevSize)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, false, KaxSimpleBlock)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, false, KaxBlockGroup)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, false, KaxEncryptedBlock) // not supported
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxCluster)
DEFINE_MKX_MASTER_CONS(KaxCluster, 0x1F43B675, 4, KaxSegment, "Cluster");
DEFINE_MKX_UINTEGER(KaxClusterTimecode, 0xE7, 1, KaxCluster, "ClusterTimecode");
DEFINE_START_SEMANTIC(KaxClusterSilentTracks)
DEFINE_SEMANTIC_ITEM(false, false, KaxClusterSilentTrackNumber)
DEFINE_END_SEMANTIC(KaxClusterSilentTracks)
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");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_BINARY_CONS(KaxSimpleBlock, 0xA3, 1, KaxCluster, "SimpleBlock");
#endif
DEFINE_START_SEMANTIC(KaxBlockGroup)
DEFINE_SEMANTIC_ITEM(true, true, KaxBlock)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxBlockVirtual) // not supported
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, true, KaxBlockAdditions)
DEFINE_SEMANTIC_ITEM(false, true, KaxBlockDuration)
DEFINE_SEMANTIC_ITEM(true, true, KaxReferencePriority)
DEFINE_SEMANTIC_ITEM(false, false, KaxReferenceBlock)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxReferenceVirtual) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecState)
DEFINE_SEMANTIC_ITEM(false, true, KaxDiscardPadding)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, true, KaxSlices)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxReferenceFrame) // DivX specific
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxBlockGroup)
DEFINE_MKX_MASTER_CONS(KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup");
DEFINE_MKX_BINARY_CONS(KaxBlock, 0xA1, 1, KaxBlockGroup, "Block");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_BINARY_CONS(KaxBlockVirtual, 0xA2, 1, KaxBlockGroup, "BlockVirtual");
#endif
DEFINE_START_SEMANTIC(KaxBlockAdditions)
DEFINE_SEMANTIC_ITEM(true, false, KaxBlockMore)
DEFINE_END_SEMANTIC(KaxBlockAdditions)
DEFINE_MKX_MASTER(KaxBlockAdditions, 0x75A1, 2, KaxBlockGroup, "BlockAdditions");
DEFINE_START_SEMANTIC(KaxBlockMore)
DEFINE_SEMANTIC_ITEM(true, true, KaxBlockAddID)
DEFINE_SEMANTIC_ITEM(true, true, KaxBlockAdditional)
DEFINE_END_SEMANTIC(KaxBlockMore)
DEFINE_MKX_MASTER(KaxBlockMore, 0xA6, 1, KaxBlockAdditions, "BlockMore");
DEFINE_MKX_UINTEGER_DEF(KaxBlockAddID, 0xEE, 1, KaxBlockMore, "BlockAddID", 1);
DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, 1, KaxBlockMore, "BlockAdditional");
DEFINE_MKX_UINTEGER(KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration");
DEFINE_MKX_UINTEGER_DEF(KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced", 0);
DEFINE_MKX_SINTEGER_CONS(KaxReferenceBlock, 0xFB, 1, KaxBlockGroup, "ReferenceBlock");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_SINTEGER(KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual");
DEFINE_MKX_BINARY (KaxCodecState, 0xA4, 1, KaxBlockGroup, "CodecState");
DEFINE_MKX_SINTEGER(KaxDiscardPadding, 0x75A2, 2, KaxBlockGroup, "DiscardPadding");
#endif
DEFINE_START_SEMANTIC(KaxSlices)
DEFINE_SEMANTIC_ITEM(false, false, KaxTimeSlice)
DEFINE_END_SEMANTIC(KaxSlices)
DEFINE_MKX_MASTER(KaxSlices, 0x8E, 1, KaxBlockGroup, "Slices");
DEFINE_START_SEMANTIC(KaxTimeSlice)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceLaceNumber)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceFrameNumber) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceBlockAddID) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDelay) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDuration) // not supported
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxTimeSlice)
DEFINE_MKX_MASTER(KaxTimeSlice, 0xE8, 1, KaxSlices, "TimeSlice");
DEFINE_MKX_UINTEGER_DEF(KaxSliceLaceNumber, 0xCC, 1, KaxTimeSlice, "SliceLaceNumber", 0);
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER_DEF(KaxSliceFrameNumber, 0xCD, 1, KaxTimeSlice, "SliceFrameNumber", 0);
DEFINE_MKX_UINTEGER_DEF(KaxSliceBlockAddID, 0xCB, 1, KaxTimeSlice, "SliceBlockAddID", 0);
DEFINE_MKX_UINTEGER_DEF(KaxSliceDelay, 0xCE, 1, KaxTimeSlice, "SliceDelay", 0);
DEFINE_MKX_UINTEGER_DEF(KaxSliceDuration, 0xCF, 1, KaxTimeSlice, "SliceDuration", 0);
DEFINE_START_SEMANTIC(KaxReferenceFrame)
DEFINE_SEMANTIC_ITEM(true, true, KaxReferenceOffset) // DivX specific
DEFINE_SEMANTIC_ITEM(true, true, KaxReferenceTimeCode) // DivX specific
DEFINE_END_SEMANTIC(KaxReferenceFrame)
DEFINE_MKX_MASTER(KaxReferenceFrame, 0xC8, 1, KaxBlockGroup, "ReferenceFrame");
DEFINE_MKX_UINTEGER(KaxReferenceOffset, 0xC9, 1, KaxReferenceFrame, "ReferenceOffset");
DEFINE_MKX_UINTEGER(KaxReferenceTimeCode, 0xCA, 1, KaxReferenceFrame, "ReferenceTimeCode");
DEFINE_MKX_BINARY (KaxEncryptedBlock, 0xAF, 1, KaxCluster, "EncryptedBlock");
#endif
DEFINE_START_SEMANTIC(KaxTracks)
DEFINE_SEMANTIC_ITEM(true, false, KaxTrackEntry)
DEFINE_END_SEMANTIC(KaxTracks)
DEFINE_MKX_MASTER(KaxTracks, 0x1654AE6B, 4, KaxSegment, "Tracks");
DEFINE_START_SEMANTIC(KaxTrackEntry)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackNumber)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackType)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagEnabled)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagDefault)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagForced)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagLacing)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackMinCache)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackMaxCache)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackDefaultDuration)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackDefaultDecodedFieldDuration)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTimecodeScale)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackOffset) // not supported
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(true, true, KaxMaxBlockAdditionID)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackName)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackLanguage)
DEFINE_SEMANTIC_ITEM(true, true, KaxCodecID)
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecPrivate)
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecName)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackAttachmentLink)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecSettings) // not supported
DEFINE_SEMANTIC_ITEM(false, false, KaxCodecInfoURL) // not supported
DEFINE_SEMANTIC_ITEM(false, false, KaxCodecDownloadURL) // not supported
DEFINE_SEMANTIC_ITEM(true, true, KaxCodecDecodeAll)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, false, KaxTrackOverlay)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecDelay)
DEFINE_SEMANTIC_ITEM(true, true, KaxSeekPreRoll)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, false, KaxTrackTranslate)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackVideo)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackAudio)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackOperation)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrickTrackUID) // DivX specific
DEFINE_SEMANTIC_ITEM(false, true, KaxTrickTrackSegmentUID) // DivX specific
DEFINE_SEMANTIC_ITEM(false, true, KaxTrickTrackFlag) // DivX specific
DEFINE_SEMANTIC_ITEM(false, true, KaxTrickMasterTrackUID) // DivX specific
DEFINE_SEMANTIC_ITEM(false, true, KaxTrickMasterTrackSegmentUID) // DivX specific
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncodings)
DEFINE_END_SEMANTIC(KaxTrackEntry)
DEFINE_MKX_MASTER_CONS(KaxTrackEntry, 0xAE, 1, KaxTracks, "TrackEntry");
DEFINE_MKX_UINTEGER(KaxTrackNumber, 0xD7, 1, KaxTrackEntry, "TrackNumber");
DEFINE_MKX_UINTEGER(KaxTrackUID, 0x73C5, 2, KaxTrackEntry, "TrackUID");
DEFINE_MKX_UINTEGER(KaxTrackType, 0x83, 1, KaxTrackEntry, "TrackType");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagEnabled, 0xB9, 1, KaxTrackEntry, "TrackFlagEnabled", 1);
#endif
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagDefault, 0x88, 1, KaxTrackEntry, "TrackFlagDefault", 1);
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagForced, 0x55AA, 2, KaxTrackEntry, "TrackFlagForced", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagLacing, 0x9C, 1, KaxTrackEntry, "TrackFlagLacing", 1);
DEFINE_MKX_UINTEGER_DEF(KaxTrackMinCache, 0x6DE7, 2, KaxTrackEntry, "TrackMinCache", 0);
DEFINE_MKX_UINTEGER(KaxTrackMaxCache, 0x6DF8, 2, KaxTrackEntry, "TrackMaxCache");
DEFINE_MKX_UINTEGER(KaxTrackDefaultDuration, 0x23E383, 3, KaxTrackEntry, "TrackDefaultDuration");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER(KaxTrackDefaultDecodedFieldDuration, 0x234E7A, 3, KaxTrackEntry, "TrackDefaultDecodedFieldDuration");
#endif
DEFINE_MKX_FLOAT_DEF(KaxTrackTimecodeScale, 0x23314F, 3, KaxTrackEntry, "TrackTimecodeScale", 1);
#if MATROSKA_VERSION >= 2
DEFINE_MKX_SINTEGER_DEF(KaxTrackOffset, 0x537F, 2, KaxTrackEntry, "TrackOffset", 0);
#endif
DEFINE_MKX_UINTEGER_DEF(KaxMaxBlockAdditionID, 0x55EE, 2, KaxTrackEntry, "MaxBlockAdditionID", 0);
DEFINE_MKX_UNISTRING(KaxTrackName, 0x536E, 2, KaxTrackEntry, "TrackName");
DEFINE_MKX_STRING_DEF(KaxTrackLanguage, 0x22B59C, 3, KaxTrackEntry, "TrackLanguage", "eng");
DEFINE_MKX_STRING(KaxCodecID, 0x86, 1, KaxTrackEntry, "CodecID");
DEFINE_MKX_BINARY (KaxCodecPrivate, 0x63A2, 2, KaxTrackEntry, "CodecPrivate");
DEFINE_MKX_UNISTRING(KaxCodecName, 0x258688, 3, KaxTrackEntry, "CodecName");
DEFINE_MKX_UINTEGER(KaxTrackAttachmentLink, 0x7446, 2, KaxTrackEntry, "TrackAttachmentLink");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UNISTRING(KaxCodecSettings, 0x3A9697, 3, KaxTrackEntry, "CodecSettings");
DEFINE_MKX_STRING(KaxCodecInfoURL, 0x3B4040, 3, KaxTrackEntry, "CodecInfoURL");
DEFINE_MKX_STRING(KaxCodecDownloadURL, 0x26B240, 3, KaxTrackEntry, "CodecDownloadURL");
DEFINE_MKX_UINTEGER_DEF(KaxCodecDecodeAll, 0xAA, 1, KaxTrackEntry, "CodecDecodeAll", 1);
#endif
DEFINE_MKX_UINTEGER(KaxTrackOverlay, 0x6FAB, 2, KaxTrackEntry, "TrackOverlay");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER_DEF(KaxCodecDelay, 0x56AA, 2, KaxTrackEntry, "CodecDelay", 0);
DEFINE_MKX_UINTEGER_DEF(KaxSeekPreRoll, 0x56BB, 2, KaxTrackEntry, "SeekPreRoll", 0);
#endif
DEFINE_START_SEMANTIC(KaxTrackTranslate)
DEFINE_SEMANTIC_ITEM(false, false, KaxTrackTranslateEditionUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTranslateCodec)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTranslateTrackID)
DEFINE_END_SEMANTIC(KaxTrackTranslate)
DEFINE_MKX_MASTER(KaxTrackTranslate, 0x6624, 2, KaxTrackEntry, "TrackTranslate");
DEFINE_MKX_UINTEGER(KaxTrackTranslateEditionUID, 0x66FC, 2, KaxTrackTranslate, "TrackTranslateEditionUID");
DEFINE_MKX_UINTEGER(KaxTrackTranslateCodec, 0x66BF, 2, KaxTrackTranslate, "TrackTranslateCodec");
DEFINE_MKX_BINARY (KaxTrackTranslateTrackID, 0x66A5, 2, KaxTrackTranslate, "TrackTranslateTrackID");
DEFINE_START_SEMANTIC(KaxTrackVideo)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(true, true, KaxVideoFlagInterlaced)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoStereoMode)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoAlphaMode)
DEFINE_SEMANTIC_ITEM(false, true, KaxOldStereoMode) // not supported
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(true, true, KaxVideoPixelWidth)
DEFINE_SEMANTIC_ITEM(true, true, KaxVideoPixelHeight)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropBottom)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropTop)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropLeft)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropRight)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayWidth)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayHeight)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayUnit)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoAspectRatio)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoColourSpace)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoGamma) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoFrameRate) // not supported
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxTrackVideo)
DEFINE_MKX_MASTER(KaxTrackVideo, 0xE0, 1, KaxTrackEntry, "TrackVideo");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER_DEF(KaxVideoFlagInterlaced, 0x9A, 1, KaxTrackVideo, "VideoFlagInterlaced", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoStereoMode, 0x53B8, 2, KaxTrackVideo, "VideoStereoMode", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoAlphaMode, 0x53C0, 2, KaxTrackVideo, "VideoAlphaMode", 0);
DEFINE_MKX_UINTEGER(KaxOldStereoMode, 0x53B9, 2, KaxTrackVideo, "OldStereoMode");
#endif
DEFINE_MKX_UINTEGER(KaxVideoPixelWidth, 0xB0, 1, KaxTrackVideo, "VideoPixelWidth");
DEFINE_MKX_UINTEGER(KaxVideoPixelHeight, 0xBA, 1, KaxTrackVideo, "VideoPixelHeight");
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropBottom, 0x54AA, 2, KaxTrackVideo, "VideoPixelCropBottom", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropTop, 0x54BB, 2, KaxTrackVideo, "VideoPixelCropTop", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropLeft, 0x54CC, 2, KaxTrackVideo, "VideoPixelCropLeft", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropRight, 0x54DD, 2, KaxTrackVideo, "VideoPixelCropRight", 0);
DEFINE_MKX_UINTEGER(KaxVideoDisplayWidth, 0x54B0, 2, KaxTrackVideo, "VideoDisplayWidth");
DEFINE_MKX_UINTEGER(KaxVideoDisplayHeight, 0x54BA, 2, KaxTrackVideo, "VideoDisplayHeight");
DEFINE_MKX_UINTEGER_DEF(KaxVideoDisplayUnit, 0x54B2, 2, KaxTrackVideo, "VideoDisplayUnit", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoAspectRatio, 0x54B3, 2, KaxTrackVideo, "VideoAspectRatio", 0);
DEFINE_MKX_BINARY (KaxVideoColourSpace, 0x2EB524, 3, KaxTrackVideo, "VideoColourSpace");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_FLOAT(KaxVideoGamma, 0x2FB523, 3, KaxTrackVideo, "VideoGamma");
DEFINE_MKX_FLOAT(KaxVideoFrameRate, 0x2383E3, 3, KaxTrackVideo, "VideoFrameRate");
#endif
DEFINE_START_SEMANTIC(KaxTrackAudio)
DEFINE_SEMANTIC_ITEM(true, true, KaxAudioSamplingFreq)
DEFINE_SEMANTIC_ITEM(false, true, KaxAudioOutputSamplingFreq)
DEFINE_SEMANTIC_ITEM(true, true, KaxAudioChannels)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxAudioPosition) // not supported
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, true, KaxAudioBitDepth)
DEFINE_END_SEMANTIC(KaxTrackAudio)
DEFINE_MKX_MASTER(KaxTrackAudio, 0xE1, 1, KaxTrackEntry, "TrackAudio");
DEFINE_MKX_FLOAT_DEF(KaxAudioSamplingFreq, 0xB5, 1, KaxTrackAudio, "AudioSamplingFreq", 8000);
DEFINE_MKX_FLOAT(KaxAudioOutputSamplingFreq, 0x78B5, 2, KaxTrackAudio, "AudioOutputSamplingFreq");
DEFINE_MKX_UINTEGER_DEF(KaxAudioChannels, 0x9F, 1, KaxTrackAudio, "AudioChannels", 1);
#if MATROSKA_VERSION >= 2
DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition");
#endif
DEFINE_MKX_UINTEGER(KaxAudioBitDepth, 0x6264, 2, KaxTrackAudio, "AudioBitDepth");
#if MATROSKA_VERSION >= 2
DEFINE_START_SEMANTIC(KaxTrackOperation)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackCombinePlanes)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackJoinBlocks)
DEFINE_END_SEMANTIC(KaxTrackOperation)
DEFINE_MKX_MASTER(KaxTrackOperation, 0xE2, 1, KaxTrackEntry, "TrackOperation");
DEFINE_START_SEMANTIC(KaxTrackCombinePlanes)
DEFINE_SEMANTIC_ITEM(true, false, KaxTrackPlane)
DEFINE_END_SEMANTIC(KaxTrackCombinePlanes)
DEFINE_MKX_MASTER(KaxTrackCombinePlanes, 0xE3, 1, KaxTrackOperation, "TrackCombinePlanes");
DEFINE_START_SEMANTIC(KaxTrackPlane)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackPlaneUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackPlaneType)
DEFINE_END_SEMANTIC(KaxTrackPlane)
DEFINE_MKX_MASTER(KaxTrackPlane, 0xE4, 1, KaxTrackCombinePlanes, "TrackPlane");
DEFINE_MKX_UINTEGER(KaxTrackPlaneUID, 0xE5, 1, KaxTrackPlane, "TrackPlaneUID");
DEFINE_MKX_UINTEGER(KaxTrackPlaneType, 0xE6, 1, KaxTrackPlane, "TrackPlaneType");
DEFINE_START_SEMANTIC(KaxTrackJoinBlocks)
DEFINE_SEMANTIC_ITEM(true, false, KaxTrackJoinUID)
DEFINE_END_SEMANTIC(KaxTrackJoinBlocks)
DEFINE_MKX_MASTER(KaxTrackJoinBlocks, 0xE9, 1, KaxTrackOperation, "TrackJoinBlocks");
DEFINE_MKX_UINTEGER(KaxTrackJoinUID, 0xED, 1, KaxTrackJoinBlocks, "TrackJoinUID");
DEFINE_MKX_UINTEGER(KaxTrickTrackUID, 0xC0, 1, KaxTrackEntry, "TrickTrackUID");
DEFINE_MKX_BINARY (KaxTrickTrackSegmentUID, 0xC1, 1, KaxTrackEntry, "TrickTrackSegmentUID");
DEFINE_MKX_UINTEGER_DEF(KaxTrickTrackFlag, 0xC6, 1, KaxTrackEntry, "TrickTrackFlag", 0);
DEFINE_MKX_UINTEGER(KaxTrickMasterTrackUID, 0xC7, 1, KaxTrackEntry, "TrickMasterTrackUID");
DEFINE_MKX_BINARY (KaxTrickMasterTrackSegmentUID, 0xC4, 1, KaxTrackEntry, "TrickMasterTrackSegmentUID");
#endif
DEFINE_START_SEMANTIC(KaxContentEncodings)
DEFINE_SEMANTIC_ITEM(true, false, KaxContentEncoding)
DEFINE_END_SEMANTIC(KaxContentEncodings)
DEFINE_MKX_MASTER(KaxContentEncodings, 0x6D80, 2, KaxTrackEntry, "ContentEncodings");
DEFINE_START_SEMANTIC(KaxContentEncoding)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingOrder)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingScope)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentEncodingType)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentCompression)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncryption)
DEFINE_END_SEMANTIC(KaxContentEncoding)
DEFINE_MKX_MASTER(KaxContentEncoding, 0x6240, 2, KaxContentEncodings, "ContentEncoding");
DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingOrder, 0x5031, 2, KaxContentEncoding, "ContentEncodingOrder", 0);
DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingScope, 0x5032, 2, KaxContentEncoding, "ContentEncodingScope", 1);
DEFINE_MKX_UINTEGER_DEF(KaxContentEncodingType, 0x5033, 2, KaxContentEncoding, "ContentEncodingType", 0);
DEFINE_START_SEMANTIC(KaxContentCompression)
DEFINE_SEMANTIC_ITEM(true, true, KaxContentCompAlgo)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentCompSettings)
DEFINE_END_SEMANTIC(KaxContentCompression)
DEFINE_MKX_MASTER(KaxContentCompression, 0x5034, 2, KaxContentEncoding, "ContentCompression");
DEFINE_MKX_UINTEGER_DEF(KaxContentCompAlgo, 0x4254, 2, KaxContentCompression, "ContentCompAlgo", 0);
DEFINE_MKX_BINARY (KaxContentCompSettings, 0x4255, 2, KaxContentCompression, "ContentCompSettings");
DEFINE_START_SEMANTIC(KaxContentEncryption)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncAlgo)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncKeyID)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSignature)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigKeyID)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigAlgo)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentSigHashAlgo)
DEFINE_END_SEMANTIC(KaxContentEncryption)
DEFINE_MKX_MASTER(KaxContentEncryption, 0x5035, 2, KaxContentEncoding, "ContentEncryption");
DEFINE_MKX_UINTEGER_DEF(KaxContentEncAlgo, 0x47E1, 2, KaxContentEncryption, "ContentEncAlgo", 0);
DEFINE_MKX_BINARY (KaxContentEncKeyID, 0x47E2, 2, KaxContentEncryption, "ContentEncKeyID");
DEFINE_MKX_BINARY (KaxContentSignature, 0x47E3, 2, KaxContentEncryption, "ContentSignature");
DEFINE_MKX_BINARY (KaxContentSigKeyID, 0x47E4, 2, KaxContentEncryption, "ContentSigKeyID");
DEFINE_MKX_UINTEGER_DEF(KaxContentSigAlgo, 0x47E5, 2, KaxContentEncryption, "ContentSigAlgo", 0);
DEFINE_MKX_UINTEGER_DEF(KaxContentSigHashAlgo, 0x47E6, 2, KaxContentEncryption, "ContentSigHashAlgo", 0);
DEFINE_START_SEMANTIC(KaxCues)
DEFINE_SEMANTIC_ITEM(true, false, KaxCuePoint)
DEFINE_END_SEMANTIC(KaxCues)
DEFINE_MKX_MASTER(KaxCues, 0x1C53BB6B, 4, KaxSegment, "Cues");
DEFINE_START_SEMANTIC(KaxCuePoint)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueTime)
DEFINE_SEMANTIC_ITEM(true, false, KaxCueTrackPositions)
DEFINE_END_SEMANTIC(KaxCuePoint)
DEFINE_MKX_MASTER(KaxCuePoint, 0xBB, 1, KaxCues, "CuePoint");
DEFINE_MKX_UINTEGER(KaxCueTime, 0xB3, 1, KaxCuePoint, "CueTime");
DEFINE_START_SEMANTIC(KaxCueTrackPositions)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueTrack)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueClusterPosition)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxCueRelativePosition)
DEFINE_SEMANTIC_ITEM(false, true, KaxCueDuration)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, true, KaxCueBlockNumber)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxCueCodecState)
DEFINE_SEMANTIC_ITEM(false, false, KaxCueReference)
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxCueTrackPositions)
DEFINE_MKX_MASTER(KaxCueTrackPositions, 0xB7, 1, KaxCuePoint, "CueTrackPositions");
DEFINE_MKX_UINTEGER(KaxCueTrack, 0xF7, 1, KaxCueTrackPositions, "CueTrack");
DEFINE_MKX_UINTEGER(KaxCueClusterPosition, 0xF1, 1, KaxCueTrackPositions, "CueClusterPosition");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER(KaxCueRelativePosition, 0xF0, 1, KaxCueTrackPositions, "CueRelativePosition");
DEFINE_MKX_UINTEGER(KaxCueDuration, 0xB2, 1, KaxCueTrackPositions, "CueDuration");
#endif
DEFINE_MKX_UINTEGER_DEF(KaxCueBlockNumber, 0x5378, 2, KaxCueTrackPositions, "CueBlockNumber", 1);
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER_DEF(KaxCueCodecState, 0xEA, 1, KaxCueTrackPositions, "CueCodecState", 0);
DEFINE_START_SEMANTIC(KaxCueReference)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueRefTime)
DEFINE_SEMANTIC_ITEM(true, true, KaxCueRefCluster) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxCueRefNumber) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxCueRefCodecState) // not supported
DEFINE_END_SEMANTIC(KaxCueReference)
DEFINE_MKX_MASTER(KaxCueReference, 0xDB, 1, KaxCueTrackPositions, "CueReference");
DEFINE_MKX_UINTEGER(KaxCueRefTime, 0x96, 1, KaxCueReference, "CueRefTime");
DEFINE_MKX_UINTEGER(KaxCueRefCluster, 0x97, 1, KaxCueReference, "CueRefCluster");
DEFINE_MKX_UINTEGER_DEF(KaxCueRefNumber, 0x535F, 2, KaxCueReference, "CueRefNumber", 1);
DEFINE_MKX_UINTEGER_DEF(KaxCueRefCodecState, 0xEB, 1, KaxCueReference, "CueRefCodecState", 0);
#endif
DEFINE_START_SEMANTIC(KaxAttachments)
DEFINE_SEMANTIC_ITEM(true, false, KaxAttached)
DEFINE_END_SEMANTIC(KaxAttachments)
DEFINE_MKX_MASTER_CONS(KaxAttachments, 0x1941A469, 4, KaxSegment, "Attachments");
DEFINE_START_SEMANTIC(KaxAttached)
DEFINE_SEMANTIC_ITEM(false, true, KaxFileDescription)
DEFINE_SEMANTIC_ITEM(true, true, KaxFileName)
DEFINE_SEMANTIC_ITEM(true, true, KaxMimeType)
DEFINE_SEMANTIC_ITEM(true, true, KaxFileData)
DEFINE_SEMANTIC_ITEM(true, true, KaxFileUID)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxFileReferral) // not supported
DEFINE_SEMANTIC_ITEM(false, true, KaxFileUsedStartTime) // DivX specific
DEFINE_SEMANTIC_ITEM(false, true, KaxFileUsedEndTime) // DivX specific
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxAttached)
DEFINE_MKX_MASTER_CONS(KaxAttached, 0x61A7, 2, KaxAttachments, "AttachedFile");
DEFINE_MKX_UNISTRING(KaxFileDescription, 0x467E, 2, KaxAttached, "FileDescription");
DEFINE_MKX_UNISTRING(KaxFileName, 0x466E, 2, KaxAttached, "FileName");
DEFINE_MKX_STRING(KaxMimeType, 0x4660, 2, KaxAttached, "FileMimeType");
DEFINE_MKX_BINARY (KaxFileData, 0x465C, 2, KaxAttached, "FileData");
DEFINE_MKX_UINTEGER(KaxFileUID, 0x46AE, 2, KaxAttached, "FileUID");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_BINARY (KaxFileReferral, 0x4675, 2, KaxAttached, "FileReferral");
DEFINE_MKX_UINTEGER(KaxFileUsedStartTime, 0x4661, 2, KaxAttached, "FileUsedStartTime");
DEFINE_MKX_UINTEGER(KaxFileUsedEndTime, 0x4662, 2, KaxAttached, "FileUsedEndTime");
#endif
DEFINE_START_SEMANTIC(KaxChapters)
DEFINE_SEMANTIC_ITEM(true, false, KaxEditionEntry)
DEFINE_END_SEMANTIC(KaxChapters)
DEFINE_MKX_MASTER(KaxChapters, 0x1043A770, 4, KaxSegment, "Chapters");
DEFINE_START_SEMANTIC(KaxEditionEntry)
DEFINE_SEMANTIC_ITEM(false, true, KaxEditionUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxEditionFlagHidden)
DEFINE_SEMANTIC_ITEM(true, true, KaxEditionFlagDefault)
DEFINE_SEMANTIC_ITEM(false, true, KaxEditionFlagOrdered)
DEFINE_SEMANTIC_ITEM(true, false, KaxChapterAtom)
DEFINE_END_SEMANTIC(KaxEditionEntry)
DEFINE_MKX_MASTER(KaxEditionEntry, 0x45B9, 2, KaxChapters, "EditionEntry");
DEFINE_MKX_UINTEGER(KaxEditionUID, 0x45BC, 2, KaxEditionEntry, "EditionUID");
DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagHidden, 0x45BD, 2, KaxEditionEntry, "EditionFlagHidden", 0);
DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagDefault, 0x45DB, 2, KaxEditionEntry, "EditionFlagDefault", 0);
DEFINE_MKX_UINTEGER_DEF(KaxEditionFlagOrdered, 0x45DD, 2, KaxEditionEntry, "EditionFlagOrdered", 0);
DEFINE_START_SEMANTIC(KaxChapterAtom)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterAtom) // recursive
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterUID)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterStringUID)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterTimeStart)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterTimeEnd)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterFlagHidden)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterFlagEnabled)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterSegmentUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterSegmentEditionUID)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterPhysicalEquiv)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterTrack)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterDisplay)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterProcess)
DEFINE_END_SEMANTIC(KaxChapterAtom)
DEFINE_MKX_MASTER(KaxChapterAtom, 0xB6, 1, KaxEditionEntry, "ChapterAtom");
DEFINE_MKX_UINTEGER(KaxChapterUID, 0x73C4, 2, KaxChapterAtom, "ChapterUID");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UNISTRING(KaxChapterStringUID, 0x5654, 2, KaxChapterAtom, "ChapterStringUID");
#endif
DEFINE_MKX_UINTEGER(KaxChapterTimeStart, 0x91, 1, KaxChapterAtom, "ChapterTimeStart");
DEFINE_MKX_UINTEGER(KaxChapterTimeEnd, 0x92, 1, KaxChapterAtom, "ChapterTimeEnd");
DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagHidden, 0x98, 1, KaxChapterAtom, "ChapterFlagHidden", 0);
DEFINE_MKX_UINTEGER_DEF(KaxChapterFlagEnabled, 0x4598, 2, KaxChapterAtom, "ChapterFlagEnabled", 1);
DEFINE_MKX_BINARY (KaxChapterSegmentUID, 0x6E67, 2, KaxChapterAtom, "ChapterSegmentUID");
DEFINE_MKX_UINTEGER(KaxChapterSegmentEditionUID, 0x6EBC, 2, KaxChapterAtom, "ChapterSegmentEditionUID");
DEFINE_MKX_UINTEGER(KaxChapterPhysicalEquiv, 0x63C3, 2, KaxChapterAtom, "ChapterPhysicalEquiv");
DEFINE_START_SEMANTIC(KaxChapterTrack)
DEFINE_SEMANTIC_ITEM(true, false, KaxChapterTrackNumber)
DEFINE_END_SEMANTIC(KaxChapterTrack)
DEFINE_MKX_MASTER(KaxChapterTrack, 0x8F, 1, KaxChapterAtom, "ChapterTrack");
DEFINE_MKX_UINTEGER(KaxChapterTrackNumber, 0x89, 1, KaxChapterTrack, "ChapterTrackNumber");
DEFINE_START_SEMANTIC(KaxChapterDisplay)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterString)
DEFINE_SEMANTIC_ITEM(true, false, KaxChapterLanguage)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterCountry)
DEFINE_END_SEMANTIC(KaxChapterDisplay)
DEFINE_MKX_MASTER(KaxChapterDisplay, 0x80, 1, KaxChapterAtom, "ChapterDisplay");
DEFINE_MKX_UNISTRING(KaxChapterString, 0x85, 1, KaxChapterDisplay, "ChapterString");
DEFINE_MKX_STRING_DEF(KaxChapterLanguage, 0x437C, 2, KaxChapterDisplay, "ChapterLanguage", "eng");
DEFINE_MKX_STRING(KaxChapterCountry, 0x437E, 2, KaxChapterDisplay, "ChapterCountry");
DEFINE_START_SEMANTIC(KaxChapterProcess)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessCodecID)
DEFINE_SEMANTIC_ITEM(false, true, KaxChapterProcessPrivate)
DEFINE_SEMANTIC_ITEM(false, false, KaxChapterProcessCommand)
DEFINE_END_SEMANTIC(KaxChapterProcess)
DEFINE_MKX_MASTER(KaxChapterProcess, 0x6944, 2, KaxChapterAtom, "ChapterProcess");
DEFINE_MKX_UINTEGER_DEF(KaxChapterProcessCodecID, 0x6955, 2, KaxChapterProcess, "ChapterProcessCodecID", 0);
DEFINE_MKX_BINARY (KaxChapterProcessPrivate, 0x450D, 2, KaxChapterProcess, "ChapterProcessPrivate");
DEFINE_START_SEMANTIC(KaxChapterProcessCommand)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessTime)
DEFINE_SEMANTIC_ITEM(true, true, KaxChapterProcessData)
DEFINE_END_SEMANTIC(KaxChapterProcessCommand)
DEFINE_MKX_MASTER(KaxChapterProcessCommand, 0x6911, 2, KaxChapterProcess, "ChapterProcessCommand");
DEFINE_MKX_UINTEGER(KaxChapterProcessTime, 0x6922, 2, KaxChapterProcessCommand, "ChapterProcessTime");
DEFINE_MKX_BINARY (KaxChapterProcessData, 0x6933, 2, KaxChapterProcessCommand, "ChapterProcessData");
DEFINE_START_SEMANTIC(KaxTags)
DEFINE_SEMANTIC_ITEM(true, false, KaxTag)
DEFINE_END_SEMANTIC(KaxTags)
DEFINE_MKX_MASTER(KaxTags, 0x1254C367, 4, KaxSegment, "Tags");
DEFINE_START_SEMANTIC(KaxTag)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagTargets)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagSimple)
DEFINE_END_SEMANTIC(KaxTag)
DEFINE_MKX_MASTER(KaxTag, 0x7373, 2, KaxTags, "Tag");
DEFINE_START_SEMANTIC(KaxTagTargets)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagTargetTypeValue)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagTargetType)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagTrackUID)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagEditionUID)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagChapterUID)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagAttachmentUID)
DEFINE_END_SEMANTIC(KaxTagTargets)
DEFINE_MKX_MASTER(KaxTagTargets, 0x63C0, 2, KaxTag, "TagTargets");
DEFINE_MKX_UINTEGER_DEF(KaxTagTargetTypeValue, 0x68CA, 2, KaxTagTargets, "TagTargetTypeValue", 50);
DEFINE_MKX_STRING(KaxTagTargetType, 0x63CA, 2, KaxTagTargets, "TagTargetType");
DEFINE_MKX_UINTEGER_DEF(KaxTagTrackUID, 0x63C5, 2, KaxTagTargets, "TagTrackUID", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTagEditionUID, 0x63C9, 2, KaxTagTargets, "TagEditionUID", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTagChapterUID, 0x63C4, 2, KaxTagTargets, "TagChapterUID", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTagAttachmentUID, 0x63C6, 2, KaxTagTargets, "TagAttachmentUID", 0);
DEFINE_START_SEMANTIC(KaxTagSimple)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagSimple) // recursive
DEFINE_SEMANTIC_ITEM(true, true, KaxTagName)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagLangue)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagDefault)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagString)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagBinary)
DEFINE_END_SEMANTIC(KaxTagSimple)
DEFINE_MKX_MASTER(KaxTagSimple, 0x67C8, 2, KaxTag, "TagSimple");
DEFINE_MKX_UNISTRING(KaxTagName, 0x45A3, 2, KaxTagSimple, "TagName");
DEFINE_MKX_STRING_DEF(KaxTagLangue, 0x447A, 2, KaxTagSimple, "TagLanguage", "und");
DEFINE_MKX_UINTEGER_DEF(KaxTagDefault, 0x4484, 2, KaxTagSimple, "TagDefault", 1);
DEFINE_MKX_UNISTRING(KaxTagString, 0x4487, 2, KaxTagSimple, "TagString");
DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary");
filepos_t KaxBlockVirtual::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxReferenceVirtual::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxSliceFrameNumber::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxSliceBlockAddID::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxSliceDelay::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxSliceDuration::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxEncryptedBlock::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxTrackTimecodeScale::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxTrackOffset::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxCodecSettings::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxCodecInfoURL::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxCodecDownloadURL::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxOldStereoMode::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxVideoGamma::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxVideoFrameRate::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxAudioPosition::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxCueRefCluster::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxCueRefNumber::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxCueRefCodecState::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
filepos_t KaxFileReferral::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
assert(false); // no you are not allowed to use this element !
return 0;
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,193 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxTag.cpp 1325 2009-03-30 07:56:54Z robux4 $
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTag.h"
#include "matroska/KaxTagMulti.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxTag)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagTargets)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagGeneral)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagGenres)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioSpecific)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagImageSpecific)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommercial)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiDate)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiEntity)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiIdentifier)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiLegal)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitle)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiAttachment)
//DEFINE_SEMANTIC_ITEM(false, false, KaxTagLength)
//DEFINE_SEMANTIC_ITEM(false, false, KaxTagPlaylistDelay)
//DEFINE_SEMANTIC_ITEM(false, false, KaxTagUnsynchronisedText)
//DEFINE_SEMANTIC_ITEM(false, false, KaxTagUserDefinedURL)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiComment)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagSimple)
DEFINE_END_SEMANTIC(KaxTag)
DEFINE_START_SEMANTIC(KaxTagTargets)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagTargetTypeValue)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagTargetType)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagTrackUID)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagEditionUID)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagChapterUID)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagAttachmentUID)
DEFINE_END_SEMANTIC(KaxTagTargets)
DEFINE_START_SEMANTIC(KaxTagGeneral)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagArchivalLocation)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagFile)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagKeywords)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMood)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagRecordLocation)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagSource)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagSourceForm)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagProduct)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagOriginalMediaType)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagPlayCounter)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagPopularimeter)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagSubject)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagBibliography)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagLanguage)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagRating)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagEncoder)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagEncodeSettings)
DEFINE_END_SEMANTIC(KaxTagGeneral)
DEFINE_START_SEMANTIC(KaxTagGenres)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagAudioGenre)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagVideoGenre)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagSubGenre)
DEFINE_END_SEMANTIC(KaxTagGenres)
DEFINE_START_SEMANTIC(KaxTagAudioSpecific)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioPeak)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioEncryption)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagAudioGain)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagBPM)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagDiscTrack)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagSetPart)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagEqualisation)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagInitialKey)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagOfficialAudioFileURL)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagOfficialAudioSourceURL)
DEFINE_END_SEMANTIC(KaxTagAudioSpecific)
DEFINE_START_SEMANTIC(KaxTagImageSpecific)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagCaptureDPI)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagCaptureLightness)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagCapturePaletteSetting)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagCaptureSharpness)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagCropped)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagOriginalDimensions)
DEFINE_END_SEMANTIC(KaxTagImageSpecific)
DEFINE_START_SEMANTIC(KaxTagSimple)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagName)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagLangue)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagDefault)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagString)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagBinary)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagSimple)
DEFINE_END_SEMANTIC(KaxTagSimple)
DEFINE_MKX_MASTER (KaxTag, 0x7373, 2, KaxTags, "Tag");
DEFINE_MKX_MASTER (KaxTagTargets, 0x63C0, 2, KaxTag, "TagTargets");
DEFINE_MKX_MASTER (KaxTagGeneral, 0x67C9, 2, KaxTag, "TagGeneral");
DEFINE_MKX_MASTER (KaxTagGenres, 0x6583, 2, KaxTag, "TagGenres");
DEFINE_MKX_MASTER (KaxTagAudioSpecific, 0x41C5, 2, KaxTag, "TagAudioSpecific");
DEFINE_MKX_MASTER (KaxTagImageSpecific, 0x4990, 2, KaxTag, "TagImageSpecific");
DEFINE_MKX_UNISTRING (KaxTagBibliography, 0x4488, 2, KaxTag, "Bibliography");
DEFINE_MKX_UNISTRING (KaxTagEncoder, 0x4431, 2, KaxTag, "Encoder");
DEFINE_MKX_UNISTRING (KaxTagEncodeSettings, 0x6526, 2, KaxTag, "EncodeSettings");
DEFINE_MKX_STRING (KaxTagLanguage, 0x22B59F, 3, KaxTag, "Language");
DEFINE_MKX_UINTEGER (KaxTagLength, 0x5243, 2, KaxTag, "Length");
DEFINE_MKX_UINTEGER (KaxTagPlaylistDelay, 0x72CC, 2, KaxTag, "PlaylistDelay");
DEFINE_MKX_BINARY (KaxTagRating, 0x52BC, 2, KaxTag, "Rating");
DEFINE_MKX_UNISTRING (KaxTagSubject, 0x49C1, 2, KaxTag, "Subject");
DEFINE_MKX_UNISTRING (KaxTagUnsynchronisedText, 0x874B, 2, KaxTag, "UnsynchronisedText");
DEFINE_MKX_STRING (KaxTagUserDefinedURL, 0x434A, 2, KaxTag, "UserDefinedURL");
DEFINE_MKX_UINTEGER_DEF(KaxTagTargetTypeValue, 0x68CA, 2, KaxTagTargets, "TagTargetTypeValue", 50);
DEFINE_MKX_STRING (KaxTagTargetType, 0x63CA, 2, KaxTagTargets, "TagTargetType");
DEFINE_MKX_UINTEGER_DEF(KaxTagTrackUID, 0x63C5, 2, KaxTagTargets, "TagTrackUID", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTagEditionUID, 0x63C9, 2, KaxTagTargets, "TagEditionUID", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTagChapterUID, 0x63C4, 2, KaxTagTargets, "TagChapterUID", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTagAttachmentUID, 0x63C6, 2, KaxTagTargets, "TagAttachmentUID", 0);
DEFINE_MKX_UNISTRING (KaxTagArchivalLocation, 0x45A4, 2, KaxTagGeneral, "ArchivalLocation");
DEFINE_MKX_UNISTRING (KaxTagFile, 0x454E, 2, KaxTagGeneral, "File");
DEFINE_MKX_UNISTRING (KaxTagKeywords, 0x458C, 2, KaxTagGeneral, "Keywords");
DEFINE_MKX_UNISTRING (KaxTagMood, 0x45AE, 2, KaxTagGeneral, "Mood");
DEFINE_MKX_STRING (KaxTagRecordLocation, 0x457E, 2, KaxTagGeneral, "RecordLocation");
DEFINE_MKX_UNISTRING (KaxTagSource, 0x458A, 2, KaxTagGeneral, "Source");
DEFINE_MKX_UNISTRING (KaxTagSourceForm, 0x45B5, 2, KaxTagGeneral, "SourceForm");
DEFINE_MKX_UNISTRING (KaxTagProduct, 0x45E3, 2, KaxTagGeneral, "Product");
DEFINE_MKX_UNISTRING (KaxTagOriginalMediaType, 0x45A7, 2, KaxTagGeneral, "OriginalMediaType");
DEFINE_MKX_UINTEGER (KaxTagPlayCounter, 0x4566, 2, KaxTagTargets, "PlayCounter");
DEFINE_MKX_SINTEGER (KaxTagPopularimeter, 0x4532, 2, KaxTagTargets, "Popularimeter");
DEFINE_MKX_STRING (KaxTagAudioGenre, 0x65C2, 2, KaxTagGenres, "AudioGenre");
DEFINE_MKX_BINARY (KaxTagVideoGenre, 0x65A1, 2, KaxTagGenres, "VideoGenre");
DEFINE_MKX_STRING (KaxTagSubGenre, 0x65AC, 2, KaxTagGenres, "SubGenre");
DEFINE_MKX_BINARY (KaxTagAudioEncryption, 0x41B4, 2, KaxTagAudioSpecific, "AudioEncryption");
DEFINE_MKX_FLOAT (KaxTagAudioGain, 0x4199, 2, KaxTagAudioSpecific, "AudioGain");
DEFINE_MKX_FLOAT (KaxTagAudioPeak, 0x4189, 2, KaxTagAudioSpecific, "AudioPeak");
DEFINE_MKX_FLOAT (KaxTagBPM, 0x41A1, 2, KaxTagAudioSpecific, "BPM");
DEFINE_MKX_UINTEGER (KaxTagDiscTrack, 0x41B6, 2, KaxTagAudioSpecific, "DiscTrack");
DEFINE_MKX_UINTEGER (KaxTagSetPart, 0x416E, 2, KaxTagAudioSpecific, "SetPart");
DEFINE_MKX_BINARY (KaxTagEqualisation, 0x41B1, 2, KaxTagAudioSpecific, "Equalisation");
DEFINE_MKX_STRING (KaxTagInitialKey, 0x413A, 2, KaxTagAudioSpecific, "InitialKey");
DEFINE_MKX_STRING (KaxTagOfficialAudioFileURL, 0x4133, 2, KaxTagAudioSpecific, "OfficialAudioFileURL");
DEFINE_MKX_STRING (KaxTagOfficialAudioSourceURL, 0x413E, 2, KaxTagAudioSpecific, "AudioSourceURL");
DEFINE_MKX_UINTEGER (KaxTagCaptureDPI, 0x49C7, 2, KaxTagImageSpecific, "CaptureDPI");
DEFINE_MKX_BINARY (KaxTagCaptureLightness, 0x49E1, 2, KaxTagImageSpecific, "CaptureLightness");
DEFINE_MKX_UINTEGER (KaxTagCapturePaletteSetting, 0x4934, 2, KaxTagImageSpecific, "CapturePaletteSetting");
DEFINE_MKX_BINARY (KaxTagCaptureSharpness, 0x4922, 2, KaxTagImageSpecific, "CaptureSharpness");
DEFINE_MKX_UNISTRING (KaxTagCropped, 0x4987, 2, KaxTagImageSpecific, "Cropped");
DEFINE_MKX_STRING (KaxTagOriginalDimensions, 0x4933, 2, KaxTagImageSpecific, "OriginalDimensions");
DEFINE_MKX_MASTER (KaxTagSimple, 0x67C8, 2, KaxTag, "TagSimple");
DEFINE_MKX_UNISTRING (KaxTagName, 0x45A3, 2, KaxTagSimple, "TagName");
DEFINE_MKX_STRING_DEF (KaxTagLangue, 0x447A, 2, KaxTagSimple, "TagLanguage", "und");
DEFINE_MKX_UINTEGER_DEF(KaxTagDefault, 0x4484, 2, KaxTagSimple, "TagDefault", 1);
DEFINE_MKX_UNISTRING (KaxTagString, 0x4487, 2, KaxTagSimple, "TagString");
DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary");
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,212 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id$
\author Jory Stone <jcsston @ toughguy.net>
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTagMulti.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxTagMultiGlobal)
// TODO: have the default EBML global semantic as well
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiComment)
DEFINE_END_SEMANTIC(KaxTagMultiGlobal)
DEFINE_START_SEMANTIC(KaxTagMultiComment)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommentName)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommentComments)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommentLanguage)
DEFINE_END_SEMANTIC(KaxTagMultiComment)
DEFINE_START_SEMANTIC(KaxTagMultiCommercial)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagCommercial)
DEFINE_END_SEMANTIC(KaxTagMultiCommercial)
DEFINE_START_SEMANTIC(KaxTagCommercial)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiCommercialType)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiCommercialAddress)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiCommercialURL)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiCommercialEmail)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiPrice)
DEFINE_END_SEMANTIC(KaxTagCommercial)
DEFINE_START_SEMANTIC(KaxTagMultiPrice)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiPriceCurrency)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiPriceAmount)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiPricePriceDate)
DEFINE_END_SEMANTIC(KaxTagMultiPrice)
DEFINE_START_SEMANTIC(KaxTagMultiDate)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagDate)
DEFINE_END_SEMANTIC(KaxTagMultiDate)
DEFINE_START_SEMANTIC(KaxTagDate)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiDateType)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiDateDateBegin)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiDateDateEnd)
DEFINE_END_SEMANTIC(KaxTagDate)
DEFINE_START_SEMANTIC(KaxTagMultiEntity)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagEntity)
DEFINE_END_SEMANTIC(KaxTagMultiEntity)
DEFINE_START_SEMANTIC(KaxTagEntity)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiEntityType)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiEntityName)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiEntityURL)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiEntityEmail)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiEntityAddress)
DEFINE_END_SEMANTIC(KaxTagEntity)
DEFINE_START_SEMANTIC(KaxTagMultiIdentifier)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagIdentifier)
DEFINE_END_SEMANTIC(KaxTagMultiIdentifier)
DEFINE_START_SEMANTIC(KaxTagIdentifier)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiIdentifierType)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiIdentifierBinary)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiIdentifierString)
DEFINE_END_SEMANTIC(KaxTagIdentifier)
DEFINE_START_SEMANTIC(KaxTagMultiLegal)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagLegal)
DEFINE_END_SEMANTIC(KaxTagMultiLegal)
DEFINE_START_SEMANTIC(KaxTagLegal)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiLegalType)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiLegalContent)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiLegalURL)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiLegalAddress)
DEFINE_END_SEMANTIC(KaxTagLegal)
DEFINE_START_SEMANTIC(KaxTagMultiTitle)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagTitle)
DEFINE_END_SEMANTIC(KaxTagMultiTitle)
DEFINE_START_SEMANTIC(KaxTagTitle)
DEFINE_SEMANTIC_ITEM(true, true, KaxTagMultiTitleType)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleName)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleSubTitle)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleEdition)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleAddress)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiTitleURL)
DEFINE_SEMANTIC_ITEM(false, false, KaxTagMultiTitleEmail)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagMultiTitleLanguage)
DEFINE_END_SEMANTIC(KaxTagTitle)
DEFINE_START_SEMANTIC(KaxTagMultiAttachment)
DEFINE_SEMANTIC_ITEM(true, false, KaxTagAttachment)
DEFINE_END_SEMANTIC(KaxTagMultiAttachment)
DEFINE_START_SEMANTIC(KaxTagAttachment)
DEFINE_SEMANTIC_ITEM(false, true, KaxTagAttachmentID)
DEFINE_END_SEMANTIC(KaxTagAttachment)
DEFINE_MKX_CONTEXT(KaxTagMultiGlobal);
const EbmlSemanticContext & GetKaxTagsGlobal_Context()
{
return EBML_CLASS_SEMCONTEXT(KaxTagMultiGlobal);
}
#if defined(HAVE_EBML2)
#define DEFINE_TAG_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,d,e,EBML_SemanticKaxTagMultiGlobal)
#else
#define DEFINE_TAG_MASTER(a,b,c,d,e) DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxTagsGlobal_Context)
#endif
DEFINE_MKX_MASTER (KaxTagMultiComment, 0x5B7B, 2, KaxTag, "MultiComment");
DEFINE_MKX_STRING (KaxTagMultiCommentName, 0x5F7D, 2, KaxTagMultiComment, "MultiCommentName");
DEFINE_MKX_UNISTRING(KaxTagMultiCommentComments, 0x5F7C, 2, KaxTagMultiComment, "MultiCommentComments");
DEFINE_MKX_STRING (KaxTagMultiCommentLanguage, 0x22B59D, 3, KaxTagMultiComment, "MultiCommentLanguage");
DEFINE_TAG_MASTER (KaxTagMultiCommercial, 0x4DC7, 2, KaxTag, "MultiCommercial");
DEFINE_TAG_MASTER (KaxTagCommercial, 0x4EC7, 2, KaxTagMultiCommercial, "Commercial");
DEFINE_MKX_UINTEGER (KaxTagMultiCommercialType, 0x5BD7, 2, KaxTagCommercial, "MultiCommercialType");
DEFINE_MKX_UNISTRING(KaxTagMultiCommercialAddress, 0x5BBB, 2, KaxTagCommercial, "MultiCommercialAddress");
DEFINE_MKX_STRING (KaxTagMultiCommercialURL, 0x5BDA, 2, KaxTagCommercial, "MultiCommercialURL");
DEFINE_MKX_STRING (KaxTagMultiCommercialEmail, 0x5BC0, 2, KaxTagCommercial, "MultiCommercialEmail");
DEFINE_TAG_MASTER (KaxTagMultiPrice, 0x5BC3, 2, KaxTagCommercial, "MultiPrice");
DEFINE_MKX_STRING (KaxTagMultiPriceCurrency, 0x5B6C, 2, KaxTagMultiPrice, "MultiPriceCurrency");
DEFINE_MKX_FLOAT (KaxTagMultiPriceAmount, 0x5B6E, 2, KaxTagMultiPrice, "MultiPriceAmount");
DEFINE_MKX_DATE (KaxTagMultiPricePriceDate, 0x5B6F, 2, KaxTagMultiPrice, "MultiPricePriceDate");
DEFINE_TAG_MASTER (KaxTagMultiDate, 0x4DC8, 2, KaxTag, "MultiDate");
DEFINE_TAG_MASTER (KaxTagDate, 0x4EC8, 2, KaxTagMultiDate, "Date");
DEFINE_MKX_UINTEGER (KaxTagMultiDateType, 0x5BD8, 2, KaxTagDate, "MultiDateType");
DEFINE_MKX_DATE (KaxTagMultiDateDateBegin, 0x4460, 2, KaxTagDate, "MultiDateDateBegin");
DEFINE_MKX_DATE (KaxTagMultiDateDateEnd, 0x4462, 2, KaxTagDate, "MultiDateDateEnd");
DEFINE_TAG_MASTER (KaxTagMultiEntity, 0x4DC9, 2, KaxTag, "MultiEntity");
DEFINE_TAG_MASTER (KaxTagEntity, 0x4EC9, 2, KaxTagMultiEntity, "Entity");
DEFINE_MKX_UINTEGER (KaxTagMultiEntityType, 0x5BD9, 2, KaxTagEntity, "MultiEntityType");
DEFINE_MKX_UNISTRING(KaxTagMultiEntityName, 0x5BED, 2, KaxTagEntity, "MultiEntityName");
DEFINE_MKX_STRING (KaxTagMultiEntityURL, 0x5BDB, 2, KaxTagEntity, "MultiEntityURL");
DEFINE_MKX_STRING (KaxTagMultiEntityEmail, 0x5BC1, 2, KaxTagEntity, "MultiEntityEmail");
DEFINE_MKX_UNISTRING(KaxTagMultiEntityAddress, 0x5BDC, 2, KaxTagEntity, "MultiEntityAddress");
DEFINE_TAG_MASTER (KaxTagMultiIdentifier, 0x4DC6, 2, KaxTag, "MultiIdentifier");
DEFINE_TAG_MASTER (KaxTagIdentifier, 0x4EC6, 2, KaxTagMultiIdentifier, "Identifier");
DEFINE_MKX_UINTEGER (KaxTagMultiIdentifierType, 0x5BAD, 2, KaxTagIdentifier, "MultiIdentifierType");
DEFINE_MKX_BINARY (KaxTagMultiIdentifierBinary, 0x6B67, 2, KaxTagIdentifier, "MultiIdentifierBinary");
DEFINE_MKX_UNISTRING(KaxTagMultiIdentifierString, 0x6B68, 2, KaxTagIdentifier, "MultiIdentifierString");
DEFINE_TAG_MASTER (KaxTagMultiLegal, 0x4DC5, 2, KaxTag, "MultiLegal");
DEFINE_TAG_MASTER (KaxTagLegal, 0x4EC5, 2, KaxTagMultiLegal, "Legal");
DEFINE_MKX_UINTEGER (KaxTagMultiLegalType, 0x5BBD, 2, KaxTagLegal, "MultiLegalType");
DEFINE_MKX_UNISTRING(KaxTagMultiLegalContent, 0x5BB2, 2, KaxTagLegal, "MultiLegalContent");
DEFINE_MKX_STRING (KaxTagMultiLegalURL, 0x5B34, 2, KaxTagLegal, "MultiLegalURL");
DEFINE_MKX_UNISTRING(KaxTagMultiLegalAddress, 0x5B9B, 2, KaxTagLegal, "MultiLegalAddress");
DEFINE_TAG_MASTER (KaxTagMultiTitle, 0x4DC4, 2, KaxTag, "MultiTitle");
DEFINE_TAG_MASTER (KaxTagTitle, 0x4EC4, 2, KaxTagMultiTitle, "Title");
DEFINE_MKX_UINTEGER (KaxTagMultiTitleType, 0x5B7D, 2, KaxTagTitle, "MultiTitleType");
DEFINE_MKX_UNISTRING(KaxTagMultiTitleName, 0x5BB9, 2, KaxTagTitle, "MultiTitleName");
DEFINE_MKX_UNISTRING(KaxTagMultiTitleSubTitle, 0x5B5B, 2, KaxTagTitle, "MultiTitleSubTitle");
DEFINE_MKX_UNISTRING(KaxTagMultiTitleEdition, 0x5BAE, 2, KaxTagTitle, "MultiTitleEdition");
DEFINE_MKX_UNISTRING(KaxTagMultiTitleAddress, 0x5B33, 2, KaxTagTitle, "MultiTitleAddress");
DEFINE_MKX_STRING (KaxTagMultiTitleURL, 0x5BA9, 2, KaxTagTitle, "MultiTitleURL");
DEFINE_MKX_STRING (KaxTagMultiTitleEmail, 0x5BC9, 2, KaxTagTitle, "MultiTitleEmail");
DEFINE_MKX_STRING (KaxTagMultiTitleLanguage, 0x22B59E, 3, KaxTagTitle, "MultiTitleLanguage");
DEFINE_TAG_MASTER (KaxTagMultiAttachment, 0x4DC3, 2, KaxTag, "MultiAttachment");
DEFINE_TAG_MASTER (KaxTagAttachment, 0x4EC3, 2, KaxTagMultiAttachment, "Attachment");
DEFINE_MKX_UINTEGER (KaxTagAttachmentID, 0x5BA0, 2, KaxTagAttachment, "AttachmentID");
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,52 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxTags.cpp 711 2004-08-10 12:58:47Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author Jory Stone <jcsston @ toughguy.net>
*/
#include "matroska/KaxTags.h"
#include "matroska/KaxTag.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
using namespace LIBEBML_NAMESPACE;
// sub elements
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxTags)
DEFINE_SEMANTIC_ITEM(true, false, KaxTag)
DEFINE_END_SEMANTIC(KaxTags)
DEFINE_MKX_MASTER(KaxTags, 0x1254C367, 4, KaxSegment, "Tags");
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,62 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxTrackAudio.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTrackAudio.h"
// sub elements
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxTrackAudio)
DEFINE_SEMANTIC_ITEM(true, true, KaxAudioSamplingFreq)
DEFINE_SEMANTIC_ITEM(true, true, KaxAudioChannels)
DEFINE_SEMANTIC_ITEM(false, true, KaxAudioBitDepth)
DEFINE_SEMANTIC_ITEM(false, true, KaxAudioOutputSamplingFreq)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxAudioPosition)
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxTrackAudio)
DEFINE_MKX_MASTER (KaxTrackAudio, 0xE1, 1, KaxTrackEntry, "TrackAudio");
DEFINE_MKX_FLOAT_DEF (KaxAudioSamplingFreq, 0xB5, 1, KaxTrackAudio, "AudioSamplingFreq", 8000.0);
DEFINE_MKX_FLOAT (KaxAudioOutputSamplingFreq, 0x78B5, 2, KaxTrackAudio, "AudioOutputSamplingFreq");
DEFINE_MKX_UINTEGER_DEF(KaxAudioChannels, 0x9F, 1, KaxTrackAudio, "AudioChannels", 1);
DEFINE_MKX_UINTEGER (KaxAudioBitDepth, 0x6264, 2, KaxTrackAudio, "AudioBitDepth");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_BINARY (KaxAudioPosition, 0x7D7B, 2, KaxTrackAudio, "AudioPosition");
#endif
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,79 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxTrackEntryData.cpp 1201 2005-08-30 14:28:27Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net>
*/
#include "matroska/KaxTrackEntryData.h"
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxTrackTranslate)
DEFINE_SEMANTIC_ITEM(false, false, KaxTrackTranslateEditionUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTranslateCodec)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTranslateTrackID)
DEFINE_END_SEMANTIC(KaxTrackTranslate)
DEFINE_MKX_UINTEGER (KaxTrackNumber, 0xD7, 1, KaxTracks, "TrackNumber");
DEFINE_MKX_UINTEGER (KaxTrackUID, 0x73C5, 2, KaxTracks, "TrackUID");
DEFINE_MKX_UINTEGER (KaxTrackType, 0x83, 1, KaxTracks, "TrackType");
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagDefault, 0x88, 1, KaxTracks, "TrackFlagEnabled", 1);
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagForced, 0x55AA, 2, KaxTracks, "TrackFlagForced", 0);
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagLacing, 0x9C, 1, KaxTracks, "TrackFlagLacing", 1);
DEFINE_MKX_UINTEGER_DEF(KaxTrackMinCache, 0x6DE7, 2, KaxTracks, "TrackMinCache", 0);
DEFINE_MKX_UINTEGER (KaxTrackMaxCache, 0x6DF8, 2, KaxTracks, "TrackMaxCache\0rotomodobopo");
DEFINE_MKX_UINTEGER (KaxTrackDefaultDuration, 0x23E383, 3, KaxTracks, "TrackDefaultDuration");
DEFINE_MKX_FLOAT_DEF (KaxTrackTimecodeScale, 0x23314F, 3, KaxTracks, "TrackTimecodeScale", 1.0);
DEFINE_MKX_UINTEGER_DEF(KaxMaxBlockAdditionID, 0x55EE, 2, KaxTracks, "MaxBlockAdditionID", 0);
//DEFINE_MKX_SINTEGER_DEF(KaxTrackOffset, 0x537F, 2, KaxTracks, "TrackOffset", 0);
DEFINE_MKX_UNISTRING (KaxTrackName, 0x536E, 2, KaxTracks, "TrackName");
DEFINE_MKX_STRING_DEF (KaxTrackLanguage, 0x22B59C, 3, KaxTracks, "TrackLanguage", "eng");
DEFINE_MKX_STRING (KaxCodecID, 0x86, 1, KaxTracks, "CodecID");
DEFINE_MKX_BINARY (KaxCodecPrivate, 0x63A2, 2, KaxTracks, "CodecPrivate");
DEFINE_MKX_UNISTRING (KaxCodecName, 0x258688, 3, KaxTracks, "CodecName");
DEFINE_MKX_BINARY (KaxTrackAttachmentLink, 0x7446, 2, KaxTracks, "TrackAttachmentLink");
DEFINE_MKX_UINTEGER (KaxTrackOverlay, 0x6FAB, 2, KaxTracks, "TrackOverlay");
DEFINE_MKX_MASTER (KaxTrackTranslate, 0x6624, 2, KaxTracks, "TrackTranslate");
DEFINE_MKX_UINTEGER (KaxTrackTranslateEditionUID, 0x66FC, 2, KaxTrackTranslate, "TrackTranslateEditionUID");
DEFINE_MKX_UINTEGER (KaxTrackTranslateCodec, 0x66BF, 2, KaxTrackTranslate, "TrackTranslateCodec");
DEFINE_MKX_BINARY (KaxTrackTranslateTrackID, 0x66A5, 2, KaxTrackTranslate, "TrackTranslateTrackID");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER_DEF(KaxTrackFlagEnabled, 0xB9, 1, KaxTracks, "TrackFlagDefault", 1);
DEFINE_MKX_UNISTRING (KaxCodecSettings, 0x3A9697, 3, KaxTracks, "CodecSettings");
DEFINE_MKX_STRING (KaxCodecInfoURL, 0x3B4040, 3, KaxTracks, "CodecInfoURL");
DEFINE_MKX_STRING (KaxCodecDownloadURL, 0x26B240, 3, KaxTracks, "CodecDownloadURL");
DEFINE_MKX_UINTEGER_DEF(KaxCodecDecodeAll, 0xAA, 1, KaxTracks, "CodecDecodeAll", 1);
#endif
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,88 +0,0 @@
/****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/
**
** <file/class description>
**
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
**
** This file is part of libmatroska.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id: KaxTrackVideo.cpp 738 2004-08-30 09:21:46Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net>
*/
#include "matroska/KaxTrackVideo.h"
// sub elements
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h"
START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxTrackVideo)
DEFINE_SEMANTIC_ITEM(true, true, KaxVideoPixelWidth)
DEFINE_SEMANTIC_ITEM(true, true, KaxVideoPixelHeight)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropBottom)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropTop)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropLeft)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoPixelCropRight)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayWidth)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayHeight)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoColourSpace)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoFrameRate)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(true, true, KaxVideoFlagInterlaced)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoStereoMode)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoDisplayUnit)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoAspectRatio)
DEFINE_SEMANTIC_ITEM(false, true, KaxVideoGamma)
#endif // MATROSKA_VERSION
DEFINE_END_SEMANTIC(KaxTrackVideo)
DEFINE_MKX_MASTER (KaxTrackVideo, 0xE0, 1, KaxTrackEntry, "TrackVideo");
DEFINE_MKX_UINTEGER (KaxVideoPixelWidth, 0xB0, 1, KaxTrackVideo, "VideoPixelWidth");
DEFINE_MKX_UINTEGER (KaxVideoPixelHeight, 0xBA, 1, KaxTrackVideo, "VideoPixelHeight");
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropBottom, 0x54AA, 2, KaxTrackVideo, "VideoPixelCropBottom", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropTop, 0x54BB, 2, KaxTrackVideo, "VideoPixelCropTop", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropLeft, 0x54CC, 2, KaxTrackVideo, "VideoPixelCropLeft", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoPixelCropRight, 0x54DD, 2, KaxTrackVideo, "VideoPixelCropRight", 0);
DEFINE_MKX_UINTEGER (KaxVideoDisplayWidth, 0x54B0, 2, KaxTrackVideo, "VideoDisplayWidth");
DEFINE_MKX_UINTEGER (KaxVideoDisplayHeight, 0x54BA, 2, KaxTrackVideo, "VideoDisplayHeight");
DEFINE_MKX_BINARY (KaxVideoColourSpace, 0x2EB524, 3, KaxTrackVideo, "VideoColourSpace");
DEFINE_MKX_FLOAT (KaxVideoFrameRate, 0x2383E3, 3, KaxTrackVideo, "VideoFrameRate");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_UINTEGER_DEF(KaxVideoFlagInterlaced, 0x9A, 1, KaxTrackVideo, "VideoFlagInterlaced", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoStereoMode, 0x53B8, 2, KaxTrackVideo, "VideoStereoMode", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoDisplayUnit, 0x54B2, 2, KaxTrackVideo, "VideoDisplayUnit", 0);
DEFINE_MKX_UINTEGER_DEF(KaxVideoAspectRatio, 0x54B3, 2, KaxTrackVideo, "VideoAspectRatio", 0);
DEFINE_MKX_FLOAT (KaxVideoGamma, 0x2FB523, 3, KaxTrackVideo, "VideoGamma");
#endif
filepos_t KaxVideoFrameRate::RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault)
{
assert(false); // no you are not allowed to use this element !
return 0;
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,99 +1,54 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxTracks.cpp 1202 2005-08-30 14:39:01Z robux4 $ \version \$Id: KaxTracks.cpp 1202 2005-08-30 14:39:01Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
// sub elements // sub elements
#include "matroska/KaxTrackEntryData.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxTrackAudio.h" #include "matroska/KaxDefines.h"
#include "matroska/KaxTrackVideo.h"
#include "matroska/KaxContentEncoding.h" START_LIBMATROSKA_NAMESPACE
#include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h" KaxTrackEntry::KaxTrackEntry(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxTrackEntry) EBML_DEF_SEP EBML_EXTRA_CALL)
START_LIBMATROSKA_NAMESPACE ,bGlobalTimecodeScaleIsSet(false)
{}
DEFINE_START_SEMANTIC(KaxTracks)
DEFINE_SEMANTIC_ITEM(true, false, KaxTrackEntry) void KaxTrackEntry::EnableLacing(bool bEnable)
DEFINE_END_SEMANTIC(KaxTracks) {
KaxTrackFlagLacing & myLacing = GetChild<KaxTrackFlagLacing>(*this);
DEFINE_START_SEMANTIC(KaxTrackEntry) *(static_cast<EbmlUInteger *>(&myLacing)) = bEnable ? 1 : 0;
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackNumber) }
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackType) END_LIBMATROSKA_NAMESPACE
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagEnabled)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagDefault)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagForced)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackFlagLacing)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackMinCache)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackMaxCache)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackDefaultDuration)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackTimecodeScale)
DEFINE_SEMANTIC_ITEM(true, true, KaxMaxBlockAdditionID)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackName)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackLanguage)
DEFINE_SEMANTIC_ITEM(true, true, KaxCodecID)
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecPrivate)
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecName)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackAttachmentLink)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecSettings)
DEFINE_SEMANTIC_ITEM(false, false, KaxCodecInfoURL)
DEFINE_SEMANTIC_ITEM(false, false, KaxCodecDownloadURL)
DEFINE_SEMANTIC_ITEM(true, true, KaxCodecDecodeAll)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, false, KaxTrackOverlay)
DEFINE_SEMANTIC_ITEM(false, false, KaxTrackTranslate)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackAudio)
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackVideo)
DEFINE_SEMANTIC_ITEM(false, true, KaxContentEncodings)
DEFINE_END_SEMANTIC(KaxTrackEntry)
DEFINE_MKX_MASTER (KaxTracks, 0x1654AE6B, 4, KaxSegment, "Tracks");
DEFINE_MKX_MASTER_CONS(KaxTrackEntry, 0xAE, 1, KaxTracks, "TrackEntry");
KaxTrackEntry::KaxTrackEntry(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxTrackEntry) EBML_DEF_SEP EBML_EXTRA_CALL)
,bGlobalTimecodeScaleIsSet(false)
{}
void KaxTrackEntry::EnableLacing(bool bEnable)
{
KaxTrackFlagLacing & myLacing = GetChild<KaxTrackFlagLacing>(*this);
*(static_cast<EbmlUInteger *>(&myLacing)) = bEnable ? 1 : 0;
}
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,40 +1,43 @@
/**************************************************************************** /****************************************************************************
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** <file/class description> ** <file/class description>
** **
** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. ** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved.
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** 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, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxVersion.cpp 640 2004-07-09 21:05:36Z mosu $ \version \$Id: KaxVersion.cpp 640 2004-07-09 21:05:36Z mosu $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "matroska/KaxVersion.h" #include "matroska/KaxVersion.h"
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
END_LIBMATROSKA_NAMESPACE const std::string KaxCodeVersion = "1.4.0";
const std::string KaxCodeDate = __TIMESTAMP__;
END_LIBMATROSKA_NAMESPACE

View File

@@ -1,10 +1,10 @@
## libmatroska Makefile ## libmatroska Makefile
## (c) 2002 Steve Lhomme ## (c) 2002 Steve Lhomme
## This software is licensed under the LGPL, see LGPL.txt ## This software is licensed under the LGPL, see LICENSE.LGPL
all: endian all: endian
echo "Making endianess tests" echo "Making endianess tests"
(cd endian; make) (cd endian; make)
clean: clean:
echo "Cleaning all tests" echo "Cleaning all tests"
(cd endian; make $@) (cd endian; make $@)

View File

@@ -1,62 +1,62 @@
# libmatroska core Makefile (used in cygwin) # libmatroska core Makefile (used in cygwin)
# $Id: Makefile 640 2004-07-09 21:05:36Z mosu $ # $Id: Makefile 640 2004-07-09 21:05:36Z mosu $
# Options # Options
EXTENSION=.cpp EXTENSION=.cpp
CXXFLAGS=-g -DDEBUG -Wall -Wno-unknown-pragmas -DWIN32 -I../../src/ CXXFLAGS=-g -DDEBUG -Wall -Wno-unknown-pragmas -DWIN32 -I../../src/
LDFLAGS= LDFLAGS=
SRC_DIR=../../src/ SRC_DIR=../../src/
# Programs # Programs
CXX=g++ -c CXX=g++ -c
LD=g++ LD=g++
DEP=$(CXX) -MM DEP=$(CXX) -MM
DEPEND = makedepend DEPEND = makedepend
AR = ar rcvu AR = ar rcvu
RANLIB = ranlib RANLIB = ranlib
# Librarires # Librarires
INCLUDE= INCLUDE=
LIBS= LIBS=
# Names # Names
PROGRAM=test00 PROGRAM=test00
# source-files # source-files
sources:=$(wildcard ${SRC_DIR}*$(EXTENSION)) sources:=$(wildcard ${SRC_DIR}*$(EXTENSION))
# header files; replace .cxx extension with .h # header files; replace .cxx extension with .h
headers:=$(patsubst %$(EXTENSION),%.hpp,$(sources)) headers:=$(patsubst %$(EXTENSION),%.hpp,$(sources))
# files holding dependency information; replace .cxx extension with .dep # files holding dependency information; replace .cxx extension with .dep
dependencies:=$(patsubst %$(EXTENSION),%.dep,$(sources)) dependencies:=$(patsubst %$(EXTENSION),%.dep,$(sources))
# object files; replace .cxx extension with .o # object files; replace .cxx extension with .o
objects:=$(patsubst %$(EXTENSION),%.o,$(sources)) objects:=$(patsubst %$(EXTENSION),%.o,$(sources))
OBJ=$(objects) test00.o OBJ=$(objects) test00.o
DEPENDFLAGS = ${CXXFLAGS} ${INCLUDE} DEPENDFLAGS = ${CXXFLAGS} ${INCLUDE}
# Build rules # Build rules
%.o: %$(EXTENSION) %.o: %$(EXTENSION)
$(CXX) $(CXXFLAGS) $(INCLUDE) -o $@ $< $(CXX) $(CXXFLAGS) $(INCLUDE) -o $@ $<
$(PROGRAM): $(OBJ) $(PROGRAM): $(OBJ)
# $(AR) $@ $(objects) # $(AR) $@ $(objects)
# $(RANLIB) $@ # $(RANLIB) $@
$(LD) $(LDFLAGS) -o $@ $^ $(LIBS) $(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
${LD} -o $@ ${LDFLAGS} ${OBJ} ${LIBS} ${EXTRA_LIBS} ${LD} -o $@ ${LDFLAGS} ${OBJ} ${LIBS} ${EXTRA_LIBS}
clean: clean:
rm -f $(OBJ) rm -f $(OBJ)
rm -f $(dependencies) rm -f $(dependencies)
rm -f $(PROGRAM) rm -f $(PROGRAM)
rm -f CORE rm -f CORE
# what are the source dependencies # what are the source dependencies
depend: $(sources) depend: $(sources)
$(DEPEND) $(DEPENDFLAGS) $(sources) $(DEPEND) $(DEPENDFLAGS) $(sources)
# DO NOT DELETE # DO NOT DELETE

View File

@@ -2,10 +2,12 @@
CON ebml-test00 CON ebml-test00
{ {
USE matroska
SOURCE test00.cpp SOURCE test00.cpp
} }
CON ebml-test0 CON ebml-test0
{ {
USE matroska
SOURCE test0.cpp SOURCE test0.cpp
} }

View File

@@ -7,24 +7,21 @@
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This file may be distributed under the terms of the Q Public License ** This library is free software; you can redistribute it and/or
** as defined by Trolltech AS of Norway and appearing in the file ** modify it under the terms of the GNU Lesser General Public
** LICENSE.QPL included in the packaging of this file. ** License as published by the Free Software Foundation; either
** ** version 2.1 of the License, or (at your option) any later version.
** This file may be distributed and/or modified under the terms of the **
** GNU General Public License version 2 as published by the Free Software ** This library is distributed in the hope that it will be useful,
** Foundation and appearing in the file LICENSE.GPL included in the ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** packaging of this file. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** ** Lesser General Public License for more details.
** Licensees holding an other license may use this file in accordance with **
** the Agreement provided with the Software. ** You should have received a copy of the GNU Lesser General Public
** ** License along with this library; if not, write to the Free Software
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.matroska.org/license/qpl/ for QPL licensing information.
** See http://www.matroska.org/license/gpl/ for GPL licensing information.
** **
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -32,7 +29,7 @@
/*! /*!
\file \file
\version \$Id: test0.cpp 1078 2005-03-03 13:13:04Z robux4 $ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
Test the EBML write possibilities Test the EBML write possibilities
\see http://www.cl.cam.ac.uk/~mgk25/unicode.html \see http://www.cl.cam.ac.uk/~mgk25/unicode.html
@@ -41,18 +38,19 @@
#include <stdio.h> #include <stdio.h>
#include "StdIOCallback.hpp" #include "ebml/StdIOCallback.h"
#include "EbmlUInteger.hpp" #include "ebml/EbmlUInteger.h"
#include "EbmlSInteger.hpp" #include "ebml/EbmlSInteger.h"
#include "EbmlBinary.hpp" #include "ebml/EbmlBinary.h"
#include "EbmlString.hpp" #include "ebml/EbmlString.h"
#include "EbmlUnicodeString.hpp" #include "ebml/EbmlUnicodeString.h"
#include "EbmlMaster.hpp" #include "ebml/EbmlMaster.h"
#include "EbmlFloat.hpp" #include "ebml/EbmlFloat.h"
#include "EbmlStream.hpp" #include "ebml/EbmlStream.h"
#include "ebml/StdIOCallback.h"
using namespace LIBMATROSKA_NAMESPACE; using namespace LIBEBML_NAMESPACE;
const char RW_FILENAME[] = "test.kax"; const char RW_FILENAME[] = "test.kax";

View File

@@ -7,24 +7,21 @@
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This file may be distributed under the terms of the Q Public License ** This library is free software; you can redistribute it and/or
** as defined by Trolltech AS of Norway and appearing in the file ** modify it under the terms of the GNU Lesser General Public
** LICENSE.QPL included in the packaging of this file. ** License as published by the Free Software Foundation; either
** ** version 2.1 of the License, or (at your option) any later version.
** This file may be distributed and/or modified under the terms of the **
** GNU General Public License version 2 as published by the Free Software ** This library is distributed in the hope that it will be useful,
** Foundation and appearing in the file LICENSE.GPL included in the ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** packaging of this file. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** ** Lesser General Public License for more details.
** Licensees holding an other license may use this file in accordance with **
** the Agreement provided with the Software. ** You should have received a copy of the GNU Lesser General Public
** ** License along with this library; if not, write to the Free Software
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.matroska.org/license/qpl/ for QPL licensing information.
** See http://www.matroska.org/license/gpl/ for GPL licensing information.
** **
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -32,7 +29,7 @@
/*! /*!
\file \file
\version \$Id: test00.cpp 1078 2005-03-03 13:13:04Z robux4 $ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
Test the writing a basic EBML file Test the writing a basic EBML file
*/ */
@@ -40,20 +37,19 @@
#include <stdio.h> #include <stdio.h>
#include <string> #include <string>
#include "StdIOCallback.h" #include "ebml/StdIOCallback.h"
#include "EbmlHead.h" #include "ebml/EbmlHead.h"
#include "EbmlSubHead.h" #include "ebml/EbmlSubHead.h"
#include "EbmlStream.h" #include "ebml/EbmlStream.h"
#include "EbmlVoid.h" #include "ebml/EbmlVoid.h"
#include "EbmlContexts.h" #include "ebml/EbmlContexts.h"
#include "KaxSegment.h" #include "matroska/KaxSegment.h"
#include "KaxAttachments.h" #include "matroska/KaxContexts.h"
#include "KaxAttached.h" #include "matroska/KaxSemantic.h"
#include "KaxContexts.h"
#include "EbmlVersion.h" #include "ebml/EbmlVersion.h"
#include "KaxVersion.h" #include "matroska/KaxVersion.h"
using namespace LIBMATROSKA_NAMESPACE; using namespace LIBMATROSKA_NAMESPACE;

View File

@@ -2,10 +2,12 @@
CON mux-test6 CON mux-test6
{ {
USE matroska
SOURCE test6.cpp SOURCE test6.cpp
} }
CON mux-test8 CON mux-test8
{ {
USE matroska
SOURCE test8.cpp SOURCE test8.cpp
} }

View File

@@ -19,9 +19,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -29,7 +29,7 @@
/*! /*!
\file \file
\version \$Id: test6.cpp 1078 2005-03-03 13:13:04Z robux4 $ \version \$Id$
\brief Test muxing two tracks into valid clusters/blocks/frames \brief Test muxing two tracks into valid clusters/blocks/frames
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
@@ -48,19 +48,10 @@
#include "matroska/FileKax.h" #include "matroska/FileKax.h"
#include "matroska/KaxSegment.h" #include "matroska/KaxSegment.h"
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
#include "matroska/KaxTrackEntryData.h"
#include "matroska/KaxTrackAudio.h"
#include "matroska/KaxTrackVideo.h"
#include "matroska/KaxCluster.h" #include "matroska/KaxCluster.h"
#include "matroska/KaxClusterData.h"
#include "matroska/KaxSeekHead.h" #include "matroska/KaxSeekHead.h"
#include "matroska/KaxCues.h" #include "matroska/KaxCues.h"
#include "matroska/KaxInfo.h"
#include "matroska/KaxInfoData.h" #include "matroska/KaxInfoData.h"
#include "matroska/KaxTags.h"
#include "matroska/KaxTag.h"
#include "matroska/KaxChapters.h"
#include "matroska/KaxContentEncoding.h"
using namespace LIBMATROSKA_NAMESPACE; using namespace LIBMATROSKA_NAMESPACE;
using namespace std; using namespace std;
@@ -125,7 +116,7 @@ int main(int argc, char **argv)
*((EbmlUnicodeString *)&GetChild<KaxWritingApp>(MyInfos)) = L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"; *((EbmlUnicodeString *)&GetChild<KaxWritingApp>(MyInfos)) = L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
GetChild<KaxWritingApp>(MyInfos).SetDefaultSize(25); GetChild<KaxWritingApp>(MyInfos).SetDefaultSize(25);
uint32 InfoSize = MyInfos.Render(out_file); filepos_t InfoSize = MyInfos.Render(out_file);
MetaSeek.IndexThis(MyInfos, FileSegment); MetaSeek.IndexThis(MyInfos, FileSegment);
// fill track 1 params // fill track 1 params
@@ -252,13 +243,17 @@ int main(int argc, char **argv)
Clust1.AddFrame(MyTrack2, 23 * TIMECODE_SCALE, *data5, MyNewBlock); // to test with another track Clust1.AddFrame(MyTrack2, 23 * TIMECODE_SCALE, *data5, MyNewBlock); // to test with another track
// add the "real" block to the cue entries // add the "real" block to the cue entries
AllCues.AddBlockGroup(*MyLastBlockTrk1); KaxBlockBlob *Blob1 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
Blob1->SetBlockGroup(*MyLastBlockTrk1);
AllCues.AddBlockBlob(*Blob1);
// frame for Track 2 // frame for Track 2
DataBuffer *data8 = new DataBuffer((binary *)"tttyyy", countof("tttyyy")); DataBuffer *data8 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
Clust1.AddFrame(MyTrack2, 107 * TIMECODE_SCALE, *data8, MyNewBlock, *MyLastBlockTrk2); Clust1.AddFrame(MyTrack2, 107 * TIMECODE_SCALE, *data8, MyNewBlock, *MyLastBlockTrk2);
AllCues.AddBlockGroup(*MyNewBlock); KaxBlockBlob *Blob2 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
Blob2->SetBlockGroup(*MyNewBlock);
AllCues.AddBlockBlob(*Blob2);
// frame with a past reference // frame with a past reference
DataBuffer *data4 = new DataBuffer((binary *)"tttyyy", countof("tttyyy")); DataBuffer *data4 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
@@ -275,7 +270,9 @@ int main(int argc, char **argv)
} }
} }
AllCues.AddBlockGroup(*MyLastBlockTrk1); KaxBlockBlob *Blob3 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
Blob3->SetBlockGroup(*MyLastBlockTrk1);
AllCues.AddBlockBlob(*Blob3);
//AllCues.UpdateSize(); //AllCues.UpdateSize();
// simulate the writing of the stream : // simulate the writing of the stream :
@@ -295,13 +292,15 @@ int main(int argc, char **argv)
DataBuffer *data2 = new DataBuffer((binary *)"tttyyy", countof("tttyyy")); DataBuffer *data2 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
Clust2.AddFrame(MyTrack1, 350 * TIMECODE_SCALE, *data2, MyNewBlock, *MyLastBlockTrk1); Clust2.AddFrame(MyTrack1, 350 * TIMECODE_SCALE, *data2, MyNewBlock, *MyLastBlockTrk1);
AllCues.AddBlockGroup(*MyNewBlock); KaxBlockBlob *Blob4 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
Blob4->SetBlockGroup(*MyNewBlock);
AllCues.AddBlockBlob(*Blob4);
ClusterSize += Clust2.Render(out_file, AllCues, bWriteDefaultValues); ClusterSize += Clust2.Render(out_file, AllCues, bWriteDefaultValues);
Clust2.ReleaseFrames(); Clust2.ReleaseFrames();
// older version, write at the end AllCues.Render(out_file); // older version, write at the end AllCues.Render(out_file);
uint32 CueSize = AllCues.Render(out_file, bWriteDefaultValues); filepos_t CueSize = AllCues.Render(out_file, bWriteDefaultValues);
MetaSeek.IndexThis(AllCues, FileSegment); MetaSeek.IndexThis(AllCues, FileSegment);
// Chapters // Chapters
@@ -332,7 +331,7 @@ int main(int argc, char **argv)
KaxChapterLanguage & aChapLang2 = GetChild<KaxChapterLanguage>(aDisplay2); KaxChapterLanguage & aChapLang2 = GetChild<KaxChapterLanguage>(aDisplay2);
*static_cast<EbmlString *>(&aChapLang2) = "eng"; *static_cast<EbmlString *>(&aChapLang2) = "eng";
uint32 ChapterSize = Chapters.Render(out_file, bWriteDefaultValues); filepos_t ChapterSize = Chapters.Render(out_file, bWriteDefaultValues);
MetaSeek.IndexThis(Chapters, FileSegment); MetaSeek.IndexThis(Chapters, FileSegment);
// Write some tags // Write some tags
@@ -340,7 +339,7 @@ int main(int argc, char **argv)
AllTags.EnableChecksum(); AllTags.EnableChecksum();
KaxTag & aTag = GetChild<KaxTag>(AllTags); KaxTag & aTag = GetChild<KaxTag>(AllTags);
KaxTagTargets & Targets = GetChild<KaxTagTargets>(aTag); KaxTagTargets & Targets = GetChild<KaxTagTargets>(aTag);
KaxTagGeneral & TagGeneral = GetChild<KaxTagGeneral>(aTag); KaxTagSimple & TagSimple = GetChild<KaxTagSimple>(aTag);
KaxTagTrackUID & TrackUID = GetChild<KaxTagTrackUID>(Targets); KaxTagTrackUID & TrackUID = GetChild<KaxTagTrackUID>(Targets);
*static_cast<EbmlUInteger *>(&TrackUID) = 0x12345; *static_cast<EbmlUInteger *>(&TrackUID) = 0x12345;
@@ -348,26 +347,20 @@ int main(int argc, char **argv)
KaxTagChapterUID & ChapterUID = GetChild<KaxTagChapterUID>(Targets); KaxTagChapterUID & ChapterUID = GetChild<KaxTagChapterUID>(Targets);
*static_cast<EbmlUInteger *>(&ChapterUID) = 0x67890; *static_cast<EbmlUInteger *>(&ChapterUID) = 0x67890;
KaxTagSubject & Subject = GetChild<KaxTagSubject>(TagGeneral); KaxTagName & aTagName = GetChild<KaxTagName>(TagSimple);
*static_cast<EbmlUnicodeString *>(&Subject) = L"Test<EFBFBD>123"; *static_cast<EbmlUnicodeString *>(&aTagName) = L"NAME";
KaxTagBibliography & Biblio = GetChild<KaxTagBibliography>(TagGeneral); KaxTagString & aTagtring = GetChild<KaxTagString>(TagSimple);
*static_cast<EbmlUnicodeString *>(&Biblio) = L"<EFBFBD>a marche"; *static_cast<EbmlUnicodeString *>(&aTagtring) = L"Test<EFBFBD>123";
KaxTagFile & File = GetChild<KaxTagFile>(TagGeneral); filepos_t TagsSize = AllTags.Render(out_file, bWriteDefaultValues);
*static_cast<EbmlUnicodeString *>(&File) = L"Fichier";
KaxTagLanguage & Lang = GetChild<KaxTagLanguage>(TagGeneral);
*static_cast<EbmlString *>(&Lang) = "fra";
uint32 TagsSize = AllTags.Render(out_file, bWriteDefaultValues);
MetaSeek.IndexThis(AllTags, FileSegment); MetaSeek.IndexThis(AllTags, FileSegment);
TrackSize += pMyTracks2->Render(out_file, bWriteDefaultValues); TrackSize += pMyTracks2->Render(out_file, bWriteDefaultValues);
MetaSeek.IndexThis(*pMyTracks2, FileSegment); MetaSeek.IndexThis(*pMyTracks2, FileSegment);
// \todo put it just before the Cue Entries // \todo put it just before the Cue Entries
uint32 MetaSeekSize = Dummy.ReplaceWith(MetaSeek, out_file, bWriteDefaultValues); filepos_t MetaSeekSize = Dummy.ReplaceWith(MetaSeek, out_file, bWriteDefaultValues);
#ifdef VOID_TEST #ifdef VOID_TEST
MyInfos.VoidMe(out_file); MyInfos.VoidMe(out_file);
@@ -389,6 +382,11 @@ int main(int argc, char **argv)
MuxedFile.Close(1000); // 1000 ms MuxedFile.Close(1000); // 1000 ms
#endif // OLD #endif // OLD
out_file.close(); out_file.close();
delete Blob1;
delete Blob2;
delete Blob3;
delete Blob4;
} }
catch (exception & Ex) catch (exception & Ex)
{ {

View File

@@ -17,9 +17,9 @@
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -27,7 +27,7 @@
/*! /*!
\file \file
\version \$Id: test8.cpp 675 2004-07-27 07:56:14Z mosu $ \version \$Id$
\brief Test reading of the Header \brief Test reading of the Header
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
@@ -49,17 +49,11 @@
#include "matroska/KaxSegment.h" #include "matroska/KaxSegment.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
#include "matroska/KaxInfo.h"
#include "matroska/KaxInfoData.h" #include "matroska/KaxInfoData.h"
#include "matroska/KaxCluster.h" #include "matroska/KaxCluster.h"
#include "matroska/KaxClusterData.h"
#include "matroska/KaxBlockData.h" #include "matroska/KaxBlockData.h"
#include "matroska/KaxSeekHead.h" #include "matroska/KaxSeekHead.h"
#include "matroska/KaxCuesData.h" #include "matroska/KaxCuesData.h"
#include "matroska/KaxChapters.h"
#include "matroska/KaxTags.h"
#include "matroska/KaxTag.h"
#include "matroska/KaxTagMulti.h"
#include "ebml/StdIOCallback.h" #include "ebml/StdIOCallback.h"
using namespace LIBMATROSKA_NAMESPACE; using namespace LIBMATROSKA_NAMESPACE;
@@ -656,6 +650,7 @@ int main(int argc, char **argv)
#endif // TEST_REMOVE #endif // TEST_REMOVE
} else if (Targets[Index2]->Generic().GlobalId == KaxTagChapterUID::ClassInfos.GlobalId) { } else if (Targets[Index2]->Generic().GlobalId == KaxTagChapterUID::ClassInfos.GlobalId) {
printf(" Chapter UID\n"); printf(" Chapter UID\n");
#if 0
} else if (Targets[Index2]->Generic().GlobalId == KaxTagMultiComment::ClassInfos.GlobalId) { } else if (Targets[Index2]->Generic().GlobalId == KaxTagMultiComment::ClassInfos.GlobalId) {
printf(" Comment\n"); printf(" Comment\n");
KaxTagMultiComment & Comment = *static_cast<KaxTagMultiComment *>(Targets[Index2]); KaxTagMultiComment & Comment = *static_cast<KaxTagMultiComment *>(Targets[Index2]);
@@ -667,6 +662,7 @@ int main(int argc, char **argv)
} }
} }
// } else if (Targets[Index2]->Generic().GlobalId == DummyRawElement::ClassInfos.GlobalId) { // } else if (Targets[Index2]->Generic().GlobalId == DummyRawElement::ClassInfos.GlobalId) {
#endif
} }
} }
#ifdef TEST_REMOVE #ifdef TEST_REMOVE
@@ -677,6 +673,7 @@ int main(int argc, char **argv)
printf(" -- Done --\n"); printf(" -- Done --\n");
} }
#endif // TEST_REMOVE #endif // TEST_REMOVE
#if 0
} else if (TagElt[Index1]->Generic().GlobalId == KaxTagGeneral::ClassInfos.GlobalId) { } else if (TagElt[Index1]->Generic().GlobalId == KaxTagGeneral::ClassInfos.GlobalId) {
printf(" General\n"); printf(" General\n");
KaxTagGeneral & General = *static_cast<KaxTagGeneral *>(TagElt[Index1]); KaxTagGeneral & General = *static_cast<KaxTagGeneral *>(TagElt[Index1]);
@@ -729,6 +726,7 @@ int main(int argc, char **argv)
printf(" Comment Name \"%s\"\n", std::string(CommentName).c_str()); printf(" Comment Name \"%s\"\n", std::string(CommentName).c_str());
} }
} }
#endif
} }
} }
} }

View File

@@ -7,24 +7,21 @@
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This file may be distributed under the terms of the Q Public License ** This library is free software; you can redistribute it and/or
** as defined by Trolltech AS of Norway and appearing in the file ** modify it under the terms of the GNU Lesser General Public
** LICENSE.QPL included in the packaging of this file. ** License as published by the Free Software Foundation; either
** ** version 2.1 of the License, or (at your option) any later version.
** This file may be distributed and/or modified under the terms of the **
** GNU General Public License version 2 as published by the Free Software ** This library is distributed in the hope that it will be useful,
** Foundation and appearing in the file LICENSE.GPL included in the ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** packaging of this file. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** ** Lesser General Public License for more details.
** Licensees holding an other license may use this file in accordance with **
** the Agreement provided with the Software. ** You should have received a copy of the GNU Lesser General Public
** ** License along with this library; if not, write to the Free Software
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.matroska.org/license/qpl/ for QPL licensing information.
** See http://www.matroska.org/license/gpl/ for GPL licensing information.
** **
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
@@ -58,7 +55,6 @@
#include <matroska/KaxSegment.h> #include <matroska/KaxSegment.h>
#include <matroska/KaxTags.h> #include <matroska/KaxTags.h>
#include <matroska/KaxTag.h> #include <matroska/KaxTag.h>
#include <matroska/KaxTagMulti.h>
#include <matroska/KaxTracks.h> #include <matroska/KaxTracks.h>
#include <matroska/KaxTrackEntryData.h> #include <matroska/KaxTrackEntryData.h>
#include <matroska/KaxTrackAudio.h> #include <matroska/KaxTrackAudio.h>
@@ -101,6 +97,7 @@ int main() {
*(static_cast<EbmlUInteger *>(&GetChild<KaxTagTrackUID>(targets))) = *(static_cast<EbmlUInteger *>(&GetChild<KaxTagTrackUID>(targets))) =
1234; 1234;
#if 0
// comment of the Targets // comment of the Targets
KaxTagMultiComment &mcomB = GetChild<KaxTagMultiComment>(targets); KaxTagMultiComment &mcomB = GetChild<KaxTagMultiComment>(targets);
*(static_cast<EbmlString *> *(static_cast<EbmlString *>
@@ -335,6 +332,7 @@ int main() {
*(static_cast<EbmlString *> *(static_cast<EbmlString *>
(&GetChild<KaxTagMultiTitleLanguage>(tit))) = (&GetChild<KaxTagMultiTitleLanguage>(tit))) =
"MultiTitleLanguage"; "MultiTitleLanguage";
#endif
KaxTagSimple &stag_l1 = GetChild<KaxTagSimple>(tag); KaxTagSimple &stag_l1 = GetChild<KaxTagSimple>(tag);
*(static_cast<EbmlUnicodeString *>(&GetChild<KaxTagName>(stag_l1))) = *(static_cast<EbmlUnicodeString *>(&GetChild<KaxTagName>(stag_l1))) =

View File

@@ -1 +1,9 @@
#include "*/*.proj" #include "*/*.proj"
WORKSPACE tests
{
USE mux-test6
USE mux-test8
USE ebml-test00
USE ebml-test0
}

View File

@@ -7,24 +7,21 @@
** **
** This file is part of libmatroska. ** This file is part of libmatroska.
** **
** This file may be distributed under the terms of the Q Public License ** This library is free software; you can redistribute it and/or
** as defined by Trolltech AS of Norway and appearing in the file ** modify it under the terms of the GNU Lesser General Public
** LICENSE.QPL included in the packaging of this file. ** License as published by the Free Software Foundation; either
** ** version 2.1 of the License, or (at your option) any later version.
** This file may be distributed and/or modified under the terms of the **
** GNU General Public License version 2 as published by the Free Software ** This library is distributed in the hope that it will be useful,
** Foundation and appearing in the file LICENSE.GPL included in the ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** packaging of this file. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** ** Lesser General Public License for more details.
** Licensees holding an other license may use this file in accordance with **
** the Agreement provided with the Software. ** You should have received a copy of the GNU Lesser General Public
** ** License along with this library; if not, write to the Free Software
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.matroska.org/license/qpl/ for QPL licensing information.
** See http://www.matroska.org/license/gpl/ for GPL licensing information.
** **
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **