| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| allocator_demo/ | H | 05-Jun-2025 | - | 1,377 | 932 | |
| alpha_demo/ | H | 05-Jun-2025 | - | 957 | 626 | |
| async_demo/ | H | 05-Jun-2025 | - | 294 | 195 | |
| config_demo/ | H | 05-Jun-2025 | - | 353 | 241 | |
| copy_demo/ | H | 05-Jun-2025 | - | 983 | 627 | |
| crop_demo/ | H | 05-Jun-2025 | - | 392 | 253 | |
| cvtcolor_demo/ | H | 05-Jun-2025 | - | 482 | 323 | |
| fill_demo/ | H | 05-Jun-2025 | - | 859 | 515 | |
| im2d_api_demo/ | H | 05-Jun-2025 | - | 1,351 | 1,008 | |
| im2d_slt/ | H | 05-Jun-2025 | - | 13,642 | 7,676 | |
| mosaic_demo/ | H | 05-Jun-2025 | - | 218 | 139 | |
| padding_demo/ | H | 05-Jun-2025 | - | 243 | 156 | |
| resize_demo/ | H | 05-Jun-2025 | - | 650 | 434 | |
| rop_demo/ | H | 05-Jun-2025 | - | 231 | 150 | |
| sample_file/ | H | 05-Jun-2025 | - | 19 | 15 | |
| transform_demo/ | H | 05-Jun-2025 | - | 511 | 326 | |
| utils/ | H | 05-Jun-2025 | - | 12,766 | 6,986 | |
| CMakeLists.txt | H A D | 05-Jun-2025 | 650 | 24 | 20 | |
| README.md | H A D | 05-Jun-2025 | 7.5 KiB | 124 | 102 | |
| cmake-android.sh | H A D | 05-Jun-2025 | 579 | 26 | 17 | |
| cmake-linux.sh | H A D | 05-Jun-2025 | 561 | 26 | 17 |
README.md
1# librga IM2D API 示例代码说明 2 3 该目录下为librga IM2D API示例代码,包含常见的图像缩放、裁剪、旋转、Blit、alpha混合等操作的示例代码。 4 5## 目录说明 6 7├── **im2d_api_demo**:IM2D API快速演示DEMO<br/> 8├── **im2d_slt**:slt测试工具<br/> 9├── **allocator_demo**:内存分配器相关示例代码<br/> 10│ └── **src** 11│ ├── **rga_allocator_1106_cma_demo.cpp**:RV1106没有搭载IOMMU,须分配物理连续内存调用RGA,该平台CMA节点路径与其他平台不同。<br/> 12│ ├── **rga_allocator_dma32_demo.cpp**:使用dma_heap分配4G以内内存空间的内存(不保证物理连续)调用RGA。<br/> 13│ ├── **rga_allocator_dma_cache_demo.cpp**:使用dma_heap分配cacheable的内存调用RGA。<br/> 14│ ├── **rga_allocator_dma_demo.cpp**:使用dma_heap分配内存调用RGA。<br/> 15│ ├── **rga_allocator_drm_demo.cpp**:使用DRM分配内存调用RGA。<br/> 16│ ├── **rga_allocator_drm_phy_demo.cpp**:使用DRM分配物理连续的内存调用RGA。<br/> 17│ ├── **rga_allocator_graphicbuffer_demo.cpp**:使用GraphicBuffer分配4G内存空间以内的内存调用RGA。<br/> 18│ └── **rga_allocator_malloc_demo.cpp**:使用malloc分配虚拟地址调用RGA。<br/> 19├── **alpha_demo**:alpha混合、叠加相关示例代码<br/> 20│ └── **src** 21│ ├── **rga_alpha_3channel_demo.cpp**:调用RGA实现三通道alpha叠加。<br/> 22│ ├── **rga_alpha_colorkey_demo.cpp**:调用RGA实现colorkey。<br/> 23│ ├── **rga_alpha_demo.cpp**:调用RGA实现双通道alpha叠加。<br/> 24│ ├── **rga_alpha_osd_demo.cpp**:调用RGA实现常见OSD场景<br/> 25│ └── **rga_alpha_yuv_demo.cpp**:调用RGA实现RGBA图像与YUV图像alpha叠加。<br/> 26├── **async_demo**:异步模式相关示例代码<br/> 27├── **config_demo**:线程全局配置相关示例代码<br/> 28│ └── **src** 29│ ├── **rga_config_single_core_demo.cpp**:指定核心执行当前RGA任务。<br/> 30│ └── **rga_config_thread_core_demo.cpp**:当前线程均指定核心执行RGA任务。<br/> 31├── **copy_demo**:图像搬运、拷贝相关示例代码<br/> 32│ └── **src** 33│ ├── **rga_copy_demo.cpp**:调用RGA实现图像拷贝。<br/> 34│ ├── **rga_copy_fbc_demo.cpp**:调用RGA实现FBC图像拷贝。<br/> 35│ ├── **rga_copy_tile8x8_demo.cpp**:调用RGA实现tile8*8图像拷贝。<br/> 36│ ├── **rga_copy_splice_demo.cpp**:调用RGA实现图像拼接。<br/> 37│ └── **rga_copy_splice_task_demo.cpp**:批处理方式调用RGA实现图像拼接。<br/> 38├── **crop_demo**:图像裁剪、拼接相关示例代码<br/> 39│ └──** src** 40│ ├── **rga_crop_demo.cpp**:调用RGA实现图像裁剪。<br/> 41│ └── **rga_crop_rect_demo.cpp**:调用RGA实现裁剪源图像并输出到目标图像上某一区域。<br/> 42├── **cvtcolor_demo**:图像格式转换、色域转换相关示例代码<br/> 43│ └── **src** 44│ ├── **rga_cvtcolor_demo.cpp**:调用RGA实现图像格式转换。<br/> 45│ ├── **rga_cvtcolor_csc_demo.cpp**:调用RGA指定色域空间转换配置实现图像格式转换。<br/> 46│ └── **rga_cvtcolor_gray256_demo.cpp**:调用RGA实现256阶灰度图转换。<br/> 47├── **fill_demo**:图像填充、画框相关示例代码<br/> 48│ └── **src** 49│ ├── **rga_fill_demo.cpp**:调用RGA实现颜色填充。<br/> 50│ ├── **rga_fill_rectangle_demo.cpp**:调用RGA实现矩形框绘制。<br/> 51│ ├── **rga_fill_rectangle_array_demo.cpp**:调用RGA实现多个矩形框绘制。<br/> 52│ ├── **rga_fill_rectangle_task_demo.cpp**:批处理方式调用RGA实现矩形框绘制。<br/> 53│ └── **rga_fill_rectangle_task_array_demo.cpp**:批处理方式调用RGA实现多个矩形框绘制。<br/> 54├── **mosaic_demo**:马赛克遮盖相关示例代码<br/> 55├── **padding_demo**:padding相关示例代码<br/> 56├── **resize_demo**:图像缩放相关示例代码<br/> 57│ └── **src** 58│ ├── **rga_resize_demo.cpp**:调用RGA实现图像缩放。<br/> 59│ ├── **rga_resize_rect_demo.cpp**:调用RGA实现源图像缩放并输出到目标图像指定区域。<br/> 60│ └── **rga_resize_uv_downsampling_demo.cpp**:调用RGA实现YUV422均值降采样到YUV420。<br/> 61├── **rop_demo**:ROP运算相关示例代码<br/> 62├── **transform_demo**:图像变换相关示例代码<br/> 63│ └── **src** 64│ ├── **rga_transform_flip_demo.cpp**:调用RGA实现图像镜像。<br/> 65│ ├── **rga_transform_rotate_demo.cpp**:调用RGA实现图像旋转。<br/> 66│ └── **rga_transform_rotate_flip_demo.cpp**:调用RGA实现图像镜像同事旋转。<br/> 67├── **utils**:示例代码中使用的第三方引用、通用工具代码<br/> 68└── **sample_file**:演示代码使用图像数据文件<br/> 69 70## 编译说明 71 72 本仓库示例代码支持CMAKE编译,可以通过修改toolchain_*.cmake文件以及编译脚本实现快速编译。 73 74### 工具链修改 75 76- **Android NDK(build for android)** 77 78 参考librga源码目录下**toolchains/toolchain_android_ndk.cmake**写法,修改NDK路径、Android版本信息等。 79 80| 工具链选项 | 描述 | 81| ----------------------------------- | -------------------------------------------- | 82| CMAKE_ANDROID_NDK | NDK编译包路径 | 83| CMAKE_SYSTEM_NAME | 平台名,默认为Android | 84| CMAKE_SYSTEM_VERSION | Android版本 | 85| CMAKE_ANDROID_ARCH_ABI | 处理器版本 | 86| CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION | 工具链选择(clang/gcc) | 87| CMAKE_ANDROID_STL_TYPE | NDK C++库的链接方式(c++_static/c++_shared) | 88 89- **Linux(buildroot/debian)** 90 91 参考librga源码目录下**toolchains/toolchain_linux.cmake**写法,修改工具链路径、名称。 92 93| 工具链选项 | 描述 | 94| -------------- | ---------- | 95| TOOLCHAIN_HOME | 工具链目录 | 96| TOOLCHAIN_NAME | 工具链名称 | 97 98### 编译脚本修改 99 100 修改samples目录或需要编译的示例代码目录下**cmake_*.sh**,指定toolchain路径。 101 102| 编译选项 | 描述 | 103| -------------- | ------------------------------------------------------------ | 104| TOOLCHAIN_PATH | toolchain的绝对路径,即《工具链修改》小节中修改后的toolchain_*.cmake文件的绝对路径 | 105| LIBRGA_PATH | 需要链接的librga.so的绝对路径,默认为librga cmake编译时的默认打包路径 | 106| BUILD_DIR | 编译生成文件存放的相对路径 | 107 108### 执行编译脚本 109 110- **Android NDK(build for android)** 111 112```bash 113$ chmod +x ./cmake_android.sh 114$ ./cmake_android.sh 115``` 116 117- **Linux(buildroot/debian)** 118 119```bash 120$ chmod +x ./cmake_linux.sh 121$ ./cmake_linux.sh 122``` 123 124