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.