88 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*
 | |
|  * Copyright(C) 2020. Huawei Technologies Co.,Ltd. All rights reserved.
 | |
|  *
 | |
|  * 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 DVPP_COMMON_DEVICE_H
 | |
| #define DVPP_COMMON_DEVICE_H
 | |
| 
 | |
| #include "Dvpp.h"
 | |
| #include "CommonDataType.h"
 | |
| #include "ErrorCode.h"
 | |
| 
 | |
| #include "acl/ops/acl_dvpp.h"
 | |
| 
 | |
| struct DvppPicDescData {
 | |
|     uint32_t width;
 | |
|     uint32_t height;
 | |
|     uint32_t widthStride;
 | |
|     uint32_t heightStride;
 | |
|     uint32_t bufferSize;
 | |
| };
 | |
| 
 | |
| struct DvppResizeInputMsg {
 | |
|     uint32_t inW;
 | |
|     uint32_t inH;
 | |
|     uint32_t outH;
 | |
|     uint32_t outW;
 | |
|     uint8_t *imgBuf;
 | |
|     uint8_t *outBuf;
 | |
| };
 | |
| 
 | |
| struct DvppCropInputMsg {
 | |
|     uint32_t inW;
 | |
|     uint32_t inH;
 | |
|     uint32_t outH;
 | |
|     uint32_t outW;
 | |
|     uint8_t *imgBuf;
 | |
|     uint8_t *outBuf;
 | |
|     CropRoiConfig roi;
 | |
| };
 | |
| 
 | |
| struct DvppJpegDecodeInputMsg {
 | |
|     uint32_t rawBufByteLength;
 | |
|     uint8_t *rawBuf;
 | |
|     uint8_t *decodedBuf;
 | |
|     uint32_t jpegWidth;
 | |
|     uint32_t jpegHeight;
 | |
| };
 | |
| class DvppCommonDevice {
 | |
| public:
 | |
|     DvppCommonDevice() {};
 | |
|     ~DvppCommonDevice() {};
 | |
| 
 | |
|     APP_ERROR Init();
 | |
|     APP_ERROR DeInit();
 | |
|     APP_ERROR VpcResize(DvppResizeInputMsg input);
 | |
|     APP_ERROR VpcResizeWithPadding(DvppResizeInputMsg input);
 | |
|     APP_ERROR VpcCrop(DvppCropInputMsg input);
 | |
|     APP_ERROR VpcMultiCrop(std::vector<DvppCropInputMsg> inputs);
 | |
|     APP_ERROR DvppJpegDecode(DvppJpegDecodeInputMsg &input);
 | |
|     static uint32_t GetBufferSize(uint32_t w, uint32_t h);
 | |
| 
 | |
| private:
 | |
|     IDVPPAPI *iDvppApi_;
 | |
|     struct JpegdIn jpegdIn_;
 | |
|     struct JpegdOut jpegdOut_;
 | |
|     struct dvppapi_ctl_msg dvppApiCtrlMsg_;
 | |
|     struct VpcUserImageConfigure imageConfigure_;
 | |
| 
 | |
|     void SetImageConfigure(VpcUserImageConfigure &imageConfigure, const uint32_t inWidthStride,
 | |
|         const uint32_t inHeightStride, uint8_t *&inBuffer);
 | |
|     void SetCropConfigure(VpcUserCropConfigure &cropArea, const uint32_t leftOffset, const uint32_t rightOffset,
 | |
|         const uint32_t upOffset, const uint32_t downOffset);
 | |
|     void SetRoiOutputConfigure(VpcUserRoiOutputConfigure *&outputConfigure, const uint32_t outWidthStride,
 | |
|         const uint32_t outHeightStride, uint8_t *&outBuffer);
 | |
| };
 | |
| #endif |