***
layout: overview
slug: nemo-curator/nemo\_curator/utils/nvcodec\_utils
title: nemo\_curator.utils.nvcodec\_utils
-----------------------------------------
## Module Contents
### Classes
| Name | Description |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| [`FrameExtractionPolicy`](#nemo_curator-utils-nvcodec_utils-FrameExtractionPolicy) | Policy for extracting frames from video, supporting full extraction or FPS-based sampling. |
| [`NvVideoDecoder`](#nemo_curator-utils-nvcodec_utils-NvVideoDecoder) | Low-level NVIDIA hardware-accelerated video decoder. |
| [`PyNvcFrameExtractor`](#nemo_curator-utils-nvcodec_utils-PyNvcFrameExtractor) | High-level frame extraction interface using PyNvVideoCodec. |
| [`VideoBatchDecoder`](#nemo_curator-utils-nvcodec_utils-VideoBatchDecoder) | GPU-accelerated video decoder that processes video frames in batches. |
### Functions
| Name | Description |
| ---------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| [`gpu_decode_for_stitching`](#nemo_curator-utils-nvcodec_utils-gpu_decode_for_stitching) | Decode video frames for stitching using GPU acceleration. |
### Data
[`_PYNVC_AVAILABLE`](#nemo_curator-utils-nvcodec_utils-_PYNVC_AVAILABLE)
[`pixel_format_to_cvcuda_code`](#nemo_curator-utils-nvcodec_utils-pixel_format_to_cvcuda_code)
### API
**Bases:** `enum.Enum`
Policy for extracting frames from video, supporting full extraction or FPS-based sampling.
This enum defines the available strategies for frame extraction from video content.
```python
class nemo_curator.utils.nvcodec_utils.NvVideoDecoder(
enc_file: str,
device_id: int,
batch_size: int,
cuda_ctx: typing.Any,
cvcuda_stream: typing.Any
)
```
Low-level NVIDIA hardware-accelerated video decoder.
This class provides direct access to NVIDIA's hardware video decoding capabilities,
handling frame decoding and memory management for video processing pipelines.
```python
nemo_curator.utils.nvcodec_utils.NvVideoDecoder.generate_decoded_frames() -> list[torch.Tensor]
```
Generate decoded frames from the video.
**Returns:** `list[torch.Tensor]`
List of decoded frames as tensors.
```python
nemo_curator.utils.nvcodec_utils.NvVideoDecoder.get_next_frames() -> torch.Tensor | None
```
Get the next frames from the video.
**Returns:** `torch.Tensor | None`
Next frames from the video as a tensor.
High-level frame extraction interface using PyNvVideoCodec.
This class provides a simplified interface for extracting frames from videos using
hardware acceleration, supporting both full extraction and FPS-based sampling.
Extract frames from the video.
**Parameters:**
Path to the video file to process.
Policy for extracting frames.
Sampling rate for FPS-based extraction.
**Returns:** `torch.Tensor`
List of decoded frames as tensors.
```python
class nemo_curator.utils.nvcodec_utils.VideoBatchDecoder(
batch_size: int,
target_width: int,
target_height: int,
device_id: int,
cuda_ctx: str,
cvcuda_stream: str
)
```
GPU-accelerated video decoder that processes video frames in batches.
This class handles video decoding using NVIDIA hardware acceleration, supporting
batch processing of frames with color space conversion and resizing capabilities.
```python
nemo_curator.utils.nvcodec_utils.VideoBatchDecoder.__call__(
input_path: str
) -> torch.Tensor | None
```
Process video frames in batches using GPU acceleration.
**Parameters:**
Path to the video file to process.
**Returns:** `torch.Tensor | None`
Processed video frames as a tensor.
```python
nemo_curator.utils.nvcodec_utils.VideoBatchDecoder.get_fps() -> int | None
```
Get the frame rate of the video.
**Returns:** `int | None`
Frame rate of the video.
```python
nemo_curator.utils.nvcodec_utils.gpu_decode_for_stitching(
device_id: int,
ctx: str,
stream: int,
input_path: pathlib.Path,
frame_list: list[int],
batch_size: int = 1
) -> list[torch.Tensor]
```
Decode video frames for stitching using GPU acceleration.
**Parameters:**
GPU device ID.
CUDA context.
CUDA stream.
Path to the video file to process.
List of frame indices to decode.
Number of frames to process in each batch.
**Returns:** `list[torch.Tensor]`
List of decoded frames as tensors.
```python
nemo_curator.utils.nvcodec_utils._PYNVC_AVAILABLE = True
```
```python
nemo_curator.utils.nvcodec_utils.pixel_format_to_cvcuda_code = {Nvc.Pixel_Format.YUV444: cvcuda.ColorConversion.YUV2RGB, Nvc.Pixel_Format.NV12:...
```