comparison vc1dsp.c @ 4239:30b14d0f2324 libavcodec

Correct rounding values in overlap filtering
author kostya
date Sun, 26 Nov 2006 04:57:31 +0000
parents ff9a94fce879
children d6f83e2f8804
comparison
equal deleted inserted replaced
4238:a784639411d6 4239:30b14d0f2324
29 #include "dsputil.h" 29 #include "dsputil.h"
30 30
31 31
32 /** Apply overlap transform to horizontal edge 32 /** Apply overlap transform to horizontal edge
33 */ 33 */
34 static void vc1_v_overlap_c(uint8_t* src, int stride, int rnd) 34 static void vc1_v_overlap_c(uint8_t* src, int stride)
35 { 35 {
36 int i; 36 int i;
37 int a, b, c, d; 37 int a, b, c, d;
38 int d1, d2; 38 int d1, d2;
39 int rnd = 1;
39 for(i = 0; i < 8; i++) { 40 for(i = 0; i < 8; i++) {
40 a = src[-2*stride]; 41 a = src[-2*stride];
41 b = src[-stride]; 42 b = src[-stride];
42 c = src[0]; 43 c = src[0];
43 d = src[stride]; 44 d = src[stride];
47 src[-2*stride] = a - d1; 48 src[-2*stride] = a - d1;
48 src[-stride] = b - d2; 49 src[-stride] = b - d2;
49 src[0] = c + d2; 50 src[0] = c + d2;
50 src[stride] = d + d1; 51 src[stride] = d + d1;
51 src++; 52 src++;
53 rnd = !rnd;
52 } 54 }
53 } 55 }
54 56
55 /** Apply overlap transform to vertical edge 57 /** Apply overlap transform to vertical edge
56 */ 58 */
57 static void vc1_h_overlap_c(uint8_t* src, int stride, int rnd) 59 static void vc1_h_overlap_c(uint8_t* src, int stride)
58 { 60 {
59 int i; 61 int i;
60 int a, b, c, d; 62 int a, b, c, d;
61 int d1, d2; 63 int d1, d2;
64 int rnd = 1;
62 for(i = 0; i < 8; i++) { 65 for(i = 0; i < 8; i++) {
63 a = src[-2]; 66 a = src[-2];
64 b = src[-1]; 67 b = src[-1];
65 c = src[0]; 68 c = src[0];
66 d = src[1]; 69 d = src[1];
70 src[-2] = a - d1; 73 src[-2] = a - d1;
71 src[-1] = b - d2; 74 src[-1] = b - d2;
72 src[0] = c + d2; 75 src[0] = c + d2;
73 src[1] = d + d1; 76 src[1] = d + d1;
74 src += stride; 77 src += stride;
78 rnd = !rnd;
75 } 79 }
76 } 80 }
77 81
78 82
79 /** Do inverse transform on 8x8 block 83 /** Do inverse transform on 8x8 block