Mercurial > mplayer.hg
changeset 9893:eb274fd5e84e
option for sub match fuzziness level
author | henry |
---|---|
date | Wed, 09 Apr 2003 18:04:29 +0000 |
parents | f6d1df877e89 |
children | 3933e0ef000c |
files | DOCS/en/mplayer.1 cfg-common.h subreader.c subreader.h |
diffstat | 4 files changed, 32 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/DOCS/en/mplayer.1 Wed Apr 09 17:09:20 2003 +0000 +++ b/DOCS/en/mplayer.1 Wed Apr 09 18:04:29 2003 +0000 @@ -1081,9 +1081,19 @@ Disables any kind of text post processing done after loading the subtitles. Used for debug purposes. .TP -.B \-subfuzzy -Relax when trying to find matching subtitles. Loads all subtitles in -the current directory, allowing to select the right ones during playing. +.B \-sub-fuzziness +Adjust matching fuzziness when searching for subtitles: +.PD 0 +.RSs +.IPs 0 +exact match +.IPs 1 +load all subs containing movie name +.IPs 2 +load all subs in the current directory +.RE +.PD 1 +. .TP .B \-vobsub <vobsub\ file\ without\ extension> Specify the VobSub files that are to be used for subtitle.
--- a/cfg-common.h Wed Apr 09 17:09:20 2003 +0000 +++ b/cfg-common.h Wed Apr 09 18:04:29 2003 +0000 @@ -212,7 +212,7 @@ {"sub-bg-color", &sub_bg_color, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL}, {"sub-bg-alpha", &sub_bg_alpha, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL}, {"sub-no-text-pp", &sub_no_text_pp, CONF_TYPE_FLAG, 0, 0, 1, NULL}, - {"subfuzzy", &subfuzzy_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL}, + {"sub-fuzziness", &sub_match_fuzziness, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL}, #endif #ifdef USE_OSD {"font", &font_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
--- a/subreader.c Wed Apr 09 17:09:20 2003 +0000 +++ b/subreader.c Wed Apr 09 18:04:29 2003 +0000 @@ -40,7 +40,7 @@ int sub_no_text_pp=0; // 1 => do not apply text post-processing // like {\...} elimination in SSA format. -int subfuzzy_enabled=0; // be _really_ fuzzy when looking for subtitles +int sub_match_fuzziness=0; // level of sub name matching fuzziness /* Use the SUB_* constant defined in the header file */ int sub_format=SUB_INVALID; @@ -1574,7 +1574,10 @@ static int compare_sub_priority(const void *a, const void *b) { - return ((subfn*)a)->priority < ((subfn*)b)->priority; + int ret; + ret = ((subfn*)a)->priority < ((subfn*)b)->priority; + if (ret != 0) return ret; + return strcoll(((subfn*)a)->fname, ((subfn*)b)->fname); } char** sub_filenames(char* path, char *fname) @@ -1663,9 +1666,17 @@ // we have a (likely) subtitle file if (found) { - // does it contain the movie name? - tmp = strstr(tmp_fname_trim, f_fname_trim); - if (tmp) { + if (strcmp(tmp_fname_trim, f_fname_trim) == 0) { + // matches the movie name? + sprintf(tmpresult, "%s%s", f_dir, de->d_name); + if ((f = fopen(tmpresult, "rt"))) { + fclose(f); + result[subcnt].priority = 4; + result[subcnt].fname = strdup(tmpresult); + subcnt++; + } + } else if ((tmp = strstr(tmp_fname_trim, f_fname_trim)) && (sub_match_fuzziness >= 1)) { + // does it contain the movie name? tmp += strlen(f_fname_trim); if (tmp_sub_id && strstr(tmp, tmp_sub_id)) { // with sub_id specified prefer localized subtitles @@ -1698,7 +1709,7 @@ } else { // doesn't contain the movie name // don't try in the mplayer subtitle directory - if ((j == 0) && subfuzzy_enabled) { + if ((j == 0) && (sub_match_fuzziness >= 2)) { sprintf(tmpresult, "%s%s", f_dir, de->d_name); if ((f = fopen(tmpresult, "rt"))) { fclose(f);
--- a/subreader.h Wed Apr 09 17:09:20 2003 +0000 +++ b/subreader.h Wed Apr 09 18:04:29 2003 +0000 @@ -3,7 +3,7 @@ extern int suboverlap_enabled; extern int sub_no_text_pp; // disable text post-processing -extern int subfuzzy_enabled; +extern int sub_match_fuzziness; // subtitle formats #define SUB_INVALID -1