47 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
80 changed files with 4574 additions and 4997 deletions

1
.gitignore vendored Normal file
View File

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

View File

@@ -1,3 +1,28 @@
2013-03-19 mosu/robux4
New 1.4.0 version:
* Note that this release is not binary compatible to 1.3.0 due to
the dependancy on libEBML 1.3.0 which is not binary compatible
to its predecessor.
- Added new elements CueDuration, CueRelativePosition,
ChapterStringUID, VideoAlphaMode and DefaultDecodedFieldDuration
- Removed the Debian build files from our package.
2011-09-23 robux4/mosu
New 1.3.0 version:
- initialize all data members
- The KaxCodeVersion variable now resides in the library instead of being declared static in the header file.
- make KaxChapterSegmentEditionUID an unsigned integer to match the KaxChapterEditionUID it's supposed to target
- This release is not binary compatible to 1.2.x.
2011-06-26 robux4/mosu
New 1.2.0 version:
- skip data from KaxBlockVirtual as it should not be used
- use semantic generated from the specs so there is no more possible mismatch
2011-02-02 impulze
* trunk/libmatroska/test/test9.cpp
- also remove no longer needed tests for old/outdated/previous tag system
2011-01-30 robux4/mosu 2011-01-30 robux4/mosu
New 1.1.0 version: New 1.1.0 version:
- give access to the SetParent to KaxSimpleBlock as well - give access to the SetParent to KaxSimpleBlock as well
@@ -979,7 +1004,7 @@ New 0.9.0 version:
* trunk/libmatroska/matroska/KaxVersion.h: test SSL authentication * trunk/libmatroska/matroska/KaxVersion.h: test SSL authentication
2004-07-08 12:02 2004-07-08 12:02
* trunk/libmatroska/matroska/KaxVersion.h: Test changes * trunk/libmatroska/matroska/KaxVersion.h: Test changes
@@ -1965,4 +1990,3 @@ New 0.9.0 version:
trunk/libmatroska/test/utf8, trunk/libmatroska/test/utf8,
trunk/libmatroska/test/utf8/test5.cpp: Initial CVS version after trunk/libmatroska/test/utf8/test5.cpp: Initial CVS version after
the crash the crash

File diff suppressed because it is too large Load Diff

192
debian/changelog vendored
View File

@@ -1,192 +0,0 @@
libmatroska (1.1.0-1) lucid; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Sun, 30 Jan 2011 15:30:00 +0200
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

@@ -2,7 +2,7 @@
LIB matroska LIB matroska
{ {
PROJECT_VERSION 1.1.0 PROJECT_VERSION 1.3.0
INCLUDE . INCLUDE .
EXPINCLUDE . EXPINCLUDE .
@@ -24,48 +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/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/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.3 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,7 +1,7 @@
# 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: 1.1.0 Version: 1.4.0
Release: 1 Release: 1
License: LGPL License: LGPL
Summary: Matroska Video Container Summary: Matroska Video Container

View File

@@ -14,7 +14,7 @@ BuildRequires: bzip2 cpp libebml make tar zlib zlib-devel binutils gcc gcc-c++ l
Name: libmatroska Name: libmatroska
URL: http://dl.matroska.org/downloads/libmatroska/ URL: http://dl.matroska.org/downloads/libmatroska/
Version: 1.1.0 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

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

@@ -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

@@ -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.
** **
@@ -84,7 +84,7 @@ class MATROSKA_DLL_API DataBuffer {
virtual binary * Buffer() {assert(bValidValue); return myBuffer;} virtual binary * Buffer() {assert(bValidValue); return myBuffer;}
virtual uint32 & Size() {return mySize;}; virtual uint32 & Size() {return mySize;};
virtual const binary * Buffer() const {assert(bValidValue); return myBuffer;} virtual const binary * Buffer() const {assert(bValidValue); return myBuffer;}
virtual const uint32 Size() const {return mySize;}; virtual uint32 Size() const {return mySize;};
bool FreeBuffer(const DataBuffer & aBuffer) { bool FreeBuffer(const DataBuffer & aBuffer) {
bool bResult = true; bool bResult = true;
if (myBuffer != NULL && bValidValue) { if (myBuffer != NULL && bValidValue) {
@@ -305,7 +305,6 @@ class MATROSKA_DLL_API KaxSimpleBlock : public KaxInternalBlock {
bool IsKeyframe() const { return bIsKeyframe; } bool IsKeyframe() const { return bIsKeyframe; }
bool IsDiscardable() const { return bIsDiscardable; } bool IsDiscardable() const { return bIsDiscardable; }
operator KaxInternalBlock &() { return *this; }
void SetParent(KaxCluster & aParentCluster); void SetParent(KaxCluster & aParentCluster);
EBML_CONCRETE_CLASS(KaxSimpleBlock) EBML_CONCRETE_CLASS(KaxSimpleBlock)
@@ -359,9 +358,6 @@ protected:
BlockBlobType SimpleBlockMode; BlockBlobType SimpleBlockMode;
}; };
DECLARE_MKX_UINTEGER(KaxBlockDuration)
};
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_BINARY_CONS(KaxBlockVirtual) DECLARE_MKX_BINARY_CONS(KaxBlockVirtual)
public: public:
@@ -374,6 +370,10 @@ DECLARE_MKX_BINARY_CONS(KaxBlockVirtual)
void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;} void SetParent(const KaxCluster & aParentCluster) {ParentCluster = &aParentCluster;}
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);
protected: protected:
uint64 Timecode; // temporary timecode of the first frame if there are more than one uint64 Timecode; // temporary timecode of the first frame if there are more than one
uint16 TrackNumber; uint16 TrackNumber;
@@ -383,21 +383,6 @@ DECLARE_MKX_BINARY_CONS(KaxBlockVirtual)
}; };
#endif // MATROSKA_VERSION #endif // MATROSKA_VERSION
DECLARE_MKX_BINARY(KaxBlockAdditional)
};
DECLARE_MKX_MASTER(KaxBlockAdditions)
};
DECLARE_MKX_MASTER(KaxBlockMore)
};
DECLARE_MKX_UINTEGER(KaxBlockAddID)
};
DECLARE_MKX_BINARY(KaxCodecState)
};
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_BLOCK_H #endif // LIBMATROSKA_BLOCK_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.
** **
@@ -38,18 +38,12 @@
#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;
DECLARE_MKX_UINTEGER(KaxReferencePriority)
};
/*! /*!
\brief element used for B frame-likes \brief element used for B frame-likes
*/ */
@@ -75,32 +69,6 @@ DECLARE_MKX_SINTEGER_CONS(KaxReferenceBlock)
void FreeBlob(); void FreeBlob();
}; };
#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 END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_BLOCK_ADDITIONAL_H #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

@@ -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

@@ -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.
** **
@@ -42,6 +42,7 @@
#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) || defined(HAS_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,71 +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_UINTEGER(KaxTagTargetTypeValue)
};
DECLARE_MKX_STRING(KaxTagTargetType)
};
DECLARE_MKX_UINTEGER(KaxTagTrackUID)
};
DECLARE_MKX_UINTEGER(KaxTagEditionUID)
};
DECLARE_MKX_UINTEGER(KaxTagChapterUID)
};
DECLARE_MKX_UINTEGER(KaxTagAttachmentUID)
};
DECLARE_MKX_STRING(KaxTagLanguage)
};
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,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

@@ -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.
** **
@@ -38,16 +38,13 @@
#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) DECLARE_MKX_MASTER(KaxTrackEntry)
public: public:
EbmlUInteger & TrackNumber() const { return *(static_cast<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); } EbmlUInteger & TrackNumber() const { return *(static_cast<EbmlUInteger *>(FindElt(EBML_INFO(KaxTrackNumber)))); }
@@ -76,29 +73,6 @@ DECLARE_MKX_MASTER(KaxTrackEntry)
uint64 mGlobalTimecodeScale; uint64 mGlobalTimecodeScale;
}; };
#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)
};
#endif
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE
#endif // LIBMATROSKA_TRACKS_H #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 0x010100 #define LIBMATROSKA_VERSION 0x010400
static const std::string KaxCodeVersion = "1.1.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.
** **

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

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.
** **
@@ -43,45 +43,6 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxBlockGroup)
DEFINE_SEMANTIC_ITEM(true, true, KaxBlock)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxBlockVirtual)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, true, KaxBlockDuration)
DEFINE_SEMANTIC_ITEM(false, true, KaxSlices)
DEFINE_SEMANTIC_ITEM(true, true, KaxReferencePriority)
DEFINE_SEMANTIC_ITEM(false, false, KaxReferenceBlock)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxReferenceVirtual)
DEFINE_SEMANTIC_ITEM(false, true, KaxCodecState)
#endif // MATROSKA_VERSION
DEFINE_SEMANTIC_ITEM(false, true, KaxBlockAdditions)
DEFINE_END_SEMANTIC(KaxBlockGroup)
DEFINE_START_SEMANTIC(KaxBlockAdditions)
DEFINE_SEMANTIC_ITEM(true, false, KaxBlockMore)
DEFINE_END_SEMANTIC(KaxBlockAdditions)
DEFINE_START_SEMANTIC(KaxBlockMore)
DEFINE_SEMANTIC_ITEM(true, true, KaxBlockAddID)
DEFINE_SEMANTIC_ITEM(true, true, KaxBlockAdditional)
DEFINE_END_SEMANTIC(KaxBlockMore)
DEFINE_MKX_MASTER_CONS (KaxBlockGroup, 0xA0, 1, KaxCluster, "BlockGroup");
DEFINE_MKX_BINARY_CONS (KaxBlock, 0xA1, 1, KaxBlockGroup, "Block");
DEFINE_MKX_UINTEGER (KaxBlockDuration, 0x9B, 1, KaxBlockGroup, "BlockDuration");
#if MATROSKA_VERSION >= 2
DEFINE_MKX_BINARY_CONS (KaxSimpleBlock, 0xA3, 1, KaxCluster, "SimpleBlock");
DEFINE_MKX_BINARY_CONS (KaxBlockVirtual, 0xA2, 1, KaxBlockGroup, "BlockVirtual");
DEFINE_MKX_BINARY (KaxCodecState, 0xA4, 1, KaxBlockGroup, "CodecState");
#endif
DEFINE_MKX_MASTER (KaxBlockAdditions, 0x75A1, 2, KaxBlockGroup, "BlockAdditions");
DEFINE_MKX_MASTER (KaxBlockMore, 0xA6, 1, KaxBlockAdditions, "BlockMore");
DEFINE_MKX_UINTEGER_DEF(KaxBlockAddID, 0xEE, 1, KaxBlockMore, "BlockAddID", 1);
DEFINE_MKX_BINARY (KaxBlockAdditional, 0xA5, 1, KaxBlockMore, "BlockAdditional");
DataBuffer * DataBuffer::Clone() DataBuffer * DataBuffer::Clone()
{ {
binary *ClonedData = (binary *)malloc(mySize * sizeof(binary)); binary *ClonedData = (binary *)malloc(mySize * sizeof(binary));
@@ -200,7 +161,7 @@ LacingType KaxInternalBlock::GetBestLacingType() const {
return LACING_EBML; return LACING_EBML;
} }
filepos_t KaxInternalBlock::UpdateSize(bool bSaveDefault, bool bForceRender) filepos_t KaxInternalBlock::UpdateSize(bool /* bSaveDefault */, bool /* bForceRender */)
{ {
LacingType LacingHere; LacingType LacingHere;
assert(EbmlBinary::GetBuffer() == NULL); // Data is not used for KaxInternalBlock assert(EbmlBinary::GetBuffer() == NULL); // Data is not used for KaxInternalBlock
@@ -277,7 +238,7 @@ KaxBlockVirtual::~KaxBlockVirtual()
SetBuffer( NULL, 0 ); SetBuffer( NULL, 0 );
} }
filepos_t KaxBlockVirtual::UpdateSize(bool bSaveDefault, bool bForceRender) filepos_t KaxBlockVirtual::UpdateSize(bool /* bSaveDefault */, bool /* bForceRender */)
{ {
assert(TrackNumber < 0x4000); assert(TrackNumber < 0x4000);
binary *cursor = EbmlBinary::GetBuffer(); binary *cursor = EbmlBinary::GetBuffer();
@@ -307,7 +268,7 @@ filepos_t KaxBlockVirtual::UpdateSize(bool bSaveDefault, bool bForceRender)
\todo more optimisation is possible (render the Block head and don't copy the buffer in memory, care should be taken with the allocation of Data) \todo more optimisation is possible (render the Block head and don't copy the buffer in memory, care should be taken with the allocation of Data)
\todo the actual timecode to write should be retrieved from the Cluster from here \todo the actual timecode to write should be retrieved from the Cluster from here
*/ */
filepos_t KaxInternalBlock::RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) filepos_t KaxInternalBlock::RenderData(IOCallback & output, bool /* bForceRender */, bool /* bSaveDefault */)
{ {
if (myBuffers.size() == 0) { if (myBuffers.size() == 0) {
return 0; return 0;
@@ -1073,4 +1034,10 @@ void KaxBlockBlob::SetBlockGroup( KaxBlockGroup &BlockRef )
Block.group = &BlockRef; Block.group = &BlockRef;
} }
filepos_t KaxBlockVirtual::ReadData(IOCallback & input, ScopeMode /* ReadFully */)
{
input.setFilePointer(SizePosition + CodedSizeLength(Size, SizeLength, bSizeIsFinite) + Size, seek_beginning);
return GetSize();
}
END_LIBMATROSKA_NAMESPACE 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.
** **
@@ -36,37 +36,12 @@
#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)
DEFINE_END_SEMANTIC(KaxSlices)
DEFINE_START_SEMANTIC(KaxTimeSlice)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceLaceNumber)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceFrameNumber)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceBlockAddID)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDelay)
DEFINE_SEMANTIC_ITEM(false, true, KaxSliceDuration)
DEFINE_END_SEMANTIC(KaxTimeSlice)
DEFINE_MKX_UINTEGER_DEF (KaxReferencePriority, 0xFA, 1, KaxBlockGroup, "FlagReferenced", 0);
DEFINE_MKX_SINTEGER_CONS(KaxReferenceBlock, 0xFB, 1, KaxBlockGroup, "ReferenceBlock");
DEFINE_MKX_MASTER (KaxSlices, 0x8E, 1, KaxBlockGroup, "Slices");
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);
DEFINE_MKX_UINTEGER_DEF (KaxSliceBlockAddID, 0xCB, 1, KaxTimeSlice, "SliceBlockAddID", 0);
DEFINE_MKX_UINTEGER (KaxSliceDelay, 0xCE, 1, KaxTimeSlice, "SliceDelay");
DEFINE_MKX_UINTEGER_DEF (KaxSliceDuration, 0xCF, 1, KaxTimeSlice, "SliceDuration", 0);
#if MATROSKA_VERSION >= 2
DEFINE_MKX_SINTEGER (KaxReferenceVirtual, 0xFD, 1, KaxBlockGroup, "ReferenceVirtual");
#endif
const KaxBlockBlob & KaxReferenceBlock::RefBlock() const const KaxBlockBlob & KaxReferenceBlock::RefBlock() const
{ {
assert(RefdBlock != NULL); assert(RefdBlock != NULL);
@@ -77,12 +52,16 @@ KaxReferenceBlock::KaxReferenceBlock(EBML_EXTRA_DEF)
:EBML_DEF_SINTEGER(KaxReferenceBlock)EBML_DEF_SEP :EBML_DEF_SINTEGER(KaxReferenceBlock)EBML_DEF_SEP
RefdBlock(NULL) RefdBlock(NULL)
,ParentBlock(NULL) ,ParentBlock(NULL)
,bTimecodeSet(false)
,bOurBlob(false)
{ {
bTimecodeSet = false; bTimecodeSet = false;
} }
KaxReferenceBlock::KaxReferenceBlock(const KaxReferenceBlock & ElementToClone) KaxReferenceBlock::KaxReferenceBlock(const KaxReferenceBlock & ElementToClone)
:EbmlSInteger(ElementToClone) :EbmlSInteger(ElementToClone)
,RefdBlock(NULL)
,ParentBlock(NULL)
,bTimecodeSet(ElementToClone.bTimecodeSet) ,bTimecodeSet(ElementToClone.bTimecodeSet)
,bOurBlob(false) ,bOurBlob(false)
{ {

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,16 +37,11 @@
#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
@@ -125,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;
@@ -144,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)
{ {

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,84 +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/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(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(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_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_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,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

@@ -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,87 +35,11 @@
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
// sub elements // sub elements
#include "matroska/KaxTrackEntryData.h"
#include "matroska/KaxTrackAudio.h"
#include "matroska/KaxTrackVideo.h"
#include "matroska/KaxContentEncoding.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
DEFINE_START_SEMANTIC(KaxTracks)
DEFINE_SEMANTIC_ITEM(true, false, KaxTrackEntry)
DEFINE_END_SEMANTIC(KaxTracks)
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)
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)
#if MATROSKA_VERSION >= 2
DEFINE_SEMANTIC_ITEM(false, true, KaxTrackOperation)
#endif
DEFINE_END_SEMANTIC(KaxTrackEntry)
DEFINE_MKX_MASTER (KaxTracks, 0x1654AE6B, 4, KaxSegment, "Tracks");
DEFINE_MKX_MASTER_CONS(KaxTrackEntry, 0xAE, 1, KaxTracks, "TrackEntry");
#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_START_SEMANTIC(KaxTrackCombinePlanes)
DEFINE_SEMANTIC_ITEM(true, false, KaxTrackPlane)
DEFINE_END_SEMANTIC(KaxTrackCombinePlanes)
DEFINE_START_SEMANTIC(KaxTrackPlane)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackPlaneUID)
DEFINE_SEMANTIC_ITEM(true, true, KaxTrackPlaneType)
DEFINE_END_SEMANTIC(KaxTrackPlane)
DEFINE_START_SEMANTIC(KaxTrackJoinBlocks)
DEFINE_SEMANTIC_ITEM(true, false, KaxTrackJoinUID)
DEFINE_END_SEMANTIC(KaxTrackJoinBlocks)
DEFINE_MKX_MASTER (KaxTrackOperation, 0xE2, 1, KaxTracks, "TrackOperation");
DEFINE_MKX_MASTER (KaxTrackCombinePlanes, 0xE3, 1, KaxTrackOperation, "TrackCombinePlanes");
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_MKX_MASTER (KaxTrackJoinBlocks, 0xE9, 1, KaxTrackOperation, "TrackJoinBlocks");
DEFINE_MKX_UINTEGER(KaxTrackJoinUID, 0xED, 1, KaxTrackJoinBlocks, "TrackJoinUID");
#endif
KaxTrackEntry::KaxTrackEntry(EBML_EXTRA_DEF) KaxTrackEntry::KaxTrackEntry(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxTrackEntry) EBML_DEF_SEP EBML_EXTRA_CALL) :EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxTrackEntry) EBML_DEF_SEP EBML_EXTRA_CALL)
,bGlobalTimecodeScaleIsSet(false) ,bGlobalTimecodeScaleIsSet(false)

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

@@ -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.
** **
@@ -51,8 +48,9 @@
#include "ebml/EbmlMaster.h" #include "ebml/EbmlMaster.h"
#include "ebml/EbmlFloat.h" #include "ebml/EbmlFloat.h"
#include "ebml/EbmlStream.h" #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.
** **
@@ -48,9 +45,8 @@
#include "ebml/EbmlVoid.h" #include "ebml/EbmlVoid.h"
#include "ebml/EbmlContexts.h" #include "ebml/EbmlContexts.h"
#include "matroska/KaxSegment.h" #include "matroska/KaxSegment.h"
#include "matroska/KaxAttachments.h"
#include "matroska/KaxAttached.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxSemantic.h"
#include "ebml/EbmlVersion.h" #include "ebml/EbmlVersion.h"
#include "matroska/KaxVersion.h" #include "matroska/KaxVersion.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.
** **
@@ -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;

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.
** **
@@ -49,16 +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 "ebml/StdIOCallback.h" #include "ebml/StdIOCallback.h"
using namespace LIBMATROSKA_NAMESPACE; using namespace LIBMATROSKA_NAMESPACE;

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

@@ -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.
** **