> This page is for version 9.2 (default).
> For other versions, use one of these documentation indexes:
> - 9.2 (default): https://docs.nvidia.com/deepstream/9.2/llms.txt
> - Archives: https://docs.nvidia.com/deepstream/archives/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/deepstream/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/deepstream/_mcp/server.

# Gst-nvunixfd

The Gst-nvunixfd plugin performs the hardware video buffers sharing between different processes and pipelines via IPC (inter-process communication). Gst-nvunixfd provides the Gst-nvunixfdsink and Gst-nvunixfdsrc for sending and receiving the hardware video buffers between pipelines to avoid unnecessary memory copy. Gst-nvunixfdsink acts as a server, the NvBufSurfaceMapParams which contains the video buffer information and the IPC sharable FD(File Descriptor) of the video buffer are sent to the Gst-nvunixfdsrc. Gst-nvunixfdsrc then creates a new NvBufSurface with the received data. On Jetson, FD is the bufferDesc in the NvBufSurface structure. On DGPU, FD is a cudaIpcMemHandle_t handle derived from the CUDA memory.

The Gst-nvunixfdsink pipeline can send hardware video buffers to multiple Gst-nvunixfdsrc pipelines, the Gst-nvunixfdsrc pipeline can receive hardware video buffers from multiple Gst-nvunixfdsink pipelines. All the pipelines should work in the same device and the same system. The batched NvBufSurface is not supported.

## Gst-nvunixfdsink

Gst-nvunixfdsink is a Unix file descriptor sink derived from OSS unixfdsink element, which is used on server side.

![Gst-nvunixfd](/deepstream/_fern-img/d0c87672ea93d4077a4434b5a805ed9cc1096629e3892f46f3919d2701a18add.webp)

## Inputs and Outputs

* Inputs

  * Gst no-batched buffer

* Control parameters

  * gpu-id: selects the GPU ID
  * buffer-copy: copy buffer for every client
  * buffer-timestamp-copy: copy timestamp of the received Gst buffers
  * compute-hw: Compute HW for copy operation
  * meta-serialization-lib: Set meta serialization library name to be used
  * socket-type: The type of underlying socket
  * socket-path: The path to the control socket used to control the shared memory

* Output

  * After client connects, server passes the NvBufSurface handle, timestamp and other data to client through IPC.

## Features

The following table summarizes the features of the Gst-nvunixfdsink plugin.

**Gst-nvunixfdsink plugin features**

| Feature                 | Description                                                                                          | Release |
| ----------------------- | ---------------------------------------------------------------------------------------------------- | ------- |
| Configure GPU selection | Sets the GPU ID to be used for optical flow visualization operations (valid only for dGPU platforms) | DS 8.0  |
| buffer copy             | copy buffer for every client                                                                         | DS 8.0  |
| buffer timestamp copy   | copy timestamp of received buffer                                                                    | DS 8.0  |
| compute HW              | Compute HW for copy operation                                                                        | DS 8.0  |
| meta serialization lib  | Set meta serialization library name to be used                                                       | DS 8.0  |
| socket type             | The type of underlying socket                                                                        | DS 8.0  |
| socket path             | The path to the control socket used to control the shared memory                                     | DS 8.0  |

## Gst-nvunixfdsrc

Gst-nvunixfdsrc is a Unix file descriptor source derived from OSS unixfdsrc element, which is used on client side.

![Gst-nvunixfd](/deepstream/_fern-img/313eeda1ab9ef975d30325ac7f21042afe980b25eb16bb3de6f3fdf6c5097bec.webp)

## Inputs and Outputs

* Inputs

  * The NvBufSurface handle, timestamp and other data received from server.

* Control parameters

  * gpu-id: selects the GPU ID
  * buffer-copy: copy buffer for every client
  * buffer-timestamp-copy: copy timestamp of received buffer
  * compute-hw: Compute HW for copy operation
  * meta-deserialization-lib: Set meta deserialization library name to be used
  * socket-type: The type of underlying socket
  * socket-path: The path to the control socket used to control the shared memory
  * connection-attempts: Max number of attempts for connection (-1 = unlimited)
  * connection-interval: Connection interval between connection attempts in micro seconds

* Output

  * Gst no-batched buffer

## Features

The following table summarizes the features of the Gst-nvunixfdsrc plugin.

**Gst-nvunixfdsrc plugin features**

| Feature                  | Description                                                                                          | Release |
| ------------------------ | ---------------------------------------------------------------------------------------------------- | ------- |
| Configure GPU selection  | Sets the GPU ID to be used for optical flow visualization operations (valid only for dGPU platforms) | DS 8.0  |
| buffer copy              | copy buffer for every client                                                                         | DS 8.0  |
| buffer timestamp copy    | copy timestamp of received buffer                                                                    | DS 8.0  |
| compute HW               | Compute HW for copy operation                                                                        | DS 8.0  |
| meta deserialization lib | Set meta deserialization library name to be used                                                     | DS 8.0  |
| socket type              | The type of underlying socket                                                                        | DS 8.0  |
| socket path              | The path to the control socket used to control the shared memory                                     | DS 8.0  |
| connection attempts      | Max number of attempts for connection                                                                | DS 8.0  |
| connection interval      | connection interval                                                                                  | DS 8.0  |

## Gst Properties

The following table describes the Gst properties of the Gst-nvunixfdsrc plugin.

**Gst-nvunixfdsrc plugin gst properties**

| Property               | Meaning                                                                                               | Type and Range              | Example Notes                                                                      |
| ---------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------- | ---------------------------------------------------------------------------------- |
| gpu-id                 | Device ID of the GPU to be used(dGPU only)                                                            | Integer,0 to 4,294,967,295  | gpu-id=0                                                                           |
| buffer-copy            | Buffer copy                                                                                           | Boolean. Default: false     | buffer-copy=0                                                                      |
| buffer-timestamp-copy  | Buffer copy                                                                                           | Boolean. Default: false     | buffer-copy=0                                                                      |
| compute-hw             | Type of computing hardware: 0: Default (GPU for gDPU, CPU for Jetson) 1: VLC( only for Jetson) 2: GPU | enum GstComputeHW           | compute-hw=0 Default value is 0.                                                   |
| buffer-timestamp-copy  | Buffer copy                                                                                           | Boolean. Default: false     | buffer-copy=0                                                                      |
| meta-serialization-lib | Meta serialization library name                                                                       | String                      | ./lib/serialization.so                                                             |
| socket-type            | socket type                                                                                           | enum GUnixSocketAddressType | socket-type=G_UNIX_SOCKET_ADDRESS_PATH,Default value is G_UNIX_SOCKET_ADDRESS_PATH |
| socket-path            | Path to the control socket                                                                            | String                      | socket-path=/tmp/test1                                                             |
| connection-attempts    | Max number of attempts for connection (-1 = unlimited)                                                | int                         | connection-attempts=3,Default: -1                                                  |
| connection-interval    | Path to the control socket                                                                            | int                         | connection-interval=3000000,Default: 1000000                                       |