aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2013-11-01 11:25:43 +0200
committerMartin Storsjo <martin@martin.st>2013-11-01 11:28:59 +0200
commitc8002b04ff601920c30bded02d8341d298425188 (patch)
treeb707dcbdc8edaa23d8880962d3fcb9e3b3e529d1
parentb41a6f9e8171ae069b9f2b5ef19292dbee4cecc8 (diff)
downloadODR-AudioEnc-c8002b04ff601920c30bded02d8341d298425188.tar.gz
ODR-AudioEnc-c8002b04ff601920c30bded02d8341d298425188.tar.bz2
ODR-AudioEnc-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.cpp12
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);