On 31/10/15 17:10, wm4 wrote: > On Sat, 31 Oct 2015 17:08:07 +0100 > Luca Barbato <[email protected]> wrote: > >> On 31/10/15 14:36, wm4 wrote: >>> I've got some m4a samples that had jpeg cover art marked as png. Since >>> these files were supposedly written by iTunes, and other software can >>> read it (e.g. clementine does), this should be worked around. >>> >>> Since png has a very simple to detect header, while it's apparently a >>> real pain to detect jpeg in the general case, try to detect png and >>> assume jpeg otherwise. Not bothering with bmp, as I have no test case. >>> --- >>> libavformat/mov.c | 8 ++++++++ >>> 1 file changed, 8 insertions(+) >>> >>> diff --git a/libavformat/mov.c b/libavformat/mov.c >>> index 95dc1ee..9532213 100644 >>> --- a/libavformat/mov.c >>> +++ b/libavformat/mov.c >>> @@ -200,6 +200,14 @@ static int mov_read_covr(MOVContext *c, AVIOContext >>> *pb, int type, int len) >>> if (ret < 0) >>> return ret; >>> >>> + if (pkt.size >= 8 && id != AV_CODEC_ID_BMP) { >>> + if (AV_RB64(pkt.data) == 0x89504e470d0a1a0a) { >>> + id = AV_CODEC_ID_PNG; >>> + } else { >>> + id = AV_CODEC_ID_MJPEG; >>> + } >>> + } >>> + >>> st->disposition |= AV_DISPOSITION_ATTACHED_PIC; >>> >>> st->attached_pic = pkt; >>> >> >> +0: I'm not against it, an INT64_C() is needed for the >> 0x89504e470d0a1a0a constant. > > True. I just copy and pasted this from ffmpeg's id3v2.c (similar case - > cover art with wrong codec). Would a ULL suffix be good enough?
Sadly not, UINT64_C() puts the right UL or ULL depending on the architecture. lu _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
