- API break: the headers
c/libmatroska.h
&c/libmatroska_t.h
were removed. Their remaining content was moved toKaxTypes.h
. - API break: the
KaxSeedID
class can only be used to write EBML IDs that are exactly four bytes long (previously: at most four bytes). - Updated the semantics to the latest specifications, deprecating the
following elements by preventing code to write them:
KaxTrackMaxCache
,KaxTrackMinCache
. - libebml 2.0.0 or newer is now required.
- Bumped the library's soname to 8 due to several API & ABI breaking changes.
- Enabled building shared libraries via the usual CMake definition
BUILD_SHARES_LIBS
(default: off).
- A C++14 compliant C++ compiler is now required.
- libEBML v1.4.3 is now required.
- Remove Coremake project files
- Add
KaxInternalBlock::GetRelativeTimestamp()
to access unscaled block timestamps. - Fixed problems with the generated
pkg-config
files if any of the installation paths are absolute. - Added several enums in
namespace libmatroska
for the various elements that are constrained to a set of options:MatroskaTrackType
,MatroskaTrackEncodingCompAlgo
,MatroskaChapterTranslateCodec
,MatroskaTrackTranslateCodec
,MatroskaVideoFlagInterlaced
,MatroskaVideoFieldOrder
,MatroskaVideoStereoMode
,MatroskaVideoAlphaMode
,MatroskaVideoOldStereoMode
,MatroskaVideoDisplayUnit
,MatroskaVideoAspectRatioType
,MatroskaVideoMatrixCoefficients
,MatroskaColourChromaSitingHorz
,MatroskaColourChromaSitingVert
,MatroskaVideoRange
,MatroskaVideoTransferCharacteristics
,MatroskaVideoPrimaries
,MatroskaVideoProjectionType
,MatroskaAudioEmphasis
,MatroskaTrackPlaneType
,MatroskaContentEncodingScope
,MatroskaContentEncodingType
,MatroskaContentEncodingAlgo
,MatroskaAESSettingsCipherMode
,MatroskaContentSignatureAlgo
,MatroskaContentSigHashAlgo
,MatroskaChapterSkipType
,MatroskaChapterProcessTime
andMatroskaTargetTypeValue
. - Updated the semantics to the latest specifications, deprecating the
following elements by preventing code to write them:
KaxClusterSilentTracks
,KaxClusterSilentTrackNumber
,KaxSlices
,KaxReferenceFrame
,KaxReferenceOffset
,KaxReferenceTimeCode
,KaxTrackTimecodeScale
,KaxCodecDecodeAll
,KaxVideoAspectRatio
,KaxTrickTrackUID
,KaxTrickTrackSegmentUID
,KaxTrickTrackFlag
,KaxTrickMasterTrackUID
,KaxTrickMasterTrackSegmentUID
,KaxContentSignature
,KaxContentSigKeyID
,KaxContentSigAlgo
andKaxContentSigHashAlgo
. - Updated the semantics to the latest specifications, making the
following elements mandatory (but having default values):
KaxCodecDelay
,KaxVideoPixelCropBottom
,KaxVideoPixelCropTop
,KaxVideoPixelCropLeft
,KaxVideoPixelCropRight
,KaxVideoBitsPerChannel
,KaxCueCodecState
,KaxTagTargetTypeValue
,KaxTrackLanguage
,KaxVideoStereoMode
,KaxVideoAlphaMode
,KaxEditionFlagOrdered
,KaxVideoChromaSitHorz
,KaxVideoChromaSitVert
,KaxVideoColourRange
,KaxVideoColourMatrix
,KaxVideoColourTransferCharacter
,KaxVideoColourPrimaries
andKaxVideoDisplayUnit
. - Updated the semantics to the latest specifications, removing the
default values from the following elements:
KaxCueBlockNumber
,KaxFlagHearingImpaired
,KaxFlagVisualImpaired
,KaxFlagTextDescriptions
, andKaxFlagOriginal
. - Updated the semantics to the latest specifications, adding the
following new elements:
TagDefaultBogus
(as a placeholder for accidentally used but wrong EBML ID 0x44b4),KaxEmphasis
,KaxChapterSkipType
,KaxEditionDisplay
,KaxEditionString
andKaxEditionLanguageIETF
.
- libEBML v1.4.2 is now required.
- Added classes for new track header elements:
KaxFlagHearingImpaired
,KaxFlagVisualImpaired
,KaxFlagTextDescriptions
,KaxFlagOriginal
andKaxFlagCommentary
.
- In release 1.6.1 the version number in
CMakeLists.txt
wasn't updated, affecting the installedcmake
andpkg-config
files. The version number has been bumped to 1.6.2 in all relevant files now.
KaxBlockAddIDValue
class: this class is no longer marked as "mandatory" in order to coincide with the latest specification.
- libEBML v1.4.0 is now required.
- Due to breaking ABI the soname version has been bumped to 7.0.0.
- Default symbol visibility is now "hidden", reducing binary size.
- Converted some things pointed out by
cppcheck
&clang-tidy
to C++11. - Fixed a lot of issues pointed out by
clang-tidy
. - A C++11 compliant compiler is now required. Several of its features are now used in the source.
KaxCueData
class: addedPositionSet
overrides takingKaxSimpleBlock
arguments.KaxSeekHead
class: theIndexThis
function now returns a pointer to the newly allocatedKaxSeek
instance.KaxBlockData
class: theSetReferencedTimecode
function is now public.- Fixed classes for updates in the current specification:
KaxTrackTimecodeScale
(can be written again),TimeSlice
,SliceLaceNumber
,TrackAttachmentLink
(these cannot be written anymore),KaxContentEncAlgo
(it's mandatory),KaxChapLanguageIETF
(can occur multiple times),KaxFileUsedStartTime
,KaxFileUsedEndTime
(DivX-related elements, cannot be written anymore) - Added classes for new elements from the current specification:
KaxBlockAdditionMapping
,KaxBlockAddIDValue
,KaxBlockAddIDName
,KaxBlockAddIDType
,KaxBlockAddIDExtraData
,KaxContentEncAESSettings
,KaxContentEncAESSettings
. - The
MATROSKA_VERSION
pre-processor definition has been removed. You used to be able toe restrict compiling with only those classes for elements contained in Matroska v1, but that hasn't worked since 2010, so… yeah. - Build system: more fixes for building libMatroska as a DLL on Windows wrt. symbol visibility.
- Build system: fixed symbol visibility issue causing linker failures since 1.5.1.
- Build system: libEBML 1.3.8 is now required.
- Build system: various fixes to the cmake rules regarding visibility, naming and building DLLs on Windows.
KaxBlock
: fixed a potential access to invalid memory due to invalid lace sizes read from invalid data.KaxBlock
: fixed a potential null pointer dereference triggerable by reading invalid data.
- Build system: libEBML 1.3.7 is now required.
- Build system: fixed a problem that prevented libMatroska from being embedded in other builds.
- Converted the build system from
autoconf
/automake
tocmake
. Patches by Github user "evpobr" with fixes by myself. - Added a code of conduct to the project.
KaxBlockGroup
,KaxSimpleBlock
: fixed writing the block header if the track number is 128.
- Released v1.4.7 with the single change of setting the version number
in the
KaxCodeVersion
variable correctly.
KaxSemantic
: add new elements dealing with 360°/VR content and for language descriptors based on IETF BPC 47.
KaxSemantic
: add new colour-related elements.KaxSemantic
: add the new FieldOrder element.KaxVersion.cpp
: in order to enable deterministic builds theKaxCodeDate
variable has been set to"Unknown"
instead of the date and time of compilation. Patch by Ed Schouten ed@nuxi.nl.
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.
- all: a couple of optimizations in the main library and a memory leak fix in the tests
- build system: fix linking against libEBML
- build system: switched the build system from hand-crafted
Makefiles
to anautoconf
/automake
-based system. Apkg-config
file will be installed as well; its name islibmatroska
. Based on a similar patch for libEBML by Jan Engelhardt jengelh@inai.de. 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.KaxBlock::ReadInternalHead()
: fixed a off-by-one buffer overflow if with EBML lacing and exactly one frame in the lace.
- Added new elements/classes
DiscardPadding
,CodecDelay
andSeekPreRoll
- 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
- Note that this release is not binary compatible to 1.3.0 due to the dependancy on libEBML 1.3.0 which is not binary compatible to its predecessor.
- Added new elements
CueDuration
,CueRelativePosition
,ChapterStringUID
,VideoAlphaMode
andDefaultDecodedFieldDuration
- Removed the Debian build files from our package.
- initialize all data members
- The
KaxCodeVersion
variable now resides in the library instead of being declared static in the header file. - make
KaxChapterSegmentEditionUID
an unsigned integer to match theKaxChapterEditionUID
it's supposed to target - This release is not binary compatible to 1.2.x.
- skip data from
KaxBlockVirtual
as it should not be used - use semantic generated from the specs so there is no more possible mismatch
- trunk/libmatroska/test/test9.cpp
- also remove no longer needed tests for old/outdated/previous tag system
- give access to the
SetParent
toKaxSimpleBlock
as well - change the placement of a
MATROSKA_DLL_API
so that it actually works - remove all references to the old/outdated/previous tag system
- add the possibility for a
DataBuffer
class to use its own internal memory KaxCues::AddBlockGroup()
was removed as it's broken beyond repair- add
KaxTrackOperation
and related elements for combined stereo/3D tracks or joined virtual tracks - fix a memory leak in
KaxReferenceBlock
when an internalKaxBlockBlob
was created - Increased library
.so
name due to binary incompatible changes in libebml
- rename the library
.so
name as it's backward incompatible
- fix a memory freeing issue in
KaxBlock
- use the macros from the new libebml 0.8.0 to simplify the element definitions and avoid possible typo bugs
- fix some building issues on Linux and MinGW
- add
matroska_init()
andmatroska_done()
functions, necessary when used with libebml v2 - use the new libebml iterators of
EbmlMaster
where possible