# CUDA IPC Texture Export

The CUDA IPC Texture Export entity shares the picture of a video entity with other applications on the same computer, directly in GPU memory. Other applications read it with GStreamer’s `cudaipcsrc` element, for example to run inference on the cameras that OdenVR receives without decoding the video again. The entity is available on computers with an NVIDIA GPU.

Every time the source gets a new frame, the entity scales it to the share size, converts it to NV12 (BT.709, limited range) and hands it to the readers, so the export runs at the frame rate of its source. The picture stays in GPU memory all the way.

## Settings

Source

The video entity to export, for example a 2D Video or one camera of a [Remote Streamer](entity-remote-streamer.md).

Share Width, Share Height

Size of the exported picture in pixels.

Share Path

Address that readers connect to: a Unix socket path on Linux (default `/tmp/oden_0`), a named pipe name on Windows (default `oden_0`). Only the connection goes through it; the picture itself is shared on the GPU. Use one path per export.

Start, Stop

Start or stop sharing.

Copy Example Receive Pipeline

Copies a `gst-launch-1.0` command that shows the export in a window.

Advanced Stats

Status of the export and how many of its picture buffers are free.

## Reading an export

The reader needs GStreamer 1.24 or newer with the `cudaipcsrc` element (`gstreamer1.0-plugins-bad` on Ubuntu 24.04 and later) and the NVIDIA driver:

```sh
gst-launch-1.0 cudaipcsrc address=/tmp/oden_0 ! cudadownload ! videoconvert ! autovideosink
```

-   Put a CUDA element directly after `cudaipcsrc` (`cudadownload`, `cudaconvert`, `nvh264enc`, …​). With a non-CUDA element after it, the pipeline negotiates but no frames arrive.
    
-   To read many exports, use one process with one pipeline that has a `cudaipcsrc` branch per export. Every reader process creates its own CUDA context, which costs GPU memory (around 300 MB on a desktop GPU).
    

To use exports without showing the video, run OdenVR headless, see [Command Line Arguments](command-line-arguments.md).
