Path: blob/21.2-virgl/src/gallium/frontends/va/va_private.h
4561 views
/**************************************************************************1*2* Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian.3* Copyright 2014 Advanced Micro Devices, Inc.4* All Rights Reserved.5*6* Permission is hereby granted, free of charge, to any person obtaining a7* copy of this software and associated documentation files (the8* "Software"), to deal in the Software without restriction, including9* without limitation the rights to use, copy, modify, merge, publish,10* distribute, sub license, and/or sell copies of the Software, and to11* permit persons to whom the Software is furnished to do so, subject to12* the following conditions:13*14* The above copyright notice and this permission notice (including the15* next paragraph) shall be included in all copies or substantial portions16* of the Software.17*18* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS19* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF20* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.21* IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR22* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,23* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE24* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.25*26**************************************************************************/2728#ifndef VA_PRIVATE_H29#define VA_PRIVATE_H3031#include <assert.h>3233#include <va/va.h>34#include <va/va_backend.h>35#include <va/va_backend_vpp.h>36#include <va/va_drmcommon.h>3738#include "pipe/p_video_enums.h"39#include "pipe/p_video_codec.h"40#include "pipe/p_video_state.h"4142#include "vl/vl_compositor.h"43#include "vl/vl_csc.h"4445#include "util/u_dynarray.h"46#include "os/os_thread.h"4748#ifndef VA_RT_FORMAT_YUV420_1049#define VA_RT_FORMAT_YUV420_10 VA_RT_FORMAT_YUV420_10BPP50#endif5152#define VL_VA_DRIVER(ctx) ((vlVaDriver *)ctx->pDriverData)53#define VL_VA_PSCREEN(ctx) (VL_VA_DRIVER(ctx)->vscreen->pscreen)5455#define VL_VA_MAX_IMAGE_FORMATS 1256#define VL_VA_ENC_GOP_COEFF 165758#define UINT_TO_PTR(x) ((void*)(uintptr_t)(x))59#define PTR_TO_UINT(x) ((unsigned)((intptr_t)(x)))6061#define SOI 262#define DQT (4 + 4 * 65)63#define DHT (4 + 2 * 29 + 2 * 179)64#define DRI 665#define SOF (10 + 255 * 3)66#define SOS (8 + 4 * 2)67#define MAX_MJPEG_SLICE_HEADER_SIZE (SOI + DQT + DHT + DRI + SOF + SOS)6869static inline enum pipe_video_chroma_format70ChromaToPipe(int format)71{72switch (format) {73case VA_RT_FORMAT_YUV420:74case VA_RT_FORMAT_YUV420_10BPP:75return PIPE_VIDEO_CHROMA_FORMAT_420;76case VA_RT_FORMAT_YUV422:77return PIPE_VIDEO_CHROMA_FORMAT_422;78case VA_RT_FORMAT_YUV444:79return PIPE_VIDEO_CHROMA_FORMAT_444;80default:81return PIPE_VIDEO_CHROMA_FORMAT_NONE;82}83}8485static inline enum pipe_format86VaFourccToPipeFormat(unsigned format)87{88switch(format) {89case VA_FOURCC('N','V','1','2'):90return PIPE_FORMAT_NV12;91case VA_FOURCC('P','0','1','0'):92return PIPE_FORMAT_P010;93case VA_FOURCC('P','0','1','6'):94return PIPE_FORMAT_P016;95case VA_FOURCC('I','4','2','0'):96return PIPE_FORMAT_IYUV;97case VA_FOURCC('Y','V','1','2'):98return PIPE_FORMAT_YV12;99case VA_FOURCC('Y','U','Y','V'):100case VA_FOURCC('Y','U','Y','2'):101return PIPE_FORMAT_YUYV;102case VA_FOURCC('U','Y','V','Y'):103return PIPE_FORMAT_UYVY;104case VA_FOURCC('B','G','R','A'):105return PIPE_FORMAT_B8G8R8A8_UNORM;106case VA_FOURCC('R','G','B','A'):107return PIPE_FORMAT_R8G8B8A8_UNORM;108case VA_FOURCC('B','G','R','X'):109return PIPE_FORMAT_B8G8R8X8_UNORM;110case VA_FOURCC('R','G','B','X'):111return PIPE_FORMAT_R8G8B8X8_UNORM;112default:113assert(0);114return PIPE_FORMAT_NONE;115}116}117118static inline unsigned119PipeFormatToVaFourcc(enum pipe_format p_format)120{121switch (p_format) {122case PIPE_FORMAT_NV12:123return VA_FOURCC('N','V','1','2');124case PIPE_FORMAT_P010:125return VA_FOURCC('P','0','1','0');126case PIPE_FORMAT_P016:127return VA_FOURCC('P','0','1','6');128case PIPE_FORMAT_IYUV:129return VA_FOURCC('I','4','2','0');130case PIPE_FORMAT_YV12:131return VA_FOURCC('Y','V','1','2');132case PIPE_FORMAT_UYVY:133return VA_FOURCC('U','Y','V','Y');134case PIPE_FORMAT_YUYV:135return VA_FOURCC('Y','U','Y','V');136case PIPE_FORMAT_B8G8R8A8_UNORM:137return VA_FOURCC('B','G','R','A');138case PIPE_FORMAT_R8G8B8A8_UNORM:139return VA_FOURCC('R','G','B','A');140case PIPE_FORMAT_B8G8R8X8_UNORM:141return VA_FOURCC('B','G','R','X');142case PIPE_FORMAT_R8G8B8X8_UNORM:143return VA_FOURCC('R','G','B','X');144default:145assert(0);146return -1;147}148}149150static inline VAProfile151PipeToProfile(enum pipe_video_profile profile)152{153switch (profile) {154case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE:155return VAProfileMPEG2Simple;156case PIPE_VIDEO_PROFILE_MPEG2_MAIN:157return VAProfileMPEG2Main;158case PIPE_VIDEO_PROFILE_MPEG4_SIMPLE:159return VAProfileMPEG4Simple;160case PIPE_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE:161return VAProfileMPEG4AdvancedSimple;162case PIPE_VIDEO_PROFILE_VC1_SIMPLE:163return VAProfileVC1Simple;164case PIPE_VIDEO_PROFILE_VC1_MAIN:165return VAProfileVC1Main;166case PIPE_VIDEO_PROFILE_VC1_ADVANCED:167return VAProfileVC1Advanced;168case PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE:169return VAProfileH264ConstrainedBaseline;170case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN:171return VAProfileH264Main;172case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:173return VAProfileH264High;174case PIPE_VIDEO_PROFILE_HEVC_MAIN:175return VAProfileHEVCMain;176case PIPE_VIDEO_PROFILE_HEVC_MAIN_10:177return VAProfileHEVCMain10;178case PIPE_VIDEO_PROFILE_JPEG_BASELINE:179return VAProfileJPEGBaseline;180case PIPE_VIDEO_PROFILE_VP9_PROFILE0:181return VAProfileVP9Profile0;182case PIPE_VIDEO_PROFILE_VP9_PROFILE2:183return VAProfileVP9Profile2;184case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED:185case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH10:186case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH422:187case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH444:188case PIPE_VIDEO_PROFILE_MPEG4_AVC_CONSTRAINED_BASELINE:189case PIPE_VIDEO_PROFILE_HEVC_MAIN_12:190case PIPE_VIDEO_PROFILE_HEVC_MAIN_STILL:191case PIPE_VIDEO_PROFILE_HEVC_MAIN_444:192case PIPE_VIDEO_PROFILE_UNKNOWN:193return VAProfileNone;194default:195assert(0);196return -1;197}198}199200static inline enum pipe_video_profile201ProfileToPipe(VAProfile profile)202{203switch (profile) {204case VAProfileMPEG2Simple:205return PIPE_VIDEO_PROFILE_MPEG2_SIMPLE;206case VAProfileMPEG2Main:207return PIPE_VIDEO_PROFILE_MPEG2_MAIN;208case VAProfileMPEG4Simple:209return PIPE_VIDEO_PROFILE_MPEG4_SIMPLE;210case VAProfileMPEG4AdvancedSimple:211return PIPE_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE;212case VAProfileVC1Simple:213return PIPE_VIDEO_PROFILE_VC1_SIMPLE;214case VAProfileVC1Main:215return PIPE_VIDEO_PROFILE_VC1_MAIN;216case VAProfileVC1Advanced:217return PIPE_VIDEO_PROFILE_VC1_ADVANCED;218case VAProfileH264ConstrainedBaseline:219return PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE;220case VAProfileH264Main:221return PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN;222case VAProfileH264High:223return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH;224case VAProfileHEVCMain:225return PIPE_VIDEO_PROFILE_HEVC_MAIN;226case VAProfileHEVCMain10:227return PIPE_VIDEO_PROFILE_HEVC_MAIN_10;228case VAProfileJPEGBaseline:229return PIPE_VIDEO_PROFILE_JPEG_BASELINE;230case VAProfileVP9Profile0:231return PIPE_VIDEO_PROFILE_VP9_PROFILE0;232case VAProfileVP9Profile2:233return PIPE_VIDEO_PROFILE_VP9_PROFILE2;234case VAProfileNone:235return PIPE_VIDEO_PROFILE_UNKNOWN;236default:237return PIPE_VIDEO_PROFILE_UNKNOWN;238}239}240241typedef struct {242struct vl_screen *vscreen;243struct pipe_context *pipe;244struct handle_table *htab;245struct vl_compositor compositor;246struct vl_compositor_state cstate;247vl_csc_matrix csc;248mtx_t mutex;249char vendor_string[256];250} vlVaDriver;251252typedef struct {253VAImage *image;254255struct u_rect src_rect;256struct u_rect dst_rect;257258struct pipe_sampler_view *sampler;259} vlVaSubpicture;260261typedef struct {262VABufferType type;263unsigned int size;264unsigned int num_elements;265void *data;266struct {267struct pipe_resource *resource;268struct pipe_transfer *transfer;269} derived_surface;270unsigned int export_refcount;271VABufferInfo export_state;272unsigned int coded_size;273struct pipe_video_buffer *derived_image_buffer;274} vlVaBuffer;275276typedef struct {277struct pipe_video_codec templat, *decoder;278struct pipe_video_buffer *target;279union {280struct pipe_picture_desc base;281struct pipe_mpeg12_picture_desc mpeg12;282struct pipe_mpeg4_picture_desc mpeg4;283struct pipe_vc1_picture_desc vc1;284struct pipe_h264_picture_desc h264;285struct pipe_h265_picture_desc h265;286struct pipe_mjpeg_picture_desc mjpeg;287struct pipe_vp9_picture_desc vp9;288struct pipe_h264_enc_picture_desc h264enc;289struct pipe_h265_enc_picture_desc h265enc;290} desc;291292struct {293unsigned long long int frame_num;294unsigned int start_code_size;295unsigned int vti_bits;296unsigned int quant_scale;297VAPictureParameterBufferMPEG4 pps;298uint8_t start_code[32];299} mpeg4;300301struct {302unsigned sampling_factor;303uint8_t slice_header[MAX_MJPEG_SLICE_HEADER_SIZE];304unsigned int slice_header_size;305} mjpeg;306307struct vl_deint_filter *deint;308vlVaBuffer *coded_buf;309int target_id;310bool first_single_submitted;311int gop_coeff;312bool needs_begin_frame;313void *blit_cs;314int packed_header_type;315} vlVaContext;316317typedef struct {318enum pipe_video_profile profile;319enum pipe_video_entrypoint entrypoint;320enum pipe_h2645_enc_rate_control_method rc;321unsigned int rt_format;322} vlVaConfig;323324typedef struct {325struct pipe_video_buffer templat, *buffer;326struct util_dynarray subpics; /* vlVaSubpicture */327VAContextID ctx;328vlVaBuffer *coded_buf;329void *feedback;330unsigned int frame_num_cnt;331bool force_flushed;332} vlVaSurface;333334// Public functions:335VAStatus VA_DRIVER_INIT_FUNC(VADriverContextP ctx);336337// vtable functions:338VAStatus vlVaTerminate(VADriverContextP ctx);339VAStatus vlVaQueryConfigProfiles(VADriverContextP ctx, VAProfile *profile_list,int *num_profiles);340VAStatus vlVaQueryConfigEntrypoints(VADriverContextP ctx, VAProfile profile,341VAEntrypoint *entrypoint_list, int *num_entrypoints);342VAStatus vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint,343VAConfigAttrib *attrib_list, int num_attribs);344VAStatus vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint,345VAConfigAttrib *attrib_list, int num_attribs, VAConfigID *config_id);346VAStatus vlVaDestroyConfig(VADriverContextP ctx, VAConfigID config_id);347VAStatus vlVaQueryConfigAttributes(VADriverContextP ctx, VAConfigID config_id, VAProfile *profile,348VAEntrypoint *entrypoint, VAConfigAttrib *attrib_list, int *num_attribs);349VAStatus vlVaCreateSurfaces(VADriverContextP ctx, int width, int height, int format,350int num_surfaces, VASurfaceID *surfaces);351VAStatus vlVaDestroySurfaces(VADriverContextP ctx, VASurfaceID *surface_list, int num_surfaces);352VAStatus vlVaCreateContext(VADriverContextP ctx, VAConfigID config_id, int picture_width, int picture_height,353int flag, VASurfaceID *render_targets, int num_render_targets, VAContextID *context);354VAStatus vlVaDestroyContext(VADriverContextP ctx, VAContextID context);355VAStatus vlVaCreateBuffer(VADriverContextP ctx, VAContextID context, VABufferType type, unsigned int size,356unsigned int num_elements, void *data, VABufferID *buf_id);357VAStatus vlVaBufferSetNumElements(VADriverContextP ctx, VABufferID buf_id, unsigned int num_elements);358VAStatus vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuf);359VAStatus vlVaUnmapBuffer(VADriverContextP ctx, VABufferID buf_id);360VAStatus vlVaDestroyBuffer(VADriverContextP ctx, VABufferID buffer_id);361VAStatus vlVaBeginPicture(VADriverContextP ctx, VAContextID context, VASurfaceID render_target);362VAStatus vlVaRenderPicture(VADriverContextP ctx, VAContextID context, VABufferID *buffers, int num_buffers);363VAStatus vlVaEndPicture(VADriverContextP ctx, VAContextID context);364VAStatus vlVaSyncSurface(VADriverContextP ctx, VASurfaceID render_target);365VAStatus vlVaQuerySurfaceStatus(VADriverContextP ctx, VASurfaceID render_target, VASurfaceStatus *status);366VAStatus vlVaQuerySurfaceError(VADriverContextP ctx, VASurfaceID render_target,367VAStatus error_status, void **error_info);368VAStatus vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface, void* draw, short srcx, short srcy,369unsigned short srcw, unsigned short srch, short destx, short desty, unsigned short destw,370unsigned short desth, VARectangle *cliprects, unsigned int number_cliprects,371unsigned int flags);372VAStatus vlVaQueryImageFormats(VADriverContextP ctx, VAImageFormat *format_list, int *num_formats);373VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat *format_list,374unsigned int *flags, unsigned int *num_formats);375VAStatus vlVaCreateImage(VADriverContextP ctx, VAImageFormat *format, int width, int height, VAImage *image);376VAStatus vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image);377VAStatus vlVaDestroyImage(VADriverContextP ctx, VAImageID image);378VAStatus vlVaSetImagePalette(VADriverContextP ctx, VAImageID image, unsigned char *palette);379VAStatus vlVaGetImage(VADriverContextP ctx, VASurfaceID surface, int x, int y,380unsigned int width, unsigned int height, VAImageID image);381VAStatus vlVaPutImage(VADriverContextP ctx, VASurfaceID surface, VAImageID image, int src_x, int src_y,382unsigned int src_width, unsigned int src_height, int dest_x, int dest_y,383unsigned int dest_width, unsigned int dest_height);384VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat *format_list,385unsigned int *flags, unsigned int *num_formats);386VAStatus vlVaCreateSubpicture(VADriverContextP ctx, VAImageID image, VASubpictureID *subpicture);387VAStatus vlVaDestroySubpicture(VADriverContextP ctx, VASubpictureID subpicture);388VAStatus vlVaSubpictureImage(VADriverContextP ctx, VASubpictureID subpicture, VAImageID image);389VAStatus vlVaSetSubpictureChromakey(VADriverContextP ctx, VASubpictureID subpicture,390unsigned int chromakey_min, unsigned int chromakey_max,391unsigned int chromakey_mask);392VAStatus vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx, VASubpictureID subpicture, float global_alpha);393VAStatus vlVaAssociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, VASurfaceID *target_surfaces,394int num_surfaces, short src_x, short src_y,395unsigned short src_width, unsigned short src_height,396short dest_x, short dest_y, unsigned short dest_width, unsigned short dest_height,397unsigned int flags);398VAStatus vlVaDeassociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture,399VASurfaceID *target_surfaces, int num_surfaces);400VAStatus vlVaQueryDisplayAttributes(VADriverContextP ctx, VADisplayAttribute *attr_list, int *num_attributes);401VAStatus vlVaGetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute *attr_list, int num_attributes);402VAStatus vlVaSetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute *attr_list, int num_attributes);403VAStatus vlVaBufferInfo(VADriverContextP ctx, VABufferID buf_id, VABufferType *type,404unsigned int *size, unsigned int *num_elements);405VAStatus vlVaLockSurface(VADriverContextP ctx, VASurfaceID surface, unsigned int *fourcc,406unsigned int *luma_stride, unsigned int *chroma_u_stride, unsigned int *chroma_v_stride,407unsigned int *luma_offset, unsigned int *chroma_u_offset, unsigned int *chroma_v_offset,408unsigned int *buffer_name, void **buffer);409VAStatus vlVaUnlockSurface(VADriverContextP ctx, VASurfaceID surface);410VAStatus vlVaCreateSurfaces2(VADriverContextP ctx, unsigned int format, unsigned int width, unsigned int height,411VASurfaceID *surfaces, unsigned int num_surfaces, VASurfaceAttrib *attrib_list,412unsigned int num_attribs);413VAStatus vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config, VASurfaceAttrib *attrib_list,414unsigned int *num_attribs);415416VAStatus vlVaAcquireBufferHandle(VADriverContextP ctx, VABufferID buf_id, VABufferInfo *out_buf_info);417VAStatus vlVaReleaseBufferHandle(VADriverContextP ctx, VABufferID buf_id);418VAStatus vlVaExportSurfaceHandle(VADriverContextP ctx, VASurfaceID surface_id, uint32_t mem_type, uint32_t flags, void *descriptor);419420VAStatus vlVaQueryVideoProcFilters(VADriverContextP ctx, VAContextID context, VAProcFilterType *filters,421unsigned int *num_filters);422VAStatus vlVaQueryVideoProcFilterCaps(VADriverContextP ctx, VAContextID context, VAProcFilterType type,423void *filter_caps, unsigned int *num_filter_caps);424VAStatus vlVaQueryVideoProcPipelineCaps(VADriverContextP ctx, VAContextID context, VABufferID *filters,425unsigned int num_filters, VAProcPipelineCaps *pipeline_cap);426427// internal functions428VAStatus vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);429VAStatus vlVaHandleSurfaceAllocate(vlVaDriver *drv, vlVaSurface *surface, struct pipe_video_buffer *templat,430const uint64_t *modifiers, unsigned int modifiers_count);431void vlVaGetReferenceFrame(vlVaDriver *drv, VASurfaceID surface_id, struct pipe_video_buffer **ref_frame);432void vlVaHandlePictureParameterBufferMPEG12(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);433void vlVaHandleIQMatrixBufferMPEG12(vlVaContext *context, vlVaBuffer *buf);434void vlVaHandleSliceParameterBufferMPEG12(vlVaContext *context, vlVaBuffer *buf);435void vlVaHandlePictureParameterBufferH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);436void vlVaHandleIQMatrixBufferH264(vlVaContext *context, vlVaBuffer *buf);437void vlVaHandleSliceParameterBufferH264(vlVaContext *context, vlVaBuffer *buf);438void vlVaHandlePictureParameterBufferVC1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);439void vlVaHandleSliceParameterBufferVC1(vlVaContext *context, vlVaBuffer *buf);440void vlVaHandlePictureParameterBufferMPEG4(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);441void vlVaHandleIQMatrixBufferMPEG4(vlVaContext *context, vlVaBuffer *buf);442void vlVaHandleSliceParameterBufferMPEG4(vlVaContext *context, vlVaBuffer *buf);443void vlVaDecoderFixMPEG4Startcode(vlVaContext *context);444void vlVaGetJpegSliceHeader(vlVaContext *context);445void vlVaHandlePictureParameterBufferHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);446void vlVaHandleIQMatrixBufferHEVC(vlVaContext *context, vlVaBuffer *buf);447void vlVaHandleSliceParameterBufferHEVC(vlVaContext *context, vlVaBuffer *buf);448void vlVaHandlePictureParameterBufferMJPEG(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);449void vlVaHandleIQMatrixBufferMJPEG(vlVaContext *context, vlVaBuffer *buf);450void vlVaHandleHuffmanTableBufferType(vlVaContext *context, vlVaBuffer *buf);451void vlVaHandleSliceParameterBufferMJPEG(vlVaContext *context, vlVaBuffer *buf);452void vlVaHandlePictureParameterBufferVP9(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);453void vlVaHandleSliceParameterBufferVP9(vlVaContext *context, vlVaBuffer *buf);454void vlVaDecoderVP9BitstreamHeader(vlVaContext *context, vlVaBuffer *buf);455void getEncParamPresetH264(vlVaContext *context);456void getEncParamPresetH265(vlVaContext *context);457VAStatus vlVaHandleVAEncPictureParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);458VAStatus vlVaHandleVAEncSliceParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);459VAStatus vlVaHandleVAEncSequenceParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);460VAStatus vlVaHandleVAEncMiscParameterTypeRateControlH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);461VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);462VAStatus vlVaHandleVAEncPictureParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);463VAStatus vlVaHandleVAEncSliceParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);464VAStatus vlVaHandleVAEncSequenceParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);465VAStatus vlVaHandleVAEncMiscParameterTypeRateControlHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);466VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);467VAStatus vlVaHandleVAEncPackedHeaderDataBufferTypeHEVC(vlVaContext *context, vlVaBuffer *buf);468#endif //VA_PRIVATE_H469470471