[FFmpeg-trac] #10583(avformat:new): lavf fails to probe ass file with utf16le encoding
FFmpeg
trac at avcodec.org
Sat Sep 23 21:46:49 EEST 2023
#10583: lavf fails to probe ass file with utf16le encoding
----------------------------------+--------------------------------------
Reporter: llyyr | Type: defect
Status: new | Priority: normal
Component: avformat | Version: git-master
Keywords: ass | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+--------------------------------------
Summary of the bug:
ffplay/ffmpeg can't open ass subtitle with utf16le encoding
How to reproduce:
{{{
% ffplay [input] -vf subtitles=filename=utf16le.ass
ffplay version 6.0 Copyright (c) 2003-2023 the FFmpeg developers
built with gcc 13 (SUSE Linux)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64
--incdir=/usr/include/ffmpeg --extra-cflags='-O2 -Wall -U_FORTIFY_SOURCE
-D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables
-fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type
-flto=auto -ffat-lto-objects -g' --optflags='-O2 -Wall -U_FORTIFY_SOURCE
-D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables
-fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type
-flto=auto -ffat-lto-objects -g' --disable-htmlpages --enable-pic
--disable-stripping --enable-shared --disable-static --enable-gpl
--enable-version3 --disable-openssl --enable-gnutls --enable-ladspa
--enable-libshaderc --enable-vulkan --enable-libplacebo --enable-libaom
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcdio
--enable-libcodec2 --enable-libdav1d --enable-libdc1394 --enable-libdrm
--enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-
libgsm --enable-libjack --enable-libjxl --enable-librist --enable-
libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt
--enable-libopenh264-dlopen --enable-libopus --enable-libpulse --enable-
librav1e --enable-librubberband --enable-libsvtav1 --enable-libsoxr
--enable-libspeex --enable-libssh --enable-libsrt --enable-libtheora
--enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-
libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-
libzimg --enable-libzmq --enable-libzvbi --enable-lto --enable-lv2
--enable-libmfx --enable-vaapi --enable-vdpau --enable-version3 --enable-
libfdk-aac-dlopen --enable-nonfree --enable-libvo-amrwbenc --enable-
libx264 --enable-libx265 --enable-libxvid
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '(HDR HEVC 10-bit BT.2020
59.940fps) Camp by Sony.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isom
creation_time : 2016-02-03T08:01:30.000000Z
Duration: 00:02:07.15, start: 0.000000, bitrate: 75806 kb/s
Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668),
yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9],
75620 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
Metadata:
creation_time : 2016-02-03T07:59:49.000000Z
handler_name : Video Media Handler
vendor_id : [0][0][0][0]
encoder : HEVC Coding
Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 192 kb/s (default)
Metadata:
creation_time : 2016-02-03T07:59:49.000000Z
handler_name : Sound Media Handler
vendor_id : [0][0][0][0]
[Parsed_subtitles_0 @ 0x7f4fd5507000] libass API version: 0x1701000
[Parsed_subtitles_0 @ 0x7f4fd5507000] libass source: tarball: 0.17.1
[Parsed_subtitles_0 @ 0x7f4fd5507000] Shaper: FriBidi 1.0.13 (SIMPLE)
HarfBuzz-ng 8.1.1 (COMPLEX)
[Parsed_subtitles_0 @ 0x7f4fd5507000] Unable to open utf16le.ass0
}}}
This can be reproduced on the oldest version available on distros (4.4.4)
as well as git master.
I applied the following diff
{{{
diff --git a/libavformat/assdec.c b/libavformat/assdec.c
index bf7b8a73a2..90bce9ff9d 100644
--- a/libavformat/assdec.c
+++ b/libavformat/assdec.c
@@ -43,6 +43,9 @@ static int ass_probe(const AVProbeData *p)
ff_text_read(&tr, buf, sizeof(buf));
+ for (int i = 0; i < sizeof(buf); i++)
+ printf("Character at index %d: %d)\n", i, buf[i]);
+
if (!memcmp(buf, "[Script Info]", 13))
return AVPROBE_SCORE_MAX;
}}}
and got the following output
{{{
Character at index 0: (ASCII: -17)
Character at index 1: [ (ASCII: 91)
Character at index 2: S (ASCII: 83)
Character at index 3: c (ASCII: 99)
Character at index 4: r (ASCII: 114)
Character at index 5: i (ASCII: 105)
Character at index 6: p (ASCII: 112)
Character at index 7: t (ASCII: 116)
Character at index 8: (ASCII: 32)
Character at index 9: I (ASCII: 73)
Character at index 10: n (ASCII: 110)
Character at index 11: f (ASCII: 102)
Character at index 12: o (ASCII: 111)
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10583>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list