Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2019-02-10 02:33:04 +0300
committerMarton Balint <cus@passwd.hu>2019-02-14 00:01:39 +0300
commitb35843e3913df57da3a6bb0ce80a4f2b75d374b4 (patch)
tree094eb3cee52ba426f5bf10f0058b0bc4dcc08998 /libavformat/mpegts.c
parentdd6dd49f1d5e5092d7f2da8b2af0fa89b2be99c1 (diff)
avformat/mpegts: also convert strings without a specified encoding to UTF-8
The default codepage (ISO6937) should be used in this case. Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavformat/mpegts.c')
-rw-r--r--libavformat/mpegts.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 2594b1eeb1..e7bbf3e488 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -678,7 +678,7 @@ static char *getstr8(const uint8_t **pp, const uint8_t *p_end)
if (len > p_end - p)
return NULL;
#if CONFIG_ICONV
- if (len && *p < 0x20) {
+ if (len) {
const char *encodings[] = {
"ISO6937", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7",
"ISO-8859-8", "ISO-8859-9", "ISO-8859-10", "ISO-8859-11",
@@ -688,16 +688,20 @@ static char *getstr8(const uint8_t **pp, const uint8_t *p_end)
};
iconv_t cd;
char *in, *out;
- size_t inlen = len - 1, outlen = inlen * 6 + 1;
+ size_t inlen = len, outlen = inlen * 6 + 1;
if (len >= 3 && p[0] == 0x10 && !p[1] && p[2] && p[2] <= 0xf && p[2] != 0xc) {
char iso8859[12];
snprintf(iso8859, sizeof(iso8859), "ISO-8859-%d", p[2]);
- inlen -= 2;
+ inlen -= 3;
in = (char *)p + 3;
cd = iconv_open("UTF-8", iso8859);
- } else {
+ } else if (p[0] < 0x20) {
+ inlen -= 1;
in = (char *)p + 1;
cd = iconv_open("UTF-8", encodings[*p]);
+ } else {
+ in = (char *)p;
+ cd = iconv_open("UTF-8", encodings[0]);
}
if (cd == (iconv_t)-1)
goto no_iconv;