see e967f81f6a.
note, this does **not** affect cat-based module selection items
(of which there are just three in use by the core), since that
mechanism uses subcats not cats.
esout, dvdnav and bluray are currently using a very old hack of searching
all fields of the raw language table for searches where they want to allow
matches against the names, not just codes. this is a step towards getting
rid of that ugly old hack by offering proper functionality for doing such
a search.
the implementation currently duplicates that used by the three previously
mentioned use cases. i intend to rework the implementation in a subsequent
commit; first though we need to just set things up for simply removing the
hack. that new implementation will better justify this being done with a
flag rather than a separate function.
...with a new function, which also replaces direct use of the three
code-specific functions.
all users of these three functions had a common pattern of using the
iso-639-1 lookup for len==2 codes, and for len==3 doing a 2B lookup,
falling back to a 2T lookup if that failed.
this pattern is now implemented in the new `vlc_find_iso639()` function.
the three individual functions are now made private, not being needed
publicly anymore. they also now just do a straight `strcmp()` rather than
`strncmp()` because they are only called for the right length of strings.
the implementation will be tweaked slightly in the next commit.
this was introduced in b8774b3c1a as part of
de-duplicating code, however the two blocks that used the relevant code
were also merged in the same commit, making the function unnecessary.
this is being done partly as cleanup before the next commit, which would
remove it anyway, but doing it separately first makes the diffs more
clear.
this brings the use of the lookup functions back into line with use
everywhere else in the codebase.
a handful of small mistakes were made in "simplifying" the iso-639
handling back in b8774b3c1a. this
corrects those mistakes, and in doing so brings this back into line
with all other use of the iso-639 lookup functions.
the mistakes:
1. the english/native comments were added the wrong way around.
2. the 2T fallback lookup was made unreachable.
after searching with the 2B code, we either have a match, or the
'unknown' record (which uses '?' characters). since every single entry
in the table has a non-empty 2T code (ignoring the irrelevant end
marker), and since the 'unknown' item also has a non-empty 2T code
("???"), the fallback path to search with 2T would never be triggered.
3. the avoidance of storing language code on failed lookup was broken.
the `*code` condition would always be true, since matching records
always have a 2T code, and for no match "???" is always returned from
the 'unknown' record. this means that for failed matches, "???" would
be unintentionally written into the entry.
4. the len==3 condition on iso-639-2 lookup was lost.
the previous code conditionally only performed an iso-639-2 lookup if
the string length is 3, just like all other cases of such lookups
throughout the codebase. there was no specific reason for this to have
been removed here. (this is going to get restored anyway momentarily
when the code gets de-duplicated by a new function).
5. an incorrect comment was given to the newly introduced function.
the new `GetIso639_2LangCode()` helper function it introduced always
returns len==3 strings, never len==0.
The config "advanced" flag was unused and has been removed by
6a7a137f7b.
It has been removed from many add_*() macros, but not all. Remove it
from the remaining macros.
just as hinted in the option long descriptions, these options are actually
obsolete, but were never converted to actual obsolete options
a little code was left that read, stored and reacted to the option values,
however it really did nothing at all useful:
1) if min > max, gives warning and sets to zero - POINTLESS
2) if min or max > 0, gives error about not supported - POINTLESS
3) if bit rate goes above max, gives warning - POINTLESS
The first element (initialized here by the = { 0 }) is an array, and
require braces. To avoid clunky braces, use the designated zero
initialization with a known simpler field.
Unregistered, Unlisted, unexplained. (source quality ?)
Appears only with old mov.
Matrix_Reloaded_final_theatrical_trailer-SVQ3-mp4a.mov
program480_dl-small2.mov
For now, assume that this is always true. Eventually, we probably want
to give more flexibility and responsibility to the muxer than the core,
but for now, this removes one dependency from muxer to the sout
instance.