void sub_pred_altivec_verify(SUB_PRED_PDECL) { int i; unsigned long checksum1, checksum2; signed short blkcpy[8*8]; sub_pred_altivec(SUB_PRED_ARGS); for (checksum1 = i = 0; i < 8*8; i++) checksum1 += abs(blk[i]); memcpy(blkcpy, blk, 8*8*sizeof(short)); ALTIVEC_TEST_WITH(sub_pred)(SUB_PRED_ARGS); for (checksum2 = i = 0; i < 8*8; i++) checksum2 += abs(blk[i]); if (checksum1 != checksum2) { mjpeg_debug("sub_pred(" SUB_PRED_PFMT ")", SUB_PRED_ARGS); mjpeg_debug("sub_pred: checksums differ %d != %d", checksum1, checksum2); for (i = 0; i < 8*8; i++) { if (blkcpy[i] != blk[i]) { mjpeg_debug("sub_pred: blk[%d] %d != %d", i, blkcpy[i], blk[i]); } } } }
void add_pred_altivec_verify(ADD_PRED_PDECL) { int i, j; unsigned long checksum1, checksum2; uint8_t *pcur; uint8_t curcpy[8][8]; add_pred_altivec(ADD_PRED_ARGS); pcur = cur; checksum1 = 0; for (j = 0; j < 8; j++) { for (i = 0; i < 8; i++) { checksum1 += pcur[i]; curcpy[j][i] = pcur[i]; } pcur += lx; } ALTIVEC_TEST_WITH(add_pred)(ADD_PRED_ARGS); pcur = cur; checksum2 = 0; for (j = 0; j < 8; j++) { for (i = 0; i < 8; i++) checksum2 += pcur[i]; pcur += lx; } if (checksum1 != checksum2) { mjpeg_debug("add_pred(" ADD_PRED_PFMT ")", ADD_PRED_ARGS); mjpeg_debug("add_pred: checksums differ %d != %d", checksum1, checksum2); pcur = cur; checksum1 = 0; for (j = 0; j < 8; j++) { for (i = 0; i < 8; i++) { if (curcpy[j][i] != pcur[i]) mjpeg_debug("add_pred: cur[%d][%d] %d != %d", j, i, curcpy[j][i], pcur[i]); } pcur += lx; } } }
void subsample_image_altivec_verify(SUBSAMPLE_IMAGE_PDECL) { int width, height; unsigned long checksum44_1, checksum44_2; unsigned long checksum22_1, checksum22_2; unsigned char *cpy22, *cpy44; width = rowstride; height = (unsigned long)(sub22_image - image) / rowstride; cpy22 = (unsigned char*)malloc((width/2) * (height/2)); cpy44 = (unsigned char*)malloc((width/4) * (height/4)); if (cpy22 == NULL || cpy44 == NULL) mjpeg_error_exit1("subsample_image: malloc failed"); subsample_image_altivec(SUBSAMPLE_IMAGE_ARGS); checksum22_1 = checksum(sub22_image, width/2, height/2, rowstride/2); checksum44_1 = checksum(sub44_image, width/4, height/4, rowstride/4); /* copy data for imgcmp */ imgcpy(cpy22, sub22_image, width/2, height/2, rowstride/2); imgcpy(cpy44, sub44_image, width/4, height/4, rowstride/4); ALTIVEC_TEST_WITH(subsample_image)(SUBSAMPLE_IMAGE_ARGS); checksum22_2 = checksum(sub22_image, width/2, height/2, rowstride/2); checksum44_2 = checksum(sub44_image, width/4, height/4, rowstride/4); if (checksum22_1 != checksum22_2 || checksum44_1 != checksum44_2) { mjpeg_debug("subsample_image(" SUBSAMPLE_IMAGE_PFMT ")", SUBSAMPLE_IMAGE_ARGS); if (checksum22_1 != checksum22_2) mjpeg_debug("subsample_image: %s checksums differ %d != %d", "2*2", checksum22_1, checksum22_2); if (checksum44_1 != checksum44_2) mjpeg_debug("subsample_image: %s checksums differ %d != %d", "4*4", checksum44_1, checksum44_2); imgcmp("2*2", cpy22, sub22_image, width/2, height/2, rowstride/2); imgcmp("4*4", cpy44, sub44_image, width/4, height/4, rowstride/4); } free(cpy22); free(cpy44); }
void iquant_intra_m2_altivec_verify(IQUANT_INTRA_PDECL) { iquant_intra_altivec_verify(IQUANT_INTRA_ARGS, iquant_intra_m2_altivec, ALTIVEC_TEST_WITH(iquant_intra_m2)); }