summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Liu <lq@chinaffmpeg.org>2023-04-13 17:08:56 +0800
committerSteven Liu <liuqi05@kuaishou.com>2023-07-18 09:46:37 +0800
commit2cd09fec9f8d3b16d03e762dec6001cc0b792659 (patch)
tree55232bc4c4b022a970a12b6a040390c1517b98a4
parent0693a2a86ea3c5bcce310c328e9ac03bb8aad80a (diff)
avformat/flvdec: support demux vp9 in enhanced flv
Tested-by: Tristan Matthews <tmatth@videolan.org> Tested-by: Neal Gompa <ngompa13@gmail.com> Reviewed-by: Tristan Matthews <tmatth@videolan.org> Reviewed-by: Neal Gompa <ngompa13@gmail.com> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
-rw-r--r--libavformat/flvdec.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index a0362ff11c..a6a94a4021 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -320,6 +320,8 @@ static int flv_same_video_codec(AVFormatContext *s, AVCodecParameters *vpar, int
return vpar->codec_id == AV_CODEC_ID_HEVC;
case MKBETAG('a', 'v', '0', '1'):
return vpar->codec_id == AV_CODEC_ID_AV1;
+ case MKBETAG('v', 'p', '0', '9'):
+ return vpar->codec_id == AV_CODEC_ID_VP9;
default:
break;
}
@@ -365,6 +367,10 @@ static int flv_set_video_codec(AVFormatContext *s, AVStream *vstream,
par->codec_id = AV_CODEC_ID_AV1;
vstreami->need_parsing = AVSTREAM_PARSE_HEADERS;
return 4;
+ case MKBETAG('v', 'p', '0', '9'):
+ par->codec_id = AV_CODEC_ID_VP9;
+ vstreami->need_parsing = AVSTREAM_PARSE_HEADERS;
+ return 4;
default:
break;
}
@@ -1285,7 +1291,8 @@ retry_duration:
st->codecpar->codec_id == AV_CODEC_ID_H264 ||
st->codecpar->codec_id == AV_CODEC_ID_MPEG4 ||
st->codecpar->codec_id == AV_CODEC_ID_HEVC ||
- st->codecpar->codec_id == AV_CODEC_ID_AV1) {
+ st->codecpar->codec_id == AV_CODEC_ID_AV1 ||
+ st->codecpar->codec_id == AV_CODEC_ID_VP9) {
int type = 0;
if (flv->exheader && stream_type == FLV_STREAM_TYPE_VIDEO) {
type = flags & 0x0F;
@@ -1317,7 +1324,7 @@ retry_duration:
}
if (type == 0 && (!st->codecpar->extradata || st->codecpar->codec_id == AV_CODEC_ID_AAC ||
st->codecpar->codec_id == AV_CODEC_ID_H264 || st->codecpar->codec_id == AV_CODEC_ID_HEVC ||
- st->codecpar->codec_id == AV_CODEC_ID_AV1)) {
+ st->codecpar->codec_id == AV_CODEC_ID_AV1 || st->codecpar->codec_id == AV_CODEC_ID_VP9)) {
AVDictionaryEntry *t;
if (st->codecpar->extradata) {