From 3e6ed769357aa317bab5866da39cf0704e62fd5e Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 15 Aug 2013 23:13:10 +0200 Subject: sub: don't print detected charset if it's UTF-8 Too noisy. This also fixes that iconv() was called if "utf8" was used as codepage. --- mpvcore/charset_conv.c | 12 ++++++++---- mpvcore/charset_conv.h | 1 + sub/dec_sub.c | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mpvcore/charset_conv.c b/mpvcore/charset_conv.c index 1a2908ad08..a5c7f559ad 100644 --- a/mpvcore/charset_conv.c +++ b/mpvcore/charset_conv.c @@ -41,6 +41,12 @@ #include "charset_conv.h" +bool mp_charset_is_utf8(const char *user_cp) +{ + return user_cp && (strcasecmp(user_cp, "utf8") == 0 || + strcasecmp(user_cp, "utf-8") == 0); +} + // Split the string on ':' into components. // out_arr is at least max entries long. // Return number of out_arr entries filled. @@ -207,9 +213,7 @@ bstr mp_charset_guess_and_conv_to_utf8(bstr buf, const char *user_cp, int flags) bstr mp_iconv_to_utf8(bstr buf, const char *cp, int flags) { #ifdef CONFIG_ICONV - const char *tocp = "UTF-8"; - - if (!cp || !cp[0] || strcasecmp(cp, tocp) == 0) + if (!cp || !cp[0] || mp_charset_is_utf8(cp)) return buf; if (strcasecmp(cp, "ASCII") == 0) @@ -219,7 +223,7 @@ bstr mp_iconv_to_utf8(bstr buf, const char *cp, int flags) return bstr_sanitize_utf8_latin1(NULL, buf); iconv_t icdsc; - if ((icdsc = iconv_open(tocp, cp)) == (iconv_t) (-1)) { + if ((icdsc = iconv_open("UTF-8", cp)) == (iconv_t) (-1)) { if (flags & MP_ICONV_VERBOSE) mp_msg(MSGT_SUBREADER, MSGL_ERR, "Error opening iconv with codepage '%s'\n", cp); diff --git a/mpvcore/charset_conv.h b/mpvcore/charset_conv.h index 171793ffab..0b2874f0ec 100644 --- a/mpvcore/charset_conv.h +++ b/mpvcore/charset_conv.h @@ -10,6 +10,7 @@ enum { MP_STRICT_UTF8 = 4, // don't fall back to UTF-8-BROKEN when guessing }; +bool mp_charset_is_utf8(const char *user_cp); bool mp_charset_requires_guess(const char *user_cp); const char *mp_charset_guess(bstr buf, const char *user_cp, int flags); bstr mp_charset_guess_and_conv_to_utf8(bstr buf, const char *user_cp, int flags); diff --git a/sub/dec_sub.c b/sub/dec_sub.c index bc492c6381..4bc39e51c8 100644 --- a/sub/dec_sub.c +++ b/sub/dec_sub.c @@ -406,7 +406,7 @@ bool sub_read_all_packets(struct dec_sub *sub, struct sh_sub *sh) if (opts->sub_cp && !sh->is_utf8) sub->charset = guess_sub_cp(subs, opts->sub_cp); - if (sub->charset && sub->charset[0]) + if (sub->charset && sub->charset[0] && !mp_charset_is_utf8(sub->charset)) mp_msg(MSGT_OSD, MSGL_INFO, "Using subtitle charset: %s\n", sub->charset); double sub_speed = 1.0; -- cgit v1.2.3