all: remove deprecated features

The features removed are:

* mkvmerge: the options `--identify-verbose` (and its counterpart
  `-I`), `--identify-for-gui`, `--identify-for-mmg` and
  `--identification-format verbose-text`
* all command line tools: the old, proprietary format used for option
  files
* all command line tools: support for passing command line options via the
  environment variables `MKVTOOLNIX_OPTIONS`, `MKVEXTRACT_OPTIONS`,
  `MKVINFO_OPTIONS`, `MKVMERGE_OPTIONS`, and `MKVPROPEDIT_OPTIONS`
This commit is contained in:
Moritz Bunkus 2017-12-22 16:02:58 +01:00
parent f164202a24
commit ffb32a657b
55 changed files with 159 additions and 695 deletions

13
NEWS.md
View File

@ -1,5 +1,18 @@
# Version ?
## Important notes
* Feature removal: several deprecated features have been removed:
* mkvmerge: the deprecated options `--identify-verbose` (and its counterpart
`-I`), `--identify-for-gui`, `--identify-for-mmg` and
`--identification-format verbose-text` have been removed.
* all command line tools: support for the deprecated, old, proprietary format
used for option files has been removed.
* all command line tools: support for passing command line options via the
deprecated environment variables `MKVTOOLNIX_OPTIONS`, `MKVEXTRACT_OPTIONS`,
`MKVINFO_OPTIONS`, `MKVMERGE_OPTIONS`, and `MKVPROPEDIT_OPTIONS` has been
removed.
## New features and enhancements
* mkvmerge: AVC/h.264 packetizer (framed): access unit delimiter NALUs will

View File

@ -879,18 +879,6 @@
</itemizedlist>
</refsect1>
<refsect1 id="mkvextract.escaping">
<title>Escaping special chars in text</title>
<para>
There are a few places in which special characters in text must or should be escaped. The rules for escaping are simple: each character
that needs escaping is replaced with a backslash followed by another character.
</para>
<para>
The rules are: ' ' (a space) becomes '\s', '&quot;' (double quotes) becomes '\2', ':' becomes '\c', '#' becomes '\h' and '\' (a single backslash) itself becomes '\\'.
</para>
</refsect1>
<refsect1 id="mkvextract.environment_variables">
<title>Environment variables</title>
@ -915,15 +903,6 @@
linkend="mkvextract.description.engage"><option>--engage</option></link> option.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MKVEXTRACT_OPTIONS</varname>, <varname>MKVTOOLNIX_OPTIONS</varname> and its short form <varname>MTX_OPTIONS</varname></term>
<listitem>
<para>The content is split on white space. The resulting partial strings are treated as if it had been passed as command line
options. If you need to pass special characters (e.g. spaces) then you have to escape them (see <link
linkend="mkvextract.escaping">the section about escaping special characters in text</link>).</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -311,18 +311,6 @@
</itemizedlist>
</refsect1>
<refsect1 id="mkvinfo.escaping">
<title>Escaping special chars in text</title>
<para>
There are a few places in which special characters in text must or should be escaped. The rules for escaping are simple: each character
that needs escaping is replaced with a backslash followed by another character.
</para>
<para>
The rules are: ' ' (a space) becomes '\s', '&quot;' (double quotes) becomes '\2', ':' becomes '\c', '#' becomes '\h' and '\' (a single backslash) itself becomes '\\'.
</para>
</refsect1>
<refsect1 id="mkvinfo.environment_variables">
<title>Environment variables</title>
@ -347,15 +335,6 @@
linkend="mkvinfo.description.engage"><option>--engage</option></link> option.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MKVINFO_OPTIONS</varname>, <varname>MKVTOOLNIX_OPTIONS</varname> and its short form <varname>MTX_OPTIONS</varname></term>
<listitem>
<para>The content is split on white space. The resulting partial strings are treated as if it had been passed as command line
options. If you need to pass special characters (e.g. spaces) then you have to escape them (see <link
linkend="mkvinfo.escaping">the section about escaping special characters in text</link>).</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -1934,31 +1934,13 @@ $ mkvmerge -o out.mkv '(' file.mkv ')'</screen>
</listitem>
</varlistentry>
<varlistentry id="mkvmerge.description.identify_verbose">
<term><option>-I</option>, <option>--identify-verbose</option> <parameter>file-name</parameter></term>
<listitem>
<para>
Will let &mkvmerge; probe the single file and report its type, the tracks contained in the file and their track IDs. If this option is
used then the only other option allowed is the filename.
</para>
<para>
The output will also contain properties for all items found, e.g. the file title or the track language.
</para>
<note>
<para>This option is deprecated. It will be removed in 2018.</para>
</note>
</listitem>
</varlistentry>
<varlistentry id="mkvmerge.description.identification_format">
<term><option>-F</option>, <option>--identification-format</option> <parameter>format</parameter></term>
<listitem>
<para>
Determines the output format used by the <link linkend="mkvmerge.description.identify"><literal>--identify</literal>
option</link>. The following formats are supported: <literal>text</literal> (the default if this option isn't used),
<literal>verbose-text</literal> and <literal>json</literal>.
option</link>. The following formats are supported: <literal>text</literal> (the default if this option isn't used) and
<literal>json</literal>.
</para>
<orderedlist>
@ -1969,26 +1951,6 @@ $ mkvmerge -o out.mkv '(' file.mkv ')'</screen>
linkend="mkvmerge.description.ui_language">--ui-language</link>).</para>
</listitem>
<listitem>
<para>
The <literal>verbose-text</literal> format extends the <literal>text</literal> format with additional properties for each item. The
extra information is surronded by square brackets. It consists of space-saparated key/value pairs where keys and values are separated
by a colon.
</para>
<para>
Each value is escaped according to the rules described in <link linkend="mkvmerge.escaping">the section about escaping special
characters in text</link>.
</para>
<para>This format is not meant to be parsed. The output will be translated into the language &mkvmerge; uses (see also <link
linkend="mkvmerge.description.ui_language">--ui-language</link>).</para>
<note>
<para>This option is deprecated. It will be removed in 2018.</para>
</note>
</listitem>
<listitem>
<para>
The <literal>json</literal> format outputs a machine-readable JSON representation. This format follows the JSON schema described in
@ -2593,29 +2555,21 @@ Track ID 1: audio (A_MPEG/L3)</screen>
</para>
<para>
There are two formats for option files: a JSON format and a proprietary legacy format. The legacy format is deprecated, and support for
it will likely be removed in 2018.
An option file contains JSON-formatted data. Its content must be a valid JSON array consisting solely of JSON
strings. The file's encoding must be UTF-8. The file should not start with a <foreignphrase>byte order marker</foreignphrase>
(<abbrev>BOM</abbrev>), but if one exists, it will be skipped.
</para>
<refsect2 id="mkvmerge.option_files.json_format">
<title>The JSON format</title>
<para>
The rules for escaping special characters inside JSON are the ones in the official JSON specification, <ulink url="https://tools.ietf.org/html/rfc7159">RFC 7159</ulink>.
</para>
<para>
A JSON option file's name must end in '<filename>.json</filename>'. Its content must be a valid JSON array consisting solely of JSON
strings. The file's encoding must be UTF-8. The file should not start with a <foreignphrase>byte order marker</foreignphrase>
(<abbrev>BOM</abbrev>), but if one exists, it will be skipped.
</para>
<para>
The command line '<command>mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg</command>' could be converted into the following
JSON option file called e.g. '<filename>options.json</filename>':
</para>
<para>
The rules for escaping special characters inside JSON are the ones in the official JSON specification, <ulink url="https://tools.ietf.org/html/rfc7159">RFC 7159</ulink>.
</para>
<para>
The command line '<command>mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg</command>' could be converted into the following
JSON option file called e.g. '<filename>options.json</filename>':
</para>
<programlisting>[
<programlisting>[
"-o",
"c:\\Matroska\\my file.mkv",
"--title",
@ -2624,59 +2578,6 @@ Track ID 1: audio (A_MPEG/L3)</screen>
"a movie.avi",
"sound.ogg"
]</programlisting>
</refsect2>
<refsect2 id="mkvmerge.option_files.legacy_format">
<title>The legacy format</title>
<para>
There are several rules regarding option files. Lines whose first non-whitespace character is a hash mark ('<literal>#</literal>') are
treated as comments and ignored. White spaces at the start and end of a line will be stripped. Each line must contain exactly one
option.
</para>
<para>
A line not containing anything is also ignored. An empty argument is represented by the line '<literal>#EMPTY#</literal>'.
</para>
<para>
Several chars can be escaped, e.g. if you need to start a non-comment line with '#'. The rules are described in <link
linkend="mkvmerge.escaping">the section about escaping text</link>.
</para>
<para>
Note that backslashes must always be escaped. Hash marks ('#') must be escaped if they should not start a comment.
</para>
<para>
The command line '<command>mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg</command>' could be converted into the following
legacy option file called e.g. '<filename>options.txt</filename>':
</para>
<programlisting># Write to the file "c:\Matroska\my file.mkv" on Windows.
-o
c:\\Matroska\\my file.mkv
# Set the title to '#65'.
--title
\h65
# Only take the video from "a movie.avi".
-A
a movie.avi
sound.ogg</programlisting>
</refsect2>
</refsect1>
<refsect1 id="mkvmerge.escaping">
<title>Escaping special chars in text</title>
<para>
There are a few places in which special characters in text must or should be escaped. The rules for escaping are simple: each character
that needs escaping is replaced with a backslash followed by another character.
</para>
<para>
The rules are: ' ' (a space) becomes '\s', '&quot;' (double quotes) becomes '\2', ':' becomes '\c', '#' becomes '\h', '[' becomes '\b', ']' becomes '\B' and '\' (a single backslash) itself becomes '\\'.
</para>
</refsect1>
<refsect1 id="mkvmerge.subtitles">
@ -3286,15 +3187,6 @@ gap, 10.050
linkend="mkvmerge.description.engage"><option>--engage</option></link> option.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MKVMERGE_OPTIONS</varname>, <varname>MKVTOOLNIX_OPTIONS</varname> and its short form <varname>MTX_OPTIONS</varname></term>
<listitem>
<para>The content is split on white space. The resulting partial strings are treated as if it had been passed as command line
options. If you need to pass special characters (e.g. spaces) then you have to escape them (see <link linkend="mkvmerge.escaping">the
section about escaping special characters in text</link>).</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -724,18 +724,6 @@
</para>
</refsect1>
<refsect1 id="mkvpropedit.escaping">
<title>Escaping special chars in text</title>
<para>
There are a few places in which special characters in text must or should be escaped. The rules for escaping are simple: each character
that needs escaping is replaced with a backslash followed by another character.
</para>
<para>
The rules are: ' ' (a space) becomes '\s', '&quot;' (double quotes) becomes '\2', ':' becomes '\c', '#' becomes '\h' and '\' (a single backslash) itself becomes '\\'.
</para>
</refsect1>
<refsect1 id="mkvpropedit.environment_variables">
<title>Environment variables</title>
@ -760,15 +748,6 @@
linkend="mkvpropedit.description.engage"><option>--engage</option></link> option.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MKVPROPEDIT_OPTIONS</varname>, <varname>MKVTOOLNIX_OPTIONS</varname> and its short form <varname>MTX_OPTIONS</varname></term>
<listitem>
<para>The content is split on white space. The resulting partial strings are treated as if it had been passed as command line
options. If you need to pass special characters (e.g. spaces) then you have to escape them (see <link
linkend="mkvpropedit.escaping">the section about escaping special characters in text</link>).</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -2478,16 +2478,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Avisos emesos per la tasca «%1», iniciada el %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1.- Un número que serà interpretat com un ID d'adjunt llistat per «mkvmerge --identify-verbose». Normalment, són números començant des de 0 (p. ex., «2»)."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1.- Un número que serà interpretat com un ID d'adjunt llistat per «mkvmerge --identify». Normalment, són números començant des de 0 (p. ex., «2»)."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: tots els fotogrames"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2.- Un número amb el prefix «=», el qual serà interpretat com un l'ID únic de l'adjunt llistat per «mkvmerge --identify-verbose». Normalment, són nombres aleatoris. (p. ex., «128975986723»)."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2.- Un número amb el prefix «=», el qual serà interpretat com un l'ID únic de l'adjunt llistat per «mkvmerge --identify». Normalment, són nombres aleatoris. (p. ex., «128975986723»)."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2474,16 +2474,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Upozornění vyvolaná úlohou '%1' spuštěnou %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Číslo, které bude vyhodnoceno jako ID přílohy a zobrazeno podle 'mkvmerge --identify-verbose'. Jsou to obvykle jednoduchá čísla začínající od 0 (např. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Číslo, které bude vyhodnoceno jako ID přílohy a zobrazeno podle 'mkvmerge --identify'. Jsou to obvykle jednoduchá čísla začínající od 0 (např. '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: všechny snímky"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Číslo s předponou \"=\", které bude vyhodnoceno jako jedinečné ID (UID) přílohy a zobrazeno podle 'mkvmerge --identify-verbose'. Jsou to obvykle náhodně vypadající čísla (např. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Číslo s předponou \"=\", které bude vyhodnoceno jako jedinečné ID (UID) přílohy a zobrazeno podle 'mkvmerge --identify'. Jsou to obvykle náhodně vypadající čísla (např. '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2426,16 +2426,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Warnungen ausgegeben von Job »%1« gestartet am %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. eine Zahl, die als die Dateianhangs-ID interpretiert wird, die auch »mkvmerge --identify-verbose« ausgibt. Diese sind normalerweise aufsteigend nummeriert und starten bei 0 (z.B. »2«)."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. eine Zahl, die als die Dateianhangs-ID interpretiert wird, die auch »mkvmerge --identify« ausgibt. Diese sind normalerweise aufsteigend nummeriert und starten bei 0 (z.B. »2«)."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: alle Bilder"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. eine Zahl mit dem Präfix »=«, die als die eindeutige ID eines Dateianhangs interpretiert und auch von »mkvmerge --identify-verbose« ausgegeben wird. Dies ist normalerweise eine zufällig aussehende Zahl (z.B. »128975986723«)."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. eine Zahl mit dem Präfix »=«, die als die eindeutige ID eines Dateianhangs interpretiert und auch von »mkvmerge --identify« ausgegeben wird. Dies ist normalerweise eine zufällig aussehende Zahl (z.B. »128975986723«)."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2489,16 +2489,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Advertencias generadas por la tarea '%1' iniciada en %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Un número que será interpretado como un ID de un archivo adjunto listado por 'mkvmerge --identify-verbose'. Normalmente, son números que empiezan desde 0 (p.e. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Un número que será interpretado como un ID de un archivo adjunto listado por 'mkvmerge --identify'. Normalmente, son números que empiezan desde 0 (p.e. '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: todos los fotogramas"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Un número con el prefijo '=' que será interpretado como un UID (IDentificador Único) del archivo adjunto listado por 'mkvmerge --identify-verbose'. Normalmente, son números aleatorios. (p.e. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Un número con el prefijo '=' que será interpretado como un UID (IDentificador Único) del archivo adjunto listado por 'mkvmerge --identify'. Normalmente, son números aleatorios. (p.e. '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2424,16 +2424,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- '%1' lanak jaulkitako kontuz-oharrak. Hasiera: %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Zenbaki bat eranskin ID bezala ulertuko da 'mkvmerge --identify-verbose'-n zerrendatu bezala. Hauek arrunt 0-tik hasita zenbakitzen dira (adib. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Zenbaki bat eranskin ID bezala ulertuko da 'mkvmerge --identify'-n zerrendatu bezala. Hauek arrunt 0-tik hasita zenbakitzen dira (adib. '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: frame guztiak"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Zenbaki bat '=' aurrizkiarekin eranskinaren ID (UID) bakar bezala ulertuko dena 'mkvmerge --identify-verbose'-n zerrendatu bezala. Hauek arrunt zorizko-zenbakiak dira (adib. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Zenbaki bat '=' aurrizkiarekin eranskinaren ID (UID) bakar bezala ulertuko dena 'mkvmerge --identify'-n zerrendatu bezala. Hauek arrunt zorizko-zenbakiak dira (adib. '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"
@ -13500,7 +13500,7 @@ msgstr " Ezarri ezer ez bezala "
#~ msgid ""
#~ "1. A number which will be interepreted as an attachment ID as listed by "
#~ "'mkvmerge --identify-verbose'. These are usually simply numbered starting "
#~ "'mkvmerge --identify'. These are usually simply numbered starting "
#~ "from 0 (e.g. '2')."
#~ msgstr ""
#~ "1. Eranskin baten ID bezala ulertuko den zenbaki bat 'mkvmerge --identify-"
@ -13519,11 +13519,11 @@ msgstr " Ezarri ezer ez bezala "
#~ msgid ""
#~ "2. A number with the prefix '=' which will be interepreted as the "
#~ "attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. "
#~ "attachment's unique ID (UID) as listed by 'mkvmerge --identify'. "
#~ "These are usually random-looking numbers (e.g. '128975986723')."
#~ msgstr ""
#~ "2. '=' aurrizkia duen zenbaki bat zeina eranskinaren ID (UID) bakarra "
#~ "bezala ulertuko da 'mkvmerge --identify-verbose' zerrendan bezala. Hauek "
#~ "bezala ulertuko da 'mkvmerge --identify' zerrendan bezala. Hauek "
#~ "arrunt zorizko-bilaketa zenbakiak dira (adib. '128975986723')."
#~ msgid ""

View File

@ -2415,16 +2415,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Avertissements émis par la tâche « %1 » lancée le %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Un numéro interprété comme un ID de pièce jointe et listé par « mkvmerge --identify-verbose ». La numérotation commence normalement à 0 (par exemple « 2 »)."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Un numéro interprété comme un ID de pièce jointe et listé par « mkvmerge --identify ». La numérotation commence normalement à 0 (par exemple « 2 »)."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1 : toutes les trames"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Un numéro préfixé par « = » interprété comme identifiant unique de la pièce jointe (UID) et listé par « mkvmerge --identify-verbose ». La numérotation est généralement aléatoire (par ex. « 128975986723 »)."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Un numéro préfixé par « = » interprété comme identifiant unique de la pièce jointe (UID) et listé par « mkvmerge --identify ». La numérotation est généralement aléatoire (par ex. « 128975986723 »)."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2415,16 +2415,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Notifiche emesse dall'attività '%1' avviato il %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Un numero che verrà intepretato come ID allegato come elencato da 'mkvmerge --identify-verbose'. Questi sono normalmente numeri che partono da 0 (es. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Un numero che verrà intepretato come ID allegato come elencato da 'mkvmerge --identify'. Questi sono normalmente numeri che partono da 0 (es. '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: tutti i frame"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Un numero con il prefisso '=' che verrà intepretato come l'ID univoco (UID) dell'allegato come elencato da 'mkvmerge --identify-verbose'. Questi sono normalmente numeri casuali. (es. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Un numero con il prefisso '=' che verrà intepretato come l'ID univoco (UID) dell'allegato come elencato da 'mkvmerge --identify'. Questi sono normalmente numeri casuali. (es. '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2423,16 +2423,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- %2に開始したジョブ「%1」で警告が発生しました ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 'mkvmerge --identify-verbose'で列挙される、添付ファイルのIDとして解釈される数字。これは通常、単純に0を開始点として番号が付けられます'2')。"
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 'mkvmerge --identify'で列挙される、添付ファイルのIDとして解釈される数字。これは通常、単純に0を開始点として番号が付けられます'2')。"
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: 全フレーム"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 'mkvmerge --identify-verbose'で列挙され、添付ファイルのユニークIDUIDとして解釈される、'='が最初に付加された数字。これは通常ランダムに見える数字です(例:'128975986723')。"
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 'mkvmerge --identify'で列挙され、添付ファイルのユニークIDUIDとして解釈される、'='が最初に付加された数字。これは通常ランダムに見える数字です(例:'128975986723')。"
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2378,16 +2378,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- '%1' 작업 중 경고가 %2 에서 시작되었습니다 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 'mkvmerge --identify-verbose' 에 적은 대로 첨부 파일 ID로 해석할 숫자. 이것들은 보통 단순하게 0에서 시작해서 번호를 붙입니다 (예. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 'mkvmerge --identify' 에 적은 대로 첨부 파일 ID로 해석할 숫자. 이것들은 보통 단순하게 0에서 시작해서 번호를 붙입니다 (예. '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: 모든 프레임"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 'mkvmerge --identify-verbose' 에 적은 대로 첨부 파일의 고유 ID(UID)로 해석할 접두어 '='가 있는 숫자. 이것들은 보통 무작위 모양의 숫자입니다 (예. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 'mkvmerge --identify' 에 적은 대로 첨부 파일의 고유 ID(UID)로 해석할 접두어 '='가 있는 숫자. 이것들은 보통 무작위 모양의 숫자입니다 (예. '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2332,7 +2332,7 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr ""
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr ""
#: src/info/mkvinfo.cpp:808
@ -2340,7 +2340,7 @@ msgid "1: all frames"
msgstr "1: visi kadrai"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr ""
#: src/info/mkvinfo.cpp:810

View File

@ -2408,16 +2408,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Waarschuwing verstuurd door taak '%1' gestart op %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Een nummer die gezien wordt als een bijlage ID uit gelijst door de 'mkvmerge --identify-verbose'. Dit zijn gewoonlijk nummers startend vanaf 0 (b.v. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Een nummer die gezien wordt als een bijlage ID uit gelijst door de 'mkvmerge --identify'. Dit zijn gewoonlijk nummers startend vanaf 0 (b.v. '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: alle beeldjes"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Een cijfer voorgezet met een '=' welke geïnterpreteerd zullen worden als een unieke bijlage(n) ID (UID) uit gelijst door 'mkvmerge --identify-verbose'. Dit zijn gewoonlijk willekeurige cijfers (b.v. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Een cijfer voorgezet met een '=' welke geïnterpreteerd zullen worden als een unieke bijlage(n) ID (UID) uit gelijst door 'mkvmerge --identify'. Dit zijn gewoonlijk willekeurige cijfers (b.v. '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2430,16 +2430,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "► Ostrzeżenia emitowane przez zadanie: \"%1\". Rozpoczęto o: %2"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Liczba, która będzie interpretowana jako ID załącznika, wyświetlana przez \"mkvmerge --identify-verbose\". Z reguły są to numery mogące rozpoczynać się od 0 (np.: \"2\")."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Liczba, która będzie interpretowana jako ID załącznika, wyświetlana przez \"mkvmerge --identify\". Z reguły są to numery mogące rozpoczynać się od 0 (np.: \"2\")."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: wszystkie klatki"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Liczba z przedrostkiem \"=\", która będzie interpretowana jako unikalne ID załącznika (UID), wyświetlane przez \"mkvmerge --identify-verbose\". Są to numery z cyframi przypadkowej kolejności (np.: \"128975986723\")"
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Liczba z przedrostkiem \"=\", która będzie interpretowana jako unikalne ID załącznika (UID), wyświetlane przez \"mkvmerge --identify\". Są to numery z cyframi przypadkowej kolejności (np.: \"128975986723\")"
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2358,7 +2358,7 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "Aviso emitidos pela tarefa '%1' iniciada em %2"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr ""
#: src/info/mkvinfo.cpp:808
@ -2366,7 +2366,7 @@ msgid "1: all frames"
msgstr "1: todos os frames"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr ""
#: src/info/mkvinfo.cpp:810

View File

@ -2486,7 +2486,7 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr ""
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr ""
#: src/info/mkvinfo.cpp:808
@ -2494,7 +2494,7 @@ msgid "1: all frames"
msgstr "1: todos os frames"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr ""
#: src/info/mkvinfo.cpp:810

View File

@ -2226,7 +2226,7 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Avertizări emise de activitatea „%1” pornită pe %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr ""
#: src/info/mkvinfo.cpp:808
@ -2234,7 +2234,7 @@ msgid "1: all frames"
msgstr "1: toate cadrele"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr ""
#: src/info/mkvinfo.cpp:810

View File

@ -2237,16 +2237,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Предупреждения, произведённые заданием '%1', запущенным в %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Число, интерпретируемое как идентификатор вложения, как они перечисляются командой 'mkvmerge --identify-verbose'. Обычно они просто нумеруются по порядку начиная с нуля (например '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Число, интерпретируемое как идентификатор вложения, как они перечисляются командой 'mkvmerge --identify'. Обычно они просто нумеруются по порядку начиная с нуля (например '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: все кадры"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Число с префиксом '=', что интерпретируется как уникальный ID (UID) вложения, как они перечисляются командой 'mkvmerge --identify-verbose'. Обычно это произвольного вида числа (например '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Число с префиксом '=', что интерпретируется как уникальный ID (UID) вложения, как они перечисляются командой 'mkvmerge --identify'. Обычно это произвольного вида числа (например '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2499,16 +2499,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Упозорења при извршењу радње »%1«, покренуте: %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Број који се добије преко „mkvmerge --identify-verbose“, приказан као Прилог ИБ. Ови бројеви су једноставно нумерисани почев од „0“ (нпр. „2“)."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Број који се добије преко „mkvmerge --identify“, приказан као Прилог ИБ. Ови бројеви су једноставно нумерисани почев од „0“ (нпр. „2“)."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: сви кадрови"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Број са предлошком „=“. Овај број је приказан као јединствен ИБ (ЈИБ) прилога (енг. „uid“) у излазу наредбе „mkvmerge --identify-verbose“. Ово су обично насумице створени бројеви (нпр. „128975986723“)."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Број са предлошком „=“. Овај број је приказан као јединствен ИБ (ЈИБ) прилога (енг. „uid“) у излазу наредбе „mkvmerge --identify“. Ово су обично насумице створени бројеви (нпр. „128975986723“)."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2437,16 +2437,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Upozorenja emitovana od zadatka '%1' započela u %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Broj koji će biti protumačen kao ID priloga kao što je navedeno sa 'mkvmerge --identify-verbose'. Oni su obično jednostavno numerisani polazeći od 0 (npr. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Broj koji će biti protumačen kao ID priloga kao što je navedeno sa 'mkvmerge --identify'. Oni su obično jednostavno numerisani polazeći od 0 (npr. '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: sve slike"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Broj sa prefiksom '=', koji će biti protumačen kao jedinstven ID priloga (UID) kao što je navedeno sa 'mkvmerge --identify-verbose'. Oni obično izgledaju kao nasumice izabrani brojevi (npr. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Broj sa prefiksom '=', koji će biti protumačen kao jedinstven ID priloga (UID) kao što je navedeno sa 'mkvmerge --identify'. Oni obično izgledaju kao nasumice izabrani brojevi (npr. '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2245,7 +2245,7 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr ""
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr ""
#: src/info/mkvinfo.cpp:808
@ -2253,7 +2253,7 @@ msgid "1: all frames"
msgstr "1: alla rutor"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr ""
#: src/info/mkvinfo.cpp:810

View File

@ -2407,7 +2407,7 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- '%1' işi tarafından verilen %2 zamanındaki uyarılar ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr ""
#: src/info/mkvinfo.cpp:808
@ -2415,7 +2415,7 @@ msgid "1: all frames"
msgstr "1: tüm kareler"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr ""
#: src/info/mkvinfo.cpp:810

View File

@ -2457,16 +2457,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- Попередження, згенеровані під час виконання завдання \"%1\" розпочатого в: %2 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Число, що буде інтепретуватися як ID вкладення як вказано в 'mkvmerge --identify-verbose'. Це зазвичай проста нумерація, починаючи з 0 (наприклад, '2')."
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. Число, що буде інтепретуватися як ID вкладення як вказано в 'mkvmerge --identify'. Це зазвичай проста нумерація, починаючи з 0 (наприклад, '2')."
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: всі кадри"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Число з префіксом '=', що буде інтепретуватися як унікальний ID вкладення (UID) як вказано в 'mkvmerge --identify-verbose'. Це зазвичай випадково згенеровані числа (наприклад, '128975986723')."
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. Число з префіксом '=', що буде інтепретуватися як унікальний ID вкладення (UID) як вказано в 'mkvmerge --identify'. Це зазвичай випадково згенеровані числа (наприклад, '128975986723')."
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2343,16 +2343,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- 任务“%1”(启动时间 %2) 的警告消息 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 一个表示附件 ID 的数字 ('mkvmerge --identify-verbose' 所列出的)。通常是从 0 开始的数字编号 (如 '2')。"
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 一个表示附件 ID 的数字 ('mkvmerge --identify' 所列出的)。通常是从 0 开始的数字编号 (如 '2')。"
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: 所有帧"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 数字,以“=”为前缀,表示附件的唯一 IDUID即“mkvmerge --identify-verbose”所列出的 ID。通常是看起来随机的数字 (如“128975986723”)。"
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 数字,以“=”为前缀,表示附件的唯一 IDUID即“mkvmerge --identify”所列出的 ID。通常是看起来随机的数字 (如“128975986723”)。"
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -2397,16 +2397,16 @@ msgid "--- Warnings emitted by job '%1' started on %2 ---"
msgstr "--- 任務 %1 (開始時間 %2) 的警告訊息 ---"
#: src/propedit/propedit_cli_parser.cpp:263
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 插入號碼作為由「mkvmerge --identify-verbose」列舉的附件 ID。這些號碼通常是從 0 開始編號的簡單號碼 (例如「2」)。"
msgid "1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."
msgstr "1. 插入號碼作為由「mkvmerge --identify」列舉的附件 ID。這些號碼通常是從 0 開始編號的簡單號碼 (例如「2」)。"
#: src/info/mkvinfo.cpp:808
msgid "1: all frames"
msgstr "1: 全部畫格"
#: src/propedit/propedit_cli_parser.cpp:264
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 插入以「=」為字首的號碼作為由「mkvmerge --identify-verbose」列舉的附件唯一識別碼 (UID)。這些號碼通常看起來像是隨機產生的數字 (例如「128975986723」)。"
msgid "2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."
msgstr "2. 插入以「=」為字首的號碼作為由「mkvmerge --identify」列舉的附件唯一識別碼 (UID)。這些號碼通常看起來像是隨機產生的數字 (例如「128975986723」)。"
#: src/info/mkvinfo.cpp:810
msgid "2: codec private data"

View File

@ -1,4 +0,0 @@
#!/usr/bin/env ruby
require File.absolute_path(File.dirname(__FILE__)) + "/mkvtoolnix/common.rb"
require File.absolute_path(File.dirname(__FILE__)) + "/mkvtoolnix/merge.rb"

View File

@ -1,16 +0,0 @@
#!/usr/bin/env ruby
module MKVToolNix
module Common
def self.unescape string
map = {
'2' => '"',
's' => ' ',
'c' => ':',
'h' => '#',
}
return string.gsub(/\\(.)/) { |match| map[$1] || $1 }
end
end
end

View File

@ -1,96 +0,0 @@
#!/usr/bin/env ruby
require "pp"
module MKVToolNix
module Merge
EXIT_STATUS_MAP = {
0 => :success,
1 => :warnings,
2 => :errors,
}
def self.identify file_name, opt = {}
opt[:executable] ||= 'mkvmerge'
p = IO.popen([ opt[:executable], "--identify-for-gui", "--output-charset", "UTF-8", file_name ])
output = p.readlines
p.close
result = {
:status => EXIT_STATUS_MAP[ $?.exitstatus ] || :unknown,
:exitstatus => $?.exitstatus,
:container => { },
:tracks => [ ],
:attachments => [ ],
:num_chapters => 0,
:num_tags => 0,
}
return result if result[:status] != :success
tracks_by_id = { }
num_tags_by_id = { }
output.each do |line|
line.chomp!
if /^File.+:.+container: +([^ ]+)/.match line
result[:container] = self.extract_properties(line).merge(:type => $1)
elsif /^Track ID (\d): +([a-z\-]+) +\((.+?)\)/.match line
track = self.extract_properties(line).merge(
:mkvmerge_id => $1.to_i,
:type => $2.to_sym,
:codec => $3,
:num_tags => 0,
)
result[:tracks] << track
tracks_by_id[ track[:mkvmerge_id] ] = track
elsif /^Attachment +ID +(\d+): +type +["'](.+)["'], +size +(\d+) +bytes?, +file +name +["'](.+)["']$/.match line
# Attachment ID 1: type 'text/plain', size 1202 bytes, file name 'ven.srt'
result[:attachments] << {
:mkvmerge_id => $1.to_i,
:type => $2,
:size => $3.to_i,
:file_name => $4,
}
elsif /^Global +tags: +(\d+)/.match line
# Global tags: 4 entries
result[:num_tags] = $1.to_i
elsif /^Chapters: +(\d+)/.match line
# Chapters: 5 entries
result[:num_chapters] = $1.to_i
elsif /^Tags +for +track +ID +(\d+): +(\d+)/.match line
# Tags for track ID 1: 2 entries
num_tags_by_id[$1.to_i] = $2.to_i
end
end
num_tags_by_id.each do |id, num|
tracks_by_id[id][:num_tags] = num if tracks_by_id.has_key? id
end
return result
end
protected
def self.extract_properties line
return { } unless /.+\[ ( .+ ) \]/x.match line
return Hash[ *
$1
.chomp
.split(/ +/)
.collect { |part| sub_parts = part.split(/:/).collect { |sub_part| MKVToolNix::Common.unescape sub_part } ; [ sub_parts[0].to_sym, sub_parts[1] ] }
.flatten
]
end
end
end

View File

@ -36,49 +36,6 @@ namespace mtx { namespace cli {
bool g_gui_mode = false;
/** \brief Reads command line arguments from a file
Each line contains exactly one command line argument or a
comment. Arguments are converted to UTF-8 and appended to the array
\c args.
*/
static void
read_args_from_old_option_file(std::vector<std::string> &args,
std::string const &filename) {
mm_text_io_cptr mm_io;
std::string buffer;
bool skip_next;
try {
mm_io = std::make_shared<mm_text_io_c>(std::make_shared<mm_file_io_c>(filename));
} catch (mtx::mm_io::exception &ex) {
mxerror(boost::format(Y("The file '%1%' could not be opened for reading: %2%.\n")) % filename % ex);
}
skip_next = false;
while (!mm_io->eof() && mm_io->getline2(buffer)) {
if (skip_next) {
skip_next = false;
continue;
}
strip(buffer);
if (buffer == "#EMPTY#") {
args.push_back("");
continue;
}
if ((buffer[0] == '#') || (buffer[0] == 0))
continue;
if (buffer == "--command-line-charset") {
skip_next = true;
continue;
}
args.push_back(unescape(buffer));
}
}
static void
read_args_from_json_file(std::vector<std::string> &args,
std::string const &filename) {
@ -121,36 +78,6 @@ read_args_from_json_file(std::vector<std::string> &args,
}
}
static void
read_args_from_file(std::vector<std::string> &args,
std::string const &filename) {
auto path = bfs::path{filename};
if (balg::to_lower_copy(path.extension().string()) == ".json")
read_args_from_json_file(args, filename);
else
read_args_from_old_option_file(args, filename);
}
static std::vector<std::string>
command_line_args_from_environment() {
std::vector<std::string> all_args;
auto process = [&all_args](std::string const &variable) {
auto value = getenv((boost::format("%1%_OPTIONS") % variable).str().c_str());
if (value && value[0]) {
auto args = split(value, " ");
std::transform(args.begin(), args.end(), std::back_inserter(all_args), unescape);
}
};
process("MKVTOOLNIX");
process("MTX");
process(balg::to_upper_copy(get_program_name()));
return all_args;
}
/** \brief Expand the command line parameters
Takes each command line paramter, converts it to UTF-8, and reads more
@ -171,13 +98,13 @@ std::vector<std::string>
args_in_utf8(int argc,
char **argv) {
int i;
std::vector<std::string> args = command_line_args_from_environment();
std::vector<std::string> args;
charset_converter_cptr cc_command_line = g_cc_stdio;
for (i = 1; i < argc; i++)
if (argv[i][0] == '@')
read_args_from_file(args, &argv[i][1]);
read_args_from_json_file(args, &argv[i][1]);
else {
if (!strcmp(argv[i], "--command-line-charset")) {
if ((i + 1) == argc)

View File

@ -118,70 +118,6 @@ shrink_whitespace(std::string &s) {
return s;
}
std::string
escape(const std::string &source) {
std::string dst;
std::string::const_iterator src;
for (src = source.begin(); src < source.end(); src++) {
if (*src == '\\')
dst += "\\\\";
else if (*src == '"')
dst += "\\2"; // Yes, this IS a trick ;)
else if (*src == ' ')
dst += "\\s";
else if (*src == ':')
dst += "\\c";
else if (*src == '#')
dst += "\\h";
else if (*src == '[')
dst += "\\b";
else if (*src == ']')
dst += "\\B";
else
dst += *src;
}
return dst;
}
std::string
unescape(const std::string &source) {
std::string dst;
std::string::const_iterator src, next_char;
src = source.begin();
next_char = src + 1;
while (src != source.end()) {
if (*src == '\\') {
if (next_char == source.end()) // This is an error...
dst += '\\';
else {
if (*next_char == '2')
dst += '"';
else if (*next_char == 's')
dst += ' ';
else if (*next_char == 'c')
dst += ':';
else if (*next_char == 'h')
dst += '#';
else if (*next_char == 'b')
dst += '[';
else if (*next_char == 'B')
dst += ']';
else
dst += *next_char;
src++;
}
} else
dst += *src;
src++;
next_char = src + 1;
}
return dst;
}
std::string
get_displayable_string(const char *src,
int max_len) {

View File

@ -39,9 +39,6 @@ void strip_back(std::string &s, bool newlines = false);
std::string &shrink_whitespace(std::string &s);
std::string escape(const std::string &src);
std::string unescape(const std::string &src);
std::string get_displayable_string(const char *src, int max_len = -1);
std::string get_displayable_string(std::string const &src);

View File

@ -23,48 +23,6 @@
static int64_rational_c s_probe_range_percentage{3, 10}; // 0.3%
static std::string
format_json_value(nlohmann::json const &value) {
return value.is_number() ? to_string(value.get<uint64_t>())
: value.is_boolean() ? std::string{value.get<bool>() ? "1" : "0"}
: value.get<std::string>();
}
static std::string
format_key_and_json_value(std::string const &key,
nlohmann::json const &value) {
return (boost::format{"%1%:%2%"} % escape(key) % escape(format_json_value(value))).str();
}
static std::string
format_verbose_info(mtx::id::verbose_info_t const &info) {
auto formatted = std::vector<std::string>{};
auto sub_fmt = boost::format("%1%.%2%.%3%");
for (auto const &pair : info) {
if (pair.second.is_array()) {
auto idx = 0u;
for (auto it = pair.second.begin(), end = pair.second.end(); it != end; ++it) {
if (it->is_object()) {
for (auto sub_it = it->begin(), sub_end = it->end(); sub_it != sub_end; ++sub_it)
formatted.emplace_back(format_key_and_json_value((sub_fmt % pair.first % idx % sub_it.key()).str(), sub_it.value()));
++idx;
} else
formatted.emplace_back(format_key_and_json_value(pair.first, *it));
}
} else
formatted.emplace_back(format_key_and_json_value(pair.first, pair.second));
}
brng::sort(formatted);
return boost::join(formatted, " ");
}
// ----------------------------------------------------------------------
template<typename T>
@ -359,74 +317,35 @@ generic_reader_c::display_identification_results() {
void
generic_reader_c::display_identification_results_as_text() {
auto identify_verbose = mtx::included_in(g_identification_output_format, identification_output_format_e::verbose_text, identification_output_format_e::gui);
auto identify_for_gui = identification_output_format_e::gui == g_identification_output_format;
std::string format_file, format_track, format_attachment, format_att_description, format_att_file_name;
if (identify_for_gui) {
format_file = "File '%1%': container: %2%";
format_track = "Track ID %1%: %2% (%3%)";
format_attachment = "Attachment ID %1%: type \"%2%\", size %3% bytes";
format_att_description = ", description \"%1%\"";
format_att_file_name = ", file name \"%1%\"";
} else {
format_file = Y("File '%1%': container: %2%");
format_track = Y("Track ID %1%: %2% (%3%)");
format_attachment = Y("Attachment ID %1%: type '%2%', size %3% bytes");
format_att_description = Y(", description '%1%'");
format_att_file_name = Y(", file name '%1%'");
}
mxinfo(boost::format(format_file) % m_ti.m_fname % m_id_results_container.info);
if (identify_verbose && !m_id_results_container.verbose_info.empty())
mxinfo(boost::format(" [%1%]") % format_verbose_info(m_id_results_container.verbose_info));
mxinfo(boost::format(Y("File '%1%': container: %2%")) % m_ti.m_fname % m_id_results_container.info);
mxinfo("\n");
for (auto &result : m_id_results_tracks) {
mxinfo(boost::format(format_track) % result.id % result.type % result.info);
if (identify_verbose && !result.verbose_info.empty())
mxinfo(boost::format(" [%1%]") % format_verbose_info(result.verbose_info));
mxinfo(boost::format(Y("Track ID %1%: %2% (%3%)")) % result.id % result.type % result.info);
mxinfo("\n");
}
for (auto &result : m_id_results_attachments) {
mxinfo(boost::format(format_attachment) % result.id % id_escape_string(result.type) % result.size);
mxinfo(boost::format(Y("Attachment ID %1%: type '%2%', size %3% bytes")) % result.id % result.type % result.size);
if (!result.description.empty())
mxinfo(boost::format(format_att_description) % id_escape_string(result.description));
mxinfo(boost::format(Y(", description '%1%'")) % result.description);
if (!result.info.empty())
mxinfo(boost::format(format_att_file_name) % id_escape_string(result.info));
if (identify_verbose && !result.verbose_info.empty())
mxinfo(boost::format(" [%1%]") % format_verbose_info(result.verbose_info));
mxinfo(boost::format(Y(", file name '%1%'")) % result.info);
mxinfo("\n");
}
for (auto &result : m_id_results_chapters) {
if (identify_for_gui)
mxinfo(boost::format("Chapters: %1% entries") % result.size);
else
mxinfo(boost::format(NY("Chapters: %1% entry", "Chapters: %1% entries", result.size)) % result.size);
mxinfo(boost::format(NY("Chapters: %1% entry", "Chapters: %1% entries", result.size)) % result.size);
mxinfo("\n");
}
for (auto &result : m_id_results_tags) {
if (ID_RESULT_GLOBAL_TAGS_ID == result.id) {
if (identify_for_gui)
mxinfo(boost::format("Global tags: %1% entries") % result.size);
else
mxinfo(boost::format(NY("Global tags: %1% entry", "Global tags: %1% entries", result.size)) % result.size);
if (ID_RESULT_GLOBAL_TAGS_ID == result.id)
mxinfo(boost::format(NY("Global tags: %1% entry", "Global tags: %1% entries", result.size)) % result.size);
} else if (identify_for_gui)
mxinfo(boost::format("Tags for track ID %1%: %2% entries") % result.id % result.size);
else
mxinfo(boost::format(NY("Tags for track ID %1%: %2% entry", "Tags for track ID %1%: %2% entries", result.size)) % result.id % result.size);
@ -498,11 +417,6 @@ generic_reader_c::display_identification_results_as_json() {
display_json_output(json);
}
std::string
generic_reader_c::id_escape_string(const std::string &s) {
return identification_output_format_e::gui == g_identification_output_format ? escape(s) : s;
}
void
generic_reader_c::add_available_track_id(int64_t id) {
m_available_track_ids.push_back(id);

View File

@ -139,8 +139,6 @@ protected:
virtual void id_result_chapters(int num_entries);
virtual void id_result_tags(int64_t track_id, int num_entries);
virtual std::string id_escape_string(const std::string &s);
virtual mm_io_c *get_underlying_input(mm_io_c *actual_in = nullptr) const;
virtual void display_identification_results_as_json();

View File

@ -19,10 +19,7 @@ static void
output_container_unsupported_text(std::string const &filename,
translatable_string_c const &info) {
if (g_identifying) {
if (identification_output_format_e::gui == g_identification_output_format)
mxinfo(boost::format("File '%1%': unsupported container: %2%\n") % filename % info);
else
mxinfo(boost::format(Y("File '%1%': unsupported container: %2%\n")) % filename % info);
mxinfo(boost::format(Y("File '%1%': unsupported container: %2%\n")) % filename % info);
mxexit(3);
} else

View File

@ -338,7 +338,7 @@ set_usage() {
" \"--identification-format json --identify file\".\n");
usage_text += Y(" -F, --identification-format <format>\n"
" Set the identification results format\n"
" ('text', 'verbose-text', 'json').\n");
" ('text' or 'json'; default is 'text').\n");
usage_text += Y(" --probe-range-percentage <percent>\n"
" Sets maximum size to probe for tracks in percent\n"
" of the total file size for certain file types\n"
@ -2116,12 +2116,6 @@ parse_arg_identification_format(std::vector<std::string>::const_iterator &sit,
if (next_arg == "text")
g_identification_output_format = identification_output_format_e::text;
else if (next_arg == "verbose-text")
g_identification_output_format = identification_output_format_e::verbose_text;
else if (next_arg == "gui")
g_identification_output_format = identification_output_format_e::gui;
else if (next_arg == "json") {
g_identification_output_format = identification_output_format_e::json;
redirect_warnings_and_errors_to_json();
@ -2169,18 +2163,12 @@ handle_identification_args(std::vector<std::string> &args) {
}
for (auto const &this_arg : args) {
if (!mtx::included_in(this_arg, "-i", "--identify", "-I", "--identify-verbose", "--identify-for-mmg", "--identify-for-gui", "-J"))
if (!mtx::included_in(this_arg, "-i", "--identify", "-J"))
continue;
identification_command = this_arg;
if (mtx::included_in(this_arg, "-I", "--identify-verbose"))
g_identification_output_format = identification_output_format_e::verbose_text;
else if (mtx::included_in(this_arg, "--identify-for-mmg", "--identify-for-gui"))
g_identification_output_format = identification_output_format_e::gui;
else if (this_arg == "-J") {
if (this_arg == "-J") {
g_identification_output_format = identification_output_format_e::json;
redirect_warnings_and_errors_to_json();
}
@ -2192,7 +2180,7 @@ handle_identification_args(std::vector<std::string> &args) {
for (auto sit = args.cbegin(), sit_end = args.cend(); sit != sit_end; sit++) {
auto const &this_arg = *sit;
if (mtx::included_in(this_arg, "-i", "--identify", "-I", "--identify-verbose", "--identify-for-mmg", "--identify-for-gui", "-J"))
if (mtx::included_in(this_arg, "-i", "--identify", "-J"))
continue;
if (mtx::included_in(this_arg, "-F", "--identification-format"))
@ -2230,7 +2218,7 @@ parse_args(std::vector<std::string> args) {
list_iso639_languages();
mxexit();
} else if (mtx::included_in(this_arg, "-i", "--identify", "-I", "--identify-verbose", "--identify-for-mmg", "--identify-for-gui", "-J"))
} else if (mtx::included_in(this_arg, "-i", "--identify", "-J"))
mxerror(boost::format(Y("'%1%' can only be used with a file name. No further options are allowed if this option is used.\n")) % this_arg);
else if (this_arg == "--capabilities") {

View File

@ -116,8 +116,6 @@ enum append_mode_e {
enum class identification_output_format_e {
text,
verbose_text,
gui,
json,
};

View File

@ -55,11 +55,6 @@
<string>MKVToolNix option files (JSON-formatted)</string>
</property>
</item>
<item>
<property name="text">
<string>MKVToolNix option files (old format)</string>
</property>
</item>
<item>
<property name="text">
<string>Don't escape</string>

View File

@ -52,16 +52,14 @@ CommandLineDialog::onEscapeModeChanged(int index) {
auto mode = 0 == index ? Util::EscapeShellCmdExeArgument
: 1 == index ? Util::EscapeShellUnix
: 2 == index ? Util::EscapeJSON
: 3 == index ? Util::EscapeMkvtoolnix
: Util::DontEscape;
auto sep = Util::EscapeMkvtoolnix == mode ? "\n" : " ";
auto opts = m_options;
if (mtx::included_in(mode, Util::EscapeJSON, Util::EscapeMkvtoolnix))
if (mtx::included_in(mode, Util::EscapeJSON))
opts.removeFirst();
ui->commandLine->setPlainText(Util::escape(opts, mode).join(Q(sep)));
ui->commandLine->setPlainText(Util::escape(opts, mode).join(Q(" ")));
}
void

View File

@ -41,20 +41,6 @@ DeferredRegularExpression::operator *() {
// ----------------------------------------------------------------------
static QString
escapeMkvtoolnix(QString const &source) {
if (source.isEmpty())
return QString{"#EMPTY#"};
return to_qs(::escape(to_utf8(source)));
}
static QString
unescapeMkvtoolnix(QString const &source) {
if (source == Q("#EMPTY#"))
return Q("");
return to_qs(::unescape(to_utf8(source)));
}
static QString
escapeShellUnix(QString const &source) {
if (source.isEmpty())
@ -186,8 +172,7 @@ unescapeKeyboardShortcuts(QString const &text) {
QString
escape(QString const &source,
EscapeMode mode) {
return EscapeMkvtoolnix == mode ? escapeMkvtoolnix(source)
: EscapeShellUnix == mode ? escapeShellUnix(source)
return EscapeShellUnix == mode ? escapeShellUnix(source)
: EscapeShellCmdExeArgument == mode ? escapeShellWindows(source)
: EscapeShellCmdExeProgram == mode ? escapeShellWindowsProgram(source)
: EscapeKeyboardShortcuts == mode ? escapeKeyboardShortcuts(source)
@ -197,10 +182,9 @@ escape(QString const &source,
QString
unescape(QString const &source,
EscapeMode mode) {
Q_ASSERT(mtx::included_in(mode, EscapeMkvtoolnix, EscapeKeyboardShortcuts));
Q_ASSERT(mtx::included_in(mode, EscapeKeyboardShortcuts));
return EscapeKeyboardShortcuts == mode ? unescapeKeyboardShortcuts(source)
: unescapeMkvtoolnix(source);
return unescapeKeyboardShortcuts(source);
}
static QStringList

View File

@ -10,7 +10,6 @@ class QStringList;
namespace mtx { namespace gui { namespace Util {
enum EscapeMode {
EscapeMkvtoolnix,
EscapeJSON,
EscapeShellUnix,
EscapeShellCmdExeArgument,

View File

@ -156,7 +156,7 @@ attachment_target_c::parse_spec(command_e command,
m_selector_string_arg = matches[4 + offset].str();
if (ac_replace == m_command)
m_selector_string_arg = unescape(m_selector_string_arg);
m_selector_string_arg = unescape_colon(m_selector_string_arg);
}
if ((ac_replace == m_command) && m_file_name.empty())
@ -336,3 +336,9 @@ attachment_target_c::replace_attachment_values(KaxAttached &att) {
if (m_file_content)
GetChild<KaxFileData>(att).CopyBuffer(m_file_content->get_buffer(), m_file_content->get_size());
}
std::string
attachment_target_c::unescape_colon(std::string arg) {
boost::replace_all(arg, "\\c", ":");
return arg;
}

View File

@ -112,6 +112,8 @@ protected:
virtual void replace_attachment_values(KaxAttached &att);
virtual bool matches_by_uid_name_or_mime_type(KaxAttached &att);
virtual std::string unescape_colon(std::string arg);
};
inline bool

View File

@ -260,8 +260,8 @@ propedit_cli_parser_c::init_parser() {
add_section_header(YT("Attachment selectors"), 0);
add_information(YT("An <attachment-selector> can have three forms:"), 1);
add_information(YT("1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify-verbose'. These are usually simply numbered starting from 0 (e.g. '2')."), 2);
add_information(YT("2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify-verbose'. These are usually random-looking numbers (e.g. '128975986723')."), 2);
add_information(YT("1. A number which will be interpreted as an attachment ID as listed by 'mkvmerge --identify'. These are usually simply numbered starting from 0 (e.g. '2')."), 2);
add_information(YT("2. A number with the prefix '=' which will be interpreted as the attachment's unique ID (UID) as listed by 'mkvmerge --identify'. These are usually random-looking numbers (e.g. '128975986723')."), 2);
add_information(YT("3. Either 'name:<value>' or 'mime-type:<value>' in which case the selector applies to all attachments whose name or MIME type respectively equals <value>."), 2);
add_hook(mtx::cli::parser_c::ht_unknown_option, std::bind(&propedit_cli_parser_c::set_file_name, this));

View File

@ -5,6 +5,8 @@ use warnings;
use English;
use JSON::PP;
my $exe = $ENV{MKVMERGE} // 'mkvmerge';
sub mpls_files {
@ -14,11 +16,12 @@ sub mpls_files {
sub identify {
my ($file_name) = @_;
my $output = `$exe --identify-verbose $file_name 2> /dev/null`;
my $output = `$exe -J $file_name 2> /dev/null`;
return undef if $CHILD_ERROR != 0;
my ($duration) = $output =~ m{playlist_duration:(\d+)};
my ($size) = $output =~ m{playlist_size:(\d+)};
$output = JSON::PP::decode_json($output);
my ($duration) = $output->{container}->{properties}->{playlist_duration};
my ($size) = $output->{container}->{properties}->{playlist_size};
return undef unless $duration && $size;

View File

@ -63,7 +63,7 @@ T_213mp4_broken_pixel_dimensions:407c26ce06393d2dc5ee1a602a63af0b:passed:2005091
T_214one_frame_avi:683d26d5c30a903e4bfba86448fc3ec2:passed:20051004-192755:0.039489971
T_215X_codec_extradata_avi:e8c0c4dad4908f20062be3c1f3b9ad85-74ac799ad899f703cbb6c6654e5f9f51:passed:20051004-194707:0.052219855
T_216mp4_editlists:66365e78024f12277a6d456d3d9dc491:passed:20051118-191453:0.106975045
T_217file_identification:0778e29cb0fd9105f256a2ef5d6ab76f-07ccbe9b29f63dabe2a106b8ec3493d4-c66a0411b938385f95d9d94348f19a56-3edc1b78f1c121e14adfa14572a887d1-6de183e75c13780b13b9bf2a03412c5e-d745abfda0493233b08945eee9111434-c68e864573c8f2b661315dfd8e16b4c7-4d79fbc36b795949b97207a1de92e7d6-f20778159a2f6ccb9dc58b843caf2a8a-21fb00a414c5ce021bff1fa46a358cf8-3038c2ae29c6493970eda7d3e52f3af5-e14631f851d4372631e246eff0c55b5a-18f99189542c084416fc7a9f41bd34a2-730d162a188013899e56e5aeffd12686-a7d494520e437c3c7c67272f2613ee15-2d276629d6ea53e3386e0b805ec89368-515532789a5b930f32856a1e3d7deb2a-4cdcef1ccefaa4977be842da4ebf34e3-4308b9e486d32e2105f4f547747f6070-9fedc0ff927fd9394eaadadc0e4c784f-cfa24cbdb820fd68c0b98816d81dd139-eb8c2e68093164ae5b3b143454f4dc25:passed:20051209-180815:1.882517588
T_217file_identification:a7959c78036a7fa44ce8b31c97014224-81f0a1b96ee89c1081cbb13bff6748d9-21cb81b1c68ee64fe33b11d17c1f484d-32e68f8e85f5c3ff55a981ba715caabd-a96a2af8eb39c8f34e30b768e03a25bd-729ab2a6be9c228a001f9c06a3b3bb38-7db6ea7b9c85b12346f1aefdebe66e04-e7ce95a9d24f08352eedad98017b867b-c674e8553ba03fece5250270f0b6dbee-70b8742edd6739e7b193b2a2d4ba3375-39f01f9a969f1e3d33a74c0c99fdf6bf-0c13df5a3a3b0b27c4d0d348cd170a25-d34845050e63e5fc3895bd77f7d460f5-dc88e2311a27f2ade19b0e5e8e77151a-ed2a4a7118b99a58d2f1ae7fd1e2d2fd-c2b250f393dc229f7952fad4d15cc372-3f0752bde4202fb12dbeb87daab2967b-6e71817fca8d4ef34de5ba227e008e3f-72cb49a74740e489d69cfc592474b368-c7407382dd1e29d07645c3f3315ac29d-c777627d7470d122b0767b0e842a6d81-339634cb983320bf8166225fa4582174:passed:20051209-180815:1.882517588
T_218theora:ed6737006bb71b5b2931e3800f81eee7-27d75f52561de1bdb24faa0a386ad7bd:passed:20060428-105054:0.392912102
T_219srt_short_timecodes:4d58c1d5ddab6368080d54a7585b0f83:passed:20060926-112658:0.117747192
T_220ass_with_comments_at_start:30926355189808086b52edf95c8f49d0:passed:20060926-120101:0.382410266

3
tests/test-217file_identification.rb Normal file → Executable file
View File

@ -30,11 +30,10 @@ class T_217file_identification < Test
"data/wp/with-correction.wv",
"data/wp/without-correction.wv"
].collect do |file|
sys "../src/mkvmerge --identify-verbose #{file} > #{tmp}", 0
sys "../src/mkvmerge -J #{file} > #{tmp}", 0
hash_tmp
end
checksum.join '-'
end
end

View File

@ -6,7 +6,7 @@ class T_255aspect_ratio_display_dimensions < Test
end
def get_display_dimensions file_name
`mkvmerge --identify-for-gui "#{file_name}" | grep 'display_dimensions:' | sed -e 's/.*display_dimensions://' -e 's/ .*//'`.chomp
JSON.load(`mkvmerge -J "#{file_name}"`)["tracks"][0]["properties"]["display_dimensions"]
end
def run_test_with_args initial_args

5
tests/test-288identify_files_by_amg.rb Normal file → Executable file
View File

@ -6,8 +6,9 @@ class T_288identify_files_by_amg < Test
end
def run
sys "../src/mkvmerge --identify-verbose data/mkv/amg_sample.mkv | grep '^Track' | wc -l | sed 's/^[^0-9]*//' > #{tmp}"
File.open(tmp, 'w') do |file|
file.puts(JSON.load(`../src/mkvmerge -J data/mkv/amg_sample.mkv`)["tracks"].size.to_s)
end
hash_tmp
end
end

View File

@ -23,7 +23,7 @@ test_merge "'(' #{vob_files[0]} #{vob_files[1]} ')'"
m2ts_files = (0..3).map { |i| "data/ts/0000#{i}.m2ts" }
test_identify m2ts_files[0], :verbose => true
test_identify m2ts_files[0], :format => :json
# These four must be equal.
test_merge m2ts_files[0]

View File

@ -5,7 +5,7 @@ the_file = "data/mkv/deprecated-languages.mkv"
# T_378deprecated_iso_639_2_codes
describe "mkvmerge / handling deprecated ISO 639-2 language codes"
test "identification" do
identify(the_file)[0].select { |e| /language:/.match(e) }.collect { |e| e.chomp.gsub(/.*language:(\w+).*/, '\1') }.compact.sort.join('+')
identify_json(the_file)["tracks"].collect { |t| t["properties"]["language"] }.compact.sort.join('+')
end
test_merge the_file

View File

@ -12,8 +12,6 @@ describe "mkvmerge / deprecated ISO 639-1/2 codes"
codes.each do |deprecated_code, expected_code|
test_merge "data/subtitles/srt/vde.srt", :args => "--language 0:#{deprecated_code}", :keep_tmp => true
test "check code #{deprecated_code} => #{expected_code}" do
output = identify tmp
unlink_tmp_files
/language:#{expected_code}/.match(output.join("")) ? "good" : "bad"
identify_json(tmp)["tracks"][0]["properties"]["language"] == expected_code ? "good" : "bad"
end
end

View File

@ -176,8 +176,8 @@ class SimpleTest
@blocks[:tests] << {
:name => full_command_line,
:block => lambda {
sys "../src/mkvmerge --identify-verbose #{full_command_line} > #{tmp}", :exit_code => 3
%r{unsupported container}.match(IO.readlines(tmp).first || '') ? :ok : :bad
json = identify_json full_command_line, :exit_code => 3
(json["container"]["recognized"] == true) && (json["container"]["supported"] == false) ? :ok : :bad
},
}
end
@ -243,9 +243,7 @@ class SimpleTest
options = args.extract_options!
fail ArgumentError if args.empty?
verbose = !options[:verbose].nil? ? options[:verbose] : true
format = options[:format] ? options[:format].to_s.downcase.gsub(/_/, '-') : verbose ? 'verbose-text' : 'text'
format = options[:format] ? options[:format].to_s.downcase.gsub(/_/, '-') : 'text'
command = "../src/mkvmerge --identify --identification-format #{format} --engage no_variable_data #{args.first}"
self.sys command, :exit_code => options[:exit_code], :no_result => options[:no_result]