Commit 633f477b authored by Austin Yuan's avatar Austin Yuan

Update from Jonathan,

1. Updated copyright notices, change history, acknowledge, and overview sections
2. Added two new flags to vaPutSurface to convey whether the source is BT601 or BT709
3. Incorporated the ISO C conformance fixes from Gwenole.
4. Updates about encode API/data structures
Signed-off-by: default avatarAustin Yuan <shengquan.yuan@intel.com>
parent ebeb2deb
...@@ -177,11 +177,12 @@ int vaDisplayIsValid(VADisplay dpy) ...@@ -177,11 +177,12 @@ int vaDisplayIsValid(VADisplay dpy)
VADisplay vaGetDisplay ( VADisplay vaGetDisplay (
Display *native_dpy NativeDisplay native_display /* implementation specific */
) )
{ {
VADisplay dpy = NULL; VADisplay dpy = NULL;
VADisplayContextP pDisplayContext = pDisplayContexts; VADisplayContextP pDisplayContext = pDisplayContexts;
Display *native_dpy = (Display *)native_display;
if (!native_dpy) if (!native_dpy)
return NULL; return NULL;
......
/* /*
* Video Decode Acceleration API, X11 specific functions * Copyright (c) 2007-2009 Intel Corporation. All Rights Reserved.
* *
* Rev. 0.15 * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
* Video Acceleration (VA) API Specification
*
* Rev. 0.30
* <jonathan.bian@intel.com> * <jonathan.bian@intel.com>
* *
* Revision History: * Revision History:
* rev 0.1 (12/10/06 Jonathan Bian) - Initial draft * rev 0.10 (12/10/2006 Jonathan Bian) - Initial draft
* rev 0.11 (12/15/06 Jonathan Bian) - Fixed some errors * rev 0.11 (12/15/2006 Jonathan Bian) - Fixed some errors
* rev 0.12 (02/05/07 Jonathan Bian) - Added VC-1 data structures * rev 0.12 (02/05/2007 Jonathan Bian) - Added VC-1 data structures for slice level decode
* rev 0.13 (02/28/07 Jonathan Bian) - Added GetDisplay() * rev 0.13 (02/28/2007 Jonathan Bian) - Added GetDisplay()
* rev 0.14 (04/13/07 Jonathan Bian) - Fixed MPEG-2 PictureParameter struct, cleaned up a few funcs. * rev 0.14 (04/13/2007 Jonathan Bian) - Fixed MPEG-2 PictureParameter structure, cleaned up a few funcs.
* rev 0.15 (04/20/07 Jonathan Bian) - Overhauled buffer management * rev 0.15 (04/20/2007 Jonathan Bian) - Overhauled buffer management
* rev 0.16 (05/02/2007 Jonathan Bian) - Added error codes and fixed some issues with configuration
* rev 0.17 (05/07/2007 Jonathan Bian) - Added H.264/AVC data structures for slice level decode.
* rev 0.18 (05/14/2007 Jonathan Bian) - Added data structures for MPEG-4 slice level decode
* and MPEG-2 motion compensation.
* 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.23 (09/11/2007 Jonathan Bian) - Fixed some issues with images and subpictures.
* 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.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
* rev 0.29 (02/07/2008 Jonathan Bian) - VC1 parameter fixes,
* added VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED
* rev 0.30 (03/01/2009 Jonathan Bian) - Added encoding support for H.264 BP and MPEG-4 SP and fixes
* for ISO C conformance.
* *
* Acknowledgements:
* Some concepts borrowed from XvMC and XvImage.
* Waldo Bastian (Intel), Matt Sottek (Intel), Austin Yuan (Intel), and Gwenole Beauchesne (SDS)
* contributed to various aspects of the API.
*/ */
#ifndef _VA_X11_H_ #ifndef _VA_X11_H_
...@@ -24,13 +70,6 @@ ...@@ -24,13 +70,6 @@
extern "C" { extern "C" {
#endif #endif
/*
* Returns a suitable VADisplay for VA API
*/
VADisplay vaGetDisplay (
Display *dpy
);
/* /*
* Output rendering * Output rendering
* Following is the rendering interface for X windows, * Following is the rendering interface for X windows,
...@@ -39,11 +78,13 @@ VADisplay vaGetDisplay ( ...@@ -39,11 +78,13 @@ VADisplay vaGetDisplay (
* color space conversion and scaling to the destination * color space conversion and scaling to the destination
* rectangle * rectangle
*/ */
/* flags for vaPutSurface */
/* de-interlace flags for vaPutSurface */
#define VA_FRAME_PICTURE 0x00000000 #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_SRC_BT601 0x00000010
#define VA_SRC_BT709 0x00000020
/* /*
* 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
...@@ -63,9 +104,9 @@ VAStatus vaPutSurface ( ...@@ -63,9 +104,9 @@ VAStatus vaPutSurface (
short desty, short desty,
unsigned short destw, unsigned short destw,
unsigned short desth, unsigned short desth,
VARectangle *cliprects, /* client supplied clip list */ VARectangle *cliprects, /* client supplied destination clip list */
unsigned int number_cliprects, /* number of clip rects in the clip list */ unsigned int number_cliprects, /* number of clip rects in the clip list */
unsigned int flags /* de-interlacing flags */ unsigned int flags /* PutSurface flags */
); );
#ifdef __cplusplus #ifdef __cplusplus
......
/* /*
* Copyright (c) 2007-2008 Intel Corporation. All Rights Reserved. * Copyright (c) 2007-2009 Intel Corporation. All Rights Reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the * copy of this software and associated documentation files (the
...@@ -16,13 +16,13 @@ ...@@ -16,13 +16,13 @@
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
/* /*
* Video Decode Acceleration API Specification * Video Acceleration (VA) API Specification
* *
* Rev. 0.30 * Rev. 0.30
* <jonathan.bian@intel.com> * <jonathan.bian@intel.com>
...@@ -51,12 +51,13 @@ ...@@ -51,12 +51,13 @@
* to enable scaling * to enable scaling
* rev 0.29 (02/07/2008 Jonathan Bian) - VC1 parameter fixes, * rev 0.29 (02/07/2008 Jonathan Bian) - VC1 parameter fixes,
* added VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED * added VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED
* rev 0.30 (08/25/2008 Jonathan Bian) - Added encoding support for H.264 BP and MPEG-4 SP. * rev 0.30 (03/01/2009 Jonathan Bian) - Added encoding support for H.264 BP and MPEG-4 SP and fixes
* Added support for protected decode. * for ISO C conformance.
* *
* Acknowledgements: * Acknowledgements:
* Some concepts borrowed from XvMC and XvImage. * Some concepts borrowed from XvMC and XvImage.
* Thanks to Waldo Bastian, Matt Sottek and Austin Yuan at Intel for many valuable feedbacks. * Waldo Bastian (Intel), Matt Sottek (Intel), Austin Yuan (Intel), and Gwenole Beauchesne (SDS)
* contributed to various aspects of the API.
*/ */
#ifndef _VA_H_ #ifndef _VA_H_
...@@ -69,9 +70,9 @@ extern "C" { ...@@ -69,9 +70,9 @@ extern "C" {
/* /*
Overview Overview
This API is intended to provide an interface between a video decode The VA API is intended to provide an interface between a video decode/encode/display
application (client) and a hardware decode accelerator (server), to off-load application (client) and a hardware accelerator (server), to off-load
video decode operations from the host to the hardware accelerator at various video decode/encode/display operations from the host to the hardware accelerator at various
entry-points. entry-points.
The basic operation steps are: The basic operation steps are:
...@@ -134,6 +135,10 @@ const char *vaErrorStr(VAStatus error_status); ...@@ -134,6 +135,10 @@ const char *vaErrorStr(VAStatus error_status);
*/ */
typedef void* NativeDisplay; /* window system dependent */ typedef void* NativeDisplay; /* window system dependent */
VADisplay vaGetDisplay (
NativeDisplay native_dpy /* implementation specific */
);
/* /*
* Initialize the library * Initialize the library
*/ */
...@@ -458,7 +463,9 @@ typedef enum ...@@ -458,7 +463,9 @@ typedef enum
VAEncCodedBufferType = 21, VAEncCodedBufferType = 21,
VAEncSequenceParameterBufferType = 22, VAEncSequenceParameterBufferType = 22,
VAEncPictureParameterBufferType = 23, VAEncPictureParameterBufferType = 23,
VAEncSliceParameterBufferType = 24 VAEncSliceParameterBufferType = 24,
VAEncH264VUIBufferType = 25,
VAEncH264SEIBufferType = 26,
} VABufferType; } VABufferType;
/**************************** /****************************
...@@ -481,22 +488,22 @@ typedef struct _VAPictureParameterBufferMPEG2 ...@@ -481,22 +488,22 @@ typedef struct _VAPictureParameterBufferMPEG2
int f_code; /* pack all four fcode into this */ int f_code; /* pack all four fcode into this */
union { union {
struct { struct {
unsigned char intra_dc_precision : 2; unsigned int intra_dc_precision : 2;
unsigned char picture_structure : 2; unsigned int picture_structure : 2;
unsigned char top_field_first : 1; unsigned int top_field_first : 1;
unsigned char frame_pred_frame_dct : 1; unsigned int frame_pred_frame_dct : 1;
unsigned char concealment_motion_vectors : 1; unsigned int concealment_motion_vectors : 1;
unsigned char q_scale_type : 1; unsigned int q_scale_type : 1;
unsigned char intra_vlc_format : 1; unsigned int intra_vlc_format : 1;
unsigned char alternate_scan : 1; unsigned int alternate_scan : 1;
unsigned char repeat_first_field : 1; unsigned int repeat_first_field : 1;
unsigned char progressive_frame : 1; unsigned int progressive_frame : 1;
unsigned char is_first_field : 1; /* indicate whether the current field unsigned int is_first_field : 1; /* indicate whether the current field
* is the first field for field picture * is the first field for field picture
*/ */
}; } bits;
unsigned int picture_coding_extension; unsigned int value;
}; } picture_coding_extension;
} VAPictureParameterBufferMPEG2; } VAPictureParameterBufferMPEG2;
/* MPEG-2 Inverse Quantization Matrix Buffer */ /* MPEG-2 Inverse Quantization Matrix Buffer */
...@@ -549,12 +556,12 @@ typedef struct _VAMacroblockParameterBufferMPEG2 ...@@ -549,12 +556,12 @@ typedef struct _VAMacroblockParameterBufferMPEG2
unsigned char macroblock_type; /* see definition below */ unsigned char macroblock_type; /* see definition below */
union { union {
struct { struct {
unsigned char frame_motion_type : 2; unsigned int frame_motion_type : 2;
unsigned char field_motion_type : 2; unsigned int field_motion_type : 2;
unsigned char dct_type : 1; unsigned int dct_type : 1;
}; } bits;
unsigned char macroblock_modes; unsigned int value;
}; } macroblock_modes;
unsigned char motion_vertical_field_select; unsigned char motion_vertical_field_select;
/* /*
* motion_vertical_field_select: * motion_vertical_field_select:
...@@ -607,34 +614,34 @@ typedef struct _VAPictureParameterBufferMPEG4 ...@@ -607,34 +614,34 @@ typedef struct _VAPictureParameterBufferMPEG4
VASurfaceID backward_reference_picture; VASurfaceID backward_reference_picture;
union { union {
struct { struct {
unsigned char short_video_header : 1; unsigned int short_video_header : 1;
unsigned char chroma_format : 2; unsigned int chroma_format : 2;
unsigned char interlaced : 1; unsigned int interlaced : 1;
unsigned char obmc_disable : 1; unsigned int obmc_disable : 1;
unsigned char sprite_enable : 2; unsigned int sprite_enable : 2;
unsigned char sprite_warping_accuracy : 2; unsigned int sprite_warping_accuracy : 2;
unsigned char quant_type : 1; unsigned int quant_type : 1;
unsigned char quarter_sample : 1; unsigned int quarter_sample : 1;
unsigned char data_partitioned : 1; unsigned int data_partitioned : 1;
unsigned char reversible_vlc : 1; unsigned int reversible_vlc : 1;
}; } bits;
unsigned short vol_fields; unsigned int value;
}; } vol_fields;
unsigned char no_of_sprite_warping_points; unsigned char no_of_sprite_warping_points;
short sprite_trajectory_du[3]; short sprite_trajectory_du[3];
short sprite_trajectory_dv[3]; short sprite_trajectory_dv[3];
unsigned char quant_precision; unsigned char quant_precision;
union { union {
struct { struct {
unsigned char vop_coding_type : 2; unsigned int vop_coding_type : 2;
unsigned char backward_reference_vop_coding_type : 2; unsigned int backward_reference_vop_coding_type : 2;
unsigned char vop_rounding_type : 1; unsigned int vop_rounding_type : 1;
unsigned char intra_dc_vlc_thr : 3; unsigned int intra_dc_vlc_thr : 3;
unsigned char top_field_first : 1; unsigned int top_field_first : 1;
unsigned char alternate_vertical_scan_flag : 1; unsigned int alternate_vertical_scan_flag : 1;
}; } bits;
unsigned short vop_fields; unsigned int value;
}; } vop_fields;
unsigned char vop_fcode_forward; unsigned char vop_fcode_forward;
unsigned char vop_fcode_backward; unsigned char vop_fcode_backward;
/* short header related */ /* short header related */
...@@ -703,12 +710,12 @@ typedef struct _VAPictureParameterBufferVC1 ...@@ -703,12 +710,12 @@ typedef struct _VAPictureParameterBufferVC1
/* sequence layer for AP or meta data for SP and MP */ /* sequence layer for AP or meta data for SP and MP */
union { union {
struct { struct {
unsigned char interlace : 1; /* SEQUENCE_LAYER::INTERLACE */ unsigned int interlace : 1; /* SEQUENCE_LAYER::INTERLACE */
unsigned char syncmarker : 1;/* METADATA::SYNCMARKER */ unsigned int syncmarker : 1;/* METADATA::SYNCMARKER */
unsigned char overlap : 1;/* METADATA::OVERLAP */ unsigned int overlap : 1;/* METADATA::OVERLAP */
}; } bits;
unsigned char sequence_fields; unsigned int value;
}; } sequence_fields;
unsigned short coded_width; /* ENTRY_POINT_LAYER::CODED_WIDTH */ unsigned short coded_width; /* ENTRY_POINT_LAYER::CODED_WIDTH */
unsigned short coded_height; /* ENTRY_POINT_LAYER::CODED_HEIGHT */ unsigned short coded_height; /* ENTRY_POINT_LAYER::CODED_HEIGHT */
...@@ -719,13 +726,13 @@ typedef struct _VAPictureParameterBufferVC1 ...@@ -719,13 +726,13 @@ typedef struct _VAPictureParameterBufferVC1
unsigned char fast_uvmc_flag; /* ENTRY_POINT_LAYER::FASTUVMC */ unsigned char fast_uvmc_flag; /* ENTRY_POINT_LAYER::FASTUVMC */
union { union {
struct { struct {
unsigned char range_mapping_luma_flag: 1; /* ENTRY_POINT_LAYER::RANGE_MAPY_FLAG */ unsigned int luma_flag : 1; /* ENTRY_POINT_LAYER::RANGE_MAPY_FLAG */
unsigned char range_mapping_luma: 3; /* ENTRY_POINT_LAYER::RANGE_MAPY */ unsigned int luma : 3; /* ENTRY_POINT_LAYER::RANGE_MAPY */
unsigned char range_mapping_chroma_flag: 1; /* ENTRY_POINT_LAYER::RANGE_MAPUV_FLAG */ unsigned int chroma_flag : 1; /* ENTRY_POINT_LAYER::RANGE_MAPUV_FLAG */
unsigned char range_mapping_chroma: 3; /* ENTRY_POINT_LAYER::RANGE_MAPUV */ unsigned int chroma : 3; /* ENTRY_POINT_LAYER::RANGE_MAPUV */
}; } bits;
unsigned char range_mapping_fields; unsigned int value;
}; } range_mapping_fields;
unsigned char b_picture_fraction; /* PICTURE_LAYER::BFRACTION */ unsigned char b_picture_fraction; /* PICTURE_LAYER::BFRACTION */
unsigned char cbp_table; /* PICTURE_LAYER::CBPTAB/ICBPTAB */ unsigned char cbp_table; /* PICTURE_LAYER::CBPTAB/ICBPTAB */
...@@ -738,89 +745,89 @@ typedef struct _VAPictureParameterBufferVC1 ...@@ -738,89 +745,89 @@ typedef struct _VAPictureParameterBufferVC1
unsigned char luma_shift; /* PICTURE_LAYER::LUMSHIFT */ unsigned char luma_shift; /* PICTURE_LAYER::LUMSHIFT */
union { union {
struct { struct {
unsigned char picture_type : 2; /* PICTURE_LAYER::PTYPE */ unsigned int picture_type : 2; /* PICTURE_LAYER::PTYPE */
unsigned char frame_coding_mode : 3;/* PICTURE_LAYER::FCM */ unsigned int frame_coding_mode : 3; /* PICTURE_LAYER::FCM */
unsigned char top_field_first : 1;/* PICTURE_LAYER::TFF */ unsigned int top_field_first : 1; /* PICTURE_LAYER::TFF */
unsigned char is_first_field : 1; /* set to 1 if it is the first field */ unsigned int is_first_field : 1; /* set to 1 if it is the first field */
unsigned char intensity_compensation: 1;/* PICTURE_LAYER::INTCOMP */ unsigned int intensity_compensation : 1; /* PICTURE_LAYER::INTCOMP */
}; } bits;
unsigned char picture_fields; unsigned int value;
}; } picture_fields;
union { union {
struct { struct {
unsigned char mv_type_mb : 1; /* PICTURE::MVTYPEMB */ unsigned int mv_type_mb : 1; /* PICTURE::MVTYPEMB */
unsigned char direct_mb : 1; /* PICTURE::DIRECTMB */ unsigned int direct_mb : 1; /* PICTURE::DIRECTMB */
unsigned char skip_mb : 1; /* PICTURE::SKIPMB */ unsigned int skip_mb : 1; /* PICTURE::SKIPMB */
unsigned char field_tx : 1; /* PICTURE::FIELDTX */ unsigned int field_tx : 1; /* PICTURE::FIELDTX */
unsigned char forward_mb : 1; /* PICTURE::FORWARDMB */ unsigned int forward_mb : 1; /* PICTURE::FORWARDMB */
unsigned char ac_pred : 1; /* PICTURE::ACPRED */ unsigned int ac_pred : 1; /* PICTURE::ACPRED */
unsigned char overflags : 1; /* PICTURE::OVERFLAGS */ unsigned int overflags : 1; /* PICTURE::OVERFLAGS */
}; } flags;
unsigned char raw_coding_flag; unsigned int value;
}; } raw_coding;
union { union {
struct { struct {
unsigned char bp_mv_type_mb : 1; /* PICTURE::MVTYPEMB */ unsigned int bp_mv_type_mb : 1; /* PICTURE::MVTYPEMB */
unsigned char bp_direct_mb : 1; /* PICTURE::DIRECTMB */ unsigned int bp_direct_mb : 1; /* PICTURE::DIRECTMB */
unsigned char bp_skip_mb : 1; /* PICTURE::SKIPMB */ unsigned int bp_skip_mb : 1; /* PICTURE::SKIPMB */
unsigned char bp_field_tx : 1; /* PICTURE::FIELDTX */ unsigned int bp_field_tx : 1; /* PICTURE::FIELDTX */
unsigned char bp_forward_mb : 1; /* PICTURE::FORWARDMB */ unsigned int bp_forward_mb : 1; /* PICTURE::FORWARDMB */
unsigned char bp_ac_pred : 1; /* PICTURE::ACPRED */ unsigned int bp_ac_pred : 1; /* PICTURE::ACPRED */
unsigned char bp_overflags : 1; /* PICTURE::OVERFLAGS */ unsigned int bp_overflags : 1; /* PICTURE::OVERFLAGS */
}; } flags;
unsigned char bitplane_present_flag; /* signal what bitplane is being passed via the bitplane buffer */ unsigned int value;
}; } bitplane_present; /* signal what bitplane is being passed via the bitplane buffer */
union { union {
struct { struct {
unsigned char reference_distance_flag : 1;/* PICTURE_LAYER::REFDIST_FLAG */ unsigned int reference_distance_flag : 1;/* PICTURE_LAYER::REFDIST_FLAG */
unsigned char reference_distance : 5;/* PICTURE_LAYER::REFDIST */ unsigned int reference_distance : 5;/* PICTURE_LAYER::REFDIST */
unsigned char num_reference_pictures: 1;/* PICTURE_LAYER::NUMREF */ unsigned int num_reference_pictures: 1;/* PICTURE_LAYER::NUMREF */
unsigned char reference_field_pic_indicator : 1;/* PICTURE_LAYER::REFFIELD */ unsigned int reference_field_pic_indicator : 1;/* PICTURE_LAYER::REFFIELD */
}; } bits;
unsigned short reference_fields; unsigned int value;
}; } reference_fields;
union { union {
struct { struct {
VAMvModeVC1 mv_mode : 3; /* PICTURE_LAYER::MVMODE */ unsigned int mv_mode : 3; /* PICTURE_LAYER::MVMODE */
VAMvModeVC1 mv_mode2 : 3; /* PICTURE_LAYER::MVMODE2 */ unsigned int mv_mode2 : 3; /* PICTURE_LAYER::MVMODE2 */
unsigned char mv_table : 3; /* PICTURE_LAYER::MVTAB/IMVTAB */ unsigned int mv_table : 3; /* PICTURE_LAYER::MVTAB/IMVTAB */
unsigned char two_mv_block_pattern_table: 2; /* PICTURE_LAYER::2MVBPTAB */ unsigned int two_mv_block_pattern_table: 2; /* PICTURE_LAYER::2MVBPTAB */
unsigned char four_mv_switch : 1; /* PICTURE_LAYER::4MVSWITCH */ unsigned int four_mv_switch : 1; /* PICTURE_LAYER::4MVSWITCH */
unsigned char four_mv_block_pattern_table : 2; /* PICTURE_LAYER::4MVBPTAB */ unsigned int four_mv_block_pattern_table : 2; /* PICTURE_LAYER::4MVBPTAB */
unsigned char extended_mv_flag : 1; /* ENTRY_POINT_LAYER::EXTENDED_MV */ unsigned int extended_mv_flag : 1; /* ENTRY_POINT_LAYER::EXTENDED_MV */
unsigned char extended_mv_range : 2; /* PICTURE_LAYER::MVRANGE */ unsigned int extended_mv_range : 2; /* PICTURE_LAYER::MVRANGE */
unsigned char extended_dmv_flag : 1; /* ENTRY_POINT_LAYER::EXTENDED_DMV */ unsigned int extended_dmv_flag : 1; /* ENTRY_POINT_LAYER::EXTENDED_DMV */
unsigned char extended_dmv_range : 2; /* PICTURE_LAYER::DMVRANGE */ unsigned int extended_dmv_range : 2; /* PICTURE_LAYER::DMVRANGE */
}; } bits;
unsigned int mv_fields; unsigned int value;
}; } mv_fields;
union { union {
struct { struct {
unsigned char dquant : 2; /* ENTRY_POINT_LAYER::DQUANT */ unsigned int dquant : 2; /* ENTRY_POINT_LAYER::DQUANT */
unsigned char quantizer : 2; /* ENTRY_POINT_LAYER::QUANTIZER */ unsigned int quantizer : 2; /* ENTRY_POINT_LAYER::QUANTIZER */
unsigned char half_qp : 1; /* PICTURE_LAYER::HALFQP */ unsigned int half_qp : 1; /* PICTURE_LAYER::HALFQP */
unsigned char pic_quantizer_scale : 5;/* PICTURE_LAYER::PQUANT */ unsigned int pic_quantizer_scale : 5;/* PICTURE_LAYER::PQUANT */
unsigned char pic_quantizer_type : 1;/* PICTURE_LAYER::PQUANTIZER */ unsigned int pic_quantizer_type : 1;/* PICTURE_LAYER::PQUANTIZER */
unsigned char dq_frame : 1; /* VOPDQUANT::DQUANTFRM */ unsigned int dq_frame : 1; /* VOPDQUANT::DQUANTFRM */
unsigned char dq_profile : 2; /* VOPDQUANT::DQPROFILE */ unsigned int dq_profile : 2; /* VOPDQUANT::DQPROFILE */
unsigned char dq_sb_edge : 2; /* VOPDQUANT::DQSBEDGE */ unsigned int dq_sb_edge : 2; /* VOPDQUANT::DQSBEDGE */
unsigned char dq_db_edge : 2; /* VOPDQUANT::DQDBEDGE */ unsigned int dq_db_edge : 2; /* VOPDQUANT::DQDBEDGE */
unsigned char dq_binary_level : 1; /* VOPDQUANT::DQBILEVEL */ unsigned int dq_binary_level : 1; /* VOPDQUANT::DQBILEVEL */
unsigned char alt_pic_quantizer : 5;/* VOPDQUANT::ALTPQUANT */ unsigned int alt_pic_quantizer : 5;/* VOPDQUANT::ALTPQUANT */
}; } bits;
unsigned long pic_quantizer_fields; unsigned int value;
}; } pic_quantizer_fields;
union { union {
struct { struct {
unsigned char variable_sized_transform_flag : 1;/* ENTRY_POINT_LAYER::VSTRANSFORM */ unsigned int variable_sized_transform_flag : 1;/* ENTRY_POINT_LAYER::VSTRANSFORM */
unsigned char mb_level_transform_type_flag : 1;/* PICTURE_LAYER::TTMBF */ unsigned int mb_level_transform_type_flag : 1;/* PICTURE_LAYER::TTMBF */
unsigned char frame_level_transform_type : 2;/* PICTURE_LAYER::TTFRM */ unsigned int frame_level_transform_type : 2;/* PICTURE_LAYER::TTFRM */
unsigned char transform_ac_codingset_idx1 : 2;/* PICTURE_LAYER::TRANSACFRM */ unsigned int transform_ac_codingset_idx1 : 2;/* PICTURE_LAYER::TRANSACFRM */
unsigned char transform_ac_codingset_idx2 : 2;/* PICTURE_LAYER::TRANSACFRM2 */ unsigned int transform_ac_codingset_idx2 : 2;/* PICTURE_LAYER::TRANSACFRM2 */
unsigned char intra_transform_dc_table : 1;/* PICTURE_LAYER::TRANSDCTAB */ unsigned int intra_transform_dc_table : 1;/* PICTURE_LAYER::TRANSDCTAB */
}; } bits;
unsigned short transform_fields; unsigned int value;
}; } transform_fields;
} VAPictureParameterBufferVC1; } VAPictureParameterBufferVC1;
/* VC-1 Bitplane Buffer /* VC-1 Bitplane Buffer
...@@ -890,15 +897,15 @@ typedef struct _VAPictureParameterBufferH264 ...@@ -890,15 +897,15 @@ typedef struct _VAPictureParameterBufferH264
unsigned char num_ref_frames; unsigned char num_ref_frames;
union { union {
struct { struct {
unsigned char chroma_format_idc : 2; unsigned int chroma_format_idc : 2;
unsigned char residual_colour_transform_flag : 1; unsigned int residual_colour_transform_flag : 1;
unsigned char frame_mbs_only_flag : 1; unsigned int frame_mbs_only_flag : 1;
unsigned char mb_adaptive_frame_field_flag : 1; unsigned int mb_adaptive_frame_field_flag : 1;
unsigned char direct_8x8_inference_flag : 1; unsigned int direct_8x8_inference_flag : 1;
unsigned char MinLumaBiPredSize8x8 : 1; /* see A.3.3.2 */ unsigned int MinLumaBiPredSize8x8 : 1; /* see A.3.3.2 */
}; } bits;
unsigned char seq_fields; unsigned int value;
}; } seq_fields;
unsigned char num_slice_groups_minus1; unsigned char num_slice_groups_minus1;
unsigned char slice_group_map_type; unsigned char slice_group_map_type;
signed char pic_init_qp_minus26; signed char pic_init_qp_minus26;
...@@ -906,15 +913,15 @@ typedef struct _VAPictureParameterBufferH264 ...@@ -906,15 +913,15 @@ typedef struct _VAPictureParameterBufferH264
signed char second_chroma_qp_index_offset; signed char second_chroma_qp_index_offset;
union { union {
struct { struct {
unsigned char entropy_coding_mode_flag : 1; unsigned int entropy_coding_mode_flag : 1;
unsigned char weighted_pred_flag : 1; unsigned int weighted_pred_flag : 1;
unsigned char weighted_bipred_idc : 2; unsigned int weighted_bipred_idc : 2;
unsigned char transform_8x8_mode_flag : 1; unsigned int transform_8x8_mode_flag : 1;
unsigned char field_pic_flag : 1; unsigned int field_pic_flag : 1;
unsigned char constrained_intra_pred_flag : 1; unsigned int constrained_intra_pred_flag : 1;
}; } bits;
unsigned char pic_fields; unsigned int value;
}; } pic_fields;
unsigned short frame_num; unsigned short frame_num;
} VAPictureParameterBufferH264; } VAPictureParameterBufferH264;
...@@ -1000,25 +1007,19 @@ typedef struct _VAEncSliceParameterBuffer ...@@ -1000,25 +1007,19 @@ typedef struct _VAEncSliceParameterBuffer
typedef struct _VAEncSequenceParameterBufferH264 typedef struct _VAEncSequenceParameterBufferH264
{ {
unsigned char seq_parameter_set_id;
unsigned char level_idc; unsigned char level_idc;
unsigned int intra_period;
unsigned int picture_width_in_mbs; unsigned int picture_width_in_mbs;
unsigned int picture_height_in_mbs; unsigned int picture_height_in_mbs;
unsigned int bits_per_second; unsigned int bits_per_second;
unsigned int frame_rate; unsigned int frame_rate;
int initial_qp; unsigned int initial_qp;
int min_qp; unsigned int min_qp;
unsigned int basic_unit_size; unsigned int basic_unit_size;
unsigned char vui_flag; unsigned char vui_flag;
} VAEncSequenceParameterBufferH264; } VAEncSequenceParameterBufferH264;
typedef struct _VAEncVUIParameterBufferH264
{
unsigned int time_scale;
unsigned char initial_cpb_removeal_delay_length_minus1;
unsigned char dpb_output_delay_length_minus1;
unsigned char time_offset_length;
} VAEncVUIParameterBufferH264;
typedef struct _VAEncPictureParameterBufferH264 typedef struct _VAEncPictureParameterBufferH264
{ {
VASurfaceID reference_picture; VASurfaceID reference_picture;
...@@ -1037,8 +1038,8 @@ typedef struct _VAEncSequenceParameterBufferH263 ...@@ -1037,8 +1038,8 @@ typedef struct _VAEncSequenceParameterBufferH263
{ {
unsigned int bits_per_second; unsigned int bits_per_second;
unsigned int frame_rate; unsigned int frame_rate;
int initial_qp; unsigned int initial_qp;
int min_qp; unsigned int min_qp;
} VAEncSequenceParameterBufferH263; } VAEncSequenceParameterBufferH263;
typedef struct _VAEncPictureParameterBufferH263 typedef struct _VAEncPictureParameterBufferH263
...@@ -1058,14 +1059,16 @@ typedef struct _VAEncPictureParameterBufferH263 ...@@ -1058,14 +1059,16 @@ typedef struct _VAEncPictureParameterBufferH263
typedef struct _VAEncSequenceParameterBufferMPEG4 typedef struct _VAEncSequenceParameterBufferMPEG4
{ {
unsigned char profile_and_level_indication; unsigned char profile_and_level_indication;
unsigned int intra_period;
unsigned int video_object_layer_width; unsigned int video_object_layer_width;
unsigned int video_object_layer_height; unsigned int video_object_layer_height;
unsigned int vop_time_increment_resolution; unsigned int vop_time_increment_resolution;
unsigned int fixed_vop_rate;
unsigned int fixed_vop_time_increment; unsigned int fixed_vop_time_increment;
unsigned int bits_per_second; unsigned int bits_per_second;
unsigned int frame_rate; unsigned int frame_rate;
int initial_qp; unsigned int initial_qp;
int min_qp; unsigned int min_qp;
} VAEncSequenceParameterBufferMPEG4; } VAEncSequenceParameterBufferMPEG4;
typedef struct _VAEncPictureParameterBufferMPEG4 typedef struct _VAEncPictureParameterBufferMPEG4
...@@ -1075,6 +1078,7 @@ typedef struct _VAEncPictureParameterBufferMPEG4 ...@@ -1075,6 +1078,7 @@ typedef struct _VAEncPictureParameterBufferMPEG4
VABufferID coded_buf; VABufferID coded_buf;
unsigned short picture_width; unsigned short picture_width;
unsigned short picture_height; unsigned short picture_height;
unsigned int modulo_time_base; /* number of 1s */
unsigned int vop_time_increment; unsigned int vop_time_increment;
VAEncPictureType picture_type; VAEncPictureType picture_type;
} VAEncPictureParameterBufferMPEG4; } VAEncPictureParameterBufferMPEG4;
...@@ -1229,7 +1233,7 @@ VAStatus vaQuerySurfaceStatus ( ...@@ -1229,7 +1233,7 @@ VAStatus vaQuerySurfaceStatus (
* Both images, subpictures and surfaces follow the same 2D coordinate system where origin * Both images, subpictures and surfaces follow the same 2D coordinate system where origin
* is at the upper left corner with positive X to the right and positive Y down * is at the upper left corner with positive X to the right and positive Y down
*/ */
#define MAKEFOURCC(ch0, ch1, ch2, ch3) \ #define VA_MAKEFOURCC(ch0, ch1, ch2, ch3) \
((unsigned long)(unsigned char) (ch0) | ((unsigned long)(unsigned char) (ch1) << 8) | \ ((unsigned long)(unsigned char) (ch0) | ((unsigned long)(unsigned char) (ch1) << 8) | \
((unsigned long)(unsigned char) (ch2) << 16) | ((unsigned long)(unsigned char) (ch3) << 24 )) ((unsigned long)(unsigned char) (ch2) << 16) | ((unsigned long)(unsigned char) (ch3) << 24 ))
...@@ -1685,6 +1689,7 @@ VAStatus vaSetDisplayAttributes ( ...@@ -1685,6 +1689,7 @@ VAStatus vaSetDisplayAttributes (
int num_attributes int num_attributes
); );
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment