Quoting Paul B Mahol (2020-08-31 14:20:11) > Support parsing 'cue ' and 'adtl' chunks. > > Signed-off-by: Paul B Mahol <one...@gmail.com> > --- > libavformat/wavdec.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 50 insertions(+)
Looks ok beyond some nits. > > diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c > index 5b3c481421..545f04c742 100644 > --- a/libavformat/wavdec.c > +++ b/libavformat/wavdec.c > @@ -500,6 +500,7 @@ static int wav_read_header(AVFormatContext *s) > wav->smv_cur_pt = 0; > goto break_loop; > case MKTAG('L', 'I', 'S', 'T'): > + case MKTAG('l', 'i', 's', 't'): > if (size < 4) { > av_log(s, AV_LOG_ERROR, "too short LIST tag\n"); > return AVERROR_INVALIDDATA; > @@ -507,6 +508,37 @@ static int wav_read_header(AVFormatContext *s) > switch (avio_rl32(pb)) { > case MKTAG('I', 'N', 'F', 'O'): > ff_read_riff_info(s, size - 4); > + break; > + case MKTAG('a', 'd', 't', 'l'): > + if (s->nb_chapters > 0) { > + while (avio_tell(pb) < next_tag_ofs) { > + AVChapter *chapter = NULL; > + char cue_label[512]; > + unsigned id, sub_size; > + > + if (avio_feof(pb)) > + break; nit: would look better in the loop condition > + if (avio_rl32(pb) != MKTAG('l', 'a', 'b', 'l')) > + break; > + > + sub_size = avio_rl32(pb); > + if (sub_size < 5) > + break; > + id = avio_rl32(pb); > + avio_get_str(pb, sub_size - 4, cue_label, > sizeof(cue_label)); > + avio_skip(pb, avio_tell(pb) & 1); > + > + for (int i = 0; i < s->nb_chapters; i++) { > + if (s->chapters[i]->id == id) { > + chapter = s->chapters[i]; > + break; > + } > + } > + if (chapter) > + av_dict_set(&chapter->metadata, "title", > cue_label, 0); nit: could be merged into the loop above -- Anton Khirnov _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".