avformat/id3v2enc: use UTF-16 in id3v2.3 APIC frame only if non-ASCII
authorMark Harris <mark.hsj@gmail.com>
Sun, 11 Aug 2013 00:03:11 +0000 (17:03 -0700)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 11 Aug 2013 11:06:40 +0000 (13:06 +0200)
commit4ccafaca1cf60227527c7df12668fb3c8eecb23f
tree2362ff531d4a31ab3d2556eed62e829b72aa1aac
parent15c92f8c486a91ca2bd8607a088bee2219c34452
avformat/id3v2enc: use UTF-16 in id3v2.3 APIC frame only if non-ASCII

This makes the encoding of picture descriptions consistent with the
encoding of other text id3 tags and works better with iTunes, which
does not display pictures with some UTF-16 picture descriptions
(including a UTF-16 empty string, i.e. BOM + terminator).  It also
saves a few bytes.

Example:
 ffmpeg -f lavfi -i sine=b=4 -f lavfi -i smptebars -map 0:a -map 1:v \
   -codec:a libmp3lame -codec:v mjpeg -id3v2_version 3 \
   -metadata:s:v comment="Cover (front)" -t 3 -y out.mp3

This example does not set a picture description (-metadata:s:v title=)
so an empty string is written in the id3v2.3 APIC frame.  Without this
patch, UTF-16 is used and the cover art does not display in iTunes.
With the patch the cover art is displayed.  (Note that iTunes does not
display or have a way to set picture descriptions, only the picture
itself, but nevertheless has trouble skipping some UTF-16 descriptions.)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/id3v2enc.c