An adaptor may be able to display video in a drawable, capture video from a drawable, or both. It translates between video encoding (NTSC, PAL, SECAM, etc...) and drawable format (depth and visual-id pair). An adaptor may support multiple video encodings and/or multiple drawable formats.
Clients use Xv(3X) to gain access and manage sharing of a display's video resources. Typically, a client will use XvQueryExtension(3X) to determine the status of the extension, XvQueryAdaptors(3X) to get a description of what video adaptors exist, and XvQueryEncodings(3X) to get a description of what video encodings an adaptor supports.
Once a client has determined what video resources are available, it is free to put video into a drawable or get video from a drawable, according the capabilities supported. Clients can select to receive events when video activity changes in a drawable and when port attributes have changed.
XvGetPortAttribute(3X) - return current port attribute value
XvGetStill(3X) - capture a single frame of video from a drawable
XvGetVideo(3X) - capture video from a drawable
XvGrabPort(3X) - lock port for exclusive use by client
XvPortNotify(3X) - event generated when port attributes change
XvPutStill(3X) - write a single frame of video to a drawable
XvPutVideo(3X) - write video into a drawable
XvQueryAdaptors(3X) - return adaptor information for a screen
XvQueryBestSize(3X) - determine the optimum drawable region size
XvQueryEncodings(3X) - return list of encodings for an adaptor
XvQueryExtension(3X) - return version and revision of extension
XvSelectPortNotify(3X) - enable or disable XvPortNotify events
XvSelectVideoNotify(3X) - enable or disable XvVideoNotify events
XvSetPortAttribute(3X) - set an attribute for a port
XvStopVideo(3X) - stop active video
XvUngrabPort(3X) - release a grabbed port
XvVideoNotify(3X) - event generated for video processing
Each of these
functions is described in its own Xv man page.