Hi! The Opus struct RawBitsContext is used in both the decoder and the encoder. The fact that *position is const avoids warnings in the decoder where it points into the bitstream. The encoder writes into the same pointer, attached cast silences the warning on targets where AV_WB32() does not internally cast the qualifier away.
It is also possible to use a union if anybody prefers this: diff --git a/libavcodec/opus_rc.h b/libavcodec/opus_rc.h index 627f832..baad4ce 100644 --- a/libavcodec/opus_rc.h +++ b/libavcodec/opus_rc.h @@ -37,9 +37,19 @@ typedef struct RawBitsContext { uint32_t cacheval; } RawBitsContext; +typedef struct RawBitsEncContext { + uint8_t *position; + uint32_t bytes; + uint32_t cachelen; + uint32_t cacheval; +} RawBitsEncContext; + typedef struct OpusRangeCoder { GetBitContext gb; - RawBitsContext rb; + union { + RawBitsContext rb; + RawBitsEncContext rbe; + }; uint32_t range; uint32_t value; uint32_t total_bits; and use rbe in ff_opus_rc_put_raw(). Please comment, Carl Eugen
From 2fe5044a4532f061ef4090fd46f1ec1a3af067b0 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos <ceffm...@gmail.com> Date: Mon, 17 Dec 2018 02:36:26 +0100 Subject: [PATCH] lavc/opus_rc: Cast a const pointer to uint8_t *. Silences a warning with clang on arm: libavcodec/opus_rc.c:170:17: warning: passing 'const uint8_t *' (aka 'const unsigned char *') to parameter of type 'void *' discards qualifiers --- libavcodec/opus_rc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/opus_rc.c b/libavcodec/opus_rc.c index 3972bb0..c432eb9 100644 --- a/libavcodec/opus_rc.c +++ b/libavcodec/opus_rc.c @@ -167,7 +167,7 @@ void ff_opus_rc_put_raw(OpusRangeCoder *rc, uint32_t val, uint32_t count) rc->rb.cachelen = (rc->rb.cachelen + to_write) % 32; if (!rc->rb.cachelen && count) { - AV_WB32(rc->rb.position, rc->rb.cacheval); + AV_WB32((uint8_t *)rc->rb.position, rc->rb.cacheval); rc->rb.bytes += 4; rc->rb.position -= 4; rc->rb.cachelen = count - to_write; -- 1.7.10.4
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel