Commit 4a355654 authored by Anton Khirnov's avatar Anton Khirnov Committed by Michael Niedermayer

mp3enc: write ISO8859-1 instead of UTF-16 when possible

Signed-off-by: 's avatarRonald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 5a6de4e7)
parent 9979dcd4
...@@ -77,6 +77,12 @@ static void id3v2_put_size(AVFormatContext *s, int size) ...@@ -77,6 +77,12 @@ static void id3v2_put_size(AVFormatContext *s, int size)
put_byte(s->pb, size & 0x7f); put_byte(s->pb, size & 0x7f);
} }
static int string_is_ascii(const uint8_t *str)
{
while (*str && *str < 128) str++;
return !*str;
}
/** /**
* Write a text frame with one (normal frames) or two (TXXX frames) strings * Write a text frame with one (normal frames) or two (TXXX frames) strings
* according to encoding (only UTF-8 or UTF-16+BOM supported). * according to encoding (only UTF-8 or UTF-16+BOM supported).
...@@ -92,6 +98,12 @@ static int id3v2_put_ttag(AVFormatContext *s, const char *str1, const char *str2 ...@@ -92,6 +98,12 @@ static int id3v2_put_ttag(AVFormatContext *s, const char *str1, const char *str2
if (url_open_dyn_buf(&dyn_buf) < 0) if (url_open_dyn_buf(&dyn_buf) < 0)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
/* check if the strings are ASCII-only and use UTF16 only if
* they're not */
if (enc == ID3v2_ENCODING_UTF16BOM && string_is_ascii(str1) &&
(!str2 || string_is_ascii(str2)))
enc = ID3v2_ENCODING_ISO8859;
put_byte(dyn_buf, enc); put_byte(dyn_buf, enc);
if (enc == ID3v2_ENCODING_UTF16BOM) { if (enc == ID3v2_ENCODING_UTF16BOM) {
put_le16(dyn_buf, 0xFEFF); /* BOM */ put_le16(dyn_buf, 0xFEFF); /* BOM */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment