1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (C) 2022 Rockchip Electronics Co., Ltd. 3*4882a593Smuzhiyun * Authors: 4*4882a593Smuzhiyun * Cerf Yu <cerf.yu@rock-chips.com> 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Licensed under the Apache License, Version 2.0 (the "License"); 7*4882a593Smuzhiyun * you may not use this file except in compliance with the License. 8*4882a593Smuzhiyun * You may obtain a copy of the License at 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * http://www.apache.org/licenses/LICENSE-2.0 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Unless required by applicable law or agreed to in writing, software 13*4882a593Smuzhiyun * distributed under the License is distributed on an "AS IS" BASIS, 14*4882a593Smuzhiyun * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15*4882a593Smuzhiyun * See the License for the specific language governing permissions and 16*4882a593Smuzhiyun * limitations under the License. 17*4882a593Smuzhiyun */ 18*4882a593Smuzhiyun #ifndef _im2d_task_h_ 19*4882a593Smuzhiyun #define _im2d_task_h_ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #include "im2d_type.h" 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #ifdef __cplusplus 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /** 26*4882a593Smuzhiyun * Create an rga job 27*4882a593Smuzhiyun * 28*4882a593Smuzhiyun * @param flags 29*4882a593Smuzhiyun * Some configuration flags for this job 30*4882a593Smuzhiyun * 31*4882a593Smuzhiyun * @returns job handle. 32*4882a593Smuzhiyun */ 33*4882a593Smuzhiyun IM_API im_job_handle_t imbeginJob(uint64_t flags = 0); 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /** 36*4882a593Smuzhiyun * Submit and run an rga job 37*4882a593Smuzhiyun * 38*4882a593Smuzhiyun * @param job_handle 39*4882a593Smuzhiyun * This is the job handle that will be submitted. 40*4882a593Smuzhiyun * @param sync_mode 41*4882a593Smuzhiyun * run mode: 42*4882a593Smuzhiyun * IM_SYNC 43*4882a593Smuzhiyun * IM_ASYNC 44*4882a593Smuzhiyun * @param acquire_fence_fd 45*4882a593Smuzhiyun * @param release_fence_fd 46*4882a593Smuzhiyun * 47*4882a593Smuzhiyun * @returns success or else negative error code. 48*4882a593Smuzhiyun */ 49*4882a593Smuzhiyun IM_API IM_STATUS imendJob(im_job_handle_t job_handle, 50*4882a593Smuzhiyun int sync_mode = IM_SYNC, 51*4882a593Smuzhiyun int acquire_fence_fd = 0, int *release_fence_fd = NULL); 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun /** 54*4882a593Smuzhiyun * Cancel and delete an rga job 55*4882a593Smuzhiyun * 56*4882a593Smuzhiyun * @param job_handle 57*4882a593Smuzhiyun * This is the job handle that will be cancelled. 58*4882a593Smuzhiyun * 59*4882a593Smuzhiyun * @returns success or else negative error code. 60*4882a593Smuzhiyun */ 61*4882a593Smuzhiyun IM_API IM_STATUS imcancelJob(im_job_handle_t job_handle); 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /** 64*4882a593Smuzhiyun * Add copy task 65*4882a593Smuzhiyun * 66*4882a593Smuzhiyun * @param job_handle 67*4882a593Smuzhiyun * Insert the task into the job handle. 68*4882a593Smuzhiyun * @param src 69*4882a593Smuzhiyun * The input source image. 70*4882a593Smuzhiyun * @param dst 71*4882a593Smuzhiyun * The output destination image. 72*4882a593Smuzhiyun * 73*4882a593Smuzhiyun * @returns success or else negative error code. 74*4882a593Smuzhiyun */ 75*4882a593Smuzhiyun IM_API IM_STATUS imcopyTask(im_job_handle_t job_handle, const rga_buffer_t src, rga_buffer_t dst); 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun /** 78*4882a593Smuzhiyun * Add resize task 79*4882a593Smuzhiyun * 80*4882a593Smuzhiyun * @param job_handle 81*4882a593Smuzhiyun * Insert the task into the job handle. 82*4882a593Smuzhiyun * @param src 83*4882a593Smuzhiyun * The input source image. 84*4882a593Smuzhiyun * @param dst 85*4882a593Smuzhiyun * The output destination image. 86*4882a593Smuzhiyun * @param fx 87*4882a593Smuzhiyun * X-direction resize factor. 88*4882a593Smuzhiyun * @param fy 89*4882a593Smuzhiyun * X-direction resize factor. 90*4882a593Smuzhiyun * @param interpolation 91*4882a593Smuzhiyun * Interpolation formula(Only RGA1 support). 92*4882a593Smuzhiyun * 93*4882a593Smuzhiyun * @returns success or else negative error code. 94*4882a593Smuzhiyun */ 95*4882a593Smuzhiyun IM_API IM_STATUS imresizeTask(im_job_handle_t job_handle, 96*4882a593Smuzhiyun const rga_buffer_t src, rga_buffer_t dst, 97*4882a593Smuzhiyun double fx = 0, double fy = 0, 98*4882a593Smuzhiyun int interpolation = 0); 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /** 101*4882a593Smuzhiyun * Add crop task 102*4882a593Smuzhiyun * 103*4882a593Smuzhiyun * @param job_handle 104*4882a593Smuzhiyun * Insert the task into the job handle. 105*4882a593Smuzhiyun * @param src 106*4882a593Smuzhiyun * The input source image. 107*4882a593Smuzhiyun * @param dst 108*4882a593Smuzhiyun * The output destination image. 109*4882a593Smuzhiyun * @param rect 110*4882a593Smuzhiyun * The rectangle on the source image that needs to be cropped. 111*4882a593Smuzhiyun * 112*4882a593Smuzhiyun * @returns success or else negative error code. 113*4882a593Smuzhiyun */ 114*4882a593Smuzhiyun IM_API IM_STATUS imcropTask(im_job_handle_t job_handle, 115*4882a593Smuzhiyun const rga_buffer_t src, rga_buffer_t dst, im_rect rect); 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /** 118*4882a593Smuzhiyun * Add translate task 119*4882a593Smuzhiyun * 120*4882a593Smuzhiyun * @param job_handle 121*4882a593Smuzhiyun * Insert the task into the job handle. 122*4882a593Smuzhiyun * @param src 123*4882a593Smuzhiyun * The input source image. 124*4882a593Smuzhiyun * @param dst 125*4882a593Smuzhiyun * The output destination image. 126*4882a593Smuzhiyun * @param x 127*4882a593Smuzhiyun * Output the coordinates of the starting point in the X-direction of the destination image. 128*4882a593Smuzhiyun * @param y 129*4882a593Smuzhiyun * Output the coordinates of the starting point in the Y-direction of the destination image. 130*4882a593Smuzhiyun * 131*4882a593Smuzhiyun * @returns success or else negative error code. 132*4882a593Smuzhiyun */ 133*4882a593Smuzhiyun IM_API IM_STATUS imtranslateTask(im_job_handle_t job_handle, 134*4882a593Smuzhiyun const rga_buffer_t src, rga_buffer_t dst, int x, int y); 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun /** 137*4882a593Smuzhiyun * Add format convert task 138*4882a593Smuzhiyun * 139*4882a593Smuzhiyun * @param job_handle 140*4882a593Smuzhiyun * Insert the task into the job handle. 141*4882a593Smuzhiyun * @param src 142*4882a593Smuzhiyun * The input source image. 143*4882a593Smuzhiyun * @param dst 144*4882a593Smuzhiyun * The output destination image. 145*4882a593Smuzhiyun * @param sfmt 146*4882a593Smuzhiyun * The source image format. 147*4882a593Smuzhiyun * @param dfmt 148*4882a593Smuzhiyun * The destination image format. 149*4882a593Smuzhiyun * @param mode 150*4882a593Smuzhiyun * color space mode: 151*4882a593Smuzhiyun * IM_YUV_TO_RGB_BT601_LIMIT 152*4882a593Smuzhiyun * IM_YUV_TO_RGB_BT601_FULL 153*4882a593Smuzhiyun * IM_YUV_TO_RGB_BT709_LIMIT 154*4882a593Smuzhiyun * IM_RGB_TO_YUV_BT601_FULL 155*4882a593Smuzhiyun * IM_RGB_TO_YUV_BT601_LIMIT 156*4882a593Smuzhiyun * IM_RGB_TO_YUV_BT709_LIMIT 157*4882a593Smuzhiyun * 158*4882a593Smuzhiyun * @returns success or else negative error code. 159*4882a593Smuzhiyun */ 160*4882a593Smuzhiyun IM_API IM_STATUS imcvtcolorTask(im_job_handle_t job_handle, 161*4882a593Smuzhiyun rga_buffer_t src, rga_buffer_t dst, 162*4882a593Smuzhiyun int sfmt, int dfmt, int mode = IM_COLOR_SPACE_DEFAULT); 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun /** 165*4882a593Smuzhiyun * Add rotation task 166*4882a593Smuzhiyun * 167*4882a593Smuzhiyun * @param job_handle 168*4882a593Smuzhiyun * Insert the task into the job handle. 169*4882a593Smuzhiyun * @param src 170*4882a593Smuzhiyun * The input source image. 171*4882a593Smuzhiyun * @param dst 172*4882a593Smuzhiyun * The output destination image. 173*4882a593Smuzhiyun * @param rotation 174*4882a593Smuzhiyun * IM_HAL_TRANSFORM_ROT_90 175*4882a593Smuzhiyun * IM_HAL_TRANSFORM_ROT_180 176*4882a593Smuzhiyun * IM_HAL_TRANSFORM_ROT_270 177*4882a593Smuzhiyun * 178*4882a593Smuzhiyun * @returns success or else negative error code. 179*4882a593Smuzhiyun */ 180*4882a593Smuzhiyun IM_API IM_STATUS imrotateTask(im_job_handle_t job_handle, 181*4882a593Smuzhiyun const rga_buffer_t src, rga_buffer_t dst, int rotation); 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun /** 184*4882a593Smuzhiyun * Add flip task 185*4882a593Smuzhiyun * 186*4882a593Smuzhiyun * @param job_handle 187*4882a593Smuzhiyun * Insert the task into the job handle. 188*4882a593Smuzhiyun * @param src 189*4882a593Smuzhiyun * The input source image. 190*4882a593Smuzhiyun * @param dst 191*4882a593Smuzhiyun * The output destination image. 192*4882a593Smuzhiyun * @param mode 193*4882a593Smuzhiyun * IM_HAL_TRANSFORM_FLIP_H 194*4882a593Smuzhiyun * IM_HAL_TRANSFORM_FLIP_V 195*4882a593Smuzhiyun * 196*4882a593Smuzhiyun * @returns success or else negative error code. 197*4882a593Smuzhiyun */ 198*4882a593Smuzhiyun IM_API IM_STATUS imflipTask(im_job_handle_t job_handle, 199*4882a593Smuzhiyun const rga_buffer_t src, rga_buffer_t dst, int mode); 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun /** 202*4882a593Smuzhiyun * Add blend(SRC + DST -> DST) task 203*4882a593Smuzhiyun * 204*4882a593Smuzhiyun * @param job_handle 205*4882a593Smuzhiyun * Insert the task into the job handle. 206*4882a593Smuzhiyun * @param fg_image 207*4882a593Smuzhiyun * The foreground image. 208*4882a593Smuzhiyun * @param bg_image 209*4882a593Smuzhiyun * The background image, which is also the output destination image. 210*4882a593Smuzhiyun * @param mode 211*4882a593Smuzhiyun * Port-Duff mode: 212*4882a593Smuzhiyun * IM_ALPHA_BLEND_SRC 213*4882a593Smuzhiyun * IM_ALPHA_BLEND_DST 214*4882a593Smuzhiyun * IM_ALPHA_BLEND_SRC_OVER 215*4882a593Smuzhiyun * IM_ALPHA_BLEND_DST_OVER 216*4882a593Smuzhiyun * 217*4882a593Smuzhiyun * @returns success or else negative error code. 218*4882a593Smuzhiyun */ 219*4882a593Smuzhiyun IM_API IM_STATUS imblendTask(im_job_handle_t job_handle, 220*4882a593Smuzhiyun const rga_buffer_t fg_image, rga_buffer_t bg_image, 221*4882a593Smuzhiyun int mode = IM_ALPHA_BLEND_SRC_OVER); 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun /** 224*4882a593Smuzhiyun * Add composite(SRCA + SRCB -> DST) task 225*4882a593Smuzhiyun * 226*4882a593Smuzhiyun * @param job_handle 227*4882a593Smuzhiyun * Insert the task into the job handle. 228*4882a593Smuzhiyun * @param fg_image 229*4882a593Smuzhiyun * The foreground image. 230*4882a593Smuzhiyun * @param bg_image 231*4882a593Smuzhiyun * The background image. 232*4882a593Smuzhiyun * @param output_image 233*4882a593Smuzhiyun * The output destination image. 234*4882a593Smuzhiyun * @param mode 235*4882a593Smuzhiyun * Port-Duff mode: 236*4882a593Smuzhiyun * IM_ALPHA_BLEND_SRC 237*4882a593Smuzhiyun * IM_ALPHA_BLEND_DST 238*4882a593Smuzhiyun * IM_ALPHA_BLEND_SRC_OVER 239*4882a593Smuzhiyun * IM_ALPHA_BLEND_DST_OVER 240*4882a593Smuzhiyun * 241*4882a593Smuzhiyun * @returns success or else negative error code. 242*4882a593Smuzhiyun */ 243*4882a593Smuzhiyun IM_API IM_STATUS imcompositeTask(im_job_handle_t job_handle, 244*4882a593Smuzhiyun const rga_buffer_t fg_image, const rga_buffer_t bg_image, 245*4882a593Smuzhiyun rga_buffer_t output_image, 246*4882a593Smuzhiyun int mode = IM_ALPHA_BLEND_SRC_OVER); 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun /** 249*4882a593Smuzhiyun * Add color key task 250*4882a593Smuzhiyun * 251*4882a593Smuzhiyun * @param job_handle 252*4882a593Smuzhiyun * Insert the task into the job handle. 253*4882a593Smuzhiyun * @param fg_image 254*4882a593Smuzhiyun * The foreground image. 255*4882a593Smuzhiyun * @param bg_image 256*4882a593Smuzhiyun * The background image, which is also the output destination image. 257*4882a593Smuzhiyun * @param colorkey_range 258*4882a593Smuzhiyun * The range of color key. 259*4882a593Smuzhiyun * 260*4882a593Smuzhiyun * @returns success or else negative error code. 261*4882a593Smuzhiyun */ 262*4882a593Smuzhiyun IM_API IM_STATUS imcolorkeyTask(im_job_handle_t job_handle, 263*4882a593Smuzhiyun const rga_buffer_t fg_image, rga_buffer_t bg_image, 264*4882a593Smuzhiyun im_colorkey_range range, int mode = IM_ALPHA_COLORKEY_NORMAL); 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun /** 267*4882a593Smuzhiyun * Add OSD task 268*4882a593Smuzhiyun * 269*4882a593Smuzhiyun * @param job_handle 270*4882a593Smuzhiyun * Insert the task into the job handle. 271*4882a593Smuzhiyun * @param osd 272*4882a593Smuzhiyun * The osd text block. 273*4882a593Smuzhiyun * @param dst 274*4882a593Smuzhiyun * The background image. 275*4882a593Smuzhiyun * @param osd_rect 276*4882a593Smuzhiyun * The rectangle on the source image that needs to be OSD. 277*4882a593Smuzhiyun * @param osd_config 278*4882a593Smuzhiyun * osd mode configuration. 279*4882a593Smuzhiyun * 280*4882a593Smuzhiyun * @returns success or else negative error code. 281*4882a593Smuzhiyun */ 282*4882a593Smuzhiyun IM_API IM_STATUS imosdTask(im_job_handle_t job_handle, 283*4882a593Smuzhiyun const rga_buffer_t osd,const rga_buffer_t bg_image, 284*4882a593Smuzhiyun const im_rect osd_rect, im_osd_t *osd_config); 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun /** 287*4882a593Smuzhiyun * Add nn quantize task 288*4882a593Smuzhiyun * 289*4882a593Smuzhiyun * @param job_handle 290*4882a593Smuzhiyun * Insert the task into the job handle. 291*4882a593Smuzhiyun * @param src 292*4882a593Smuzhiyun * The input source image. 293*4882a593Smuzhiyun * @param dst 294*4882a593Smuzhiyun * The output destination image. 295*4882a593Smuzhiyun * @param nninfo 296*4882a593Smuzhiyun * nn configuration 297*4882a593Smuzhiyun * 298*4882a593Smuzhiyun * @returns success or else negative error code. 299*4882a593Smuzhiyun */ 300*4882a593Smuzhiyun IM_API IM_STATUS imquantizeTask(im_job_handle_t job_handle, 301*4882a593Smuzhiyun const rga_buffer_t src, rga_buffer_t dst, im_nn_t nn_info); 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun /** 304*4882a593Smuzhiyun * Add ROP task 305*4882a593Smuzhiyun * 306*4882a593Smuzhiyun * @param job_handle 307*4882a593Smuzhiyun * Insert the task into the job handle. 308*4882a593Smuzhiyun * @param src 309*4882a593Smuzhiyun * The input source image. 310*4882a593Smuzhiyun * @param dst 311*4882a593Smuzhiyun * The output destination image. 312*4882a593Smuzhiyun * @param rop_code 313*4882a593Smuzhiyun * The ROP opcode. 314*4882a593Smuzhiyun * 315*4882a593Smuzhiyun * @returns success or else negative error code. 316*4882a593Smuzhiyun */ 317*4882a593Smuzhiyun IM_API IM_STATUS imropTask(im_job_handle_t job_handle, 318*4882a593Smuzhiyun const rga_buffer_t src, rga_buffer_t dst, int rop_code); 319*4882a593Smuzhiyun 320*4882a593Smuzhiyun /** 321*4882a593Smuzhiyun * Add color fill task 322*4882a593Smuzhiyun * 323*4882a593Smuzhiyun * @param job_handle 324*4882a593Smuzhiyun * Insert the task into the job handle. 325*4882a593Smuzhiyun * @param dst 326*4882a593Smuzhiyun * The output destination image. 327*4882a593Smuzhiyun * @param rect 328*4882a593Smuzhiyun * The rectangle on the source image that needs to be filled with color. 329*4882a593Smuzhiyun * @param color 330*4882a593Smuzhiyun * The fill color value. 331*4882a593Smuzhiyun * 332*4882a593Smuzhiyun * @returns success or else negative error code. 333*4882a593Smuzhiyun */ 334*4882a593Smuzhiyun IM_API IM_STATUS imfillTask(im_job_handle_t job_handle, rga_buffer_t dst, im_rect rect, uint32_t color); 335*4882a593Smuzhiyun 336*4882a593Smuzhiyun /** 337*4882a593Smuzhiyun * Add color fill task array 338*4882a593Smuzhiyun * 339*4882a593Smuzhiyun * @param job_handle 340*4882a593Smuzhiyun * Insert the task into the job handle. 341*4882a593Smuzhiyun * @param dst 342*4882a593Smuzhiyun * The output destination image. 343*4882a593Smuzhiyun * @param rect_array 344*4882a593Smuzhiyun * The rectangle arrays on the source image that needs to be filled with color. 345*4882a593Smuzhiyun * @param array_size 346*4882a593Smuzhiyun * The size of rectangular area arrays. 347*4882a593Smuzhiyun * @param color 348*4882a593Smuzhiyun * The fill color value. 349*4882a593Smuzhiyun * 350*4882a593Smuzhiyun * @returns success or else negative error code. 351*4882a593Smuzhiyun */ 352*4882a593Smuzhiyun IM_API IM_STATUS imfillTaskArray(im_job_handle_t job_handle, 353*4882a593Smuzhiyun rga_buffer_t dst, 354*4882a593Smuzhiyun im_rect *rect_array, int array_size, uint32_t color); 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun /** 357*4882a593Smuzhiyun * Add fill rectangle task 358*4882a593Smuzhiyun * 359*4882a593Smuzhiyun * @param job_handle 360*4882a593Smuzhiyun * Insert the task into the job handle. 361*4882a593Smuzhiyun * @param dst 362*4882a593Smuzhiyun * The output destination image. 363*4882a593Smuzhiyun * @param rect 364*4882a593Smuzhiyun * The rectangle on the source image that needs to be filled with color. 365*4882a593Smuzhiyun * @param color 366*4882a593Smuzhiyun * The fill color value. 367*4882a593Smuzhiyun * @param thickness 368*4882a593Smuzhiyun * Thickness of lines that make up the rectangle. Negative values, like -1, 369*4882a593Smuzhiyun * mean that the function has to draw a filled rectangle. 370*4882a593Smuzhiyun * 371*4882a593Smuzhiyun * @returns success or else negative error code. 372*4882a593Smuzhiyun */ 373*4882a593Smuzhiyun IM_API IM_STATUS imrectangleTask(im_job_handle_t job_handle, 374*4882a593Smuzhiyun rga_buffer_t dst, 375*4882a593Smuzhiyun im_rect rect, 376*4882a593Smuzhiyun uint32_t color, int thickness); 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun /** 379*4882a593Smuzhiyun * Add fill rectangle task array 380*4882a593Smuzhiyun * 381*4882a593Smuzhiyun * @param job_handle 382*4882a593Smuzhiyun * Insert the task into the job handle. 383*4882a593Smuzhiyun * @param dst 384*4882a593Smuzhiyun * The output destination image. 385*4882a593Smuzhiyun * @param rect_array 386*4882a593Smuzhiyun * The rectangle arrays on the source image that needs to be filled with color. 387*4882a593Smuzhiyun * @param array_size 388*4882a593Smuzhiyun * The size of rectangular area arrays. 389*4882a593Smuzhiyun * @param color 390*4882a593Smuzhiyun * The fill color value. 391*4882a593Smuzhiyun * @param thickness 392*4882a593Smuzhiyun * Thickness of lines that make up the rectangle. Negative values, like -1, 393*4882a593Smuzhiyun * mean that the function has to draw a filled rectangle. 394*4882a593Smuzhiyun * 395*4882a593Smuzhiyun * @returns success or else negative error code. 396*4882a593Smuzhiyun */ 397*4882a593Smuzhiyun IM_API IM_STATUS imrectangleTaskArray(im_job_handle_t job_handle, 398*4882a593Smuzhiyun rga_buffer_t dst, 399*4882a593Smuzhiyun im_rect *rect_array, int array_size, 400*4882a593Smuzhiyun uint32_t color, int thickness); 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun /** 403*4882a593Smuzhiyun * Add mosaic task 404*4882a593Smuzhiyun * 405*4882a593Smuzhiyun * @param job_handle 406*4882a593Smuzhiyun * Insert the task into the job handle. 407*4882a593Smuzhiyun * @param image 408*4882a593Smuzhiyun * The output destination image. 409*4882a593Smuzhiyun * @param rect 410*4882a593Smuzhiyun * The rectangle on the source image that needs to be mosaicked. 411*4882a593Smuzhiyun * @param mosaic_mode 412*4882a593Smuzhiyun * mosaic block width configuration: 413*4882a593Smuzhiyun * IM_MOSAIC_8 414*4882a593Smuzhiyun * IM_MOSAIC_16 415*4882a593Smuzhiyun * IM_MOSAIC_32 416*4882a593Smuzhiyun * IM_MOSAIC_64 417*4882a593Smuzhiyun * IM_MOSAIC_128 418*4882a593Smuzhiyun * 419*4882a593Smuzhiyun * @returns success or else negative error code. 420*4882a593Smuzhiyun */ 421*4882a593Smuzhiyun IM_API IM_STATUS immosaicTask(im_job_handle_t job_handle, 422*4882a593Smuzhiyun const rga_buffer_t image, im_rect rect, int mosaic_mode); 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun /** 425*4882a593Smuzhiyun * Add mosaic task 426*4882a593Smuzhiyun * 427*4882a593Smuzhiyun * @param job_handle 428*4882a593Smuzhiyun * Insert the task into the job handle. 429*4882a593Smuzhiyun * @param image 430*4882a593Smuzhiyun * The output destination image. 431*4882a593Smuzhiyun * @param rect_array 432*4882a593Smuzhiyun * The rectangle arrays on the source image that needs to be filled with color. 433*4882a593Smuzhiyun * @param array_size 434*4882a593Smuzhiyun * The size of rectangular area arrays. 435*4882a593Smuzhiyun * @param mosaic_mode 436*4882a593Smuzhiyun * mosaic block width configuration: 437*4882a593Smuzhiyun * IM_MOSAIC_8 438*4882a593Smuzhiyun * IM_MOSAIC_16 439*4882a593Smuzhiyun * IM_MOSAIC_32 440*4882a593Smuzhiyun * IM_MOSAIC_64 441*4882a593Smuzhiyun * IM_MOSAIC_128 442*4882a593Smuzhiyun * 443*4882a593Smuzhiyun * @returns success or else negative error code. 444*4882a593Smuzhiyun */ 445*4882a593Smuzhiyun IM_API IM_STATUS immosaicTaskArray(im_job_handle_t job_handle, 446*4882a593Smuzhiyun const rga_buffer_t image, 447*4882a593Smuzhiyun im_rect *rect_array, int array_size, int mosaic_mode); 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun /** 450*4882a593Smuzhiyun * Add palette task 451*4882a593Smuzhiyun * 452*4882a593Smuzhiyun * @param job_handle 453*4882a593Smuzhiyun * Insert the task into the job handle. 454*4882a593Smuzhiyun * @param src 455*4882a593Smuzhiyun * The input source image. 456*4882a593Smuzhiyun * @param dst 457*4882a593Smuzhiyun * The output destination image. 458*4882a593Smuzhiyun * @param lut 459*4882a593Smuzhiyun * The LUT table. 460*4882a593Smuzhiyun * 461*4882a593Smuzhiyun * @returns success or else negative error code. 462*4882a593Smuzhiyun */ 463*4882a593Smuzhiyun IM_API IM_STATUS impaletteTask(im_job_handle_t job_handle, 464*4882a593Smuzhiyun rga_buffer_t src, rga_buffer_t dst, rga_buffer_t lut); 465*4882a593Smuzhiyun 466*4882a593Smuzhiyun /** 467*4882a593Smuzhiyun * Add process task 468*4882a593Smuzhiyun * 469*4882a593Smuzhiyun * @param job_handle 470*4882a593Smuzhiyun * Insert the task into the job handle. 471*4882a593Smuzhiyun * @param src 472*4882a593Smuzhiyun * The input source image and is also the foreground image in blend. 473*4882a593Smuzhiyun * @param dst 474*4882a593Smuzhiyun * The output destination image and is also the foreground image in blend. 475*4882a593Smuzhiyun * @param pat 476*4882a593Smuzhiyun * The foreground image, or a LUT table. 477*4882a593Smuzhiyun * @param srect 478*4882a593Smuzhiyun * The rectangle on the src channel image that needs to be processed. 479*4882a593Smuzhiyun * @param drect 480*4882a593Smuzhiyun * The rectangle on the dst channel image that needs to be processed. 481*4882a593Smuzhiyun * @param prect 482*4882a593Smuzhiyun * The rectangle on the pat channel image that needs to be processed. 483*4882a593Smuzhiyun * @param opt 484*4882a593Smuzhiyun * The image processing options configuration. 485*4882a593Smuzhiyun * @param usage 486*4882a593Smuzhiyun * The image processing usage. 487*4882a593Smuzhiyun * 488*4882a593Smuzhiyun * @returns success or else negative error code. 489*4882a593Smuzhiyun */ 490*4882a593Smuzhiyun IM_API IM_STATUS improcessTask(im_job_handle_t job_handle, 491*4882a593Smuzhiyun rga_buffer_t src, rga_buffer_t dst, rga_buffer_t pat, 492*4882a593Smuzhiyun im_rect srect, im_rect drect, im_rect prect, 493*4882a593Smuzhiyun im_opt_t *opt_ptr, int usage); 494*4882a593Smuzhiyun 495*4882a593Smuzhiyun #endif /* #ifdef __cplusplus */ 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun #endif /* #ifndef _im2d_task_h_ */ 498