diff --git a/libavcodec/nvdec.c b/libavcodec/nvdec.c index d13b790632..553c9bdf18 100644 --- a/libavcodec/nvdec.c +++ b/libavcodec/nvdec.c @@ -680,7 +680,7 @@ int ff_nvdec_simple_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, ctx->slice_offsets = tmp; if (!ctx->bitstream) - ctx->bitstream = (uint8_t*)buffer; + ctx->bitstream = buffer; ctx->slice_offsets[ctx->nb_slices] = buffer - ctx->bitstream; ctx->bitstream_len += size; diff --git a/libavcodec/nvdec.h b/libavcodec/nvdec.h index 353e95bf42..555300d27d 100644 --- a/libavcodec/nvdec.h +++ b/libavcodec/nvdec.h @@ -56,7 +56,7 @@ typedef struct NVDECContext { struct NVDECDecoder *decoder; ///< RefStruct reference - uint8_t *bitstream; + const uint8_t *bitstream; int bitstream_len; unsigned int bitstream_allocated; uint8_t *bitstream_internal; diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c index 74b0442177..35f22ebf80 100644 --- a/libavcodec/nvdec_av1.c +++ b/libavcodec/nvdec_av1.c @@ -303,7 +303,7 @@ static int nvdec_av1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, /* Shortcut if all tiles are in the same buffer */ if (ctx->nb_slices == s->tg_end - s->tg_start + 1) { - ctx->bitstream = (uint8_t*)buffer; + ctx->bitstream = buffer; ctx->bitstream_len = size; for (int i = 0; i < ctx->nb_slices; ++i) { @@ -321,7 +321,7 @@ static int nvdec_av1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, } ctx->bitstream = ctx->bitstream_internal = tmp; - memcpy(ctx->bitstream + ctx->bitstream_len, buffer, size); + memcpy(ctx->bitstream_internal + ctx->bitstream_len, buffer, size); for (uint32_t tile_num = s->tg_start; tile_num <= s->tg_end; ++tile_num) { ctx->slice_offsets[tile_num*2 ] = ctx->bitstream_len + s->tile_group_info[tile_num].tile_offset; diff --git a/libavcodec/nvdec_h264.c b/libavcodec/nvdec_h264.c index 8c72d5f4f7..ea6c1081eb 100644 --- a/libavcodec/nvdec_h264.c +++ b/libavcodec/nvdec_h264.c @@ -150,8 +150,8 @@ static int nvdec_h264_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, return AVERROR(ENOMEM); ctx->slice_offsets = tmp; - AV_WB24(ctx->bitstream + ctx->bitstream_len, 1); - memcpy(ctx->bitstream + ctx->bitstream_len + 3, buffer, size); + AV_WB24(ctx->bitstream_internal + ctx->bitstream_len, 1); + memcpy(ctx->bitstream_internal + ctx->bitstream_len + 3, buffer, size); ctx->slice_offsets[ctx->nb_slices] = ctx->bitstream_len ; ctx->bitstream_len += size + 3; ctx->nb_slices++; diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c index 25319a1328..ff118af04b 100644 --- a/libavcodec/nvdec_hevc.c +++ b/libavcodec/nvdec_hevc.c @@ -286,8 +286,8 @@ static int nvdec_hevc_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, return AVERROR(ENOMEM); ctx->slice_offsets = tmp; - AV_WB24(ctx->bitstream + ctx->bitstream_len, 1); - memcpy(ctx->bitstream + ctx->bitstream_len + 3, buffer, size); + AV_WB24(ctx->bitstream_internal + ctx->bitstream_len, 1); + memcpy(ctx->bitstream_internal + ctx->bitstream_len + 3, buffer, size); ctx->slice_offsets[ctx->nb_slices] = ctx->bitstream_len ; ctx->bitstream_len += size + 3; ctx->nb_slices++;