[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