luckfox-pico-sdk/media/rga/release_rga_rv1126_arm-rockchip830-linux-gnueabihf/rga_samples
luckfox-eng29 8f34c2760d project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches.
project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between
the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door
for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more
usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp:
Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for
compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem.
sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device
tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately.
sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick
boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades.
sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for
fastboot.

Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
2024-10-14 09:47:04 +08:00
..
allocator_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
alpha_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
async_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
config_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
copy_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
crop_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
cvtcolor_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
fill_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
im2d_api_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
im2d_slt project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
mosaic_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
padding_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
resize_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
rop_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
sample_file project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
transform_demo project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
utils project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
cmake-android.sh project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
cmake-linux.sh project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
CMakeLists.txt project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00
README.md project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches. 2024-10-14 09:47:04 +08:00

librga IM2D API 示例代码说明

该目录下为librga IM2D API示例代码包含常见的图像缩放、裁剪、旋转、Blit、alpha混合等操作的示例代码。

目录说明

├── im2d_api_demoIM2D API快速演示DEMO
├── im2d_sltslt测试工具
├── allocator_demo:内存分配器相关示例代码
│   └── src │   ├── rga_allocator_1106_cma_demo.cppRV1106没有搭载IOMMU须分配物理连续内存调用RGA该平台CMA节点路径与其他平台不同。
│   ├── rga_allocator_dma32_demo.cpp使用dma_heap分配4G以内内存空间的内存不保证物理连续调用RGA。
│   ├── rga_allocator_dma_cache_demo.cpp使用dma_heap分配cacheable的内存调用RGA。
│   ├── rga_allocator_dma_demo.cpp使用dma_heap分配内存调用RGA。
│   ├── rga_allocator_drm_demo.cpp使用DRM分配内存调用RGA。
│   ├── rga_allocator_drm_phy_demo.cpp使用DRM分配物理连续的内存调用RGA。
│   ├── rga_allocator_graphicbuffer_demo.cpp使用GraphicBuffer分配4G内存空间以内的内存调用RGA。
│   └── rga_allocator_malloc_demo.cpp使用malloc分配虚拟地址调用RGA。
├── alpha_demoalpha混合、叠加相关示例代码
│   └── src │   ├── rga_alpha_3channel_demo.cpp调用RGA实现三通道alpha叠加。
│   ├── rga_alpha_colorkey_demo.cpp调用RGA实现colorkey。
│   ├── rga_alpha_demo.cpp调用RGA实现双通道alpha叠加。
│   ├── rga_alpha_osd_demo.cpp调用RGA实现常见OSD场景
│   └── rga_alpha_yuv_demo.cpp调用RGA实现RGBA图像与YUV图像alpha叠加。
├── async_demo:异步模式相关示例代码
├── config_demo:线程全局配置相关示例代码
│   └── src │   ├── rga_config_single_core_demo.cpp指定核心执行当前RGA任务。
│   └── rga_config_thread_core_demo.cpp当前线程均指定核心执行RGA任务。
├── copy_demo:图像搬运、拷贝相关示例代码
│   └── src │   ├── rga_copy_demo.cpp调用RGA实现图像拷贝。
│   ├── rga_copy_fbc_demo.cpp调用RGA实现FBC图像拷贝。
│   ├── rga_copy_tile8x8_demo.cpp调用RGA实现tile8*8图像拷贝。
│   ├── rga_copy_splice_demo.cpp调用RGA实现图像拼接。
│   └── rga_copy_splice_task_demo.cpp批处理方式调用RGA实现图像拼接。
├── crop_demo:图像裁剪、拼接相关示例代码
│   └──** src** │   ├── rga_crop_demo.cpp调用RGA实现图像裁剪。
│   └── rga_crop_rect_demo.cpp调用RGA实现裁剪源图像并输出到目标图像上某一区域。
├── cvtcolor_demo:图像格式转换、色域转换相关示例代码
│   └── src │   ├── rga_cvtcolor_demo.cpp调用RGA实现图像格式转换。
│   ├── rga_cvtcolor_csc_demo.cpp调用RGA指定色域空间转换配置实现图像格式转换。
│   └── rga_cvtcolor_gray256_demo.cpp调用RGA实现256阶灰度图转换。
├── fill_demo:图像填充、画框相关示例代码
│   └── src │   ├── rga_fill_demo.cpp调用RGA实现颜色填充。
│   ├── rga_fill_rectangle_demo.cpp调用RGA实现矩形框绘制。
│   ├── rga_fill_rectangle_array_demo.cpp调用RGA实现多个矩形框绘制。
│   ├── rga_fill_rectangle_task_demo.cpp批处理方式调用RGA实现矩形框绘制。
│   └── rga_fill_rectangle_task_array_demo.cpp批处理方式调用RGA实现多个矩形框绘制。
├── mosaic_demo:马赛克遮盖相关示例代码
├── padding_demopadding相关示例代码
├── resize_demo:图像缩放相关示例代码
│   └── src │   ├── rga_resize_demo.cpp调用RGA实现图像缩放。
│   ├── rga_resize_rect_demo.cpp调用RGA实现源图像缩放并输出到目标图像指定区域。
│   └── rga_resize_uv_downsampling_demo.cpp调用RGA实现YUV422均值降采样到YUV420。
├── rop_demoROP运算相关示例代码
├── transform_demo:图像变换相关示例代码
│   └── src │   ├── rga_transform_flip_demo.cpp调用RGA实现图像镜像。
│   ├── rga_transform_rotate_demo.cpp调用RGA实现图像旋转。
│   └── rga_transform_rotate_flip_demo.cpp调用RGA实现图像镜像同事旋转。
├── utils:示例代码中使用的第三方引用、通用工具代码
└── sample_file:演示代码使用图像数据文件

编译说明

本仓库示例代码支持CMAKE编译可以通过修改toolchain_*.cmake文件以及编译脚本实现快速编译。

工具链修改

  • Android NDKbuild for android

参考librga源码目录下toolchains/toolchain_android_ndk.cmake写法修改NDK路径、Android版本信息等。

工具链选项 描述
CMAKE_ANDROID_NDK NDK编译包路径
CMAKE_SYSTEM_NAME 平台名默认为Android
CMAKE_SYSTEM_VERSION Android版本
CMAKE_ANDROID_ARCH_ABI 处理器版本
CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION 工具链选择clang/gcc
CMAKE_ANDROID_STL_TYPE NDK C++库的链接方式c++_static/c++_shared
  • Linuxbuildroot/debian

参考librga源码目录下toolchains/toolchain_linux.cmake写法,修改工具链路径、名称。

工具链选项 描述
TOOLCHAIN_HOME 工具链目录
TOOLCHAIN_NAME 工具链名称

编译脚本修改

修改samples目录或需要编译的示例代码目录下cmake_*.sh指定toolchain路径。

编译选项 描述
TOOLCHAIN_PATH toolchain的绝对路径即《工具链修改》小节中修改后的toolchain_*.cmake文件的绝对路径
LIBRGA_PATH 需要链接的librga.so的绝对路径默认为librga cmake编译时的默认打包路径
BUILD_DIR 编译生成文件存放的相对路径

执行编译脚本

  • Android NDKbuild for android
$ chmod +x ./cmake_android.sh
$ ./cmake_android.sh
  • Linuxbuildroot/debian
$ chmod +x ./cmake_linux.sh
$ ./cmake_linux.sh

测试文件说明

示例文件

用于测试的输入与输出二进制文件需提前准备好,在/sample/sample_file目录下存放着默认的RGBA8888格式的源图像文件可以直接使用。

路径说明

在示例代码中,可以通过配置以下宏定义来修改读取图像文件的路径:

宏定义 描述
LOCAL_FILE_PATH read_image_from_file/write_image_to_file函数第二个传参用于描述当前读/写示例文件的路径,默认路径为"/data"

示例文件名说明

文件命名规则如下:

in%dw%d-h%d-%s.bin
out%dw%d-h%d-%s.bin

示例:
1280×720 RGBA8888的输入图像 in0w1280-h720-rgba8888.bin
1280×720 RGBA8888的输出图像 out0w1280-h720-rgba8888.bin

参数解释如下:

输入文件为 in 输出文件为 out --->第一个%d 是文件的索引, 一般为 0 用于区别格式及宽高完全相同的文件 --->第二个%d 是宽的意思, 这里的宽一般指虚宽 --->第三个%d 是高的意思, 这里的高一般指虚高 --->第四个%s 是格式的名字。

预置测试的部分常用图像格式如下其他格式对应字符串名可以查看rgaUtils.cpp中查看

formatAndroid formatLinux name
HAL_PIXEL_FORMAT_RGB_565 RK_FORMAT_RGB_565 "rgb565"
HAL_PIXEL_FORMAT_RGB_888 RK_FORMAT_RGB_888 "rgb888"
HAL_PIXEL_FORMAT_RGBA_8888 RK_FORMAT_RGBA_8888 "rgba8888"
HAL_PIXEL_FORMAT_RGBX_8888 RK_FORMAT_RGBX_8888 "rgbx8888"
HAL_PIXEL_FORMAT_BGRA_8888 RK_FORMAT_BGRA_8888 "bgra8888"
HAL_PIXEL_FORMAT_YCrCb_420_SP RK_FORMAT_YCrCb_420_SP "crcb420sp"
HAL_PIXEL_FORMAT_YCrCb_NV12 RK_FORMAT_YCbCr_420_SP "nv12"
HAL_PIXEL_FORMAT_YCrCb_NV12_VIDEO / "nv12"
HAL_PIXEL_FORMAT_YCrCb_NV12_10 RK_FORMAT_YCbCr_420_SP_10B "nv12_10"

通常demo中默认配置的输入图像分辨率为1280x720格式为RGBA8888。因此需在对应配置的读文件路径下提前准备好in0w1280-h720-rgba8888.bin的源图像文件图像合成模式还需额外准备好名为in1w1280-h720-rgba8888.bin的源图像文件。