Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libva
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
libva
Commits
42c28c46
Commit
42c28c46
authored
Sep 13, 2007
by
Austin Yuan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bump libva to 23
parent
f579969b
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
179 additions
and
15 deletions
+179
-15
dummy_drv_video/dummy_drv_video.c
dummy_drv_video/dummy_drv_video.c
+34
-1
src/va.c
src/va.c
+40
-1
src/va.h
src/va.h
+36
-12
src/va_backend.h
src/va_backend.h
+20
-0
src/va_x11.h
src/va_x11.h
+49
-1
No files found.
dummy_drv_video/dummy_drv_video.c
View file @
42c28c46
...
...
@@ -517,6 +517,18 @@ VAStatus dummy_DestroySubpicture(
return
VA_STATUS_SUCCESS
;
}
VAStatus
dummy_SetSubpictureImage
(
VADriverContextP
ctx
,
VASubpicture
*
subpicture
,
VAImage
*
image
)
{
INIT_DRIVER_DATA
/* TODO */
return
VA_STATUS_SUCCESS
;
}
VAStatus
dummy_SetSubpicturePalette
(
VADriverContextP
ctx
,
VASubpicture
*
subpicture
,
...
...
@@ -1005,6 +1017,25 @@ VAStatus dummy_PutSurface(
return
VA_STATUS_ERROR_UNKNOWN
;
}
VAStatus
dummy_CopySurfaceToGLXPbuffer
(
VADriverContextP
ctx
,
VASurface
*
surface
,
XID
pbuffer_id
,
short
srcx
,
short
srcy
,
unsigned
short
width
,
unsigned
short
height
,
short
destx
,
short
desty
,
unsigned
int
draw_buffer
,
unsigned
int
flags
/* de-interlacing flags */
)
{
/* TODO */
return
VA_STATUS_ERROR_UNKNOWN
;
}
VAStatus
dummy_DbgCopySurfaceToBuffer
(
VADriverContextP
ctx
,
VASurface
*
surface
,
...
...
@@ -1056,7 +1087,7 @@ VAStatus dummy_Terminate( VADriverContextP ctx )
return
VA_STATUS_SUCCESS
;
}
VAStatus
__vaDriverInit_0_2
2
(
VADriverContextP
ctx
)
VAStatus
__vaDriverInit_0_2
3
(
VADriverContextP
ctx
)
{
object_base_p
obj
;
int
result
;
...
...
@@ -1094,6 +1125,7 @@ VAStatus __vaDriverInit_0_22( VADriverContextP ctx )
ctx
->
vtable
.
vaSyncSurface
=
dummy_SyncSurface
;
ctx
->
vtable
.
vaQuerySurfaceStatus
=
dummy_QuerySurfaceStatus
;
ctx
->
vtable
.
vaPutSurface
=
dummy_PutSurface
;
ctx
->
vtable
.
vaCopySurfaceToGLXPbuffer
=
dummy_CopySurfaceToGLXPbuffer
;
ctx
->
vtable
.
vaQueryImageFormats
=
dummy_QueryImageFormats
;
ctx
->
vtable
.
vaCreateImage
=
dummy_CreateImage
;
ctx
->
vtable
.
vaDestroyImage
=
dummy_DestroyImage
;
...
...
@@ -1102,6 +1134,7 @@ VAStatus __vaDriverInit_0_22( VADriverContextP ctx )
ctx
->
vtable
.
vaQuerySubpictureFormats
=
dummy_QuerySubpictureFormats
;
ctx
->
vtable
.
vaCreateSubpicture
=
dummy_CreateSubpicture
;
ctx
->
vtable
.
vaDestroySubpicture
=
dummy_DestroySubpicture
;
ctx
->
vtable
.
vaSetSubpictureImage
=
dummy_SetSubpictureImage
;
ctx
->
vtable
.
vaSetSubpicturePalette
=
dummy_SetSubpicturePalette
;
ctx
->
vtable
.
vaSetSubpictureChromakey
=
dummy_SetSubpictureChromakey
;
ctx
->
vtable
.
vaSetSubpictureGlobalAlpha
=
dummy_SetSubpictureGlobalAlpha
;
...
...
src/va.c
View file @
42c28c46
...
...
@@ -36,7 +36,7 @@
#define DEFAULT_DRIVER_DIR "/usr/X11R6/lib/modules/dri"
#define DRIVER_EXTENSION "_drv_video.so"
#define DRIVER_INIT_FUNC "__vaDriverInit_0_2
2
"
#define DRIVER_INIT_FUNC "__vaDriverInit_0_2
3
"
#define CTX(dpy) ((VADriverContextP) dpy );
#define ASSERT_CONTEXT(dpy) assert( vaDbgContextIsValid(dpy) )
...
...
@@ -276,6 +276,7 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
CHECK_VTABLE
(
vaStatus
,
ctx
,
SyncSurface
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QuerySurfaceStatus
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
PutSurface
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
CopySurfaceToGLXPbuffer
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QueryImageFormats
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
CreateImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DestroyImage
);
...
...
@@ -284,6 +285,7 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
CHECK_VTABLE
(
vaStatus
,
ctx
,
QuerySubpictureFormats
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
CreateSubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DestroySubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpictureImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpicturePalette
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpictureChromakey
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpictureGlobalAlpha
);
...
...
@@ -762,6 +764,29 @@ VAStatus vaPutSurface (
cliprects
,
number_cliprects
,
flags
);
}
VAStatus
vaCopySurfaceToGLXPbuffer
(
VADisplay
dpy
,
VASurface
*
surface
,
XID
pbuffer_id
,
short
srcx
,
short
srcy
,
unsigned
short
width
,
unsigned
short
height
,
short
destx
,
short
desty
,
unsigned
int
draw_buffer
,
unsigned
int
flags
/* de-interlacing flags */
)
{
VADriverContextP
ctx
=
CTX
(
dpy
);
ASSERT_CONTEXT
(
ctx
);
TRACE
(
vaCopySurfaceToGLXPbuffer
);
return
ctx
->
vtable
.
vaCopySurfaceToGLXPbuffer
(
ctx
,
surface
,
pbuffer_id
,
srcx
,
srcy
,
width
,
height
,
destx
,
desty
,
draw_buffer
,
flags
);
}
/* Get maximum number of image formats supported by the implementation */
int
vaMaxNumImageFormats
(
VADisplay
dpy
...
...
@@ -931,6 +956,20 @@ VAStatus vaDestroySubpicture (
return
ctx
->
vtable
.
vaDestroySubpicture
(
ctx
,
subpicture
);
}
VAStatus
vaSetSubpictureImage
(
VADisplay
dpy
,
VASubpicture
*
subpicture
,
VAImage
*
image
)
{
VADriverContextP
ctx
=
CTX
(
dpy
);
ASSERT_CONTEXT
(
ctx
);
TRACE
(
vaSetSubpictureImage
);
return
ctx
->
vtable
.
vaSetSubpictureImage
(
ctx
,
subpicture
,
image
);
}
VAStatus
vaSetSubpicturePalette
(
VADisplay
dpy
,
VASubpicture
*
subpicture
,
...
...
src/va.h
View file @
42c28c46
...
...
@@ -24,7 +24,7 @@
/*
* Video Decode Acceleration API Specification
*
* Rev. 0.2
2
* Rev. 0.2
3
* <jonathan.bian@intel.com>
*
* Revision History:
...
...
@@ -41,7 +41,8 @@
* rev 0.19 (08/06/2007 Jonathan Bian) - Removed extra type for bitplane data.
* rev 0.20 (08/08/2007 Jonathan Bian) - Added missing fields to VC-1 PictureParameter structure.
* rev 0.21 (08/20/2007 Jonathan Bian) - Added image and subpicture support.
* rev 0.22 (08/27/2007 Jonathan Bian) - Added support for chroma-keying and global alpha.
* rev 0.22 (08/27/2007 Jonathan Bian) - Added support for chroma-keying and global alpha.
* rev 0.23 (09/07/2007 Jonathan Bian) - Fixed some issues with images and subpictures.
*
* Acknowledgements:
* Some concepts borrowed from XvMC and XvImage.
...
...
@@ -397,7 +398,8 @@ typedef enum
VASliceDataBufferType
=
5
,
VAMacroblockParameterBufferType
=
6
,
VAResidualDataBufferType
=
7
,
VADeblockingParameterBufferType
=
8
VADeblockingParameterBufferType
=
8
,
VAImageBufferType
=
9
}
VABufferType
;
/****************************
...
...
@@ -430,7 +432,9 @@ typedef struct _VAPictureParameterBufferMPEG2
unsigned
char
alternate_scan
:
1
;
unsigned
char
repeat_first_field
:
1
;
unsigned
char
progressive_frame
:
1
;
unsigned
char
is_first_field
:
1
;
/* indicate whether the current field is the first field for field picture */
unsigned
char
is_first_field
:
1
;
/* indicate whether the current field
* is the first field for field picture
*/
};
unsigned
int
picture_coding_extension
;
};
...
...
@@ -1030,6 +1034,7 @@ VAStatus vaQuerySurfaceStatus (
VASurfaceStatus
*
status
/* out */
);
/*
* Copies the surface to a buffer
* The stride of the surface will be stored in *stride
...
...
@@ -1075,10 +1080,18 @@ typedef int VAImageID;
typedef
struct
_VAImage
{
VAImageID
image_id
;
/* uniquely identify this image */
VASurfaceID
surface_id
;
/* which surface will this image be associated with */
VAImageFormat
format
;
unsigned
char
*
data
;
/* image data pointer */
/* The following fields are set by the library */
VABufferID
buf
;
/* image data buffer */
/*
* Image data will be stored in a buffer of type VAImageBufferType to facilitate
* data store on the server side for optimal performance.
* It is expected that the client will first call vaCreateImage which returns a VAImage
* structure with the following fields filled by the library. It will then
* create the "buf" with vaBufferCreate. For PutImage, then client will call
* vaBufferData() with the image data before calling PutImage, and for GetImage
* the client will call vaBufferData() with a NULL data pointer, and then call GetImage.
* After that the client can use the Map/Unmap buffer functions to access the image data.
*/
unsigned
short
width
;
unsigned
short
height
;
unsigned
int
data_size
;
...
...
@@ -1090,7 +1103,7 @@ typedef struct _VAImage
unsigned
int
*
pitches
;
/*
* An array of size num_planes indicating the byte offset from
*
"data" t
the start of each plane.
*
the beginning of the image data to
the start of each plane.
*/
unsigned
int
*
offsets
;
}
VAImage
;
...
...
@@ -1113,12 +1126,13 @@ VAStatus vaQueryImageFormats (
);
/*
* Create a VAImage structure
* The width and height fields returned in the VAImage structure may get
* enlarged for some YUV formats. The size of the data buffer that needs
* to be allocated will be given in the "data_size" field in VAImage.
* Image data is not allocated by this function. The client should
* allocate the memory
and fill in the VAImage structure's data field
*
after looking at "data_size" returned from the library
.
* Image data is not allocated by this function. The client should
* allocate the memory
required for the data and fill in the data field after
*
looking at "data_size" returned from this call
.
*/
VAStatus
vaCreateImage
(
VADisplay
dpy
,
...
...
@@ -1244,6 +1258,16 @@ VAStatus vaDestroySubpicture (
VASubpicture
*
subpicture
);
/*
* Bind an image to the subpicture. This image will now be associated with
* the subpicture instead of the one at creation.
*/
VAStatus
vaSetSubpictureImage
(
VADisplay
dpy
,
VASubpicture
*
subpicture
,
VAImage
*
image
);
VAStatus
vaSetSubpicturePalette
(
VADisplay
dpy
,
VASubpicture
*
subpicture
,
...
...
@@ -1453,7 +1477,7 @@ Mostly to demonstrate program flow with no error handling ...
VASubpicture subpicture;
unsigned char sub_data[128][16];
/* fill sub_data with subtitle in AI44 */
vaCreateImage(dpy, su
rfaces, sub_formats, 128, 16, sub_data,
&sub_image);
vaCreateImage(dpy, su
b_formats, 128, 16,
&sub_image);
vaCreateSubpicture(dpy, &sub_image, &subpicture);
unsigned char palette[3][16];
/* fill the palette data */
...
...
src/va_backend.h
View file @
42c28c46
...
...
@@ -208,6 +208,20 @@ struct VADriverContext
int
flags
/* de-interlacing flags */
);
VAStatus
(
*
vaCopySurfaceToGLXPbuffer
)
(
VADriverContextP
ctx
,
VASurface
*
surface
,
XID
pbuffer_id
,
short
srcx
,
short
srcy
,
unsigned
short
width
,
unsigned
short
height
,
short
destx
,
short
desty
,
unsigned
int
draw_buffer
,
unsigned
int
flags
/* de-interlacing flags */
);
VAStatus
(
*
vaQueryImageFormats
)
(
VADriverContextP
ctx
,
VAImageFormat
*
format_list
,
/* out */
...
...
@@ -267,6 +281,12 @@ struct VADriverContext
VASubpicture
*
subpicture
);
VAStatus
(
*
vaSetSubpictureImage
)
(
VADriverContextP
ctx
,
VASubpicture
*
subpicture
,
VAImage
*
image
);
VAStatus
(
*
vaSetSubpicturePalette
)
(
VADriverContextP
ctx
,
VASubpicture
*
subpicture
,
...
...
src/va_x11.h
View file @
42c28c46
...
...
@@ -31,7 +31,11 @@ extern "C" {
* color space conversion and scaling to the destination
* rectangle
*/
/* de-interlace flags for vaPutSurface */
#define VA_TOP_FIELD 0x00000001
#define VA_BOTTOM_FIELD 0x00000002
#define VA_FRAME_PICTURE 0x00000004
/* weave */
VAStatus
vaPutSurface
(
VADisplay
dpy
,
VASurface
*
surface
,
...
...
@@ -49,6 +53,50 @@ VAStatus vaPutSurface (
int
flags
/* de-interlacing flags */
);
/*
This function copies a rectangle of dimension "width" by "height"
from the VASurface indicated by "surface" to the GLXPbuffer
identified by its XID "pbuffer_id". The locations of source and
destination rectangles are specified differently for the VASurface
source and the GLXPbuffer destination as follows. On the VASurface,
the rectangle location is specified in the usual X-Window fashion
with srcx and srcy indicating the location of the upper left hand
corner of the rectangle relative to the VASurface origin (the upper
left hand corner of the XvMCSurface with positive Y axis going in the
down direction). On the GLXPbuffer the rectangle location is
specified in the usual OpenGL fashion with the dstx and dsty
indicating the location of the lower left hand corner of the
rectangle relative to the GLXPbuffer origin (the lower left hand
corner of the GLXPbuffer with the positive Y axis going in the
up direction).
The "draw_buffer" takes the same OpenGL enums that glDrawBuffer()
takes (ie. GL_FRONT_LEFT, GL_FRONT_RIGHT, GL_BACK_LEFT, GL_BACK_RIGHT,
GL_FRONT, GL_BACK, GL_LEFT, GL_RIGHT or GL_FRONT_AND_BACK). This
indicates which buffer of the GLXPbuffer is to be used for the
destination of the copy. Buffers specified in the "draw_buffer"
that do not exist in the GLXPbuffer are ignored.
"flags" may be VA_TOP_FIELD, VA_BOTTOM_FIELD or VA_FRAME_PICTURE.
If flags is not VA_FRAME_PICTURE, the srcy and height are in field
coordinates, not frame. That is, the total copyable height is half
the height of the VASurface.
*/
VAStatus
vaCopySurfaceToGLXPbuffer
(
VADisplay
dpy
,
VASurface
*
surface
,
XID
pbuffer_id
,
short
srcx
,
short
srcy
,
unsigned
short
width
,
unsigned
short
height
,
short
destx
,
short
desty
,
unsigned
int
draw_buffer
,
unsigned
int
flags
/* de-interlacing flags */
);
#ifdef __cplusplus
}
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment