From c8002b04ff601920c30bded02d8341d298425188 Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Fri, 1 Nov 2013 11:25:43 +0200 Subject: 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. --- libSBRenc/src/ps_bitenc.cpp | 12 ++++++------ 1 file 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); -- cgit v1.2.3