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
f8ccff8a
Commit
f8ccff8a
authored
Dec 06, 2007
by
Waldo Bastian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update to VA API 0.28
parent
90abc964
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
332 additions
and
46 deletions
+332
-46
configure.ac
configure.ac
+1
-1
debian/files
debian/files
+2
-2
dummy_drv_video/dummy_drv_video.c
dummy_drv_video/dummy_drv_video.c
+63
-2
dummy_drv_video/dummy_drv_video.h
dummy_drv_video/dummy_drv_video.h
+1
-1
src/Makefile.am
src/Makefile.am
+1
-1
src/va.c
src/va.c
+117
-5
src/va.h
src/va.h
+103
-31
src/va_backend.h
src/va_backend.h
+40
-0
src/va_x11.h
src/va_x11.h
+1
-1
test/vainfo.c
test/vainfo.c
+3
-2
No files found.
configure.ac
View file @
f8ccff8a
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
AC_PREREQ(2.57)
AC_PREREQ(2.57)
AC_INIT([libva], 0.2
6
, [waldo.bastian@intel.com], libva)
AC_INIT([libva], 0.2
8
, [waldo.bastian@intel.com], libva)
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2])
AM_INIT_AUTOMAKE([dist-bzip2])
...
...
debian/files
View file @
f8ccff8a
libva-dev_0.2
0
-1_i386.deb libdevel extra
libva-dev_0.2
4
-1_i386.deb libdevel extra
libva1_0.2
0
-1_i386.deb libs extra
libva1_0.2
4
-1_i386.deb libs extra
dummy_drv_video/dummy_drv_video.c
View file @
f8ccff8a
...
@@ -451,6 +451,18 @@ VAStatus dummy_CreateImage(
...
@@ -451,6 +451,18 @@ VAStatus dummy_CreateImage(
return
VA_STATUS_SUCCESS
;
return
VA_STATUS_SUCCESS
;
}
}
VAStatus
dummy_DeriveImage
(
VADriverContextP
ctx
,
VASurfaceID
surface
,
VAImage
*
image
/* out */
)
{
INIT_DRIVER_DATA
/* TODO */
return
VA_STATUS_SUCCESS
;
}
VAStatus
dummy_DestroyImage
(
VAStatus
dummy_DestroyImage
(
VADriverContextP
ctx
,
VADriverContextP
ctx
,
VAImageID
image
VAImageID
image
...
@@ -508,6 +520,26 @@ VAStatus dummy_PutImage(
...
@@ -508,6 +520,26 @@ VAStatus dummy_PutImage(
return
VA_STATUS_SUCCESS
;
return
VA_STATUS_SUCCESS
;
}
}
VAStatus
dummy_PutImage2
(
VADriverContextP
ctx
,
VASurfaceID
surface
,
VAImageID
image
,
int
src_x
,
int
src_y
,
unsigned
int
src_width
,
unsigned
int
src_height
,
int
dest_x
,
int
dest_y
,
unsigned
int
dest_width
,
unsigned
int
dest_height
)
{
INIT_DRIVER_DATA
/* TODO */
return
VA_STATUS_SUCCESS
;
}
VAStatus
dummy_QuerySubpictureFormats
(
VAStatus
dummy_QuerySubpictureFormats
(
VADriverContextP
ctx
,
VADriverContextP
ctx
,
VAImageFormat
*
format_list
,
/* out */
VAImageFormat
*
format_list
,
/* out */
...
@@ -623,6 +655,32 @@ VAStatus dummy_AssociateSubpicture(
...
@@ -623,6 +655,32 @@ VAStatus dummy_AssociateSubpicture(
return
VA_STATUS_SUCCESS
;
return
VA_STATUS_SUCCESS
;
}
}
VAStatus
dummy_AssociateSubpicture2
(
VADriverContextP
ctx
,
VASubpictureID
subpicture
,
VASurfaceID
*
target_surfaces
,
int
num_surfaces
,
short
src_x
,
/* upper left offset in subpicture */
short
src_y
,
unsigned
short
src_width
,
unsigned
short
src_height
,
short
dest_x
,
/* upper left offset in surface */
short
dest_y
,
unsigned
short
dest_width
,
unsigned
short
dest_height
,
/*
* whether to enable chroma-keying or global-alpha
* see VA_SUBPICTURE_XXX values
*/
unsigned
int
flags
)
{
INIT_DRIVER_DATA
/* TODO */
return
VA_STATUS_SUCCESS
;
}
VAStatus
dummy_DeassociateSubpicture
(
VAStatus
dummy_DeassociateSubpicture
(
VADriverContextP
ctx
,
VADriverContextP
ctx
,
VASubpictureID
subpicture
,
VASubpictureID
subpicture
,
...
@@ -1141,7 +1199,7 @@ VAStatus dummy_Terminate( VADriverContextP ctx )
...
@@ -1141,7 +1199,7 @@ VAStatus dummy_Terminate( VADriverContextP ctx )
return
VA_STATUS_SUCCESS
;
return
VA_STATUS_SUCCESS
;
}
}
VAStatus
__vaDriverInit_0_2
6
(
VADriverContextP
ctx
)
VAStatus
__vaDriverInit_0_2
8
(
VADriverContextP
ctx
)
{
{
object_base_p
obj
;
object_base_p
obj
;
int
result
;
int
result
;
...
@@ -1149,7 +1207,7 @@ VAStatus __vaDriverInit_0_26( VADriverContextP ctx )
...
@@ -1149,7 +1207,7 @@ VAStatus __vaDriverInit_0_26( VADriverContextP ctx )
int
i
;
int
i
;
ctx
->
version_major
=
0
;
ctx
->
version_major
=
0
;
ctx
->
version_minor
=
2
6
;
ctx
->
version_minor
=
2
8
;
ctx
->
max_profiles
=
DUMMY_MAX_PROFILES
;
ctx
->
max_profiles
=
DUMMY_MAX_PROFILES
;
ctx
->
max_entrypoints
=
DUMMY_MAX_ENTRYPOINTS
;
ctx
->
max_entrypoints
=
DUMMY_MAX_ENTRYPOINTS
;
ctx
->
max_attributes
=
DUMMY_MAX_CONFIG_ATTRIBUTES
;
ctx
->
max_attributes
=
DUMMY_MAX_CONFIG_ATTRIBUTES
;
...
@@ -1183,10 +1241,12 @@ VAStatus __vaDriverInit_0_26( VADriverContextP ctx )
...
@@ -1183,10 +1241,12 @@ VAStatus __vaDriverInit_0_26( VADriverContextP ctx )
ctx
->
vtable
.
vaPutSurface
=
dummy_PutSurface
;
ctx
->
vtable
.
vaPutSurface
=
dummy_PutSurface
;
ctx
->
vtable
.
vaQueryImageFormats
=
dummy_QueryImageFormats
;
ctx
->
vtable
.
vaQueryImageFormats
=
dummy_QueryImageFormats
;
ctx
->
vtable
.
vaCreateImage
=
dummy_CreateImage
;
ctx
->
vtable
.
vaCreateImage
=
dummy_CreateImage
;
ctx
->
vtable
.
vaDeriveImage
=
dummy_DeriveImage
;
ctx
->
vtable
.
vaDestroyImage
=
dummy_DestroyImage
;
ctx
->
vtable
.
vaDestroyImage
=
dummy_DestroyImage
;
ctx
->
vtable
.
vaSetImagePalette
=
dummy_SetImagePalette
;
ctx
->
vtable
.
vaSetImagePalette
=
dummy_SetImagePalette
;
ctx
->
vtable
.
vaGetImage
=
dummy_GetImage
;
ctx
->
vtable
.
vaGetImage
=
dummy_GetImage
;
ctx
->
vtable
.
vaPutImage
=
dummy_PutImage
;
ctx
->
vtable
.
vaPutImage
=
dummy_PutImage
;
ctx
->
vtable
.
vaPutImage2
=
dummy_PutImage2
;
ctx
->
vtable
.
vaQuerySubpictureFormats
=
dummy_QuerySubpictureFormats
;
ctx
->
vtable
.
vaQuerySubpictureFormats
=
dummy_QuerySubpictureFormats
;
ctx
->
vtable
.
vaCreateSubpicture
=
dummy_CreateSubpicture
;
ctx
->
vtable
.
vaCreateSubpicture
=
dummy_CreateSubpicture
;
ctx
->
vtable
.
vaDestroySubpicture
=
dummy_DestroySubpicture
;
ctx
->
vtable
.
vaDestroySubpicture
=
dummy_DestroySubpicture
;
...
@@ -1195,6 +1255,7 @@ VAStatus __vaDriverInit_0_26( VADriverContextP ctx )
...
@@ -1195,6 +1255,7 @@ VAStatus __vaDriverInit_0_26( VADriverContextP ctx )
ctx
->
vtable
.
vaSetSubpictureChromakey
=
dummy_SetSubpictureChromakey
;
ctx
->
vtable
.
vaSetSubpictureChromakey
=
dummy_SetSubpictureChromakey
;
ctx
->
vtable
.
vaSetSubpictureGlobalAlpha
=
dummy_SetSubpictureGlobalAlpha
;
ctx
->
vtable
.
vaSetSubpictureGlobalAlpha
=
dummy_SetSubpictureGlobalAlpha
;
ctx
->
vtable
.
vaAssociateSubpicture
=
dummy_AssociateSubpicture
;
ctx
->
vtable
.
vaAssociateSubpicture
=
dummy_AssociateSubpicture
;
ctx
->
vtable
.
vaAssociateSubpicture2
=
dummy_AssociateSubpicture2
;
ctx
->
vtable
.
vaDeassociateSubpicture
=
dummy_DeassociateSubpicture
;
ctx
->
vtable
.
vaDeassociateSubpicture
=
dummy_DeassociateSubpicture
;
ctx
->
vtable
.
vaQueryDisplayAttributes
=
dummy_QueryDisplayAttributes
;
ctx
->
vtable
.
vaQueryDisplayAttributes
=
dummy_QueryDisplayAttributes
;
ctx
->
vtable
.
vaGetDisplayAttributes
=
dummy_GetDisplayAttributes
;
ctx
->
vtable
.
vaGetDisplayAttributes
=
dummy_GetDisplayAttributes
;
...
...
dummy_drv_video/dummy_drv_video.h
View file @
f8ccff8a
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
#define DUMMY_MAX_IMAGE_FORMATS 10
#define DUMMY_MAX_IMAGE_FORMATS 10
#define DUMMY_MAX_SUBPIC_FORMATS 4
#define DUMMY_MAX_SUBPIC_FORMATS 4
#define DUMMY_MAX_DISPLAY_ATTRIBUTES 4
#define DUMMY_MAX_DISPLAY_ATTRIBUTES 4
#define DUMMY_STR_VENDOR "Dummy
-dummy-1.0-dummy
"
#define DUMMY_STR_VENDOR "Dummy
Driver 1.0
"
struct
dummy_driver_data
{
struct
dummy_driver_data
{
struct
object_heap
config_heap
;
struct
object_heap
config_heap
;
...
...
src/Makefile.am
View file @
f8ccff8a
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
libva_la_LTLIBRARIES
=
libva.la
libva_la_LTLIBRARIES
=
libva.la
libva_ladir
=
$(libdir)
libva_ladir
=
$(libdir)
libva_la_LDFLAGS
=
-version-number
0:2
6
:0
-no-undefined
libva_la_LDFLAGS
=
-version-number
0:2
8
:0
-no-undefined
libva_la_LIBADD
=
-ldl
-lX11
-lXext
libva_la_LIBADD
=
-ldl
-lX11
-lXext
libva_la_SOURCES
=
va_dri.c va.c va_dristr.h
libva_la_SOURCES
=
va_dri.c va.c va_dristr.h
...
...
src/va.c
View file @
f8ccff8a
...
@@ -35,8 +35,8 @@
...
@@ -35,8 +35,8 @@
#include "va_dri.h"
#include "va_dri.h"
#define VA_MAJOR_VERSION 0
#define VA_MAJOR_VERSION 0
#define VA_MINOR_VERSION 2
6
#define VA_MINOR_VERSION 2
8
#define DRIVER_INIT_FUNC "__vaDriverInit_0_2
6
"
#define DRIVER_INIT_FUNC "__vaDriverInit_0_2
8
"
#define DEFAULT_DRIVER_DIR "/usr/X11R6/lib/modules/dri"
#define DEFAULT_DRIVER_DIR "/usr/X11R6/lib/modules/dri"
#define DRIVER_EXTENSION "_drv_video.so"
#define DRIVER_EXTENSION "_drv_video.so"
...
@@ -211,7 +211,7 @@ static VAStatus va_getDriverName(VADriverContextP ctx, char **driver_name)
...
@@ -211,7 +211,7 @@ static VAStatus va_getDriverName(VADriverContextP ctx, char **driver_name)
static
VAStatus
va_openDriver
(
VADriverContextP
ctx
,
char
*
driver_name
)
static
VAStatus
va_openDriver
(
VADriverContextP
ctx
,
char
*
driver_name
)
{
{
VAStatus
vaStatus
=
VA_STATUS_ERROR_UNKNOWN
;
VAStatus
vaStatus
=
VA_STATUS_ERROR_UNKNOWN
;
char
*
search_path
;
char
*
search_path
=
NULL
;
char
*
saveptr
;
char
*
saveptr
;
char
*
driver_dir
;
char
*
driver_dir
;
...
@@ -299,10 +299,12 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
...
@@ -299,10 +299,12 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
CHECK_VTABLE
(
vaStatus
,
ctx
,
PutSurface
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
PutSurface
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QueryImageFormats
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QueryImageFormats
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
CreateImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
CreateImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DeriveImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DestroyImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DestroyImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetImagePalette
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetImagePalette
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
GetImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
GetImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
PutImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
PutImage
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
PutImage2
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QuerySubpictureFormats
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QuerySubpictureFormats
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
CreateSubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
CreateSubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DestroySubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DestroySubpicture
);
...
@@ -311,6 +313,7 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
...
@@ -311,6 +313,7 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpictureChromakey
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpictureChromakey
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpictureGlobalAlpha
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
SetSubpictureGlobalAlpha
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
AssociateSubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
AssociateSubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
AssociateSubpicture2
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DeassociateSubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
DeassociateSubpicture
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QueryDisplayAttributes
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
QueryDisplayAttributes
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
GetDisplayAttributes
);
CHECK_VTABLE
(
vaStatus
,
ctx
,
GetDisplayAttributes
);
...
@@ -340,6 +343,18 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
...
@@ -340,6 +343,18 @@ static VAStatus va_openDriver(VADriverContextP ctx, char *driver_name)
return
vaStatus
;
return
vaStatus
;
}
}
VAPrivFunc
vaGetLibFunc
(
VADisplay
dpy
,
const
char
*
func
)
{
VADriverContextP
ctx
=
CTX
(
dpy
);
if
(
!
vaContextIsValid
(
ctx
)
)
return
NULL
;
if
(
NULL
==
ctx
->
handle
)
return
NULL
;
return
(
VAPrivFunc
)
dlsym
(
ctx
->
handle
,
func
);
}
/*
/*
* Returns a short english description of error_status
* Returns a short english description of error_status
...
@@ -942,6 +957,76 @@ VAStatus vaPutImage (
...
@@ -942,6 +957,76 @@ VAStatus vaPutImage (
return
ctx
->
vtable
.
vaPutImage
(
ctx
,
surface
,
image
,
src_x
,
src_y
,
width
,
height
,
dest_x
,
dest_y
);
return
ctx
->
vtable
.
vaPutImage
(
ctx
,
surface
,
image
,
src_x
,
src_y
,
width
,
height
,
dest_x
,
dest_y
);
}
}
/*
* Similar to vaPutImage but with additional destination width
* and height arguments to enable scaling
*/
VAStatus
vaPutImage2
(
VADisplay
dpy
,
VASurfaceID
surface
,
VAImageID
image
,
int
src_x
,
int
src_y
,
unsigned
int
src_width
,
unsigned
int
src_height
,
int
dest_x
,
int
dest_y
,
unsigned
int
dest_width
,
unsigned
int
dest_height
)
{
VADriverContextP
ctx
=
CTX
(
dpy
);
CHECK_CONTEXT
(
ctx
);
TRACE
(
vaPutImage2
);
return
ctx
->
vtable
.
vaPutImage2
(
ctx
,
surface
,
image
,
src_x
,
src_y
,
src_width
,
src_height
,
dest_x
,
dest_y
,
dest_width
,
dest_height
);
}
/*
* Derive an VAImage from an existing surface.
* This interface will derive a VAImage and corresponding image buffer from
* an existing VA Surface. The image buffer can then be mapped/unmapped for
* direct CPU access. This operation is only possible on implementations with
* direct rendering capabilities and internal surface formats that can be
* represented with a VAImage. When the operation is not possible this interface
* will return VA_STATUS_ERROR_OPERATION_FAILED. Clients should then fall back
* to using vaCreateImage + vaPutImage to accomplish the same task in an
* indirect manner.
*
* Implementations should only return success when the resulting image buffer
* would be useable with vaMap/Unmap.
*
* When directly accessing a surface special care must be taken to insure
* proper synchronization with the graphics hardware. Clients should call
* vaQuerySurfaceStatus to insure that a surface is not the target of concurrent
* rendering or currently being displayed by an overlay.
*
* Additionally nothing about the contents of a surface should be assumed
* following a vaPutSurface. Implementations are free to modify the surface for
* scaling or subpicture blending within a call to vaPutImage.
*
* Calls to vaPutImage or vaGetImage using the same surface from which the image
* has been derived will return VA_STATUS_ERROR_SURFACE_BUSY. vaPutImage or
* vaGetImage with other surfaces is supported.
*
* An image created with vaDeriveImage should be freed with vaDestroyImage. The
* image and image buffer structures will be destroyed; however, the underlying
* surface will remain unchanged until freed with vaDestroySurfaces.
*/
VAStatus
vaDeriveImage
(
VADisplay
dpy
,
VASurfaceID
surface
,
VAImage
*
image
/* out */
)
{
VADriverContextP
ctx
=
CTX
(
dpy
);
CHECK_CONTEXT
(
ctx
);
TRACE
(
vaDeriveImage
);
return
ctx
->
vtable
.
vaDeriveImage
(
ctx
,
surface
,
image
);
}
/* Get maximum number of subpicture formats supported by the implementation */
/* Get maximum number of subpicture formats supported by the implementation */
int
vaMaxNumSubpictureFormats
(
int
vaMaxNumSubpictureFormats
(
VADisplay
dpy
VADisplay
dpy
...
@@ -1021,7 +1106,7 @@ VAStatus vaSetSubpictureImage (
...
@@ -1021,7 +1106,7 @@ VAStatus vaSetSubpictureImage (
return
ctx
->
vtable
.
vaSetSubpictureImage
(
ctx
,
subpicture
,
image
);
return
ctx
->
vtable
.
vaSetSubpictureImage
(
ctx
,
subpicture
,
image
);
}
}
#warning TODO: Remove vaSetSubpicturePalette in rev 0.29
VAStatus
vaSetSubpicturePalette
(
VAStatus
vaSetSubpicturePalette
(
VADisplay
dpy
,
VADisplay
dpy
,
VASubpictureID
subpicture
,
VASubpictureID
subpicture
,
...
@@ -1110,6 +1195,33 @@ VAStatus vaAssociateSubpicture (
...
@@ -1110,6 +1195,33 @@ VAStatus vaAssociateSubpicture (
return
ctx
->
vtable
.
vaAssociateSubpicture
(
ctx
,
subpicture
,
target_surfaces
,
num_surfaces
,
src_x
,
src_y
,
dest_x
,
dest_y
,
width
,
height
,
flags
);
return
ctx
->
vtable
.
vaAssociateSubpicture
(
ctx
,
subpicture
,
target_surfaces
,
num_surfaces
,
src_x
,
src_y
,
dest_x
,
dest_y
,
width
,
height
,
flags
);
}
}
VAStatus
vaAssociateSubpicture2
(
VADisplay
dpy
,
VASubpictureID
subpicture
,
VASurfaceID
*
target_surfaces
,
int
num_surfaces
,
short
src_x
,
/* upper left offset in subpicture */
short
src_y
,
unsigned
short
src_width
,
unsigned
short
src_height
,
short
dest_x
,
/* upper left offset in surface */
short
dest_y
,
unsigned
short
dest_width
,
unsigned
short
dest_height
,
/*
* whether to enable chroma-keying or global-alpha
* see VA_SUBPICTURE_XXX values
*/
unsigned
int
flags
)
{
VADriverContextP
ctx
=
CTX
(
dpy
);
CHECK_CONTEXT
(
ctx
);
TRACE
(
vaAssociateSubpicture2
);
return
ctx
->
vtable
.
vaAssociateSubpicture2
(
ctx
,
subpicture
,
target_surfaces
,
num_surfaces
,
src_x
,
src_y
,
src_width
,
src_height
,
dest_x
,
dest_y
,
dest_width
,
dest_height
,
flags
);
}
/*
/*
* vaDeassociateSubpicture removes the association of the subpicture with target_surfaces.
* vaDeassociateSubpicture removes the association of the subpicture with target_surfaces.
*/
*/
...
@@ -1200,7 +1312,7 @@ VAStatus vaSetDisplayAttributes (
...
@@ -1200,7 +1312,7 @@ VAStatus vaSetDisplayAttributes (
}
}
#warning TODO: Remove vaDbgCopySurfaceToBuffer in rev 0.29
VAStatus
vaDbgCopySurfaceToBuffer
(
VADisplay
dpy
,
VAStatus
vaDbgCopySurfaceToBuffer
(
VADisplay
dpy
,
VASurfaceID
surface
,
VASurfaceID
surface
,
void
**
buffer
,
/* out */
void
**
buffer
,
/* out */
...
...
src/va.h
View file @
f8ccff8a
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
/*
/*
* Video Decode Acceleration API Specification
* Video Decode Acceleration API Specification
*
*
* Rev. 0.2
5
* Rev. 0.2
8
* <jonathan.bian@intel.com>
* <jonathan.bian@intel.com>
*
*
* Revision History:
* Revision History:
...
@@ -46,6 +46,9 @@
...
@@ -46,6 +46,9 @@
* rev 0.24 (09/18/2007 Jonathan Bian) - Added display attributes.
* rev 0.24 (09/18/2007 Jonathan Bian) - Added display attributes.
* rev 0.25 (10/18/2007 Jonathan Bian) - Changed to use IDs only for some types.
* rev 0.25 (10/18/2007 Jonathan Bian) - Changed to use IDs only for some types.
* rev 0.26 (11/07/2007 Waldo Bastian) - Change vaCreateBuffer semantics
* rev 0.26 (11/07/2007 Waldo Bastian) - Change vaCreateBuffer semantics
* rev 0.27 (11/19/2007 Matt Sottek) - Added DeriveImage
* rev 0.28 (12/06/2007 Jonathan Bian) - Added new versions of PutImage and AssociateSubpicture
* to enable scaling
*
*
* Acknowledgements:
* Acknowledgements:
* Some concepts borrowed from XvMC and XvImage.
* Some concepts borrowed from XvMC and XvImage.
...
@@ -147,15 +150,26 @@ VAStatus vaTerminate (
...
@@ -147,15 +150,26 @@ VAStatus vaTerminate (
/*
/*
* vaQueryVendorString returns a pointer to a zero-terminated string
* vaQueryVendorString returns a pointer to a zero-terminated string
* describing some aspects of the VA implemenation on a specific
* describing some aspects of the VA implemenation on a specific
* hardware accelerator. The format of the returned string is
:
* hardware accelerator. The format of the returned string is
vendor
*
<vendorname>-<major_version>-<minor_version>-<addtional_info>
*
specific and at the discretion of the implementer.
* e.g. for the Intel GMA500 implementation, an example would be:
* e.g. for the Intel GMA500 implementation, an example would be:
* "Intel
GMA500-1.0-0.2-patch3
* "Intel
GMA500 - 2.0.0.32L.0005"
*/
*/
const
char
*
vaQueryVendorString
(
const
char
*
vaQueryVendorString
(
VADisplay
dpy
VADisplay
dpy
);
);
typedef
int
(
*
VAPrivFunc
)();
/*
* Return a function pointer given a function name in the library.
* This allows private interfaces into the library
*/
VAPrivFunc
vaGetLibFunc
(
VADisplay
dpy
,
const
char
*
func
);
/* Currently defined profiles */
/* Currently defined profiles */
typedef
enum
typedef
enum
{
{
...
@@ -906,9 +920,9 @@ typedef struct _VAIQMatrixBufferH264
...
@@ -906,9 +920,9 @@ typedef struct _VAIQMatrixBufferH264
typedef
struct
_VASliceParameterBufferH264
typedef
struct
_VASliceParameterBufferH264
{
{
unsigned
int
slice_data_size
;
/* number of bytes in the slice data buffer for this slice */
unsigned
int
slice_data_size
;
/* number of bytes in the slice data buffer for this slice */
unsigned
int
slice_data_offset
;
/* the offset to
first byte of slice data
*/
unsigned
int
slice_data_offset
;
/* the offset to
the NAL start code for this slice
*/
unsigned
int
slice_data_flag
;
/* see VA_SLICE_DATA_FLAG_XXX defintions */
unsigned
int
slice_data_flag
;
/* see VA_SLICE_DATA_FLAG_XXX defintions */
unsigned
short
slice_data_bit_offset
;
/* bit offset
in the first byte of valid
data */
unsigned
short
slice_data_bit_offset
;
/* bit offset
from NAL start code to the beginning of slice
data */
unsigned
short
first_mb_in_slice
;
unsigned
short
first_mb_in_slice
;
unsigned
char
slice_type
;
unsigned
char
slice_type
;
unsigned
char
direct_spatial_mv_pred_flag
;
unsigned
char
direct_spatial_mv_pred_flag
;
...
@@ -1079,18 +1093,6 @@ VAStatus vaQuerySurfaceStatus (
...
@@ -1079,18 +1093,6 @@ VAStatus vaQuerySurfaceStatus (
VASurfaceStatus
*
status
/* out */
VASurfaceStatus
*
status
/* out */
);
);
/*
* Copies the surface to a buffer
* The stride of the surface will be stored in *stride
* Caller should free the returned buffer with free() when done.
*/
VAStatus
vaDbgCopySurfaceToBuffer
(
VADisplay
dpy
,
VASurfaceID
surface
,
void
**
buffer
,
/* out */
unsigned
int
*
stride
/* out */
);
/*
/*
* Images and Subpictures
* Images and Subpictures
* VAImage is used to either get the surface data to client memory, or
* VAImage is used to either get the surface data to client memory, or
...
@@ -1252,6 +1254,63 @@ VAStatus vaPutImage (
...
@@ -1252,6 +1254,63 @@ VAStatus vaPutImage (
int
dest_y
int
dest_y
);
);
/*
* Similar to vaPutImage but with additional destination width
* and height arguments to enable scaling
*/
VAStatus
vaPutImage2
(
VADisplay
dpy
,
VASurfaceID
surface
,
VAImageID
image
,
int
src_x
,
int
src_y
,
unsigned
int
src_width
,
unsigned
int
src_height
,
int
dest_x
,
int
dest_y
,
unsigned
int
dest_width
,
unsigned
int
dest_height
);
/*
* Derive an VAImage from an existing surface.
* This interface will derive a VAImage and corresponding image buffer from
* an existing VA Surface. The image buffer can then be mapped/unmapped for
* direct CPU access. This operation is only possible on implementations with
* direct rendering capabilities and internal surface formats that can be
* represented with a VAImage. When the operation is not possible this interface
* will return VA_STATUS_ERROR_OPERATION_FAILED. Clients should then fall back
* to using vaCreateImage + vaPutImage to accomplish the same task in an
* indirect manner.
*
* Implementations should only return success when the resulting image buffer
* would be useable with vaMap/Unmap.
*
* When directly accessing a surface special care must be taken to insure
* proper synchronization with the graphics hardware. Clients should call
* vaQuerySurfaceStatus to insure that a surface is not the target of concurrent
* rendering or currently being displayed by an overlay.
*
* Additionally nothing about the contents of a surface should be assumed
* following a vaPutSurface. Implementations are free to modify the surface for
* scaling or subpicture blending within a call to vaPutImage.
*
* Calls to vaPutImage or vaGetImage using the same surface from which the image
* has been derived will return VA_STATUS_ERROR_SURFACE_BUSY. vaPutImage or
* vaGetImage with other surfaces is supported.
*
* An image created with vaDeriveImage should be freed with vaDestroyImage. The
* image and image buffer structures will be destroyed; however, the underlying
* surface will remain unchanged until freed with vaDestroySurfaces.
*/
VAStatus
vaDeriveImage
(
VADisplay
dpy
,
VASurfaceID
surface
,
VAImage
*
image
/* out */
);
/*
/*
* Subpictures
* Subpictures
* Subpicture is a special type of image that can be blended
* Subpicture is a special type of image that can be blended
...
@@ -1313,17 +1372,6 @@ VAStatus vaSetSubpictureImage (
...
@@ -1313,17 +1372,6 @@ VAStatus vaSetSubpictureImage (
VAImageID
image
VAImageID
image
);
);
VAStatus
vaSetSubpicturePalette
(
VADisplay
dpy
,
VASubpictureID
subpicture
,
/*
* pointer to an array holding the palette data. The size of the array is
* num_palette_entries * entry_bytes in size. The order of the components
* in the palette is described by the component_order in VAImage struct
*/
unsigned
char
*
palette
);
/*
/*
* If chromakey is enabled, then the area where the source value falls within
* If chromakey is enabled, then the area where the source value falls within
* the chromakey [min, max] range is transparent
* the chromakey [min, max] range is transparent
...
@@ -1377,6 +1425,30 @@ VAStatus vaAssociateSubpicture (
...
@@ -1377,6 +1425,30 @@ VAStatus vaAssociateSubpicture (
unsigned
int
flags
unsigned
int
flags
);
);
/*
* Similar to vaAssociateSubpicture but with additional destination width
* and height to enable scaling
*/
VAStatus
vaAssociateSubpicture2
(
VADisplay
dpy
,
VASubpictureID
subpicture
,
VASurfaceID
*
target_surfaces
,
int
num_surfaces
,
short
src_x
,
/* upper left offset in subpicture */
short
src_y
,
unsigned
short
src_width
,
unsigned
short
src_height
,
short
dest_x
,
/* upper left offset in surface */
short
dest_y
,
unsigned
short
dest_width
,
unsigned
short
dest_height
,
/*
* whether to enable chroma-keying or global-alpha
* see VA_SUBPICTURE_XXX values
*/
unsigned
int
flags
);
/*
/*
* vaDeassociateSubpicture removes the association of the subpicture with target_surfaces.
* vaDeassociateSubpicture removes the association of the subpicture with target_surfaces.
*/
*/
...
@@ -1501,8 +1573,8 @@ Mostly to demonstrate program flow with no error handling ...
...
@@ -1501,8 +1573,8 @@ Mostly to demonstrate program flow with no error handling ...
int max_num_profiles, max_num_entrypoints, max_num_attribs;
int max_num_profiles, max_num_entrypoints, max_num_attribs;
max_num_profiles = vaMaxNumProfiles(dpy);
max_num_profiles = vaMaxNumProfiles(dpy);
max_num_entrypoints = vaMaxNum
Profile
s(dpy);
max_num_entrypoints = vaMaxNum
Entrypoint
s(dpy);
max_num_attribs = vaMaxNum
Profil
es(dpy);
max_num_attribs = vaMaxNum
Attribut
es(dpy);
/* find out whether MPEG2 MP is supported */
/* find out whether MPEG2 MP is supported */
VAProfile *profiles = malloc(sizeof(VAProfile)*max_num_profiles);
VAProfile *profiles = malloc(sizeof(VAProfile)*max_num_profiles);
...
...
src/va_backend.h
View file @
f8ccff8a
...
@@ -209,6 +209,12 @@ struct VADriverVTable
...
@@ -209,6 +209,12 @@ struct VADriverVTable
VAImage
*
image
/* out */
VAImage
*
image
/* out */
);
);
VAStatus
(
*
vaDeriveImage
)
(
VADriverContextP
ctx
,
VASurfaceID
surface
,
VAImage
*
image
/* out */
);
VAStatus
(
*
vaDestroyImage
)
(
VAStatus
(
*
vaDestroyImage
)
(
VADriverContextP
ctx
,
VADriverContextP
ctx
,
VAImageID
image
VAImageID
image
...
@@ -247,6 +253,20 @@ struct VADriverVTable
...
@@ -247,6 +253,20 @@ struct VADriverVTable
int
dest_y
int
dest_y
);
);
VAStatus
(
*
vaPutImage2
)
(
VADriverContextP
ctx
,
VASurfaceID
surface
,
VAImageID
image
,
int
src_x
,
int
src_y
,
unsigned
int
src_width
,
unsigned
int
src_height
,
int
dest_x
,
int
dest_y
,
unsigned
int
dest_width
,
unsigned
int
dest_height
);
VAStatus
(
*
vaQuerySubpictureFormats
)
(
VAStatus
(
*
vaQuerySubpictureFormats
)
(
VADriverContextP
ctx
,
VADriverContextP
ctx
,
VAImageFormat
*
format_list
,
/* out */
VAImageFormat
*
format_list
,
/* out */
...
@@ -314,6 +334,26 @@ struct VADriverVTable
...
@@ -314,6 +334,26 @@ struct VADriverVTable
unsigned
int
flags
unsigned
int
flags
);
);
VAStatus
(
*
vaAssociateSubpicture2
)
(
VADriverContextP
ctx
,
VASubpictureID
subpicture
,
VASurfaceID
*
target_surfaces
,
int
num_surfaces
,
short
src_x
,
/* upper left offset in subpicture */
short
src_y
,
unsigned
short
src_width
,
unsigned
short
src_height
,
short
dest_x
,
/* upper left offset in surface */
short
dest_y
,
unsigned
short
dest_width
,
unsigned
short
dest_height
,
/*
* whether to enable chroma-keying or global-alpha
* see VA_SUBPICTURE_XXX values
*/
unsigned
int
flags
);
VAStatus
(
*
vaDeassociateSubpicture
)
(
VAStatus
(
*
vaDeassociateSubpicture
)
(
VADriverContextP
ctx
,
VADriverContextP
ctx
,
VASubpictureID
subpicture
,
VASubpictureID
subpicture
,
...
...
src/va_x11.h
View file @
f8ccff8a
...
@@ -33,9 +33,9 @@ extern "C" {
...
@@ -33,9 +33,9 @@ extern "C" {
*/
*/
/* de-interlace flags for vaPutSurface */
/* de-interlace flags for vaPutSurface */
#define VA_FRAME_PICTURE 0x00000000
#define VA_TOP_FIELD 0x00000001
#define VA_TOP_FIELD 0x00000001
#define VA_BOTTOM_FIELD 0x00000002
#define VA_BOTTOM_FIELD 0x00000002
#define VA_FRAME_PICTURE 0x00000004
/* weave */
/*
/*
* clears the drawable with background color.
* clears the drawable with background color.
* for hardware overlay based implementation this flag
* for hardware overlay based implementation this flag
...
...
test/vainfo.c
View file @
f8ccff8a
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
#include <stdarg.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <string.h>
#include <stdlib.h>
int
main
(
int
argc
,
const
char
*
argv
[])
int
main
(
int
argc
,
const
char
*
argv
[])
{
{
...
@@ -64,8 +64,9 @@ int main(int argc, const char* argv[])
...
@@ -64,8 +64,9 @@ int main(int argc, const char* argv[])
{
{
fprintf
(
stderr
,
"%s: vaInitialize failed with error code %d (%s)
\n
"
,
fprintf
(
stderr
,
"%s: vaInitialize failed with error code %d (%s)
\n
"
,
name
,
va_status
,
vaErrorStr
(
va_status
));
name
,
va_status
,
vaErrorStr
(
va_status
));
return
3
;
}
}
printf
(
"%s: VA API version: %d.%d
\n
"
,
name
,
major_version
,
minor_version
);
driver
=
vaQueryVendorString
(
va_dpy
);
driver
=
vaQueryVendorString
(
va_dpy
);
printf
(
"%s: Driver version: %s
\n
"
,
name
,
driver
?
driver
:
"<unknown>"
);
printf
(
"%s: Driver version: %s
\n
"
,
name
,
driver
?
driver
:
"<unknown>"
);
vaTerminate
(
va_dpy
);
vaTerminate
(
va_dpy
);
...
...
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