|
|
|
@ -346,7 +346,6 @@ static void vc1_mc_1mv(VC1Context *v, int dir) |
|
|
|
|
H264ChromaContext *h264chroma = &v->h264chroma; |
|
|
|
|
uint8_t *srcY, *srcU, *srcV; |
|
|
|
|
int dxy, mx, my, uvmx, uvmy, src_x, src_y, uvsrc_x, uvsrc_y; |
|
|
|
|
int off, off_uv; |
|
|
|
|
int v_edge_pos = s->v_edge_pos >> v->field_mode; |
|
|
|
|
|
|
|
|
|
if ((!v->field_mode || |
|
|
|
@ -493,21 +492,19 @@ static void vc1_mc_1mv(VC1Context *v, int dir) |
|
|
|
|
srcY += s->mspel * (1 + s->linesize); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
off = 0; |
|
|
|
|
off_uv = 0; |
|
|
|
|
if (s->mspel) { |
|
|
|
|
dxy = ((my & 3) << 2) | (mx & 3); |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] + off , srcY , s->linesize, v->rnd); |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] + off + 8, srcY + 8, s->linesize, v->rnd); |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] , srcY , s->linesize, v->rnd); |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] + 8, srcY + 8, s->linesize, v->rnd); |
|
|
|
|
srcY += s->linesize * 8; |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] + off + 8 * s->linesize , srcY , s->linesize, v->rnd); |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] + off + 8 * s->linesize + 8, srcY + 8, s->linesize, v->rnd); |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] + 8 * s->linesize , srcY , s->linesize, v->rnd); |
|
|
|
|
v->vc1dsp.put_vc1_mspel_pixels_tab[dxy](s->dest[0] + 8 * s->linesize + 8, srcY + 8, s->linesize, v->rnd); |
|
|
|
|
} else { // hpel mc - always used for luma
|
|
|
|
|
dxy = (my & 2) | ((mx & 2) >> 1); |
|
|
|
|
if (!v->rnd) |
|
|
|
|
s->hdsp.put_pixels_tab[0][dxy](s->dest[0] + off, srcY, s->linesize, 16); |
|
|
|
|
s->hdsp.put_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16); |
|
|
|
|
else |
|
|
|
|
s->hdsp.put_no_rnd_pixels_tab[0][dxy](s->dest[0] + off, srcY, s->linesize, 16); |
|
|
|
|
s->hdsp.put_no_rnd_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (s->flags & CODEC_FLAG_GRAY) return; |
|
|
|
@ -515,11 +512,11 @@ static void vc1_mc_1mv(VC1Context *v, int dir) |
|
|
|
|
uvmx = (uvmx & 3) << 1; |
|
|
|
|
uvmy = (uvmy & 3) << 1; |
|
|
|
|
if (!v->rnd) { |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[1] + off_uv, srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[2] + off_uv, srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[1], srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[2], srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
} else { |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[1] + off_uv, srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[2] + off_uv, srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[1], srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[2], srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -765,7 +762,7 @@ static void vc1_mc_4mv_chroma(VC1Context *v, int dir) |
|
|
|
|
int k, tx = 0, ty = 0; |
|
|
|
|
int mvx[4], mvy[4], intra[4], mv_f[4]; |
|
|
|
|
int valid_count; |
|
|
|
|
int chroma_ref_type = v->cur_field_type, off = 0; |
|
|
|
|
int chroma_ref_type = v->cur_field_type; |
|
|
|
|
int v_edge_pos = s->v_edge_pos >> v->field_mode; |
|
|
|
|
|
|
|
|
|
if (!v->field_mode && !v->s.last_picture.f.data[0]) |
|
|
|
@ -849,7 +846,6 @@ static void vc1_mc_4mv_chroma(VC1Context *v, int dir) |
|
|
|
|
srcU += s->current_picture_ptr->f.linesize[1]; |
|
|
|
|
srcV += s->current_picture_ptr->f.linesize[2]; |
|
|
|
|
} |
|
|
|
|
off = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (v->rangeredfrm || (v->mv_mode == MV_PMODE_INTENSITY_COMP) |
|
|
|
@ -903,11 +899,11 @@ static void vc1_mc_4mv_chroma(VC1Context *v, int dir) |
|
|
|
|
uvmx = (uvmx & 3) << 1; |
|
|
|
|
uvmy = (uvmy & 3) << 1; |
|
|
|
|
if (!v->rnd) { |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[1] + off, srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[2] + off, srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[1], srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
h264chroma->put_h264_chroma_pixels_tab[0](s->dest[2], srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
} else { |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[1] + off, srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[2] + off, srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[1], srcU, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
v->vc1dsp.put_no_rnd_vc1_chroma_pixels_tab[0](s->dest[2], srcV, s->uvlinesize, 8, uvmx, uvmy); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|