|
|
|
@ -31,36 +31,6 @@ |
|
|
|
|
#include "vc1.h" |
|
|
|
|
#include "vc1dsp.h" |
|
|
|
|
|
|
|
|
|
void ff_vc1_loop_filter_iblk(VC1Context *v, int pq) |
|
|
|
|
{ |
|
|
|
|
MpegEncContext *s = &v->s; |
|
|
|
|
int j; |
|
|
|
|
if (!s->first_slice_line) { |
|
|
|
|
v->vc1dsp.vc1_v_loop_filter16(s->dest[0], s->linesize, pq); |
|
|
|
|
if (s->mb_x) |
|
|
|
|
v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize, s->linesize, pq); |
|
|
|
|
v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize + 8, s->linesize, pq); |
|
|
|
|
if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) |
|
|
|
|
for (j = 0; j < 2; j++) { |
|
|
|
|
v->vc1dsp.vc1_v_loop_filter8(s->dest[j + 1], s->uvlinesize, pq); |
|
|
|
|
if (s->mb_x) |
|
|
|
|
v->vc1dsp.vc1_h_loop_filter8(s->dest[j + 1] - 8 * s->uvlinesize, s->uvlinesize, pq); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
v->vc1dsp.vc1_v_loop_filter16(s->dest[0] + 8 * s->linesize, s->linesize, pq); |
|
|
|
|
|
|
|
|
|
if (s->mb_y == s->end_mb_y - 1) { |
|
|
|
|
if (s->mb_x) { |
|
|
|
|
v->vc1dsp.vc1_h_loop_filter16(s->dest[0], s->linesize, pq); |
|
|
|
|
if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { |
|
|
|
|
v->vc1dsp.vc1_h_loop_filter8(s->dest[1], s->uvlinesize, pq); |
|
|
|
|
v->vc1dsp.vc1_h_loop_filter8(s->dest[2], s->uvlinesize, pq); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
v->vc1dsp.vc1_h_loop_filter16(s->dest[0] + 8, s->linesize, pq); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static av_always_inline void vc1_h_overlap_filter(VC1Context *v, int16_t (*left_block)[64], |
|
|
|
|
int16_t (*right_block)[64], int block_num) |
|
|
|
|
{ |
|
|
|
|