1 /* 2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 27 #ifndef __MLIB_IMAGECONV_H 28 #define __MLIB_IMAGECONV_H 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif /* __cplusplus */ 33 34 // Shared macro defined for cleanup of allocated memory. 35 #ifndef FREE_AND_RETURN_STATUS 36 #define FREE_AND_RETURN_STATUS \ 37 { \ 38 if (pbuff != buff) mlib_free(pbuff); \ 39 if (k != akernel) mlib_free(k); \ 40 return status; \ 41 } 42 #endif /* FREE_AND_RETURN_STATUS */ 43 44 void mlib_ImageXor80_aa(mlib_u8 *dl, 45 mlib_s32 wid, 46 mlib_s32 hgt, 47 mlib_s32 str); 48 49 void mlib_ImageXor80(mlib_u8 *dl, 50 mlib_s32 wid, 51 mlib_s32 hgt, 52 mlib_s32 str, 53 mlib_s32 nchan, 54 mlib_s32 cmask); 55 56 mlib_status mlib_conv2x2ext_d64(mlib_image *dst, 57 const mlib_image *src, 58 mlib_s32 dx_l, 59 mlib_s32 dx_r, 60 mlib_s32 dy_t, 61 mlib_s32 dy_b, 62 const mlib_d64 *kern, 63 mlib_s32 cmask); 64 65 mlib_status mlib_conv2x2ext_f32(mlib_image *dst, 66 const mlib_image *src, 67 mlib_s32 dx_l, 68 mlib_s32 dx_r, 69 mlib_s32 dy_t, 70 mlib_s32 dy_b, 71 const mlib_d64 *kern, 72 mlib_s32 cmask); 73 74 mlib_status mlib_conv2x2ext_s16(mlib_image *dst, 75 const mlib_image *src, 76 mlib_s32 dx_l, 77 mlib_s32 dx_r, 78 mlib_s32 dy_t, 79 mlib_s32 dy_b, 80 const mlib_s32 *kern, 81 mlib_s32 scale, 82 mlib_s32 cmask); 83 84 mlib_status mlib_conv2x2ext_s32(mlib_image *dst, 85 const mlib_image *src, 86 mlib_s32 dx_l, 87 mlib_s32 dx_r, 88 mlib_s32 dy_t, 89 mlib_s32 dy_b, 90 const mlib_s32 *kern, 91 mlib_s32 scale, 92 mlib_s32 cmask); 93 94 mlib_status mlib_conv2x2ext_u16(mlib_image *dst, 95 const mlib_image *src, 96 mlib_s32 dx_l, 97 mlib_s32 dx_r, 98 mlib_s32 dy_t, 99 mlib_s32 dy_b, 100 const mlib_s32 *kern, 101 mlib_s32 scale, 102 mlib_s32 cmask); 103 104 mlib_status mlib_conv2x2ext_u8(mlib_image *dst, 105 const mlib_image *src, 106 mlib_s32 dx_l, 107 mlib_s32 dx_r, 108 mlib_s32 dy_t, 109 mlib_s32 dy_b, 110 const mlib_s32 *kern, 111 mlib_s32 scale, 112 mlib_s32 cmask); 113 114 mlib_status mlib_conv2x2nw_d64(mlib_image *dst, 115 const mlib_image *src, 116 const mlib_d64 *kern, 117 mlib_s32 cmask); 118 119 mlib_status mlib_conv2x2nw_f32(mlib_image *dst, 120 const mlib_image *src, 121 const mlib_d64 *kern, 122 mlib_s32 cmask); 123 124 mlib_status mlib_conv2x2nw_s16(mlib_image *dst, 125 const mlib_image *src, 126 const mlib_s32 *kern, 127 mlib_s32 scale, 128 mlib_s32 cmask); 129 130 mlib_status mlib_conv2x2nw_s32(mlib_image *dst, 131 const mlib_image *src, 132 const mlib_s32 *kern, 133 mlib_s32 scale, 134 mlib_s32 cmask); 135 136 mlib_status mlib_conv2x2nw_u16(mlib_image *dst, 137 const mlib_image *src, 138 const mlib_s32 *kern, 139 mlib_s32 scale, 140 mlib_s32 cmask); 141 142 mlib_status mlib_conv2x2nw_u8(mlib_image *dst, 143 const mlib_image *src, 144 const mlib_s32 *kern, 145 mlib_s32 scale, 146 mlib_s32 cmask); 147 148 mlib_status mlib_conv3x3ext_bit(mlib_image *dst, 149 const mlib_image *src, 150 mlib_s32 dx_l, 151 mlib_s32 dx_r, 152 mlib_s32 dy_t, 153 mlib_s32 dy_b, 154 const mlib_s32 *kern, 155 mlib_s32 scale, 156 mlib_s32 cmask); 157 158 mlib_status mlib_conv3x3ext_d64(mlib_image *dst, 159 const mlib_image *src, 160 mlib_s32 dx_l, 161 mlib_s32 dx_r, 162 mlib_s32 dy_t, 163 mlib_s32 dy_b, 164 const mlib_d64 *kern, 165 mlib_s32 cmask); 166 167 mlib_status mlib_conv3x3ext_f32(mlib_image *dst, 168 const mlib_image *src, 169 mlib_s32 dx_l, 170 mlib_s32 dx_r, 171 mlib_s32 dy_t, 172 mlib_s32 dy_b, 173 const mlib_d64 *kern, 174 mlib_s32 cmask); 175 176 mlib_status mlib_conv3x3ext_s16(mlib_image *dst, 177 const mlib_image *src, 178 mlib_s32 dx_l, 179 mlib_s32 dx_r, 180 mlib_s32 dy_t, 181 mlib_s32 dy_b, 182 const mlib_s32 *kern, 183 mlib_s32 scale, 184 mlib_s32 cmask); 185 186 mlib_status mlib_conv3x3ext_s32(mlib_image *dst, 187 const mlib_image *src, 188 mlib_s32 dx_l, 189 mlib_s32 dx_r, 190 mlib_s32 dy_t, 191 mlib_s32 dy_b, 192 const mlib_s32 *kern, 193 mlib_s32 scale, 194 mlib_s32 cmask); 195 196 mlib_status mlib_conv3x3ext_u16(mlib_image *dst, 197 const mlib_image *src, 198 mlib_s32 dx_l, 199 mlib_s32 dx_r, 200 mlib_s32 dy_t, 201 mlib_s32 dy_b, 202 const mlib_s32 *kern, 203 mlib_s32 scale, 204 mlib_s32 cmask); 205 206 mlib_status mlib_conv3x3ext_u8(mlib_image *dst, 207 const mlib_image *src, 208 mlib_s32 dx_l, 209 mlib_s32 dx_r, 210 mlib_s32 dy_t, 211 mlib_s32 dy_b, 212 const mlib_s32 *kern, 213 mlib_s32 scale, 214 mlib_s32 cmask); 215 216 mlib_status mlib_conv3x3nw_bit(mlib_image *dst, 217 const mlib_image *src, 218 const mlib_s32 *kern, 219 mlib_s32 scale, 220 mlib_s32 cmask); 221 222 mlib_status mlib_conv3x3nw_d64(mlib_image *dst, 223 const mlib_image *src, 224 const mlib_d64 *kern, 225 mlib_s32 cmask); 226 227 mlib_status mlib_conv3x3nw_f32(mlib_image *dst, 228 const mlib_image *src, 229 const mlib_d64 *kern, 230 mlib_s32 cmask); 231 232 mlib_status mlib_conv3x3nw_s16(mlib_image *dst, 233 const mlib_image *src, 234 const mlib_s32 *kern, 235 mlib_s32 scale, 236 mlib_s32 cmask); 237 238 mlib_status mlib_conv3x3nw_s32(mlib_image *dst, 239 const mlib_image *src, 240 const mlib_s32 *kern, 241 mlib_s32 scale, 242 mlib_s32 cmask); 243 244 mlib_status mlib_conv3x3nw_u16(mlib_image *dst, 245 const mlib_image *src, 246 const mlib_s32 *kern, 247 mlib_s32 scale, 248 mlib_s32 cmask); 249 250 mlib_status mlib_conv3x3nw_u8(mlib_image *dst, 251 const mlib_image *src, 252 const mlib_s32 *kern, 253 mlib_s32 scale, 254 mlib_s32 cmask); 255 256 mlib_status mlib_conv4x4ext_d64(mlib_image *dst, 257 const mlib_image *src, 258 mlib_s32 dx_l, 259 mlib_s32 dx_r, 260 mlib_s32 dy_t, 261 mlib_s32 dy_b, 262 const mlib_d64 *kern, 263 mlib_s32 cmask); 264 265 mlib_status mlib_conv4x4ext_f32(mlib_image *dst, 266 const mlib_image *src, 267 mlib_s32 dx_l, 268 mlib_s32 dx_r, 269 mlib_s32 dy_t, 270 mlib_s32 dy_b, 271 const mlib_d64 *kern, 272 mlib_s32 cmask); 273 274 mlib_status mlib_conv4x4ext_s16(mlib_image *dst, 275 const mlib_image *src, 276 mlib_s32 dx_l, 277 mlib_s32 dx_r, 278 mlib_s32 dy_t, 279 mlib_s32 dy_b, 280 const mlib_s32 *kern, 281 mlib_s32 scale, 282 mlib_s32 cmask); 283 284 mlib_status mlib_conv4x4ext_s32(mlib_image *dst, 285 const mlib_image *src, 286 mlib_s32 dx_l, 287 mlib_s32 dx_r, 288 mlib_s32 dy_t, 289 mlib_s32 dy_b, 290 const mlib_s32 *kern, 291 mlib_s32 scale, 292 mlib_s32 cmask); 293 294 mlib_status mlib_conv4x4ext_u16(mlib_image *dst, 295 const mlib_image *src, 296 mlib_s32 dx_l, 297 mlib_s32 dx_r, 298 mlib_s32 dy_t, 299 mlib_s32 dy_b, 300 const mlib_s32 *kern, 301 mlib_s32 scale, 302 mlib_s32 cmask); 303 304 mlib_status mlib_conv4x4ext_u8(mlib_image *dst, 305 const mlib_image *src, 306 mlib_s32 dx_l, 307 mlib_s32 dx_r, 308 mlib_s32 dy_t, 309 mlib_s32 dy_b, 310 const mlib_s32 *kern, 311 mlib_s32 scale, 312 mlib_s32 cmask); 313 314 mlib_status mlib_conv4x4nw_d64(mlib_image *dst, 315 const mlib_image *src, 316 const mlib_d64 *kern, 317 mlib_s32 cmask); 318 319 mlib_status mlib_conv4x4nw_f32(mlib_image *dst, 320 const mlib_image *src, 321 const mlib_d64 *kern, 322 mlib_s32 cmask); 323 324 mlib_status mlib_conv4x4nw_s16(mlib_image *dst, 325 const mlib_image *src, 326 const mlib_s32 *kern, 327 mlib_s32 scale, 328 mlib_s32 cmask); 329 330 mlib_status mlib_conv4x4nw_s32(mlib_image *dst, 331 const mlib_image *src, 332 const mlib_s32 *kern, 333 mlib_s32 scale, 334 mlib_s32 cmask); 335 336 mlib_status mlib_conv4x4nw_u16(mlib_image *dst, 337 const mlib_image *src, 338 const mlib_s32 *kern, 339 mlib_s32 scale, 340 mlib_s32 cmask); 341 342 mlib_status mlib_conv4x4nw_u8(mlib_image *dst, 343 const mlib_image *src, 344 const mlib_s32 *kern, 345 mlib_s32 scale, 346 mlib_s32 cmask); 347 348 mlib_status mlib_conv5x5ext_d64(mlib_image *dst, 349 const mlib_image *src, 350 mlib_s32 dx_l, 351 mlib_s32 dx_r, 352 mlib_s32 dy_t, 353 mlib_s32 dy_b, 354 const mlib_d64 *kern, 355 mlib_s32 cmask); 356 357 mlib_status mlib_conv5x5ext_f32(mlib_image *dst, 358 const mlib_image *src, 359 mlib_s32 dx_l, 360 mlib_s32 dx_r, 361 mlib_s32 dy_t, 362 mlib_s32 dy_b, 363 const mlib_d64 *kern, 364 mlib_s32 cmask); 365 366 mlib_status mlib_conv5x5ext_s16(mlib_image *dst, 367 const mlib_image *src, 368 mlib_s32 dx_l, 369 mlib_s32 dx_r, 370 mlib_s32 dy_t, 371 mlib_s32 dy_b, 372 const mlib_s32 *kern, 373 mlib_s32 scale, 374 mlib_s32 cmask); 375 376 mlib_status mlib_conv5x5ext_s32(mlib_image *dst, 377 const mlib_image *src, 378 mlib_s32 dx_l, 379 mlib_s32 dx_r, 380 mlib_s32 dy_t, 381 mlib_s32 dy_b, 382 const mlib_s32 *kern, 383 mlib_s32 scale, 384 mlib_s32 cmask); 385 386 mlib_status mlib_conv5x5ext_u16(mlib_image *dst, 387 const mlib_image *src, 388 mlib_s32 dx_l, 389 mlib_s32 dx_r, 390 mlib_s32 dy_t, 391 mlib_s32 dy_b, 392 const mlib_s32 *kern, 393 mlib_s32 scale, 394 mlib_s32 cmask); 395 396 mlib_status mlib_conv5x5ext_u8(mlib_image *dst, 397 const mlib_image *src, 398 mlib_s32 dx_l, 399 mlib_s32 dx_r, 400 mlib_s32 dy_t, 401 mlib_s32 dy_b, 402 const mlib_s32 *kern, 403 mlib_s32 scale, 404 mlib_s32 cmask); 405 406 mlib_status mlib_conv5x5nw_d64(mlib_image *dst, 407 const mlib_image *src, 408 const mlib_d64 *kern, 409 mlib_s32 cmask); 410 411 mlib_status mlib_conv5x5nw_f32(mlib_image *dst, 412 const mlib_image *src, 413 const mlib_d64 *kern, 414 mlib_s32 cmask); 415 416 mlib_status mlib_conv5x5nw_s16(mlib_image *dst, 417 const mlib_image *src, 418 const mlib_s32 *kern, 419 mlib_s32 scale, 420 mlib_s32 cmask); 421 422 mlib_status mlib_conv5x5nw_s32(mlib_image *dst, 423 const mlib_image *src, 424 const mlib_s32 *kern, 425 mlib_s32 scale, 426 mlib_s32 cmask); 427 428 mlib_status mlib_conv5x5nw_u16(mlib_image *dst, 429 const mlib_image *src, 430 const mlib_s32 *kern, 431 mlib_s32 scale, 432 mlib_s32 cmask); 433 434 mlib_status mlib_conv5x5nw_u8(mlib_image *dst, 435 const mlib_image *src, 436 const mlib_s32 *kern, 437 mlib_s32 scale, 438 mlib_s32 cmask); 439 440 mlib_status mlib_conv7x7ext_s16(mlib_image *dst, 441 const mlib_image *src, 442 mlib_s32 dx_l, 443 mlib_s32 dx_r, 444 mlib_s32 dy_t, 445 mlib_s32 dy_b, 446 const mlib_s32 *kern, 447 mlib_s32 scale, 448 mlib_s32 cmask); 449 450 mlib_status mlib_conv7x7ext_s32(mlib_image *dst, 451 const mlib_image *src, 452 mlib_s32 dx_l, 453 mlib_s32 dx_r, 454 mlib_s32 dy_t, 455 mlib_s32 dy_b, 456 const mlib_s32 *kern, 457 mlib_s32 scale, 458 mlib_s32 cmask); 459 460 mlib_status mlib_conv7x7ext_u16(mlib_image *dst, 461 const mlib_image *src, 462 mlib_s32 dx_l, 463 mlib_s32 dx_r, 464 mlib_s32 dy_t, 465 mlib_s32 dy_b, 466 const mlib_s32 *kern, 467 mlib_s32 scale, 468 mlib_s32 cmask); 469 470 mlib_status mlib_conv7x7ext_u8(mlib_image *dst, 471 const mlib_image *src, 472 mlib_s32 dx_l, 473 mlib_s32 dx_r, 474 mlib_s32 dy_t, 475 mlib_s32 dy_b, 476 const mlib_s32 *kern, 477 mlib_s32 scale, 478 mlib_s32 cmask); 479 480 mlib_status mlib_conv7x7nw_s16(mlib_image *dst, 481 const mlib_image *src, 482 const mlib_s32 *kern, 483 mlib_s32 scale, 484 mlib_s32 cmask); 485 486 mlib_status mlib_conv7x7nw_s32(mlib_image *dst, 487 const mlib_image *src, 488 const mlib_s32 *kern, 489 mlib_s32 scale, 490 mlib_s32 cmask); 491 492 mlib_status mlib_conv7x7nw_u16(mlib_image *dst, 493 const mlib_image *src, 494 const mlib_s32 *kern, 495 mlib_s32 scale, 496 mlib_s32 cmask); 497 498 mlib_status mlib_conv7x7nw_u8(mlib_image *dst, 499 const mlib_image *src, 500 const mlib_s32 *kern, 501 mlib_s32 scale, 502 mlib_s32 cmask); 503 504 mlib_status mlib_convMxNext_s32(mlib_image *dst, 505 const mlib_image *src, 506 const mlib_s32 *kernel, 507 mlib_s32 m, 508 mlib_s32 n, 509 mlib_s32 dx_l, 510 mlib_s32 dx_r, 511 mlib_s32 dy_t, 512 mlib_s32 dy_b, 513 mlib_s32 scale, 514 mlib_s32 cmask); 515 516 mlib_status mlib_convMxNnw_d64(mlib_image *dst, 517 const mlib_image *src, 518 const mlib_d64 *ker, 519 mlib_s32 m, 520 mlib_s32 n, 521 mlib_s32 dm, 522 mlib_s32 dn, 523 mlib_s32 cmask); 524 525 mlib_status mlib_convMxNnw_f32(mlib_image *dst, 526 const mlib_image *src, 527 const mlib_d64 *ker, 528 mlib_s32 m, 529 mlib_s32 n, 530 mlib_s32 dm, 531 mlib_s32 dn, 532 mlib_s32 cmask); 533 534 mlib_status mlib_convMxNnw_s16(mlib_image *dst, 535 const mlib_image *src, 536 const mlib_s32 *kernel, 537 mlib_s32 m, 538 mlib_s32 n, 539 mlib_s32 dm, 540 mlib_s32 dn, 541 mlib_s32 scale, 542 mlib_s32 cmask); 543 544 mlib_status mlib_convMxNnw_s32(mlib_image *dst, 545 const mlib_image *src, 546 const mlib_s32 *kernel, 547 mlib_s32 m, 548 mlib_s32 n, 549 mlib_s32 dm, 550 mlib_s32 dn, 551 mlib_s32 scale, 552 mlib_s32 cmask); 553 554 mlib_status mlib_convMxNnw_u16(mlib_image *dst, 555 const mlib_image *src, 556 const mlib_s32 *kernel, 557 mlib_s32 m, 558 mlib_s32 n, 559 mlib_s32 dm, 560 mlib_s32 dn, 561 mlib_s32 scale, 562 mlib_s32 cmask); 563 564 mlib_s32 mlib_ImageConvVersion(mlib_s32 m, 565 mlib_s32 n, 566 mlib_s32 scale, 567 mlib_type type); 568 569 mlib_status mlib_ImageConvMxN_f(mlib_image *dst, 570 const mlib_image *src, 571 const void *kernel, 572 mlib_s32 m, 573 mlib_s32 n, 574 mlib_s32 dm, 575 mlib_s32 dn, 576 mlib_s32 scale, 577 mlib_s32 cmask, 578 mlib_edge edge); 579 580 mlib_status mlib_convMxNnw_u8(mlib_image *dst, 581 const mlib_image *src, 582 const mlib_s32 *kern, 583 mlib_s32 m, 584 mlib_s32 n, 585 mlib_s32 dm, 586 mlib_s32 dn, 587 mlib_s32 scale, 588 mlib_s32 cmask); 589 590 mlib_status mlib_convMxNext_u8(mlib_image *dst, 591 const mlib_image *src, 592 const mlib_s32 *kern, 593 mlib_s32 m, 594 mlib_s32 n, 595 mlib_s32 dx_l, 596 mlib_s32 dx_r, 597 mlib_s32 dy_t, 598 mlib_s32 dy_b, 599 mlib_s32 scale, 600 mlib_s32 cmask); 601 602 mlib_status mlib_convMxNext_s16(mlib_image *dst, 603 const mlib_image *src, 604 const mlib_s32 *kernel, 605 mlib_s32 m, 606 mlib_s32 n, 607 mlib_s32 dx_l, 608 mlib_s32 dx_r, 609 mlib_s32 dy_t, 610 mlib_s32 dy_b, 611 mlib_s32 scale, 612 mlib_s32 cmask); 613 614 mlib_status mlib_convMxNext_u16(mlib_image *dst, 615 const mlib_image *src, 616 const mlib_s32 *kernel, 617 mlib_s32 m, 618 mlib_s32 n, 619 mlib_s32 dx_l, 620 mlib_s32 dx_r, 621 mlib_s32 dy_t, 622 mlib_s32 dy_b, 623 mlib_s32 scale, 624 mlib_s32 cmask); 625 626 mlib_status mlib_convMxNext_f32(mlib_image *dst, 627 const mlib_image *src, 628 const mlib_d64 *kernel, 629 mlib_s32 m, 630 mlib_s32 n, 631 mlib_s32 dx_l, 632 mlib_s32 dx_r, 633 mlib_s32 dy_t, 634 mlib_s32 dy_b, 635 mlib_s32 cmask); 636 637 mlib_status mlib_convMxNext_d64(mlib_image *dst, 638 const mlib_image *src, 639 const mlib_d64 *kernel, 640 mlib_s32 m, 641 mlib_s32 n, 642 mlib_s32 dx_l, 643 mlib_s32 dx_r, 644 mlib_s32 dy_t, 645 mlib_s32 dy_b, 646 mlib_s32 cmask); 647 648 #ifdef __cplusplus 649 } 650 #endif /* __cplusplus */ 651 #endif /* __MLIB_IMAGECONV_H */