1. 概述

本文档主要用于指导用户如何在曦云® 系列GPU上进行mcJPEG解码和编码。

1.1. mcJPEG解码器

mcJPEG库提供了面向深度学习和超大规模多媒体应用常用图像格式的高性能、GPU加速的JPEG解码功能。可有效利用可用的GPU资源以实现最佳性能。

mcJPEG库支持以下功能:

  • 使用JPEG图像数据流作为输入

  • 从数据流中解析出图像的宽度和高度,并使用获取到的信息管理GPU内存分配和解码

  • 提供了专用的API,用于从原始JPEG图像数据流中获取图像信息

JPEG选项

mcJPEG库支持:

  • Baseline和Progressive JPEG编解码

  • 针对3个颜色通道Y,Cb,Cr(Y,U,V),支持以下色度子采样:4:4:4;4:2:2;4:2:0;4:4:0;4:1:1;4:1:0

特性

mcJPEG库支持:

  • 在支持的平台上进行Baseline JPEG编解码的硬件加速

  • 解码时,输入数据位于主机内存中,输出位于GPU内存中

  • 色彩空间转换

  • 支持用户提供内存管理接口进行设备内存和主机固页内存(pinned host memory)分配

1.2. mcJPEG编码器

通过mcJPEG库的编码函数,可以对用户的图像数据进行GPU加速压缩,并将其转换为JPEG比特流。支持多种格式和色彩空间的输入数据,且可使用参数控制编码过程。

在调用编码函数之前,用户应该使用 3.3 mcJPEG编码API 中的辅助函数执行一些先决步骤。

1.3. 多GPU支持

mcJPEG的状态和句柄是与在创建时设置的当前设备绑定的。将这些状态和句柄与另一个当前设备一起使用是未定义行为。用户负责跟踪当前设备。