mirror of
https://github.com/mpv-player/mpv.git
synced 2026-05-07 20:02:49 +00:00
misc/language: parse default tag from external subtitle tracks
This commit is contained in:
committed by
Kacper Michajłow
parent
db7bc5949a
commit
2d149e007f
@@ -97,6 +97,7 @@ enum track_flags {
|
||||
TRACK_VISUAL_IMPAIRED = 1 << 3,
|
||||
TRACK_ATTACHED_PICTURE = 1 << 4,
|
||||
TRACK_FORCED = 1 << 5,
|
||||
TRACK_DEFAULT = 1 << 6,
|
||||
};
|
||||
|
||||
#define VS_IS_DISP(x) ((x) == VS_DISP_RESAMPLE || \
|
||||
|
||||
@@ -347,6 +347,10 @@ bstr mp_guess_lang_from_filename(bstr name, int *lang_start, enum track_flags *f
|
||||
*f |= TRACK_FORCED;
|
||||
matched = true;
|
||||
}
|
||||
if (!bstrcasecmp0(tag, "default")) {
|
||||
*f |= TRACK_DEFAULT;
|
||||
matched = true;
|
||||
}
|
||||
if (matched) {
|
||||
lang_length = 0;
|
||||
i -= (delimiter != '.') ? 2 : 1;
|
||||
|
||||
@@ -6315,6 +6315,7 @@ static void cmd_track_reload(void *p)
|
||||
flags |= t->hearing_impaired_track ? TRACK_HEARING_IMPAIRED : 0;
|
||||
flags |= t->visual_impaired_track ? TRACK_VISUAL_IMPAIRED : 0;
|
||||
flags |= t->forced_track ? TRACK_FORCED : 0;
|
||||
flags |= t->default_track ? TRACK_DEFAULT : 0;
|
||||
mp_remove_track(mpctx, t);
|
||||
nt_num = mp_add_external_file(mpctx, filename, type, cmd->abort->cancel,
|
||||
flags);
|
||||
@@ -6335,6 +6336,7 @@ static void cmd_track_reload(void *p)
|
||||
nt->lang = bstrto0(nt, lang);
|
||||
nt->hearing_impaired_track = flags & TRACK_HEARING_IMPAIRED;
|
||||
nt->forced_track = flags & TRACK_FORCED;
|
||||
nt->default_track = flags & TRACK_DEFAULT;
|
||||
}
|
||||
|
||||
mp_switch_track(mpctx, nt->type, nt, 0);
|
||||
|
||||
@@ -918,6 +918,7 @@ int mp_add_external_file(struct MPContext *mpctx, char *filename,
|
||||
t->hearing_impaired_track = flags & TRACK_HEARING_IMPAIRED;
|
||||
t->visual_impaired_track = flags & TRACK_VISUAL_IMPAIRED;
|
||||
t->forced_track = flags & TRACK_FORCED;
|
||||
t->default_track = flags & TRACK_DEFAULT;
|
||||
// if we found video, and we are loading cover art, flag as such.
|
||||
t->attached_picture = t->type == STREAM_VIDEO && (flags & TRACK_ATTACHED_PICTURE);
|
||||
if (first_num < 0 && (filter == STREAM_TYPE_COUNT || sh->type == filter))
|
||||
|
||||
@@ -81,6 +81,9 @@ int main(void)
|
||||
TEST_LANG_GUESS("foo.en-US.forced.srt", "en-US", 3, TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo.en-US.forced.sdh.srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo.en-US.sdh.forced.srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo.en-US.default.srt", "en-US", 3, TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo.en-US.default.sdh.srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo.en-US.sdh.default.srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo.en-simple.srt", "en-simple", 3, 0);
|
||||
TEST_LANG_GUESS("foo.sgn-FSL.srt", "sgn-FSL", 3, 0);
|
||||
TEST_LANG_GUESS("foo.gsw-u-sd-chzh.srt", "gsw-u-sd-chzh", 3, 0);
|
||||
@@ -96,6 +99,9 @@ int main(void)
|
||||
TEST_LANG_GUESS("foo[en-US][forced].srt", "en-US", 3, TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo[en-US][forced][sdh].srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo[en-US][sdh][forced].srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo[en-US][default].srt", "en-US", 3, TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo[en-US][default][sdh].srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo[en-US][sdh][default].srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo[].srt", "", -1, 0);
|
||||
|
||||
TEST_LANG_GUESS("foo(en).srt", "en", 3, 0);
|
||||
@@ -105,12 +111,19 @@ int main(void)
|
||||
TEST_LANG_GUESS("foo(en-US)(forced).srt", "en-US", 3, TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo(en-US)(forced)(sdh).srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo(en-US)(sdh)(forced).srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo(en-US)(default).srt", "en-US", 3, TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo(en-US)(default)(sdh).srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo(en-US)(sdh)(default).srt", "en-US", 3, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo().srt", "", -1, 0);
|
||||
|
||||
TEST_LANG_GUESS("foo.hi.forced.srt", "", -1, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo.forced.hi.srt", "", -1, TRACK_HEARING_IMPAIRED | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo.hi.default.srt", "", -1, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo.default.hi.srt", "", -1, TRACK_HEARING_IMPAIRED | TRACK_DEFAULT);
|
||||
TEST_LANG_GUESS("foo.default.forced.srt", "", -1, TRACK_DEFAULT | TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo.hi.srt", "", -1, TRACK_HEARING_IMPAIRED);
|
||||
TEST_LANG_GUESS("foo.forced.srt", "", -1, TRACK_FORCED);
|
||||
TEST_LANG_GUESS("foo.default.srt", "", -1, TRACK_DEFAULT);
|
||||
|
||||
talloc_free(ta_ctx);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user