Commit Graph

15838 Commits

Author SHA1 Message Date
Moritz Bunkus
b259f89de6
add test case for 'video alpha mode' property
Part of the implementation of #3643.
2023-12-03 19:09:08 +01:00
Moritz Bunkus
0eb0463ab7
Matroska reader: copy "video alpha mode" track header property
Part of the implementation of #3643.
2023-12-03 18:16:12 +01:00
Moritz Bunkus
2cc46d3a43
mkvpropedit, header editor: support for "video alpha mode"
In `mkvpropedit` it's called `alpha-mode`.

Part of the implementation of #3643.
2023-12-03 18:16:11 +01:00
Moritz Bunkus
cd8aa98fe0
Matroska reader: report "video alpha mode" in JSON identification mode
Property name is `alpha_mode`. Also requires a bump of the JSON
identification output schema to v19.

Part of the implementation of #3643.
2023-12-03 18:16:11 +01:00
Moritz Bunkus
a4b165fae5
info: add support for "video alpha mode" track header element
Part of the implementation of #3643.
2023-12-03 17:56:56 +01:00
Moritz Bunkus
0bbdc742af
adjust element name of KaxVideoStereoMode 2023-12-03 17:02:16 +01:00
Moritz Bunkus
db8f27504b
bump version number, set release code name 2023-12-02 11:55:41 +01:00
Moritz Bunkus
ec7551ac25
NEWS: re-order & re-word for easier consumption 2023-12-02 11:26:34 +01:00
Andrei Stepanov
476b236969
program translations: update Russian 2023-11-29 20:28:29 +01:00
Antoni Bella Pérez
5d3d3bd736
program translations: update Catalan 2023-11-29 20:27:38 +01:00
Grzegorz Pruchniakowski
9827e7edd9
program translations: update Polish 2023-11-29 20:27:26 +01:00
Grzegorz Pruchniakowski
e435002e40
man page translations: update Polish 2023-11-29 20:26:59 +01:00
Moritz Bunkus
10ff539b05
tests: add case for combining Dolby Vision layers from MPEG transport streams
Part of the implementation of #3127
2023-11-29 20:21:41 +01:00
Moritz Bunkus
473081e2e8
MPEG TS reader: combining Dolby Vision layers from different tracks
Part of the implementation of #3127
2023-11-29 20:11:08 +01:00
Moritz Bunkus
28c848ac53
HEVC/H.265 parser: combining Dolby Vision layers from different tracks
Part of the implementation of #3127
2023-11-29 20:10:56 +01:00
Moritz Bunkus
d01b3e78c1
AVC & HEVC: delay combining NALUs into frame until frame's fetched from parser
Prerequisite for #3127
2023-11-29 20:10:56 +01:00
Moritz Bunkus
59e675ee57
packet converter: record PID for which conversion was called
Prerequisite for #3127
2023-11-29 20:10:56 +01:00
Moritz Bunkus
34b02c2529
xyzvc_dump: fix handling of last NALU of Annex B stream if shorter than 4 bytes 2023-11-29 20:10:56 +01:00
Moritz Bunkus
0a3ef4b0de
xyzvc_dump: output NALU end position in non-portable mode 2023-11-29 20:10:55 +01:00
Moritz Bunkus
927d6bb12c
xyzvc_dump: fix calc_frame_checksum trying to create std::string from nullptr 2023-11-28 19:25:49 +01:00
Moritz Bunkus
e5252ec284
TS reader: derive codec from HDMV registration descriptor if present
This fixes HEVC/H.265 detection if there's only DOVI & HDMV but no
HEVC registration descriptors.

Part of #3113, #3126, #3127
2023-11-27 20:19:27 +01:00
Moritz Bunkus
1170513021
codec_c: add looking up for Blu-ray stream coding types 2023-11-27 20:13:04 +01:00
Moritz Bunkus
9155ef705c
Blu-ray MPLS: functions for getting descriptions for various enums 2023-11-27 20:12:39 +01:00
Moritz Bunkus
576c9299cb
NEWS: categorize entries wrt. where they apply 2023-11-27 20:12:05 +01:00
Moritz Bunkus
73db37ea01
kax_info(mkvinfo): dump Dolby Vision configuration record if dovi debugging enabled 2023-11-22 16:54:54 +01:00
Moritz Bunkus
b9f2a9c815
memory_c: add clone() overload for EbmlBinary 2023-11-22 16:54:48 +01:00
Moritz Bunkus
15628c49cc
HEVC parser: use std::optional<> 2023-11-21 11:27:15 +01:00
Moritz Bunkus
44e97666f5
remove superfluous includes 2023-11-21 10:48:32 +01:00
Moritz Bunkus
c2707b8c66
debugging: add PID to parse_pmt_pid_info message 2023-11-21 10:46:29 +01:00
Moritz Bunkus
75eee6c22e
cosmetics: alignment 2023-11-21 10:45:10 +01:00
Moritz Bunkus
f7b282b6ff
add tool for dumping Dolby Vision decoder configuration records 2023-11-21 00:46:45 +01:00
Moritz Bunkus
c6911337e4
more renaming of xvc_dump to xyzvc_dump 2023-11-20 14:03:45 +01:00
Moritz Bunkus
d87bafe3dc
rename xvc_dump to xyzvc_dump
XVC is an abbreviation for an existing video codec (Extreme Video
Coding). This tool has nothing to do with that codec.
2023-11-20 11:41:17 +01:00
Moritz Bunkus
dfa159213e
HEVC ES: Dolby Vision: create hvcE configuration record if missing
Implements #3126.
2023-11-20 11:20:12 +01:00
Moritz Bunkus
50ed15ffe6
hevcc_dump: implement dumping the VUI HRD parameters 2023-11-19 23:33:47 +01:00
Moritz Bunkus
98d4f6cc33
xvc_dump: HEVC: show inner NALU type for Dolby Vision NALUs (unspec62/63) 2023-11-19 19:06:24 +01:00
Moritz Bunkus
35f0ca6b08
HEVC packetizer: move DOVI config record creation to ES packetizer
Before the patch the code creating a Dolby Vision configuration record
for Annex B type bitstreams was located in the HEVC ES
reader. However, MPEG transport streams also contain HEVC as Annex B
type bitstreams, and for those the code wasn't used. Therefore move
the code to the packetizer used by both readers.

Part of the implementation of #3113.
2023-11-19 16:32:07 +01:00
Moritz Bunkus
a5dc506899
NEWS: fix entry wrt. Dolby Vision from Annex B type bitstreams
The MR by quietvoid only implemented creating Dolby Vision
configuration records when reading HEVC from Annex B type bitstream
files (elementary streams), but not for case of reading them from MPEG
transport streams. Therefore the patch only implements #3113 partially.
2023-11-19 16:22:06 +01:00
Moritz Bunkus
eb5c17d96c
appimage build.sh: fix help text 2023-11-11 19:32:18 +01:00
Moritz Bunkus
0f2e7901cb
Italian translation: fix wording
Fixes #3638.
2023-11-11 17:18:59 +01:00
Burak Yavuz
07a4423292
program translations: update Turkish 2023-11-06 23:43:24 +01:00
Roberto Boriotti
9b97a10cf8
program translations: update Italian 2023-11-06 23:43:20 +01:00
TMTisFree
6446acbdb9
program translations: update French 2023-11-06 23:43:15 +01:00
Israel Lucas Torrijos
f643fdf981
program translations: update Spanish 2023-11-06 23:43:03 +01:00
Moritz Bunkus
d01b159d93
HEVC packetizer: only flush parser object once
When appending the HEVC packetizers of all the tracks in the appended
chain use the same HEVC ES parser object. When the one file is
finished, the packetizer is flushed, which in turn flushes the ES
parser. This is fine the first time the ES parser is flushed.

Now the core realizes that the first file is empty & starts reading
data from the appended file in order to determine the lowest
timestamp. The appended packetizer will add data to the same ES parser
object.

The core still reads from the first source file, though, especially if
there are more packetizers for the file (e.g. audio packetizers). That
file will run into "empty" more often for the original video
packetizer, causing more call to that packetizer's flush function.

The first file's packetizer will then flush the ES parser, which
already contains data from the second file. Those frames are then
queued in the first file's packetizer. However, the core already
considers the first file's packetizer to be done & won't pull from it
again.

The result is that data from the second file ends up in the first
file's packetizer's queue that's never processed further. It's still
there when mkvmerge finishes.

The fix is to only call the ES parser's flush function once per call
to a packetizer's flush function.

Fixes #3479.
2023-11-06 23:30:42 +01:00
Moritz Bunkus
519acbc14a
AVC/HEVC parser: make one function const; add get_num_frames_available 2023-11-06 23:18:49 +01:00
Andrei Stepanov
4fc765b5a9
program translations: update Russian 2023-11-04 20:33:22 +01:00
Moritz Bunkus
6e7f37273b
MPEG TS reader: Blu-rays: skip TP_extra_headers properly
See Blu-ray specs section 6.2.1.

On Blu-rays the MPEG transport streams consist of a sequence of
so-called "source packets". A "source packet" consists of a four-byte
long `TP_extra_header` structure followed by the "transport packet"
that we're actually interested in. The latter is the one that starts
with a `0x47` byte.

The MPEG TS reader contains code to find the start of the "transport
packet" by looking for that `0x47` byte & then reading 192-byte long
chunks starting from there. This works well as long as the
`TP_extra_header` structure itself doesn't contain a `0x47`. As that
structure contains some type of timestamp, this is very much possible.

If this is the case, the detection of the start of the "transport
packet" is thrown off. Often a resync is attempted, during which at
a handful of "transport packets" are skipped, leading to a loss of
frames in the content (often video, which means dropping everything
before the second key frame).

Fixes #3632.
2023-11-04 20:27:17 +01:00
Moritz Bunkus
95d6f96bed
translations: update list of translatable strings; update German translation 2023-11-04 16:55:27 +01:00
Burak Yavuz
c64c5e2a68
program translations: update Turkish 2023-11-04 16:50:52 +01:00