Commit 7cc3c4e1 authored by Mashiat Sarker Shakkhar's avatar Mashiat Sarker Shakkhar Committed by Derek Buitenhuis
Browse files

vc1dec: Invoke edge emulation regardless of MV precision for 1-MV chroma



This is required due to the way VC-1 handles chroma pull-back which may end
up causing negative chroma MV for zero luma MV. Edge emulation needs to be
invoked in such cases.

This only affects vertical component of chroma motion vector.
Signed-off-by: default avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
parent 88058d9a
...@@ -430,7 +430,7 @@ static void vc1_mc_1mv(VC1Context *v, int dir) ...@@ -430,7 +430,7 @@ static void vc1_mc_1mv(VC1Context *v, int dir)
if (v->rangeredfrm || (v->mv_mode == MV_PMODE_INTENSITY_COMP) if (v->rangeredfrm || (v->mv_mode == MV_PMODE_INTENSITY_COMP)
|| s->h_edge_pos < 22 || v_edge_pos < 22 || s->h_edge_pos < 22 || v_edge_pos < 22
|| (unsigned)(src_x - s->mspel) > s->h_edge_pos - (mx&3) - 16 - s->mspel * 3 || (unsigned)(src_x - s->mspel) > s->h_edge_pos - (mx&3) - 16 - s->mspel * 3
|| (unsigned)(src_y - s->mspel) > v_edge_pos - (my&3) - 16 - s->mspel * 3) { || (unsigned)(src_y - 1) > v_edge_pos - (my&3) - 16 - 3) {
uint8_t *uvbuf = s->edge_emu_buffer + 19 * s->linesize; uint8_t *uvbuf = s->edge_emu_buffer + 19 * s->linesize;
srcY -= s->mspel * (1 + s->linesize); srcY -= s->mspel * (1 + s->linesize);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment