Compare commits

...

54 Commits

Author SHA1 Message Date
Moritz Bunkus
6d8e423ef0 KaxVersion.cpp: always set KaxCodeDate to "Unknown"
This is done in order to enable deterministic builds while still keeping
the library API and ABI compatible. Patch by Ed Schouten <ed@nuxi.nl>.
2015-11-21 10:58:21 +01:00
Moritz Bunkus
2619e001cb Bump version number, add release message 2015-10-20 15:07:17 +02:00
Moritz Bunkus
76212be904 build system: require libebml >= 1.3.3 due to fixes for invalid memory access 2015-10-20 15:06:40 +02:00
Moritz Bunkus
0a2d3e3644 KaxBlockInternal: check EBML lace sizes against available buffer space 2015-10-20 12:00:53 +02:00
Moritz Bunkus
4934049696 Bump version number, add release message 2015-10-17 16:02:54 +02:00
Moritz Bunkus
db5d627b5b Merge pull request #7 from DanWin/master
Some optimizations
2015-05-02 11:07:27 +02:00
Daniel Winzen
e97e1a3897 Fix memory leak 2015-05-02 10:38:11 +02:00
Daniel Winzen
bab4d91a78 Some optimizations 2015-05-02 10:37:45 +02:00
Jan Engelhardt
9466bf5f2b build: libmatroska needs to link against libebml
The library uses symbols from libebml, and so should link to it.
2015-02-02 15:12:54 +01:00
Moritz Bunkus
81edf95a02 Merge pull request #5 from phonohawk/fix-libmatroska-linkage-failure
Fix linkage failure of libmatroska due to missing -lebml flag
2015-01-22 15:26:36 +01:00
PHO
b3de2dd981 Fix linkage failure of libmatroska due to missing -lebml flag
Without this change the following linkage error occurs:

    /bin/sh ./libtool  --tag=CXX   --mode=link g++ -Wall -Wextra \
      -Wno-unknown-pragmas -Wshadow -I/usr/pkg/include   -pipe -O2 \
      -I/usr/pkg/include -version-info 6:0:0 -no-undefined -L/usr/pkg/lib \
      -o libmatroska.la -rpath /usr/pkg/lib src/FileKax.lo \
      src/KaxAttached.lo src/KaxAttachments.lo src/KaxBlock.lo \
      src/KaxBlockData.lo src/KaxCluster.lo src/KaxContexts.lo \
      src/KaxCues.lo src/KaxCuesData.lo src/KaxInfoData.lo \
      src/KaxSeekHead.lo src/KaxSegment.lo src/KaxSemantic.lo \
      src/KaxTracks.lo src/KaxVersion.lo
    Undefined symbols:
      "libebml::EbmlUnicodeString::EbmlUnicodeString()", referenced from:
          libmatroska::KaxSegmentFilename::KaxSegmentFilename()in KaxSemantic.o
          libmatroska::KaxPrevFilename::KaxPrevFilename()in KaxSemantic.o
          libmatroska::KaxNextFilename::KaxNextFilename()in KaxSemantic.o
          ...
2015-01-22 22:29:26 +09:00
Moritz Bunkus
cbf763a07e ChangeLog: add release message 2015-01-04 14:31:17 +01:00
Moritz Bunkus
aa04e96218 build system: autogen.sh not needed; »autoreconf -fi« suffices 2014-12-21 11:39:59 +01:00
Moritz Bunkus
ea28fc9ab8 ChangeLog: mention the pkg-config file 2014-12-21 10:51:53 +01:00
Moritz Bunkus
cd371507d8 ChangeLog: update 2014-12-21 10:32:52 +01:00
Moritz Bunkus
0f107f8b19 build system: remove old hand-crafted make files 2014-12-21 10:32:08 +01:00
Moritz Bunkus
4052497ce5 check_ids: move to other directory 2014-12-21 10:31:45 +01:00
Moritz Bunkus
78334a0d2c build system: add autoconf/automake-based system 2014-12-21 10:28:07 +01:00
Moritz Bunkus
2260fd14b5 cosmetics: re-indent KaxBlock::ReadData() after wrapping in try/catch block 2014-12-20 17:06:47 +01:00
Moritz Bunkus
4457e70466 KaxBlock::ReadData(): use safe/checked memory access
Unchecked reading from memory locations works for cases in which all the
data is valid, but if it isn't then this leads to invalid memory access
and segmentation faults.

See https://trac.bunkus.org/ticket/1096
2014-12-20 17:06:20 +01:00
Moritz Bunkus
2e960b9b63 cosmetics: unify indentation 2014-12-19 15:17:48 +01:00
Moritz Bunkus
9655b187f2 version: bump to 1.4.2 2014-12-19 14:01:10 +01:00
Moritz Bunkus
f82f1f7889 KaxBlock: don't access beyond enf-of-buffer for one frame in EBML lacing
See https://trac.bunkus.org/ticket/1096 test case
id:000002,sig:06,src:000000,op:flip2,pos:582
2014-12-19 14:00:02 +01:00
Moritz Bunkus
ff6e0db2fe cosmetics: use spaces instead of tab characters; remove trailing whitespace 2014-12-19 00:24:39 +01:00
Moritz Bunkus
4a7222ce81 Avoid compiler warning about possible use of uninitialized values 2013-10-19 12:25:39 +02:00
Moritz Bunkus
1cb5ae4015 update ChangeLog 2013-09-17 19:15:34 +02:00
Moritz Bunkus
ee8a42d2cf Merge pull request #2 from maksqwe/master
Some of the fixes and optimization
2013-08-23 10:43:19 -07:00
maksqwe
9c07d1e39d 1. add std::nothrow to new operator because then ptr checked with NULL
2. "currentNewBlock" is assigned values twice successively
3. optimize std::vector<>::iterator's usage "iter++" -> "++iter". See preincrement and postincrement operator++()
2013-08-23 00:42:18 +03:00
Steve Lhomme
82a7b7c6b8 update the library version number after merge of some new elements 2013-06-15 18:36:05 +02:00
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
109 changed files with 5509 additions and 13551 deletions

18
.gitignore vendored Normal file
View File

@ -0,0 +1,18 @@
.deps/
.libs/
*.a
*.la
*.lo
*.o
*.pc
Makefile
Makefile.in
.dirstamp
/aclocal.m4
/autom4te.cache/
/build-aux/
/config.*
/configure
/libtool
/stamp-h1

View File

@ -1,3 +1,77 @@
2015-11-21 Moritz Bunkus <moritz@bunkus.org>
* KaxVersion.cpp: in order to enable deterministic builds the
KaxCodeDate variable has been set to "Unknown" instead of the date
and time of compilation. Patch by Ed Schouten <ed@nuxi.nl>.
2015-10-20 Moritz Bunkus <moritz@bunkus.org>
* Released v1.4.4.
* KaxInternalBlock::ReadData(): Fixed an invalid memory
access. When reading a block group or a simple block that uses
EBML lacing the frame sizes indicated in the lacing weren't
checked against the available number of bytes. If the indicated
frame size was bigger than the whole block's size the parser would
read beyond the end of the buffer resulting in a heap information
leak.
2015-10-17 Moritz Bunkus <moritz@bunkus.org>
* Released v1.4.3.
2015-05-02 Daniel Winzen <d@winzen4.de>
* all: a couple of optimizations in the main library and a memory
leak fix in the tests
2015-02-01 Jan Engelhardt <jengelh@inai.de>
* build system: fix linking against libEBML
2015-01-04 Moritz Bunkus <moritz@bunkus.org>
* Released v1.4.2.
2014-12-21 Moritz Bunkus <moritz@bunkus.org>
* build system: switched the build system from hand-crafted
Makefiles to an autoconf/automake-based system. A pkg-config file
will be installed as well; its name is »libmatroska«. Based on a
similar patch for libEBML by Jan Engelhardt <jengelh@inai.de>.
2014-12-20 Moritz Bunkus <moritz@bunkus.org>
* KaxBlock::ReadData(): fixed several instances of unchecked
memory access leading to invalid memory access/segmentation faults
with invalid or broken data inside block groups/simple blocks.
2014-12-19 Moritz Bunkus <moritz@bunkus.org>
* KaxBlock::ReadInternalHead(): fixed a off-by-one buffer overflow
if with EBML lacing and exactly one frame in the lace.
2013-09-17 mosu
New 1.4.1 version:
- Added new elements/classes DiscardPadding, CodecDelay and
SeekPreRoll
- The licensing information has been cleared up/unified.
- The Makefile now contain options for specifying the destination
base directory during installation ("DESTDIR") and for
specifying which library types to build ("link").
- The libraries are built without the "-ansi" and
"-fno-gnu-keywords" flags on Linux
- Code cleanup
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 2011-09-23 robux4/mosu
New 1.3.0 version: New 1.3.0 version:
- initialize all data members - initialize all data members
@ -1981,4 +2055,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

66
Makefile.am Normal file
View File

@ -0,0 +1,66 @@
# -*- Makefile -*-
ACLOCAL_AMFLAGS = -I m4
AM_CPPFLAGS = -I${top_srcdir}
AM_CXXFLAGS = -Wall -Wextra -Wno-unknown-pragmas -Wshadow $(EBML_CFLAGS)
if ENABLE_DEBUG
AM_CPPFLAGS += -DDEBUG
AM_CXXFLAGS += -g
endif
lib_LTLIBRARIES = libmatroska.la
libmatroska_la_SOURCES = \
src/FileKax.cpp \
src/KaxAttached.cpp \
src/KaxAttachments.cpp \
src/KaxBlock.cpp \
src/KaxBlockData.cpp \
src/KaxCluster.cpp \
src/KaxContexts.cpp \
src/KaxCues.cpp \
src/KaxCuesData.cpp \
src/KaxInfoData.cpp \
src/KaxSeekHead.cpp \
src/KaxSegment.cpp \
src/KaxSemantic.cpp \
src/KaxTracks.cpp \
src/KaxVersion.cpp
libmatroska_la_LDFLAGS = -version-info 6:0:0 -no-undefined
libmatroska_la_LIBADD = $(EBML_LIBS)
nobase_include_HEADERS = \
matroska/c/libmatroska.h \
matroska/c/libmatroska_t.h \
matroska/FileKax.h \
matroska/KaxAttached.h \
matroska/KaxAttachments.h \
matroska/KaxBlockData.h \
matroska/KaxBlock.h \
matroska/KaxChapters.h \
matroska/KaxClusterData.h \
matroska/KaxCluster.h \
matroska/KaxConfig.h \
matroska/KaxContentEncoding.h \
matroska/KaxContexts.h \
matroska/KaxCuesData.h \
matroska/KaxCues.h \
matroska/KaxDefines.h \
matroska/KaxInfoData.h \
matroska/KaxInfo.h \
matroska/KaxSeekHead.h \
matroska/KaxSegment.h \
matroska/KaxSemantic.h \
matroska/KaxTag.h \
matroska/KaxTags.h \
matroska/KaxTrackAudio.h \
matroska/KaxTrackEntryData.h \
matroska/KaxTracks.h \
matroska/KaxTrackVideo.h \
matroska/KaxTypes.h \
matroska/KaxVersion.h
pkgconfigdir = ${libdir}/pkgconfig
pkgconfig_DATA = libmatroska.pc
${pkgconfig_DATA}: config.status

14
configure.ac Normal file
View File

@ -0,0 +1,14 @@
AC_INIT([libmatroska], [1.4.4])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign subdir-objects tar-pax])
AC_PROG_CXX
LT_INIT
AC_ARG_ENABLE([debug],
AS_HELP_STRING([--enable-debug], [Add -g -DDEBUG to compile flags]),
[enable_debug="$withval"], [enable_debug=no])
AM_CONDITIONAL([ENABLE_DEBUG], [test "$enable_debug" = yes])
PKG_CHECK_MODULES([EBML],[libebml >= 1.3.3])
AC_CONFIG_FILES([Makefile libmatroska.pc])
AC_OUTPUT

204
debian/changelog vendored
View File

@ -1,204 +0,0 @@
libmatroska (1.3.0-1) natty; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Fri, 23 Sep 2011 13:54:26 +0200
libmatroska (1.2.0-1) natty; urgency=low
* New version.
-- Moritz Bunkus <moritz@bunkus.org> Wed, 15 Jun 2011 13:58:59 +0200
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

17
debian/control vendored
View File

@ -1,17 +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
Section: libs
Package: libmatroska-dev
Section: libdevel
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

11
libmatroska.pc.in Normal file
View File

@ -0,0 +1,11 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: libmatroska
Description: Library for parsing EBML data structures
Version: @PACKAGE_VERSION@
Requires.private: libebml
Libs: -L${libdir} -lmatroska
Cflags: -I${includedir}

View File

@ -18,7 +18,7 @@ LIB matroska
FAVOR_MAX_SPEED . FAVOR_MAX_SPEED .
REDUCE_SIZE . REDUCE_SIZE .
FASTER_FLOAT . FASTER_FLOAT .
SOURCE src/FileKax.cpp SOURCE src/FileKax.cpp
SOURCE src/KaxAttached.cpp SOURCE src/KaxAttached.cpp
SOURCE src/KaxAttachments.cpp SOURCE src/KaxAttachments.cpp

2
m4/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/libtool.m4
/lt*.m4

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
@echo off
rem you should have DOXYGEN.EXE in your path
rem http://www.doxygen.org/
echo make Documentation
doxygen Doxyfile > Doxygen.log.txt 2> Doxygen.err.txt

View File

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

View File

@ -1,112 +0,0 @@
# Project: libmatroska
# Makefile created by Dev-C++ 4.9.7.0
# Normally libmatroska is built as a static library.
# Uncomment this if you want a shared library instead.
# ATTENTION: Your app has to define MATROSKA_DLL !
SHARED = yes
# Compile with debug information?
#DEBUG = yes
# Where libebml resides
EBML_DIR = ../../../libebml
# Has libebml been compiled as a DLL?
EBML_DLL = yes
#
# Don't change anything below this line.
#
ifeq (yes,$(DEBUG))
DEBUGFLAGS=-g -DDEBUG
endif
CROSS =
CXX = $(CROSS)g++
CC = $(CROSS)gcc
WINDRES = $(CROSS)windres
RANLIB = $(CROSS)ranlib
AR = $(CROSS)ar
RES =
SRC = $(wildcard ../../src/*.cpp)
OBJ = $(patsubst %.cpp,%.o,$(SRC))
ifeq (yes,$(SHARED))
LIBS = libmatroska.dll
FLAGS = -DMATROSKA_DLL
DLLFLAGS = -DMATROSKA_DLL_EXPORT
else
LIBS = libmatroska.a
endif
ifeq (yes,$(SHARED))
ifeq (yes,$(EBML_DLL))
FLAGS += -DEBML_DLL
endif
endif
CWD = $(shell pwd)
INCS = -I"$(CWD)/../.." -I$(EBML_DIR)
LDFLAGS = -L. -L$(EBML_DIR)/make/mingw32
COMPILEFLAGS = $(DEBUGFLAGS) $(INCS) $(FLAGS) $(CXXFLAGS)
TESTS = test6 test8 test9
.PHONY: all all-before all-after clean clean-custom
.cpp.o:
$(CXX) $(DLLFLAGS) $(COMPILEFLAGS) -c -o $@ $<
all: lib
lib: $(LIBS)
tests: $(TESTS)
clean:
rm -f $(OBJ) libmatroska.a libmatroska.dll.a libmatroska.dll *.exe \
../../test/mux/*.o ../../test/tags/*.o
distclean dist-clean: clean
rm -f .depend
libmatroska.a: $(OBJ)
$(AR) rcvu $@ $(OBJ)
$(RANLIB) $@
libmatroska.dll: $(OBJ)
$(CXX) -shared -Wl,--export-all -Wl,--out-implib=$@.a -o $@ $(OBJ) \
$(LDFLAGS) -lebml
# Explicitely list these object files because for them
# MATROSKA_DLL_EXPORT must NOT be defined.
../../test/mux/test6.o: ../../test/mux/test6.cpp
$(CXX) $(COMPILEFLAGS) -c -o $@ $<
test6: ../../test/mux/test6.o $(LIBS)
$(LD) -o $@ $(LDFLAGS) $< -lmatroska -lebml
../../test/mux/test8.o: ../../test/mux/test8.cpp
$(CXX) $(COMPILEFLAGS) -c -o $@ $<
test8: ../../test/mux/test8.o $(LIBS)
$(LD) -o $@ $(LDFLAGS) $< -lmatroska -lebml
../../test/tags/test9.o: ../../test/tags/test9.cpp
$(CXX) $(COMPILEFLAGS) -c -o $@ $<
test9: ../../test/tags/test9.o $(LIBS)
$(LD) -o $@ $(LDFLAGS) $< -lmatroska -lebml
depend:
@echo Calculating dependecies:
@rm -f .depend
@touch .depend
@for i in $(SRC); do \
o="`echo $$i | sed -e 's/\.c$$/.o/' -e 's/\.cpp$$/.o/'`" ; \
echo ' ' $$i: $$o ; \
$(CXX) $(COMPILEFLAGS) -MM -MT $$o $$i >> .depend ; \
done
#
# include dependency files if they exist
#
ifneq ($(wildcard .depend),)
include .depend
endif

View File

@ -1,390 +0,0 @@
[Project]
FileName=libmatroska.dev
Name=libmatroska
UnitCount=43
Type=2
Ver=1
ObjFiles=
Includes=..\..\..\libebml\src
Libs=
PrivateResource=
ResourceIncludes=
MakeIncludes=
Resources=
Compiler=
Linker=
IsCpp=1
Icon=
ExeOutput=
ObjectOutput=
OverrideOutput=0
OverrideOutputName=libmatroska.a
HostApplication=
Folders=
CommandLine=
IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=0
CompilerSettings=000000000000000000
[Unit1]
FileName=..\..\src\StdInclude.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit2]
FileName=..\..\src\FileKax.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit3]
FileName=..\..\src\KaxAttached.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit4]
FileName=..\..\src\KaxAttached.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit5]
FileName=..\..\src\KaxAttachements.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit6]
FileName=..\..\src\KaxAttachements.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit7]
FileName=..\..\src\KaxBlock.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit8]
FileName=..\..\src\KaxBlock.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit9]
FileName=..\..\src\KaxBlockAdditional.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit10]
FileName=..\..\src\KaxBlockAdditional.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit11]
FileName=..\..\src\KaxChapters.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit12]
FileName=..\..\src\KaxChapters.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit13]
FileName=..\..\src\KaxCluster.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit14]
FileName=..\..\src\KaxCluster.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit15]
FileName=..\..\src\KaxClusterData.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit16]
FileName=..\..\src\KaxClusterData.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit17]
FileName=..\..\src\KaxConfig.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit18]
FileName=..\..\src\KaxContexts.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit19]
FileName=..\..\src\KaxContexts.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit20]
FileName=..\..\src\KaxCues.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit21]
FileName=..\..\src\KaxCues.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit22]
FileName=..\..\src\KaxCuesData.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit23]
FileName=..\..\src\KaxCuesData.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit24]
FileName=..\..\src\KaxInfo.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit25]
FileName=..\..\src\KaxInfo.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit26]
FileName=..\..\src\KaxInfoData.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit27]
FileName=..\..\src\KaxInfoData.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit28]
FileName=..\..\src\KaxSeekHead.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit29]
FileName=..\..\src\KaxSeekHead.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit30]
FileName=..\..\src\KaxSegment.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit31]
FileName=..\..\src\KaxSegment.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit32]
FileName=..\..\src\KaxTrackAudio.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit33]
FileName=..\..\src\KaxTrackAudio.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit34]
FileName=..\..\src\KaxTrackEntryData.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit35]
FileName=..\..\src\KaxTrackEntryData.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit36]
FileName=..\..\src\KaxTracks.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit37]
FileName=..\..\src\KaxTracks.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit38]
FileName=..\..\src\KaxTrackVideo.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit39]
FileName=..\..\src\KaxTrackVideo.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit40]
FileName=..\..\src\KaxTypes.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit41]
FileName=..\..\src\KaxVersion.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit42]
FileName=..\..\src\KaxVersion.h
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[Unit43]
FileName=..\..\src\FileKax.cpp
Folder=libmatroska
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[VersionInfo]
Major=0
Minor=1
Release=1
Build=1
LanguageID=1033
CharsetID=1252
CompanyName=
FileVersion=
FileDescription=Developed using the Dev-C++ IDE
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=

View File

@ -1,27 +0,0 @@
# Project: test6
# Makefile created by Dev-C++ 4.9.7.0
CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
RES =
OBJ = ../../../test/mux/test6.o $(RES)
LIBS = -L"D:/DEV-CPP/lib" "../libmatroska.a" "../../../../libebml/make/mingw32/libebml.a"
INCS = -I"D:/DEV-CPP/include" -I"D:/DEV-CPP/include/c++" -I"D:/DEV-CPP/include" -I"D:/Dev-Cpp/include/c++/mingw32" -I"../../../../libebml/src" -I"../../../src"
BIN = test6.exe
CXXFLAGS = $(INCS)
CFLAGS = $(INCS)
.PHONY: all all-before all-after clean clean-custom
all: all-before test6.exe all-after
clean: clean-custom
rm -f $(OBJ) $(BIN)
$(BIN): $(OBJ)
$(CPP) $(OBJ) -o "test6.exe" $(LIBS) $(CXXFLAGS)
../../../test/mux/test6.o: ../../../test/mux/test6.cpp
$(CPP) -c ../../../test/mux/test6.cpp -o ../../../test/mux/test6.o $(CXXFLAGS)

View File

@ -1,54 +0,0 @@
[Project]
FileName=test6.dev
Name=test6
UnitCount=1
Type=1
Ver=1
ObjFiles=
Includes=..\..\..\..\libebml\src;..\..\..\src
Libs=
PrivateResource=
ResourceIncludes=
MakeIncludes=
Resources=
Compiler=
Linker="..\libmatroska.a" "..\..\..\..\libebml\make\mingw32\libebml.a"
IsCpp=1
Icon=
ExeOutput=
ObjectOutput=
OverrideOutput=0
OverrideOutputName=test6.exe
HostApplication=
Folders=
CommandLine=
IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=0
CompilerSettings=000000000000000000
[Unit1]
FileName=..\..\..\test\mux\test6.cpp
Folder=test6
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[VersionInfo]
Major=0
Minor=1
Release=1
Build=1
LanguageID=1033
CharsetID=1252
CompanyName=
FileVersion=
FileDescription=Developed using the Dev-C++ IDE
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=

View File

@ -1,54 +0,0 @@
[Project]
FileName=test8.dev
Name=test8
UnitCount=1
Type=1
Ver=1
ObjFiles=
Includes=..\..\..\..\libebml\src;..\..\..\src
Libs=
PrivateResource=
ResourceIncludes=
MakeIncludes=
Resources=
Compiler=
Linker="..\libmatroska.a" "..\..\..\..\libebml\make\mingw32\libebml.a"
IsCpp=1
Icon=
ExeOutput=
ObjectOutput=
OverrideOutput=0
OverrideOutputName=test8.exe
HostApplication=
Folders=
CommandLine=
IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=0
CompilerSettings=000000000000000000
[Unit1]
FileName=..\..\..\test\mux\test8.cpp
Folder=test8
Compile=1
CompileCpp=1
OverrideBuildCmd=0
BuildCmd=
[VersionInfo]
Major=0
Minor=1
Release=1
Build=1
LanguageID=1033
CharsetID=1252
CompanyName=
FileVersion=
FileDescription=Developed using the Dev-C++ IDE
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=

View File

@ -1,284 +0,0 @@
# Microsoft Developer Studio Project File - Name="libmatroska" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=libmatroska - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "libmatroska.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "libmatroska.mak" CFG="libmatroska - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "libmatroska - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "libmatroska - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "libmatroska - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../../../libebml" /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "libmatroska - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "../../../../../libebml" /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ENDIF
# Begin Target
# Name "libmatroska - Win32 Release"
# Name "libmatroska - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\..\src\FileKax.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxAttached.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxAttachments.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxBlock.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxBlockData.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxChapters.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxCluster.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxClusterData.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxContentEncoding.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxContexts.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxCues.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxCuesData.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxInfo.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxInfoData.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxSeekHead.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxSegment.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxTag.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxTags.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxTrackAudio.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxTrackEntryData.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxTracks.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxTrackVideo.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\..\src\KaxVersion.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=..\..\..\..\matroska\FileKax.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxAttached.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxAttachments.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxBlock.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxBlockData.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxChapters.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxCluster.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxClusterData.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxConfig.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxContentEncoding.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxContexts.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxCues.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxCuesData.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxInfo.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxInfoData.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxSeekHead.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxSegment.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTag.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTags.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTrackAudio.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTrackEntryData.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTracks.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTrackVideo.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxTypes.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\matroska\KaxVersion.h
# End Source File
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test0" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test0 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test0.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test0.mak" CFG="test0 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test0 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test0 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "test0 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /I "../../../../libebml/src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test0 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "../../../src" /I "../../../../libebml/src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test0 - Win32 Release"
# Name "test0 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\ebml\test0.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test00" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test00 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test00.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test00.mak" CFG="test00 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test00 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test00 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "test00 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /I "../../../../libebml/src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test00 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "../../../src" /I "../../../../libebml/src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test00 - Win32 Release"
# Name "test00 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\ebml\test00.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test1" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test1 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test1.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test1.mak" CFG="test1 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test1 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test1 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test1 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test1 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test1 - Win32 Release"
# Name "test1 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\block\test1.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test2" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test2 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test2.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test2.mak" CFG="test2 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test2 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test2 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test2 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test2 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test2 - Win32 Release"
# Name "test2 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\cluster\test2.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test3" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test3 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test3.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test3.mak" CFG="test3 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test3 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test3 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test3 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test3 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test3 - Win32 Release"
# Name "test3 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\endian\test3.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test4" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test4 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test4.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test4.mak" CFG="test4 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test4 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test4 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test4 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test4 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test4 - Win32 Release"
# Name "test4 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\header\test4.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test5" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test5 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test5.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test5.mak" CFG="test5 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test5 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test5 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test5 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test5 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test5 - Win32 Release"
# Name "test5 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\utf8\test5.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,101 +0,0 @@
# Microsoft Developer Studio Project File - Name="test6" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test6 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test6.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test6.mak" CFG="test6 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test6 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test6 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "test6 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /I "../../../../libebml" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test6 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "../../.." /I "../../../../libebml" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test6 - Win32 Release"
# Name "test6 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\mux\test6.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test6c" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test6c - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test6c.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test6c.mak" CFG="test6c - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test6c - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test6c - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test6c - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "../../../src/api/c" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test6c - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../src/api/c" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test6c - Win32 Release"
# Name "test6c - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE="..\..\..\test\mux\test6.c"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test7" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test7 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test7.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test7.mak" CFG="test7 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test7 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test7 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test7 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test7 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test7 - Win32 Release"
# Name "test7 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\mux\test7.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test8" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test8 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test8.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test8.mak" CFG="test8 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test8 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test8 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "test8 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /I "../../../../libebml" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test8 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "../../.." /I "../../../../libebml" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test8 - Win32 Release"
# Name "test8 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\mux\test8.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test8c" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test8c - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test8c.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test8c.mak" CFG="test8c - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test8c - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test8c - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "test8c - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "../../../src/api/c" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test8c - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../src/api/c" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test8c - Win32 Release"
# Name "test8c - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE="..\..\..\test\mux\test8.c"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,100 +0,0 @@
# Microsoft Developer Studio Project File - Name="test9" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=test9 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "test9.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "test9.mak" CFG="test9 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "test9 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "test9 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "test9 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /I "../../../../libebml" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test9 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "../../.." /I "../../../../libebml" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "test9 - Win32 Release"
# Name "test9 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\..\test\tags\test9.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@ -1,134 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "libebml"=..\..\..\libebml\make\vc6\lib\static\libebml.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "libmatroska"=.\lib\static\libmatroska.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libebml
End Project Dependency
}}}
###############################################################################
Project: "test0"=test\test0.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libebml
End Project Dependency
Begin Project Dependency
Project_Dep_Name libmatroska
End Project Dependency
}}}
###############################################################################
Project: "test00"=test\test00.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libebml
End Project Dependency
Begin Project Dependency
Project_Dep_Name libmatroska
End Project Dependency
}}}
###############################################################################
Project: "test6"=test\test6.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libebml
End Project Dependency
Begin Project Dependency
Project_Dep_Name libmatroska
End Project Dependency
}}}
###############################################################################
Project: "test8"=test\test8.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libebml
End Project Dependency
Begin Project Dependency
Project_Dep_Name libmatroska
End Project Dependency
}}}
###############################################################################
Project: "test9"=test\test9.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libebml
End Project Dependency
Begin Project Dependency
Project_Dep_Name libmatroska
End Project Dependency
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@ -1,60 +0,0 @@
# Project: libmatroska
# Makefile to use the Free Visual C++ 2003 compiler from Microsoft with GNU Make
# Compile with debug information?
#DEBUG = yes
# Where libebml resides
EBML_DIR = ../../../libebml
#
# Don't change anything below this line.
#
CXX = cl /Tp
CC = cl /Tc
SRC = $(wildcard ../../src/*.cpp)
OBJ = $(patsubst %.cpp,%.obj,$(SRC))
INCS = /I../.. /I$(EBML_DIR)
LDFLAGS = /NOLOGO /DLL /MAP:libmatroska.map /LIBPATH:$(EBML_DIR)/make/vc7 /VERSION:0.7
OPTMIZ = /G6 /O2 /Oi /GL /Wp64
CXXFLAGS = $(INCS) /DWIN32 /nologo /DEBML_DLL
ifeq (yes,$(DEBUG))
CXXFLAGS += /Zi /DDEBUG /D_DEBUG /MTd /RTC1
LDFLAGS += /DEBUG
else
CXXFLAGS += /MT
LDFLAGS += /OPT:REF
endif
LIBS = libmatroska.dll
.PHONY: all all-before all-after clean clean-custom
%.obj : %.cpp
$(CXX) $< /c $(CXXFLAGS) /Fo$@
all: lib
lib: $(LIBS)
clean:
$(RM) $(OBJ) libmatroska.lib libmatroska.dll
libmatroska.lib: $(OBJ)
lib /OUT:$@ /NODEFAULTLIB $(OBJ)
libmatroska.dll: $(OBJ)
link $(LDFLAGS) /OUT:$@ $(OBJ) libebml.lib
# user32.lib
depend:
$(CXX) $(CXXFLAGS) -MM $(SRC) > .depend
#
# include dependency files if they exist
#
ifneq ($(wildcard .depend),)
include .depend
endif

View File

@ -1,271 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="libmatroskadll"
ProjectGUID="{B227AC03-C69E-46B1-B91E-A77BE4C6F83A}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../../../libebml;../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EBML_DLL;MATROSKA_DLL;MATROSKA_DLL_EXPORT"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/libmatroska.dll"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/libmatroska.pdb"
SubSystem="2"
ImportLibrary="$(OutDir)/libmatroska.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../../../libebml;../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EBML_DLL;MATROSKA_DLL;MATROSKA_DLL_EXPORT"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/libmatroska.dll"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ImportLibrary="$(OutDir)/libmatroska.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath="..\..\..\..\src\KaxAttached.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxAttachments.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxBlock.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxBlockData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxChapters.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCluster.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxClusterData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxContentEncoding.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxContexts.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCues.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCuesData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxInfo.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxInfoData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxSeekHead.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxSegment.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTag.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTags.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackAudio.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackEntryData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTracks.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackVideo.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxVersion.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File
RelativePath="..\..\..\..\matroska\KaxAttached.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxAttachments.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxBlock.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxBlockData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxChapters.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCluster.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxClusterData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxConfig.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxContentEncoding.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxContexts.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCues.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCuesData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxInfo.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxInfoData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxSeekHead.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxSegment.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTag.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTags.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackAudio.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackEntryData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTracks.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackVideo.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTypes.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxVersion.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,277 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="libmatroska"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="4"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../../../../../libebml;../../../.."
PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/libmatroska.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Release\libmatroska.lib"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="4"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../../../libebml;../../../.."
PreprocessorDefinitions="WIN32,_DEBUG,_LIB"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/libmatroska.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Debug\libmatroska.lib"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="..\..\..\..\src\FileKax.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxAttached.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxAttachments.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxBlock.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxBlockData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxChapters.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCluster.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxClusterData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxContentEncoding.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxContexts.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCues.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCuesData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxInfo.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxInfoData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxSeekHead.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxSegment.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTag.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTags.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackAudio.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackEntryData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTracks.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackVideo.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxVersion.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
<File
RelativePath="..\..\..\..\matroska\FileKax.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxAttached.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxAttachments.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxBlock.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxBlockData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxChapters.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCluster.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxClusterData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxConfig.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxContentEncoding.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxContexts.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCues.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCuesData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxInfo.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxInfoData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxSeekHead.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxSegment.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTag.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTags.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackAudio.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackEntryData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTracks.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackVideo.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTypes.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxVersion.h">
</File>
<File
RelativePath="..\..\..\..\matroska\StdInclude.h">
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,263 +0,0 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="libmatroska"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="4"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../../../../../libebml;../../../.."
PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/libmatroska.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Release\libmatroska.lib"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="4"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../../../libebml;../../../.."
PreprocessorDefinitions="WIN32,_DEBUG,_LIB"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/libmatroska.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Debug\libmatroska.lib"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="..\..\..\..\src\FileKax.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxAttached.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxAttachments.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxBlock.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxBlockData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxChapters.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCluster.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxClusterData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxContentEncoding.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxContexts.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCues.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxCuesData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxInfo.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxInfoData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxSeekHead.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxSegment.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTag.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTags.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackAudio.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackEntryData.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTrackVideo.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxTracks.cpp">
</File>
<File
RelativePath="..\..\..\..\src\KaxVersion.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
<File
RelativePath="..\..\..\..\matroska\FileKax.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxAttached.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxAttachments.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxBlock.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxBlockData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxChapters.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCluster.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxClusterData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxConfig.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxContentEncoding.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxContexts.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCues.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxCuesData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxInfo.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxInfoData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxSeekHead.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxSegment.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTag.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTags.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackAudio.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackEntryData.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTrackVideo.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTracks.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxTypes.h">
</File>
<File
RelativePath="..\..\..\..\matroska\KaxVersion.h">
</File>
<File
RelativePath="..\..\..\..\matroska\StdInclude.h">
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,143 +0,0 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="test0"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../src,../../../../libebml/src"
PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/test0.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Debug/test0.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug/test0.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/test0.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../../../src,../../../../libebml/src"
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/test0.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Release/test0.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
ProgramDatabaseFile=".\Release/test0.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/test0.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="..\..\..\test\ebml\test0.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
</Filter>
</Files>
<Globals>
<Global
Name="DevPartner_IsInstrumented"
Value="0"/>
</Globals>
</VisualStudioProject>

View File

@ -1,143 +0,0 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="test00"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../src,../../../../libebml/src"
PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/test00.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Debug/test00.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug/test00.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/test00.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../../../src,../../../../libebml/src"
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/test00.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Release/test00.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
ProgramDatabaseFile=".\Release/test00.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/test00.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="..\..\..\test\ebml\test00.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
</Filter>
</Files>
<Globals>
<Global
Name="DevPartner_IsInstrumented"
Value="0"/>
</Globals>
</VisualStudioProject>

View File

@ -1,140 +0,0 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="test6"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../..,../../../../libebml"
PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/test6.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Debug/test6.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug/test6.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/test6.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../../..,../../../../libebml"
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/test6.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Release/test6.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
ProgramDatabaseFile=".\Release/test6.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/test6.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="..\..\..\test\mux\test6.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,140 +0,0 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="test8"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../../..,../../../../libebml"
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/test8.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Release/test8.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
ProgramDatabaseFile=".\Release/test8.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/test8.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../..,../../../../libebml"
PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/test8.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Debug/test8.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug/test8.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/test8.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="..\..\..\test\mux\test8.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,141 +0,0 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="test9"
ProjectGUID="{F294A3C5-D355-49E7-A8B8-B9692345A5E0}"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../../..,../../../../libebml"
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Release/test9.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Release/test9.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
ProgramDatabaseFile=".\Release/test9.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/test9.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../..,../../../../libebml"
PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderFile=".\Debug/test9.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib"
OutputFile=".\Debug/test9.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug/test9.pdb"
SubSystem="1"/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/test9.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1036"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="..\..\..\test\tags\test9.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,73 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 7.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libebml", "..\..\..\libebml\make\vc7\lib\libebml.vcproj", "{C6902997-CF7C-42B5-AD42-5B7C11F4CFE6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libebmldll", "..\..\..\libebml\make\vc7\dll\libebmldll.v71.vcproj", "{83136D19-2749-4640-AC38-33E0B1F0DCC2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmatroska", "lib\static\libmatroska.vcproj", "{061EEA22-F7D5-4477-AB15-0DCE85EA038A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test0", "test\test0.vcproj", "{8380F3AF-9E4A-4D5F-900F-991978CE44E1}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test00", "test\test00.vcproj", "{78DA23EF-794A-4311-9B99-8C71D44CC749}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test6", "test\test6.vcproj", "{4770FB10-8B2F-4E29-BA0B-517031ABC0F5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test8", "test\test8.vcproj", "{EAE085B0-7FD7-48DA-ABFE-A706DACC3794}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test9", "test\test9.vcproj", "{F294A3C5-D355-49E7-A8B8-B9692345A5E0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmatroskadll", "lib\dll\libmatroskadll.v71.vcproj", "{B227AC03-C69E-46B1-B91E-A77BE4C6F83A}"
EndProject
Global
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
EndGlobalSection
GlobalSection(DevPartner Solution Properties) = postSolution
EndGlobalSection
GlobalSection(SolutionConfiguration) = preSolution
ConfigName.0 = Debug
ConfigName.1 = Release
EndGlobalSection
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{C6902997-CF7C-42B5-AD42-5B7C11F4CFE6}.Debug.ActiveCfg = Debug|Win32
{C6902997-CF7C-42B5-AD42-5B7C11F4CFE6}.Debug.Build.0 = Debug|Win32
{C6902997-CF7C-42B5-AD42-5B7C11F4CFE6}.Release.ActiveCfg = Release|Win32
{C6902997-CF7C-42B5-AD42-5B7C11F4CFE6}.Release.Build.0 = Release|Win32
{061EEA22-F7D5-4477-AB15-0DCE85EA038A}.Debug.ActiveCfg = Debug|Win32
{061EEA22-F7D5-4477-AB15-0DCE85EA038A}.Debug.Build.0 = Debug|Win32
{061EEA22-F7D5-4477-AB15-0DCE85EA038A}.Release.ActiveCfg = Release|Win32
{061EEA22-F7D5-4477-AB15-0DCE85EA038A}.Release.Build.0 = Release|Win32
{8380F3AF-9E4A-4D5F-900F-991978CE44E1}.Debug.ActiveCfg = Debug|Win32
{8380F3AF-9E4A-4D5F-900F-991978CE44E1}.Release.ActiveCfg = Release|Win32
{78DA23EF-794A-4311-9B99-8C71D44CC749}.Debug.ActiveCfg = Debug|Win32
{78DA23EF-794A-4311-9B99-8C71D44CC749}.Release.ActiveCfg = Release|Win32
{4770FB10-8B2F-4E29-BA0B-517031ABC0F5}.Debug.ActiveCfg = Debug|Win32
{4770FB10-8B2F-4E29-BA0B-517031ABC0F5}.Debug.Build.0 = Debug|Win32
{4770FB10-8B2F-4E29-BA0B-517031ABC0F5}.Release.ActiveCfg = Release|Win32
{4770FB10-8B2F-4E29-BA0B-517031ABC0F5}.Release.Build.0 = Release|Win32
{EAE085B0-7FD7-48DA-ABFE-A706DACC3794}.Debug.ActiveCfg = Debug|Win32
{EAE085B0-7FD7-48DA-ABFE-A706DACC3794}.Debug.Build.0 = Debug|Win32
{EAE085B0-7FD7-48DA-ABFE-A706DACC3794}.Release.ActiveCfg = Release|Win32
{EAE085B0-7FD7-48DA-ABFE-A706DACC3794}.Release.Build.0 = Release|Win32
{F294A3C5-D355-49E7-A8B8-B9692345A5E0}.Debug.ActiveCfg = Debug|Win32
{F294A3C5-D355-49E7-A8B8-B9692345A5E0}.Debug.Build.0 = Debug|Win32
{F294A3C5-D355-49E7-A8B8-B9692345A5E0}.Release.ActiveCfg = Release|Win32
{F294A3C5-D355-49E7-A8B8-B9692345A5E0}.Release.Build.0 = Release|Win32
{B227AC03-C69E-46B1-B91E-A77BE4C6F83A}.Debug.ActiveCfg = Debug|Win32
{B227AC03-C69E-46B1-B91E-A77BE4C6F83A}.Debug.Build.0 = Debug|Win32
{B227AC03-C69E-46B1-B91E-A77BE4C6F83A}.Release.ActiveCfg = Release|Win32
{B227AC03-C69E-46B1-B91E-A77BE4C6F83A}.Release.Build.0 = Release|Win32
{83136D19-2749-4640-AC38-33E0B1F0DCC2}.Debug.ActiveCfg = Debug|Win32
{83136D19-2749-4640-AC38-33E0B1F0DCC2}.Debug.Build.0 = Debug|Win32
{83136D19-2749-4640-AC38-33E0B1F0DCC2}.Release.ActiveCfg = Release|Win32
{83136D19-2749-4640-AC38-33E0B1F0DCC2}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
GlobalSection(DevPartner) = postSolution
EndGlobalSection
GlobalSection(DevPartner) = postSolution
EndGlobalSection
EndGlobal

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

@ -11,26 +11,26 @@
** 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

View File

@ -11,26 +11,26 @@
** 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

View File

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

View File

@ -9,26 +9,26 @@
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** version 2.1 of the License, or (at your option) any later version.
** **
** This library is distributed in the hope that it will be useful, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxBlockData.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $ \version \$Id: KaxBlockData.h,v 1.10 2004/04/14 23:26:17 robux4 Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_BLOCK_ADDITIONAL_H #ifndef LIBMATROSKA_BLOCK_ADDITIONAL_H
#define LIBMATROSKA_BLOCK_ADDITIONAL_H #define LIBMATROSKA_BLOCK_ADDITIONAL_H
@ -45,26 +45,26 @@ using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
/*! /*!
\brief element used for B frame-likes \brief element used for B frame-likes
*/ */
DECLARE_MKX_SINTEGER_CONS(KaxReferenceBlock) DECLARE_MKX_SINTEGER_CONS(KaxReferenceBlock)
public: public:
~KaxReferenceBlock(); ~KaxReferenceBlock();
/*! /*!
\brief override this method to compute the timecode value \brief override this method to compute the timecode value
*/ */
virtual filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false); virtual filepos_t UpdateSize(bool bSaveDefault = false, bool bForceRender = false);
const KaxBlockBlob & RefBlock() const; const KaxBlockBlob & RefBlock() const;
void SetReferencedBlock(const KaxBlockBlob * aRefdBlock); void SetReferencedBlock(const KaxBlockBlob * aRefdBlock);
void SetReferencedBlock(const KaxBlockGroup & aRefdBlock); void SetReferencedBlock(const KaxBlockGroup & aRefdBlock);
void SetParentBlock(const KaxBlockGroup & aParentBlock) {ParentBlock = &aParentBlock;} void SetParentBlock(const KaxBlockGroup & aParentBlock) {ParentBlock = &aParentBlock;}
protected: protected:
const KaxBlockBlob * RefdBlock; const KaxBlockBlob * RefdBlock;
const KaxBlockGroup * ParentBlock; const KaxBlockGroup * ParentBlock;
void SetReferencedTimecode(int64 refTimecode) {*static_cast<EbmlSInteger*>(this) = refTimecode; bTimecodeSet = true;}; void SetReferencedTimecode(int64 refTimecode) {*static_cast<EbmlSInteger*>(this) = refTimecode; bTimecodeSet = true;};
bool bTimecodeSet; bool bTimecodeSet;
bool bOurBlob; bool bOurBlob;
void FreeBlob(); void FreeBlob();
}; };

View File

@ -11,26 +11,26 @@
** 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$ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CHAPTERS_H #ifndef LIBMATROSKA_CHAPTERS_H
#define LIBMATROSKA_CHAPTERS_H #define LIBMATROSKA_CHAPTERS_H

View File

@ -9,27 +9,27 @@
** 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
@ -49,109 +49,109 @@ 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
\note this is a convenience to be able to keep Clusters+Blocks in memory (for future reference) withouht being a memory hog
*/
void ReleaseFrames();
/*! /*!
\brief return the position offset compared to the beggining of the Segment \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
uint64 GetPosition() const; */
void ReleaseFrames();
void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;} /*!
\brief return the position offset compared to the beggining of the Segment
*/
uint64 GetPosition() const;
void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) { void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;}
bPreviousTimecodeIsSet = true;
PreviousTimecode = aPreviousTimecode;
SetGlobalTimecodeScale(aTimecodeScale);
}
/*! void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) {
\note dirty hack to get the mandatory data back after reading bPreviousTimecodeIsSet = true;
\todo there should be a better way to get mandatory data PreviousTimecode = aPreviousTimecode;
*/ SetGlobalTimecodeScale(aTimecodeScale);
void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) { }
SetGlobalTimecodeScale(aTimecodeScale);
MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale;
bFirstFrameInside = bPreviousTimecodeIsSet = true;
}
int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const; /*!
\note dirty hack to get the mandatory data back after reading
\todo there should be a better way to get mandatory data
*/
void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) {
SetGlobalTimecodeScale(aTimecodeScale);
MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale;
bFirstFrameInside = bPreviousTimecodeIsSet = true;
}
uint64 GetBlockGlobalTimecode(int16 LocalTimecode); int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const;
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) { uint64 GetBlockGlobalTimecode(int16 LocalTimecode);
TimecodeScale = aGlobalTimecodeScale;
bTimecodeScaleIsSet = true;
}
uint64 GlobalTimecodeScale() const {
assert(bTimecodeScaleIsSet);
return TimecodeScale;
}
bool SetSilentTrackUsed() void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
{ TimecodeScale = aGlobalTimecodeScale;
bSilentTracksUsed = true; bTimecodeScaleIsSet = true;
return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL; }
} uint64 GlobalTimecodeScale() const {
assert(bTimecodeScaleIsSet);
return TimecodeScale;
}
bool AddBlockBlob(KaxBlockBlob * NewBlob); bool SetSilentTrackUsed()
{
bSilentTracksUsed = true;
return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL;
}
const KaxSegment *GetParentSegment() const { return ParentSegment; } bool AddBlockBlob(KaxBlockBlob * NewBlob);
protected: const KaxSegment *GetParentSegment() const { return ParentSegment; }
KaxBlockBlob * currentNewBlob;
std::vector<KaxBlockBlob*> Blobs;
KaxBlockGroup * currentNewBlock;
const KaxSegment * ParentSegment;
uint64 MinTimecode, MaxTimecode, PreviousTimecode; protected:
int64 TimecodeScale; KaxBlockBlob * currentNewBlob;
std::vector<KaxBlockBlob*> Blobs;
KaxBlockGroup * currentNewBlock;
const KaxSegment * ParentSegment;
bool bFirstFrameInside; // used to speed research uint64 MinTimecode, MaxTimecode, PreviousTimecode;
bool bPreviousTimecodeIsSet; int64 TimecodeScale;
bool bTimecodeScaleIsSet;
bool bSilentTracksUsed;
/*! bool bFirstFrameInside; // used to speed research
\note method used internally bool bPreviousTimecodeIsSet;
*/ bool bTimecodeScaleIsSet;
bool AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing); bool bSilentTracksUsed;
/*!
\note method used internally
*/
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

View File

@ -11,26 +11,26 @@
** 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

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

@ -11,26 +11,26 @@
** 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 Steve Lhomme <robux4 @ users.sf.net> \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

View File

@ -11,26 +11,26 @@
** 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$ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_CONTEXTS_H #ifndef LIBMATROSKA_CONTEXTS_H
#define LIBMATROSKA_CONTEXTS_H #define LIBMATROSKA_CONTEXTS_H

View File

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

View File

@ -9,26 +9,26 @@
** 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
@ -48,27 +48,27 @@ 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_MASTER(KaxCueTrackPositions) DECLARE_MKX_MASTER(KaxCueTrackPositions)
public: public:
uint64 ClusterPosition() const; uint64 ClusterPosition() const;
uint16 TrackNumber() const; uint16 TrackNumber() const;
}; };
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_MASTER(KaxCueReference) DECLARE_MKX_MASTER(KaxCueReference)
public: public:
void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale); void AddReference(const KaxBlockGroup & BlockReferenced, uint64 GlobalTimecodeScale);
void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale); void AddReference(const KaxBlockBlob & BlockReferenced, uint64 GlobalTimecodeScale);
}; };
#endif // MATROSKA_VERSION #endif // MATROSKA_VERSION

View File

@ -9,26 +9,26 @@
** 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$ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_DEFINES_H #ifndef LIBMATROSKA_DEFINES_H
#define LIBMATROSKA_DEFINES_H #define LIBMATROSKA_DEFINES_H

View File

@ -11,26 +11,26 @@
** 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

View File

@ -11,28 +11,28 @@
** 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$ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net> \author John Cannon <spyder2555 @ users.sf.net>
\author Moritz Bunkus <moritz @ bunkus.org> \author Moritz Bunkus <moritz @ bunkus.org>
*/ */
#ifndef LIBMATROSKA_INFO_DATA_H #ifndef LIBMATROSKA_INFO_DATA_H
#define LIBMATROSKA_INFO_DATA_H #define LIBMATROSKA_INFO_DATA_H
@ -53,20 +53,20 @@ START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_CONTEXT(KaxPrevUID); DECLARE_MKX_CONTEXT(KaxPrevUID);
class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID { class MATROSKA_DLL_API KaxPrevUID : public KaxSegmentUID {
public: public:
KaxPrevUID(EBML_EXTRA_PARAM); KaxPrevUID(EBML_EXTRA_PARAM);
KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){} KaxPrevUID(const KaxPrevUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);} virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
EBML_CONCRETE_CLASS(KaxPrevUID) EBML_CONCRETE_CLASS(KaxPrevUID)
}; };
DECLARE_MKX_CONTEXT(KaxNextUID); DECLARE_MKX_CONTEXT(KaxNextUID);
class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID { class MATROSKA_DLL_API KaxNextUID : public KaxSegmentUID {
public: public:
KaxNextUID(EBML_EXTRA_PARAM); KaxNextUID(EBML_EXTRA_PARAM);
KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){} KaxNextUID(const KaxNextUID & ElementToClone) :KaxSegmentUID(ElementToClone){}
virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);} virtual bool ValidateSize() const { return IsFiniteSize() && (GetSize() == 16);}
EBML_CONCRETE_CLASS(KaxNextUID) EBML_CONCRETE_CLASS(KaxNextUID)
}; };

View File

@ -11,26 +11,26 @@
** 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$ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_SEEK_HEAD_H #ifndef LIBMATROSKA_SEEK_HEAD_H
#define LIBMATROSKA_SEEK_HEAD_H #define LIBMATROSKA_SEEK_HEAD_H
@ -48,22 +48,22 @@ START_LIBMATROSKA_NAMESPACE
class KaxSegment; class KaxSegment;
DECLARE_MKX_MASTER(KaxSeek) DECLARE_MKX_MASTER(KaxSeek)
public: public:
int64 Location() const; int64 Location() const;
bool IsEbmlId(const EbmlId & aId) const; bool IsEbmlId(const EbmlId & aId) const;
bool IsEbmlId(const KaxSeek & aPoint) const; bool IsEbmlId(const KaxSeek & aPoint) const;
}; };
DECLARE_MKX_MASTER(KaxSeekHead) DECLARE_MKX_MASTER(KaxSeekHead)
public: public:
/*! /*!
\brief add an element to index in the Meta Seek data \brief add an element to index in the Meta Seek data
\note the element should already be written in the file \note the element should already be written in the file
*/ */
void IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment); void IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment);
KaxSeek * FindFirstOf(const EbmlCallbacks & Callbacks) const; KaxSeek * FindFirstOf(const EbmlCallbacks & Callbacks) const;
KaxSeek * FindNextOf(const KaxSeek &aPrev) const; KaxSeek * FindNextOf(const KaxSeek &aPrev) const;
}; };
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

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

View File

@ -1,28 +1,28 @@
/********************************************************************** /**********************************************************************
** DO NOT EDIT, GENERATED WITH DATA2LIB ** DO NOT EDIT, GENERATED WITH DATA2LIB
** **
** libmatroska : parse Matroska files, see http://www.matroska.org/ ** libmatroska : parse Matroska files, see http://www.matroska.org/
** **
** Copyright (c) 2002-2010, Matroska (non-profit organisation) ** Copyright (c) 2002-2010, Matroska (non-profit organisation)
** All rights reserved. ** 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.
** **
@ -49,7 +49,7 @@ START_LIBMATROSKA_NAMESPACE
DECLARE_MKX_BINARY (KaxSeekID) DECLARE_MKX_BINARY (KaxSeekID)
public: public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() <= 4;} virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() <= 4;}
}; };
DECLARE_MKX_UINTEGER(KaxSeekPosition) DECLARE_MKX_UINTEGER(KaxSeekPosition)
@ -62,10 +62,10 @@ DECLARE_MKX_MASTER(KaxInfo)
DECLARE_MKX_BINARY (KaxSegmentUID) DECLARE_MKX_BINARY (KaxSegmentUID)
#if defined(HAVE_EBML2) || defined(HAS_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
public: public:
KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_PARAM); KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_PARAM);
#endif #endif
public: public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;} virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
}; };
DECLARE_MKX_UNISTRING(KaxSegmentFilename) DECLARE_MKX_UNISTRING(KaxSegmentFilename)
@ -79,7 +79,7 @@ DECLARE_MKX_UNISTRING(KaxNextFilename)
DECLARE_MKX_BINARY (KaxSegmentFamily) DECLARE_MKX_BINARY (KaxSegmentFamily)
public: public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;} virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
}; };
DECLARE_MKX_MASTER(KaxChapterTranslate) DECLARE_MKX_MASTER(KaxChapterTranslate)
@ -152,11 +152,14 @@ DECLARE_MKX_UINTEGER(KaxReferencePriority)
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_SINTEGER(KaxReferenceVirtual) DECLARE_MKX_SINTEGER(KaxReferenceVirtual)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_BINARY (KaxCodecState) DECLARE_MKX_BINARY (KaxCodecState)
}; };
DECLARE_MKX_SINTEGER(KaxDiscardPadding)
};
#endif #endif
DECLARE_MKX_MASTER(KaxSlices) DECLARE_MKX_MASTER(KaxSlices)
@ -173,22 +176,22 @@ DECLARE_MKX_UINTEGER(KaxSliceLaceNumber)
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxSliceFrameNumber) DECLARE_MKX_UINTEGER(KaxSliceFrameNumber)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_UINTEGER(KaxSliceBlockAddID) DECLARE_MKX_UINTEGER(KaxSliceBlockAddID)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_UINTEGER(KaxSliceDelay) DECLARE_MKX_UINTEGER(KaxSliceDelay)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_UINTEGER(KaxSliceDuration) DECLARE_MKX_UINTEGER(KaxSliceDuration)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_MASTER(KaxReferenceFrame) DECLARE_MKX_MASTER(KaxReferenceFrame)
@ -203,7 +206,7 @@ DECLARE_MKX_UINTEGER(KaxReferenceTimeCode)
DECLARE_MKX_BINARY (KaxEncryptedBlock) DECLARE_MKX_BINARY (KaxEncryptedBlock)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
#endif #endif
@ -243,13 +246,20 @@ DECLARE_MKX_UINTEGER(KaxTrackMaxCache)
DECLARE_MKX_UINTEGER(KaxTrackDefaultDuration) DECLARE_MKX_UINTEGER(KaxTrackDefaultDuration)
}; };
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxTrackDefaultDecodedFieldDuration)
};
#endif
DECLARE_MKX_FLOAT(KaxTrackTimecodeScale) DECLARE_MKX_FLOAT(KaxTrackTimecodeScale)
public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_SINTEGER(KaxTrackOffset) DECLARE_MKX_SINTEGER(KaxTrackOffset)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
#endif #endif
@ -277,17 +287,17 @@ DECLARE_MKX_UINTEGER(KaxTrackAttachmentLink)
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_UNISTRING(KaxCodecSettings) DECLARE_MKX_UNISTRING(KaxCodecSettings)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_STRING(KaxCodecInfoURL) DECLARE_MKX_STRING(KaxCodecInfoURL)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_STRING(KaxCodecDownloadURL) DECLARE_MKX_STRING(KaxCodecDownloadURL)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_UINTEGER(KaxCodecDecodeAll) DECLARE_MKX_UINTEGER(KaxCodecDecodeAll)
@ -297,6 +307,14 @@ DECLARE_MKX_UINTEGER(KaxCodecDecodeAll)
DECLARE_MKX_UINTEGER(KaxTrackOverlay) DECLARE_MKX_UINTEGER(KaxTrackOverlay)
}; };
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxCodecDelay)
};
DECLARE_MKX_UINTEGER(KaxSeekPreRoll)
};
#endif
DECLARE_MKX_MASTER(KaxTrackTranslate) DECLARE_MKX_MASTER(KaxTrackTranslate)
}; };
@ -321,9 +339,12 @@ DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced)
DECLARE_MKX_UINTEGER(KaxVideoStereoMode) DECLARE_MKX_UINTEGER(KaxVideoStereoMode)
}; };
DECLARE_MKX_UINTEGER(KaxVideoAlphaMode)
};
DECLARE_MKX_UINTEGER(KaxOldStereoMode) DECLARE_MKX_UINTEGER(KaxOldStereoMode)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
#endif #endif
@ -359,18 +380,18 @@ DECLARE_MKX_UINTEGER(KaxVideoAspectRatio)
DECLARE_MKX_BINARY (KaxVideoColourSpace) DECLARE_MKX_BINARY (KaxVideoColourSpace)
public: public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 4;} virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 4;}
}; };
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_FLOAT(KaxVideoGamma) DECLARE_MKX_FLOAT(KaxVideoGamma)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_FLOAT(KaxVideoFrameRate) DECLARE_MKX_FLOAT(KaxVideoFrameRate)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
#endif #endif
@ -390,7 +411,7 @@ DECLARE_MKX_UINTEGER(KaxAudioChannels)
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_BINARY (KaxAudioPosition) DECLARE_MKX_BINARY (KaxAudioPosition)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
#endif #endif
@ -428,7 +449,7 @@ DECLARE_MKX_UINTEGER(KaxTrickTrackUID)
DECLARE_MKX_BINARY (KaxTrickTrackSegmentUID) DECLARE_MKX_BINARY (KaxTrickTrackSegmentUID)
public: public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;} virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
}; };
DECLARE_MKX_UINTEGER(KaxTrickTrackFlag) DECLARE_MKX_UINTEGER(KaxTrickTrackFlag)
@ -439,7 +460,7 @@ DECLARE_MKX_UINTEGER(KaxTrickMasterTrackUID)
DECLARE_MKX_BINARY (KaxTrickMasterTrackSegmentUID) DECLARE_MKX_BINARY (KaxTrickMasterTrackSegmentUID)
public: public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;} virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
}; };
#endif #endif
@ -501,6 +522,14 @@ DECLARE_MKX_UINTEGER(KaxCueTrack)
DECLARE_MKX_UINTEGER(KaxCueClusterPosition) DECLARE_MKX_UINTEGER(KaxCueClusterPosition)
}; };
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UINTEGER(KaxCueRelativePosition)
};
DECLARE_MKX_UINTEGER(KaxCueDuration)
};
#endif
DECLARE_MKX_UINTEGER(KaxCueBlockNumber) DECLARE_MKX_UINTEGER(KaxCueBlockNumber)
}; };
@ -513,17 +542,17 @@ DECLARE_MKX_UINTEGER(KaxCueRefTime)
DECLARE_MKX_UINTEGER(KaxCueRefCluster) DECLARE_MKX_UINTEGER(KaxCueRefCluster)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_UINTEGER(KaxCueRefNumber) DECLARE_MKX_UINTEGER(KaxCueRefNumber)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_UINTEGER(KaxCueRefCodecState) DECLARE_MKX_UINTEGER(KaxCueRefCodecState)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
#endif #endif
@ -553,7 +582,7 @@ DECLARE_MKX_UINTEGER(KaxFileUID)
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
DECLARE_MKX_BINARY (KaxFileReferral) DECLARE_MKX_BINARY (KaxFileReferral)
public: public:
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault); filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
}; };
DECLARE_MKX_UINTEGER(KaxFileUsedStartTime) DECLARE_MKX_UINTEGER(KaxFileUsedStartTime)
@ -590,6 +619,11 @@ DECLARE_MKX_MASTER(KaxChapterAtom)
DECLARE_MKX_UINTEGER(KaxChapterUID) DECLARE_MKX_UINTEGER(KaxChapterUID)
}; };
#if MATROSKA_VERSION >= 2
DECLARE_MKX_UNISTRING(KaxChapterStringUID)
};
#endif
DECLARE_MKX_UINTEGER(KaxChapterTimeStart) DECLARE_MKX_UINTEGER(KaxChapterTimeStart)
}; };
@ -604,7 +638,7 @@ DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled)
DECLARE_MKX_BINARY (KaxChapterSegmentUID) DECLARE_MKX_BINARY (KaxChapterSegmentUID)
public: public:
virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;} virtual bool ValidateSize() const {return IsFiniteSize() && GetSize() == 16;}
}; };
DECLARE_MKX_UINTEGER(KaxChapterSegmentEditionUID) DECLARE_MKX_UINTEGER(KaxChapterSegmentEditionUID)

View File

@ -11,26 +11,26 @@
** 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$ \version \$Id$
\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

View File

@ -11,26 +11,26 @@
** 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

View File

@ -11,26 +11,26 @@
** 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

View File

@ -11,26 +11,26 @@
** 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>
*/ */
#ifndef LIBMATROSKA_TRACK_ENTRY_DATA_H #ifndef LIBMATROSKA_TRACK_ENTRY_DATA_H
#define LIBMATROSKA_TRACK_ENTRY_DATA_H #define LIBMATROSKA_TRACK_ENTRY_DATA_H

View File

@ -11,26 +11,26 @@
** 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$ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_TRACK_VIDEO_H #ifndef LIBMATROSKA_TRACK_VIDEO_H
#define LIBMATROSKA_TRACK_VIDEO_H #define LIBMATROSKA_TRACK_VIDEO_H

View File

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

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,18 +17,18 @@
** **
** 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.h,v 1.13 2004/04/23 16:46:07 mosu Exp $ \version \$Id: KaxVersion.h,v 1.13 2004/04/23 16:46:07 mosu Exp $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#ifndef LIBMATROSKA_VERSION_H #ifndef LIBMATROSKA_VERSION_H
#define LIBMATROSKA_VERSION_H #define LIBMATROSKA_VERSION_H
@ -40,13 +40,13 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
#define LIBMATROSKA_VERSION 0x010300 #define LIBMATROSKA_VERSION 0x010404
extern const std::string KaxCodeVersion; extern const std::string KaxCodeVersion;
extern const std::string KaxCodeDate; 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
*/ */
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -11,17 +11,17 @@
** 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.

View File

@ -11,17 +11,17 @@
** 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.
** **
@ -69,7 +69,7 @@ typedef enum track_type {
\note this should be used by the libmatroska internals \note this should be used by the libmatroska internals
*/ */
typedef enum { typedef enum {
error_null_pointer ///< NULL pointer where something else is expected error_null_pointer ///< NULL pointer where something else is expected
} matroska_error_t; } matroska_error_t;
typedef void *matroska_stream; typedef void *matroska_stream;

View File

@ -11,17 +11,17 @@
** 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.
** **
@ -47,404 +47,370 @@ START_LIBMATROSKA_NAMESPACE
//typedef Track *TrackID; //typedef Track *TrackID;
FileMatroska::FileMatroska(IOCallback & output) FileMatroska::FileMatroska(IOCallback & output)
:myFile(output) :myFile(output)
#ifdef OLD #ifdef OLD
,myCurrReadBlock(NULL) ,myCurrReadBlock(NULL)
,myMinClusterSize(5*1024) // 5KB is the min size of a cluster ,myMinClusterSize(5*1024) // 5KB is the min size of a cluster
,myMaxClusterSize(2*1024*1024) // 2MB is the max size of a cluster ,myMaxClusterSize(2*1024*1024) // 2MB is the max size of a cluster
,myCurrReadBlockTrack(0) ,myCurrReadBlockTrack(0)
,myCurrWriteCluster(2*1024*1024) // myMaxClusterSize ,myCurrWriteCluster(2*1024*1024) // myMaxClusterSize
,myCurrReadCluster(NULL) ,myCurrReadCluster(NULL)
,myReadBlockNumber(0) ,myReadBlockNumber(0)
#endif // OLD #endif // OLD
{ {
#ifdef OLD #ifdef OLD
myStreamInfo.MainHeaderSize = TypeHeader::default_size() + myStreamInfo.MainHeaderSize = TypeHeader::default_size() +
ActualHeader::default_size() + ActualHeader::default_size() +
ExtendedInfo::default_size() + ExtendedInfo::default_size() +
ContentInfo::default_size(); ContentInfo::default_size();
myStreamInfo.TrackEntrySize = Track::default_size(); myStreamInfo.TrackEntrySize = Track::default_size();
myStreamInfo.BlockHeadSize = BLOCK_HEADER_SIZE; myStreamInfo.BlockHeadSize = BLOCK_HEADER_SIZE;
myStreamInfo.ClusterHeadSize = CLUSTER_HEADER_SIZE; myStreamInfo.ClusterHeadSize = CLUSTER_HEADER_SIZE;
myStreamInfo.ClusterFootSize = CLUSTER_TRAILER_SIZE; myStreamInfo.ClusterFootSize = CLUSTER_TRAILER_SIZE;
#endif // OLD #endif // OLD
} }
FileMatroska::~FileMatroska() FileMatroska::~FileMatroska()
{ {
// if (myCurrCluster != NULL) // if (myCurrCluster != NULL)
// throw 0; // there are some data left to write // throw 0; // there are some data left to write
// if (myCurrReadCluster != NULL || myCurrReadBlock != NULL) // if (myCurrReadCluster != NULL || myCurrReadBlock != NULL)
// throw 0; // there are some data left to write // throw 0; // there are some data left to write
} }
#ifdef OLD #ifdef OLD
void FileMatroska::SetMaxClusterSize(const uint32 value) void FileMatroska::SetMaxClusterSize(const uint32 value)
{ {
myMaxClusterSize = value; myMaxClusterSize = value;
myCurrWriteCluster.setMaxSize(value); myCurrWriteCluster.setMaxSize(value);
} }
void FileMatroska::Close(const uint32 aTimeLength) void FileMatroska::Close(const uint32 aTimeLength)
{ {
Flush(); Flush();
// get the file size // get the file size
myFile.setFilePointer(0,seek_end); myFile.setFilePointer(0,seek_end);
myMainHeader.type_SetSize(myFile.getFilePointer()); myMainHeader.type_SetSize(myFile.getFilePointer());
// rewrite the header at the beginning // rewrite the header at the beginning
myFile.setFilePointer(0,seek_beginning); myFile.setFilePointer(0,seek_beginning);
// get the Track-entry size // get the Track-entry size
uint32 track_entries_size = 0; uint32 track_entries_size = 0;
for (size_t i=0; i<myTracks.size(); i++) for (size_t i=0; i<myTracks.size(); i++) {
{ track_entries_size += myTracks[i]->default_size();
track_entries_size += myTracks[i]->default_size(); }
}
myStreamInfo.TrackEntriesSize = track_entries_size; myStreamInfo.TrackEntriesSize = track_entries_size;
myStreamInfo.TimeLength = aTimeLength; myStreamInfo.TimeLength = aTimeLength;
myMainHeader.Render(myFile, myStreamInfo); myMainHeader.Render(myFile, myStreamInfo);
for (i=0; i<myTracks.size(); i++) for (i=0; i<myTracks.size(); i++) {
{ delete myTracks[i];
delete myTracks[i]; }
}
} }
/*! /*!
\warning after rendering the head, some parameters are locked \warning after rendering the head, some parameters are locked
*/ */
filepos_t FileMatroska::RenderHead(const std::string & aEncoderApp) filepos_t FileMatroska::RenderHead(const std::string & aEncoderApp)
{ {
try { try {
uint32 track_entries_size = 0; uint32 track_entries_size = 0;
for (size_t i=0; i<myTracks.size(); i++) for (size_t i=0; i<myTracks.size(); i++) {
{ track_entries_size += myTracks[i]->default_size();
track_entries_size += myTracks[i]->default_size();
}
std::string aStr = LIB_NAME;
aStr += " ";
aStr += VERSION;
myStreamInfo.EncoderLib = aStr;
myStreamInfo.EncoderApp = aEncoderApp;
myStreamInfo.TrackEntryPosition = 0 + myStreamInfo.MainHeaderSize;
myStreamInfo.TrackEntriesSize = myTracks.size() * myStreamInfo.TrackEntrySize;
myStreamInfo.CodecEntryPosition = myStreamInfo.MainHeaderSize + myStreamInfo.TrackEntriesSize;
myStreamInfo.CodecEntrySize = 4;
for (i=0; i<myTracks.size(); i++)
{
myStreamInfo.CodecEntrySize += myTracks[i]->CodecSize();
}
// Main Header
filepos_t result = myMainHeader.Render(myFile, myStreamInfo);
// Track Entries
for (i=0; i<myTracks.size(); i++)
{
myTracks[i]->RenderEntry(myFile, i+1);
}
myStreamInfo.ClusterPosition = myStreamInfo.CodecEntryPosition + myStreamInfo.CodecEntrySize;
// Codec Header
result = CodecHeader::Render(myFile, myTracks);
return result;
} }
catch (exception & Ex)
{ std::string aStr = LIB_NAME;
throw Ex; aStr += " ";
aStr += VERSION;
myStreamInfo.EncoderLib = aStr;
myStreamInfo.EncoderApp = aEncoderApp;
myStreamInfo.TrackEntryPosition = 0 + myStreamInfo.MainHeaderSize;
myStreamInfo.TrackEntriesSize = myTracks.size() * myStreamInfo.TrackEntrySize;
myStreamInfo.CodecEntryPosition = myStreamInfo.MainHeaderSize + myStreamInfo.TrackEntriesSize;
myStreamInfo.CodecEntrySize = 4;
for (i=0; i<myTracks.size(); i++) {
myStreamInfo.CodecEntrySize += myTracks[i]->CodecSize();
} }
// Main Header
filepos_t result = myMainHeader.Render(myFile, myStreamInfo);
// Track Entries
for (i=0; i<myTracks.size(); i++) {
myTracks[i]->RenderEntry(myFile, i+1);
}
myStreamInfo.ClusterPosition = myStreamInfo.CodecEntryPosition + myStreamInfo.CodecEntrySize;
// Codec Header
result = CodecHeader::Render(myFile, myTracks);
return result;
}
catch (exception & Ex) {
throw Ex;
}
} }
/*! /*!
\return 0 if the track was not created, or a valid track number \return 0 if the track was not created, or a valid track number
*/ */
Track * FileMatroska::CreateTrack(const track_type aType) Track * FileMatroska::CreateTrack(const track_type aType)
{ {
myTracks.push_back(new Track(aType)); myTracks.push_back(new Track(aType));
return myTracks.back(); return myTracks.back();
} }
/*Track *FileMatroska::findTrack(Track * aTrack) const /*Track *FileMatroska::findTrack(Track * aTrack) const {
{ for (size_t i=0; i<myTracks.size(); i++) {
for (size_t i=0; i<myTracks.size(); i++) if (myTracks[i] == aTrack)
{ return myTracks[i];
if (myTracks[i] == aTrack) }
return myTracks[i];
}
return NULL; return NULL;
}*/ }*/
void FileMatroska::track_SetName(Track * aTrack, const std::string & aName) void FileMatroska::track_SetName(Track * aTrack, const std::string & aName)
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ aTrack->SetName(aName);
aTrack->SetName(aName); }
}
} }
void FileMatroska::track_SetLaced(Track * aTrack, bool bLaced) void FileMatroska::track_SetLaced(Track * aTrack, bool bLaced)
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ aTrack->SetLaced(bLaced);
aTrack->SetLaced(bLaced); }
}
} }
bool FileMatroska::AddFrame(Track * aTrack, const uint32 aTimecode, const binary *aFrame, const uint32 aFrameSize, bool FileMatroska::AddFrame(Track * aTrack, const uint32 aTimecode, const binary *aFrame, const uint32 aFrameSize,
bool aKeyFrame, bool aBFrame) bool aKeyFrame, bool aBFrame)
{ {
try { try {
// make sure we know that track // make sure we know that track
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ // pass the cluster to the track
// pass the cluster to the track // handle the creation of a new cluster if needed
// handle the creation of a new cluster if needed if (aTrack->AddFrame(aTimecode, aFrame, aFrameSize, aKeyFrame, aBFrame)) {
if (aTrack->AddFrame(aTimecode, aFrame, aFrameSize, aKeyFrame, aBFrame)) while (!aTrack->SerialiseBlock(myCurrWriteCluster)) {
{ /// \todo handle errors
while (!aTrack->SerialiseBlock(myCurrWriteCluster)) uint32 aNbBlock;
{ myStreamInfo.ClusterSize += myCurrWriteCluster.Render(myFile, aNbBlock);
/// \todo handle errors myStreamInfo.NumberBlock += aNbBlock;
uint32 aNbBlock; myCurrWriteCluster.Flush();
myStreamInfo.ClusterSize += myCurrWriteCluster.Render(myFile, aNbBlock); }
myStreamInfo.NumberBlock += aNbBlock; }
myCurrWriteCluster.Flush(); return true;
}
}
return true;
}
return false;
}
catch (exception & Ex)
{
throw Ex;
} }
return false;
}
catch (exception & Ex) {
throw Ex;
}
} }
void FileMatroska::Flush() void FileMatroska::Flush()
{ {
uint32 aNbBlock; uint32 aNbBlock;
myStreamInfo.ClusterSize += myCurrWriteCluster.Render(myFile,aNbBlock); myStreamInfo.ClusterSize += myCurrWriteCluster.Render(myFile,aNbBlock);
myStreamInfo.NumberBlock += aNbBlock; myStreamInfo.NumberBlock += aNbBlock;
} }
uint32 FileMatroska::ReadHead() uint32 FileMatroska::ReadHead()
{ {
try { try {
uint32 result = myMainHeader.Read(myFile, myStreamInfo); uint32 result = myMainHeader.Read(myFile, myStreamInfo);
return result; return result;
} }
catch (exception & Ex) catch (exception & Ex) {
{ throw Ex;
throw Ex; }
}
} }
uint32 FileMatroska::ReadTracks() uint32 FileMatroska::ReadTracks()
{ {
try { try {
uint32 result = 0; uint32 result = 0;
// seek to the start of the Track Entries // seek to the start of the Track Entries
myFile.setFilePointer(myStreamInfo.TrackEntryPosition); myFile.setFilePointer(myStreamInfo.TrackEntryPosition);
// get the number of Track Entries // get the number of Track Entries
uint8 TrackNumber = myStreamInfo.TrackEntriesSize / myStreamInfo.TrackEntrySize; uint8 TrackNumber = myStreamInfo.TrackEntriesSize / myStreamInfo.TrackEntrySize;
// read all the Track Entries // read all the Track Entries
myTracks.clear(); myTracks.clear();
for (uint8 TrackIdx = 0; TrackIdx<TrackNumber; TrackIdx ++) { for (uint8 TrackIdx = 0; TrackIdx<TrackNumber; TrackIdx ++) {
Track * tmpTrack = Track::ReadEntry(myFile, TrackIdx+1, myStreamInfo); Track * tmpTrack = Track::ReadEntry(myFile, TrackIdx+1, myStreamInfo);
if (tmpTrack == NULL) if (tmpTrack == NULL)
throw 0; throw 0;
myTracks.push_back(tmpTrack);
}
return result; myTracks.push_back(tmpTrack);
}
catch (exception & Ex)
{
throw Ex;
} }
return result;
}
catch (exception & Ex) {
throw Ex;
}
} }
uint32 FileMatroska::ReadCodec() uint32 FileMatroska::ReadCodec()
{ {
try { try {
// seek to the start of the Track Entries // seek to the start of the Track Entries
myFile.setFilePointer(myStreamInfo.CodecEntryPosition); myFile.setFilePointer(myStreamInfo.CodecEntryPosition);
uint32 result = CodecHeader::Read(myFile, myTracks); uint32 result = CodecHeader::Read(myFile, myTracks);
return result; return result;
} }
catch (exception & Ex) catch (exception & Ex) {
{ throw Ex;
throw Ex; }
}
} }
inline bool FileMatroska::IsMyTrack(const Track * aTrack) const inline bool FileMatroska::IsMyTrack(const Track * aTrack) const
{ {
if (aTrack == 0) if (aTrack == 0)
throw 0; throw 0;
for (std::vector<Track*>::const_iterator i = myTracks.begin(); i != myTracks.end(); i ++) for (std::vector<Track*>::const_iterator i = myTracks.begin(); i != myTracks.end(); ++i) {
{ if (*i == aTrack)
if (*i == aTrack) break;
break; }
}
if (i != myTracks.end()) if (i != myTracks.end())
return true; return true;
else else
return false; return false;
} }
void FileMatroska::SelectReadingTrack(Track * aTrack, bool select) void FileMatroska::SelectReadingTrack(Track * aTrack, bool select)
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ // here we have the right track
// here we have the right track // check if it's not already selected
// check if it's not already selected for (std::vector<uint8>::iterator j = mySelectedTracks.begin(); j != mySelectedTracks.end(); ++j) {
for (std::vector<uint8>::iterator j = mySelectedTracks.begin(); if (*j == aTrack->TrackNumber())
j != mySelectedTracks.end(); j ++) break;
{
if (*j == aTrack->TrackNumber())
break;
}
if (select && j == mySelectedTracks.end())
mySelectedTracks.push_back(aTrack->TrackNumber());
else if (!select && j != mySelectedTracks.end())
mySelectedTracks.erase(j);
std::sort(mySelectedTracks.begin(), mySelectedTracks.end());
} }
if (select && j == mySelectedTracks.end())
mySelectedTracks.push_back(aTrack->TrackNumber());
else if (!select && j != mySelectedTracks.end())
mySelectedTracks.erase(j);
std::sort(mySelectedTracks.begin(), mySelectedTracks.end());
}
} }
inline bool FileMatroska::IsReadingTrack(const uint8 aTrackNumber) const inline bool FileMatroska::IsReadingTrack(const uint8 aTrackNumber) const
{ {
for (std::vector<uint8>::const_iterator trackIdx = mySelectedTracks.begin(); for (std::vector<uint8>::const_iterator trackIdx = mySelectedTracks.begin();
trackIdx != mySelectedTracks.end() && *trackIdx < aTrackNumber; trackIdx != mySelectedTracks.end() && *trackIdx < aTrackNumber;
trackIdx++) ++trackIdx) {}
{}
if (trackIdx == mySelectedTracks.end()) if (trackIdx == mySelectedTracks.end())
return false; return false;
else else
return true; return true;
} }
// //
void FileMatroska::Track_GetInfo(const Track * aTrack, TrackInfo & aTrackInfo) const void FileMatroska::Track_GetInfo(const Track * aTrack, TrackInfo & aTrackInfo) const
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ aTrack->GetInfo(aTrackInfo);
aTrack->GetInfo(aTrackInfo); }
}
} }
// Audio related getters/setters // Audio related getters/setters
void FileMatroska::Track_GetInfo_Audio(const Track * aTrack, TrackInfoAudio & aTrackInfo) const void FileMatroska::Track_GetInfo_Audio(const Track * aTrack, TrackInfoAudio & aTrackInfo) const
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ aTrack->GetInfoAudio(aTrackInfo);
aTrack->GetInfoAudio(aTrackInfo); }
}
} }
void FileMatroska::Track_SetInfo_Audio(Track * aTrack, const TrackInfoAudio & aTrackInfo) void FileMatroska::Track_SetInfo_Audio(Track * aTrack, const TrackInfoAudio & aTrackInfo)
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ aTrack->SetInfoAudio(aTrackInfo);
aTrack->SetInfoAudio(aTrackInfo); }
}
} }
// Video related getters/setters // Video related getters/setters
void FileMatroska::Track_GetInfo_Video(const Track * aTrack, TrackInfoVideo & aTrackInfo) const void FileMatroska::Track_GetInfo_Video(const Track * aTrack, TrackInfoVideo & aTrackInfo) const
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ aTrack->GetInfoVideo(aTrackInfo);
aTrack->GetInfoVideo(aTrackInfo); }
}
} }
void FileMatroska::Track_SetInfo_Video(Track * aTrack, const TrackInfoVideo & aTrackInfo) void FileMatroska::Track_SetInfo_Video(Track * aTrack, const TrackInfoVideo & aTrackInfo)
{ {
if (IsMyTrack(aTrack)) if (IsMyTrack(aTrack)) {
{ aTrack->SetInfoVideo(aTrackInfo);
aTrack->SetInfoVideo(aTrackInfo); }
}
} }
/*! /*!
\todo exit when there is no Block left \todo exit when there is no Block left
*/ */
bool FileMatroska::ReadFrame(Track * & aTrack, uint32 & aTimecode, const binary * & aFrame, uint32 & aFrameSize, bool FileMatroska::ReadFrame(Track * & aTrack, uint32 & aTimecode, const binary * & aFrame, uint32 & aFrameSize,
bool & aKeyFrame, bool & aBFrame) bool & aKeyFrame, bool & aBFrame)
{ {
if (myCurrReadBlockTrack == 0) if (myCurrReadBlockTrack == 0) {
{ do {
do { if (myReadBlockNumber >= myStreamInfo.NumberBlock) {
if (myReadBlockNumber >= myStreamInfo.NumberBlock) // myReadBlockNumber = myStreamInfo.NumberBlock;
{ return false;
// myReadBlockNumber = myStreamInfo.NumberBlock; }
return false;
}
// get the next frame in the file // get the next frame in the file
if (!myCurrReadCluster.BlockLeft()) if (!myCurrReadCluster.BlockLeft()) {
{ myCurrReadCluster.Flush();
myCurrReadCluster.Flush(); try {
try { myCurrReadCluster.FindHead(myFile);
myCurrReadCluster.FindHead(myFile); }
} catch (exception & Ex) {
catch (exception & Ex) return false;
{ }
return false; }
}
}
myCurrReadCluster.GetBlock( myCurrReadBlock, myCurrReadBlockSize, myCurrReadBlockTrack ); myCurrReadCluster.GetBlock( myCurrReadBlock, myCurrReadBlockSize, myCurrReadBlockTrack );
myReadBlockNumber++; myReadBlockNumber++;
} while (!IsReadingTrack(myCurrReadBlockTrack)); } while (!IsReadingTrack(myCurrReadBlockTrack));
// get the track associated (normally from myTracks) // get the track associated (normally from myTracks)
aTrack = myTracks[myCurrReadBlockTrack-1]; aTrack = myTracks[myCurrReadBlockTrack-1];
// get the next frame from the current block // get the next frame from the current block
aTrack->HandleBlock(myCurrReadBlock, myCurrReadBlockSize); aTrack->HandleBlock(myCurrReadBlock, myCurrReadBlockSize);
} } else {
else // get the track associated (normally from myTracks)
{ aTrack = myTracks[myCurrReadBlockTrack-1];
// get the track associated (normally from myTracks) }
aTrack = myTracks[myCurrReadBlockTrack-1];
}
Frame * myReadFrame;
aTrack->GetNextFrame(aTimecode, myReadFrame, aKeyFrame, aBFrame);
aFrame = myReadFrame->buf();
aFrameSize = myReadFrame->length();
if (aTrack->NoFrameLeft()) Frame * myReadFrame;
{ aTrack->GetNextFrame(aTimecode, myReadFrame, aKeyFrame, aBFrame);
aTrack->FlushBlock(); aFrame = myReadFrame->buf();
myCurrReadBlockTrack = 0; aFrameSize = myReadFrame->length();
}
return true; if (aTrack->NoFrameLeft()) {
aTrack->FlushBlock();
myCurrReadBlockTrack = 0;
}
return true;
} }
#endif // OLD #endif // OLD
@ -453,13 +419,13 @@ END_LIBMATROSKA_NAMESPACE
void matroska_init() void matroska_init()
{ {
#if defined(HAVE_EBML2) || defined(HAS_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
ebml_init(); ebml_init();
#endif #endif
} }
void matroska_done() void matroska_done()
{ {
#if defined(HAVE_EBML2) || defined(HAS_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
ebml_done(); ebml_done();
#endif #endif
} }

View File

@ -11,26 +11,26 @@
** 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/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
@ -43,9 +43,9 @@ using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
KaxAttached::KaxAttached(EBML_EXTRA_DEF) KaxAttached::KaxAttached(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxAttached) EBML_DEF_SEP EBML_EXTRA_CALL) :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) SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -11,26 +11,26 @@
** 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/KaxContexts.h" #include "matroska/KaxContexts.h"
#include "matroska/KaxDefines.h" #include "matroska/KaxDefines.h"
@ -42,9 +42,9 @@ using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
KaxAttachments::KaxAttachments(EBML_EXTRA_DEF) KaxAttachments::KaxAttachments(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxAttachments) EBML_DEF_SEP EBML_EXTRA_CALL) :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) SetSizeLength(2); // mandatory min size support (for easier updating) (2^(7*2)-2 = 16Ko)
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

File diff suppressed because it is too large Load Diff

View File

@ -9,26 +9,26 @@
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** version 2.1 of the License, or (at your option) any later version.
** **
** This library is distributed in the hope that it will be useful, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxBlockData.cpp 1226 2005-10-13 21:16:43Z robux4 $ \version \$Id: KaxBlockData.cpp 1226 2005-10-13 21:16:43Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include <cassert> #include <cassert>
@ -44,71 +44,71 @@ START_LIBMATROSKA_NAMESPACE
const KaxBlockBlob & KaxReferenceBlock::RefBlock() const const KaxBlockBlob & KaxReferenceBlock::RefBlock() const
{ {
assert(RefdBlock != NULL); assert(RefdBlock != NULL);
return *RefdBlock; return *RefdBlock;
} }
KaxReferenceBlock::KaxReferenceBlock(EBML_EXTRA_DEF) 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) ,bTimecodeSet(false)
,bOurBlob(false) ,bOurBlob(false)
{ {
bTimecodeSet = false; bTimecodeSet = false;
} }
KaxReferenceBlock::KaxReferenceBlock(const KaxReferenceBlock & ElementToClone) KaxReferenceBlock::KaxReferenceBlock(const KaxReferenceBlock & ElementToClone)
:EbmlSInteger(ElementToClone) :EbmlSInteger(ElementToClone)
,RefdBlock(NULL) ,RefdBlock(NULL)
,ParentBlock(NULL) ,ParentBlock(NULL)
,bTimecodeSet(ElementToClone.bTimecodeSet) ,bTimecodeSet(ElementToClone.bTimecodeSet)
,bOurBlob(false) ,bOurBlob(false)
{ {
} }
KaxReferenceBlock::~KaxReferenceBlock() KaxReferenceBlock::~KaxReferenceBlock()
{ {
FreeBlob(); FreeBlob();
} }
void KaxReferenceBlock::FreeBlob() void KaxReferenceBlock::FreeBlob()
{ {
if (bOurBlob && RefdBlock!=NULL) if (bOurBlob && RefdBlock!=NULL)
delete RefdBlock; delete RefdBlock;
RefdBlock = NULL; RefdBlock = NULL;
} }
filepos_t KaxReferenceBlock::UpdateSize(bool bSaveDefault, bool bForceRender) filepos_t KaxReferenceBlock::UpdateSize(bool bSaveDefault, bool bForceRender)
{ {
if (!bTimecodeSet) { if (!bTimecodeSet) {
assert(RefdBlock != NULL); assert(RefdBlock != NULL);
assert(ParentBlock != NULL); assert(ParentBlock != NULL);
const KaxInternalBlock &block = *RefdBlock; const KaxInternalBlock &block = *RefdBlock;
*static_cast<EbmlSInteger*>(this) = (int64(block.GlobalTimecode()) - int64(ParentBlock->GlobalTimecode())) / int64(ParentBlock->GlobalTimecodeScale()); *static_cast<EbmlSInteger*>(this) = (int64(block.GlobalTimecode()) - int64(ParentBlock->GlobalTimecode())) / int64(ParentBlock->GlobalTimecodeScale());
} }
return EbmlSInteger::UpdateSize(bSaveDefault, bForceRender); return EbmlSInteger::UpdateSize(bSaveDefault, bForceRender);
} }
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockBlob * aRefdBlock) void KaxReferenceBlock::SetReferencedBlock(const KaxBlockBlob * aRefdBlock)
{ {
assert(RefdBlock == NULL); assert(RefdBlock == NULL);
assert(aRefdBlock != NULL); assert(aRefdBlock != NULL);
FreeBlob(); FreeBlob();
RefdBlock = aRefdBlock; RefdBlock = aRefdBlock;
bOurBlob = true; bOurBlob = true;
SetValueIsSet(); SetValueIsSet();
} }
void KaxReferenceBlock::SetReferencedBlock(const KaxBlockGroup & aRefdBlock) void KaxReferenceBlock::SetReferencedBlock(const KaxBlockGroup & aRefdBlock)
{ {
FreeBlob(); FreeBlob();
KaxBlockBlob *block_blob = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE); KaxBlockBlob *block_blob = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
block_blob->SetBlockGroup(*const_cast<KaxBlockGroup*>(&aRefdBlock)); block_blob->SetBlockGroup(*const_cast<KaxBlockGroup*>(&aRefdBlock));
RefdBlock = block_blob; RefdBlock = block_blob;
bOurBlob = true; bOurBlob = true;
SetValueIsSet(); SetValueIsSet();
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -9,26 +9,26 @@
** 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/KaxBlock.h" #include "matroska/KaxBlock.h"
@ -40,281 +40,267 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
KaxCluster::KaxCluster(EBML_EXTRA_DEF) KaxCluster::KaxCluster(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxCluster) EBML_DEF_SEP EBML_EXTRA_CALL) :EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxCluster) EBML_DEF_SEP EBML_EXTRA_CALL)
,currentNewBlock(NULL) ,currentNewBlock(NULL)
,ParentSegment(NULL) ,ParentSegment(NULL)
,bFirstFrameInside(false) ,bFirstFrameInside(false)
,bPreviousTimecodeIsSet(false) ,bPreviousTimecodeIsSet(false)
,bTimecodeScaleIsSet(false) ,bTimecodeScaleIsSet(false)
,bSilentTracksUsed(false) ,bSilentTracksUsed(false)
{} {}
KaxCluster::KaxCluster(const KaxCluster & ElementToClone) KaxCluster::KaxCluster(const KaxCluster & ElementToClone)
:EbmlMaster(ElementToClone) :EbmlMaster(ElementToClone)
,bSilentTracksUsed(ElementToClone.bSilentTracksUsed) ,bSilentTracksUsed(ElementToClone.bSilentTracksUsed)
{ {
// update the parent of each children // update the parent of each children
EBML_MASTER_ITERATOR Itr = begin(); EBML_MASTER_ITERATOR Itr = begin();
while (Itr != end()) while (Itr != end()) {
{ if (EbmlId(**Itr) == EBML_ID(KaxBlockGroup)) {
if (EbmlId(**Itr) == EBML_ID(KaxBlockGroup)) { static_cast<KaxBlockGroup *>(*Itr)->SetParent(*this);
static_cast<KaxBlockGroup *>(*Itr)->SetParent(*this); } else if (EbmlId(**Itr) == EBML_ID(KaxBlock)) {
} else if (EbmlId(**Itr) == EBML_ID(KaxBlock)) { static_cast<KaxBlock *>(*Itr)->SetParent(*this);
static_cast<KaxBlock *>(*Itr)->SetParent(*this);
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
} else if (EbmlId(**Itr) == EBML_ID(KaxBlockVirtual)) { } else if (EbmlId(**Itr) == EBML_ID(KaxBlockVirtual)) {
static_cast<KaxBlockVirtual *>(*Itr)->SetParent(*this); static_cast<KaxBlockVirtual *>(*Itr)->SetParent(*this);
#endif // MATROSKA_VERSION #endif // MATROSKA_VERSION
} }
++Itr; ++Itr;
} }
} }
bool KaxCluster::AddBlockBlob(KaxBlockBlob * NewBlob) bool KaxCluster::AddBlockBlob(KaxBlockBlob * NewBlob)
{ {
Blobs.push_back(NewBlob); Blobs.push_back(NewBlob);
return true; return true;
} }
bool KaxCluster::AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing) bool KaxCluster::AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing)
{ {
if (!bFirstFrameInside) { if (!bFirstFrameInside) {
bFirstFrameInside = true; bFirstFrameInside = true;
MinTimecode = MaxTimecode = timecode; MinTimecode = MaxTimecode = timecode;
} else { } else {
if (timecode < MinTimecode) if (timecode < MinTimecode)
MinTimecode = timecode; MinTimecode = timecode;
if (timecode > MaxTimecode) if (timecode > MaxTimecode)
MaxTimecode = timecode; MaxTimecode = timecode;
} }
MyNewBlock = NULL; MyNewBlock = NULL;
if (lacing == LACING_NONE || !track.LacingEnabled()) { if (lacing == LACING_NONE || !track.LacingEnabled()) {
currentNewBlock = NULL; currentNewBlock = NULL;
} }
// force creation of a new block // force creation of a new block
if (currentNewBlock == NULL || uint32(track.TrackNumber()) != uint32(currentNewBlock->TrackNumber()) || PastBlock != NULL || ForwBlock != NULL) { if (currentNewBlock == NULL || uint32(track.TrackNumber()) != uint32(currentNewBlock->TrackNumber()) || PastBlock != NULL || ForwBlock != NULL) {
KaxBlockGroup & aNewBlock = GetNewBlock(); KaxBlockGroup & aNewBlock = GetNewBlock();
MyNewBlock = currentNewBlock = &aNewBlock; MyNewBlock = currentNewBlock = &aNewBlock;
currentNewBlock = &aNewBlock; }
}
if (PastBlock != NULL) { if (PastBlock != NULL) {
if (ForwBlock != NULL) { if (ForwBlock != NULL) {
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, *ForwBlock, lacing)) { if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, *ForwBlock, lacing)) {
// more data are allowed in this Block // more data are allowed in this Block
return true; return true;
} else { } else {
currentNewBlock = NULL; currentNewBlock = NULL;
return false; return false;
} }
} else { } else {
if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, lacing)) { if (currentNewBlock->AddFrame(track, timecode, buffer, *PastBlock, lacing)) {
// more data are allowed in this Block // more data are allowed in this Block
return true; return true;
} else { } else {
currentNewBlock = NULL; currentNewBlock = NULL;
return false; return false;
} }
} }
} else { } else {
if (currentNewBlock->AddFrame(track, timecode, buffer, lacing)) { if (currentNewBlock->AddFrame(track, timecode, buffer, lacing)) {
// more data are allowed in this Block // more data are allowed in this Block
return true; return true;
} else { } else {
currentNewBlock = NULL; currentNewBlock = NULL;
return false; return false;
} }
} }
} }
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, 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 assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, NULL, NULL, lacing); return AddFrameInternal(track, timecode, buffer, MyNewBlock, NULL, NULL, lacing);
} }
bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing) bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup & PastBlock, LacingType lacing)
{ {
assert(Blobs.size() == 0); // mutually exclusive for the moment assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, NULL, lacing); 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, const KaxBlockGroup & PastBlock, const KaxBlockGroup & ForwBlock, LacingType lacing)
{ {
assert(Blobs.size() == 0); // mutually exclusive for the moment assert(Blobs.size() == 0); // mutually exclusive for the moment
return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, &ForwBlock, lacing); return AddFrameInternal(track, timecode, buffer, MyNewBlock, &PastBlock, &ForwBlock, lacing);
} }
/*! /*!
\todo only put the Blocks written in the cue entries \todo only put the Blocks written in the cue entries
*/ */
filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault) filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault)
{ {
filepos_t Result = 0; filepos_t Result = 0;
size_t Index; size_t Index;
EBML_MASTER_ITERATOR TrkItr, Itr; EBML_MASTER_ITERATOR TrkItr, Itr;
// update the Timecode of the Cluster before writing // update the Timecode of the Cluster before writing
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode))); KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
*static_cast<EbmlUInteger *>(Timecode) = GlobalTimecode() / GlobalTimecodeScale(); *static_cast<EbmlUInteger *>(Timecode) = GlobalTimecode() / GlobalTimecodeScale();
if (Blobs.size() == 0) { if (Blobs.size() == 0) {
// old-school direct KaxBlockGroup // old-school direct KaxBlockGroup
// SilentTracks handling // SilentTracks handling
// check the parent cluster for existing tracks and see if they are contained in this cluster or not // check the parent cluster for existing tracks and see if they are contained in this cluster or not
if (bSilentTracksUsed) if (bSilentTracksUsed) {
{ KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks))); for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr) {
for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr) if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry)) {
{ KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr);
if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry)) uint32 tracknum = entry.TrackNumber();
{ for (Itr = begin(); Itr != end(); ++Itr) {
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr); if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {
uint32 tracknum = entry.TrackNumber(); KaxBlockGroup & group = *static_cast<KaxBlockGroup *>(*Itr);
for (Itr = begin(); Itr != end(); ++Itr) if (group.TrackNumber() == tracknum)
{ break; // this track is used
if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) { }
KaxBlockGroup & group = *static_cast<KaxBlockGroup *>(*Itr); }
if (group.TrackNumber() == tracknum) // the track wasn't found in this cluster
break; // this track is used if (Itr == end()) {
} KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
} assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
// the track wasn't found in this cluster KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
if (Itr == end()) *static_cast<EbmlUInteger *>(trackelt) = tracknum;
{ }
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))); }
*static_cast<EbmlUInteger *>(trackelt) = tracknum;
}
}
}
}
Result = EbmlMaster::Render(output, bSaveDefault); Result = EbmlMaster::Render(output, bSaveDefault);
// For all Blocks add their position on the CueEntry // For all Blocks add their position on the CueEntry
for (Itr = begin(); Itr != end(); ++Itr) for (Itr = begin(); Itr != end(); ++Itr) {
{ if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {
if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) { CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>(*Itr));
CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>(*Itr)); }
} }
} } else {
} else { // new school, using KaxBlockBlob
// new school, using KaxBlockBlob for (Index = 0; Index<Blobs.size(); Index++) {
for (Index = 0; Index<Blobs.size(); Index++)
{
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
if (Blobs[Index]->IsSimpleBlock()) if (Blobs[Index]->IsSimpleBlock())
PushElement( (KaxSimpleBlock&) *Blobs[Index] ); PushElement( (KaxSimpleBlock&) *Blobs[Index] );
else else
#endif #endif
PushElement( (KaxBlockGroup&) *Blobs[Index] ); PushElement( (KaxBlockGroup&) *Blobs[Index] );
} }
// SilentTracks handling // SilentTracks handling
// check the parent cluster for existing tracks and see if they are contained in this cluster or not // check the parent cluster for existing tracks and see if they are contained in this cluster or not
if (bSilentTracksUsed) if (bSilentTracksUsed) {
{ KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));
KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks))); for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr) {
for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr) if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry)) {
{ KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr);
if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry)) uint32 tracknum = entry.TrackNumber();
{ for (Index = 0; Index<Blobs.size(); Index++) {
KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr); if (((KaxInternalBlock&)*Blobs[Index]).TrackNum() == tracknum)
uint32 tracknum = entry.TrackNumber(); break; // this track is used
for (Index = 0; Index<Blobs.size(); Index++) { }
if (((KaxInternalBlock&)*Blobs[Index]).TrackNum() == tracknum) // the track wasn't found in this cluster
break; // this track is used if (Index == ListSize()) {
} KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));
// the track wasn't found in this cluster assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster
if (Index == ListSize()) KaxClusterSilentTrackNumber * trackelt = static_cast<KaxClusterSilentTrackNumber *>(SilentTracks->AddNewElt(EBML_INFO(KaxClusterSilentTrackNumber)));
{ *static_cast<EbmlUInteger *>(trackelt) = tracknum;
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))); }
*static_cast<EbmlUInteger *>(trackelt) = tracknum; }
}
}
}
}
Result = EbmlMaster::Render(output, bSaveDefault); Result = EbmlMaster::Render(output, bSaveDefault);
// For all Blocks add their position on the CueEntry // For all Blocks add their position on the CueEntry
for (Index = 0; Index<Blobs.size(); Index++) { for (Index = 0; Index<Blobs.size(); Index++) {
CueToUpdate.PositionSet(*Blobs[Index]); CueToUpdate.PositionSet(*Blobs[Index]);
} }
Blobs.clear(); Blobs.clear();
} }
return Result; return Result;
} }
/*! /*!
\todo automatically choose valid timecode for the Cluster based on the previous cluster timecode (must be incremental) \todo automatically choose valid timecode for the Cluster based on the previous cluster timecode (must be incremental)
*/ */
uint64 KaxCluster::GlobalTimecode() const uint64 KaxCluster::GlobalTimecode() const
{ {
assert(bPreviousTimecodeIsSet); assert(bPreviousTimecodeIsSet);
uint64 result = MinTimecode; uint64 result = MinTimecode;
if (result < PreviousTimecode) if (result < PreviousTimecode)
result = PreviousTimecode + 1; result = PreviousTimecode + 1;
return result; return result;
} }
/*! /*!
\brief retrieve the relative \brief retrieve the relative
\todo !!! We need a way to know the TimecodeScale \todo !!! We need a way to know the TimecodeScale
*/ */
int16 KaxCluster::GetBlockLocalTimecode(uint64 aGlobalTimecode) const int16 KaxCluster::GetBlockLocalTimecode(uint64 aGlobalTimecode) const
{ {
int64 TimecodeDelay = (int64(aGlobalTimecode) - int64(GlobalTimecode())) / int64(GlobalTimecodeScale()); int64 TimecodeDelay = (int64(aGlobalTimecode) - int64(GlobalTimecode())) / int64(GlobalTimecodeScale());
assert(TimecodeDelay >= int16(0x8000) && TimecodeDelay <= int16(0x7FFF)); assert(TimecodeDelay >= int16(0x8000) && TimecodeDelay <= int16(0x7FFF));
return int16(TimecodeDelay); return int16(TimecodeDelay);
} }
uint64 KaxCluster::GetBlockGlobalTimecode(int16 GlobalSavedTimecode) uint64 KaxCluster::GetBlockGlobalTimecode(int16 GlobalSavedTimecode)
{ {
if (!bFirstFrameInside) { if (!bFirstFrameInside) {
KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode))); KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));
assert (bFirstFrameInside); // use the InitTimecode() hack for now assert (bFirstFrameInside); // use the InitTimecode() hack for now
MinTimecode = MaxTimecode = PreviousTimecode = *static_cast<EbmlUInteger *>(Timecode); MinTimecode = MaxTimecode = PreviousTimecode = *static_cast<EbmlUInteger *>(Timecode);
bFirstFrameInside = true; bFirstFrameInside = true;
bPreviousTimecodeIsSet = true; bPreviousTimecodeIsSet = true;
} }
return int64(GlobalSavedTimecode * GlobalTimecodeScale()) + GlobalTimecode(); return int64(GlobalSavedTimecode * GlobalTimecodeScale()) + GlobalTimecode();
} }
KaxBlockGroup & KaxCluster::GetNewBlock() KaxBlockGroup & KaxCluster::GetNewBlock()
{ {
KaxBlockGroup & MyBlock = AddNewChild<KaxBlockGroup>(*this); KaxBlockGroup & MyBlock = AddNewChild<KaxBlockGroup>(*this);
MyBlock.SetParent(*this); MyBlock.SetParent(*this);
return MyBlock; return MyBlock;
} }
void KaxCluster::ReleaseFrames() void KaxCluster::ReleaseFrames()
{ {
EBML_MASTER_ITERATOR Itr; EBML_MASTER_ITERATOR Itr;
for (Itr = begin(); Itr != end(); ++Itr) for (Itr = begin(); Itr != end(); ++Itr) {
{ if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {
if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) { static_cast<KaxBlockGroup*>(*Itr)->ReleaseFrames();
static_cast<KaxBlockGroup*>(*Itr)->ReleaseFrames(); }
} }
}
} }
uint64 KaxCluster::GetPosition() const uint64 KaxCluster::GetPosition() const
{ {
assert(ParentSegment != NULL); assert(ParentSegment != NULL);
return ParentSegment->GetRelativePosition(*this); return ParentSegment->GetRelativePosition(*this);
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -11,26 +11,26 @@
** 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 "ebml/EbmlHead.h" #include "ebml/EbmlHead.h"
@ -61,7 +61,7 @@ DEFINE_SEMANTIC_CONTEXT(KaxTrackEntry)
// for the moment // for the moment
const EbmlSemanticContext & GetKaxGlobal_Context() const EbmlSemanticContext & GetKaxGlobal_Context()
{ {
return GetEbmlGlobal_Context(); return GetEbmlGlobal_Context();
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -9,26 +9,26 @@
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** version 2.1 of the License, or (at your option) any later version.
** **
** This library is distributed in the hope that it will be useful, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxCues.cpp 1265 2007-01-14 17:20:35Z mosu $ \version \$Id: KaxCues.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>
@ -44,119 +44,116 @@ START_LIBMATROSKA_NAMESPACE
KaxCues::~KaxCues() KaxCues::~KaxCues()
{ {
assert(myTempReferences.size() == 0); // otherwise that means you have added references and forgot to set the position assert(myTempReferences.size() == 0); // otherwise that means you have added references and forgot to set the position
} }
/* deprecated and wrong /* deprecated and wrong
bool KaxCues::AddBlockGroup(const KaxBlockGroup & BlockRef) bool KaxCues::AddBlockGroup(const KaxBlockGroup & BlockRef)
{ {
// Do not add the element if it's already present. // Do not add the element if it's already present.
std::vector<const KaxBlockBlob *>::iterator ListIdx; std::vector<const KaxBlockBlob *>::iterator ListIdx;
KaxBlockBlob *BlockReference = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE); KaxBlockBlob *BlockReference = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
BlockReference->SetBlockGroup(*const_cast<KaxBlockGroup*>(&BlockRef)); BlockReference->SetBlockGroup(*const_cast<KaxBlockGroup*>(&BlockRef));
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++)
if (&(KaxBlockGroup&)*ListIdx == &BlockRef) if (&(KaxBlockGroup&)*ListIdx == &BlockRef) {
{ delete BlockReference;
delete BlockReference; return true;
return true; }
}
myTempReferences.push_back(BlockReference); myTempReferences.push_back(BlockReference);
return true; return true;
} }
*/ */
bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference) bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference)
{ {
// Do not add the element if it's already present. // Do not add the element if it's already present.
std::vector<const KaxBlockBlob *>::iterator ListIdx; std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ++ListIdx)
if (*ListIdx == &BlockReference) if (*ListIdx == &BlockReference)
return true; return true;
myTempReferences.push_back(&BlockReference); myTempReferences.push_back(&BlockReference);
return true; return true;
} }
void KaxCues::PositionSet(const KaxBlockBlob & BlockReference) void KaxCues::PositionSet(const KaxBlockBlob & BlockReference)
{ {
// look for the element in the temporary references // look for the element in the temporary references
std::vector<const KaxBlockBlob *>::iterator ListIdx; std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) { for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ++ListIdx) {
if (*ListIdx == &BlockReference) { if (*ListIdx == &BlockReference) {
// found, now add the element to the entry list // found, now add the element to the entry list
KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this); KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this);
NewPoint.PositionSet(BlockReference, GlobalTimecodeScale()); NewPoint.PositionSet(BlockReference, GlobalTimecodeScale());
myTempReferences.erase(ListIdx); myTempReferences.erase(ListIdx);
break; break;
} }
} }
} }
void KaxCues::PositionSet(const KaxBlockGroup & BlockRef) void KaxCues::PositionSet(const KaxBlockGroup & BlockRef)
{ {
// look for the element in the temporary references // look for the element in the temporary references
std::vector<const KaxBlockBlob *>::iterator ListIdx; std::vector<const KaxBlockBlob *>::iterator ListIdx;
for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ListIdx++) { for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ++ListIdx) {
const KaxInternalBlock &refTmp = **ListIdx; const KaxInternalBlock &refTmp = **ListIdx;
if (refTmp.GlobalTimecode() == BlockRef.GlobalTimecode() && if (refTmp.GlobalTimecode() == BlockRef.GlobalTimecode() &&
refTmp.TrackNum() == BlockRef.TrackNumber()) { refTmp.TrackNum() == BlockRef.TrackNumber()) {
// found, now add the element to the entry list // found, now add the element to the entry list
KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this); KaxCuePoint & NewPoint = AddNewChild<KaxCuePoint>(*this);
NewPoint.PositionSet(**ListIdx, GlobalTimecodeScale()); NewPoint.PositionSet(**ListIdx, GlobalTimecodeScale());
myTempReferences.erase(ListIdx); myTempReferences.erase(ListIdx);
break; break;
} }
} }
} }
/*! /*!
\warning Assume that the list has been sorted (Sort()) \warning Assume that the list has been sorted (Sort())
*/ */
const KaxCuePoint * KaxCues::GetTimecodePoint(uint64 aTimecode) const 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;
uint64 aNextTime = EBML_PRETTYLONGINT(0xFFFFFFFFFFFF); uint64 aNextTime = EBML_PRETTYLONGINT(0xFFFFFFFFFFFF);
EBML_MASTER_CONST_ITERATOR Itr; EBML_MASTER_CONST_ITERATOR Itr;
for (Itr = begin(); Itr != end(); ++Itr) for (Itr = begin(); Itr != end(); ++Itr) {
{ if (EbmlId(*(*Itr)) == EBML_ID(KaxCuePoint)) {
if (EbmlId(*(*Itr)) == EBML_ID(KaxCuePoint)) { const KaxCuePoint *tmp = static_cast<const KaxCuePoint *>(*Itr);
const KaxCuePoint *tmp = static_cast<const KaxCuePoint *>(*Itr); // check the tile
// check the tile const KaxCueTime *aTime = static_cast<const KaxCueTime *>(tmp->FindFirstElt(EBML_INFO(KaxCueTime)));
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(tmp->FindFirstElt(EBML_INFO(KaxCueTime))); if (aTime != NULL) {
if (aTime != NULL) uint64 _Time = uint64(*aTime);
{ if (_Time > aPrevTime && _Time < TimecodeToLocate) {
uint64 _Time = uint64(*aTime); aPrevTime = _Time;
if (_Time > aPrevTime && _Time < TimecodeToLocate) { aPointPrev = tmp;
aPrevTime = _Time; }
aPointPrev = tmp; if (_Time < aNextTime && _Time > TimecodeToLocate) {
} aNextTime= _Time;
if (_Time < aNextTime && _Time > TimecodeToLocate) { }
aNextTime= _Time; }
} }
} }
}
}
return aPointPrev; return aPointPrev;
} }
uint64 KaxCues::GetTimecodePosition(uint64 aTimecode) const uint64 KaxCues::GetTimecodePosition(uint64 aTimecode) const
{ {
const KaxCuePoint * aPoint = GetTimecodePoint(aTimecode); const KaxCuePoint * aPoint = GetTimecodePoint(aTimecode);
if (aPoint == NULL) if (aPoint == NULL)
return 0; return 0;
const KaxCueTrackPositions * aTrack = aPoint->GetSeekPosition(); const KaxCueTrackPositions * aTrack = aPoint->GetSeekPosition();
if (aTrack == NULL) if (aTrack == NULL)
return 0; return 0;
return aTrack->ClusterPosition(); return aTrack->ClusterPosition();
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -9,26 +9,26 @@
** 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>
@ -44,197 +44,193 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
/*! /*!
\todo handle codec state checking \todo handle codec state checking
\todo remove duplicate references (reference to 2 frames that each reference the same frame) \todo remove duplicate references (reference to 2 frames that each reference the same frame)
*/ */
void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale) void KaxCuePoint::PositionSet(const KaxBlockGroup & BlockReference, uint64 GlobalTimecodeScale)
{ {
// fill me // fill me
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this); KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale; *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this); KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions); KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber(); *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNumber();
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions); KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition(); *static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
// handle reference use // handle reference use
if (BlockReference.ReferenceCount() != 0) if (BlockReference.ReferenceCount() != 0) {
{ unsigned int i;
unsigned int i; for (i=0; i<BlockReference.ReferenceCount(); i++) {
for (i=0; i<BlockReference.ReferenceCount(); i++) { KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions); NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale); }
} }
}
KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState))); KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockReference.FindFirstElt(EBML_INFO(KaxCodecState)));
if (CodecState != NULL) { if (CodecState != NULL) {
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions); KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition()); *static_cast<EbmlUInteger*>(&CueCodecState) = BlockReference.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
} }
#endif // MATROSKA_VERSION #endif // MATROSKA_VERSION
SetValueIsSet(); SetValueIsSet();
} }
void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale) void KaxCuePoint::PositionSet(const KaxBlockBlob & BlobReference, uint64 GlobalTimecodeScale)
{ {
const KaxInternalBlock &BlockReference = BlobReference; const KaxInternalBlock &BlockReference = BlobReference;
// fill me // fill me
KaxCueTime & NewTime = GetChild<KaxCueTime>(*this); KaxCueTime & NewTime = GetChild<KaxCueTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale; *static_cast<EbmlUInteger*>(&NewTime) = BlockReference.GlobalTimecode() / GlobalTimecodeScale;
KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this); KaxCueTrackPositions & NewPositions = AddNewChild<KaxCueTrackPositions>(*this);
KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions); KaxCueTrack & TheTrack = GetChild<KaxCueTrack>(NewPositions);
*static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum(); *static_cast<EbmlUInteger*>(&TheTrack) = BlockReference.TrackNum();
KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions); KaxCueClusterPosition & TheClustPos = GetChild<KaxCueClusterPosition>(NewPositions);
*static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition(); *static_cast<EbmlUInteger*>(&TheClustPos) = BlockReference.ClusterPosition();
#if 0 // MATROSKA_VERSION >= 2 #if 0 // MATROSKA_VERSION >= 2
// handle reference use // handle reference use
if (BlockReference.ReferenceCount() != 0) if (BlockReference.ReferenceCount() != 0) {
{ unsigned int i;
unsigned int i; for (i=0; i<BlockReference.ReferenceCount(); i++) {
for (i=0; i<BlockReference.ReferenceCount(); i++) { KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions);
KaxCueReference & NewRefs = AddNewChild<KaxCueReference>(NewPositions); NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale);
NewRefs.AddReference(BlockReference.Reference(i).RefBlock(), GlobalTimecodeScale); }
} }
}
#endif // MATROSKA_VERSION #endif // MATROSKA_VERSION
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
if (!BlobReference.IsSimpleBlock()) { if (!BlobReference.IsSimpleBlock()) {
const KaxBlockGroup &BlockGroup = BlobReference; const KaxBlockGroup &BlockGroup = BlobReference;
const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState))); const KaxCodecState *CodecState = static_cast<KaxCodecState *>(BlockGroup.FindFirstElt(EBML_INFO(KaxCodecState)));
if (CodecState != NULL) { if (CodecState != NULL) {
KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions); KaxCueCodecState &CueCodecState = AddNewChild<KaxCueCodecState>(NewPositions);
*static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition()); *static_cast<EbmlUInteger*>(&CueCodecState) = BlockGroup.GetParentCluster()->GetParentSegment()->GetRelativePosition(CodecState->GetElementPosition());
} }
} }
#endif // MATROSKA_VERSION #endif // MATROSKA_VERSION
SetValueIsSet(); SetValueIsSet();
} }
#if MATROSKA_VERSION >= 2 #if MATROSKA_VERSION >= 2
/*! /*!
\todo handle codec state checking \todo handle codec state checking
*/ */
void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale) void KaxCueReference::AddReference(const KaxBlockBlob & BlockReference, uint64 GlobalTimecodeScale)
{ {
const KaxInternalBlock & theBlock = BlockReference; const KaxInternalBlock & theBlock = BlockReference;
KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this); KaxCueRefTime & NewTime = GetChild<KaxCueRefTime>(*this);
*static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale; *static_cast<EbmlUInteger*>(&NewTime) = theBlock.GlobalTimecode() / GlobalTimecodeScale;
KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this); KaxCueRefCluster & TheClustPos = GetChild<KaxCueRefCluster>(*this);
*static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition(); *static_cast<EbmlUInteger*>(&TheClustPos) = theBlock.ClusterPosition();
#ifdef OLD #ifdef OLD
// handle recursive reference use // handle recursive reference use
if (BlockReference.ReferenceCount() != 0) if (BlockReference.ReferenceCount() != 0) {
{ unsigned int i;
unsigned int i; for (i=0; i<BlockReference.ReferenceCount(); i++) {
for (i=0; i<BlockReference.ReferenceCount(); i++) { AddReference(BlockReference.Reference(i).RefBlock());
AddReference(BlockReference.Reference(i).RefBlock()); }
} }
}
#endif /* OLD */ #endif /* OLD */
} }
#endif #endif
bool KaxCuePoint::IsSmallerThan(const EbmlElement * EltB) const bool KaxCuePoint::IsSmallerThan(const EbmlElement * EltB) const
{ {
assert(EbmlId(*this) == EBML_ID(KaxCuePoint)); assert(EbmlId(*this) == EBML_ID(KaxCuePoint));
assert(EbmlId(*EltB) == EBML_ID(KaxCuePoint)); assert(EbmlId(*EltB) == EBML_ID(KaxCuePoint));
const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(EltB); const KaxCuePoint & theEltB = *static_cast<const KaxCuePoint *>(EltB);
// compare timecode // compare timecode
const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime))); const KaxCueTime * TimeCodeA = static_cast<const KaxCueTime *>(FindElt(EBML_INFO(KaxCueTime)));
if (TimeCodeA == NULL) if (TimeCodeA == NULL)
return false; return false;
const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime))); const KaxCueTime * TimeCodeB = static_cast<const KaxCueTime *>(theEltB.FindElt(EBML_INFO(KaxCueTime)));
if (TimeCodeB == NULL) if (TimeCodeB == NULL)
return false; return false;
if (TimeCodeA->IsSmallerThan(TimeCodeB)) if (TimeCodeA->IsSmallerThan(TimeCodeB))
return true; return true;
if (TimeCodeB->IsSmallerThan(TimeCodeA)) if (TimeCodeB->IsSmallerThan(TimeCodeA))
return false; return false;
// compare tracks (timecodes are equal) // compare tracks (timecodes are equal)
const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack))); const KaxCueTrack * TrackA = static_cast<const KaxCueTrack *>(FindElt(EBML_INFO(KaxCueTrack)));
if (TrackA == NULL) if (TrackA == NULL)
return false; return false;
const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack))); const KaxCueTrack * TrackB = static_cast<const KaxCueTrack *>(theEltB.FindElt(EBML_INFO(KaxCueTrack)));
if (TrackB == NULL) if (TrackB == NULL)
return false; return false;
if (TrackA->IsSmallerThan(TrackB)) if (TrackA->IsSmallerThan(TrackB))
return true; return true;
if (TrackB->IsSmallerThan(TrackA)) if (TrackB->IsSmallerThan(TrackA))
return false; return false;
return false; return false;
} }
bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const bool KaxCuePoint::Timecode(uint64 & aTimecode, uint64 GlobalTimecodeScale) const
{ {
const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime))); const KaxCueTime *aTime = static_cast<const KaxCueTime *>(FindFirstElt(EBML_INFO(KaxCueTime)));
if (aTime == NULL) if (aTime == NULL)
return false; return false;
aTimecode = uint64(*aTime) * GlobalTimecodeScale; aTimecode = uint64(*aTime) * GlobalTimecodeScale;
return true; return true;
} }
/*! /*!
\brief return the position of the Cluster to load \brief return the position of the Cluster to load
*/ */
const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const const KaxCueTrackPositions * KaxCuePoint::GetSeekPosition() const
{ {
const KaxCueTrackPositions * result = NULL; const KaxCueTrackPositions * result = NULL;
uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF); uint64 aPosition = EBML_PRETTYLONGINT(0xFFFFFFFFFFFFFFF);
// find the position of the "earlier" Cluster // find the position of the "earlier" Cluster
const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions))); const KaxCueTrackPositions *aPoss = static_cast<const KaxCueTrackPositions *>(FindFirstElt(EBML_INFO(KaxCueTrackPositions)));
while (aPoss != NULL) while (aPoss != NULL) {
{ const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(aPoss->FindFirstElt(EBML_INFO(KaxCueClusterPosition))); if (aPos != NULL && uint64(*aPos) < aPosition) {
if (aPos != NULL && uint64(*aPos) < aPosition) { aPosition = uint64(*aPos);
aPosition = uint64(*aPos); result = aPoss;
result = aPoss; }
}
aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss));
aPoss = static_cast<const KaxCueTrackPositions *>(FindNextElt(*aPoss)); }
} return result;
return result;
} }
uint64 KaxCueTrackPositions::ClusterPosition() const uint64 KaxCueTrackPositions::ClusterPosition() const
{ {
const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition))); const KaxCueClusterPosition *aPos = static_cast<const KaxCueClusterPosition *>(FindFirstElt(EBML_INFO(KaxCueClusterPosition)));
if (aPos == NULL) if (aPos == NULL)
return 0; return 0;
return uint64(*aPos); return uint64(*aPos);
} }
uint16 KaxCueTrackPositions::TrackNumber() const uint16 KaxCueTrackPositions::TrackNumber() const
{ {
const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack))); const KaxCueTrack *aTrack = static_cast<const KaxCueTrack *>(FindFirstElt(EBML_INFO(KaxCueTrack)));
if (aTrack == NULL) if (aTrack == NULL)
return 0; return 0;
return uint16(*aTrack); return uint16(*aTrack);
} }

View File

@ -11,27 +11,27 @@
** 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$ \version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
\author John Cannon <spyder2555 @ users.sf.net> \author John Cannon <spyder2555 @ users.sf.net>
*/ */
#include "matroska/KaxInfoData.h" #include "matroska/KaxInfoData.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
@ -41,18 +41,18 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
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)
{ {
} }
KaxNextUID::KaxNextUID(EBML_EXTRA_DEF) KaxNextUID::KaxNextUID(EBML_EXTRA_DEF)
:KaxSegmentUID(EBML_DEF_BINARY_CTX(KaxNextUID) EBML_DEF_SEP EBML_EXTRA_CALL) :KaxSegmentUID(EBML_DEF_BINARY_CTX(KaxNextUID) EBML_DEF_SEP EBML_EXTRA_CALL)
{ {
} }
#if defined(HAVE_EBML2) || defined(HAS_EBML2) #if defined(HAVE_EBML2) || defined(HAS_EBML2)
KaxSegmentUID::KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_DEF) KaxSegmentUID::KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_DEF)
:EbmlBinary(EBML_DEF_PARAM EBML_DEF_SEP EBML_EXTRA_CALL) :EbmlBinary(EBML_DEF_PARAM EBML_DEF_SEP EBML_EXTRA_CALL)
{ {
} }
#endif #endif

View File

@ -11,26 +11,26 @@
** 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: KaxSeekHead.cpp 640 2004-07-09 21:05:36Z mosu $ \version \$Id: KaxSeekHead.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/KaxSeekHead.h" #include "matroska/KaxSeekHead.h"
#include "matroska/KaxContexts.h" #include "matroska/KaxContexts.h"
@ -44,106 +44,99 @@ using namespace LIBEBML_NAMESPACE;
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
/*! /*!
\todo verify that the element is not already in the list \todo verify that the element is not already in the list
*/ */
void KaxSeekHead::IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment) void KaxSeekHead::IndexThis(const EbmlElement & aElt, const KaxSegment & ParentSegment)
{ {
// create a new point // create a new point
KaxSeek & aNewPoint = AddNewChild<KaxSeek>(*this); KaxSeek & aNewPoint = AddNewChild<KaxSeek>(*this);
// add the informations to this element // add the informations to this element
KaxSeekPosition & aNewPos = GetChild<KaxSeekPosition>(aNewPoint); KaxSeekPosition & aNewPos = GetChild<KaxSeekPosition>(aNewPoint);
*static_cast<EbmlUInteger *>(&aNewPos) = ParentSegment.GetRelativePosition(aElt); *static_cast<EbmlUInteger *>(&aNewPos) = ParentSegment.GetRelativePosition(aElt);
KaxSeekID & aNewID = GetChild<KaxSeekID>(aNewPoint); KaxSeekID & aNewID = GetChild<KaxSeekID>(aNewPoint);
binary ID[4]; binary ID[4];
((const EbmlId&)aElt).Fill(ID); ((const EbmlId&)aElt).Fill(ID);
aNewID.CopyBuffer(ID, EBML_ID_LENGTH((const EbmlId&)aElt)); aNewID.CopyBuffer(ID, EBML_ID_LENGTH((const EbmlId&)aElt));
} }
KaxSeek * KaxSeekHead::FindFirstOf(const EbmlCallbacks & Callbacks) const KaxSeek * KaxSeekHead::FindFirstOf(const EbmlCallbacks & Callbacks) const
{ {
// parse all the Entries and find the first to match the type // parse all the Entries and find the first to match the type
KaxSeek * aElt = static_cast<KaxSeek *>(FindFirstElt(EBML_INFO(KaxSeek))); KaxSeek * aElt = static_cast<KaxSeek *>(FindFirstElt(EBML_INFO(KaxSeek)));
while (aElt != NULL) while (aElt != NULL) {
{ KaxSeekID * aId = NULL;
KaxSeekID * aId = NULL; EBML_MASTER_ITERATOR Itr;
EBML_MASTER_ITERATOR Itr; for (Itr = aElt->begin(); Itr != aElt->end(); ++Itr) {
for (Itr = aElt->begin(); Itr != aElt->end(); ++Itr) if (EbmlId(*(*Itr)) == EBML_ID(KaxSeekID)) {
{ aId = static_cast<KaxSeekID*>(*Itr);
if (EbmlId(*(*Itr)) == EBML_ID(KaxSeekID)) { EbmlId aEbmlId(aId->GetBuffer(), aId->GetSize());
aId = static_cast<KaxSeekID*>(*Itr); if (aEbmlId == EBML_INFO_ID(Callbacks)) {
EbmlId aEbmlId(aId->GetBuffer(), aId->GetSize()); return aElt;
if (aEbmlId == EBML_INFO_ID(Callbacks)) }
{ break;
return aElt; }
} }
break; aElt = static_cast<KaxSeek *>(FindNextElt(*aElt));
} }
}
aElt = static_cast<KaxSeek *>(FindNextElt(*aElt));
}
return NULL; return NULL;
} }
KaxSeek * KaxSeekHead::FindNextOf(const KaxSeek &aPrev) const KaxSeek * KaxSeekHead::FindNextOf(const KaxSeek &aPrev) const
{ {
EBML_MASTER_CONST_ITERATOR Itr; EBML_MASTER_CONST_ITERATOR Itr;
KaxSeek *tmp; KaxSeek *tmp;
// look for the previous in the list
for (Itr = begin(); Itr != end(); ++Itr)
{
if (*Itr == static_cast<const EbmlElement*>(&aPrev))
break;
}
if (Itr != end()) // look for the previous in the list
{ for (Itr = begin(); Itr != end(); ++Itr) {
++Itr; if (*Itr == static_cast<const EbmlElement*>(&aPrev))
for (; Itr != end(); ++Itr) break;
{ }
if (EbmlId(*(*Itr)) == EBML_ID(KaxSeek))
{
tmp = (KaxSeek *)(*Itr);
if (tmp->IsEbmlId(aPrev))
return tmp;
}
}
}
return NULL; if (Itr != end()) {
++Itr;
for (; Itr != end(); ++Itr) {
if (EbmlId(*(*Itr)) == EBML_ID(KaxSeek)) {
tmp = (KaxSeek *)(*Itr);
if (tmp->IsEbmlId(aPrev))
return tmp;
}
}
}
return NULL;
} }
int64 KaxSeek::Location() const int64 KaxSeek::Location() const
{ {
KaxSeekPosition *aPos = static_cast<KaxSeekPosition*>(FindFirstElt(EBML_INFO(KaxSeekPosition))); KaxSeekPosition *aPos = static_cast<KaxSeekPosition*>(FindFirstElt(EBML_INFO(KaxSeekPosition)));
if (aPos == NULL) if (aPos == NULL)
return 0; return 0;
return uint64(*aPos); return uint64(*aPos);
} }
bool KaxSeek::IsEbmlId(const EbmlId & aId) const bool KaxSeek::IsEbmlId(const EbmlId & aId) const
{ {
KaxSeekID *_Id = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID))); KaxSeekID *_Id = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID)));
if (_Id == NULL) if (_Id == NULL)
return false; return false;
EbmlId aEbmlId(_Id->GetBuffer(), _Id->GetSize()); EbmlId aEbmlId(_Id->GetBuffer(), _Id->GetSize());
return (aId == aEbmlId); return (aId == aEbmlId);
} }
bool KaxSeek::IsEbmlId(const KaxSeek & aPoint) const bool KaxSeek::IsEbmlId(const KaxSeek & aPoint) const
{ {
KaxSeekID *_IdA = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID))); KaxSeekID *_IdA = static_cast<KaxSeekID*>(FindFirstElt(EBML_INFO(KaxSeekID)));
if (_IdA == NULL) if (_IdA == NULL)
return false; return false;
KaxSeekID *_IdB = static_cast<KaxSeekID*>(aPoint.FindFirstElt(EBML_INFO(KaxSeekID))); KaxSeekID *_IdB = static_cast<KaxSeekID*>(aPoint.FindFirstElt(EBML_INFO(KaxSeekID)));
if (_IdB == NULL) if (_IdB == NULL)
return false; return false;
EbmlId aEbmlIdA(_IdA->GetBuffer(), _IdA->GetSize()); EbmlId aEbmlIdA(_IdA->GetBuffer(), _IdA->GetSize());
EbmlId aEbmlIdB(_IdB->GetBuffer(), _IdB->GetSize()); EbmlId aEbmlIdB(_IdB->GetBuffer(), _IdB->GetSize());
return (aEbmlIdA == aEbmlIdB); return (aEbmlIdA == aEbmlIdB);
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -11,26 +11,26 @@
** 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"
@ -46,40 +46,39 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
KaxSegment::KaxSegment(EBML_EXTRA_DEF) KaxSegment::KaxSegment(EBML_EXTRA_DEF)
:EbmlMaster(EBML_CLASS_SEMCONTEXT(KaxSegment) EBML_DEF_SEP EBML_EXTRA_CALL) :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) SetSizeLength(5); // mandatory min size support (for easier updating) (2^(7*5)-2 = 32Go)
SetSizeInfinite(); // by default a segment is big and the size is unknown in advance SetSizeInfinite(); // by default a segment is big and the size is unknown in advance
} }
KaxSegment::KaxSegment(const KaxSegment & ElementToClone) KaxSegment::KaxSegment(const KaxSegment & ElementToClone)
:EbmlMaster(ElementToClone) :EbmlMaster(ElementToClone)
{ {
// update the parent of each children // update the parent of each children
EBML_MASTER_ITERATOR Itr = begin(); EBML_MASTER_ITERATOR Itr = begin();
while (Itr != end()) while (Itr != end()) {
{ if (EbmlId(**Itr) == EBML_ID(KaxCluster)) {
if (EbmlId(**Itr) == EBML_ID(KaxCluster)) { static_cast<KaxCluster *>(*Itr)->SetParent(*this);
static_cast<KaxCluster *>(*Itr)->SetParent(*this); }
} ++Itr;
++Itr; }
}
} }
uint64 KaxSegment::GetRelativePosition(uint64 aGlobalPosition) const uint64 KaxSegment::GetRelativePosition(uint64 aGlobalPosition) const
{ {
return aGlobalPosition - GetElementPosition() - HeadSize(); return aGlobalPosition - GetElementPosition() - HeadSize();
} }
uint64 KaxSegment::GetRelativePosition(const EbmlElement & Elt) const uint64 KaxSegment::GetRelativePosition(const EbmlElement & Elt) const
{ {
return GetRelativePosition(Elt.GetElementPosition()); return GetRelativePosition(Elt.GetElementPosition());
} }
uint64 KaxSegment::GetGlobalPosition(uint64 aRelativePosition) const uint64 KaxSegment::GetGlobalPosition(uint64 aRelativePosition) const
{ {
return aRelativePosition + GetElementPosition() + HeadSize(); return aRelativePosition + GetElementPosition() + HeadSize();
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

File diff suppressed because it is too large Load Diff

View File

@ -11,26 +11,26 @@
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version. ** version 2.1 of the License, or (at your option) any later version.
** **
** This library is distributed in the hope that it will be useful, ** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of ** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details. ** Lesser General Public License for more details.
** **
** You should have received a copy of the GNU Lesser General Public ** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software ** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
** **
** See http://www.matroska.org/license/lgpl/ for LGPL licensing information.** ** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
** Contact license@matroska.org if any conditions of this licensing are ** Contact license@matroska.org if any conditions of this licensing are
** not clear to you. ** not clear to you.
** **
**********************************************************************/ **********************************************************************/
/*! /*!
\file \file
\version \$Id: KaxTracks.cpp 1202 2005-08-30 14:39:01Z robux4 $ \version \$Id: KaxTracks.cpp 1202 2005-08-30 14:39:01Z robux4 $
\author Steve Lhomme <robux4 @ users.sf.net> \author Steve Lhomme <robux4 @ users.sf.net>
*/ */
#include "matroska/KaxTracks.h" #include "matroska/KaxTracks.h"
@ -41,14 +41,14 @@
START_LIBMATROSKA_NAMESPACE START_LIBMATROSKA_NAMESPACE
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)
{} {}
void KaxTrackEntry::EnableLacing(bool bEnable) void KaxTrackEntry::EnableLacing(bool bEnable)
{ {
KaxTrackFlagLacing & myLacing = GetChild<KaxTrackFlagLacing>(*this); KaxTrackFlagLacing & myLacing = GetChild<KaxTrackFlagLacing>(*this);
*(static_cast<EbmlUInteger *>(&myLacing)) = bEnable ? 1 : 0; *(static_cast<EbmlUInteger *>(&myLacing)) = bEnable ? 1 : 0;
} }
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

View File

@ -19,25 +19,29 @@
** **
** 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
const std::string KaxCodeVersion = "1.3.0"; const std::string KaxCodeVersion = "1.4.4";
const std::string KaxCodeDate = __TIMESTAMP__;
// Up to version 1.4.4 this library exported a build date string. As
// this made the build non-reproducible, replace it by a placeholder to
// remain binary compatible.
const std::string KaxCodeDate = "Unknown";
END_LIBMATROSKA_NAMESPACE END_LIBMATROSKA_NAMESPACE

Some files were not shown because too many files have changed in this diff Show More