ROCm 媒体库(Media Libraries)实战指南:基于 rocDecode 与 rocJPEG 的 GPU 视频解码与图像处理
2026/9/17 11:35:51 网站建设 项目流程

ROCm 媒体库(Media Libraries)实战指南:基于 rocDecode 与 rocJPEG 的 GPU 视频解码与图像处理

【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build

ROCm media libraries 为 AMD GPU 提供硬件加速的视频解码与图像处理能力,是整个 ROCm 软件栈中负责多媒体负载的核心组件。本文以docs/components/media-libs.rst为主线,深入讲解 rocDecode(AMD GPU 视频解码 SDK)与 rocJPEG(JPG 图像解码库)的功能定位、支持范围、编译打包流程与安装方式,并结合本仓库的构建脚本与组件清单给出可验证的源码级依据,帮助读者在 ROCm 环境中落地视频/图像 GPU 加速方案。

ROCm 媒体库在软件栈中的定位

ROCm(Radeon Open Compute)软件栈以 GPU 计算为中心,通常被划分为运行时、编译器、数学库、通信库等多个组件群组。媒体库(Media libraries)是其中独立的一类,专注于多媒体数据的 GPU 加速处理。在本仓库的组件分类配置 docs/data/components-default.yaml 中,媒体库被显式声明为media_libs分组(&media_libs Media libraries),归属于该分组的组件共有两个:

组件分组定位
rocDecodemedia_libs面向 AMD GPU 视频解码特性的高性能 SDK
rocJPEGmedia_libs在 AMD GPU 上解码 JPG 图像的库

两个组件的元数据(group: *media_libs)分别出现在 components-default.yaml 的rocDecode条目(rtd_project: rocDecodegithub_repo: rocm-systems/projects/rocdecode)与 components-default.yaml 的rocJPEG条目(rtd_project: rocJPEGgithub_repo: rocm-systems/projects/rocjpeg)中,从仓库配置层面印证了二者同属媒体库分组的归类关系。

同时,在组件的清单(manifest)与构建清单(repo manifest)中,rocDecode 与 rocJPEG 也被一并登记。例如 default.xml 中写有<project groups="mathlibs" name="rocDecode" /><project groups="mathlibs" name="rocJPEG" />,说明二者通过统一的 manifest 机制纳入 ROCm 组件仓库管理。

支持的硬件与平台

从当前仓库的组件版本清单 docs/data/components.yaml 可以看到媒体库的版本与支持范围:

rocDecode: { version: 1.8.0, support: "Linux · Instinct/Radeon · Ryzen (gfx1150/gfx1151/gfx1152)" } rocJPEG: { version: 1.6.0, support: "Linux · Instinct/Radeon · Ryzen (gfx1150/gfx1151/gfx1152)" }
  • 平台:两个库均为Linux平台组件(不支持 Windows);
  • GPU 范围:支持 AMDInstinct数据中心加速卡与Radeon消费级显卡;
  • Ryzen 处理器:额外支持 Ryzen 平台,且明确到架构代号gfx1150/gfx1151/gfx1152(即基于 RDNA 架构的 Ryzen 集成 GPU)。

在 docs/data/components-previous.yaml 中记录的上一版本(rocDecode: 1.8.0rocJPEG: 1.5.0)与当前版本(rocJPEG 1.6.0)对比可知,媒体库会随 ROCm 发行版演进持续更新。若读者需要按历史发行版核对版本,可以参考 compatibility-matrix-historical-6.0.csv 与 core-sdk-components-linux.rst 中的 Linux 组件清单。

rocDecode:AMD GPU 视频解码 SDK

功能与价值

rocDecode 是官方定位为“High-performance SDK for access to video decoding features on AMD GPUs”的高性能视频解码 SDK(见 media-libs.rst 及 components-default.yaml 中的组件描述)。其核心价值在于:

  • 将视频解码负载卸载到 AMD GPU,利用 GPU 硬件编解码引擎(如 VCN)替代 CPU 软解,显著提升吞吐、降低 CPU 占用;
  • 提供统一的解码接口抽象,供 FFmpeg、GStreamer 等多媒体框架及自研应用集成;
  • 面向 Instinct(数据中心推理/转码)与 Radeon/Ryzen(桌面与嵌入式场景)两类硬件形态。

从构建脚本看编译与打包流程

本仓库的 tools/rocm-build/build_rocdecode.sh 提供了 rocDecode 在 ROCm 构建体系中的完整编译、打包逻辑,是理解其工程形态的第一手源码证据:

# 跳过不支持的分发版(老版本 CentOS/Debian 及 Azure Linux 等) if [ "$DISTRO_ID" = "centos-7" ] || \ [ "$DISTRO_ID" = "mariner-2.0" ] || \ [ "$DISTRO_ID" = "azurelinux-3.0" ] || \ [ "$DISTRO_ID" = "debian-10" ]; then echo "Not building rocDecode for ${DISTRO_ID}. Exiting..." return 0 fi init_rocm_common_cmake_params cmake \ "${rocm_math_common_cmake_params[@]}" \ -DROCM_DEP_ROCMCORE=ON \ -DROCDECODE_ENABLE_ROCPROFILER_REGISTER=ON \ "${COMPONENT_SRC}" cmake --build "$BUILD_DIR" -- -j${PROC} cmake --build "$BUILD_DIR" -- install cmake --build "$BUILD_DIR" -- package

几个值得注意的工程细节:

  • CMake 构建体系:rocDecode 采用标准 CMake 流程(configure → build → install → package),构建目录、安装目录与打包目录由统一的compute_utils.sh工具函数管理;
  • 依赖开关-DROCM_DEP_ROCMCORE=ON:显式声明对 ROCm Core(ROCm 核心运行时/公共基础设施)的依赖,保证解码库与 ROCm 运行时版本匹配;
  • 性能分析注册-DROCDECODE_ENABLE_ROCPROFILER_REGISTER=ON:启用 ROCProfiler 注册,使解码内核可被 ROCm 性能分析工具(如 rocprof / ROCm Compute Profiler)采集,便于对解码负载做性能剖析;
  • 分发版裁剪centos-7mariner-2.0azurelinux-3.0debian-10等发行版被显式跳过,这与上面“仅支持现代 Linux 分发版”的事实相互印证;
  • 多目标封装:脚本末尾的case $TARGET in build|outdir|clean)暴露了统一 CLI(build构建、outdir输出目录、clean清理),可被上层构建系统按目标调用。

安装方式

安装 rocDecode 的最直接方式是从 ROCm 软件仓库安装预编译二进制包:

# Debian/Ubuntu 系(安装前需配置 ROCm apt 源) sudo apt update sudo apt install rocdecode # RHEL/Rocky 系(安装前需配置 ROCm yum 源) sudo dnf install rocdecode # openSUSE/SLES 系(安装前需配置 ROCm zypper 源) sudo zypper install rocdecode

提示:包管理器命令因发行版而异,且依赖已正确配置的 ROCm 软件源;安装完成后可通过rocminfo确认 GPU 可见、并用dpkg -L rocdecode(或rpm -ql rocdecode)查看库文件与头文件的安装位置。

rocJPEG:AMD GPU 上的 JPG 图像解码库

功能与价值

rocJPEG 的官方定位是“Library for decoding JPG images on AMD GPUs”(见 media-libs.rst 与 components-default.yaml)。它解决的问题是:

  • 图像解码(尤其是 JPEG 解码)是图像预处理管线中高频且计算密集的环节;
  • 将 JPG 解码卸载到 GPU,可并行处理大批量图像,配合后续 GPU 上的缩放、颜色空间转换、归一化与推理,消除 CPU↔GPU 数据回传瓶颈,适合深度学习数据管线与图像批处理服务。

从构建脚本看编译与打包流程

对应构建脚本 tools/rocm-build/build_rocjpeg.sh 展示了 rocJPEG 的构建路径:

if [ "$DISTRO_ID" = "centos-7" ] || [ "$DISTRO_ID" = "sles-15.4" ] || \ [ "$DISTRO_ID" = "azurelinux-3.0" ] || [ "$DISTRO_ID" = "debian-10" ]; then echo "Not building rocJPEG for ${DISTRO_ID}. Exiting..." return 0 fi cmake -DROCM_DEP_ROCMCORE=ON -DROCJPEG_ENABLE_ROCPROFILER_REGISTER=ON "$COMPONENT_SRC" make -j8 make install make package cmake --build "$BUILD_DIR" -- -j${PROC} cpack -G ${PKGTYPE^^}

与 rocDecode 高度一致的设计模式:

  • 同样通过-DROCM_DEP_ROCMCORE=ON声明对 ROCm Core 的依赖;
  • 同样通过-DROCJPEG_ENABLE_ROCPROFILER_REGISTER=ON启用 ROCProfiler 注册以支持性能分析;
  • 跳过centos-7sles-15.4azurelinux-3.0debian-10等旧发行版;
  • 使用make流程并调用cpack -G ${PKGTYPE^^}生成 DEB/RPM 软件包,最终产物由copy_if统一收集到包目录。

两者的构建脚本并排阅读,可以清晰看到 ROCm 组件工程的统一规范:compute_utils.sh提供公共环境、set_component_src定位源码目录、stage2_command_args解析统一 CLI 参数、build_wheel/clean/outdir等目标提供生命周期管理。

安装方式

# Debian/Ubuntu 系 sudo apt update sudo apt install rocjpeg # RHEL/Rocky 系 sudo dnf install rocjpeg # openSUSE/SLES 系 sudo zypper install rocjpeg

媒体库组件的仓库内证据汇总

为便于读者在本仓库内继续追踪,下表汇总了与媒体库直接相关的证据文件:

关注点仓库路径说明
组件文档docs/components/media-libs.rst媒体库唯一官方入口文档
组件分组docs/data/components-default.yamlmedia_libs分组及两个组件的元数据
版本与支持范围docs/data/components.yamlrocDecode 1.8.0 / rocJPEG 1.6.0 及 GPU 范围
历史版本docs/data/components-previous.yaml上一版本记录(rocJPEG 1.5.0)
rocDecode 构建脚本tools/rocm-build/build_rocdecode.sh编译、安装、打包、清理全流程
rocJPEG 构建脚本tools/rocm-build/build_rocjpeg.sh编译、安装、打包、清理全流程
manifest 登记default.xml组件纳入统一清单管理
Linux 组件清单docs/compatibility/include/core-sdk-components-linux.rst发行版兼容性核对

总结

ROCm 媒体库(media libraries)由rocDecode(GPU 视频解码 SDK)与rocJPEG(GPU JPG 图像解码库)两个组件构成,为 AMD Instinct / Radeon / Ryzen(gfx1150/1151/1152)GPU 提供 Linux 平台上的硬件加速视频与图像解码能力。二者在组件配置中以media_libs分组登记,在当前仓库中分别对应 1.8.0 与 1.6.0 版本;从 build_rocdecode.sh 与 build_rocjpeg.sh 的构建脚本可以确认,它们都采用 CMake/make 标准流程、依赖 ROCm Core(ROCM_DEP_ROCMCORE=ON)、支持 ROCProfiler 性能分析注册,并被打包为 DEB/RPM 发行。用户既可以通过发行版包管理器直接安装预编译二进制,也可以利用构建脚本在支持的发行版上自行编译打包,从而在数据中心的视频转码/推理流水线或高性能图像预处理场景中落地 GPU 加速。

【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询