---
name: "XvPutImage"
section: "3"
platform: "linux"
package: "libxv"
version: "1.0.13-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XvPutImage"
---

# XvPutImage(3)

display an XvImage

## NAME

XvPutImage, XvShmPutImage - display an XvImage

## SYNOPSIS

**#include \<X11/extensions/Xvlib.h\>**

```
int XvPutImage (Display *dpy, XvPortID port,
                Drawable d, GC gc, XvImage *image,
                int src_x, int src_y,
                unsigned int src_w, unsigned int src_h,
                int dest_x, int dest_y,
                unsigned int dest_w, unsigned int dest_h);

int XvShmPutImage (Display *dpy, XvPortID port,
                   Drawable d, GC gc, XvImage *image,
                   int src_x, int src_y,
                   unsigned int src_w, unsigned int src_h,
                   int dest_x, int dest_y,
                   unsigned int dest_w, unsigned int dest_h,
                   Bool send_event);
```

## ARGUMENTS

- *dpy*

  Specifies the connection to the X server.

- *port*

  The port id of a port on an XvImage capable adaptor.

- *d*

  - *gc*

  the graphics context specifying the clip mask to use, if any.

- *image*

  A pointer to the XvImage to be displayed.

- *src\_?*

  The portion of the XvImage to be displayed.

- *dest\_?*

  The portion of the destination drawable to be filled by the image.

- *send\_event*

  Indicates whether or not an XShmCompletionEvent should be sent.  If sent, the event's major\_code and minor\_code fields will indicate the Xv extension's major code and XvShmPutImage's minor code.

## DESCRIPTION

[**XvPutImage**(3)](/XvPutImage/3.md) is similar to [**XPutImage**(3)](/XPutImage/3.md). [**XvShmPutImage**(3)](/XvShmPutImage/3.md) is similar to [**XShmPutImage**(3)](/XShmPutImage/3.md). The library will allocate the XvImage structure and fill out all fields except for *data*.  *Width* and *height* may be enlarged in some YUV formats.  The size of the data buffer that needs to be allocated will be given in the *data\_size* field in the XvImage. Image data is not allocated by this function.  The client may pass a pointer to the preallocated memory as *data* or may allocate the memory and fill in the XvImage structure's data field after the *data\_size* field has been filled out by the server.  The XvImage structure may be freed by [**XFree**(3)](/XFree/3.md).

## DIAGNOSTICS

- \[XvBadPort\]

  Generated if the requested port does not exist.

- \[XvBadAlloc\]

  Generated if the X server was unable to allocate resources required to complete the operation.

- \[BadMatch\]

  Generated if incompatible arguments were supplied, such as a port that isn't capable of displaying XvImages.

- \[BadShmSegCode\]

  Generated if an invalid shared memory segment is specified.

## SEE ALSO

[**XvListImageFormats**(3)](/XvListImageFormats/3.md), [**XvCreateImage**(3)](/XvCreateImage/3.md), [**XvShmCreateImage**(3)](/XvShmCreateImage/3.md) [**XPutImage**(3)](/XPutImage/3.md), [**XShmPutImage**(3)](/XShmPutImage/3.md)
