[FFmpeg-trac] #4399(avfilter:new): Fontconfig 2.11.91 breaks proper font selection in ffmpeg

FFmpeg trac at avcodec.org
Fri Mar 27 22:39:23 CET 2015


#4399: Fontconfig 2.11.91 breaks proper font selection in ffmpeg
----------------------------------+--------------------------------------
             Reporter:  volman    |                     Type:  defect
               Status:  new       |                 Priority:  normal
            Component:  avfilter  |                  Version:  git-master
             Keywords:            |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+--------------------------------------
 Summary of the bug:

 After upgrading from earlier version (built on Nov 25, 2014), ffmpeg
 stopped finding fonts for drawtext filter.

 How to reproduce:
 {{{
 % ffmpeg -i Test.mov -vf drawtext="fontfile=Myriad\
 Pro:fontsize=45:text=test" -f mp4  -y -v verbose NUL
 ffmpeg version N-71102-g1f5d1ee Copyright (c) 2000-2015 the FFmpeg
 developers
   built with gcc 4.9.2 (GCC)
   configuration: --enable-gpl --enable-version3 --disable-w32threads
 --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
 --enable-gnutls --enable-iconv --enable-libass --enable-libbluray
 --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme
 --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-libopus --enable-librtmp --enable-libschroedinger --enable-
 libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-
 libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
 libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-
 libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma
 --enable-decklink --enable-zlib
   libavutil      54. 20.101 / 54. 20.101
   libavcodec     56. 30.100 / 56. 30.100
   libavformat    56. 26.101 / 56. 26.101
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 13.101 /  5. 13.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Guessed Channel Layout for  Input Stream #0.1 : stereo
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Test.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 537199360
     compatible_brands: qt
     creation_time   : 2012-12-03 14:13:35
   Duration: 01:26:29.48, start: 0.000000, bitrate: 167502 kb/s
     Stream #0:0(eng): Video: prores, 1 reference frame (apch /
 0x68637061), yuv422p10le(bt709), 1920x1080, 165935 kb/s, SAR 1:1 DAR 16:9,
 23.98 fps, 23.98 tbr, 23976 tbn, 23976 tbc (default)
     Metadata:
       creation_time   : 2012-12-03 14:13:35
       handler_name    : Apple Alias Data Handler
       encoder         : Apple ProRes 422 (HQ)
       timecode        : 00:59:59:00
     Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, 2
 channels, s16, 1536 kb/s (default)
     Metadata:
       creation_time   : 2012-12-03 14:13:35
       handler_name    : Apple Alias Data Handler
     Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
     Metadata:
       creation_time   : 2012-12-03 14:51:59
       handler_name    : Apple Alias Data Handler
       timecode        : 00:59:59:00
 [Parsed_drawtext_0 @ 0000000000369980] Could not load font "Myriad Pro":
 cannot open resource
 [Parsed_drawtext_0 @ 0000000000369980] impossible to find font
 informationError initializing filter 'drawtext' with args 'fontfile=Myriad
 Pro:fontsize=45:text=test'
 Error opening filters!

 }}}

 Same command and same system setup works for ffmpeg buit before Dec 28,
 2014. The font is found and used.

 Zeranoe always uses newest libraries and since FFmpeg version 2014-12-28
 git-750b10f they have been compiling with Fontconfig 2.11.91 (before that
 it was 2.11.1).

 I spent only so much time to pinpoint the problem, so I'm not sure, but I
 suppose the cause might be the change of type of FC_SIZE property in
 Fontconfig (from double to range).

 Please refer to following sources:

 https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_drawtext.c

 {{{
 #!cpp
  if (
    FcPatternGetInteger(best, FC_INDEX, 0, &index ) != FcResultMatch ||
    FcPatternGetDouble (best, FC_SIZE, 0, &size ) != FcResultMatch) {
    av_log(ctx, AV_LOG_ERROR, "impossible to find font information");
    return AVERROR(EINVAL);
  }
 }}}

 In Fontconfig, FC_SIZE is now a range:

 http://cgit.freedesktop.org/fontconfig/diff/src/fcobjs.h?id=3cd573fc1fb67db75cd356cad3e901d24af1ce8a

 Hope that helps.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4399>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list