On 7/23/2016 8:25 AM, Michael Niedermayer wrote: > On Fri, Jul 22, 2016 at 05:19:14PM -0700, kod...@gmail.com wrote: >> From: Chris Moeller <kod...@gmail.com> >> >> --- >> libavformat/mp3dec.c | 64 >> +++++++++++++++++++++++++++++++++++++++++++++++++++- >> 1 file changed, 63 insertions(+), 1 deletion(-) >> >> diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c >> index 56c7f8c..3055e2c 100644 >> --- a/libavformat/mp3dec.c >> +++ b/libavformat/mp3dec.c >> @@ -295,6 +295,53 @@ static void mp3_parse_vbri_tag(AVFormatContext *s, >> AVStream *st, int64_t base) >> } >> } >> >> +static void mp3_parse_itunes_tag(AVFormatContext *s, AVStream *st, >> MPADecodeHeader *c, int64_t base, int vbrtag_size, unsigned int *size, >> uint64_t *duration) >> +{ >> + uint32_t v; >> + AVDictionaryEntry *de; >> + MP3DecContext *mp3 = s->priv_data; >> + size_t length; >> + uint32_t zero, start_pad, end_pad; >> + uint64_t last_eight_frames_offset; >> + int i; >> + >> + if (!s->metadata || !(de = av_dict_get(s->metadata, "iTunSMPB", NULL, >> 0))) >> + return; >> + >> + length = strlen(de->value); >> + >> + /* Minimum length is one digit per field plus the whitespace, maximum >> length should depend on field type >> + * There are four fields we need in the first six, the rest are >> currently zero padding */ >> + if (length < (12 + 11) || length > (10 * 8 + 2 * 16 + 11)) >> + return; >> + > >> + if (sscanf(de->value, "%x %x %x %llx %x %llx", &zero, &start_pad, >> &end_pad, duration, &zero, &last_eight_frames_offset) < 6) { > > %llx mismatches the type
Also please use the SCN* macros, which work like the PRI* macros from printf. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel