[FFmpeg-devel] [PATCH] lavf/id3v2enc: fix cover art display on some software

Paul B Mahol onemda at gmail.com
Wed May 29 20:13:51 CEST 2013


On 5/29/13, Matthieu Bouron <matthieu.bouron at gmail.com> wrote:
> Adding an arbitrary amount of padding bytes at the end of the
> ID3 metadata fixes cover art display for some software (iTunes,
> Traktor, Serato, Torq).
>
> For reference (ID3 metadata):
>
> [ Apic frames ]                      -> cover doesn't show up
> [ Apic frames, Padding ]             -> ok
> [ Apic frames, ID3 frames ]          -> ok
> [ ID3 frames, Apic frames ]          -> cover doesn't show up
> [ ID3 frames, Apic frames, Padding ] -> ok
> ---
>  libavformat/id3v2enc.c  | 14 +++++++++++++-
>  tests/ref/lavf-fate/mp3 |  4 ++--
>  2 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/libavformat/id3v2enc.c b/libavformat/id3v2enc.c
> index 60ddbaa..d43d48f 100644
> --- a/libavformat/id3v2enc.c
> +++ b/libavformat/id3v2enc.c
> @@ -28,6 +28,8 @@
>  #include "avio.h"
>  #include "id3v2.h"
>
> +#define PADDING_BYTES 10
> +
>  static void id3v2_put_size(AVIOContext *pb, int size)
>  {
>      avio_w8(pb, size >> 21 & 0x7f);
> @@ -319,7 +321,17 @@ int ff_id3v2_write_apic(AVFormatContext *s,
> ID3v2EncContext *id3, AVPacket *pkt)
>
>  void ff_id3v2_finish(ID3v2EncContext *id3, AVIOContext *pb)
>  {
> -    int64_t cur_pos = avio_tell(pb);
> +    int i;
> +    int64_t cur_pos;
> +
> +    /* adding an arbitrary amount of padding bytes at the end of the
> +     * ID3 metadata fixes cover art display for some software (iTunes,
> +     * Traktor, Serato, Torq) */
> +    for (i = 0; i < PADDING_BYTES; i++)
> +        avio_w8(pb, 0);

ffio_fill()

[...]


More information about the ffmpeg-devel mailing list