| /* |
| * Copyright (c) 2011 Intel Corporation. All Rights Reserved. |
| * |
| * 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 PRECISION INSIGHT 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. |
| * |
| * Authors: |
| * Binglin Chen <binglin.chen@intel.com> |
| * |
| */ |
| |
| #ifndef _VSP_VPP_H_ |
| #define _VSP_VPP_H_ |
| |
| #include "psb_drv_video.h" |
| #include "vsp_fw.h" |
| |
| #define CONTEXT_VPP_ID 0 |
| #define CONTEXT_VP8_ID 1 |
| #define CONTEXT_COMPOSE_ID 5 |
| |
| struct context_VPP_s { |
| object_context_p obj_context; /* back reference */ |
| |
| uint32_t profile; // ENTDEC BE_PROFILE & FE_PROFILE |
| uint32_t profile_idc; // BE_PROFILEIDC |
| |
| struct psb_buffer_s *context_buf; |
| struct psb_buffer_s *intermediate_buf; |
| |
| VABufferID *filters; |
| unsigned int num_filters; |
| |
| enum vsp_format format; |
| |
| object_buffer_p filter_buf[VssProcPipelineMaxNumFilters]; |
| object_buffer_p frc_buf; |
| |
| unsigned int param_sz; |
| unsigned int pic_param_sz; |
| unsigned int pic_param_offset; |
| unsigned int end_param_sz; |
| unsigned int end_param_offset; |
| unsigned int pipeline_param_sz; |
| unsigned int pipeline_param_offset; |
| unsigned int denoise_param_sz; |
| unsigned int denoise_param_offset; |
| unsigned int enhancer_param_sz; |
| unsigned int enhancer_param_offset; |
| unsigned int sharpen_param_sz; |
| unsigned int sharpen_param_offset; |
| unsigned int frc_param_sz; |
| unsigned int frc_param_offset; |
| unsigned int seq_param_sz; |
| unsigned int seq_param_offset; |
| unsigned int ref_param_sz; |
| unsigned int ref_param_offset; |
| unsigned int compose_param_sz; |
| unsigned int compose_param_offset; |
| struct VssProcDenoiseParameterBuffer denoise_deblock_param; |
| struct VssProcColorEnhancementParameterBuffer enhancer_param; |
| struct VssProcSharpenParameterBuffer sharpen_param; |
| //used for vp8 only |
| unsigned int max_frame_size; |
| unsigned int vp8_seq_cmd_send; |
| unsigned int re_send_seq_params; |
| unsigned int temporal_layer_number; |
| unsigned int frame_rate[3]; |
| struct VssVp8encSequenceParameterBuffer vp8_seq_param; |
| }; |
| |
| typedef struct context_VPP_s *context_VPP_p; |
| |
| extern struct format_vtable_s vsp_VPP_vtable; |
| |
| /** |
| * Queries video processing filters. |
| * |
| * This function returns the list of video processing filters supported |
| * by the driver. The filters array is allocated by the user and |
| * num_filters shall be initialized to the number of allocated |
| * elements in that array. Upon successful return, the actual number |
| * of filters will be overwritten into num_filters. Otherwise, |
| * VA_STATUS_ERROR_MAX_NUM_EXCEEDED is returned and num_filters |
| * is adjusted to the number of elements that would be returned if enough |
| * space was available. |
| * |
| * The list of video processing filters supported by the driver shall |
| * be ordered in the way they can be iteratively applied. This is needed |
| * for both correctness, i.e. some filters would not mean anything if |
| * applied at the beginning of the pipeline; but also for performance |
| * since some filters can be applied in a single pass (e.g. noise |
| * reduction + deinterlacing). |
| * |
| */ |
| VAStatus vsp_QueryVideoProcFilters( |
| VADriverContextP ctx, |
| VAContextID context, |
| VAProcFilterType *filters, |
| unsigned int *num_filters |
| ); |
| |
| /** |
| * Queries video filter capabilities. |
| * |
| * This function returns the list of capabilities supported by the driver |
| * for a specific video filter. The filter_caps array is allocated by |
| * the user and num_filter_caps shall be initialized to the number |
| * of allocated elements in that array. Upon successful return, the |
| * actual number of filters will be overwritten into num_filter_caps. |
| * Otherwise, VA_STATUS_ERROR_MAX_NUM_EXCEEDED is returned and |
| * num_filter_caps is adjusted to the number of elements that would be |
| * returned if enough space was available. |
| * |
| */ |
| VAStatus vsp_QueryVideoProcFilterCaps( |
| VADriverContextP ctx, |
| VAContextID context, |
| VAProcFilterType type, |
| void *filter_caps, |
| unsigned int *num_filter_caps |
| ); |
| |
| /** |
| * Queries video processing pipeline capabilities. |
| * |
| * This function returns the video processing pipeline capabilities. The |
| * filters array defines the video processing pipeline and is an array |
| * of buffers holding filter parameters. |
| * |
| * Note: the VAProcPipelineCaps structure contains user-provided arrays. |
| * If non-NULL, the corresponding num_* fields shall be filled in on |
| * input with the number of elements allocated. Upon successful return, |
| * the actual number of elements will be overwritten into the num_* |
| * fields. Otherwise, VA_STATUS_ERROR_MAX_NUM_EXCEEDED is returned |
| * and num_* fields are adjusted to the number of elements that would |
| * be returned if enough space was available. |
| * |
| */ |
| VAStatus vsp_QueryVideoProcPipelineCaps( |
| VADriverContextP ctx, |
| VAContextID context, |
| VABufferID *filters, |
| unsigned int num_filters, |
| VAProcPipelineCaps *pipeline_caps |
| ); |
| |
| #endif /* _VSS_VPP_H_ */ |