diff options
Diffstat (limited to 'image/codecs/indeo')
-rw-r--r-- | image/codecs/indeo/indeo.cpp | 18 | ||||
-rw-r--r-- | image/codecs/indeo/indeo_dsp.cpp | 166 |
2 files changed, 72 insertions, 112 deletions
diff --git a/image/codecs/indeo/indeo.cpp b/image/codecs/indeo/indeo.cpp index 0e1a678c70..adc7229fd4 100644 --- a/image/codecs/indeo/indeo.cpp +++ b/image/codecs/indeo/indeo.cpp @@ -86,18 +86,17 @@ static const IVIHuffDesc ivi_blk_huff_desc[8] = { /*------------------------------------------------------------------------*/ int IVIHuffDesc::createHuffFromDesc(VLC *vlc, bool flag) const { - int pos, i, j, codesPerRow, prefix, notLastRow; uint16 codewords[256]; uint8 bits[256]; - pos = 0; // current position = 0 + int pos = 0; // current position = 0 - for (i = 0; i < _numRows; i++) { - codesPerRow = 1 << _xBits[i]; - notLastRow = (i != _numRows - 1); - prefix = ((1 << i) - 1) << (_xBits[i] + notLastRow); + for (int i = 0; i < _numRows; i++) { + int codesPerRow = 1 << _xBits[i]; + int notLastRow = (i != _numRows - 1); + int prefix = ((1 << i) - 1) << (_xBits[i] + notLastRow); - for (j = 0; j < codesPerRow; j++) { + for (int j = 0; j < codesPerRow; j++) { if (pos >= 256) // Some Indeo5 codebooks can have more than 256 break; // elements, but only 256 codes are allowed! @@ -135,7 +134,6 @@ IVIHuffTab::IVIHuffTab() : _tab(nullptr) { } int IVIHuffTab::decodeHuffDesc(IVI45DecContext *ctx, int descCoded, int whichTab) { - int i, result; IVIHuffDesc newHuff; if (!descCoded) { @@ -154,7 +152,7 @@ int IVIHuffTab::decodeHuffDesc(IVI45DecContext *ctx, int descCoded, int whichTab return -1; } - for (i = 0; i < newHuff._numRows; i++) + for (int i = 0; i < newHuff._numRows; i++) newHuff._xBits[i] = ctx->_gb->getBits(4); // Have we got the same custom table? Rebuild if not. @@ -163,7 +161,7 @@ int IVIHuffTab::decodeHuffDesc(IVI45DecContext *ctx, int descCoded, int whichTab if (_custTab._table) _custTab.freeVlc(); - result = _custDesc.createHuffFromDesc(&_custTab, false); + int result = _custDesc.createHuffFromDesc(&_custTab, false); if (result) { // reset faulty description _custDesc._numRows = 0; diff --git a/image/codecs/indeo/indeo_dsp.cpp b/image/codecs/indeo/indeo_dsp.cpp index 56a720a19f..b095151036 100644 --- a/image/codecs/indeo/indeo_dsp.cpp +++ b/image/codecs/indeo/indeo_dsp.cpp @@ -73,24 +73,21 @@ namespace Indeo { void IndeoDSP::ffIviInverseHaar8x8(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i, shift, sp1, sp2, sp3, sp4; - const int32 *src; - int32 *dst; int tmp[64]; int t0, t1, t2, t3, t4, t5, t6, t7, t8; // apply the InvHaar8 to all columns #define COMPENSATE(x) (x) - src = in; - dst = tmp; - for (i = 0; i < 8; i++) { + const int32 *src = in; + int32 *dst = tmp; + for (int i = 0; i < 8; i++) { if (flags[i]) { // pre-scaling - shift = !(i & 4); - sp1 = src[ 0] << shift; - sp2 = src[ 8] << shift; - sp3 = src[16] << shift; - sp4 = src[24] << shift; + int shift = !(i & 4); + int sp1 = src[ 0] << shift; + int sp2 = src[ 8] << shift; + int sp3 = src[16] << shift; + int sp4 = src[24] << shift; INV_HAAR8( sp1, sp2, sp3, sp4, src[32], src[40], src[48], src[56], dst[ 0], dst[ 8], dst[16], dst[24], @@ -109,7 +106,7 @@ void IndeoDSP::ffIviInverseHaar8x8(const int32 *in, int16 *out, uint32 pitch, // apply the InvHaar8 to all rows #define COMPENSATE(x) (x) src = tmp; - for (i = 0; i < 8; i++) { + for (int i = 0; i < 8; i++) { if ( !src[0] && !src[1] && !src[2] && !src[3] && !src[4] && !src[5] && !src[6] && !src[7]) { memset(out, 0, 8 * sizeof(out[0])); @@ -128,12 +125,11 @@ void IndeoDSP::ffIviInverseHaar8x8(const int32 *in, int16 *out, uint32 pitch, void IndeoDSP::ffIviRowHaar8(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; int t0, t1, t2, t3, t4, t5, t6, t7, t8; // apply the InvHaar8 to all rows #define COMPENSATE(x) (x) - for (i = 0; i < 8; i++) { + for (int i = 0; i < 8; i++) { if ( !in[0] && !in[1] && !in[2] && !in[3] && !in[4] && !in[5] && !in[6] && !in[7]) { memset(out, 0, 8 * sizeof(out[0])); @@ -152,12 +148,11 @@ void IndeoDSP::ffIviRowHaar8(const int32 *in, int16 *out, uint32 pitch, void IndeoDSP::ffIviColHaar8(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; int t0, t1, t2, t3, t4, t5, t6, t7, t8; // apply the InvHaar8 to all columns #define COMPENSATE(x) (x) - for (i = 0; i < 8; i++) { + for (int i = 0; i < 8; i++) { if (flags[i]) { INV_HAAR8(in[ 0], in[ 8], in[16], in[24], in[32], in[40], in[48], in[56], @@ -181,22 +176,19 @@ void IndeoDSP::ffIviColHaar8(const int32 *in, int16 *out, uint32 pitch, void IndeoDSP::ffIviInverseHaar4x4(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i, shift, sp1, sp2; - const int32 *src; - int32 *dst; int tmp[16]; int t0, t1, t2, t3, t4; // apply the InvHaar4 to all columns #define COMPENSATE(x) (x) - src = in; - dst = tmp; - for (i = 0; i < 4; i++) { + const int32 *src = in; + int32 *dst = tmp; + for (int i = 0; i < 4; i++) { if (flags[i]) { // pre-scaling - shift = !(i & 2); - sp1 = src[0] << shift; - sp2 = src[4] << shift; + int shift = !(i & 2); + int sp1 = src[0] << shift; + int sp2 = src[4] << shift; INV_HAAR4( sp1, sp2, src[8], src[12], dst[0], dst[4], dst[8], dst[12], t0, t1, t2, t3, t4); @@ -212,7 +204,7 @@ void IndeoDSP::ffIviInverseHaar4x4(const int32 *in, int16 *out, uint32 pitch, // apply the InvHaar8 to all rows #define COMPENSATE(x) (x) src = tmp; - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (!src[0] && !src[1] && !src[2] && !src[3]) { memset(out, 0, 4 * sizeof(out[0])); } else { @@ -228,12 +220,11 @@ void IndeoDSP::ffIviInverseHaar4x4(const int32 *in, int16 *out, uint32 pitch, void IndeoDSP::ffIviRowHaar4(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; int t0, t1, t2, t3, t4; // apply the InvHaar4 to all rows #define COMPENSATE(x) (x) - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (!in[0] && !in[1] && !in[2] && !in[3]) { memset(out, 0, 4 * sizeof(out[0])); } else { @@ -249,12 +240,11 @@ void IndeoDSP::ffIviRowHaar4(const int32 *in, int16 *out, uint32 pitch, void IndeoDSP::ffIviColHaar4(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; int t0, t1, t2, t3, t4; // apply the InvHaar8 to all columns #define COMPENSATE(x) (x) - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (flags[i]) { INV_HAAR4(in[0], in[4], in[8], in[12], out[0 * pitch], out[1 * pitch], @@ -273,13 +263,10 @@ void IndeoDSP::ffIviColHaar4(const int32 *in, int16 *out, uint32 pitch, void IndeoDSP::ffIviDcHaar2d(const int32 *in, int16 *out, uint32 pitch, int blkSize) { - int x, y; - int16 dcCoeff; + int16 dcCoeff = (*in + 0) >> 3; - dcCoeff = (*in + 0) >> 3; - - for (y = 0; y < blkSize; out += pitch, y++) { - for (x = 0; x < blkSize; x++) + for (int y = 0; y < blkSize; out += pitch, y++) { + for (int x = 0; x < blkSize; x++) out[x] = dcCoeff; } } @@ -335,16 +322,13 @@ void IndeoDSP::ffIviDcHaar2d(const int32 *in, int16 *out, uint32 pitch, d4 = COMPENSATE(t4);} void IndeoDSP::ffIviInverseSlant8x8(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; - const int32 *src; - int32 *dst; int tmp[64]; int t0, t1, t2, t3, t4, t5, t6, t7, t8; #define COMPENSATE(x) (x) - src = in; - dst = tmp; - for (i = 0; i < 8; i++) { + const int32 *src = in; + int32 *dst = tmp; + for (int i = 0; i < 8; i++) { if (flags[i]) { IVI_INV_SLANT8(src[0], src[8], src[16], src[24], src[32], src[40], src[48], src[56], dst[0], dst[8], dst[16], dst[24], dst[32], dst[40], dst[48], dst[56], @@ -360,7 +344,7 @@ void IndeoDSP::ffIviInverseSlant8x8(const int32 *in, int16 *out, uint32 pitch, c #define COMPENSATE(x) (((x) + 1)>>1) src = tmp; - for (i = 0; i < 8; i++) { + for (int i = 0; i < 8; i++) { if (!src[0] && !src[1] && !src[2] && !src[3] && !src[4] && !src[5] && !src[6] && !src[7]) { memset(out, 0, 8*sizeof(out[0])); } else { @@ -375,16 +359,13 @@ void IndeoDSP::ffIviInverseSlant8x8(const int32 *in, int16 *out, uint32 pitch, c } void IndeoDSP::ffIviInverseSlant4x4(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; - const int32 *src; - int32 *dst; int tmp[16]; int t0, t1, t2, t3, t4; #define COMPENSATE(x) (x) - src = in; - dst = tmp; - for (i = 0; i < 4; i++) { + const int32 *src = in; + int32 *dst = tmp; + for (int i = 0; i < 4; i++) { if (flags[i]) { IVI_INV_SLANT4(src[0], src[4], src[8], src[12], dst[0], dst[4], dst[8], dst[12], @@ -399,7 +380,7 @@ void IndeoDSP::ffIviInverseSlant4x4(const int32 *in, int16 *out, uint32 pitch, c #define COMPENSATE(x) (((x) + 1)>>1) src = tmp; - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (!src[0] && !src[1] && !src[2] && !src[3]) { out[0] = out[1] = out[2] = out[3] = 0; } else { @@ -415,24 +396,20 @@ void IndeoDSP::ffIviInverseSlant4x4(const int32 *in, int16 *out, uint32 pitch, c void IndeoDSP::ffIviDcSlant2d(const int32 *in, int16 *out, uint32 pitch, int blkSize) { - int x, y; - int16 dcCoeff; - - dcCoeff = (*in + 1) >> 1; + int16 dcCoeff = (*in + 1) >> 1; - for (y = 0; y < blkSize; out += pitch, y++) { - for (x = 0; x < blkSize; x++) + for (int y = 0; y < blkSize; out += pitch, y++) { + for (int x = 0; x < blkSize; x++) out[x] = dcCoeff; } } void IndeoDSP::ffIviRowSlant8(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; int t0, t1, t2, t3, t4, t5, t6, t7, t8; #define COMPENSATE(x) (((x) + 1)>>1) - for (i = 0; i < 8; i++) { + for (int i = 0; i < 8; i++) { if (!in[0] && !in[1] && !in[2] && !in[3] && !in[4] && !in[5] && !in[6] && !in[7]) { memset(out, 0, 8*sizeof(out[0])); } else { @@ -447,32 +424,28 @@ void IndeoDSP::ffIviRowSlant8(const int32 *in, int16 *out, uint32 pitch, } void IndeoDSP::ffIviDcRowSlant(const int32 *in, int16 *out, uint32 pitch, int blkSize) { - int x, y; - int16 dcCoeff; - - dcCoeff = (*in + 1) >> 1; + int16 dcCoeff = (*in + 1) >> 1; - for (x = 0; x < blkSize; x++) + for (int x = 0; x < blkSize; x++) out[x] = dcCoeff; out += pitch; - for (y = 1; y < blkSize; out += pitch, y++) { - for (x = 0; x < blkSize; x++) + for (int y = 1; y < blkSize; out += pitch, y++) { + for (int x = 0; x < blkSize; x++) out[x] = 0; } } void IndeoDSP::ffIviColSlant8(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i, row2, row4, row8; int t0, t1, t2, t3, t4, t5, t6, t7, t8; - row2 = pitch << 1; - row4 = pitch << 2; - row8 = pitch << 3; + int row2 = pitch << 1; + int row4 = pitch << 2; + int row8 = pitch << 3; #define COMPENSATE(x) (((x) + 1)>>1) - for (i = 0; i < 8; i++) { + for (int i = 0; i < 8; i++) { if (flags[i]) { IVI_INV_SLANT8(in[0], in[8], in[16], in[24], in[32], in[40], in[48], in[56], out[0], out[pitch], out[row2], out[row2 + pitch], out[row4], @@ -490,25 +463,21 @@ void IndeoDSP::ffIviColSlant8(const int32 *in, int16 *out, uint32 pitch, const u } void IndeoDSP::ffIviDcColSlant(const int32 *in, int16 *out, uint32 pitch, int blkSize) { - int x, y; - int16 dcCoeff; + int16 dcCoeff = (*in + 1) >> 1; - dcCoeff = (*in + 1) >> 1; - - for (y = 0; y < blkSize; out += pitch, y++) { + for (int y = 0; y < blkSize; out += pitch, y++) { out[0] = dcCoeff; - for (x = 1; x < blkSize; x++) + for (int x = 1; x < blkSize; x++) out[x] = 0; } } void IndeoDSP::ffIviRowSlant4(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i; int t0, t1, t2, t3, t4; #define COMPENSATE(x) (((x) + 1)>>1) - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (!in[0] && !in[1] && !in[2] && !in[3]) { memset(out, 0, 4*sizeof(out[0])); } else { @@ -524,13 +493,12 @@ void IndeoDSP::ffIviRowSlant4(const int32 *in, int16 *out, void IndeoDSP::ffIviColSlant4(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int i, row2; int t0, t1, t2, t3, t4; - row2 = pitch << 1; + int row2 = pitch << 1; #define COMPENSATE(x) (((x) + 1)>>1) - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (flags[i]) { IVI_INV_SLANT4(in[0], in[4], in[8], in[12], out[0], out[pitch], out[row2], out[row2 + pitch], @@ -547,23 +515,19 @@ void IndeoDSP::ffIviColSlant4(const int32 *in, int16 *out, uint32 pitch, void IndeoDSP::ffIviPutPixels8x8(const int32 *in, int16 *out, uint32 pitch, const uint8 *flags) { - int x, y; - - for (y = 0; y < 8; out += pitch, in += 8, y++) - for (x = 0; x < 8; x++) + for (int y = 0; y < 8; out += pitch, in += 8, y++) + for (int x = 0; x < 8; x++) out[x] = in[x]; } void IndeoDSP::ffIviPutDcPixel8x8(const int32 *in, int16 *out, uint32 pitch, int blkSize) { - int y; - out[0] = in[0]; - memset(out + 1, 0, 7*sizeof(out[0])); + memset(out + 1, 0, 7 * sizeof(out[0])); out += pitch; - for (y = 1; y < 8; out += pitch, y++) - memset(out, 0, 8*sizeof(out[0])); + for (int y = 1; y < 8; out += pitch, y++) + memset(out, 0, 8 * sizeof(out[0])); } #define IVI_MC_TEMPLATE(size, suffix, OP) \ @@ -572,32 +536,31 @@ static void iviMc ## size ##x## size ## suffix(int16 *buf, \ const int16 *refBuf, \ uint32 pitch, int mcType) \ { \ - int i, j; \ const int16 *wptr; \ \ switch (mcType) { \ case 0: /* fullpel (no interpolation) */ \ - for (i = 0; i < size; i++, buf += dpitch, refBuf += pitch) { \ - for (j = 0; j < size; j++) {\ + for (int i = 0; i < size; i++, buf += dpitch, refBuf += pitch) { \ + for (int j = 0; j < size; j++) {\ OP(buf[j], refBuf[j]); \ } \ } \ break; \ case 1: /* horizontal halfpel interpolation */ \ - for (i = 0; i < size; i++, buf += dpitch, refBuf += pitch) \ - for (j = 0; j < size; j++) \ + for (int i = 0; i < size; i++, buf += dpitch, refBuf += pitch) \ + for (int j = 0; j < size; j++) \ OP(buf[j], (refBuf[j] + refBuf[j+1]) >> 1); \ break; \ case 2: /* vertical halfpel interpolation */ \ wptr = refBuf + pitch; \ - for (i = 0; i < size; i++, buf += dpitch, wptr += pitch, refBuf += pitch) \ - for (j = 0; j < size; j++) \ + for (int i = 0; i < size; i++, buf += dpitch, wptr += pitch, refBuf += pitch) \ + for (int j = 0; j < size; j++) \ OP(buf[j], (refBuf[j] + wptr[j]) >> 1); \ break; \ case 3: /* vertical and horizontal halfpel interpolation */ \ wptr = refBuf + pitch; \ - for (i = 0; i < size; i++, buf += dpitch, wptr += pitch, refBuf += pitch) \ - for (j = 0; j < size; j++) \ + for (int i = 0; i < size; i++, buf += dpitch, wptr += pitch, refBuf += pitch) \ + for (int j = 0; j < size; j++) \ OP(buf[j], (refBuf[j] + refBuf[j+1] + wptr[j] + wptr[j+1]) >> 2); \ break; \ } \ @@ -617,12 +580,11 @@ void IndeoDSP::ffIviMcAvg ## size ##x## size ## suffix(int16 *buf, \ int mcType, int mcType2) \ { \ int16 tmp[size * size]; \ - int i, j; \ \ iviMc ## size ##x## size ## NoDelta(tmp, size, refBuf, pitch, mcType); \ iviMc ## size ##x## size ## Delta(tmp, size, refBuf2, pitch, mcType2); \ - for (i = 0; i < size; i++, buf += pitch) { \ - for (j = 0; j < size; j++) {\ + for (int i = 0; i < size; i++, buf += pitch) { \ + for (int j = 0; j < size; j++) {\ OP(buf[j], tmp[i * size + j] >> 1); \ } \ } \ |