Addendum to the Xv Client library documentation

Addendum to the Xv Client library documentation
http://www.x.org/docs/Xv/video
===============================================

The following features are new to version 2.2

1) In addition to XvInputMask and XvOutputMask masks in the type field
of the XvAdaptorInfo there are 3 new bits defined - XvVideoMask,
XvStillMask and XvImageMask indicating that the adaptor is capable
of video, still or image primitives respectively.

2) A new function and structure is defined to allow querying
port attributes.

typedef struct {
int flags;
int min_value;
int max_value;
char *name;
} XvAttribute;

flags - May be XvGettable or XvSettable or both OR'd together
indicating the particular attribute is readable, writeable
or readable and writeable.

min_value, max_value - Indicate the minimun and maximum attribute
values which are valid for the driver.

name - A string describing the name of the attribute that may be used
to retrieve the Atom for the particular attribute.


extern XvAttribute* XvQueryPortAttributes(
Display* /* display */,
XvPortID /* port */,
int* /* number */
);

XvQueryPortAttributes returns the number of attributes and an
array of XvAttributes valid for the given port. The array may
be freed with XFree().


3) The X Video Extension (Xv) is extended to support client images in
alternate colorspaces (XvImages) in the following way.

Xv Adaptors which are capable of displaying XvImages will have
the XvImageMask field set in the type field of the XvAdaptorInfo.

XvImage formats supported by the port may be queried with
XvListImageFormats().

XvImages may be created with the help of XvCreateImage() or
XvShmCreateImage();

XvImages may be displayed with XvPutImage() or XvShmPutImage().

The Port attributes of the port specified in the Xv(Shm)PutImage
command will be valid for the image operation when applicable.

There will be a port encoding with the name "XV_IMAGE". The
width and height of that encoding will indicate the maximum
source image size.

typedef struct {
int id; /* Unique descriptor for the format */
int type; /* XvRGB, XvYUV */
int byte_order; /* LSBFirst, MSBFirst */
char guid[16]; /* Globally Unique IDentifier */
int bits_per_pixel;
int format; /* XvPacked, XvPlanar */
int num_planes;

/* for RGB formats */
int depth;
unsigned int red_mask;
unsigned int green_mask;
unsigned int blue_mask;

/* for YUV formats */
unsigned int y_sample_bits;
unsigned int u_sample_bits;
unsigned int v_sample_bits;
unsigned int horz_y_period;
unsigned int horz_u_period;
unsigned int horz_v_period;
unsigned int vert_y_period;
unsigned int vert_u_period;
unsigned int vert_v_period;
char component_order[32]; /* eg. UYVY */
int scanline_order; /* XvTopToBottom, XvBottomToTop */
} XvImageFormatValues;


id - A unique descriptor for the format. This is often the FOURCC
for the format, when applicable. This id is used to describe
the format during XvImage creation.

type - XvRGB or XvYUV.

byte_order - The byte order of the image. It is either LSBFirst
or MSBFirst.

guid - The Globally Unique IDentifier (also known as Universally Unique
IDentifier). When not applicable, all characters are NULL.

bits_per_pixel - The bits taken up (but not necessarily used) by each
pixel. Note that for some planar formats which have
fractional bits per pixel (such as IF09) this number
may be rounded _down_.

format - XvPacked or XvPlanar.

num_planes - The number of planes in planar formats.

depth - Significant bits per pixel.

red_mask, green_mask, blue_mask - The red, green and blue bitmasks
(RGB formats only).


?_sample_bits - The size of each sample in bits (YUV formats only).

horz_?_period, vert_?_period - The period (in pixels) on which samples
occur in the horizontal and vertical
directions (YUV formats only).

component_order - Upper case ascii characters representing the order
that samples are stored within packed formats.
For planar formats this represents the ordering of
the planes.

scanline_order - XvTopToBottom or XvBottomToTop.

Note: Since some formats (particularly some planar YUV formats) may not
be completely defined by the parameters above, the guid, when
available, should provide the most accurate description of the
format.



XvImageFormatValues * XvListImageFormats (
Display *display,
XvPortID port_id,
int *count_return
);

Returns the XvImageFormatValues supported by the specified port.
This list should be freed with XFree().


typedef struct {
int id;
int width, height;
int data_size;
int num_planes;
int *pitches;
int *offsets;
char *data;
XPointer obdata;
} XvImage;

id - XvImageFormatValues id.

width, height - The width and height of the image in pixels.

int data_size - The size of the data buffer in bytes.

num_planes - The number of image planes.

pitches - An array of size num_planes indicating the scanline pitch
in bytes. Each plane may have a different pitch.

offsets - An array of size num_planes indicating the byte offset
from "data" to the start of each plane.

data - A pointer to the start of the data buffer.

obdata - A private field for holding SHM info. This field will be
set up by the client libraries so the programmer will
generally need not be concerned with this field.

XvImage * XvCreateImage (
Display *display,
XvPortID port,
int id,
char *data,
int width,
int height
);

display - Specifies the connection to the Xserver.
port - Specifies the port the XvImage will be used with.
id - Specifies the format of the image to be created by
the XvImageFormatValues id.
data - Specifies the image data.
width
height - Specifies the desired width and height of the image.

This function is similar to XCreateImage. 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
give 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();


XvImage * XvShmCreateImage (
Display *display,
XvPortID port,
int id,
char* data,
int width,
int height,
XShmSegmentInfo *shminfo
);

This function is similar to XShmCreateImage. 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
give 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();


XvPutImage (
Display *display,
XvPortID id,
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,
);

XvShmPutImage (
Display *display,
XvPortID id,
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
);

display - The connection to the X-Server.

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

d - The target drawable.

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.

Shared memory segments are attached/detached with XShmAttach/Detach.


Some of the possible Errors:

BadDrawable - The specified drawable does not exist.
BadContext - The specified GC does not exist.
BadMatch - Incompatible arguments such as a port that isn't capable
of displaying XvImages.
XvBadPort - The specified port does not exist.
BadAlloc - The server was unable to allocate resources required
to complete the operation.
BadValue - Some numeric value falls outside the range of the
values accepted by the request.
BadShmSegCode - An invalid shared memory segment.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值