Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6d8e423ef0 | ||
![]() |
2619e001cb | ||
![]() |
76212be904 | ||
![]() |
0a2d3e3644 | ||
![]() |
4934049696 | ||
![]() |
db5d627b5b | ||
![]() |
e97e1a3897 | ||
![]() |
bab4d91a78 | ||
![]() |
9466bf5f2b | ||
![]() |
81edf95a02 | ||
![]() |
b3de2dd981 | ||
![]() |
cbf763a07e | ||
![]() |
aa04e96218 | ||
![]() |
ea28fc9ab8 | ||
![]() |
cd371507d8 | ||
![]() |
0f107f8b19 | ||
![]() |
4052497ce5 | ||
![]() |
78334a0d2c | ||
![]() |
2260fd14b5 | ||
![]() |
4457e70466 | ||
![]() |
2e960b9b63 | ||
![]() |
9655b187f2 | ||
![]() |
f82f1f7889 | ||
![]() |
ff6e0db2fe | ||
![]() |
4a7222ce81 | ||
![]() |
1cb5ae4015 | ||
![]() |
ee8a42d2cf | ||
![]() |
9c07d1e39d | ||
![]() |
82a7b7c6b8 |
19
.gitignore
vendored
19
.gitignore
vendored
@ -1 +1,18 @@
|
|||||||
*.[ao]
|
.deps/
|
||||||
|
.libs/
|
||||||
|
*.a
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.pc
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
.dirstamp
|
||||||
|
|
||||||
|
/aclocal.m4
|
||||||
|
/autom4te.cache/
|
||||||
|
/build-aux/
|
||||||
|
/config.*
|
||||||
|
/configure
|
||||||
|
/libtool
|
||||||
|
/stamp-h1
|
||||||
|
65
ChangeLog
65
ChangeLog
@ -1,3 +1,68 @@
|
|||||||
|
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
|
2013-03-19 mosu/robux4
|
||||||
New 1.4.0 version:
|
New 1.4.0 version:
|
||||||
* Note that this release is not binary compatible to 1.3.0 due to
|
* Note that this release is not binary compatible to 1.3.0 due to
|
||||||
|
66
Makefile.am
Normal file
66
Makefile.am
Normal 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
14
configure.ac
Normal 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
|
11
libmatroska.pc.in
Normal file
11
libmatroska.pc.in
Normal 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}
|
2
m4/.gitignore
vendored
Normal file
2
m4/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/libtool.m4
|
||||||
|
/lt*.m4
|
211
make/Doxyfile
211
make/Doxyfile
@ -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 =
|
|
@ -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
|
|
@ -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)
|
|
@ -1,179 +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
|
|
||||||
|
|
||||||
ifeq (Darwin,$(shell uname -s))
|
|
||||||
link=static
|
|
||||||
else
|
|
||||||
link=both
|
|
||||||
endif
|
|
||||||
|
|
||||||
targets_both = staticlib sharedlib
|
|
||||||
targets_shared = sharedlib
|
|
||||||
targets_static = staticlib
|
|
||||||
|
|
||||||
SRC_DIR=$(CWD)/../../src/
|
|
||||||
INCLUDE_DIR=$(CWD)/../../matroska
|
|
||||||
MUX_SRC_DIR=$(CWD)/../../test/mux/
|
|
||||||
TAG_SRC_DIR=$(CWD)/../../test/tags/
|
|
||||||
|
|
||||||
# Libraries
|
|
||||||
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.6
|
|
||||||
|
|
||||||
# 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 -Wextra -Wno-unknown-pragmas -D_GNU_SOURCE -Wshadow
|
|
||||||
COMPILEFLAGS=$(DEBUGFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(WARNINGFLAGS) $(INCLUDE)
|
|
||||||
LINKFLAGS=-L. -L$(LIBEBML_LIB_DIR) $(LDFLAGS)
|
|
||||||
DEPENDFLAGS = $(CXXFLAGS) $(INCLUDE)
|
|
||||||
|
|
||||||
all: $(targets_$(link))
|
|
||||||
|
|
||||||
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 $@ $<
|
|
||||||
|
|
||||||
install: $(targets_$(link):%=install_%) install_headers
|
|
||||||
|
|
||||||
install_headers:
|
|
||||||
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(includedir)
|
|
||||||
for i in $(INCLUDE_DIR)/*.h; do \
|
|
||||||
$(INSTALL) $(INSTALL_OPTS) $$i $(DESTDIR)$(includedir) ; \
|
|
||||||
done
|
|
||||||
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(includedir)/c
|
|
||||||
for i in $(INCLUDE_DIR)/c/*.h; do \
|
|
||||||
$(INSTALL) $(INSTALL_OPTS) $$i $(DESTDIR)$(includedir)/c ; \
|
|
||||||
done
|
|
||||||
|
|
||||||
install_staticlib: $(LIBRARY)
|
|
||||||
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(libdir)
|
|
||||||
$(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY) $(DESTDIR)$(libdir)
|
|
||||||
|
|
||||||
install_sharedlib: $(LIBRARY_SO)
|
|
||||||
$(INSTALL) $(INSTALL_DIR_OPTS) -d $(DESTDIR)$(libdir)
|
|
||||||
$(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY_SO_VER) $(DESTDIR)$(libdir)
|
|
||||||
ln -fs $(LIBRARY_SO_VER) $(DESTDIR)$(libdir)/$(LIBRARY_SO)
|
|
||||||
|
|
||||||
ifneq ($(wildcard .depend),)
|
|
||||||
include .depend
|
|
||||||
endif
|
|
||||||
|
|
||||||
# DO NOT DELETE
|
|
@ -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)
|
|
@ -1,61 +0,0 @@
|
|||||||
# SPEC file for (at least) Fedora Core 1, 2, 3
|
|
||||||
|
|
||||||
Name: libmatroska
|
|
||||||
Version: 1.4.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
|
|
@ -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.4.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
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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=
|
|
||||||
|
|
@ -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)
|
|
@ -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=
|
|
||||||
|
|
@ -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=
|
|
||||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
134
make/vc6/vc6.dsw
134
make/vc6/vc6.dsw
@ -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>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
@ -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
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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
|
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
@ -60,90 +60,90 @@ START_LIBMATROSKA_NAMESPACE
|
|||||||
*/
|
*/
|
||||||
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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -26,11 +26,11 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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,259 +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 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
|
\return the number of references to other frames
|
||||||
*/
|
*/
|
||||||
unsigned int ReferenceCount() const;
|
unsigned int ReferenceCount() const;
|
||||||
const KaxReferenceBlock & Reference(unsigned int Index) const;
|
const KaxReferenceBlock & Reference(unsigned int Index) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief release all the frames of all Blocks
|
\brief release all the frames of all Blocks
|
||||||
*/
|
*/
|
||||||
void ReleaseFrames();
|
void ReleaseFrames();
|
||||||
|
|
||||||
operator KaxInternalBlock &();
|
operator KaxInternalBlock &();
|
||||||
|
|
||||||
const KaxCluster *GetParentCluster() const { return ParentCluster; }
|
const KaxCluster *GetParentCluster() const { return ParentCluster; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
KaxCluster * ParentCluster;
|
KaxCluster * ParentCluster;
|
||||||
const KaxTrackEntry * ParentTrack;
|
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)
|
\brief Only read the head of the Block (not internal data)
|
||||||
\note convenient when you are parsing the file quickly
|
\note convenient when you are parsing the file quickly
|
||||||
*/
|
*/
|
||||||
uint64 ReadInternalHead(IOCallback & input);
|
uint64 ReadInternalHead(IOCallback & input);
|
||||||
|
|
||||||
unsigned int NumberFrames() const { return SizeList.size();}
|
unsigned int NumberFrames() const { return SizeList.size();}
|
||||||
DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];}
|
DataBuffer & GetBuffer(unsigned int iIndex) {return *myBuffers[iIndex];}
|
||||||
|
|
||||||
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false);
|
bool AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, LacingType lacing = LACING_AUTO, bool invisible = false);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief release all the frames of all Blocks
|
\brief release all the frames of all Blocks
|
||||||
*/
|
*/
|
||||||
void ReleaseFrames();
|
void ReleaseFrames();
|
||||||
|
|
||||||
void SetParent(KaxCluster & aParentCluster);
|
void SetParent(KaxCluster & aParentCluster);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\return Returns the lacing type that produces the smallest footprint.
|
\return Returns the lacing type that produces the smallest footprint.
|
||||||
*/
|
*/
|
||||||
LacingType GetBestLacingType() const;
|
LacingType GetBestLacingType() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\param FrameNumber 0 for the first frame
|
\param FrameNumber 0 for the first frame
|
||||||
\return the position in the stream for a given frame
|
\return the position in the stream for a given frame
|
||||||
\note return -1 if the position doesn't exist
|
\note return -1 if the position doesn't exist
|
||||||
*/
|
*/
|
||||||
int64 GetDataPosition(size_t FrameNumber = 0);
|
int64 GetDataPosition(size_t FrameNumber = 0);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\param FrameNumber 0 for the first frame
|
\param FrameNumber 0 for the first frame
|
||||||
\return the size of a given frame
|
\return the size of a given frame
|
||||||
\note return -1 if the position doesn't exist
|
\note return -1 if the position doesn't exist
|
||||||
*/
|
*/
|
||||||
int64 GetFrameSize(size_t FrameNumber = 0);
|
int64 GetFrameSize(size_t FrameNumber = 0);
|
||||||
|
|
||||||
bool IsInvisible() const { return mInvisible; }
|
bool IsInvisible() const { return mInvisible; }
|
||||||
|
|
||||||
uint64 ClusterPosition() const;
|
uint64 ClusterPosition() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::vector<DataBuffer *> myBuffers;
|
std::vector<DataBuffer *> myBuffers;
|
||||||
std::vector<int32> SizeList;
|
std::vector<int32> SizeList;
|
||||||
uint64 Timecode; // temporary timecode of the first frame, non scaled
|
uint64 Timecode; // temporary timecode of the first frame, non scaled
|
||||||
int16 LocalTimecode;
|
int16 LocalTimecode;
|
||||||
bool bLocalTimecodeUsed;
|
bool bLocalTimecodeUsed;
|
||||||
uint16 TrackNumber;
|
uint16 TrackNumber;
|
||||||
LacingType mLacing;
|
LacingType mLacing;
|
||||||
bool mInvisible;
|
bool mInvisible;
|
||||||
uint64 FirstFrameLocation;
|
uint64 FirstFrameLocation;
|
||||||
|
|
||||||
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false);
|
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false);
|
||||||
|
|
||||||
KaxCluster * ParentCluster;
|
KaxCluster * ParentCluster;
|
||||||
bool bIsSimple;
|
bool bIsSimple;
|
||||||
bool bIsKeyframe;
|
bool bIsKeyframe;
|
||||||
bool bIsDiscardable;
|
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; }
|
||||||
|
|
||||||
void SetParent(KaxCluster & aParentCluster);
|
void SetParent(KaxCluster & aParentCluster);
|
||||||
|
|
||||||
EBML_CONCRETE_CLASS(KaxSimpleBlock)
|
EBML_CONCRETE_CLASS(KaxSimpleBlock)
|
||||||
};
|
};
|
||||||
@ -314,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
|
||||||
|
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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();
|
||||||
};
|
};
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -26,10 +26,10 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
\brief release all the frames of all Blocks
|
||||||
\note this is a convenience to be able to keep Clusters+Blocks in memory (for future reference) withouht being a memory hog
|
\note this is a convenience to be able to keep Clusters+Blocks in memory (for future reference) withouht being a memory hog
|
||||||
*/
|
*/
|
||||||
void ReleaseFrames();
|
void ReleaseFrames();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief return the position offset compared to the beggining of the Segment
|
\brief return the position offset compared to the beggining of the Segment
|
||||||
*/
|
*/
|
||||||
uint64 GetPosition() const;
|
uint64 GetPosition() const;
|
||||||
|
|
||||||
void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;}
|
void SetParent(const KaxSegment & aParentSegment) {ParentSegment = &aParentSegment;}
|
||||||
|
|
||||||
void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) {
|
void SetPreviousTimecode(uint64 aPreviousTimecode, int64 aTimecodeScale) {
|
||||||
bPreviousTimecodeIsSet = true;
|
bPreviousTimecodeIsSet = true;
|
||||||
PreviousTimecode = aPreviousTimecode;
|
PreviousTimecode = aPreviousTimecode;
|
||||||
SetGlobalTimecodeScale(aTimecodeScale);
|
SetGlobalTimecodeScale(aTimecodeScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\note dirty hack to get the mandatory data back after reading
|
\note dirty hack to get the mandatory data back after reading
|
||||||
\todo there should be a better way to get mandatory data
|
\todo there should be a better way to get mandatory data
|
||||||
*/
|
*/
|
||||||
void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) {
|
void InitTimecode(uint64 aTimecode, int64 aTimecodeScale) {
|
||||||
SetGlobalTimecodeScale(aTimecodeScale);
|
SetGlobalTimecodeScale(aTimecodeScale);
|
||||||
MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale;
|
MinTimecode = MaxTimecode = PreviousTimecode = aTimecode * TimecodeScale;
|
||||||
bFirstFrameInside = bPreviousTimecodeIsSet = true;
|
bFirstFrameInside = bPreviousTimecodeIsSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const;
|
int16 GetBlockLocalTimecode(uint64 GlobalTimecode) const;
|
||||||
|
|
||||||
uint64 GetBlockGlobalTimecode(int16 LocalTimecode);
|
uint64 GetBlockGlobalTimecode(int16 LocalTimecode);
|
||||||
|
|
||||||
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
|
void SetGlobalTimecodeScale(uint64 aGlobalTimecodeScale) {
|
||||||
TimecodeScale = aGlobalTimecodeScale;
|
TimecodeScale = aGlobalTimecodeScale;
|
||||||
bTimecodeScaleIsSet = true;
|
bTimecodeScaleIsSet = true;
|
||||||
}
|
}
|
||||||
uint64 GlobalTimecodeScale() const {
|
uint64 GlobalTimecodeScale() const {
|
||||||
assert(bTimecodeScaleIsSet);
|
assert(bTimecodeScaleIsSet);
|
||||||
return TimecodeScale;
|
return TimecodeScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SetSilentTrackUsed()
|
bool SetSilentTrackUsed()
|
||||||
{
|
{
|
||||||
bSilentTracksUsed = true;
|
bSilentTracksUsed = true;
|
||||||
return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL;
|
return FindFirstElt(EBML_INFO(KaxClusterSilentTracks), true) != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AddBlockBlob(KaxBlockBlob * NewBlob);
|
bool AddBlockBlob(KaxBlockBlob * NewBlob);
|
||||||
|
|
||||||
const KaxSegment *GetParentSegment() const { return ParentSegment; }
|
const KaxSegment *GetParentSegment() const { return ParentSegment; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
KaxBlockBlob * currentNewBlob;
|
KaxBlockBlob * currentNewBlob;
|
||||||
std::vector<KaxBlockBlob*> Blobs;
|
std::vector<KaxBlockBlob*> Blobs;
|
||||||
KaxBlockGroup * currentNewBlock;
|
KaxBlockGroup * currentNewBlock;
|
||||||
const KaxSegment * ParentSegment;
|
const KaxSegment * ParentSegment;
|
||||||
|
|
||||||
uint64 MinTimecode, MaxTimecode, PreviousTimecode;
|
uint64 MinTimecode, MaxTimecode, PreviousTimecode;
|
||||||
int64 TimecodeScale;
|
int64 TimecodeScale;
|
||||||
|
|
||||||
bool bFirstFrameInside; // used to speed research
|
bool bFirstFrameInside; // used to speed research
|
||||||
bool bPreviousTimecodeIsSet;
|
bool bPreviousTimecodeIsSet;
|
||||||
bool bTimecodeScaleIsSet;
|
bool bTimecodeScaleIsSet;
|
||||||
bool bSilentTracksUsed;
|
bool bSilentTracksUsed;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\note method used internally
|
\note method used internally
|
||||||
*/
|
*/
|
||||||
bool AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing);
|
bool AddFrameInternal(const KaxTrackEntry & track, uint64 timecode, DataBuffer & buffer, KaxBlockGroup * & MyNewBlock, const KaxBlockGroup * PastBlock, const KaxBlockGroup * ForwBlock, LacingType lacing);
|
||||||
};
|
};
|
||||||
|
|
||||||
END_LIBMATROSKA_NAMESPACE
|
END_LIBMATROSKA_NAMESPACE
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -26,10 +26,10 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,11 +28,11 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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)
|
||||||
};
|
};
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
@ -44,17 +44,17 @@ 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
|
||||||
|
@ -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,7 +152,7 @@ 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)
|
||||||
@ -176,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)
|
||||||
@ -206,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
|
||||||
|
|
||||||
@ -253,13 +253,13 @@ DECLARE_MKX_UINTEGER(KaxTrackDefaultDecodedFieldDuration)
|
|||||||
|
|
||||||
DECLARE_MKX_FLOAT(KaxTrackTimecodeScale)
|
DECLARE_MKX_FLOAT(KaxTrackTimecodeScale)
|
||||||
public:
|
public:
|
||||||
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault);
|
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
|
||||||
|
|
||||||
@ -287,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)
|
||||||
@ -344,7 +344,7 @@ 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
|
||||||
|
|
||||||
@ -380,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
|
||||||
|
|
||||||
@ -411,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
|
||||||
|
|
||||||
@ -449,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)
|
||||||
@ -460,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
|
||||||
|
|
||||||
@ -542,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
|
||||||
|
|
||||||
@ -582,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)
|
||||||
@ -638,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)
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
@ -41,17 +41,17 @@
|
|||||||
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
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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 0x010400
|
#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
|
||||||
|
@ -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;
|
||||||
|
510
src/FileKax.cpp
510
src/FileKax.cpp
@ -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);
|
myTracks.push_back(tmpTrack);
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
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;
|
Frame * myReadFrame;
|
||||||
aTrack->GetNextFrame(aTimecode, myReadFrame, aKeyFrame, aBFrame);
|
aTrack->GetNextFrame(aTimecode, myReadFrame, aKeyFrame, aBFrame);
|
||||||
aFrame = myReadFrame->buf();
|
aFrame = myReadFrame->buf();
|
||||||
aFrameSize = myReadFrame->length();
|
aFrameSize = myReadFrame->length();
|
||||||
|
|
||||||
if (aTrack->NoFrameLeft())
|
if (aTrack->NoFrameLeft()) {
|
||||||
{
|
aTrack->FlushBlock();
|
||||||
aTrack->FlushBlock();
|
myCurrReadBlockTrack = 0;
|
||||||
myCurrReadBlockTrack = 0;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
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
|
||||||
}
|
}
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
1449
src/KaxBlock.cpp
1449
src/KaxBlock.cpp
File diff suppressed because it is too large
Load Diff
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
157
src/KaxCues.cpp
157
src/KaxCues.cpp
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,10 +28,10 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
// look for the previous in the list
|
||||||
for (Itr = begin(); Itr != end(); ++Itr)
|
for (Itr = begin(); Itr != end(); ++Itr) {
|
||||||
{
|
if (*Itr == static_cast<const EbmlElement*>(&aPrev))
|
||||||
if (*Itr == static_cast<const EbmlElement*>(&aPrev))
|
break;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Itr != end())
|
if (Itr != end()) {
|
||||||
{
|
++Itr;
|
||||||
++Itr;
|
for (; Itr != end(); ++Itr) {
|
||||||
for (; Itr != end(); ++Itr)
|
if (EbmlId(*(*Itr)) == EBML_ID(KaxSeek)) {
|
||||||
{
|
tmp = (KaxSeek *)(*Itr);
|
||||||
if (EbmlId(*(*Itr)) == EBML_ID(KaxSeek))
|
if (tmp->IsEbmlId(aPrev))
|
||||||
{
|
return tmp;
|
||||||
tmp = (KaxSeek *)(*Itr);
|
}
|
||||||
if (tmp->IsEbmlId(aPrev))
|
}
|
||||||
return tmp;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
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
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -699,103 +699,103 @@ DEFINE_MKX_UNISTRING(KaxTagString, 0x4487, 2, KaxTagSimple, "TagString");
|
|||||||
DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary");
|
DEFINE_MKX_BINARY (KaxTagBinary, 0x4485, 2, KaxTagSimple, "TagBinary");
|
||||||
|
|
||||||
filepos_t KaxBlockVirtual::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxBlockVirtual::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxReferenceVirtual::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxReferenceVirtual::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxSliceFrameNumber::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxSliceFrameNumber::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxSliceBlockAddID::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxSliceBlockAddID::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxSliceDelay::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxSliceDelay::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxSliceDuration::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxSliceDuration::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxEncryptedBlock::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxEncryptedBlock::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxTrackTimecodeScale::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxTrackTimecodeScale::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxTrackOffset::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxTrackOffset::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxCodecSettings::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxCodecSettings::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxCodecInfoURL::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxCodecInfoURL::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxCodecDownloadURL::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxCodecDownloadURL::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxOldStereoMode::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxOldStereoMode::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxVideoGamma::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxVideoGamma::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxVideoFrameRate::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxVideoFrameRate::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxAudioPosition::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxAudioPosition::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxCueRefCluster::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxCueRefCluster::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxCueRefNumber::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxCueRefNumber::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxCueRefCodecState::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxCueRefCodecState::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
filepos_t KaxFileReferral::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
filepos_t KaxFileReferral::RenderData(IOCallback & /* output */, bool /* bForceRender */, bool /* bSaveDefault */) {
|
||||||
assert(false); // no you are not allowed to use this element !
|
assert(false); // no you are not allowed to use this element !
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
END_LIBMATROSKA_NAMESPACE
|
END_LIBMATROSKA_NAMESPACE
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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
|
||||||
|
@ -28,16 +28,20 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\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.4.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
|
||||||
|
@ -31,9 +31,9 @@
|
|||||||
\file
|
\file
|
||||||
\version \$Id$
|
\version \$Id$
|
||||||
\author Steve Lhomme <robux4 @ users.sf.net>
|
\author Steve Lhomme <robux4 @ users.sf.net>
|
||||||
Test the EBML write possibilities
|
Test the EBML write possibilities
|
||||||
\see http://www.cl.cam.ac.uk/~mgk25/unicode.html
|
\see http://www.cl.cam.ac.uk/~mgk25/unicode.html
|
||||||
\see http://www-106.ibm.com/developerworks/unicode/library/u-encode.html
|
\see http://www-106.ibm.com/developerworks/unicode/library/u-encode.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -55,31 +55,31 @@ using namespace LIBEBML_NAMESPACE;
|
|||||||
const char RW_FILENAME[] = "test.kax";
|
const char RW_FILENAME[] = "test.kax";
|
||||||
|
|
||||||
enum SemanticType {
|
enum SemanticType {
|
||||||
EBML_U_INTEGER,
|
EBML_U_INTEGER,
|
||||||
EBML_S_INTEGER,
|
EBML_S_INTEGER,
|
||||||
EBML_BINARY,
|
EBML_BINARY,
|
||||||
EBML_STRING,
|
EBML_STRING,
|
||||||
EBML_STRING_UNICODE,
|
EBML_STRING_UNICODE,
|
||||||
EBML_FLOAT,
|
EBML_FLOAT,
|
||||||
EBML_MASTER,
|
EBML_MASTER,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef binary EBMLID[4];
|
typedef binary EBMLID[4];
|
||||||
struct Semantic {
|
struct Semantic {
|
||||||
EBMLID Id;
|
EBMLID Id;
|
||||||
int IdLength;
|
int IdLength;
|
||||||
SemanticType Type;
|
SemanticType Type;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Semantic SemanticList[] =
|
struct Semantic SemanticList[] =
|
||||||
{
|
{
|
||||||
{{0x42, 0x45}, 2, EBML_U_INTEGER},
|
{{0x42, 0x45}, 2, EBML_U_INTEGER},
|
||||||
{{0x1A, 0x45, 0x33, 0x80}, 4, EBML_S_INTEGER},
|
{{0x1A, 0x45, 0x33, 0x80}, 4, EBML_S_INTEGER},
|
||||||
{{0x87}, 1, EBML_BINARY},
|
{{0x87}, 1, EBML_BINARY},
|
||||||
{{0x22, 0x33, 0x44}, 3, EBML_STRING},
|
{{0x22, 0x33, 0x44}, 3, EBML_STRING},
|
||||||
{{0x44, 0x33}, 2, EBML_STRING_UNICODE},
|
{{0x44, 0x33}, 2, EBML_STRING_UNICODE},
|
||||||
{{0x50, 0x50}, 2, EBML_FLOAT},
|
{{0x50, 0x50}, 2, EBML_FLOAT},
|
||||||
{{0x36, 0x47, 0x58}, 3, EBML_MASTER},
|
{{0x36, 0x47, 0x58}, 3, EBML_MASTER},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -88,214 +88,214 @@ struct Semantic SemanticList[] =
|
|||||||
*/
|
*/
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
StdIOCallback Ebml_file(RW_FILENAME, ::MODE_CREATE);
|
StdIOCallback Ebml_file(RW_FILENAME, ::MODE_CREATE);
|
||||||
|
|
||||||
///// Writing test
|
///// Writing test
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// Unsigned integer
|
// Unsigned integer
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
EbmlUInteger testUInt(4); // supposed to hold a 4*8 bits value
|
EbmlUInteger testUInt(4); // supposed to hold a 4*8 bits value
|
||||||
|
|
||||||
testUInt.SetID(SemanticList[0].Id, SemanticList[0].IdLength);
|
testUInt.SetID(SemanticList[0].Id, SemanticList[0].IdLength);
|
||||||
testUInt = 52;
|
testUInt = 52;
|
||||||
testUInt.SetSizeLength(3); // size should be coded on at least 3 octets
|
testUInt.SetSizeLength(3); // size should be coded on at least 3 octets
|
||||||
testUInt.Render(Ebml_file);
|
testUInt.Render(Ebml_file);
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// Signed integer
|
// Signed integer
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
EbmlSInteger testSInt(4); // supposed to hold a 4*8 bits value
|
EbmlSInteger testSInt(4); // supposed to hold a 4*8 bits value
|
||||||
|
|
||||||
testSInt.SetID(SemanticList[1].Id, SemanticList[1].IdLength);
|
testSInt.SetID(SemanticList[1].Id, SemanticList[1].IdLength);
|
||||||
testSInt = -20;
|
testSInt = -20;
|
||||||
testSInt.Render(Ebml_file);
|
testSInt.Render(Ebml_file);
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// Binary data
|
// Binary data
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
const int BINARY_SIZE=3000;
|
const int BINARY_SIZE=3000;
|
||||||
|
|
||||||
binary *bin = new binary[BINARY_SIZE];
|
binary *bin = new binary[BINARY_SIZE];
|
||||||
memset(bin, 0x61, BINARY_SIZE);
|
memset(bin, 0x61, BINARY_SIZE);
|
||||||
EbmlBinary testBin;
|
EbmlBinary testBin;
|
||||||
|
|
||||||
testBin.SetID(SemanticList[2].Id, SemanticList[2].IdLength);
|
testBin.SetID(SemanticList[2].Id, SemanticList[2].IdLength);
|
||||||
testBin.SetBuffer(bin, BINARY_SIZE);
|
testBin.SetBuffer(bin, BINARY_SIZE);
|
||||||
testBin.Render(Ebml_file);
|
testBin.Render(Ebml_file);
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// String data
|
// String data
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
std::string aString = "Hello World !";
|
std::string aString = "Hello World !";
|
||||||
EbmlString testStr(200);
|
EbmlString testStr(200);
|
||||||
|
|
||||||
testStr.SetID(SemanticList[3].Id, SemanticList[3].IdLength);
|
testStr.SetID(SemanticList[3].Id, SemanticList[3].IdLength);
|
||||||
testStr = aString;
|
testStr = aString;
|
||||||
testStr.Render(Ebml_file);
|
testStr.Render(Ebml_file);
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// Master element
|
// Master element
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
EbmlMaster testMaster;
|
EbmlMaster testMaster;
|
||||||
|
|
||||||
testMaster.SetID(SemanticList[6].Id, SemanticList[6].IdLength);
|
testMaster.SetID(SemanticList[6].Id, SemanticList[6].IdLength);
|
||||||
testMaster.PushElement(testStr);
|
testMaster.PushElement(testStr);
|
||||||
testMaster.PushElement(testUInt);
|
testMaster.PushElement(testUInt);
|
||||||
testMaster.Render(Ebml_file);
|
testMaster.Render(Ebml_file);
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// Unicode String data
|
// Unicode String data
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
UTFstring bString = L"Stève Lhomm€";
|
UTFstring bString = L"Stève Lhomm€";
|
||||||
EbmlUnicodeString testUStr(200);
|
EbmlUnicodeString testUStr(200);
|
||||||
|
|
||||||
testUStr.SetID(SemanticList[4].Id, SemanticList[4].IdLength);
|
testUStr.SetID(SemanticList[4].Id, SemanticList[4].IdLength);
|
||||||
testUStr = bString;
|
testUStr = bString;
|
||||||
testUStr.Render(Ebml_file);
|
testUStr.Render(Ebml_file);
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// Float data
|
// Float data
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
EbmlFloat testFloat(EbmlFloat::FLOAT_32);
|
EbmlFloat testFloat(EbmlFloat::FLOAT_32);
|
||||||
|
|
||||||
testFloat.SetID(SemanticList[5].Id, SemanticList[5].IdLength);
|
testFloat.SetID(SemanticList[5].Id, SemanticList[5].IdLength);
|
||||||
testFloat.SetPrecision(EbmlFloat::FLOAT_32);
|
testFloat.SetPrecision(EbmlFloat::FLOAT_32);
|
||||||
testFloat = 1.01234567890123456;
|
testFloat = 1.01234567890123456;
|
||||||
testFloat.Render(Ebml_file);
|
testFloat.Render(Ebml_file);
|
||||||
|
|
||||||
testFloat.SetPrecision(EbmlFloat::FLOAT_64);
|
testFloat.SetPrecision(EbmlFloat::FLOAT_64);
|
||||||
testFloat = -1.01234567890123456L;
|
testFloat = -1.01234567890123456L;
|
||||||
testFloat.Render(Ebml_file);
|
testFloat.Render(Ebml_file);
|
||||||
|
|
||||||
Ebml_file.close();
|
Ebml_file.close();
|
||||||
|
|
||||||
///// Reading test
|
///// Reading test
|
||||||
StdIOCallback Ebml_Wfile(RW_FILENAME, ::MODE_READ);
|
StdIOCallback Ebml_Wfile(RW_FILENAME, ::MODE_READ);
|
||||||
|
|
||||||
// example 1 skip all the elements found
|
// example 1 skip all the elements found
|
||||||
EbmlStream aStream(Ebml_Wfile);
|
EbmlStream aStream(Ebml_Wfile);
|
||||||
EbmlElement * ElementLevel0;
|
EbmlElement * ElementLevel0;
|
||||||
|
|
||||||
// read the data until a possible element is found (valid ID + size combination)
|
// read the data until a possible element is found (valid ID + size combination)
|
||||||
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
||||||
printf("Read EBML elements & skip data\n");
|
printf("Read EBML elements & skip data\n");
|
||||||
while (ElementLevel0 != NULL)
|
while (ElementLevel0 != NULL)
|
||||||
{
|
{
|
||||||
printf("ID : ");
|
printf("ID : ");
|
||||||
for (int i=0; i<ElementLevel0->GetIDLength(); i++)
|
for (int i=0; i<ElementLevel0->GetIDLength(); i++)
|
||||||
{
|
{
|
||||||
printf("[%02X]", ElementLevel0->GetID()[i]);
|
printf("[%02X]", ElementLevel0->GetID()[i]);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
ElementLevel0->SkipData(Ebml_Wfile);
|
ElementLevel0->SkipData(Ebml_Wfile);
|
||||||
if (ElementLevel0 != NULL)
|
if (ElementLevel0 != NULL)
|
||||||
delete ElementLevel0;
|
delete ElementLevel0;
|
||||||
|
|
||||||
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// example 2 evaluation of all elements found
|
// example 2 evaluation of all elements found
|
||||||
EbmlStream bStream(Ebml_Wfile);
|
EbmlStream bStream(Ebml_Wfile);
|
||||||
EbmlElement * EvaledElementLevel0;
|
EbmlElement * EvaledElementLevel0;
|
||||||
// EbmlElement * EvaledElementLevel1;
|
// EbmlElement * EvaledElementLevel1;
|
||||||
|
|
||||||
// reset the stream to the beggining
|
// reset the stream to the beggining
|
||||||
Ebml_Wfile.setFilePointer(0);
|
Ebml_Wfile.setFilePointer(0);
|
||||||
|
|
||||||
// list of all IDs and their semantic type
|
// list of all IDs and their semantic type
|
||||||
// std::list<struct Semantic> SemanticList;
|
// std::list<struct Semantic> SemanticList;
|
||||||
// SemanticList.push_back();
|
// SemanticList.push_back();
|
||||||
|
|
||||||
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
||||||
printf("Read EBML elements & evaluate data\n");
|
printf("Read EBML elements & evaluate data\n");
|
||||||
while (ElementLevel0 != NULL)
|
while (ElementLevel0 != NULL)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
printf("ID : ");
|
printf("ID : ");
|
||||||
for (i=0; i<ElementLevel0->GetIDLength(); i++)
|
for (i=0; i<ElementLevel0->GetIDLength(); i++)
|
||||||
{
|
{
|
||||||
printf("[%02X]", ElementLevel0->GetID()[i]);
|
printf("[%02X]", ElementLevel0->GetID()[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if the element is known
|
// check if the element is known
|
||||||
for (i=0; i<countof(SemanticList); i++) {
|
for (i=0; i<countof(SemanticList); i++) {
|
||||||
if (ElementLevel0->GetIDLength() != SemanticList[i].IdLength)
|
if (ElementLevel0->GetIDLength() != SemanticList[i].IdLength)
|
||||||
continue;
|
continue;
|
||||||
if (memcmp(SemanticList[i].Id, ElementLevel0->GetID(), SemanticList[i].IdLength) == 0)
|
if (memcmp(SemanticList[i].Id, ElementLevel0->GetID(), SemanticList[i].IdLength) == 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/// \todo check if it is known in the context
|
/// \todo check if it is known in the context
|
||||||
// handle the data inside the element
|
// handle the data inside the element
|
||||||
if (i < countof(SemanticList)) {
|
if (i < countof(SemanticList)) {
|
||||||
switch (SemanticList[i].Type)
|
switch (SemanticList[i].Type)
|
||||||
{
|
{
|
||||||
case EBML_U_INTEGER:
|
case EBML_U_INTEGER:
|
||||||
EvaledElementLevel0 = new EbmlUInteger(*ElementLevel0);
|
EvaledElementLevel0 = new EbmlUInteger(*ElementLevel0);
|
||||||
break;
|
break;
|
||||||
case EBML_S_INTEGER:
|
case EBML_S_INTEGER:
|
||||||
EvaledElementLevel0 = new EbmlSInteger(*ElementLevel0);
|
EvaledElementLevel0 = new EbmlSInteger(*ElementLevel0);
|
||||||
break;
|
break;
|
||||||
case EBML_BINARY:
|
case EBML_BINARY:
|
||||||
EvaledElementLevel0 = new EbmlBinary(*ElementLevel0);
|
EvaledElementLevel0 = new EbmlBinary(*ElementLevel0);
|
||||||
break;
|
break;
|
||||||
case EBML_STRING:
|
case EBML_STRING:
|
||||||
EvaledElementLevel0 = new EbmlString(*ElementLevel0);
|
EvaledElementLevel0 = new EbmlString(*ElementLevel0);
|
||||||
break;
|
break;
|
||||||
case EBML_STRING_UNICODE:
|
case EBML_STRING_UNICODE:
|
||||||
EvaledElementLevel0 = new EbmlUnicodeString(*ElementLevel0);
|
EvaledElementLevel0 = new EbmlUnicodeString(*ElementLevel0);
|
||||||
break;
|
break;
|
||||||
case EBML_FLOAT:
|
case EBML_FLOAT:
|
||||||
EvaledElementLevel0 = new EbmlFloat(*ElementLevel0);
|
EvaledElementLevel0 = new EbmlFloat(*ElementLevel0);
|
||||||
break;
|
break;
|
||||||
case EBML_MASTER:
|
case EBML_MASTER:
|
||||||
EvaledElementLevel0 = new EbmlMaster(*ElementLevel0);
|
EvaledElementLevel0 = new EbmlMaster(*ElementLevel0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
EvaledElementLevel0->ReadData(Ebml_Wfile);
|
EvaledElementLevel0->ReadData(Ebml_Wfile);
|
||||||
|
|
||||||
switch (SemanticList[i].Type)
|
switch (SemanticList[i].Type)
|
||||||
{
|
{
|
||||||
case EBML_U_INTEGER:
|
case EBML_U_INTEGER:
|
||||||
printf(" : %d", uint32(*(EbmlUInteger*)EvaledElementLevel0));
|
printf(" : %d", uint32(*(EbmlUInteger*)EvaledElementLevel0));
|
||||||
break;
|
break;
|
||||||
case EBML_S_INTEGER:
|
case EBML_S_INTEGER:
|
||||||
printf(" : %d", int32(*(EbmlSInteger*)EvaledElementLevel0));
|
printf(" : %d", int32(*(EbmlSInteger*)EvaledElementLevel0));
|
||||||
break;
|
break;
|
||||||
case EBML_BINARY:
|
case EBML_BINARY:
|
||||||
printf(" : binary data, size = %ld", (*(EbmlBinary*)EvaledElementLevel0).GetSize());
|
printf(" : binary data, size = %ld", (*(EbmlBinary*)EvaledElementLevel0).GetSize());
|
||||||
printf(" [%02X]", binary(*(EbmlBinary*)EvaledElementLevel0));
|
printf(" [%02X]", binary(*(EbmlBinary*)EvaledElementLevel0));
|
||||||
break;
|
break;
|
||||||
case EBML_STRING:
|
case EBML_STRING:
|
||||||
printf(" : %s", std::string(*(EbmlString*)EvaledElementLevel0).data());
|
printf(" : %s", std::string(*(EbmlString*)EvaledElementLevel0).data());
|
||||||
break;
|
break;
|
||||||
case EBML_STRING_UNICODE:
|
case EBML_STRING_UNICODE:
|
||||||
printf(" : (wide chars) %ls", UTFstring(*(EbmlUnicodeString*)EvaledElementLevel0).data());
|
printf(" : (wide chars) %ls", UTFstring(*(EbmlUnicodeString*)EvaledElementLevel0).data());
|
||||||
break;
|
break;
|
||||||
case EBML_FLOAT:
|
case EBML_FLOAT:
|
||||||
printf(" : %f / %.15lf", float(*(EbmlFloat*)EvaledElementLevel0), double(*(EbmlFloat*)EvaledElementLevel0));
|
printf(" : %f / %.15lf", float(*(EbmlFloat*)EvaledElementLevel0), double(*(EbmlFloat*)EvaledElementLevel0));
|
||||||
break;
|
break;
|
||||||
case EBML_MASTER:
|
case EBML_MASTER:
|
||||||
printf(" : unsupported format 'Master'");
|
printf(" : unsupported format 'Master'");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
delete EvaledElementLevel0;
|
delete EvaledElementLevel0;
|
||||||
} else {
|
} else {
|
||||||
ElementLevel0->SkipData(Ebml_Wfile);
|
ElementLevel0->SkipData(Ebml_Wfile);
|
||||||
}
|
}
|
||||||
if (ElementLevel0 != NULL)
|
if (ElementLevel0 != NULL)
|
||||||
delete ElementLevel0;
|
delete ElementLevel0;
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
ElementLevel0 = aStream.FindNextID(0xFFFFFFFFL, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ebml_Wfile.close();
|
Ebml_Wfile.close();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
\file
|
\file
|
||||||
\version \$Id$
|
\version \$Id$
|
||||||
\author Steve Lhomme <robux4 @ users.sf.net>
|
\author Steve Lhomme <robux4 @ users.sf.net>
|
||||||
Test the writing a basic EBML file
|
Test the writing a basic EBML file
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -59,188 +59,188 @@ const char RW_FILENAME[] = "test.kax";
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\test Some test on the Cluster use
|
\test Some test on the Cluster use
|
||||||
\todo each Master element should have a context !
|
\todo each Master element should have a context !
|
||||||
\todo move the base EBML classes to a template of each type ? (defining the default value and the ID)
|
\todo move the base EBML classes to a template of each type ? (defining the default value and the ID)
|
||||||
\todo find another way than using all those static_cast (using a template ?)
|
\todo find another way than using all those static_cast (using a template ?)
|
||||||
*/
|
*/
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
printf("Test00 :\nEBML %s %s / Matroska %s %s\n", EbmlCodeVersion.c_str(), EbmlCodeDate.c_str(), KaxCodeVersion.c_str(), KaxCodeDate.c_str());
|
printf("Test00 :\nEBML %s %s / Matroska %s %s\n", EbmlCodeVersion.c_str(), EbmlCodeDate.c_str(), KaxCodeVersion.c_str(), KaxCodeDate.c_str());
|
||||||
StdIOCallback Ebml_file(RW_FILENAME, ::MODE_CREATE);
|
StdIOCallback Ebml_file(RW_FILENAME, ::MODE_CREATE);
|
||||||
|
|
||||||
///// Writing test
|
///// Writing test
|
||||||
EbmlHead TestHead;
|
EbmlHead TestHead;
|
||||||
|
|
||||||
printf("Write EBML + Matroska elements\n");
|
printf("Write EBML + Matroska elements\n");
|
||||||
EDocType & MyDocType = GetChild<EDocType>(TestHead);
|
EDocType & MyDocType = GetChild<EDocType>(TestHead);
|
||||||
*static_cast<EbmlString *>(&MyDocType) = "matroska";
|
*static_cast<EbmlString *>(&MyDocType) = "matroska";
|
||||||
|
|
||||||
EDocTypeVersion & MyDocTypeVer = GetChild<EDocTypeVersion>(TestHead);
|
EDocTypeVersion & MyDocTypeVer = GetChild<EDocTypeVersion>(TestHead);
|
||||||
*(static_cast<EbmlUInteger *>(&MyDocTypeVer)) = 1;
|
*(static_cast<EbmlUInteger *>(&MyDocTypeVer)) = 1;
|
||||||
|
|
||||||
EDocTypeReadVersion & MyDocTypeReadVer = GetChild<EDocTypeReadVersion>(TestHead);
|
EDocTypeReadVersion & MyDocTypeReadVer = GetChild<EDocTypeReadVersion>(TestHead);
|
||||||
*(static_cast<EbmlUInteger *>(&MyDocTypeReadVer)) = 1;
|
*(static_cast<EbmlUInteger *>(&MyDocTypeReadVer)) = 1;
|
||||||
|
|
||||||
TestHead.Render(Ebml_file);
|
TestHead.Render(Ebml_file);
|
||||||
|
|
||||||
KaxSegment FirstSegment;
|
KaxSegment FirstSegment;
|
||||||
// size is unknown and will always be, we can render it right away
|
// size is unknown and will always be, we can render it right away
|
||||||
FirstSegment.Render(Ebml_file);
|
FirstSegment.Render(Ebml_file);
|
||||||
|
|
||||||
KaxAttachments * pAllAttachments = static_cast<KaxAttachments *>(FirstSegment.FindFirstElt(KaxAttachments::ClassInfos, true));
|
KaxAttachments * pAllAttachments = static_cast<KaxAttachments *>(FirstSegment.FindFirstElt(KaxAttachments::ClassInfos, true));
|
||||||
if (pAllAttachments == NULL)
|
if (pAllAttachments == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
pAllAttachments->SetSizeInfinite();
|
pAllAttachments->SetSizeInfinite();
|
||||||
// size is unknown and will always be, we can render it right away
|
// size is unknown and will always be, we can render it right away
|
||||||
pAllAttachments->Render(Ebml_file);
|
pAllAttachments->Render(Ebml_file);
|
||||||
|
|
||||||
KaxAttached * pAttachment1 = static_cast<KaxAttached *>(pAllAttachments->FindFirstElt(KaxAttached::ClassInfos, true));
|
KaxAttached * pAttachment1 = static_cast<KaxAttached *>(pAllAttachments->FindFirstElt(KaxAttached::ClassInfos, true));
|
||||||
if (pAttachment1 == NULL)
|
if (pAttachment1 == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
KaxFileName * pFileName1 = static_cast<KaxFileName *>(pAttachment1->FindFirstElt(KaxFileName::ClassInfos, true));
|
KaxFileName * pFileName1 = static_cast<KaxFileName *>(pAttachment1->FindFirstElt(KaxFileName::ClassInfos, true));
|
||||||
if (pFileName1 == NULL)
|
if (pFileName1 == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
*static_cast<EbmlUnicodeString *>(pFileName1) = "file1.txt";
|
*static_cast<EbmlUnicodeString *>(pFileName1) = "file1.txt";
|
||||||
KaxFileData * pFileData1 = static_cast<KaxFileData *>(pAttachment1->FindFirstElt(KaxFileData::ClassInfos, true));
|
KaxFileData * pFileData1 = static_cast<KaxFileData *>(pAttachment1->FindFirstElt(KaxFileData::ClassInfos, true));
|
||||||
if (pFileData1 == NULL)
|
if (pFileData1 == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
char Buffer1[] = "Ah ah ah !";
|
char Buffer1[] = "Ah ah ah !";
|
||||||
static_cast<EbmlBinary *>(pFileData1)->SetBuffer((const binary*) Buffer1, countof(Buffer1));
|
static_cast<EbmlBinary *>(pFileData1)->SetBuffer((const binary*) Buffer1, countof(Buffer1));
|
||||||
// should produce an error if the size is not infinite and the data has been rendered
|
// should produce an error if the size is not infinite and the data has been rendered
|
||||||
pAttachment1->Render(Ebml_file);
|
pAttachment1->Render(Ebml_file);
|
||||||
|
|
||||||
KaxAttached * pAttachment2 = static_cast<KaxAttached *>(pAllAttachments->AddNewElt(KaxAttached::ClassInfos));
|
KaxAttached * pAttachment2 = static_cast<KaxAttached *>(pAllAttachments->AddNewElt(KaxAttached::ClassInfos));
|
||||||
if (pAttachment2 == NULL)
|
if (pAttachment2 == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
KaxFileName * pFileName2 = static_cast<KaxFileName *>(pAttachment2->FindFirstElt(KaxFileName::ClassInfos, true));
|
KaxFileName * pFileName2 = static_cast<KaxFileName *>(pAttachment2->FindFirstElt(KaxFileName::ClassInfos, true));
|
||||||
if (pFileName2 == NULL)
|
if (pFileName2 == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
*static_cast<EbmlUnicodeString *>(pFileName2) = "file2.txt";
|
*static_cast<EbmlUnicodeString *>(pFileName2) = "file2.txt";
|
||||||
// Add a void element (data is discarded)
|
// Add a void element (data is discarded)
|
||||||
EbmlVoid * pVoid = static_cast<EbmlVoid *>(pAttachment2->FindFirstElt(EbmlVoid::ClassInfos, true));
|
EbmlVoid * pVoid = static_cast<EbmlVoid *>(pAttachment2->FindFirstElt(EbmlVoid::ClassInfos, true));
|
||||||
if (pVoid == NULL)
|
if (pVoid == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
static_cast<EbmlBinary *>(pVoid)->SetBuffer((const binary*) Buffer1, countof(Buffer1));
|
static_cast<EbmlBinary *>(pVoid)->SetBuffer((const binary*) Buffer1, countof(Buffer1));
|
||||||
pAttachment2->Render(Ebml_file);
|
pAttachment2->Render(Ebml_file);
|
||||||
|
|
||||||
#ifdef SKIP_ATTACHED
|
#ifdef SKIP_ATTACHED
|
||||||
KaxSegment SecondSegment;
|
KaxSegment SecondSegment;
|
||||||
// size is unknown and will always be, we can render it right away
|
// size is unknown and will always be, we can render it right away
|
||||||
SecondSegment.Render(Ebml_file);
|
SecondSegment.Render(Ebml_file);
|
||||||
#endif // SKIP_ATTACHED
|
#endif // SKIP_ATTACHED
|
||||||
|
|
||||||
Ebml_file.close();
|
Ebml_file.close();
|
||||||
|
|
||||||
///// Reading test
|
///// Reading test
|
||||||
StdIOCallback Ebml_Wfile(RW_FILENAME, ::MODE_READ);
|
StdIOCallback Ebml_Wfile(RW_FILENAME, ::MODE_READ);
|
||||||
|
|
||||||
// example 1 skip all the elements found
|
// example 1 skip all the elements found
|
||||||
EbmlStream aStream(Ebml_Wfile);
|
EbmlStream aStream(Ebml_Wfile);
|
||||||
EbmlElement * ElementLevel0;
|
EbmlElement * ElementLevel0;
|
||||||
EbmlElement * ElementLevel1;
|
EbmlElement * ElementLevel1;
|
||||||
EbmlElement * ElementLevel2;
|
EbmlElement * ElementLevel2;
|
||||||
EbmlElement * ElementLevel3;
|
EbmlElement * ElementLevel3;
|
||||||
|
|
||||||
// read the data until a possible element is found (valid ID + size combination)
|
// read the data until a possible element is found (valid ID + size combination)
|
||||||
printf("Read EBML elements & skip data\n");
|
printf("Read EBML elements & skip data\n");
|
||||||
// find the EBML head in the file
|
// find the EBML head in the file
|
||||||
ElementLevel0 = aStream.FindNextID(EbmlHead::ClassInfos, 0xFFFFFFFFL, false);
|
ElementLevel0 = aStream.FindNextID(EbmlHead::ClassInfos, 0xFFFFFFFFL, false);
|
||||||
if (ElementLevel0 != NULL)
|
if (ElementLevel0 != NULL)
|
||||||
{
|
{
|
||||||
printf("ID : ");
|
printf("ID : ");
|
||||||
for (unsigned int i=0; i<EbmlId(*ElementLevel0).Length; i++)
|
for (unsigned int i=0; i<EbmlId(*ElementLevel0).Length; i++)
|
||||||
{
|
{
|
||||||
printf("[%02X]", EbmlId(*ElementLevel0).Value[i]);
|
printf("[%02X]", EbmlId(*ElementLevel0).Value[i]);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
ElementLevel0->SkipData(aStream, EbmlHead_Context);
|
ElementLevel0->SkipData(aStream, EbmlHead_Context);
|
||||||
if (ElementLevel0 != NULL)
|
if (ElementLevel0 != NULL)
|
||||||
delete ElementLevel0;
|
delete ElementLevel0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// example to read attachements in the file
|
// example to read attachements in the file
|
||||||
ElementLevel0 = aStream.FindNextID(KaxSegment::ClassInfos, 0xFFFFFFFFL, false);
|
ElementLevel0 = aStream.FindNextID(KaxSegment::ClassInfos, 0xFFFFFFFFL, false);
|
||||||
while (ElementLevel0 != NULL)
|
while (ElementLevel0 != NULL)
|
||||||
{
|
{
|
||||||
printf("ID : ");
|
printf("ID : ");
|
||||||
for (unsigned int i=0; i<EbmlId(*ElementLevel0).Length; i++)
|
for (unsigned int i=0; i<EbmlId(*ElementLevel0).Length; i++)
|
||||||
{
|
{
|
||||||
printf("[%02X]", EbmlId(*ElementLevel0).Value[i]);
|
printf("[%02X]", EbmlId(*ElementLevel0).Value[i]);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
int bUpperElement = 0;
|
int bUpperElement = 0;
|
||||||
|
|
||||||
ElementLevel1 = aStream.FindNextID(KaxSegment_Context, bUpperElement, 0xFFFFFFFFL, true);
|
ElementLevel1 = aStream.FindNextID(KaxSegment_Context, bUpperElement, 0xFFFFFFFFL, true);
|
||||||
|
|
||||||
while (ElementLevel1 != NULL) {
|
while (ElementLevel1 != NULL) {
|
||||||
/// \todo switch the type of the element to check if it's one we want to handle, like attachements
|
/// \todo switch the type of the element to check if it's one we want to handle, like attachements
|
||||||
if (EbmlId(*ElementLevel1) == KaxAttachments::ClassInfos.GlobalId) {
|
if (EbmlId(*ElementLevel1) == KaxAttachments::ClassInfos.GlobalId) {
|
||||||
printf("Attachments detected\n");
|
printf("Attachments detected\n");
|
||||||
|
|
||||||
ElementLevel2 = aStream.FindNextID(KaxAttachments_Context, bUpperElement, 0xFFFFFFFFL, true);
|
ElementLevel2 = aStream.FindNextID(KaxAttachments_Context, bUpperElement, 0xFFFFFFFFL, true);
|
||||||
while (ElementLevel2 != NULL) {
|
while (ElementLevel2 != NULL) {
|
||||||
/// \todo switch the type of the element to check if it's one we want to handle, like attachements
|
/// \todo switch the type of the element to check if it's one we want to handle, like attachements
|
||||||
if (EbmlId(*ElementLevel2) == KaxAttached::ClassInfos.GlobalId) {
|
if (EbmlId(*ElementLevel2) == KaxAttached::ClassInfos.GlobalId) {
|
||||||
printf("Attached file detected\n");
|
printf("Attached file detected\n");
|
||||||
}
|
}
|
||||||
#ifdef SKIP_ATTACHED
|
#ifdef SKIP_ATTACHED
|
||||||
ElementLevel2 = ElementLevel2->SkipData(aStream, KaxAttached_Context);
|
ElementLevel2 = ElementLevel2->SkipData(aStream, KaxAttached_Context);
|
||||||
if (ElementLevel2 == NULL) {
|
if (ElementLevel2 == NULL) {
|
||||||
ElementLevel2 = aStream.FindNextID(KaxAttachments_Context, bUpperElement, 0xFFFFFFFFL, true);
|
ElementLevel2 = aStream.FindNextID(KaxAttachments_Context, bUpperElement, 0xFFFFFFFFL, true);
|
||||||
|
|
||||||
if (bUpperElement) {
|
if (bUpperElement) {
|
||||||
printf("Upper level1 element found\n");
|
printf("Upper level1 element found\n");
|
||||||
delete ElementLevel1;
|
delete ElementLevel1;
|
||||||
ElementLevel1 = ElementLevel2;
|
ElementLevel1 = ElementLevel2;
|
||||||
ElementLevel2 = NULL;
|
ElementLevel2 = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // SKIP_ATTACHED
|
#else // SKIP_ATTACHED
|
||||||
// Display the filename (if it exists)
|
// Display the filename (if it exists)
|
||||||
ElementLevel3 = aStream.FindNextID(KaxAttached_Context, bUpperElement, 0xFFFFFFFFL, false);
|
ElementLevel3 = aStream.FindNextID(KaxAttached_Context, bUpperElement, 0xFFFFFFFFL, false);
|
||||||
while (ElementLevel3 != NULL) {
|
while (ElementLevel3 != NULL) {
|
||||||
/// \todo switch the type of the element to check if it's one we want to handle, like attachements
|
/// \todo switch the type of the element to check if it's one we want to handle, like attachements
|
||||||
if (EbmlId(*ElementLevel3) == KaxFileName::ClassInfos.GlobalId) {
|
if (EbmlId(*ElementLevel3) == KaxFileName::ClassInfos.GlobalId) {
|
||||||
KaxFileName & tmp = *static_cast<KaxFileName*>(ElementLevel3);
|
KaxFileName & tmp = *static_cast<KaxFileName*>(ElementLevel3);
|
||||||
tmp.ReadData(aStream.I_O());
|
tmp.ReadData(aStream.I_O());
|
||||||
printf("File Name = %ls\n", UTFstring(tmp).c_str());
|
printf("File Name = %ls\n", UTFstring(tmp).c_str());
|
||||||
} else {
|
} else {
|
||||||
ElementLevel3->SkipData(aStream, KaxAttached_Context);
|
ElementLevel3->SkipData(aStream, KaxAttached_Context);
|
||||||
}
|
}
|
||||||
delete ElementLevel3;
|
delete ElementLevel3;
|
||||||
ElementLevel3 = aStream.FindNextID(KaxAttached_Context, bUpperElement, 0xFFFFFFFFL, false);
|
ElementLevel3 = aStream.FindNextID(KaxAttached_Context, bUpperElement, 0xFFFFFFFFL, false);
|
||||||
if (bUpperElement)
|
if (bUpperElement)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bUpperElement) {
|
if (bUpperElement) {
|
||||||
delete ElementLevel2;
|
delete ElementLevel2;
|
||||||
ElementLevel2 = ElementLevel3;
|
ElementLevel2 = ElementLevel3;
|
||||||
} else {
|
} else {
|
||||||
ElementLevel2->SkipData(aStream, KaxAttached_Context);
|
ElementLevel2->SkipData(aStream, KaxAttached_Context);
|
||||||
delete ElementLevel2;
|
delete ElementLevel2;
|
||||||
|
|
||||||
ElementLevel2 = aStream.FindNextID(KaxAttachments_Context, bUpperElement, 0xFFFFFFFFL, true);
|
ElementLevel2 = aStream.FindNextID(KaxAttachments_Context, bUpperElement, 0xFFFFFFFFL, true);
|
||||||
}
|
}
|
||||||
#endif // SKIP_ATTACHED
|
#endif // SKIP_ATTACHED
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ElementLevel1->SkipData(aStream, KaxAttachments_Context);
|
ElementLevel1->SkipData(aStream, KaxAttachments_Context);
|
||||||
delete ElementLevel1;
|
delete ElementLevel1;
|
||||||
|
|
||||||
ElementLevel1 = aStream.FindNextID(KaxSegment_Context, bUpperElement, 0xFFFFFFFFL, true);
|
ElementLevel1 = aStream.FindNextID(KaxSegment_Context, bUpperElement, 0xFFFFFFFFL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
ElementLevel0->SkipData(aStream, KaxSegment_Context);
|
ElementLevel0->SkipData(aStream, KaxSegment_Context);
|
||||||
if (ElementLevel0 != NULL)
|
if (ElementLevel0 != NULL)
|
||||||
delete ElementLevel0;
|
delete ElementLevel0;
|
||||||
|
|
||||||
ElementLevel0 = aStream.FindNextID(KaxSegment_Context, bUpperElement, 0xFFFFFFFFL, true);
|
ElementLevel0 = aStream.FindNextID(KaxSegment_Context, bUpperElement, 0xFFFFFFFFL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ebml_Wfile.close();
|
Ebml_Wfile.close();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -73,279 +73,279 @@ int main(int argc, char **argv)
|
|||||||
cout << "Creating \"muxed.mkv\"" << endl;
|
cout << "Creating \"muxed.mkv\"" << endl;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// write the head of the file (with everything already configured)
|
// write the head of the file (with everything already configured)
|
||||||
StdIOCallback out_file("muxed.mkv", MODE_CREATE);
|
StdIOCallback out_file("muxed.mkv", MODE_CREATE);
|
||||||
|
|
||||||
///// Writing EBML test
|
///// Writing EBML test
|
||||||
EbmlHead FileHead;
|
EbmlHead FileHead;
|
||||||
|
|
||||||
EDocType & MyDocType = GetChild<EDocType>(FileHead);
|
EDocType & MyDocType = GetChild<EDocType>(FileHead);
|
||||||
*static_cast<EbmlString *>(&MyDocType) = "matroska";
|
*static_cast<EbmlString *>(&MyDocType) = "matroska";
|
||||||
|
|
||||||
EDocTypeVersion & MyDocTypeVer = GetChild<EDocTypeVersion>(FileHead);
|
EDocTypeVersion & MyDocTypeVer = GetChild<EDocTypeVersion>(FileHead);
|
||||||
*(static_cast<EbmlUInteger *>(&MyDocTypeVer)) = MATROSKA_VERSION;
|
*(static_cast<EbmlUInteger *>(&MyDocTypeVer)) = MATROSKA_VERSION;
|
||||||
|
|
||||||
EDocTypeReadVersion & MyDocTypeReadVer = GetChild<EDocTypeReadVersion>(FileHead);
|
EDocTypeReadVersion & MyDocTypeReadVer = GetChild<EDocTypeReadVersion>(FileHead);
|
||||||
*(static_cast<EbmlUInteger *>(&MyDocTypeReadVer)) = 1;
|
*(static_cast<EbmlUInteger *>(&MyDocTypeReadVer)) = 1;
|
||||||
|
|
||||||
FileHead.Render(out_file, bWriteDefaultValues);
|
FileHead.Render(out_file, bWriteDefaultValues);
|
||||||
|
|
||||||
KaxSegment FileSegment;
|
KaxSegment FileSegment;
|
||||||
|
|
||||||
// size is unknown and will always be, we can render it right away
|
// size is unknown and will always be, we can render it right away
|
||||||
uint64 SegmentSize = FileSegment.WriteHead(out_file, 5, bWriteDefaultValues);
|
uint64 SegmentSize = FileSegment.WriteHead(out_file, 5, bWriteDefaultValues);
|
||||||
|
|
||||||
KaxTracks & MyTracks = GetChild<KaxTracks>(FileSegment);
|
KaxTracks & MyTracks = GetChild<KaxTracks>(FileSegment);
|
||||||
|
|
||||||
// reserve some space for the Meta Seek writen at the end
|
// reserve some space for the Meta Seek writen at the end
|
||||||
EbmlVoid Dummy;
|
EbmlVoid Dummy;
|
||||||
Dummy.SetSize(300); // 300 octets
|
Dummy.SetSize(300); // 300 octets
|
||||||
Dummy.Render(out_file, bWriteDefaultValues);
|
Dummy.Render(out_file, bWriteDefaultValues);
|
||||||
|
|
||||||
KaxSeekHead MetaSeek;
|
KaxSeekHead MetaSeek;
|
||||||
|
|
||||||
// fill the mandatory Info section
|
// fill the mandatory Info section
|
||||||
KaxInfo & MyInfos = GetChild<KaxInfo>(FileSegment);
|
KaxInfo & MyInfos = GetChild<KaxInfo>(FileSegment);
|
||||||
KaxTimecodeScale & TimeScale = GetChild<KaxTimecodeScale>(MyInfos);
|
KaxTimecodeScale & TimeScale = GetChild<KaxTimecodeScale>(MyInfos);
|
||||||
*(static_cast<EbmlUInteger *>(&TimeScale)) = TIMECODE_SCALE;
|
*(static_cast<EbmlUInteger *>(&TimeScale)) = TIMECODE_SCALE;
|
||||||
|
|
||||||
KaxDuration & SegDuration = GetChild<KaxDuration>(MyInfos);
|
KaxDuration & SegDuration = GetChild<KaxDuration>(MyInfos);
|
||||||
*(static_cast<EbmlFloat *>(&SegDuration)) = 0.0;
|
*(static_cast<EbmlFloat *>(&SegDuration)) = 0.0;
|
||||||
|
|
||||||
*((EbmlUnicodeString *)&GetChild<KaxMuxingApp>(MyInfos)) = L"libmatroska 0.5.0";
|
*((EbmlUnicodeString *)&GetChild<KaxMuxingApp>(MyInfos)) = L"libmatroska 0.5.0";
|
||||||
*((EbmlUnicodeString *)&GetChild<KaxWritingApp>(MyInfos)) = L"éàôï";
|
*((EbmlUnicodeString *)&GetChild<KaxWritingApp>(MyInfos)) = L"éàôï";
|
||||||
GetChild<KaxWritingApp>(MyInfos).SetDefaultSize(25);
|
GetChild<KaxWritingApp>(MyInfos).SetDefaultSize(25);
|
||||||
|
|
||||||
filepos_t InfoSize = MyInfos.Render(out_file);
|
filepos_t InfoSize = MyInfos.Render(out_file);
|
||||||
MetaSeek.IndexThis(MyInfos, FileSegment);
|
MetaSeek.IndexThis(MyInfos, FileSegment);
|
||||||
|
|
||||||
// fill track 1 params
|
// fill track 1 params
|
||||||
KaxTrackEntry & MyTrack1 = GetChild<KaxTrackEntry>(MyTracks);
|
KaxTrackEntry & MyTrack1 = GetChild<KaxTrackEntry>(MyTracks);
|
||||||
MyTrack1.SetGlobalTimecodeScale(TIMECODE_SCALE);
|
MyTrack1.SetGlobalTimecodeScale(TIMECODE_SCALE);
|
||||||
|
|
||||||
KaxTrackNumber & MyTrack1Number = GetChild<KaxTrackNumber>(MyTrack1);
|
KaxTrackNumber & MyTrack1Number = GetChild<KaxTrackNumber>(MyTrack1);
|
||||||
*(static_cast<EbmlUInteger *>(&MyTrack1Number)) = 1;
|
*(static_cast<EbmlUInteger *>(&MyTrack1Number)) = 1;
|
||||||
|
|
||||||
KaxTrackUID & MyTrack1UID = GetChild<KaxTrackUID>(MyTrack1);
|
KaxTrackUID & MyTrack1UID = GetChild<KaxTrackUID>(MyTrack1);
|
||||||
*(static_cast<EbmlUInteger *>(&MyTrack1UID)) = 7;
|
*(static_cast<EbmlUInteger *>(&MyTrack1UID)) = 7;
|
||||||
|
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxTrackType>(MyTrack1))) = track_audio;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxTrackType>(MyTrack1))) = track_audio;
|
||||||
|
|
||||||
KaxCodecID & MyTrack1CodecID = GetChild<KaxCodecID>(MyTrack1);
|
KaxCodecID & MyTrack1CodecID = GetChild<KaxCodecID>(MyTrack1);
|
||||||
*static_cast<EbmlString *>(&MyTrack1CodecID) = "Dummy Audio Codec";
|
*static_cast<EbmlString *>(&MyTrack1CodecID) = "Dummy Audio Codec";
|
||||||
|
|
||||||
MyTrack1.EnableLacing(true);
|
MyTrack1.EnableLacing(true);
|
||||||
|
|
||||||
// Test the new ContentEncoding elements
|
// Test the new ContentEncoding elements
|
||||||
KaxContentEncodings &cencodings = GetChild<KaxContentEncodings>(MyTrack1);
|
KaxContentEncodings &cencodings = GetChild<KaxContentEncodings>(MyTrack1);
|
||||||
KaxContentEncoding &cencoding = GetChild<KaxContentEncoding>(cencodings);
|
KaxContentEncoding &cencoding = GetChild<KaxContentEncoding>(cencodings);
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncodingOrder>(cencoding))) = 10;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncodingOrder>(cencoding))) = 10;
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncodingScope>(cencoding))) = 11;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncodingScope>(cencoding))) = 11;
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncodingType>(cencoding))) = 12;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncodingType>(cencoding))) = 12;
|
||||||
|
|
||||||
KaxContentCompression &ccompression = GetChild<KaxContentCompression>(cencoding);
|
KaxContentCompression &ccompression = GetChild<KaxContentCompression>(cencoding);
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentCompAlgo>(ccompression))) = 13;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentCompAlgo>(ccompression))) = 13;
|
||||||
GetChild<KaxContentCompSettings>(ccompression).CopyBuffer((const binary *)"hello1", 6);
|
GetChild<KaxContentCompSettings>(ccompression).CopyBuffer((const binary *)"hello1", 6);
|
||||||
|
|
||||||
KaxContentEncryption &cencryption = GetChild<KaxContentEncryption>(cencoding);
|
KaxContentEncryption &cencryption = GetChild<KaxContentEncryption>(cencoding);
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncAlgo>(cencryption))) = 14;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentEncAlgo>(cencryption))) = 14;
|
||||||
GetChild<KaxContentEncKeyID>(cencryption).CopyBuffer((const binary *)"hello2", 6);
|
GetChild<KaxContentEncKeyID>(cencryption).CopyBuffer((const binary *)"hello2", 6);
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentSigAlgo>(cencryption))) = 15;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentSigAlgo>(cencryption))) = 15;
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentSigHashAlgo>(cencryption))) = 16;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxContentSigHashAlgo>(cencryption))) = 16;
|
||||||
GetChild<KaxContentSigKeyID>(cencryption).CopyBuffer((const binary *)"hello3", 6);
|
GetChild<KaxContentSigKeyID>(cencryption).CopyBuffer((const binary *)"hello3", 6);
|
||||||
GetChild<KaxContentSignature>(cencryption).CopyBuffer((const binary *)"hello4", 6);
|
GetChild<KaxContentSignature>(cencryption).CopyBuffer((const binary *)"hello4", 6);
|
||||||
|
|
||||||
// audio specific params
|
// audio specific params
|
||||||
KaxTrackAudio & MyTrack1Audio = GetChild<KaxTrackAudio>(MyTrack1);
|
KaxTrackAudio & MyTrack1Audio = GetChild<KaxTrackAudio>(MyTrack1);
|
||||||
|
|
||||||
KaxAudioSamplingFreq & MyTrack1Freq = GetChild<KaxAudioSamplingFreq>(MyTrack1Audio);
|
KaxAudioSamplingFreq & MyTrack1Freq = GetChild<KaxAudioSamplingFreq>(MyTrack1Audio);
|
||||||
*(static_cast<EbmlFloat *>(&MyTrack1Freq)) = 44100.0;
|
*(static_cast<EbmlFloat *>(&MyTrack1Freq)) = 44100.0;
|
||||||
MyTrack1Freq.ValidateSize();
|
MyTrack1Freq.ValidateSize();
|
||||||
|
|
||||||
#if MATROSKA_VERSION >= 2
|
#if MATROSKA_VERSION >= 2
|
||||||
KaxAudioPosition & MyTrack1Pos = GetChild<KaxAudioPosition>(MyTrack1Audio);
|
KaxAudioPosition & MyTrack1Pos = GetChild<KaxAudioPosition>(MyTrack1Audio);
|
||||||
binary *_Pos = new binary[5];
|
binary *_Pos = new binary[5];
|
||||||
_Pos[0] = '0';
|
_Pos[0] = '0';
|
||||||
_Pos[1] = '1';
|
_Pos[1] = '1';
|
||||||
_Pos[2] = '2';
|
_Pos[2] = '2';
|
||||||
_Pos[3] = '3';
|
_Pos[3] = '3';
|
||||||
_Pos[4] = '\0';
|
_Pos[4] = '\0';
|
||||||
MyTrack1Pos.SetBuffer(_Pos, 5);
|
MyTrack1Pos.SetBuffer(_Pos, 5);
|
||||||
#endif // MATROSKA_VERSION
|
#endif // MATROSKA_VERSION
|
||||||
|
|
||||||
KaxAudioChannels & MyTrack1Channels = GetChild<KaxAudioChannels>(MyTrack1Audio);
|
KaxAudioChannels & MyTrack1Channels = GetChild<KaxAudioChannels>(MyTrack1Audio);
|
||||||
*(static_cast<EbmlUInteger *>(&MyTrack1Channels)) = 2;
|
*(static_cast<EbmlUInteger *>(&MyTrack1Channels)) = 2;
|
||||||
|
|
||||||
// fill track 2 params
|
// fill track 2 params
|
||||||
KaxTrackEntry & MyTrack2 = GetNextChild<KaxTrackEntry>(MyTracks, MyTrack1);
|
KaxTrackEntry & MyTrack2 = GetNextChild<KaxTrackEntry>(MyTracks, MyTrack1);
|
||||||
MyTrack2.SetGlobalTimecodeScale(TIMECODE_SCALE);
|
MyTrack2.SetGlobalTimecodeScale(TIMECODE_SCALE);
|
||||||
|
|
||||||
KaxTrackNumber & MyTrack2Number = GetChild<KaxTrackNumber>(MyTrack2);
|
KaxTrackNumber & MyTrack2Number = GetChild<KaxTrackNumber>(MyTrack2);
|
||||||
*(static_cast<EbmlUInteger *>(&MyTrack2Number)) = 200;
|
*(static_cast<EbmlUInteger *>(&MyTrack2Number)) = 200;
|
||||||
|
|
||||||
KaxTrackUID & MyTrack2UID = GetChild<KaxTrackUID>(MyTrack2);
|
KaxTrackUID & MyTrack2UID = GetChild<KaxTrackUID>(MyTrack2);
|
||||||
*(static_cast<EbmlUInteger *>(&MyTrack2UID)) = 13;
|
*(static_cast<EbmlUInteger *>(&MyTrack2UID)) = 13;
|
||||||
|
|
||||||
*(static_cast<EbmlUInteger *>(&GetChild<KaxTrackType>(MyTrack2))) = track_video;
|
*(static_cast<EbmlUInteger *>(&GetChild<KaxTrackType>(MyTrack2))) = track_video;
|
||||||
|
|
||||||
KaxCodecID & MyTrack2CodecID = GetChild<KaxCodecID>(MyTrack2);
|
KaxCodecID & MyTrack2CodecID = GetChild<KaxCodecID>(MyTrack2);
|
||||||
*static_cast<EbmlString *>(&MyTrack2CodecID) = "Dummy Video Codec";
|
*static_cast<EbmlString *>(&MyTrack2CodecID) = "Dummy Video Codec";
|
||||||
|
|
||||||
MyTrack2.EnableLacing(false);
|
MyTrack2.EnableLacing(false);
|
||||||
|
|
||||||
// video specific params
|
// video specific params
|
||||||
KaxTrackVideo & MyTrack2Video = GetChild<KaxTrackVideo>(MyTrack2);
|
KaxTrackVideo & MyTrack2Video = GetChild<KaxTrackVideo>(MyTrack2);
|
||||||
|
|
||||||
KaxVideoPixelHeight & MyTrack2PHeight = GetChild<KaxVideoPixelHeight>(MyTrack2Video);
|
KaxVideoPixelHeight & MyTrack2PHeight = GetChild<KaxVideoPixelHeight>(MyTrack2Video);
|
||||||
*(static_cast<EbmlUInteger *>(&MyTrack2PHeight)) = 200;
|
*(static_cast<EbmlUInteger *>(&MyTrack2PHeight)) = 200;
|
||||||
|
|
||||||
KaxVideoPixelWidth & MyTrack2PWidth = GetChild<KaxVideoPixelWidth>(MyTrack2Video);
|
KaxVideoPixelWidth & MyTrack2PWidth = GetChild<KaxVideoPixelWidth>(MyTrack2Video);
|
||||||
*(static_cast<EbmlUInteger *>(&MyTrack2PWidth)) = 320;
|
*(static_cast<EbmlUInteger *>(&MyTrack2PWidth)) = 320;
|
||||||
|
|
||||||
uint64 TrackSize = MyTracks.Render(out_file, bWriteDefaultValues);
|
uint64 TrackSize = MyTracks.Render(out_file, bWriteDefaultValues);
|
||||||
|
|
||||||
KaxTracks * pMyTracks2 = static_cast<KaxTracks *>(MyTracks.Clone());
|
KaxTracks * pMyTracks2 = static_cast<KaxTracks *>(MyTracks.Clone());
|
||||||
// KaxTracks * pMyTracks2 = new KaxTracks(MyTracks);
|
// KaxTracks * pMyTracks2 = new KaxTracks(MyTracks);
|
||||||
|
|
||||||
MetaSeek.IndexThis(MyTracks, FileSegment);
|
MetaSeek.IndexThis(MyTracks, FileSegment);
|
||||||
|
|
||||||
|
|
||||||
// "manual" filling of a cluster"
|
// "manual" filling of a cluster"
|
||||||
/// \todo whenever a BlockGroup is created, we should memorize it's position
|
/// \todo whenever a BlockGroup is created, we should memorize it's position
|
||||||
KaxCues AllCues;
|
KaxCues AllCues;
|
||||||
AllCues.SetGlobalTimecodeScale(TIMECODE_SCALE);
|
AllCues.SetGlobalTimecodeScale(TIMECODE_SCALE);
|
||||||
|
|
||||||
KaxCluster Clust1;
|
KaxCluster Clust1;
|
||||||
Clust1.SetParent(FileSegment); // mandatory to store references in this Cluster
|
Clust1.SetParent(FileSegment); // mandatory to store references in this Cluster
|
||||||
Clust1.SetPreviousTimecode(0, TIMECODE_SCALE); // the first timecode here
|
Clust1.SetPreviousTimecode(0, TIMECODE_SCALE); // the first timecode here
|
||||||
Clust1.EnableChecksum();
|
Clust1.EnableChecksum();
|
||||||
|
|
||||||
// automatic filling of a Cluster
|
// automatic filling of a Cluster
|
||||||
// simple frame
|
// simple frame
|
||||||
KaxBlockGroup *MyNewBlock, *MyLastBlockTrk1 = NULL, *MyLastBlockTrk2 = NULL, *MyNewBlock2;
|
KaxBlockGroup *MyNewBlock, *MyLastBlockTrk1 = NULL, *MyLastBlockTrk2 = NULL, *MyNewBlock2;
|
||||||
DataBuffer *data7 = new DataBuffer((binary *)"tototototo", countof("tototototo"));
|
DataBuffer *data7 = new DataBuffer((binary *)"tototototo", countof("tototototo"));
|
||||||
Clust1.AddFrame(MyTrack1, 250 * TIMECODE_SCALE, *data7, MyNewBlock, LACING_EBML);
|
Clust1.AddFrame(MyTrack1, 250 * TIMECODE_SCALE, *data7, MyNewBlock, LACING_EBML);
|
||||||
if (MyNewBlock != NULL)
|
if (MyNewBlock != NULL)
|
||||||
MyLastBlockTrk1 = MyNewBlock;
|
MyLastBlockTrk1 = MyNewBlock;
|
||||||
DataBuffer *data0 = new DataBuffer((binary *)"TOTOTOTO", countof("TOTOTOTO"));
|
DataBuffer *data0 = new DataBuffer((binary *)"TOTOTOTO", countof("TOTOTOTO"));
|
||||||
Clust1.AddFrame(MyTrack1, 260 * TIMECODE_SCALE, *data0, MyNewBlock); // to test EBML lacing
|
Clust1.AddFrame(MyTrack1, 260 * TIMECODE_SCALE, *data0, MyNewBlock); // to test EBML lacing
|
||||||
if (MyNewBlock != NULL)
|
if (MyNewBlock != NULL)
|
||||||
MyLastBlockTrk1 = MyNewBlock;
|
MyLastBlockTrk1 = MyNewBlock;
|
||||||
DataBuffer *data6 = new DataBuffer((binary *)"tototototo", countof("tototototo"));
|
DataBuffer *data6 = new DataBuffer((binary *)"tototototo", countof("tototototo"));
|
||||||
Clust1.AddFrame(MyTrack1, 270 * TIMECODE_SCALE, *data6, MyNewBlock); // to test lacing
|
Clust1.AddFrame(MyTrack1, 270 * TIMECODE_SCALE, *data6, MyNewBlock); // to test lacing
|
||||||
if (MyNewBlock != NULL) {
|
if (MyNewBlock != NULL) {
|
||||||
MyLastBlockTrk1 = MyNewBlock;
|
MyLastBlockTrk1 = MyNewBlock;
|
||||||
} else {
|
} else {
|
||||||
MyLastBlockTrk1->SetBlockDuration(50 * TIMECODE_SCALE);
|
MyLastBlockTrk1->SetBlockDuration(50 * TIMECODE_SCALE);
|
||||||
}
|
}
|
||||||
|
|
||||||
DataBuffer *data5 = new DataBuffer((binary *)"tototototo", countof("tototototo"));
|
DataBuffer *data5 = new DataBuffer((binary *)"tototototo", countof("tototototo"));
|
||||||
Clust1.AddFrame(MyTrack2, 23 * TIMECODE_SCALE, *data5, MyNewBlock); // to test with another track
|
Clust1.AddFrame(MyTrack2, 23 * TIMECODE_SCALE, *data5, MyNewBlock); // to test with another track
|
||||||
|
|
||||||
// add the "real" block to the cue entries
|
// add the "real" block to the cue entries
|
||||||
KaxBlockBlob *Blob1 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
KaxBlockBlob *Blob1 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
||||||
Blob1->SetBlockGroup(*MyLastBlockTrk1);
|
Blob1->SetBlockGroup(*MyLastBlockTrk1);
|
||||||
AllCues.AddBlockBlob(*Blob1);
|
AllCues.AddBlockBlob(*Blob1);
|
||||||
|
|
||||||
// frame for Track 2
|
// frame for Track 2
|
||||||
DataBuffer *data8 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
DataBuffer *data8 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
||||||
Clust1.AddFrame(MyTrack2, 107 * TIMECODE_SCALE, *data8, MyNewBlock, *MyLastBlockTrk2);
|
Clust1.AddFrame(MyTrack2, 107 * TIMECODE_SCALE, *data8, MyNewBlock, *MyLastBlockTrk2);
|
||||||
|
|
||||||
KaxBlockBlob *Blob2 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
KaxBlockBlob *Blob2 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
||||||
Blob2->SetBlockGroup(*MyNewBlock);
|
Blob2->SetBlockGroup(*MyNewBlock);
|
||||||
AllCues.AddBlockBlob(*Blob2);
|
AllCues.AddBlockBlob(*Blob2);
|
||||||
|
|
||||||
// frame with a past reference
|
// frame with a past reference
|
||||||
DataBuffer *data4 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
DataBuffer *data4 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
||||||
Clust1.AddFrame(MyTrack1, 300 * TIMECODE_SCALE, *data4, MyNewBlock, *MyLastBlockTrk1);
|
Clust1.AddFrame(MyTrack1, 300 * TIMECODE_SCALE, *data4, MyNewBlock, *MyLastBlockTrk1);
|
||||||
|
|
||||||
// frame with a past & future reference
|
// frame with a past & future reference
|
||||||
if (MyNewBlock != NULL) {
|
if (MyNewBlock != NULL) {
|
||||||
DataBuffer *data3 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
DataBuffer *data3 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
||||||
if (Clust1.AddFrame(MyTrack1, 280 * TIMECODE_SCALE, *data3, MyNewBlock2, *MyLastBlockTrk1, *MyNewBlock)) {
|
if (Clust1.AddFrame(MyTrack1, 280 * TIMECODE_SCALE, *data3, MyNewBlock2, *MyLastBlockTrk1, *MyNewBlock)) {
|
||||||
MyNewBlock2->SetBlockDuration(20 * TIMECODE_SCALE);
|
MyNewBlock2->SetBlockDuration(20 * TIMECODE_SCALE);
|
||||||
MyLastBlockTrk1 = MyNewBlock2;
|
MyLastBlockTrk1 = MyNewBlock2;
|
||||||
} else {
|
} else {
|
||||||
printf("Error adding a frame !!!");
|
printf("Error adding a frame !!!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KaxBlockBlob *Blob3 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
KaxBlockBlob *Blob3 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
||||||
Blob3->SetBlockGroup(*MyLastBlockTrk1);
|
Blob3->SetBlockGroup(*MyLastBlockTrk1);
|
||||||
AllCues.AddBlockBlob(*Blob3);
|
AllCues.AddBlockBlob(*Blob3);
|
||||||
//AllCues.UpdateSize();
|
//AllCues.UpdateSize();
|
||||||
|
|
||||||
// simulate the writing of the stream :
|
// simulate the writing of the stream :
|
||||||
// - write an empty element with enough size for the cue entry
|
// - write an empty element with enough size for the cue entry
|
||||||
// - write the cluster(s)
|
// - write the cluster(s)
|
||||||
// - seek back in the file and write the cue entry over the empty element
|
// - seek back in the file and write the cue entry over the empty element
|
||||||
|
|
||||||
uint64 ClusterSize = Clust1.Render(out_file, AllCues, bWriteDefaultValues);
|
uint64 ClusterSize = Clust1.Render(out_file, AllCues, bWriteDefaultValues);
|
||||||
Clust1.ReleaseFrames();
|
Clust1.ReleaseFrames();
|
||||||
MetaSeek.IndexThis(Clust1, FileSegment);
|
MetaSeek.IndexThis(Clust1, FileSegment);
|
||||||
|
|
||||||
KaxCluster Clust2;
|
KaxCluster Clust2;
|
||||||
Clust2.SetParent(FileSegment); // mandatory to store references in this Cluster
|
Clust2.SetParent(FileSegment); // mandatory to store references in this Cluster
|
||||||
Clust2.SetPreviousTimecode(300 * TIMECODE_SCALE, TIMECODE_SCALE); // the first timecode here
|
Clust2.SetPreviousTimecode(300 * TIMECODE_SCALE, TIMECODE_SCALE); // the first timecode here
|
||||||
Clust2.EnableChecksum();
|
Clust2.EnableChecksum();
|
||||||
|
|
||||||
DataBuffer *data2 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
DataBuffer *data2 = new DataBuffer((binary *)"tttyyy", countof("tttyyy"));
|
||||||
Clust2.AddFrame(MyTrack1, 350 * TIMECODE_SCALE, *data2, MyNewBlock, *MyLastBlockTrk1);
|
Clust2.AddFrame(MyTrack1, 350 * TIMECODE_SCALE, *data2, MyNewBlock, *MyLastBlockTrk1);
|
||||||
|
|
||||||
KaxBlockBlob *Blob4 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
KaxBlockBlob *Blob4 = new KaxBlockBlob(BLOCK_BLOB_NO_SIMPLE);
|
||||||
Blob4->SetBlockGroup(*MyNewBlock);
|
Blob4->SetBlockGroup(*MyNewBlock);
|
||||||
AllCues.AddBlockBlob(*Blob4);
|
AllCues.AddBlockBlob(*Blob4);
|
||||||
|
|
||||||
ClusterSize += Clust2.Render(out_file, AllCues, bWriteDefaultValues);
|
ClusterSize += Clust2.Render(out_file, AllCues, bWriteDefaultValues);
|
||||||
Clust2.ReleaseFrames();
|
Clust2.ReleaseFrames();
|
||||||
|
|
||||||
// older version, write at the end AllCues.Render(out_file);
|
// older version, write at the end AllCues.Render(out_file);
|
||||||
filepos_t CueSize = AllCues.Render(out_file, bWriteDefaultValues);
|
filepos_t CueSize = AllCues.Render(out_file, bWriteDefaultValues);
|
||||||
MetaSeek.IndexThis(AllCues, FileSegment);
|
MetaSeek.IndexThis(AllCues, FileSegment);
|
||||||
|
|
||||||
// Chapters
|
// Chapters
|
||||||
KaxChapters Chapters;
|
KaxChapters Chapters;
|
||||||
Chapters.EnableChecksum();
|
Chapters.EnableChecksum();
|
||||||
KaxEditionEntry & aEdition = GetChild<KaxEditionEntry>(Chapters);
|
KaxEditionEntry & aEdition = GetChild<KaxEditionEntry>(Chapters);
|
||||||
KaxChapterAtom & aAtom = GetChild<KaxChapterAtom>(aEdition);
|
KaxChapterAtom & aAtom = GetChild<KaxChapterAtom>(aEdition);
|
||||||
KaxChapterUID & aUID = GetChild<KaxChapterUID>(aAtom);
|
KaxChapterUID & aUID = GetChild<KaxChapterUID>(aAtom);
|
||||||
*static_cast<EbmlUInteger *>(&aUID) = 0x67890;
|
*static_cast<EbmlUInteger *>(&aUID) = 0x67890;
|
||||||
|
|
||||||
KaxChapterTimeStart & aChapStart = GetChild<KaxChapterTimeStart>(aAtom);
|
KaxChapterTimeStart & aChapStart = GetChild<KaxChapterTimeStart>(aAtom);
|
||||||
*static_cast<EbmlUInteger *>(&aChapStart) = 0;
|
*static_cast<EbmlUInteger *>(&aChapStart) = 0;
|
||||||
|
|
||||||
KaxChapterTimeEnd & aChapEnd = GetChild<KaxChapterTimeEnd>(aAtom);
|
KaxChapterTimeEnd & aChapEnd = GetChild<KaxChapterTimeEnd>(aAtom);
|
||||||
*static_cast<EbmlUInteger *>(&aChapEnd) = 300 * TIMECODE_SCALE;
|
*static_cast<EbmlUInteger *>(&aChapEnd) = 300 * TIMECODE_SCALE;
|
||||||
|
|
||||||
KaxChapterDisplay & aDisplay = GetChild<KaxChapterDisplay>(aAtom);
|
KaxChapterDisplay & aDisplay = GetChild<KaxChapterDisplay>(aAtom);
|
||||||
KaxChapterString & aChapString = GetChild<KaxChapterString>(aDisplay);
|
KaxChapterString & aChapString = GetChild<KaxChapterString>(aDisplay);
|
||||||
*static_cast<EbmlUnicodeString *>(&aChapString) = L"Le film réduit à un chapitre";
|
*static_cast<EbmlUnicodeString *>(&aChapString) = L"Le film réduit à un chapitre";
|
||||||
|
|
||||||
KaxChapterLanguage & aChapLang = GetChild<KaxChapterLanguage>(aDisplay);
|
KaxChapterLanguage & aChapLang = GetChild<KaxChapterLanguage>(aDisplay);
|
||||||
*static_cast<EbmlString *>(&aChapLang) = "fra";
|
*static_cast<EbmlString *>(&aChapLang) = "fra";
|
||||||
|
|
||||||
KaxChapterDisplay & aDisplay2 = GetNextChild<KaxChapterDisplay>(aAtom, aDisplay);
|
KaxChapterDisplay & aDisplay2 = GetNextChild<KaxChapterDisplay>(aAtom, aDisplay);
|
||||||
KaxChapterString & aChapString2 = GetChild<KaxChapterString>(aDisplay2);
|
KaxChapterString & aChapString2 = GetChild<KaxChapterString>(aDisplay2);
|
||||||
*static_cast<EbmlUnicodeString *>(&aChapString2) = L"The movie in one chapter";
|
*static_cast<EbmlUnicodeString *>(&aChapString2) = L"The movie in one chapter";
|
||||||
|
|
||||||
KaxChapterLanguage & aChapLang2 = GetChild<KaxChapterLanguage>(aDisplay2);
|
KaxChapterLanguage & aChapLang2 = GetChild<KaxChapterLanguage>(aDisplay2);
|
||||||
*static_cast<EbmlString *>(&aChapLang2) = "eng";
|
*static_cast<EbmlString *>(&aChapLang2) = "eng";
|
||||||
|
|
||||||
filepos_t ChapterSize = Chapters.Render(out_file, bWriteDefaultValues);
|
filepos_t ChapterSize = Chapters.Render(out_file, bWriteDefaultValues);
|
||||||
MetaSeek.IndexThis(Chapters, FileSegment);
|
MetaSeek.IndexThis(Chapters, FileSegment);
|
||||||
|
|
||||||
// Write some tags
|
// Write some tags
|
||||||
KaxTags AllTags;
|
KaxTags AllTags;
|
||||||
AllTags.EnableChecksum();
|
AllTags.EnableChecksum();
|
||||||
KaxTag & aTag = GetChild<KaxTag>(AllTags);
|
KaxTag & aTag = GetChild<KaxTag>(AllTags);
|
||||||
KaxTagTargets & Targets = GetChild<KaxTagTargets>(aTag);
|
KaxTagTargets & Targets = GetChild<KaxTagTargets>(aTag);
|
||||||
KaxTagSimple & TagSimple = GetChild<KaxTagSimple>(aTag);
|
KaxTagSimple & TagSimple = GetChild<KaxTagSimple>(aTag);
|
||||||
|
|
||||||
KaxTagTrackUID & TrackUID = GetChild<KaxTagTrackUID>(Targets);
|
KaxTagTrackUID & TrackUID = GetChild<KaxTagTrackUID>(Targets);
|
||||||
*static_cast<EbmlUInteger *>(&TrackUID) = 0x12345;
|
*static_cast<EbmlUInteger *>(&TrackUID) = 0x12345;
|
||||||
|
|
||||||
KaxTagChapterUID & ChapterUID = GetChild<KaxTagChapterUID>(Targets);
|
KaxTagChapterUID & ChapterUID = GetChild<KaxTagChapterUID>(Targets);
|
||||||
*static_cast<EbmlUInteger *>(&ChapterUID) = 0x67890;
|
*static_cast<EbmlUInteger *>(&ChapterUID) = 0x67890;
|
||||||
|
|
||||||
KaxTagName & aTagName = GetChild<KaxTagName>(TagSimple);
|
KaxTagName & aTagName = GetChild<KaxTagName>(TagSimple);
|
||||||
*static_cast<EbmlUnicodeString *>(&aTagName) = L"NAME";
|
*static_cast<EbmlUnicodeString *>(&aTagName) = L"NAME";
|
||||||
@ -353,35 +353,35 @@ int main(int argc, char **argv)
|
|||||||
KaxTagString & aTagtring = GetChild<KaxTagString>(TagSimple);
|
KaxTagString & aTagtring = GetChild<KaxTagString>(TagSimple);
|
||||||
*static_cast<EbmlUnicodeString *>(&aTagtring) = L"Testé123";
|
*static_cast<EbmlUnicodeString *>(&aTagtring) = L"Testé123";
|
||||||
|
|
||||||
filepos_t TagsSize = AllTags.Render(out_file, bWriteDefaultValues);
|
filepos_t TagsSize = AllTags.Render(out_file, bWriteDefaultValues);
|
||||||
MetaSeek.IndexThis(AllTags, FileSegment);
|
MetaSeek.IndexThis(AllTags, FileSegment);
|
||||||
|
|
||||||
TrackSize += pMyTracks2->Render(out_file, bWriteDefaultValues);
|
TrackSize += pMyTracks2->Render(out_file, bWriteDefaultValues);
|
||||||
MetaSeek.IndexThis(*pMyTracks2, FileSegment);
|
MetaSeek.IndexThis(*pMyTracks2, FileSegment);
|
||||||
|
|
||||||
// \todo put it just before the Cue Entries
|
// \todo put it just before the Cue Entries
|
||||||
filepos_t MetaSeekSize = Dummy.ReplaceWith(MetaSeek, out_file, bWriteDefaultValues);
|
filepos_t MetaSeekSize = Dummy.ReplaceWith(MetaSeek, out_file, bWriteDefaultValues);
|
||||||
|
|
||||||
#ifdef VOID_TEST
|
#ifdef VOID_TEST
|
||||||
MyInfos.VoidMe(out_file);
|
MyInfos.VoidMe(out_file);
|
||||||
#endif // VOID_TEST
|
#endif // VOID_TEST
|
||||||
|
|
||||||
// let's assume we know the size of the Segment element
|
// let's assume we know the size of the Segment element
|
||||||
// the size of the FileSegment is also computed because mandatory elements we don't write ourself exist
|
// the size of the FileSegment is also computed because mandatory elements we don't write ourself exist
|
||||||
if (FileSegment.ForceSize(SegmentSize - FileSegment.HeadSize() + MetaSeekSize
|
if (FileSegment.ForceSize(SegmentSize - FileSegment.HeadSize() + MetaSeekSize
|
||||||
+ TrackSize + ClusterSize + CueSize + InfoSize + TagsSize + ChapterSize)) {
|
+ TrackSize + ClusterSize + CueSize + InfoSize + TagsSize + ChapterSize)) {
|
||||||
FileSegment.OverwriteHead(out_file);
|
FileSegment.OverwriteHead(out_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
delete[] buf_bin;
|
delete[] buf_bin;
|
||||||
delete[] buf_txt;
|
delete[] buf_txt;
|
||||||
#endif // 0
|
#endif // 0
|
||||||
|
|
||||||
#ifdef OLD
|
#ifdef OLD
|
||||||
MuxedFile.Close(1000); // 1000 ms
|
MuxedFile.Close(1000); // 1000 ms
|
||||||
#endif // OLD
|
#endif // OLD
|
||||||
out_file.close();
|
out_file.close();
|
||||||
|
|
||||||
delete Blob1;
|
delete Blob1;
|
||||||
delete Blob2;
|
delete Blob2;
|
||||||
@ -390,7 +390,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
catch (exception & Ex)
|
catch (exception & Ex)
|
||||||
{
|
{
|
||||||
cout << Ex.what() << endl;
|
cout << Ex.what() << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
1357
test/mux/test8.cpp
1357
test/mux/test8.cpp
File diff suppressed because it is too large
Load Diff
@ -98,7 +98,7 @@ int main() {
|
|||||||
1234;
|
1234;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// comment of the Targets
|
// comment of the Targets
|
||||||
KaxTagMultiComment &mcomB = GetChild<KaxTagMultiComment>(targets);
|
KaxTagMultiComment &mcomB = GetChild<KaxTagMultiComment>(targets);
|
||||||
*(static_cast<EbmlString *>
|
*(static_cast<EbmlString *>
|
||||||
(&GetChild<KaxTagMultiCommentName>(mcomB))) =
|
(&GetChild<KaxTagMultiCommentName>(mcomB))) =
|
||||||
|
@ -45,10 +45,10 @@ using namespace LIBMATROSKA_NAMESPACE;
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\see http://www.unicode.org/charts/
|
\see http://www.unicode.org/charts/
|
||||||
\see http://www-106.ibm.com/developerworks/linux/library/l-linuni.html
|
\see http://www-106.ibm.com/developerworks/linux/library/l-linuni.html
|
||||||
\see http://www.cl.cam.ac.uk/~mgk25/unicode.html#libs
|
\see http://www.cl.cam.ac.uk/~mgk25/unicode.html#libs
|
||||||
\see ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO-6.html#ss6.1
|
\see ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO-6.html#ss6.1
|
||||||
*/
|
*/
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# source files.
|
# source files.
|
||||||
|
|
||||||
echo 'Duplicate IDs:'
|
echo 'Duplicate IDs:'
|
||||||
grep -h '^EbmlId.*_TheId' ../../src/*cpp | \
|
grep -h '^EbmlId.*_TheId' src/*cpp | \
|
||||||
sed -e 's/TheId/TheId /' | \
|
sed -e 's/TheId/TheId /' | \
|
||||||
awk '{ print $3 }' | \
|
awk '{ print $3 }' | \
|
||||||
sed -e 's/(//' -e 's/,//' | \
|
sed -e 's/(//' -e 's/,//' | \
|
||||||
@ -13,6 +13,6 @@ grep -h '^EbmlId.*_TheId' ../../src/*cpp | \
|
|||||||
( while read id ; do
|
( while read id ; do
|
||||||
echo ''
|
echo ''
|
||||||
echo ${id}:
|
echo ${id}:
|
||||||
grep -i $id ../../src/*cpp
|
grep -i $id src/*cpp
|
||||||
done )
|
done )
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user