00001 00019 #include "global.h" 00020 00021 #include "image.h" 00022 #include "mb_access.h" 00023 #include "elements.h" 00024 #include "transform8x8.h" 00025 #include "transform.h" 00026 #include "quant.h" 00027 00028 00029 00036 void itrans8x8(ImageParameters *img, 00037 Macroblock *currMB, 00038 ColorPlane pl, 00039 int ioff, 00040 int joff) 00041 { 00042 int i,j; 00043 00044 imgpel **mpr = img->mb_pred[pl]; 00045 imgpel **mb_rec = img->mb_rec[pl]; 00046 int **m7 = img->mb_rres[pl]; 00047 int max_imgpel_value = img->max_imgpel_value_comp[pl]; 00048 00049 if (currMB->is_lossless == TRUE) 00050 { 00051 for( j = joff; j < joff + 8; j++) 00052 { 00053 for( i = ioff; i < ioff + 8; i++) 00054 mb_rec[j][i] = (imgpel) iClip1(max_imgpel_value, (m7[j][i] + (long)mpr[j][i])); 00055 } 00056 } 00057 else 00058 { 00059 inverse8x8(m7, m7, joff, ioff); 00060 for( j = joff; j < joff + 8; j++) 00061 { 00062 for( i = ioff; i < ioff + 8; i++) 00063 mb_rec[j][i] = (imgpel) iClip1(max_imgpel_value, rshift_rnd_sf((m7[j][i] + ((long)mpr[j][i] << DQ_BITS_8)), DQ_BITS_8)); 00064 } 00065 } 00066 }