Justin Ruggles <[email protected]> writes:
> Also fix some undefined unsigned/signed conversions.
> ---
> libavcodec/wmaprodec.c | 11 ++++++-----
> 1 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c
> index ce83bb6..6275500 100644
> --- a/libavcodec/wmaprodec.c
> +++ b/libavcodec/wmaprodec.c
> @@ -86,6 +86,7 @@
> * subframe in order to reconstruct the output samples.
> */
>
> +#include "libavutil/intreadwrite.h"
> #include "avcodec.h"
> #include "internal.h"
> #include "get_bits.h"
> @@ -802,7 +803,7 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c)
You could make fval_tab[] unsigned too to keep things consistent.
> 4 vector coded large values) */
> while ((s->transmit_num_vec_coeffs || !rl_mode) &&
> (cur_coeff + 3 < ci->num_vec_coeffs)) {
> - int vals[4];
> + uint32_t vals[4];
> int i;
> unsigned int idx;
>
> @@ -812,15 +813,15 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c)
> for (i = 0; i < 4; i += 2) {
> idx = get_vlc2(&s->gb, vec2_vlc.table, VLCBITS,
> VEC2MAXDEPTH);
> if (idx == HUFF_VEC2_SIZE - 1) {
> - int v0, v1;
> + uint32_t v0, v1;
> v0 = get_vlc2(&s->gb, vec1_vlc.table, VLCBITS,
> VEC1MAXDEPTH);
> if (v0 == HUFF_VEC1_SIZE - 1)
> v0 += ff_wma_get_large_val(&s->gb);
> v1 = get_vlc2(&s->gb, vec1_vlc.table, VLCBITS,
> VEC1MAXDEPTH);
> if (v1 == HUFF_VEC1_SIZE - 1)
> v1 += ff_wma_get_large_val(&s->gb);
> - ((float*)vals)[i ] = v0;
> - ((float*)vals)[i+1] = v1;
> + vals[i ] = ((av_alias32){ .f32 = v0 }).u32;
> + vals[i+1] = ((av_alias32){ .f32 = v1 }).u32;
> } else {
> vals[i] = fval_tab[symbol_to_vec2[idx] >> 4 ];
> vals[i+1] = fval_tab[symbol_to_vec2[idx] & 0xF];
> @@ -837,7 +838,7 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c)
> for (i = 0; i < 4; i++) {
> if (vals[i]) {
> int sign = get_bits1(&s->gb) - 1;
'sign' needs to be unsigned.
> - *(uint32_t*)&ci->coeffs[cur_coeff] = vals[i] ^ sign<<31;
> + ci->coeffs[cur_coeff] = ((av_alias32){ .u32 = vals[i] ^
> sign<<31 }).f32;
Using AV_WN32A() here is probably less cluttered.
--
Måns Rullgård
[email protected]
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel