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

Clément Bœsch ubitux at gmail.com
Wed May 29 20:16:00 CEST 2013


On Wed, May 29, 2013 at 08:05:42PM +0200, Matthieu Bouron 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);
> +    id3->len += PADDING_BYTES;
> +

Why not simply:

    static const uint8_t pad[10];
    avio_write(pb, pad, sizeof(pad));
    id3->len += sizeof(pad);

?

[...]

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130529/303efce4/attachment.asc>


More information about the ffmpeg-devel mailing list