/** * Copyright 2020 Huawei Technologies Co., Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ACL_STUB_INC_ACL_DVPP_H #define ACL_STUB_INC_ACL_DVPP_H #include #include "acl/acl.h" #include "acl/acl_base.h" typedef struct acldvppPicDesc acldvppPicDesc; typedef struct acldvppRoiConfig acldvppRoiConfig; typedef struct acldvppResizeConfig acldvppResizeConfig; typedef struct acldvppChannelDesc acldvppChannelDesc; typedef struct acldvppStreamDesc acldvppStreamDesc; typedef struct acldvppBatchPicDesc acldvppBatchPicDesc; enum acldvppPixelFormat { PIXEL_FORMAT_YUV_400 = 0, PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YVU PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 3, // YUV PIXEL_FORMAT_YVU_SEMIPLANAR_422 = 4, // YVU PIXEL_FORMAT_YUV_SEMIPLANAR_444 = 5, // YUV PIXEL_FORMAT_YVU_SEMIPLANAR_444 = 6, // YVU }; enum acldvppStreamFormat { H265_MAIN_LEVEL = 0, H254_BASELINE_LEVEL = 1, H254_MAIN_LEVEL, H254_HIGH_LEVEL, }; enum acldvppChannelMode { DVPP_CHNMODE_VPC = 1, DVPP_CHNMODE_JPEGD = 2, DVPP_CHNMODE_JPEGE = 4 }; aclError acldvppMalloc(void **devPtr, size_t size); aclError acldvppFree(void *devPtr); acldvppChannelDesc *acldvppCreateChannelDesc(); aclError acldvppDestroyChannelDesc(acldvppChannelDesc *channelDesc); acldvppPicDesc *acldvppCreatePicDesc(); aclError acldvppDestroyPicDesc(acldvppPicDesc *picDesc); aclError acldvppSetPicDescSize(acldvppPicDesc *picDesc, uint32_t size); aclError acldvppSetPicDescFormat(acldvppPicDesc *picDesc, acldvppPixelFormat format); aclError acldvppSetPicDescWidth(acldvppPicDesc *picDesc, uint32_t width); aclError acldvppSetPicDescHeight(acldvppPicDesc *picDesc, uint32_t height); aclError acldvppSetPicDescData(acldvppPicDesc *picDesc, void *dataDev); aclError acldvppSetPicDescWidthStride(acldvppPicDesc *picDesc, uint32_t widthStride); aclError acldvppSetPicDescHeightStride(acldvppPicDesc *picDesc, uint32_t heightStride); aclError acldvppSetPicDescRetCode(acldvppPicDesc *picDesc, uint32_t retCode); uint32_t acldvppGetPicDescSize(acldvppPicDesc *picDesc); acldvppPixelFormat acldvppGetPicDescFormat(acldvppPicDesc *picDesc); uint32_t acldvppGetPicDescWidth(acldvppPicDesc *picDesc); uint32_t acldvppGetPicDescHeight(acldvppPicDesc *picDesc); void *acldvppGetPicDescData(acldvppPicDesc *picDesc); uint32_t acldvppGetPicDescWidthStride(acldvppPicDesc *picDesc); uint32_t acldvppGetPicDescHeightStride(acldvppPicDesc *picDesc); uint32_t acldvppGetPicDescRetCode(acldvppPicDesc *picDesc); acldvppRoiConfig *acldvppCreateRoiConfig(uint32_t left, uint32_t right, uint32_t top, uint32_t bottom); aclError acldvppDestroyRoiConfig(acldvppRoiConfig *roiConfig); aclError acldvppSetRoiConfigLeft(acldvppRoiConfig *roiConfig, uint32_t left); aclError acldvppSetRoiConfigRight(acldvppRoiConfig *roiConfig, uint32_t right); aclError acldvppSetRoiConfigTop(acldvppRoiConfig *roiConfig, uint32_t top); aclError acldvppSetRoiConfigBottom(acldvppRoiConfig *roiConfig, uint32_t bottom); aclError acldvppSetRoiConfig(acldvppRoiConfig *roiConfig, uint32_t left, uint32_t right, uint32_t top, uint32_t bottom); acldvppResizeConfig *acldvppCreateResizeConfig(); aclError acldvppDestroyResizeConfig(acldvppResizeConfig *resizeConfig); aclError acldvppJpegPredictDecSize(const void *data, uint32_t dataSize, acldvppPixelFormat ouputPixelFormat, uint32_t *decSize); aclError acldvppCreateChannel(acldvppChannelDesc *channelDesc); aclError acldvppDestroyChannel(acldvppChannelDesc *channelDesc); aclError acldvppVpcResizeAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppResizeConfig *resizeConfig, aclrtStream stream); aclError acldvppVpcCropAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, aclrtStream stream); aclError acldvppVpcCropAndPasteAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, acldvppRoiConfig *pasteArea, aclrtStream stream); aclError acldvppVpcBatchCropAsync(acldvppChannelDesc *channelDesc, acldvppBatchPicDesc *srcBatchDesc, uint32_t *roiNums, uint32_t size, acldvppBatchPicDesc *dstBatchDesc, acldvppRoiConfig *cropAreas[], aclrtStream stream); aclError acldvppJpegDecodeAsync(acldvppChannelDesc *channelDesc, const void *data, uint32_t size, acldvppPicDesc *outputDesc, aclrtStream stream); acldvppBatchPicDesc *acldvppCreateBatchPicDesc(uint32_t batchSize); acldvppPicDesc *acldvppGetPicDesc(acldvppBatchPicDesc *batchPicDesc, uint32_t index); aclError acldvppDestroyBatchPicDesc(acldvppBatchPicDesc *batchPicDesc); #endif // ACL_STUB_INC_ACL_DVPP_H