You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
avformat/mov: add support for AV1 streams
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
@@ -188,6 +188,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
|
|||||||
|
|
||||||
{ AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */
|
{ AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */
|
||||||
{ AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */
|
{ AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */
|
||||||
|
{ AV_CODEC_ID_AV1, MKTAG('a', 'v', '0', '1') }, /* AV1 */
|
||||||
|
|
||||||
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', ' ') },
|
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', ' ') },
|
||||||
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', '1') }, /* Apple MPEG-1 Camcorder */
|
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', '1') }, /* Apple MPEG-1 Camcorder */
|
||||||
|
@@ -5185,6 +5185,36 @@ static int mov_read_tmcd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int mov_read_av1c(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||||
|
{
|
||||||
|
AVStream *st;
|
||||||
|
int ret, version;
|
||||||
|
|
||||||
|
if (c->fc->nb_streams < 1)
|
||||||
|
return 0;
|
||||||
|
st = c->fc->streams[c->fc->nb_streams - 1];
|
||||||
|
|
||||||
|
if (atom.size < 5) {
|
||||||
|
av_log(c->fc, AV_LOG_ERROR, "Empty AV1 Codec Configuration Box\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
version = avio_r8(pb);
|
||||||
|
if (version != 0) {
|
||||||
|
av_log(c->fc, AV_LOG_WARNING, "Unknown AV1 Codec Configuration Box version %d\n", version);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
avio_skip(pb, 3); /* flags */
|
||||||
|
|
||||||
|
avio_skip(pb, 1); /* reserved, initial_presentation_delay_present, initial_presentation_delay_minus_one */
|
||||||
|
|
||||||
|
ret = ff_get_extradata(c->fc, st->codecpar, pb, atom.size - 5);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int mov_read_vpcc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
static int mov_read_vpcc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||||
{
|
{
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
@@ -6622,6 +6652,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = {
|
|||||||
{ MKTAG('A','A','L','P'), mov_read_avid },
|
{ MKTAG('A','A','L','P'), mov_read_avid },
|
||||||
{ MKTAG('A','R','E','S'), mov_read_ares },
|
{ MKTAG('A','R','E','S'), mov_read_ares },
|
||||||
{ MKTAG('a','v','s','s'), mov_read_avss },
|
{ MKTAG('a','v','s','s'), mov_read_avss },
|
||||||
|
{ MKTAG('a','v','1','C'), mov_read_av1c },
|
||||||
{ MKTAG('c','h','p','l'), mov_read_chpl },
|
{ MKTAG('c','h','p','l'), mov_read_chpl },
|
||||||
{ MKTAG('c','o','6','4'), mov_read_stco },
|
{ MKTAG('c','o','6','4'), mov_read_stco },
|
||||||
{ MKTAG('c','o','l','r'), mov_read_colr },
|
{ MKTAG('c','o','l','r'), mov_read_colr },
|
||||||
|
Reference in New Issue
Block a user