deblock_horiz_default_filter.c
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:1k
源码类别:
多媒体编程
开发平台:
Visual C++
- #include "postprocess_mmx.h"
- INLINE void deblock_horiz_default_filter(uint8_t *v, int stride, int QP) {
- int a3_0, a3_1, a3_2, d;
- int q1, q;
- int y;
- for (y=0; y<4; y++) {
- q1 = v[4] - v[5];
- q = q1 / 2;
- if (q) {
- a3_0 = q1;
- a3_0 += a3_0 << 2;
- a3_0 = 2*(v[3]-v[6]) - a3_0;
- if (ABS(a3_0) < 8*QP) {
- a3_1 = v[3]-v[2];
- a3_2 = v[7]-v[8];
- a3_1 += a3_1 << 2;
- a3_2 += a3_2 << 2;
- a3_1 += (v[1]-v[4]) << 1;
- a3_2 += (v[5]-v[8]) << 1;
- d = ABS(a3_0) - MIN(ABS(a3_1), ABS(a3_2));
- if (d > 0) {
- d += d<<2;
- d = (d + 32) >> 6;
- if (d > 0) {
- if (q > 0) {
- if (a3_0 < 0) {
- d = d>q ? q : d;
- v[4] -= d;
- v[5] += d;
- }
- } else {
- if (a3_0 > 0) {
- //d = d>0 ? 0 : d;
- d = (-d)<q ? q : (-d);
- v[4] -= d;
- v[5] += d;
- }
- }
- }
- }
- }
- }
- #ifdef PP_SELF_CHECK
- #endif;
- v += stride;
- }
- }