aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2020-10-01 20:20:48 +0200
committerTimo Rothenpieler <timo@rothenpieler.org>2020-10-01 22:30:36 +0200
commit8f5e16b5f129f6d62b5135bd095c41e64998d2ed (patch)
tree4cad865adadb355b9b4bba7932952029273b493f
parent891a7c3765579c884979f4a627cd74c5154ffdf3 (diff)
downloadffmpeg-8f5e16b5f129f6d62b5135bd095c41e64998d2ed.tar.gz
avcodec/cuviddec: backport extradata fixes
-rw-r--r--libavcodec/cuvid.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/cuvid.c b/libavcodec/cuvid.c
index fba252995d..c93d85adcc 100644
--- a/libavcodec/cuvid.c
+++ b/libavcodec/cuvid.c
@@ -802,7 +802,7 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
CUcontext dummy;
const AVBitStreamFilter *bsf;
uint8_t *extradata;
- uint32_t extradata_size;
+ int extradata_size;
int ret = 0;
enum AVPixelFormat pix_fmts[3] = { AV_PIX_FMT_CUDA,
@@ -972,20 +972,21 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
extradata = ctx->bsf->par_out->extradata;
extradata_size = ctx->bsf->par_out->extradata_size;
- } else if (avctx->extradata_size > 0) {
+ } else {
extradata = avctx->extradata;
extradata_size = avctx->extradata_size;
}
ctx->cuparse_ext = av_mallocz(sizeof(*ctx->cuparse_ext)
- + FFMAX(extradata_size - sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0));
+ + FFMAX(extradata_size - (int)sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0));
if (!ctx->cuparse_ext) {
ret = AVERROR(ENOMEM);
goto error;
}
- ctx->cuparse_ext->format.seqhdr_data_length = avctx->extradata_size;
- memcpy(ctx->cuparse_ext->raw_seqhdr_data, extradata, extradata_size);
+ if (extradata_size > 0)
+ memcpy(ctx->cuparse_ext->raw_seqhdr_data, extradata, extradata_size);
+ ctx->cuparse_ext->format.seqhdr_data_length = extradata_size;
ctx->cuparseinfo.pExtVideoInfo = ctx->cuparse_ext;