1 /* 2 * Copyright 2023 Shenzhen Kaihong DID Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef CODEC_UTIL_H 17 #define CODEC_UTIL_H 18 19 #include <list> 20 #include <map> 21 #include <securec.h> 22 #include "hdf_log.h" 23 #include <OMX_Component.h> 24 class CodecUtil { 25 public: 26 template <typename T> InitParam(T & param)27 int32_t InitParam(T ¶m) 28 { 29 auto ret = memset_s(¶m, sizeof(param), 0x0, sizeof(param)); 30 if (ret != EOK) { 31 HDF_LOGE("%{public}s error, memset_s ret [%{public}d", __func__, ret); 32 return HDF_FAILURE; 33 } 34 param.nSize = sizeof(param); 35 param.nVersion.s.nVersionMajor = 1; // mVersion.s.nVersionMajor; 36 return HDF_SUCCESS; 37 } 38 39 template <typename T> InitParamInOhos(T & param)40 int32_t InitParamInOhos(T ¶m) 41 { 42 auto ret = memset_s(¶m, sizeof(param), 0x0, sizeof(param)); 43 if (ret != EOK) { 44 HDF_LOGE("%{public}s error, memset_s ret [%{public}d", __func__, ret); 45 return HDF_FAILURE; 46 } 47 param.size = sizeof(param); 48 param.version.s.nVersionMajor = 1; // mVersion.s.nVersionMajor; 49 return HDF_SUCCESS; 50 } 51 52 template <typename T> ObjectToVector(T & param,std::vector<int8_t> & vec)53 void ObjectToVector(T ¶m, std::vector<int8_t> &vec) 54 { 55 vec.clear(); 56 int8_t *paramPointer = (int8_t *)¶m; 57 vec.insert(vec.end(), paramPointer, paramPointer + sizeof(param)); 58 } 59 60 template <typename T> VectorToObject(std::vector<int8_t> & vec,T & param)61 int32_t VectorToObject(std::vector<int8_t> &vec, T ¶m) 62 { 63 auto ret = memcpy_s(¶m, sizeof(param), vec.data(), vec.size()); 64 if (ret != EOK) { 65 HDF_LOGE("%{public}s error, memset_s ret [%{public}d", __func__, ret); 66 return HDF_FAILURE; 67 } 68 vec.clear(); 69 return HDF_SUCCESS; 70 } 71 setParmValue(OMX_PARAM_PORTDEFINITIONTYPE & param,uint32_t width,uint32_t height,uint32_t stride)72 void setParmValue(OMX_PARAM_PORTDEFINITIONTYPE ¶m, uint32_t width, uint32_t height, uint32_t stride) 73 { 74 param.format.video.nFrameWidth = width; 75 param.format.video.nFrameHeight = height; 76 param.format.video.nStride = stride; 77 param.format.video.nSliceHeight = height; 78 } 79 }; 80 #endif /* CODEC_UTIL_H */ 81