size_coeffs <<= 1;
coeffs = (float *)realloc(coeffs, size_coeffs * sizeof(float));
}
-
+
coeffs[num_coeffs++] = f;
sum += f;
}
coeffs[pd[x].startcoeff + sx - start] /= sum;
}
}
-
+
for (y = 0; y < h; ++y) {
float *sptr = pix + y*sstride;
unsigned char *dptr = npix + y*dstride;
unsigned char ch;
for (x = 0; x < nw; ++x) {
float acc;
+ int tmp;
static const float low = 0.0, high = 255.0;
asm (
"pxor %0, %0 \n"
- "xor %%eax, %%eax \n"
+ "xor %1, %1 \n"
".lbl2: \n"
- "movups (%2,%%eax),%%xmm1 \n"
- "movups (%1,%%eax),%%xmm2 \n"
+ "movups (%3,%1),%%xmm1 \n"
+ "movups (%2,%1),%%xmm2 \n"
"mulps %%xmm2,%%xmm1 \n"
"addps %%xmm1,%0 \n"
- "addl $16,%%eax \n"
- "dec %3 \n"
+ "addl $16,%1 \n"
+ "dec %4 \n"
"jnz .lbl2 \n"
"haddps %0,%0 \n"
"haddps %0,%0 \n"
- "maxss %4,%0 \n"
- "minss %5,%0 \n"
- : "=x" (acc)
+ "maxss %5,%0 \n"
+ "minss %6,%0 \n"
+ : "=&x" (acc),
+ "=&r" (tmp)
: "r" (&coeffs[pd[x].startcoeff]),
"r" (&sptr[pd[x].start]),
"r" ((pd[x].end - pd[x].start + 1)/4),
"m" (low),
"m" (high)
- : "eax", "xmm1", "xmm2"
+ : "xmm1", "xmm2"
);
#if 0
dinfo.raw_data_out = TRUE;
jpeg_start_decompress(&dinfo);
- unsigned w0 = dinfo.image_width * samp_h0 / max_samp_h, h0 = dinfo.image_height * samp_v0 / max_samp_v;
- unsigned w1 = dinfo.image_width * samp_h1 / max_samp_h, h1 = dinfo.image_height * samp_v1 / max_samp_v;
- unsigned w2 = dinfo.image_width * samp_h2 / max_samp_h, h2 = dinfo.image_height * samp_v2 / max_samp_v;
+ unsigned w0 = dinfo.image_width * dinfo.comp_info[0].h_samp_factor / dinfo.max_h_samp_factor;
+ unsigned h0 = dinfo.image_height * dinfo.comp_info[0].v_samp_factor / dinfo.max_v_samp_factor;
+
+ unsigned w1 = dinfo.image_width * dinfo.comp_info[1].h_samp_factor / dinfo.max_h_samp_factor;
+ unsigned h1 = dinfo.image_height * dinfo.comp_info[1].v_samp_factor / dinfo.max_v_samp_factor;
+
+ unsigned w2 = dinfo.image_width * dinfo.comp_info[2].h_samp_factor / dinfo.max_h_samp_factor;
+ unsigned h2 = dinfo.image_height * dinfo.comp_info[2].v_samp_factor / dinfo.max_v_samp_factor;
+
+ fprintf(stderr, "h0 = %u, h1=%u, h2=%u\n", h0, h1, h2);
fprintf(stderr, "Scaling using Lanczos filter:\n");
fprintf(stderr, " Y component: %ux%u -> %ux%u\n", dinfo.comp_info[0].width_in_blocks * DCTSIZE, dinfo.comp_info[0].height_in_blocks * DCTSIZE, nw0, nh0);