- API break: the headers
c/libmatroska.h&c/libmatroska_t.hwere removed. Their remaining content was moved toKaxTypes.h. - API break: the
KaxSeedIDclass 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-configfiles if any of the installation paths are absolute. - Added several enums in
namespace libmatroskafor 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,MatroskaChapterProcessTimeandMatroskaTargetTypeValue. - 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,KaxContentSigAlgoandKaxContentSigHashAlgo. - 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,KaxVideoColourPrimariesandKaxVideoDisplayUnit. - 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,KaxEditionStringandKaxEditionLanguageIETF.
- libEBML v1.4.2 is now required.
- Added classes for new track header elements:
KaxFlagHearingImpaired,KaxFlagVisualImpaired,KaxFlagTextDescriptions,KaxFlagOriginalandKaxFlagCommentary.
- In release 1.6.1 the version number in
CMakeLists.txtwasn't updated, affecting the installedcmakeandpkg-configfiles. The version number has been bumped to 1.6.2 in all relevant files now.
KaxBlockAddIDValueclass: 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-tidyto 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.
KaxCueDataclass: addedPositionSetoverrides takingKaxSimpleBlockarguments.KaxSeekHeadclass: theIndexThisfunction now returns a pointer to the newly allocatedKaxSeekinstance.KaxBlockDataclass: theSetReferencedTimecodefunction 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_VERSIONpre-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/automaketocmake. 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
KaxCodeVersionvariable 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 theKaxCodeDatevariable 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
Makefilesto anautoconf/automake-based system. Apkg-configfile 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,CodecDelayandSeekPreRoll - 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
-ansiand-fno-gnu-keywordsflags 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,VideoAlphaModeandDefaultDecodedFieldDuration - Removed the Debian build files from our package.
- initialize all data members
- The
KaxCodeVersionvariable now resides in the library instead of being declared static in the header file. - make
KaxChapterSegmentEditionUIDan unsigned integer to match theKaxChapterEditionUIDit's supposed to target - This release is not binary compatible to 1.2.x.
- skip data from
KaxBlockVirtualas 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
SetParenttoKaxSimpleBlockas well - change the placement of a
MATROSKA_DLL_APIso that it actually works - remove all references to the old/outdated/previous tag system
- add the possibility for a
DataBufferclass to use its own internal memory KaxCues::AddBlockGroup()was removed as it's broken beyond repair- add
KaxTrackOperationand related elements for combined stereo/3D tracks or joined virtual tracks - fix a memory leak in
KaxReferenceBlockwhen an internalKaxBlockBlobwas created - Increased library
.soname due to binary incompatible changes in libebml
- rename the library
.soname 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
EbmlMasterwhere possible