mirror of https://git.ffmpeg.org/ffmpeg.git
mp3enc: write ISO8859-1 instead of UTF-16 when possible
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This commit is contained in:
parent
74571e333c
commit
5a6de4e7e8
|
@ -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
|
||||||
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 */
|
||||||
|
|
Loading…
Reference in New Issue