diff options
Diffstat (limited to 'kopete/protocols/msn/webcam/libmimic/idct_dequant.c')
-rw-r--r-- | kopete/protocols/msn/webcam/libmimic/idct_dequant.c | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/kopete/protocols/msn/webcam/libmimic/idct_dequant.c b/kopete/protocols/msn/webcam/libmimic/idct_dequant.c deleted file mode 100644 index 3512247e..00000000 --- a/kopete/protocols/msn/webcam/libmimic/idct_dequant.c +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright (C) 2005 Ole André Vadla Ravnås <oleavr@gmail.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "mimic-private.h" - -void _idct_dequant_block(MimCtx *ctx, gint *block, gboolean is_chrom) -{ - gdouble f; - gint i, *p; - - /* - * De-quantize. - */ - f = (10000 - ctx->quality) * 10.0 * (gfloat) 9.9999997e-5; - - if (f > 10.0) - f = 10.0; - - if (!is_chrom) { - if (f < 2.0) - f = 2.0; - } else { - if (f < 1.0) - f = 1.0; - } - - block[0] <<= 1; - block[1] <<= 2; - block[8] <<= 2; - - for (i = 2; i < 64; i++) { - if (i == 8) - continue; - - block[i] *= f; - } - - /* - * Inverse DCT, first pass (horizontal). - */ - p = block; - - for (i = 0; i < 8; i++) { - gint v1, v2, v3, v4, v5, v6, v7, v8; - gint va, vb; - - va = (p[0] << 11) + (p[4] << 11); - vb = ((p[2] << 2) * 392) + (((p[2] << 2) + (p[6] << 2)) * 277); - v1 = va + vb + 512; - v2 = va - vb + 512; - - va = (p[0] << 11) - (p[4] << 11); - vb = (((p[2] << 2) + (p[6] << 2)) * 277) - ((p[6] << 2) * 946); - v3 = va + vb + 512; - v4 = va - vb + 512; - - va = (p[1] << 9) + (p[3] * 724) + (p[7] << 9); - vb = (p[1] << 9) + (p[5] * 724) - (p[7] << 9); - v5 = (((va + vb) * 213) - (vb * 71)) >> 6; - v6 = (((va + vb) * 213) - (va * 355)) >> 6; - - va = (p[1] << 9) - (p[3] * 724) + (p[7] << 9); - vb = (p[1] << 9) - (p[5] * 724) - (p[7] << 9); - v7 = (((va + vb) * 251) - (va * 201)) >> 6; - v8 = (((va + vb) * 251) - (vb * 301)) >> 6; - - p[0] = (v1 + v5) >> 10; - p[1] = (v3 + v7) >> 10; - p[2] = (v4 + v8) >> 10; - p[3] = (v2 + v6) >> 10; - p[4] = (v2 - v6) >> 10; - p[5] = (v4 - v8) >> 10; - p[6] = (v3 - v7) >> 10; - p[7] = (v1 - v5) >> 10; - - p += 8; - } - - /* - * Inverse dct, second pass (vertical). - */ - p = block; - - for (i = 0; i < 8; i++) { - gint v1, v2, v3, v4, v5, v6, v7, v8; - gint va, vb; - - va = (p[0] << 9) + (p[32] << 9); - vb = ((p[16] + p[48]) * 277) + (p[16] * 392); - v1 = va + vb + 1024; - v2 = va - vb + 1024; - - va = (p[0] << 9) - (p[32] << 9); - vb = ((p[16] + p[48]) * 277) - (p[48] * 946); - v3 = va + vb + 1024; - v4 = va - vb + 1024; - - va = ((p[8] << 7) + (p[24] * 181) + (p[56] << 7)) >> 6; - vb = ((p[8] << 7) + (p[40] * 181) - (p[56] << 7)) >> 6; - v5 = ((va + vb) * 213) - (vb * 71); - v6 = ((va + vb) * 213) - (va * 355); - - va = ((p[8] << 7) - (p[24] * 181) + (p[56] << 7)) >> 6; - vb = ((p[8] << 7) - (p[40] * 181) - (p[56] << 7)) >> 6; - v7 = ((va + vb) * 251) - (va * 201); - v8 = ((va + vb) * 251) - (vb * 301); - - p[0] = (v1 + v5) >> 11; - p[8] = (v3 + v7) >> 11; - p[16] = (v4 + v8) >> 11; - p[24] = (v2 + v6) >> 11; - p[32] = (v2 - v6) >> 11; - p[40] = (v4 - v8) >> 11; - p[48] = (v3 - v7) >> 11; - p[56] = (v1 - v5) >> 11; - - p++; - } -} - |