Code Monkey home page Code Monkey logo

rocdecode's Introduction

MIT licensed

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

Supported codecs

  • H.265 (HEVC) - 8 bit, and 10 bit
  • H.264 (AVC) - 8 bit
  • AV1 - 8 bit, and 10 bit

Prerequisites

Important

gfx908 or higher GPU required

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

Important

sudo amdgpu-install --usecase=rocm

  • Video Acceleration API Version 1.5.0 or later - Libva is an implementation for VA-API
    sudo apt install libva-dev

Note

RPM Packages for RHEL/SLES - libva-devel

  • AMD VA Drivers

    sudo apt install mesa-amdgpu-va-drivers
  • CMake Version 3.5 or later

    sudo apt install cmake
  • Clang Version 5.0.1 or later

    sudo apt install clang
  • pkg-config

    sudo apt install pkg-config
  • FFmpeg runtime and headers - for tests and samples

    sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev

Important

  • On Ubuntu 22.04 - Additional package required: libstdc++-12-dev
sudo apt install libstdc++-12-dev
  • On RHEL/SLES - Additional packages required: libdrm-amdgpu and mesa-amdgpu-dri-drivers
sudo yum install libdrm-amdgpu mesa-amdgpu-dri-drivers

Note

  • All package installs are shown with the apt package manager. Use the appropriate package manager for your operating system.
  • To install rocDecode with minimum requirements, follow the quick-start instructions

Prerequisites setup script

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

python3 rocDecode-setup.py  --rocm_path [ ROCm Installation Path  - optional (default:/opt/rocm)]
                            --runtime   [ Setup runtime requirements - optional (default:ON) [options:ON/OFF]]
                            --developer [ Setup Developer Options - optional (default:OFF) [options:ON/OFF]]

Installation instructions

The installation process uses the following steps:

Package install

To install rocDecode runtime, development, and test packages, run the line of code for your operating system.

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

Ubuntu

sudo apt install rocdecode rocdecode-dev rocdecode-test

RHEL

sudo yum install rocdecode rocdecode-devel rocdecode-test

SLES

sudo zypper install rocdecode rocdecode-devel rocdecode-test

Note

Package install auto installs all dependencies.

Important

RHEL/SLES package install requires manual FFMPEG dev install

Source install

To build rocDecode from source and install, run:

git clone https://github.com/ROCm/rocDecode.git
cd rocDecode
python3 rocDecode-setup.py
mkdir build && cd build
cmake ../
make -j8
sudo make install

Run tests

make test

Important

make test requires FFMPEG dev install

Note

To run tests with verbose option, use make test ARGS="-VV".

Make package

sudo make package

Verify installation

The installer copies:

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

Using sample application

To verify your installation using a sample application, run:

mkdir rocdecode-sample && cd rocdecode-sample
cmake /opt/rocm/share/rocdecode/samples/videoDecode/
make -j8
./videodecode -i /opt/rocm/share/rocdecode/video/AMD_driving_virtual_20-H265.mp4

Using test package

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

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

Samples

You can access samples to decode your videos in our GitHub repository. Refer to the individual folders to build and run the samples.

FFmpeg is required for sample applications and make test. To install FFmpeg, refer to the instructions listed for your operating system:

  • Ubuntu:

    sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev
  • RHEL/SLES:

    Install ffmpeg development packages manually or use rocDecode-setup.py script

Docker

You can find rocDecode Docker containers in our GitHub repository.

Documentation

Run the following code to build our documentation locally.

cd docs
pip3 install -r sphinx/requirements.txt
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html

For more information on documentation builds, refer to the Building documentation page.

Tested configurations

  • Linux
    • Ubuntu - 20.04 / 22.04
    • RHEL - 8 / 9
    • SLES - 15 SP5
  • ROCm:
    • rocm-core - 6.2.0.60200-66
    • amdgpu-core - 1:6.2.60200-2009582
  • libva-dev - 2.7.0-2 / 2.14.0-1
  • mesa-amdgpu-va-drivers - 1:24.2.0.60200-2009582
  • mesa-amdgpu-dri-drivers - 24.1.0.60200
  • FFmpeg - 4.2.7 / 4.4.2-0
  • rocDecode Setup Script - V2.2.0

rocdecode's People

Contributors

jeffqjiangnew avatar aryansalmanpour avatar kiritigowda avatar lakshmikumar23 avatar rrawther avatar paveltc avatar samjwu avatar dependabot[bot] avatar eidenyoshida avatar amd-jmacaran avatar lisadelaney avatar dgaliffiamd avatar hliuca avatar rmalavally avatar yhuiyh avatar raramakr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.