VA-API
|
00001 /* 00002 * Copyright (c) 2007-2011 Intel Corporation. All Rights Reserved. 00003 * 00004 * Permission is hereby granted, free of charge, to any person obtaining a 00005 * copy of this software and associated documentation files (the 00006 * "Software"), to deal in the Software without restriction, including 00007 * without limitation the rights to use, copy, modify, merge, publish, 00008 * distribute, sub license, and/or sell copies of the Software, and to 00009 * permit persons to whom the Software is furnished to do so, subject to 00010 * the following conditions: 00011 * 00012 * The above copyright notice and this permission notice (including the 00013 * next paragraph) shall be included in all copies or substantial portions 00014 * of the Software. 00015 * 00016 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00017 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00018 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 00019 * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR 00020 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 00021 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 00022 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00023 */ 00024 00032 #ifndef VA_VPP_H 00033 #define VA_VPP_H 00034 00035 #ifdef __cplusplus 00036 extern "C" { 00037 #endif 00038 00238 typedef enum _VAProcFilterType { 00239 VAProcFilterNone = 0, 00241 VAProcFilterNoiseReduction, 00243 VAProcFilterDeinterlacing, 00245 VAProcFilterSharpening, 00247 VAProcFilterColorBalance, 00249 VAProcFilterColorStandard, 00251 VAProcFilterCount 00252 } VAProcFilterType; 00253 00255 typedef enum _VAProcDeinterlacingType { 00256 VAProcDeinterlacingNone = 0, 00258 VAProcDeinterlacingBob, 00260 VAProcDeinterlacingWeave, 00262 VAProcDeinterlacingMotionAdaptive, 00264 VAProcDeinterlacingMotionCompensated, 00266 VAProcDeinterlacingCount 00267 } VAProcDeinterlacingType; 00268 00270 typedef enum _VAProcColorBalanceType { 00271 VAProcColorBalanceNone = 0, 00273 VAProcColorBalanceHue, 00275 VAProcColorBalanceSaturation, 00277 VAProcColorBalanceBrightness, 00279 VAProcColorBalanceContrast, 00281 VAProcColorBalanceAutoSaturation, 00283 VAProcColorBalanceAutoBrightness, 00285 VAProcColorBalanceAutoContrast, 00287 VAProcColorBalanceCount 00288 } VAProcColorBalanceType; 00289 00291 typedef enum _VAProcColorStandardType { 00292 VAProcColorStandardNone = 0, 00294 VAProcColorStandardBT601, 00296 VAProcColorStandardBT709, 00298 VAProcColorStandardBT470M, 00300 VAProcColorStandardBT470BG, 00302 VAProcColorStandardSMPTE170M, 00304 VAProcColorStandardSMPTE240M, 00306 VAProcColorStandardGenericFilm, 00308 VAProcColorStandardCount 00309 } VAProcColorStandardType; 00310 00314 #define VA_PROC_PIPELINE_SUBPICTURES 0x00000001 00315 00325 #define VA_PROC_PIPELINE_FAST 0x00000002 00326 00331 #define VA_PROC_FILTER_MANDATORY 0x00000001 00332 00335 typedef struct _VAProcPipelineCaps { 00337 unsigned int flags; 00339 unsigned int pipeline_flags; 00341 unsigned int filter_flags; 00343 unsigned int num_forward_references; 00345 unsigned int num_backward_references; 00347 VAProcColorStandardType *input_color_standards; 00349 unsigned int num_input_color_standards; 00351 VAProcColorStandardType *output_color_standards; 00353 unsigned int num_output_color_standards; 00354 } VAProcPipelineCaps; 00355 00357 typedef struct _VAProcFilterValueRange { 00359 float min_value; 00361 float max_value; 00363 float default_value; 00365 float step; 00366 } VAProcFilterValueRange; 00367 00398 typedef struct _VAProcPipelineParameterBuffer { 00406 VASurfaceID surface; 00414 const VARectangle *surface_region; 00423 VAProcColorStandardType surface_color_standard; 00434 const VARectangle *output_region; 00450 unsigned int output_background_color; 00454 VAProcColorStandardType output_color_standard; 00462 unsigned int pipeline_flags; 00480 unsigned int filter_flags; 00497 VABufferID *filters; 00499 unsigned int num_filters; 00501 VASurfaceID *forward_references; 00503 unsigned int num_forward_references; 00505 VASurfaceID *backward_references; 00507 unsigned int num_backward_references; 00508 } VAProcPipelineParameterBuffer; 00509 00517 typedef struct _VAProcFilterParameterBufferBase { 00519 VAProcFilterType type; 00520 } VAProcFilterParameterBufferBase; 00521 00528 typedef struct _VAProcFilterParameterBuffer { 00530 VAProcFilterType type; 00532 float value; 00533 } VAProcFilterParameterBuffer; 00534 00536 typedef struct _VAProcFilterParameterBufferDeinterlacing { 00538 VAProcFilterType type; 00540 VAProcDeinterlacingType algorithm; 00541 } VAProcFilterParameterBufferDeinterlacing; 00542 00583 typedef struct _VAProcFilterParameterBufferColorBalance { 00585 VAProcFilterType type; 00587 VAProcColorBalanceType attrib; 00601 float value; 00602 } VAProcFilterParameterBufferColorBalance; 00603 00605 typedef struct _VAProcFilterParameterBufferColorStandard { 00607 VAProcFilterType type; 00609 VAProcColorStandardType standard; 00610 } VAProcFilterParameterBufferColorStandard; 00611 00618 typedef struct _VAProcFilterCap { 00620 VAProcFilterValueRange range; 00621 } VAProcFilterCap; 00622 00624 typedef struct _VAProcFilterCapDeinterlacing { 00626 VAProcDeinterlacingType type; 00627 } VAProcFilterCapDeinterlacing; 00628 00630 typedef struct _VAProcFilterCapColorBalance { 00632 VAProcColorBalanceType type; 00634 VAProcFilterValueRange range; 00635 } VAProcFilterCapColorBalance; 00636 00638 typedef struct _VAProcFilterCapColorStandard { 00640 VAProcColorStandardType type; 00641 } VAProcFilterCapColorStandard; 00642 00668 VAStatus 00669 vaQueryVideoProcFilters( 00670 VADisplay dpy, 00671 VAContextID context, 00672 VAProcFilterType *filters, 00673 unsigned int *num_filters 00674 ); 00675 00695 VAStatus 00696 vaQueryVideoProcFilterCaps( 00697 VADisplay dpy, 00698 VAContextID context, 00699 VAProcFilterType type, 00700 void *filter_caps, 00701 unsigned int *num_filter_caps 00702 ); 00703 00726 VAStatus 00727 vaQueryVideoProcPipelineCaps( 00728 VADisplay dpy, 00729 VAContextID context, 00730 VABufferID *filters, 00731 unsigned int num_filters, 00732 VAProcPipelineCaps *pipeline_caps 00733 ); 00734 00737 #ifdef __cplusplus 00738 } 00739 #endif 00740 00741 #endif /* VA_VPP_H */