【倒车影像分流需求 二】- 根据接口写库
发布日期:2021-06-29 14:51:46
浏览次数:3
分类:技术文章
本文共 4798 字,大约阅读时间需要 15 分钟。
本需求系列文章:
- 《》
- 《》
- 《》
- 《》
- 《》
- 《》
- 《》
- 《》
- 《》
本章比较简单,根据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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 15时48分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
知乎:硬件和软件哪个吃香?
2019-04-29
中国深圳,600架无人机的盛典!
2019-04-29
干货分享 JVM 之第 3 篇 —— Java 内存结构相关
2019-04-29
干货分享 JVM 之第 5 篇 —— 类加载器
2019-04-29
干货分享 JVM 之第 6 篇 —— SpringBoot2.0 框架性能调优
2019-04-29
基于 Hystrix 高并发服务限流第 1 篇 —— 必须了解的相关概念
2019-04-29
基于 Hystrix 高并发服务限流第 2 篇 —— 服务隔离(线程池隔离、信号量隔离)
2019-04-29
基于 Hystrix 高并发服务限流第 3 篇 —— 服务熔断、服务降级
2019-04-29
基于 Hystrix 高并发服务限流第 5 篇 —— Hystrix 监控
2019-04-29
Eureka 如何快速的、优雅的停止某个微服务
2019-04-29
Eureka 实现安全认证
2019-04-29
Nginx 反向代理、负载均衡配置、Location正则表达式
2019-04-29
SpringBoot + WebSocket 实现前后端的收发消息
2019-04-29
SpringBoot 整合 JWT 实现统一认证
2019-04-29
SpringBoot 使用 CompletableFuture 实现非阻塞异步编程
2019-04-29
即刻就业:本科毕业如何快速高薪就业?
2019-04-29