Skip to content
/ rocJPEG Public

rocJPEG is a high-performance jpeg decode SDK for decoding jpeg images using a hardware-accelerated jpeg decoder on AMD’s GPUs.

License

Notifications You must be signed in to change notification settings

ROCm/rocJPEG

Repository files navigation

MIT licensed

rocJPEG is a high performance JPEG decode SDK for AMD GPUs. Using the rocJPEG API, you can access the JPEG decoding features available on your GPU.

Note

The published documentation is available at rocJPEG in an organized, easy-to-read format, with search and a table of contents. The documentation source files reside in the docs folder of this repository. As with all ROCm projects, the documentation is open source. For more information on contributing to the documentation, see Contribute to ROCm documentation

Supported JPEG chroma subsampling

  • YUV 4:4:4
  • YUV 4:4:0
  • YUV 4:2:2
  • YUV 4:2:0
  • YUV 4:0:0

Prerequisites

Important

gfx908 or higher GPU required

  • Install ROCm 6.3.0 or later with amdgpu-install: Required usecase - rocm

Important

sudo amdgpu-install --usecase=rocm

  • Video Acceleration API - libva-amdgpu-dev is an AMD implementation for VA-API
    sudo apt install libva-amdgpu-dev

Note

  • RPM Packages for RHEL/SLES - libva-amdgpu-devel
  • libva-amdgpu is strongly recommended over system libva as it is used for building mesa-amdgpu-va-driver
  • AMD VA Drivers
    sudo apt install libva2-amdgpu libva-amdgpu-drm2 libva-amdgpu-wayland2 libva-amdgpu-x11-2 mesa-amdgpu-va-drivers

Note

RPM Packages for RHEL/SLES - libva-amdgpu mesa-amdgpu-va-drivers

  • CMake 3.10 or later

    sudo apt install cmake
  • AMD Clang++ Version 18.0.0 or later - installed with ROCm

  • pkg-config

    sudo apt install pkg-config

Important

  • If using Ubuntu 22.04, you must install libstdc++-12-dev
sudo apt install libstdc++-12-dev

Note

  • All package installs are shown with the apt package manager. Use the appropriate package manager for your operating system.

Prerequisites setup script for Linux

For your convenience, we provide the setup script, rocJPEG-setup.py which installs all required dependencies. Run this script only once.

Usage:

  python rocJPEG-setup.py  --rocm_path [ ROCm Installation Path - optional (default:/opt/rocm)]

NOTE: This script only needs to be executed once.

Installation instructions

The installation process uses the following steps:

Important

Use either package install or source install as described below.

Package install

Install rocJPEG runtime, development, and test packages.

  • Runtime package - rocjpeg only provides the rocjpeg library librocjpeg.so
  • Development package - rocjpeg-dev/rocjpeg-devel provides the library, header files, and samples
  • Test package - rocjpeg-test provides CTest to verify installation

Ubuntu

sudo apt install rocjpeg rocjpeg-dev rocjpeg-test

RHEL

sudo yum install rocjpeg rocjpeg-devel rocjpeg-test

SLES

sudo zypper install rocjpeg rocjpeg-devel rocjpeg-test

Note

Package install auto installs all dependencies.

Source install

git clone https://github.com/ROCm/rocJPEG.git
cd rocJPEG
mkdir build && cd build
cmake ../
make -j8
sudo make install

Run tests

make test

NOTE: run tests with verbose option make test ARGS="-VV"

Make package

sudo make package

Verify installation

The installer will copy

  • Libraries into /opt/rocm/lib
  • Header files into /opt/rocm/include/rocjpeg
  • Samples folder into /opt/rocm/share/rocjpeg
  • Documents folder into /opt/rocm/share/doc/rocjpeg

Using sample application

To verify your installation using a sample application, run:

mkdir rocjpeg-sample && cd rocjpeg-sample
cmake /opt/rocm/share/rocjpeg/samples/jpegDecode/
make -j8
./jpegdecode -i /opt/rocm/share/rocjpeg/images/mug_420.jpg

Using test package

To verify your installation using the rocjpeg-test package, run:

mkdir rocjpeg-test && cd rocjpeg-test
cmake /opt/rocm/share/rocjpeg/test/
ctest -VV

Samples

The tool provides a few samples to decode JPEG images here. Please refer to the individual folders to build and run the samples. You can access samples to decode your images in our GitHub repository. Refer to the individual folders to build and run the samples.

Docker

You can find rocJPEG Docker containers in our GitHub repository.