mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
vc1: Fix ordering of loop filter for I/B frames
All horizontal edges must be filtered before all vertical edges Originally committed as revision 24206 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
3683b7e570
commit
fca58a815a
@ -162,17 +162,27 @@ enum Imode {
|
||||
|
||||
static void vc1_loop_filter_iblk(MpegEncContext *s, int pq)
|
||||
{
|
||||
int i, j;
|
||||
if(!s->first_slice_line)
|
||||
int j;
|
||||
if (!s->first_slice_line) {
|
||||
s->dsp.vc1_v_loop_filter16(s->dest[0], s->linesize, pq);
|
||||
s->dsp.vc1_v_loop_filter16(s->dest[0] + 8*s->linesize, s->linesize, pq);
|
||||
for(i = !s->mb_x*8; i < 16; i += 8)
|
||||
s->dsp.vc1_h_loop_filter16(s->dest[0] + i, s->linesize, pq);
|
||||
if (s->mb_x)
|
||||
s->dsp.vc1_h_loop_filter16(s->dest[0] - 16*s->linesize, s->linesize, pq);
|
||||
s->dsp.vc1_h_loop_filter16(s->dest[0] - 16*s->linesize+8, s->linesize, pq);
|
||||
for(j = 0; j < 2; j++){
|
||||
if(!s->first_slice_line)
|
||||
s->dsp.vc1_v_loop_filter8(s->dest[j+1], s->uvlinesize, pq);
|
||||
if(s->mb_x)
|
||||
s->dsp.vc1_h_loop_filter8(s->dest[j+1], s->uvlinesize, pq);
|
||||
if (s->mb_x)
|
||||
s->dsp.vc1_h_loop_filter8(s->dest[j+1]-8*s->uvlinesize, s->uvlinesize, pq);
|
||||
}
|
||||
}
|
||||
s->dsp.vc1_v_loop_filter16(s->dest[0] + 8*s->linesize, s->linesize, pq);
|
||||
|
||||
if (s->mb_y == s->mb_height-1) {
|
||||
if (s->mb_x) {
|
||||
s->dsp.vc1_h_loop_filter16(s->dest[0], s->linesize, pq);
|
||||
s->dsp.vc1_h_loop_filter8(s->dest[1], s->uvlinesize, pq);
|
||||
s->dsp.vc1_h_loop_filter8(s->dest[2], s->uvlinesize, pq);
|
||||
}
|
||||
s->dsp.vc1_h_loop_filter16(s->dest[0] + 8, s->linesize, pq);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user