The rocDecode RocVideoDecoder utility class

The rocDecode RocVideoDecoder utility class#

The RocVideoDecoder class provides high-level calls to the core APIs.

The RocVideoDecoder class includes get functions that return information about the input frame, the output frame, the codec, the decoder, and the surface attributes.

  • GetCodecId(): returns the codec ID.

  • GetWidth(): returns the output frame width

  • GetDecodeWidth(): returns the decode width

  • GetHeight(): returns the output frame height

  • GetChromaHeight(): returns the chroma height

  • GetNumChromaPlanes(): returns the number of chroma planes

  • GetFrameSize(): returns the frame size based on pixel format

  • GetBitDepth(): returns the bit depth

  • GetBytePerPixel(): returns the bytes per pixel

  • GetSurfaceSize(): returns the surface size

  • GetSurfaceStride(): returns the surface stride

  • GetCodecFmtName(): returns the name of the output codec format

  • GetSurfaceFmtName(): returns the name of the surface format

  • GetDeviceinfo(): gets device information for the current device.

  • GetOutputSurfaceInfo(): gets the pointer to the output surface information

Utility functions are also provided:

  • CodecSupported() returns whether the codec is supported by the current device

  • AddDecoderSessionOverHead() adds to decoder initialization and deinitialization time to the total time for the decoding session

  • GetDecoderSessionOverHead() returns the total decoder initialization and deinitialization time for the decoding session

The RocVideoDecoder constructor instantiates a parser and a decoder, and initializes HIP on the device.

RocVideoDecoder(int device_id,  OutputSurfaceMemoryType out_mem_type, rocDecVideoCodec codec, bool force_zero_latency = false,
                const Rect *p_crop_rect = nullptr, bool extract_user_SEI_Message = false, uint32_t disp_delay = 0, int max_width = 0,
                int max_height = 0, uint32_t clk_rate = 1000, bool skip_init = false);

DecodeFrame() decodes a frame and returns the number of frames available for display.

GetFrame() returns a decoded frame and its timestamp.

ReleaseFrame releases the frame after processing is complete. It can only be used with OUT_SURFACE_MEM_DEV_INTERNAL.

DecodeFrame(), GetFrame(), and ReleaseFrame() should be called in a loop that fetches the available frames for decoding.

The decoder instance is reused when there’s a video resolution change, bit depth change, display size change, or decode buffer pool size change, without a change in the codec.

The decoder maintains a decode buffer pool of images that haven’t yet been displayed or processed. When the the decoder is reconfigured, the current decode buffer pool is deleted and a new decode buffer pool is created.

WaitForDecodeCompletion() waits for the last submitted picture to be decoded.

ReconfigureDecoder() reconfigures the decoder.

SetReconfigParams() sets the reconfiguration parameters.

GetNumOfFlushedFrames() returns the number of frames that were flushed during the reconfiguration.

SaveFrameToFile() saves a flushed frame to a file.

For more information about using the utility decoder, see Using the rocDecode RocVideoDecoder and Understanding the rocDecode videodecode sample.