Commit Graph

14519 Commits

Author SHA1 Message Date
Moritz Bunkus
01d2f377a3
AVI reader: avoid integer overflows in break condition trying to parse AVC
Part of the fix of #3176.
2021-09-03 10:12:48 +02:00
Moritz Bunkus
2e55410bd1
translations: update list of translatable strings; update German translation 2021-09-02 17:20:06 +02:00
Moritz Bunkus
d419e5b044
merge: fix reported existing num. chapters when splitting by non-existing number
Part of the fix of #3198.
2021-09-02 17:18:46 +02:00
Moritz Bunkus
1690cc6352
merge: no invalid memory access when splitting by chapters but no chapters present
Part of the fix of #3198.
2021-09-02 17:09:09 +02:00
Moritz Bunkus
7d39e99697
translations: update list of translatable strings 2021-09-01 22:48:52 +02:00
Fúlvio Alves
a636d9d19c
translations: update Brazilian Portuguese 2021-09-01 22:48:08 +02:00
Roberto Boriotti
c3cec744ca
translations: update Italian 2021-09-01 22:47:56 +02:00
Moritz Bunkus
7a8297c985
GUI: chapters: remove support for editing legacy country elements
Instead the legacy elements will be derived from the region part of
the IETF BCP 47 language tags.

Part of the implementation of #3193.
2021-09-01 22:43:08 +02:00
Moritz Bunkus
88b97761bf
all: chapters: normalize legacy & IETF BCP 47 language/country elements
With this change both legacy language/country elements and IETF BCP 47
language tags will be normalized when chapters are read or
written. This fixes a couple of corner cases in all programs dealing
with chapters:

1. IETF BCP 47 elements will now always be created before writing
   chapters unless IETF BCP 47 elements are disabled. This wasn't
   always the case when chapters were read from Matroska files.

2. When a chapter display element contains legacy language & country
   elements but no IETF BCP 47 elements and IETF BCP 47 elements
   aren't disabled, the IETF BCP 47 elements created will contain the
   region from the legacy element. Before the change the elements
   created didn't contain a country, leading to a change in semantics
   as IETF BCP 47 elements take precedence over all legacy elements
   when they're present.

3. Legacy country elements are now created when IETF BCP 47 elements
   are present & contain a region code allowed in legacy country
   elements.

Part of the fix of #3193.
2021-09-01 22:24:44 +02:00
Moritz Bunkus
9a7a76b565
BCP 47: helper for getting ISO 3166-1 alpha 2/top-level country domain codes 2021-09-01 22:20:42 +02:00
Moritz Bunkus
f44c1a50a4
AVC/H.264 parser: re-add --engage all_i_slices_are_key_frames option
This one was accidentally removed in v61.
2021-08-31 21:51:23 +02:00
Moritz Bunkus
69060053b4
Matroska reader: TrueHD: probe much more frames in order to find major sync
When the source file doesn't start with a major sync frame (e.g. if
it's the result of splitting between major sync frames), reading only
five frames from Matroska might not yield a major sync frame. Several
sample files I have contain more than a hundred regular frames between
sync frames.
2021-08-31 21:26:34 +02:00
Moritz Bunkus
d596c62bfd
bump version number, set release codename 2021-08-30 16:11:50 +02:00
Moritz Bunkus
60ef4286be
NEWS: reorder for easier consumption 2021-08-30 16:10:51 +02:00
Burak Yavuz
d269e6c1a2
translations: update Turkish 2021-08-30 16:08:07 +02:00
Andrei Stepanov
1c8b22ab3b
translations: update Russian 2021-08-30 16:08:01 +02:00
TMTisFree
b7a37f9328
translations: update French 2021-08-30 16:07:55 +02:00
Israel Lucas Torrijos
7153d83f97
translations: update Spanish 2021-08-30 16:07:12 +02:00
Antoni Bella Pérez
52107a4cb1
translations: update Catalan 2021-08-30 16:07:06 +02:00
Moritz Bunkus
2523a44459
tests: add one more test for negative track selection by language 2021-08-29 21:52:56 +02:00
Moritz Bunkus
0394a674bd
track selection: use language tag matching instead of verbatim equality
When using language tags for selecting which tracks to keep or
discard, mkvmerge was so far comparing the given language tag with the
ones in the file (after normalizing each). This meant that in order to
always keep all Spanish tracks but discard others, `--stracks !es`
would not work reliably as a track in the file might be specified as
`es-ES` — and verbatim comparison simply didn't treat `es` and `es-ES`
as the same.

For users this is somewhat counterintuitive. The idea behind allowing
languages for track selection has always been to provide an easy to
remember, easy to use way to select tracks for human beings without
having to look through file identification first. Verbatim comparison
worked fine until support for IETF BCP 47 language tags came along as
until that point languages in Matroska files only ever contained a
language component but not e.g. a region or a variant.

This commit changes the selection to use a matching algorithm similar
to how IETF BCP 47 describes language tag matching. Basically it takes
a track's existing language, normalizes it & splits it into its
components. Then the same is done with all the languages mentioned
with the track selection option currently evaluated.

For each language listed in the track selection all components that
are actually set are compared with the track's language's
corresponding components. If all of them are equal, the track is
considered to be matched. Components set in the track's language but
not in the selection's language are simply ignored.

This means that specifying `--stracks !es` in the example above will
now match all tracks whose language is some kind of Spanish, no matter
if the track's language tag contains a region, variants or
whatever (e.g. it would drop tracks marked as `es`, `es-MX`,
`es-Latn-ES` etc.).
2021-08-29 21:33:13 +02:00
Moritz Bunkus
2928636c95
generic reader: simplify code by using std::unordered_set 2021-08-29 20:08:06 +02:00
Moritz Bunkus
f3e8b50b04
BCP 47: functions for matching languages against others 2021-08-29 12:39:03 +02:00
Moritz Bunkus
bd81867612
BCP 47 tests: use namespace for shorter, easier-to-read lines 2021-08-29 12:39:03 +02:00
Moritz Bunkus
2c57eb3bcf
AVC/HEVC ES: add more debug code 2021-08-29 12:39:03 +02:00
Moritz Bunkus
ebe7547d9c
AVC/HEVC ES: move more code to common base class 2021-08-29 12:39:03 +02:00
Moritz Bunkus
d3f57ff1a8
HEVC ES: cosmetics: alignment 2021-08-29 12:39:03 +02:00
Moritz Bunkus
9f21f65904
AVC/HEVC ES: always initialize NALU type name maps 2021-08-29 12:39:03 +02:00
Moritz Bunkus
ee26eefc36
AVC/HEVC dump: auto-detect framing type 2021-08-25 20:42:49 +02:00
Moritz Bunkus
f0e75b492d
HEVC dump: rename to xvc_dump & extend to cover AVC/H.264 2021-08-25 20:27:51 +02:00
Moritz Bunkus
0f1febd3be
pgs_dump: fix file name in comment 2021-08-25 16:26:55 +02:00
Moritz Bunkus
bfe0e2c4a8
AVC/HEVC ES: move more code to common base class 2021-08-25 14:19:31 +02:00
Moritz Bunkus
54524a08c1
AVC/HEVC ES: move more code to common base class 2021-08-24 22:05:39 +02:00
Moritz Bunkus
f2121dd897
AVC/HEVC ES: re-order functions 2021-08-24 21:45:50 +02:00
Moritz Bunkus
9f290808e8
AVC ES: use "avc" instead of "mpeg4::p10" in debug messages 2021-08-24 21:45:50 +02:00
Burak Yavuz
2b0fd66b8e
translations: update Turkish 2021-08-21 16:37:12 +02:00
Fúlvio Alves
dd5715d635
translations: update Brazilian Portuguese 2021-08-21 16:37:07 +02:00
Antoni Bella Pérez
18755dbaaf
translations: update Catalan 2021-08-21 16:36:54 +02:00
TMTisFree
2a3b6642c3
translations: update French 2021-08-21 16:36:44 +02:00
TMTisFree
e47463e1cc
man page translations: update French 2021-08-21 16:36:40 +02:00
Moritz Bunkus
e0acdbbd00
translations: update list of translatable strings; update German translation 2021-08-21 16:34:30 +02:00
Moritz Bunkus
0547583ee2
GUI: updates: show "listen to album" link if info present in releases.xml 2021-08-21 16:33:08 +02:00
Moritz Bunkus
2be7fcb574
translations: update list of translatable strings; update German translation 2021-08-17 23:42:50 +02:00
Симеон Цветков
35e21db807
translations: update Bulgarian 2021-08-17 23:40:05 +02:00
Moritz Bunkus
d3c9e83bfc
AVC/HEVC ES packetizers: cleanup after simplification 2021-08-17 23:38:46 +02:00
Moritz Bunkus
b9b94d0149
AVC/HEVC ES packetizers: move shared code to common base class 2021-08-17 23:34:38 +02:00
Moritz Bunkus
9da7cb3080
AVC/HEVC ES: unify calculation of key frame & discardable flags 2021-08-17 22:50:37 +02:00
Moritz Bunkus
bbe4c3713d
AVC/HEVC ES packetizers: move shared code to common base class 2021-08-17 17:46:08 +02:00
Moritz Bunkus
6c1386f7bf
AVC/HEVC ES: move shared code to common base class 2021-08-17 15:01:29 +02:00
Moritz Bunkus
366d13d9a3
AVC/HEVC: remove some debug code 2021-08-16 21:48:53 +02:00