Openharmony Camera 调试工具

1.背景

在有新的开发板适配 openharmony camera 时,驱动移植适配完成之后,需要测试程序来测试适配是否正常。一般都是用系统相机app,或 camera framework, 或 camera hdi 里的测试用例来调试,

camera framework中demo路径: foundation/multimedia/camera_framework/interfaces/inner_api/native/test

camera hdi中demo路径:drivers/eripheral/camera/test/demo_3A 。需要注意下, demo_3A 目录下面的是最新的测试demo, demo 路径下是早期版本的。

demo有以下缺点:

1.没有可用的 v4l2 测试demo。

2.demo在选择camera设备时,都是用的固定设备和格式,如果要调试不同的场景,每次都要自己改代码编译才行。

3.demo在配置编译时,build.gn和bundle.json里指定了是在test环境编译,在代码根路径下执行编译命令 ./build.sh --product-name rk3568 --build-target make_test ,将生成的产物推到开发板上执行,但首次编译时编译时间会比较长。

鉴于系统提供的测试app或demo不够灵活方便,便萌生了自己写测试demo的想法。

2.demo开发环境

开发环境:

openharmony版本:6.0release

开发板:rk3568

除了用开发板自带的camera之外,额外增加1个USB camera来测试。

根据系统提供的api,开发了3个demo: v4l2_demo,hdi_camera_demo,camera_framework_demo。

其中v4l2_demo与oh版本无关,hdi_camera_demo支持4.x到当前最新的6.0release,camera_framework_demo在6.0release上开发调试,比之前版本会多一些回调,及build.gn依赖路径的变化,稍做修改后,可支持4.x到当前最新的6.0release。

源代码在文末附件中。

2.1.V4L2测试demo

v4l2的demo都是调用的linux中v4l2相关的代码,只跟linux相关,与oh代码无关,只需开发板linux内核启动后即可使用,主要用来测试camera驱动适配,usb camera等场景。

v4l2_demo 文件夹及源代码拷到 drivers/peripheral/camera/v4l2_demo 下,在camera根目录下的 BUILD.gn 中添加编译依赖,添加完成后,目录结构如下图。

img

可以使用下面的命令快速编译:

./build.sh --product-name rk3568 --no-prebuilt-sdk --build-target v4l2_demo

生成的目标文件在 out/rk3568/hdf/drivers_peripheral_camera/v4l2_demo ,可以使用 hdc 命令推送到开发板上,执行 chmod 777 v4l2_demo 修改执行权限。

以外接的 usb camera 为例,插上后可以先查下设备。

img

demo提供的功能命令如下图,详细实现可以查看demo源代码。

img

使用demo中的命令可以查询到支持的格式,分辨率等。

img

有了这些信息,可以选择支持的格式和分辨率来拍照和录像。

执行demo命令拍照:

./v4l2_demo -p /dev/video12 -c 1 -f 1 -w 1280 -h 720 -o /data/test/

保存的jpg文件可以用hdc命令拉到pc电脑上查看。

img

执行demo命令录像:

./v4l2_demo -p /dev/video12 -c 2 -f 2 -w 640 -h 480 -o /data/test/

代码里默认保存10帧,可以用hdc命令拉到pc上,用工具查看。

img

其它命令功能,可以查看源代码。

2.2.HDI层测试demo

这个demo全部调用的是camera hdi的接口,主要是在camera hdi层,测试适配的驱动与openharmony的对接是否正常。

将代码源文件和build.gn拷到 drivers/peripheral/camera/hdidemo 下,在camera根目录的 BUILD.gn 中添加编译依赖,触发编译。

img

全量编译,或是使用下面的命令快速编译:

./build.sh --product-name rk3568 --no-prebuilt-sdk --build-target hdi_camera_demo

生成的目标文件在 out/rk3568/hdf/drivers_peripheral_camera/hdi_camera_demo ,可以使用 hdc 命令推送到开发板上,执行 chmod 777 hdi_camera_demo 修改执行权限。

demo提供的功能命令如下图,详细实现可以查看demo源代码。

img

执行demo命令拍照:

./hdi_camera_demo -i lcam001 -c 1 -w 1280 -h 960 -x 640 -y 480 -o /data/test

img

可以用hdc命令拉到pc电脑上查看。

执行demo命令录像:

./hdi_camera_demo -i lcam001 -c 2 -w 640 -h 480 -x 640 -y 480 -o /data/test

img

保存的视频格式为h264,可以用hdc命令拉到pc上,用工具查看。

2.3.Camera Framework层测试demo

这个demo全部调用的是camera framework的接口,主要是测试 camera framework。

将代码源文件和build.gn拷到 foundation/multimedia/camera_framework/camera_demo 下,在 bundle.json 中添加编译目标,触发编译。

img

可以使用下面的命令快速编译:

./build.sh --product-name rk3568 --no-prebuilt-sdk --build-target camera_framework_demo

生成的目标文件在 out/rk3568/multimedia/camera_framework/camera_framework_demo ,可以使用 hdc 命令推送到开发板上,执行 chmod 777 camera_framework_demo 修改执行权限。

demo提供的功能命令如下图,详细实现可以查看demo源代码。

img

执行demo命令拍照:

./camera_framework_demo -c 2 -i lcam002 -w 1280 -h 720 -x 1280 -y 720 -o /data/test/

保存的图片文件在 photo 下,可以用hdc命令拉到pc电脑上查看。

img

执行demo命令录像:

./camera_framework_demo -c 3 -i lcam002 -w 1280 -h 720 -x 1280 -y 720 -o /data/test/

保存的视频文件在 video 下,格式为h264,可以用hdc命令拉到pc上,用工具查看。

img

不管是拍照还是录像,预览的数据保存在 preview 下,格式为yuv,可以用hdc命令拉到pc上,用工具查看。

img

其它命令功能,可以查看源代码。

3.最后

上面的方法和代码都是依赖当前版本代码的,可能随时间推移,社区代码不停的演进,会导致方法不适用或是代码编译不过等情况,欢迎大家留言指出。

相关文件下载
demo.rar
17.35 KB
下载
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐