[FFmpeg-devel] [PATCH] avformat/wavdec: add support for chapters
Paul B Mahol
onemda at gmail.com
Tue Sep 1 15:23:41 EEST 2020
On 9/1/20, Anton Khirnov <anton at khirnov.net> wrote:
> Quoting Paul B Mahol (2020-08-31 14:20:11)
>> Support parsing 'cue ' and 'adtl' chunks.
>>
>> Signed-off-by: Paul B Mahol <onemda at 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
Done.
>
>> + 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
Done.
Also fixed size check to not ignore 4 read bytes, and applied.
Thanks.
>
> --
> Anton Khirnov
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list