jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c
changeset 15628 228422512f97
parent 8939 04615dca2a76
child 15632 3d36eadad78f
equal deleted inserted replaced
15627:46054ae31dfc 15628:228422512f97
  1884   mlib_s32 nchannel, chan1, chan2;
  1884   mlib_s32 nchannel, chan1, chan2;
  1885   mlib_s32 i, j, c, swid;
  1885   mlib_s32 i, j, c, swid;
  1886   d64_2x32 dd;
  1886   d64_2x32 dd;
  1887   GET_SRC_DST_PARAMETERS(DTYPE);
  1887   GET_SRC_DST_PARAMETERS(DTYPE);
  1888 
  1888 
       
  1889   mlib_status status = MLIB_SUCCESS;
       
  1890 
  1889   if (scale > 30) {
  1891   if (scale > 30) {
  1890     fscale *= 1.0/(1 << 30);
  1892     fscale *= 1.0/(1 << 30);
  1891     scale -= 30;
  1893     scale -= 30;
  1892   }
  1894   }
  1893 
  1895 
  1903 
  1905 
  1904   for (i = 0; i < mn; i++) {
  1906   for (i = 0; i < mn; i++) {
  1905     k[i] = kernel[i]*fscale;
  1907     k[i] = kernel[i]*fscale;
  1906   }
  1908   }
  1907 
  1909 
  1908   if (m == 1) return mlib_ImageConv1xN_ext(dst, src, k, n, dy_t, dy_b, cmask);
  1910   if (m == 1) {
       
  1911     status = mlib_ImageConv1xN_ext(dst, src, k, n, dy_t, dy_b, cmask);
       
  1912     FREE_AND_RETURN_STATUS;
       
  1913   }
  1909 
  1914 
  1910   swid = wid + (m - 1);
  1915   swid = wid + (m - 1);
  1911 
  1916 
  1912   bsize = (n + 3)*swid;
  1917   bsize = (n + 3)*swid;
  1913 
  1918 
  1914   if ((bsize > BUFF_SIZE) || (n > MAX_N)) {
  1919   if ((bsize > BUFF_SIZE) || (n > MAX_N)) {
  1915     pbuff = mlib_malloc(sizeof(FTYPE)*bsize + sizeof(FTYPE *)*2*(n + 1));
  1920     pbuff = mlib_malloc(sizeof(FTYPE)*bsize + sizeof(FTYPE *)*2*(n + 1));
  1916 
  1921 
  1917     if (pbuff == NULL) return MLIB_FAILURE;
  1922     if (pbuff == NULL) {
       
  1923       status = MLIB_FAILURE;
       
  1924       FREE_AND_RETURN_STATUS;
       
  1925     }
  1918     buffs = (FTYPE   **)(pbuff + bsize);
  1926     buffs = (FTYPE   **)(pbuff + bsize);
  1919   }
  1927   }
  1920 
  1928 
  1921   for (l = 0; l < (n + 1); l++) buffs[l] = pbuff + l*swid;
  1929   for (l = 0; l < (n + 1); l++) buffs[l] = pbuff + l*swid;
  1922   for (l = 0; l < (n + 1); l++) buffs[l + (n + 1)] = buffs[l];
  1930   for (l = 0; l < (n + 1); l++) buffs[l + (n + 1)] = buffs[l];
  2316 
  2324 
  2317       if (buff_ind >= n + 1) buff_ind = 0;
  2325       if (buff_ind >= n + 1) buff_ind = 0;
  2318     }
  2326     }
  2319   }
  2327   }
  2320 
  2328 
  2321   if (pbuff != buff) mlib_free(pbuff);
  2329   FREE_AND_RETURN_STATUS;
  2322 
       
  2323   return MLIB_SUCCESS;
       
  2324 }
  2330 }
  2325 
  2331 
  2326 /***************************************************************/
  2332 /***************************************************************/
  2327 #ifndef __sparc /* for x86, using integer multiplies is faster */
  2333 #ifndef __sparc /* for x86, using integer multiplies is faster */
  2328 
  2334