-
-static void predict_4x4_ddr( uint8_t *src )
-{
- const int lt = src[-1-FDEC_STRIDE];
- PREDICT_4x4_LOAD_LEFT
- PREDICT_4x4_LOAD_TOP
- uint32_t vec = (F2(l0,lt,t0)<< 0)
- + (F2(lt,t0,t1)<< 8)
- + (F2(t0,t1,t2)<<16)
- + (F2(t1,t2,t3)<<24);
- *(uint32_t*)&src[0*FDEC_STRIDE] = vec;
- *(uint32_t*)&src[1*FDEC_STRIDE] = vec = (vec<<8) + F2(l1,l0,lt);
- *(uint32_t*)&src[2*FDEC_STRIDE] = vec = (vec<<8) + F2(l2,l1,l0);
- *(uint32_t*)&src[3*FDEC_STRIDE] = vec = (vec<<8) + F2(l3,l2,l1);
-}
-
-static void predict_4x4_vr( uint8_t *src )
-{
- const int lt = src[-1-FDEC_STRIDE];
- PREDICT_4x4_LOAD_LEFT
- PREDICT_4x4_LOAD_TOP
- const int ltt0 = lt + t0 + 1;
- const int t0t1 = t0 + t1 + 1;
- const int t1t2 = t1 + t2 + 1;
- const int t2t3 = t2 + t3 + 1;
- const int l0lt = l0 + lt + 1;
- const int l1l0 = l1 + l0 + 1;
- const int l2l1 = l2 + l1 + 1;
-
- src[0*FDEC_STRIDE+0]=
- src[2*FDEC_STRIDE+1]= ltt0 >> 1;
-
- src[0*FDEC_STRIDE+1]=
- src[2*FDEC_STRIDE+2]= t0t1 >> 1;
-
- src[0*FDEC_STRIDE+2]=
- src[2*FDEC_STRIDE+3]= t1t2 >> 1;
-
- src[0*FDEC_STRIDE+3]= t2t3 >> 1;
-
- src[1*FDEC_STRIDE+0]=
- src[3*FDEC_STRIDE+1]= (l0lt + ltt0) >> 2;
-
- src[1*FDEC_STRIDE+1]=
- src[3*FDEC_STRIDE+2]= (ltt0 + t0t1) >> 2;
-
- src[1*FDEC_STRIDE+2]=
- src[3*FDEC_STRIDE+3]= (t0t1 + t1t2) >> 2;
-
- src[1*FDEC_STRIDE+3]= (t1t2 + t2t3) >> 2;
- src[2*FDEC_STRIDE+0]= (l1l0 + l0lt) >> 2;
- src[3*FDEC_STRIDE+0]= (l2l1 + l1l0) >> 2;
-}
-
-static void predict_4x4_hd( uint8_t *src )
-{
- const int lt= src[-1-1*FDEC_STRIDE];
- PREDICT_4x4_LOAD_LEFT
- PREDICT_4x4_LOAD_TOP
- const int ltt0 = lt + t0 + 1;
- const int t0t1 = t0 + t1 + 1;
- const int t1t2 = t1 + t2 + 1;
- const int l0lt = l0 + lt + 1;
- const int l1l0 = l1 + l0 + 1;
- const int l2l1 = l2 + l1 + 1;
- const int l3l2 = l3 + l2 + 1;
-
- src[0*FDEC_STRIDE+0]=
- src[1*FDEC_STRIDE+2]= l0lt >> 1;
- src[0*FDEC_STRIDE+1]=
- src[1*FDEC_STRIDE+3]= (l0lt + ltt0) >> 2;
- src[0*FDEC_STRIDE+2]= (ltt0 + t0t1) >> 2;
- src[0*FDEC_STRIDE+3]= (t0t1 + t1t2) >> 2;
- src[1*FDEC_STRIDE+0]=
- src[2*FDEC_STRIDE+2]= l1l0 >> 1;
- src[1*FDEC_STRIDE+1]=
- src[2*FDEC_STRIDE+3]= (l0lt + l1l0) >> 2;
- src[2*FDEC_STRIDE+0]=
- src[3*FDEC_STRIDE+2]= l2l1 >> 1;
- src[2*FDEC_STRIDE+1]=
- src[3*FDEC_STRIDE+3]= (l1l0 + l2l1) >> 2;
- src[3*FDEC_STRIDE+0]= l3l2 >> 1;
- src[3*FDEC_STRIDE+1]= (l2l1 + l3l2) >> 2;
-}
-
-#if 0
-static void predict_4x4_vl( uint8_t *src )
-{
- PREDICT_4x4_LOAD_TOP
- PREDICT_4x4_LOAD_TOP_RIGHT
- const int t0t1 = t0 + t1 + 1;
- const int t1t2 = t1 + t2 + 1;
- const int t2t3 = t2 + t3 + 1;
- const int t3t4 = t3 + t4 + 1;
- const int t4t5 = t4 + t5 + 1;
- const int t5t6 = t5 + t6 + 1;
-
- src[0*FDEC_STRIDE+0]= t0t1 >> 1;
- src[0*FDEC_STRIDE+1]=
- src[2*FDEC_STRIDE+0]= t1t2 >> 1;
- src[0*FDEC_STRIDE+2]=
- src[2*FDEC_STRIDE+1]= t2t3 >> 1;
- src[0*FDEC_STRIDE+3]=
- src[2*FDEC_STRIDE+2]= t3t4 >> 1;
- src[2*FDEC_STRIDE+3]= t4t5 >> 1;
- src[1*FDEC_STRIDE+0]= (t0t1 + t1t2) >> 2;
- src[1*FDEC_STRIDE+1]=
- src[3*FDEC_STRIDE+0]= (t1t2 + t2t3) >> 2;
- src[1*FDEC_STRIDE+2]=
- src[3*FDEC_STRIDE+1]= (t2t3 + t3t4) >> 2;
- src[1*FDEC_STRIDE+3]=
- src[3*FDEC_STRIDE+2]= (t3t4 + t4t5) >> 2;
- src[3*FDEC_STRIDE+3]= (t4t5 + t5t6) >> 2;
-}