本文使用的Hexagon_SDK版本为3.5.4,设备芯片型号为sm8250。
概述
注意: 本样例适用于sm8250/sm7250/sm8350。 对于其他目标如msm8998, sdm660, sdm485, sm8150, sm7150, sm6125等。请参阅Example_legacy.html。 相机流的样例为hvx_app_add_constant,可以在Hexagon_SDK目录下找到。这个简单的样例展示了开发人员如何使用相机流框架提供的实用程序来开发用于拜耳像素数据处理的相机流样例。 在设备上运行样例之前,请确保已准备好Hexagon_SDK运行依赖关系。
目的
本样例的目标是
- 演示如何使用相机流框架提供的实用程序
- 为开发人员提供编程模型。
- 展示相机流通常处理的不同用例
- 使用这些样例作为参考,开发人员可以用他们自己的代码替换处理部分,并快速实现他们自己的摄像机流用例。
add_constant样例展示了应用程序如何将运行时参数从OEM插件传递到QDSP6 lib,以及应用程序如何在Android和DSP之间传输和访问缓冲区。
编译样例
构建hvx_add_constant样例的步骤如下,这同样也适用于其他相机流的例子。
编译OEM插件
通过windows系统命令行进入<sdk_root>\examples\camera_streaming\hvx_add_constant_stub文件夹,<sdk_root>为Hexagon_SDK的安装目录,在我的电脑上为“D:\Hexagon_SDK\3.5.4”,各位根据自己的实际情况,进行调整。 注:本文默认各位读者已经准备好了Hexagon_SDK的运行环境,即已经运行了setup_sdk_env.cmd脚本。 然后运行以下命令进行编译
make tree V=android_Release sm8250=1
此文件夹下的android_Release\ship文件夹下将出现libmmcamera_hvx_add_constant.so文件。
编译QDSP6库
同样进入到<sdk_root>\examples\camera_streaming\hvx_add_constant文件夹,然后执行以下编译命令:
make tree V=hexagon_Release_dynamic_toolv83_v66 sm8250=1 VERBOSE=1
注意,make命令中的“tree”对于构建指定变体(hexon_releaseg)的所有样例依赖关系是必要的。VERBOSE=1是一个可选标志,用于显示make及其包含的模拟测试结果的详细信息。对于相同变体的示例的后续重新构建可以省略如下所示的“tree”。
make V=hexagon_Release_dynamic_toolv83_v66 sm8250=1
注意,这个make命令以共享库(.so)格式构建QDSP6库。此共享库将加载到支持HVX流的目标芯片组。 这时在此文件夹下会生成hexagon_Release_dynamic_toolv83_v66\libdsp_streamer_add_constant.so文件
将样例加载到设备上
有一种方法可以在模拟器上离线测试摄像机流媒体代码(如下所示),但由于流媒体的性质,示例通常是在安装了合适的成像传感器的目标设备上测试的。 作为一个预先要求,目标设备应该预装APPS构建和DSP构建。另外,以hvx_add_constant为例: 运行以下命令将生成的文件推送到设备中
adb push D:\Hexagon_SDK\3.5.4\examples\camera_streaming\hvx_add_constant\hexagon_Release_dynamic_toolv83_v66\libdsp_streamer_add_constant.so /system/lib/rfsa/adsp
adb push D:\Hexagon_SDK\3.5.4\examples\camera_streaming\hvx_add_constant_stub\android_Release\libmmcamera_hvx_add_constant.so /system/lib/
如果设备中的/system/lib/rfsa/adsp以及/system/lib/文件夹不存在,可以运行以下命令建立文件夹
adb shell mkdir -p /system/lib/rfsa/adsp
运行样例
当前运行相机流的方法是使用adb shell setprop命令来启用和禁用它。 假设OEM插件名称为“libmmcamera_hvx_add_constant.”so”,执行以下操作,启用HVX相机流并加载指定的QDSP6库进行处理。
adb shell setprop persist.camera.hvx_lib_1 "libmmcamera_hvx_add_constant.so"
禁用流媒体,使像素数据完全绕过HVX流媒体模块,作为一个正常的ISP,执行以下命令:
adb shell setprop persist.camera.hvx_lib_1 ""
开启相机流(HVX)模式。
adb root
adb remount
创建一个名为camxoverridessettings .txt的新文本文件,并在文件中插入enableHVXStreaming=1,然后将其推送到以下位置/vendor/etc/camera的设备。如果文件夹不存在,则通过上文命令创建它们。 如果文件存在运行以下命令:
adb shell echo enableHVXStreaming=1 > /vendor/etc/camera/camxoverridesettings .txt
接下来继续执行命令
adb reboot
adb root
adb remount
adb shell setenforce 0
重新启动设备。在MTP上启动骁龙相机应用程序或相应的相机应用程序 设备在预览模式,你应该看到明亮的区域将定期增强为粉红色,这表明相机流模式正在工作添加常量样例,具体效果如下视频所示。
|