【倒车影像分流需求 二】- 根据接口写库
发布日期:2021-06-29 14:51:46 浏览次数:2 分类:技术文章

本文共 4798 字,大约阅读时间需要 15 分钟。

本需求系列文章:

  1. 《》
  2. 《》
  3. 《》
  4. 《》
  5. 《》
  6. 《》
  7. 《》
  8. 《》
  9. 《》

本章比较简单,根据xxx提供的接口,先写一个空的框架,编译库出来

代码放在 /hardware/libhardware/modules/reverse/HwDmsdpCamera

1. dmsdp_camerahandler_server.cpp

/hardware/libhardware/modules/reverse/HwDmsdpCamera/dmsdp_camerahandler_server.cpp#include 
#include
#include
#include
#include
#include
#include
#include
#include "dmsdp_camera_handler.h"/** * DMSDP component will register send data back function pointer by this function */ int32_t RegisterSendDataCallback_func(const char* id, uint32_t idLen, const DMSDPSendBackDataCB cb){ return 0;} /** * open camera */ int32_t OpenCamera_func(const DMSDPCameraParam* param){ return 0;} /** * close camera by camera id */ int32_t CloseCamera_func(const char* id, uint32_t idLen){ return 0;} /** * update configs in running * camId: camera id * configs: configs need update * * supported updated configs, key for config key,value for config value,type for value data type: * key | value desc | value type * ------------------------------ * 1 | fps | int */ int32_t UpdateConfig_func(const char* id, uint32_t idLen, int32_t key, char* value, uint32_t valLen){ return 0;} /** * query camera capability */ int32_t GetCameraCapability_func(DMSDPCameraCapabilities** capabilities, uint32_t* num){ return 0;} /** * query camera capability string */ const char* GetCameraCapabilityString_func(uint32_t* len){ return 0;} /** * release * type: DMSDPCameraReleaseType */ void Release_func(int32_t type, void* ptr, uint32_t num){ } /** * reg listener * listener: DMSDPLinstener */ int32_t RegisterListener_func(const DMSDPListener* listener){ return 0;} /** * business control * cmd: command DMSDPBusinessControlCmd * para: parameter * length: parameter length */ int32_t BusinessControl_func(uint32_t cmd, void* inputPara, uint32_t inLen, void* outputPara, uint32_t outLen){ return 0;} DMSDPCameraHandler DMSDPCameraHandler_opt = { .RegisterSendDataCallback = RegisterSendDataCallback_func, .OpenCamera = OpenCamera_func, .CloseCamera = CloseCamera_func, .UpdateConfig = UpdateConfig_func, .GetCameraCapability = GetCameraCapability_func, .GetCameraCapabilityString = GetCameraCapabilityString_func, .Release = Release_func, .RegisterListener = RegisterListener_func, .BusinessControl = BusinessControl_func,};int32_t Send_Dmsdp_Data(void){ return 0;}/* * get camera handler interface */ int32_t DMSDPGetCameraHandler(DMSDPCameraHandler* cameraHandler){ cameraHandler = &DMSDPCameraHandler_opt; return 0;}

2. Android.mk 实现

@ /hardware/libhardware/modules/reverse/HwDmsdpCamera/Android.mkLOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= \	dmsdp_camerahandler_server.cppLOCAL_C_INCLUDES := \    $(LOCAL_PATH)/include \	$(LOCAL_PATH)/../reversing_video/reverse_video/LOCAL_MODULE := libdmsdpcamerahandlerLOCAL_MODULE_TAGS := optionalLOCAL_MULTILIB :=  bothLOCAL_CFLAGS += -Wno-writable-strings -Wno-array-bounds -Wno-unused-parameterinclude $(BUILD_SHARED_LIBRARY)

3. 编译so 库

根据系统环境,默认编译的 32位

ciellee@sh$ mmm ./hardware/libhardware/modules/reverse/HwDmsdpCamera/device/qcom/msm8953_32/msm8953_32.mk:26: "Build with 3.18 kernel."============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=8.1.0TARGET_PRODUCT=msm8953_32TARGET_BUILD_VARIANT=userdebugTARGET_BUILD_TYPE=releaseTARGET_ARCH=armTARGET_ARCH_VARIANT=armv7-a-neonTARGET_CPU_VARIANT=cortex-a53HOST_ARCH=x86_64HOST_2ND_ARCH=x86HOST_OS=linuxHOST_OS_EXTRA=Linux-4.15.0-29-generic-x86_64-with-Ubuntu-16.04-xenialHOST_CROSS_OS=windowsHOST_CROSS_ARCH=x86HOST_CROSS_2ND_ARCH=x86_64HOST_BUILD_TYPE=releaseBUILD_ID=OPM1.171019.026OUT_DIR=out============================================[2/2] bootstrap out/soong/.minibootstrap/build.ninja.in[1/1] out/soong/.bootstrap/bin/minibp out/soong/.bootstrap/build.ninja[1/1] out/soong/.bootstrap/bin/soong_build out/soong/build.ninjaNo need to regenerate ninja file[100% 1/1] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja[100% 7/7] build out/target/product/msm8953_32/obj/SHARED_LIBRARIES/libdmsdpcamerahandler_intermediates/libdmsdpcamerahandler.so.toc#### build completed successfully (30 seconds) ####

最终库文件位于:

ciellee@sh:~/work/code/CN220C_8950_0426$ find ./out/target/ -name libdmsdpcamerahandler.so./out/target/product/msm8953_32/symbols/system/lib/libdmsdpcamerahandler.so./out/target/product/msm8953_32/obj/SHARED_LIBRARIES/libdmsdpcamerahandler_intermediates/PACKED/libdmsdpcamerahandler.so./out/target/product/msm8953_32/obj/SHARED_LIBRARIES/libdmsdpcamerahandler_intermediates/LINKED/libdmsdpcamerahandler.so./out/target/product/msm8953_32/obj/SHARED_LIBRARIES/libdmsdpcamerahandler_intermediates/libdmsdpcamerahandler.so./out/target/product/msm8953_32/system/lib/libdmsdpcamerahandler.so

好,库编译好了,接下来我们就要开始正式编写共享内存代码了。

转载地址:https://ciellee.blog.csdn.net/article/details/105990561 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【倒车影像分流需求 三】- 获取Camera 数据 Camera_Shared_Memory 实现
下一篇:【倒车影像分流需求 一】- 需求分解 及 进程间通信共享内存原理

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月06日 02时19分37秒