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>
This commit is contained in:
Steven Liu 2023-04-13 17:08:56 +08:00 committed by Steven Liu
parent 0693a2a86e
commit 2cd09fec9f
1 changed files with 9 additions and 2 deletions

View File

@ -320,6 +320,8 @@ static int flv_same_video_codec(AVFormatContext *s, AVCodecParameters *vpar, int
return vpar->codec_id == AV_CODEC_ID_HEVC; return vpar->codec_id == AV_CODEC_ID_HEVC;
case MKBETAG('a', 'v', '0', '1'): case MKBETAG('a', 'v', '0', '1'):
return vpar->codec_id == AV_CODEC_ID_AV1; return vpar->codec_id == AV_CODEC_ID_AV1;
case MKBETAG('v', 'p', '0', '9'):
return vpar->codec_id == AV_CODEC_ID_VP9;
default: default:
break; break;
} }
@ -365,6 +367,10 @@ static int flv_set_video_codec(AVFormatContext *s, AVStream *vstream,
par->codec_id = AV_CODEC_ID_AV1; par->codec_id = AV_CODEC_ID_AV1;
vstreami->need_parsing = AVSTREAM_PARSE_HEADERS; vstreami->need_parsing = AVSTREAM_PARSE_HEADERS;
return 4; return 4;
case MKBETAG('v', 'p', '0', '9'):
par->codec_id = AV_CODEC_ID_VP9;
vstreami->need_parsing = AVSTREAM_PARSE_HEADERS;
return 4;
default: default:
break; break;
} }
@ -1285,7 +1291,8 @@ retry_duration:
st->codecpar->codec_id == AV_CODEC_ID_H264 || st->codecpar->codec_id == AV_CODEC_ID_H264 ||
st->codecpar->codec_id == AV_CODEC_ID_MPEG4 || st->codecpar->codec_id == AV_CODEC_ID_MPEG4 ||
st->codecpar->codec_id == AV_CODEC_ID_HEVC || 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; int type = 0;
if (flv->exheader && stream_type == FLV_STREAM_TYPE_VIDEO) { if (flv->exheader && stream_type == FLV_STREAM_TYPE_VIDEO) {
type = flags & 0x0F; type = flags & 0x0F;
@ -1317,7 +1324,7 @@ retry_duration:
} }
if (type == 0 && (!st->codecpar->extradata || st->codecpar->codec_id == AV_CODEC_ID_AAC || 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_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; AVDictionaryEntry *t;
if (st->codecpar->extradata) { if (st->codecpar->extradata) {