diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2024-03-15 16:38:30 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2024-03-19 02:54:13 +0100 |
commit | 103965053bb73e6be8b648a442b258d13ca99f88 (patch) | |
tree | 41b78d22d91afdb29430b78e8ad26fbce9a567ed | |
parent | d296c8689d487e422aeacbb92292b78dac84ff17 (diff) | |
download | ffmpeg-103965053bb73e6be8b648a442b258d13ca99f88.tar.gz |
avformat/aeadec: Export title
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavformat/aeadec.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libavformat/aeadec.c b/libavformat/aeadec.c index 4cb2da6639..20170a89b3 100644 --- a/libavformat/aeadec.c +++ b/libavformat/aeadec.c @@ -23,6 +23,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "avio_internal.h" #include "demux.h" #include "pcm.h" @@ -59,12 +60,20 @@ static int aea_read_probe(const AVProbeData *p) static int aea_read_header(AVFormatContext *s) { AVStream *st = avformat_new_stream(s, NULL); - int channels; + char title[256 + 1]; + int channels, ret; if (!st) return AVERROR(ENOMEM); - /* Parse the amount of channels and skip to pos 2048(0x800) */ - avio_skip(s->pb, 264); + /* Read the title, parse the number of channels and skip to pos 2048(0x800) */ + avio_rl32(s->pb); // magic + ret = ffio_read_size(s->pb, title, sizeof(title) - 1); + if (ret < 0) + return ret; + title[sizeof(title) - 1] = '\0'; + if (title[0] != '\0') + av_dict_set(&st->metadata, "title", title, 0); + avio_rl32(s->pb); // Block count channels = avio_r8(s->pb); avio_skip(s->pb, 1783); |