NVIDIA launches Video Codec SDK 13.1
NVIDIA has launched Video Codec SDK 13.1, introducing zero-copy transcoding, AV1 B-frame support, and frame-accurate seeking to dramatically boost performance for AI and video workflows.

NVIDIA has released Video Codec SDK 13.1, upgrading video pipelines. A key addition is the AV1 Hierarchical Reference Mode, which expands NVENC's maximum B-frame support from 7 to 31, specifically offering 1, 3, 7, 15, and 31 B-frames. This mode is most effective at seven or more B-frames, such as 15 B-frames in preset p7. Additionally, the release combines iterative encoding from version 12.1 with UHQ tuning info from version 12.2. This allows four lookahead levels and temporal filtering—yielding average coding gains of 4-5% on natural content—to function alongside per-iteration re-encoding.
For decoding, the NVDECODE API now extracts per-macroblock statistics for H.264 and HEVC (H.265) streams, exposing the luma quantization parameter, coding unit type, and up to two motion vectors for every 16x16 block without CPU overhead, demonstrated in the AppDec-dumpstats sample. Practitioners also gain frame-accurate seeking via the NvVideoDecoder class, which uses a GOP-aware architecture, the SeekUtils engine, and CUVID_PKT_DISCONTINUITY to bypass unnecessary frame mapping. For 3D video, the SDK improves MV-HEVC stereoscopic support with view-ID and layer metadata, third-party compatibility, and Split Frame Encoding (SFE) to distribute high-resolution workloads.
The transcoding pipeline features a modular, queue-based architecture. Developers can benchmark and implement this using samples like AppTransPerf, AppTrans, AppTransOneToN, and the new AppTransZeroCopy. The zero-copy application optimizes 1080p H.264 transcoding by eliminating intermediate CPU-GPU copies. It allocates a shared pool of CUDA arrays via cuArray3DCreate with the CUDA_ARRAY3D_VIDEO_ENCODE_DECODE flag, registers them as external output surfaces via SetExternalOutputArrays(), and links them to the encoder using nvEncRegisterResource with the NV_ENC_INPUT_RESOURCE_TYPE_CUDAARRAY type.
To simplify deployment, the video-codec-sdk-docker repository provides an official Docker environment pinning CUDA 12.3.2, Vulkan SDK 1.4.304.1, and Ubuntu 22.04 LTS. It accepts the SDK_ZIP argument for Video_Codec_SDK_13.1.x.zip and an optional FFMPEG_URL. Pre-built samples like AppDec and AppEncCuda reside in /video-codec-sdk/Samples/build/, while FFmpeg is at /opt/ffmpeg to handle MJPEG, MPEG-1/2/4, and YUV. Users can run quick tests via sdk-samples, test-decode, and test-encode aliases across modes like full, h264, hevc, vp8, vp9, and av1, supporting resolutions like 1280x720.
This is our own summary of reporting by NVIDIA Developer Blog



