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