Mercurial > libavcodec.hg
comparison vc1dec.c @ 12142:7e93f85e48bf libavcodec
vc1: Fix ordering of loop filter for I/B frames
All horizontal edges must be filtered before all vertical edges
author | conrad |
---|---|
date | Sun, 11 Jul 2010 22:52:51 +0000 |
parents | c3682c0606e3 |
children | db36486a6f89 |
comparison
equal
deleted
inserted
replaced
12141:c3682c0606e3 | 12142:7e93f85e48bf |
---|---|
160 | 160 |
161 /** @} */ //Bitplane group | 161 /** @} */ //Bitplane group |
162 | 162 |
163 static void vc1_loop_filter_iblk(MpegEncContext *s, int pq) | 163 static void vc1_loop_filter_iblk(MpegEncContext *s, int pq) |
164 { | 164 { |
165 int i, j; | 165 int j; |
166 if(!s->first_slice_line) | 166 if (!s->first_slice_line) { |
167 s->dsp.vc1_v_loop_filter16(s->dest[0], s->linesize, pq); | 167 s->dsp.vc1_v_loop_filter16(s->dest[0], s->linesize, pq); |
168 if (s->mb_x) | |
169 s->dsp.vc1_h_loop_filter16(s->dest[0] - 16*s->linesize, s->linesize, pq); | |
170 s->dsp.vc1_h_loop_filter16(s->dest[0] - 16*s->linesize+8, s->linesize, pq); | |
171 for(j = 0; j < 2; j++){ | |
172 s->dsp.vc1_v_loop_filter8(s->dest[j+1], s->uvlinesize, pq); | |
173 if (s->mb_x) | |
174 s->dsp.vc1_h_loop_filter8(s->dest[j+1]-8*s->uvlinesize, s->uvlinesize, pq); | |
175 } | |
176 } | |
168 s->dsp.vc1_v_loop_filter16(s->dest[0] + 8*s->linesize, s->linesize, pq); | 177 s->dsp.vc1_v_loop_filter16(s->dest[0] + 8*s->linesize, s->linesize, pq); |
169 for(i = !s->mb_x*8; i < 16; i += 8) | 178 |
170 s->dsp.vc1_h_loop_filter16(s->dest[0] + i, s->linesize, pq); | 179 if (s->mb_y == s->mb_height-1) { |
171 for(j = 0; j < 2; j++){ | 180 if (s->mb_x) { |
172 if(!s->first_slice_line) | 181 s->dsp.vc1_h_loop_filter16(s->dest[0], s->linesize, pq); |
173 s->dsp.vc1_v_loop_filter8(s->dest[j+1], s->uvlinesize, pq); | 182 s->dsp.vc1_h_loop_filter8(s->dest[1], s->uvlinesize, pq); |
174 if(s->mb_x) | 183 s->dsp.vc1_h_loop_filter8(s->dest[2], s->uvlinesize, pq); |
175 s->dsp.vc1_h_loop_filter8(s->dest[j+1], s->uvlinesize, pq); | 184 } |
185 s->dsp.vc1_h_loop_filter16(s->dest[0] + 8, s->linesize, pq); | |
176 } | 186 } |
177 } | 187 } |
178 | 188 |
179 /** Put block onto picture | 189 /** Put block onto picture |
180 */ | 190 */ |