- 18 Apr, 2020 1 commit
-
-
Andreas Rheinhardt authored
Moreover, putting the Cues in front of the Clusters by reserving space in advance is also tested. The new capability of using ffprobe during a remux/transcode test are used here for information about the chapters. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-
- 13 Apr, 2020 1 commit
-
-
Andreas Rheinhardt authored
Using random values for TrackUID and FileUID (as happens when the AVFMT_FLAG_BITEXACT flag is not set) has the obvious downside of making the output indeterministic. This commit mitigates this by writing the potentially random values with a fixed size of eight byte, even if their actual values would fit into less than eight bytes. This ensures that even in non-bitexact mode, the differences between two files generated with the same settings are restricted to a few bytes in the header. (Namely the SegmentUID, the TrackUIDs (in Tracks as well as when referencing them via TagTrackUID), the FileUIDs (in Attachments as well as in TagAttachmentUID) as well as the CRC-32 checksums of the Info, Tracks, Attachments and Tags level-1-elements.) Without this patch, there might be an offset/a size difference between two such files. The FATE-tests had to be updated because the fixed-sized UIDs are also used in bitexact mode. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-
- 02 Apr, 2020 2 commits
-
-
Andreas Rheinhardt authored
containing updated extradata, in this case a new FLAC streaminfo. Furthermore, it also tests that the Matroska muxer is able to preserve uncommon channel layouts by adding Vorbis comments to the CodecPrivate. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-
Andreas Rheinhardt authored
mkvmerge versions 6.2 to 40.0 had a bug that made it not propagate the WavPack extradata (containing the WavPack version) during remuxing from a Matroska file; currently our demuxer would treat every WavPack block encountered as invalid data (unless the WavPack stream is to be discarded (i.e. the streams discard is >= AVDISCARD_ALL)) and try to resync to the next level 1 element. Luckily, the WavPack version is currently not really important; so we fix this problem by assuming a version. David Bryant, the creator of WavPack, recommended using version 0x410 (the most recent version) for this. And this is what this commit does. A FATE-test for this has been added. Reviewed-by:
David Bryant <david@wavpack.com> Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-
- 26 Mar, 2020 1 commit
-
-
Andreas Rheinhardt authored
Up until e7ddafd5, the Matroska muxer wrote two SeekHeads: One at the beginning referencing the main level 1 elements (i.e. not the Clusters) and one at the end, referencing the Clusters. This second SeekHead was useless and has therefore been removed. Yet the SeekHead-related functions and structures are still geared towards this usecase: They are built around an allocated array of variable size that gets reallocated every time an element is added to it although the maximum number of Seek entries is a small compile-time constant, so that one should rather include the array in the SeekHead structure itself; and said structure should be contained in the MatroskaMuxContext instead of being allocated separately. The earlier code reserved space for a SeekHead with 10 entries, although we currently write at most 6. Reducing said number implied that every Matroska/Webm file will be 84 bytes smaller and required to adapt several FATE tests; furthermore, the reserved amount overestimated the amount needed for for the SeekHead's length field and how many bytes need to be reserved to write a EBML Void element, bringing the total reduction to 89 bytes. This also fixes a potential segfault: If !mkv->is_live and if the AVIOContext is initially unseekable when writing the header, the SeekHead is already written when writing the header and this used to free the SeekHead-related structures that have been allocated. But if the AVIOContext happens to be seekable when writing the trailer, it will be attempted to write the SeekHead again which will lead to segfaults because the corresponding structures have already been freed. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-
- 29 Dec, 2019 2 commits
-
-
Andreas Rheinhardt authored
When a Matroska Block is only stored in compressed form, the size of the uncompressed block is not explicitly coded and therefore not known before decompressing it. Therefore the demuxer uses a guess for the uncompressed size: The first guess is three times the compressed size and if this is not enough, it is repeatedly incremented by a factor of three. But when this happens with lzo, the decompression is neither resumed nor started again. Instead when av_lzo1x_decode indicates that x bytes of input data could not be decoded, because the output buffer is already full, the first (not the last) x bytes of the input buffer are resent for decoding in the next try; they overwrite already decoded data. This commit fixes this by instead restarting the decompression anew, just with a bigger buffer. This seems to be a regression since 935ec5a1. A FATE-test for this has been added. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
Andreas Rheinhardt authored
This test tests that demuxing ProRes that is muxed like it should be in Matroska (i.e. with the first header ("icpf") atom stripped away) works; it also tests bz2 decompression as well as the handling of unknown-length clusters. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 08 Dec, 2019 2 commits
-
-
Andreas Rheinhardt authored
contained in Vorbis comments in the CodecPrivate of flac tracks. Moreover, it also tests header removal compression. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
Andreas Rheinhardt authored
This test contains a track with zlib compressed CodecPrivate in addition to compressed frames; the former was unchecked before. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 07 Dec, 2019 2 commits
-
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com>
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 05 Dec, 2019 1 commit
-
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 08 May, 2019 3 commits
-
-
Andreas Rheinhardt authored
Up until now, the length field of most level 1 elements has been written using eight bytes, although it is known in advance how much space the content of said elements will take up so that it would be possible to determine the minimal amount of bytes for the length field. This commit changes this. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
Andreas Rheinhardt authored
Given that in both the seekable as well as the non-seekable mode dynamic buffers are used to write level 1 elements and that now no seeks are used in the seekable case any more, the two modes can be combined; as a consequence, the non-seekable mode automatically inherits the ability to write CRC-32 elements. There are no differences in case the output is seekable; when it is not and writing CRC-32 elements is disabled, there can still be minor differences because before this commit, the EBML ID and length field were counted towards the cluster size limit; now they no longer are. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
Andreas Rheinhardt authored
Up until now the EBML Header length field has been written with eight bytes, although the EBML Header is always so small that only one byte is needed for it. This patch saves seven bytes for every Matroska/Webm file. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 18 Jun, 2017 1 commit
-
-
Marton Balint authored
The md5 protocol has no seek support, but some tests use seeks. This changes the fate tests to actually create the output files and calculate the md5 on the written files, which also makes the tests independent of the size of the output buffers and output buffering in general. A new md5pipe fate test method is also introduced to keep the old functionality for tests where using a non-seekable output was intentional, and matroska md5 tests are changed to use that. Signed-off-by:
Marton Balint <cus@passwd.hu>
-
- 28 Jan, 2017 1 commit
-
-
James Almer authored
Found-by:
Aaron Colwell <acolwell@google.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 09 Dec, 2016 1 commit
-
-
James Almer authored
Reviewed-by:
Michael Niedermayer <michael@niedermayer.cc> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 22 Oct, 2016 1 commit
-
-
James Almer authored
avformat/matroskaenc: write DisplayWidth and DisplayHeight elements only if they differ from PixelWidth and PixelHeight Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 11 Oct, 2016 1 commit
-
-
James Almer authored
The spec says: "Mandatory elements with a default value may be left out of the file. In the absence of a mandatory element, the element's default value is used." Reviewed-by:
Hendrik Leppkes <h.leppkes@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 06 Oct, 2016 1 commit
-
-
James Almer authored
Implements part of ticket #4347 Tested-by:
Dave Rice <dave@dericed.com> Tested-by:
Jerome Martinez <jerome@mediaarea.net> Reviewed-by:
Michael Niedermayer <michael@niedermayer.cc> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 05 Oct, 2016 1 commit
-
-
James Almer authored
The durations are never written in that situation. Reviewed-by:
Michael Niedermayer <michael@niedermayer.cc> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 06 Sep, 2016 1 commit
-
-
Rodger Combs authored
Previously, we used a different list of checks when deciding whether to write a set of tags at all than we did when deciding whether to write an individual tag in the set. This resulted in sometimes writing an empty tag master and seekhead. Now we use mkv_check_tag_name everywhere, so if a dictionary is entirely composed of tags we skip, we don't write a tag master at all. This affected the test file, since "language" was on one list but not the other, so we were writing an empty tag master there. The test hash is updated to reflect that change.
-
- 10 May, 2016 1 commit
-
-
Ronald S. Bultje authored
This tests automatic insertion of the vp9_superframe BSF as well as ensuring that the colorspace properties in the video header can be modified when remuxing (-c:v copy).
-