diff options
author | Martin Storsjo <martin@martin.st> | 2013-11-01 11:25:43 +0200 |
---|---|---|
committer | Martin Storsjo <martin@martin.st> | 2013-11-01 11:28:59 +0200 |
commit | c8002b04ff601920c30bded02d8341d298425188 (patch) | |
tree | b707dcbdc8edaa23d8880962d3fcb9e3b3e529d1 | |
parent | b41a6f9e8171ae069b9f2b5ef19292dbee4cecc8 (diff) | |
download | fdk-aac-dabplus-c8002b04ff601920c30bded02d8341d298425188.tar.gz fdk-aac-dabplus-c8002b04ff601920c30bded02d8341d298425188.tar.bz2 fdk-aac-dabplus-c8002b04ff601920c30bded02d8341d298425188.zip |
Avoid casting arbitrary values to an enum
The enum only contains the constant values 0, 1 and 2. This produces
the warning "comparison of constant 6 with expression of type
'PS_RESOLUTION' is always false" in clang for the first check
in the getNoBands function (but apparently not for the second one
even though mode>=3 shouldn't ever happen for a valid PS_RESOLUTION
value either). This could allow the compiler to completely remove
the conditions that shouldn't be able to occur even though they
actually are used and are necessary.
By passing the value as UINT instead, it is clear to the compiler
that all the checks are necessary.
-rw-r--r-- | libSBRenc/src/ps_bitenc.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libSBRenc/src/ps_bitenc.cpp b/libSBRenc/src/ps_bitenc.cpp index b1fe12e..8a42a20 100644 --- a/libSBRenc/src/ps_bitenc.cpp +++ b/libSBRenc/src/ps_bitenc.cpp @@ -267,13 +267,13 @@ static const INT psBands[] = PS_BANDS_MID }; -static INT getNoBands(PS_RESOLUTION mode) +static INT getNoBands(UINT mode) { if(mode>=6) return 0; if(mode>=3) - mode = (PS_RESOLUTION)(mode-3); + mode = mode-3; return psBands[mode]; } @@ -524,7 +524,7 @@ static INT encodeIpdOpd(HANDLE_PS_OUT psOut, bitCnt += FDKsbrEnc_EncodeIpd( hBitBuf, psOut->ipd[env], ipdLast, - getNoBands((PS_RESOLUTION)psOut->iidMode), + getNoBands((UINT)psOut->iidMode), psOut->deltaIPD[env], &error); @@ -532,7 +532,7 @@ static INT encodeIpdOpd(HANDLE_PS_OUT psOut, bitCnt += FDKsbrEnc_EncodeOpd( hBitBuf, psOut->opd[env], opdLast, - getNoBands((PS_RESOLUTION)psOut->iidMode), + getNoBands((UINT)psOut->iidMode), psOut->deltaOPD[env], &error ); } @@ -661,7 +661,7 @@ INT FDKsbrEnc_WritePSBitstream(const HANDLE_PS_OUT psOut, bitCnt += FDKsbrEnc_EncodeIid( hBitBuf, psOut->iid[env], iidLast, - getNoBands((PS_RESOLUTION)psOut->iidMode), + getNoBands((UINT)psOut->iidMode), (PS_IID_RESOLUTION)getIIDRes(psOut->iidMode), psOut->deltaIID[env], &error ); @@ -677,7 +677,7 @@ INT FDKsbrEnc_WritePSBitstream(const HANDLE_PS_OUT psOut, bitCnt += FDKsbrEnc_EncodeIcc( hBitBuf, psOut->icc[env], iccLast, - getNoBands((PS_RESOLUTION)psOut->iccMode), + getNoBands((UINT)psOut->iccMode), psOut->deltaICC[env], &error); |