mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-04 06:02:12 +00:00
avcodec/cuviddec: fix AV1 decoding error
cuvidParseVideoData only supports pure OBUs, it reports an unknown error with AV1CodecConfigurationRecord. Check whether extradata is AV1CodecConfigurationRecord and skip the first 4 bytes to fix the issue. The bug is revealed in ffmpeg cmd since45e3b6a68
andffd1316e
. Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
This commit is contained in:
parent
75638fe940
commit
ffc91940a4
@ -953,6 +953,16 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
|
||||
extradata_size = avctx->extradata_size;
|
||||
}
|
||||
|
||||
// Check first bit to determine whether it's AV1CodecConfigurationRecord.
|
||||
// Skip first 4 bytes of AV1CodecConfigurationRecord to keep configOBUs
|
||||
// only, otherwise cuvidParseVideoData report unknown error.
|
||||
if (avctx->codec->id == AV_CODEC_ID_AV1 &&
|
||||
extradata_size > 4 &&
|
||||
extradata[0] & 0x80) {
|
||||
extradata += 4;
|
||||
extradata_size -= 4;
|
||||
}
|
||||
|
||||
ctx->cuparse_ext = av_mallocz(sizeof(*ctx->cuparse_ext)
|
||||
+ FFMAX(extradata_size - (int)sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0));
|
||||
if (!ctx->cuparse_ext) {
|
||||
|
Loading…
Reference in New Issue
Block a user