| /* |
| * Copyright (c) 2021, Intel Corporation |
| * |
| * 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, sublicense, |
| * 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 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 NONINFRINGEMENT. IN NO EVENT SHALL |
| * THE AUTHORS OR COPYRIGHT HOLDERS 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. |
| */ |
| //! |
| //! \file media_libva_interface.cpp |
| //! \brief libva interface implementaion. |
| //! |
| |
| #include "media_libva_interface.h" |
| #include "media_libva.h" |
| #include "media_ddi_prot.h" |
| #include "media_libva_encoder.h" |
| #include "media_libva_util.h" |
| |
| VAStatus MediaLibvaInterface::LoadFunction(VADriverContextP ctx) |
| { |
| DDI_CHK_NULL(ctx, "nullptr ctx", VA_STATUS_ERROR_INVALID_CONTEXT); |
| |
| struct VADriverVTable *pVTable = DDI_CODEC_GET_VTABLE(ctx); |
| DDI_CHK_NULL(pVTable, "nullptr pVTable", VA_STATUS_ERROR_INVALID_CONTEXT); |
| |
| struct VADriverVTableVPP *pVTableVpp = DDI_CODEC_GET_VTABLE_VPP(ctx); |
| DDI_CHK_NULL(pVTableVpp, "nullptr pVTableVpp", VA_STATUS_ERROR_INVALID_CONTEXT); |
| |
| #if VA_CHECK_VERSION(1,11,0) |
| struct VADriverVTableProt *pVTableProt = DDI_CODEC_GET_VTABLE_PROT(ctx); |
| DDI_CHK_NULL(pVTableProt, "nullptr pVTableProt", VA_STATUS_ERROR_INVALID_CONTEXT); |
| #endif |
| |
| ctx->pDriverData = nullptr; |
| ctx->version_major = VA_MAJOR_VERSION; |
| ctx->version_minor = VA_MINOR_VERSION; |
| ctx->max_profiles = DDI_CODEC_GEN_MAX_PROFILES; |
| ctx->max_entrypoints = DDI_CODEC_GEN_MAX_ENTRYPOINTS; |
| ctx->max_attributes = (int32_t)VAConfigAttribTypeMax; |
| ctx->max_subpic_formats = DDI_CODEC_GEN_MAX_SUBPIC_FORMATS; |
| ctx->max_display_attributes = DDI_MEDIA_GEN_MAX_DISPLAY_ATTRIBUTES ; |
| ctx->str_vendor = DDI_CODEC_GEN_STR_VENDOR; |
| ctx->vtable_tpi = nullptr; |
| |
| pVTable->vaTerminate = Terminate; |
| pVTable->vaQueryConfigEntrypoints = QueryConfigEntrypoints; |
| pVTable->vaQueryConfigProfiles = QueryConfigProfiles; |
| pVTable->vaQueryConfigAttributes = QueryConfigAttributes; |
| pVTable->vaCreateConfig = CreateConfig; |
| pVTable->vaDestroyConfig = DestroyConfig; |
| pVTable->vaGetConfigAttributes = GetConfigAttributes; |
| |
| pVTable->vaCreateSurfaces = CreateSurfaces; |
| pVTable->vaDestroySurfaces = DestroySurfaces; |
| pVTable->vaCreateSurfaces2 = CreateSurfaces2; |
| |
| pVTable->vaCreateContext = CreateContext; |
| pVTable->vaDestroyContext = DestroyContext; |
| pVTable->vaCreateBuffer = CreateBuffer; |
| pVTable->vaBufferSetNumElements = BufferSetNumElements; |
| pVTable->vaMapBuffer = MapBuffer; |
| pVTable->vaUnmapBuffer = UnmapBuffer; |
| pVTable->vaDestroyBuffer = DestroyBuffer; |
| pVTable->vaBeginPicture = BeginPicture; |
| pVTable->vaRenderPicture = RenderPicture; |
| pVTable->vaEndPicture = EndPicture; |
| pVTable->vaSyncSurface = SyncSurface; |
| #if VA_CHECK_VERSION(1, 9, 0) |
| pVTable->vaSyncSurface2 = SyncSurface2; |
| pVTable->vaSyncBuffer = SyncBuffer; |
| #endif |
| pVTable->vaQuerySurfaceStatus = QuerySurfaceStatus; |
| pVTable->vaQuerySurfaceError = QuerySurfaceError; |
| pVTable->vaQuerySurfaceAttributes = QuerySurfaceAttributes; |
| pVTable->vaPutSurface = PutSurface; |
| pVTable->vaQueryImageFormats = QueryImageFormats; |
| |
| pVTable->vaCreateImage = CreateImage; |
| pVTable->vaDeriveImage = DeriveImage; |
| pVTable->vaDestroyImage = DestroyImage; |
| pVTable->vaSetImagePalette = SetImagePalette; |
| pVTable->vaGetImage = GetImage; |
| pVTable->vaPutImage = PutImage; |
| pVTable->vaQuerySubpictureFormats = QuerySubpictureFormats; |
| pVTable->vaCreateSubpicture = CreateSubpicture; |
| pVTable->vaDestroySubpicture = DestroySubpicture; |
| pVTable->vaSetSubpictureImage = SetSubpictureImage; |
| pVTable->vaSetSubpictureChromakey = SetSubpictureChromakey; |
| pVTable->vaSetSubpictureGlobalAlpha = SetSubpictureGlobalAlpha; |
| pVTable->vaAssociateSubpicture = AssociateSubpicture; |
| pVTable->vaDeassociateSubpicture = DeassociateSubpicture; |
| pVTable->vaQueryDisplayAttributes = QueryDisplayAttributes; |
| pVTable->vaGetDisplayAttributes = GetDisplayAttributes; |
| pVTable->vaSetDisplayAttributes = SetDisplayAttributes; |
| pVTable->vaQueryProcessingRate = QueryProcessingRate; |
| #if VA_CHECK_VERSION(1,10,0) |
| pVTable->vaCopy = Copy; |
| #endif |
| |
| // vaTrace |
| pVTable->vaBufferInfo = BufferInfo; |
| pVTable->vaLockSurface = LockSurface; |
| pVTable->vaUnlockSurface = UnlockSurface; |
| |
| pVTableVpp->vaQueryVideoProcFilters = QueryVideoProcFilters; |
| pVTableVpp->vaQueryVideoProcFilterCaps = QueryVideoProcFilterCaps; |
| pVTableVpp->vaQueryVideoProcPipelineCaps = QueryVideoProcPipelineCaps; |
| |
| #if VA_CHECK_VERSION(1,11,0) |
| pVTableProt->vaCreateProtectedSession = DdiMediaProtected::DdiMedia_CreateProtectedSession; |
| pVTableProt->vaDestroyProtectedSession = DdiMediaProtected::DdiMedia_DestroyProtectedSession; |
| pVTableProt->vaAttachProtectedSession = DdiMediaProtected::DdiMedia_AttachProtectedSession; |
| pVTableProt->vaDetachProtectedSession = DdiMediaProtected::DdiMedia_DetachProtectedSession; |
| pVTableProt->vaProtectedSessionExecute = DdiMediaProtected::DdiMedia_ProtectedSessionExecute; |
| #endif |
| |
| //pVTable->vaSetSurfaceAttributes = DdiMedia_SetSurfaceAttributes; |
| pVTable->vaGetSurfaceAttributes = GetSurfaceAttributes; |
| //Export PRIMEFD/FLINK to application for buffer sharing with OpenCL/GL |
| pVTable->vaAcquireBufferHandle = AcquireBufferHandle; |
| pVTable->vaReleaseBufferHandle = ReleaseBufferHandle; |
| pVTable->vaExportSurfaceHandle = ExportSurfaceHandle; |
| #ifndef ANDROID |
| pVTable->vaCreateMFContext = CreateMfeContextInternal; |
| pVTable->vaMFAddContext = AddContextInternal; |
| pVTable->vaMFReleaseContext = ReleaseContextInternal; |
| pVTable->vaMFSubmit = DdiEncode_MfeSubmit; |
| #endif |
| |
| return VA_STATUS_SUCCESS; |
| } |
| |
| VAStatus MediaLibvaInterface::Terminate(VADriverContextP ctx) |
| { |
| return DdiMedia_Terminate(ctx); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryConfigEntrypoints( |
| VADriverContextP ctx, |
| VAProfile profile, |
| VAEntrypoint *entrypoint_list, |
| int32_t *num_entrypoints) |
| { |
| return DdiMedia_QueryConfigEntrypoints(ctx, profile, entrypoint_list, |
| num_entrypoints); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryConfigProfiles( |
| VADriverContextP ctx, |
| VAProfile *profile_list, |
| int32_t *num_profiles) |
| { |
| return DdiMedia_QueryConfigProfiles(ctx, profile_list, num_profiles); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryConfigAttributes( |
| VADriverContextP ctx, |
| VAConfigID config_id, |
| VAProfile *profile, |
| VAEntrypoint *entrypoint, |
| VAConfigAttrib *attrib_list, |
| int32_t *num_attribs) |
| { |
| return DdiMedia_QueryConfigAttributes(ctx, config_id, profile, entrypoint, |
| attrib_list, num_attribs); |
| } |
| |
| VAStatus MediaLibvaInterface::CreateConfig( |
| VADriverContextP ctx, |
| VAProfile profile, |
| VAEntrypoint entrypoint, |
| VAConfigAttrib *attrib_list, |
| int32_t num_attribs, |
| VAConfigID *config_id) |
| { |
| return DdiMedia_CreateConfig(ctx, profile, entrypoint, attrib_list, num_attribs, |
| config_id); |
| } |
| |
| VAStatus MediaLibvaInterface::DestroyConfig( |
| VADriverContextP ctx, |
| VAConfigID config_id) |
| { |
| return DdiMedia_DestroyConfig(ctx, config_id); |
| } |
| |
| VAStatus MediaLibvaInterface::GetConfigAttributes( |
| VADriverContextP ctx, |
| VAProfile profile, |
| VAEntrypoint entrypoint, |
| VAConfigAttrib *attrib_list, |
| int32_t num_attribs) |
| { |
| return DdiMedia_GetConfigAttributes(ctx, profile, entrypoint, attrib_list, num_attribs); |
| } |
| |
| VAStatus MediaLibvaInterface::CreateSurfaces( |
| VADriverContextP ctx, |
| int32_t width, |
| int32_t height, |
| int32_t format, |
| int32_t num_surfaces, |
| VASurfaceID *surfaces) |
| { |
| return DdiMedia_CreateSurfaces(ctx, width, height, format, num_surfaces, surfaces); |
| } |
| |
| VAStatus MediaLibvaInterface::DestroySurfaces( |
| VADriverContextP ctx, |
| VASurfaceID *surfaces, |
| int32_t num_surfaces) |
| { |
| return DdiMedia_DestroySurfaces(ctx, surfaces, num_surfaces); |
| } |
| |
| VAStatus MediaLibvaInterface::CreateSurfaces2( |
| VADriverContextP ctx, |
| uint32_t format, |
| uint32_t width, |
| uint32_t height, |
| VASurfaceID *surfaces, |
| uint32_t num_surfaces, |
| VASurfaceAttrib *attrib_list, |
| uint32_t num_attribs) |
| { |
| return DdiMedia_CreateSurfaces2(ctx, format, width, height, surfaces, num_surfaces, |
| attrib_list, num_attribs); |
| } |
| |
| VAStatus MediaLibvaInterface::CreateContext( |
| VADriverContextP ctx, |
| VAConfigID config_id, |
| int32_t picture_width, |
| int32_t picture_height, |
| int32_t flag, |
| VASurfaceID *render_targets, |
| int32_t num_render_targets, |
| VAContextID *context) |
| { |
| return DdiMedia_CreateContext(ctx, config_id, picture_width, picture_height, flag, |
| render_targets, num_render_targets, context); |
| } |
| |
| VAStatus MediaLibvaInterface::DestroyContext( |
| VADriverContextP ctx, |
| VAContextID context) |
| { |
| return DdiMedia_DestroyContext(ctx, context); |
| } |
| |
| VAStatus MediaLibvaInterface::CreateBuffer( |
| VADriverContextP ctx, |
| VAContextID context, |
| VABufferType type, |
| uint32_t size, |
| uint32_t num_elements, |
| void *data, |
| VABufferID *bufId) |
| { |
| return DdiMedia_CreateBuffer(ctx, context, type, size, num_elements, data, bufId); |
| } |
| |
| VAStatus MediaLibvaInterface::BufferSetNumElements( |
| VADriverContextP ctx, |
| VABufferID buf_id, |
| uint32_t num_elements) |
| { |
| return DdiMedia_BufferSetNumElements(ctx, buf_id, num_elements); |
| } |
| |
| VAStatus MediaLibvaInterface::MapBuffer( |
| VADriverContextP ctx, |
| VABufferID buf_id, |
| void **pbuf) |
| { |
| return DdiMedia_MapBuffer(ctx, buf_id, pbuf); |
| } |
| |
| VAStatus MediaLibvaInterface::UnmapBuffer( |
| VADriverContextP ctx, |
| VABufferID buf_id) |
| { |
| return DdiMedia_UnmapBuffer(ctx, buf_id); |
| } |
| |
| VAStatus MediaLibvaInterface::DestroyBuffer( |
| VADriverContextP ctx, |
| VABufferID buffer_id) |
| { |
| return DdiMedia_DestroyBuffer(ctx, buffer_id); |
| } |
| |
| VAStatus MediaLibvaInterface::BeginPicture( |
| VADriverContextP ctx, |
| VAContextID context, |
| VASurfaceID render_target) |
| { |
| return DdiMedia_BeginPicture(ctx, context, render_target); |
| } |
| |
| VAStatus MediaLibvaInterface::RenderPicture( |
| VADriverContextP ctx, |
| VAContextID context, |
| VABufferID *buffers, |
| int32_t num_buffers) |
| { |
| return DdiMedia_RenderPicture(ctx, context, buffers, num_buffers); |
| } |
| |
| VAStatus MediaLibvaInterface::EndPicture( |
| VADriverContextP ctx, |
| VAContextID context) |
| { |
| return DdiMedia_EndPicture(ctx, context); |
| } |
| |
| VAStatus MediaLibvaInterface::SyncSurface( |
| VADriverContextP ctx, |
| VASurfaceID render_target) |
| { |
| return DdiMedia_SyncSurface(ctx, render_target); |
| } |
| |
| #if VA_CHECK_VERSION(1, 9, 0) |
| |
| VAStatus MediaLibvaInterface::SyncSurface2( |
| VADriverContextP ctx, |
| VASurfaceID surface_id, |
| uint64_t timeout_ns) |
| { |
| return DdiMedia_SyncSurface2(ctx, surface_id, timeout_ns); |
| } |
| |
| |
| VAStatus MediaLibvaInterface::SyncBuffer( |
| VADriverContextP ctx, |
| VABufferID buf_id, |
| uint64_t timeout_ns) |
| { |
| return DdiMedia_SyncBuffer(ctx, buf_id, timeout_ns); |
| } |
| #endif |
| |
| VAStatus MediaLibvaInterface::QuerySurfaceStatus( |
| VADriverContextP ctx, |
| VASurfaceID render_target, |
| VASurfaceStatus *status) |
| { |
| return DdiMedia_QuerySurfaceStatus(ctx, render_target, status); |
| } |
| |
| VAStatus MediaLibvaInterface::QuerySurfaceError( |
| VADriverContextP ctx, |
| VASurfaceID render_target, |
| VAStatus error_status, |
| void **error_info) |
| { |
| return DdiMedia_QuerySurfaceError( |
| ctx, render_target, error_status, error_info); |
| } |
| |
| VAStatus MediaLibvaInterface::QuerySurfaceAttributes( |
| VADriverContextP ctx, |
| VAConfigID config_id, |
| VASurfaceAttrib *attrib_list, |
| uint32_t *num_attribs) |
| { |
| return DdiMedia_QuerySurfaceAttributes( |
| ctx, config_id, attrib_list, num_attribs); |
| } |
| |
| VAStatus MediaLibvaInterface::PutSurface( |
| VADriverContextP ctx, |
| VASurfaceID surface, |
| void* draw, |
| int16_t srcx, |
| int16_t srcy, |
| uint16_t srcw, |
| uint16_t srch, |
| int16_t destx, |
| int16_t desty, |
| uint16_t destw, |
| uint16_t desth, |
| VARectangle *cliprects, |
| uint32_t number_cliprects, |
| uint32_t flags) |
| { |
| return DdiMedia_PutSurface(ctx, surface, draw, srcx, srcy, srcw, srch, destx, |
| desty, destw, desth, cliprects, number_cliprects, flags); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryImageFormats( |
| VADriverContextP ctx, |
| VAImageFormat *format_list, |
| int32_t *num_formats) |
| { |
| return DdiMedia_QueryImageFormats(ctx, format_list, num_formats); |
| } |
| |
| VAStatus MediaLibvaInterface::CreateImage( |
| VADriverContextP ctx, |
| VAImageFormat *format, |
| int32_t width, |
| int32_t height, |
| VAImage *image) |
| { |
| return DdiMedia_CreateImage(ctx, format, width, height, image); |
| } |
| |
| VAStatus MediaLibvaInterface::DeriveImage( |
| VADriverContextP ctx, |
| VASurfaceID surface, |
| VAImage *image) |
| { |
| return DdiMedia_DeriveImage(ctx, surface, image); |
| } |
| |
| VAStatus MediaLibvaInterface::DestroyImage( |
| VADriverContextP ctx, |
| VAImageID image) |
| { |
| return DdiMedia_DestroyImage(ctx, image); |
| } |
| |
| VAStatus MediaLibvaInterface::SetImagePalette( |
| VADriverContextP ctx, |
| VAImageID image, |
| unsigned char *palette) |
| { |
| return DdiMedia_SetImagePalette(ctx, image, palette); |
| } |
| |
| VAStatus MediaLibvaInterface::GetImage( |
| VADriverContextP ctx, |
| VASurfaceID surface, |
| int32_t x, |
| int32_t y, |
| uint32_t width, |
| uint32_t height, |
| VAImageID image) |
| { |
| return DdiMedia_GetImage(ctx, surface, x, y, width, height, image); |
| } |
| |
| VAStatus MediaLibvaInterface::PutImage( |
| VADriverContextP ctx, |
| VASurfaceID surface, |
| VAImageID image, |
| int32_t src_x, |
| int32_t src_y, |
| uint32_t src_width, |
| uint32_t src_height, |
| int32_t dest_x, |
| int32_t dest_y, |
| uint32_t dest_width, |
| uint32_t dest_height) |
| { |
| return DdiMedia_PutImage(ctx, surface, image, src_x, src_y, src_width, src_height, |
| dest_x, dest_y, dest_width, dest_height); |
| } |
| |
| VAStatus MediaLibvaInterface::QuerySubpictureFormats( |
| VADriverContextP ctx, |
| VAImageFormat *format_list, |
| uint32_t *flags, |
| uint32_t *num_formats) |
| { |
| return DdiMedia_QuerySubpictureFormats(ctx, format_list, flags, num_formats); |
| } |
| |
| VAStatus MediaLibvaInterface::CreateSubpicture( |
| VADriverContextP ctx, |
| VAImageID image, |
| VASubpictureID *subpicture) |
| { |
| return DdiMedia_CreateSubpicture(ctx, image, subpicture); |
| } |
| |
| VAStatus MediaLibvaInterface::DestroySubpicture( |
| VADriverContextP ctx, |
| VASubpictureID subpicture) |
| { |
| return DdiMedia_DestroySubpicture(ctx, subpicture); |
| } |
| |
| VAStatus MediaLibvaInterface::SetSubpictureImage( |
| VADriverContextP ctx, |
| VASubpictureID subpicture, |
| VAImageID image) |
| { |
| return DdiMedia_SetSubpictureImage(ctx, subpicture, image); |
| } |
| |
| VAStatus MediaLibvaInterface::SetSubpictureChromakey( |
| VADriverContextP ctx, |
| VASubpictureID subpicture, |
| uint32_t chromakey_min, |
| uint32_t chromakey_max, |
| uint32_t chromakey_mask) |
| { |
| return DdiMedia_SetSubpictureChromakey(ctx, subpicture, chromakey_min, chromakey_max, |
| chromakey_mask); |
| } |
| |
| VAStatus MediaLibvaInterface::SetSubpictureGlobalAlpha( |
| VADriverContextP ctx, |
| VASubpictureID subpicture, |
| float global_alpha) |
| { |
| return DdiMedia_SetSubpictureGlobalAlpha(ctx, subpicture, global_alpha); |
| } |
| |
| VAStatus MediaLibvaInterface::AssociateSubpicture( |
| VADriverContextP ctx, |
| VASubpictureID subpicture, |
| VASurfaceID *target_surfaces, |
| int32_t num_surfaces, |
| int16_t src_x, |
| int16_t src_y, |
| uint16_t src_width, |
| uint16_t src_height, |
| int16_t dest_x, |
| int16_t dest_y, |
| uint16_t dest_width, |
| uint16_t dest_height, |
| uint32_t flags) |
| { |
| return DdiMedia_AssociateSubpicture(ctx, subpicture, target_surfaces, num_surfaces, |
| src_x, src_y, src_width, src_height, dest_x, dest_y, dest_width, dest_height, flags); |
| } |
| |
| VAStatus MediaLibvaInterface::DeassociateSubpicture( |
| VADriverContextP ctx, |
| VASubpictureID subpicture, |
| VASurfaceID *target_surfaces, |
| int32_t num_surfaces) |
| { |
| return DdiMedia_DeassociateSubpicture(ctx, subpicture, target_surfaces, num_surfaces); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryDisplayAttributes( |
| VADriverContextP ctx, |
| VADisplayAttribute *attr_list, |
| int32_t *num_attributes) |
| { |
| return DdiMedia_QueryDisplayAttributes(ctx, attr_list, num_attributes); |
| } |
| |
| VAStatus MediaLibvaInterface::GetDisplayAttributes( |
| VADriverContextP ctx, |
| VADisplayAttribute *attr_list, |
| int32_t num_attributes) |
| { |
| return DdiMedia_GetDisplayAttributes(ctx, attr_list, num_attributes); |
| } |
| |
| VAStatus MediaLibvaInterface::SetDisplayAttributes( |
| VADriverContextP ctx, |
| VADisplayAttribute *attr_list, |
| int32_t num_attributes) |
| { |
| return DdiMedia_SetDisplayAttributes(ctx, attr_list, num_attributes); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryProcessingRate( |
| VADriverContextP ctx, |
| VAConfigID config_id, |
| VAProcessingRateParameter *proc_buf, |
| uint32_t *processing_rate) |
| { |
| return DdiMedia_QueryProcessingRate(ctx, config_id, proc_buf, processing_rate); |
| } |
| |
| #if VA_CHECK_VERSION(1,10,0) |
| VAStatus MediaLibvaInterface::Copy( |
| VADriverContextP ctx, |
| VACopyObject *dst_obj, |
| VACopyObject *src_obj, |
| VACopyOption option) |
| { |
| return DdiMedia_Copy(ctx, dst_obj, src_obj, option); |
| } |
| #endif |
| |
| VAStatus MediaLibvaInterface::BufferInfo( |
| VADriverContextP ctx, |
| VABufferID buf_id, |
| VABufferType *type, |
| uint32_t *size, |
| uint32_t *num_elements) |
| { |
| return DdiMedia_BufferInfo(ctx, buf_id, type, size, num_elements); |
| } |
| |
| VAStatus MediaLibvaInterface::LockSurface( |
| VADriverContextP ctx, |
| VASurfaceID surface, |
| uint32_t *fourcc, |
| uint32_t *luma_stride, |
| uint32_t *chroma_u_stride, |
| uint32_t *chroma_v_stride, |
| uint32_t *luma_offset, |
| uint32_t *chroma_u_offset, |
| uint32_t *chroma_v_offset, |
| uint32_t *buffer_name, |
| void **buffer) |
| { |
| return DdiMedia_LockSurface(ctx, surface, fourcc, luma_stride, chroma_u_stride, |
| chroma_v_stride, luma_offset, chroma_u_offset, chroma_v_offset, buffer_name, buffer); |
| } |
| |
| VAStatus MediaLibvaInterface::UnlockSurface( |
| VADriverContextP ctx, |
| VASurfaceID surface) |
| { |
| return DdiMedia_UnlockSurface(ctx, surface); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryVideoProcFilters( |
| VADriverContextP ctx, |
| VAContextID context, |
| VAProcFilterType *filters, |
| uint32_t *num_filters) |
| { |
| return DdiMedia_QueryVideoProcFilters(ctx, context, filters, num_filters); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryVideoProcFilterCaps( |
| VADriverContextP ctx, |
| VAContextID context, |
| VAProcFilterType type, |
| void *filter_caps, |
| uint32_t *num_filter_caps) |
| { |
| return DdiMedia_QueryVideoProcFilterCaps(ctx, context, type, filter_caps, num_filter_caps); |
| } |
| |
| VAStatus MediaLibvaInterface::QueryVideoProcPipelineCaps( |
| VADriverContextP ctx, |
| VAContextID context, |
| VABufferID *filters, |
| uint32_t num_filters, |
| VAProcPipelineCaps *pipeline_caps) |
| { |
| return DdiMedia_QueryVideoProcPipelineCaps(ctx, context, filters, num_filters, |
| pipeline_caps); |
| } |
| |
| #if VA_CHECK_VERSION(1,11,0) |
| VAStatus MediaLibvaInterface::CreateProtectedSession( |
| VADriverContextP ctx, |
| VAConfigID config_id, |
| VAProtectedSessionID *protected_session) |
| { |
| return DdiMediaProtected::DdiMedia_CreateProtectedSession(ctx, config_id, protected_session); |
| } |
| |
| VAStatus MediaLibvaInterface::DestroyProtectedSession( |
| VADriverContextP ctx, |
| VAProtectedSessionID protected_session) |
| { |
| return DdiMediaProtected::DdiMedia_DestroyProtectedSession(ctx, protected_session); |
| } |
| |
| VAStatus MediaLibvaInterface::AttachProtectedSession( |
| VADriverContextP ctx, |
| VAContextID context, |
| VAProtectedSessionID protected_session) |
| { |
| return DdiMediaProtected::DdiMedia_AttachProtectedSession(ctx, context, protected_session); |
| } |
| |
| VAStatus MediaLibvaInterface::DetachProtectedSession( |
| VADriverContextP ctx, |
| VAContextID context) |
| { |
| return DdiMediaProtected::DdiMedia_DetachProtectedSession(ctx, context); |
| } |
| |
| VAStatus MediaLibvaInterface::ProtectedSessionExecute( |
| VADriverContextP ctx, |
| VAProtectedSessionID protected_session, |
| VABufferID data) |
| { |
| return DdiMediaProtected::DdiMedia_ProtectedSessionExecute(ctx, protected_session, data); |
| } |
| #endif |
| |
| VAStatus MediaLibvaInterface::GetSurfaceAttributes( |
| VADriverContextP ctx, |
| VAConfigID config, |
| VASurfaceAttrib *attrib_list, |
| uint32_t num_attribs) |
| { |
| return DdiMedia_GetSurfaceAttributes(ctx, config, attrib_list, num_attribs); |
| } |
| |
| VAStatus MediaLibvaInterface::AcquireBufferHandle( |
| VADriverContextP ctx, |
| VABufferID buf_id, |
| VABufferInfo *buf_info) |
| { |
| return DdiMedia_AcquireBufferHandle(ctx, buf_id, buf_info); |
| } |
| |
| VAStatus MediaLibvaInterface::ReleaseBufferHandle( |
| VADriverContextP ctx, |
| VABufferID buf_id) |
| { |
| return DdiMedia_ReleaseBufferHandle(ctx, buf_id); |
| } |
| |
| VAStatus MediaLibvaInterface::ExportSurfaceHandle( |
| VADriverContextP ctx, |
| VASurfaceID surface_id, |
| uint32_t mem_type, |
| uint32_t flags, |
| void *descriptor) |
| { |
| return DdiMedia_ExportSurfaceHandle(ctx, surface_id, mem_type, flags, descriptor); |
| } |
| |
| #ifndef ANDROID |
| VAStatus MediaLibvaInterface::CreateMfeContextInternal( |
| VADriverContextP ctx, |
| VAMFContextID *mfe_context) |
| { |
| return DdiMedia_CreateMfeContextInternal(ctx, mfe_context); |
| } |
| |
| VAStatus MediaLibvaInterface::AddContextInternal( |
| VADriverContextP ctx, |
| VAContextID context, |
| VAMFContextID mfe_context) |
| { |
| return DdiMedia_AddContextInternal(ctx, context, mfe_context); |
| } |
| |
| VAStatus MediaLibvaInterface::ReleaseContextInternal( |
| VADriverContextP ctx, |
| VAContextID context, |
| VAMFContextID mfe_context) |
| { |
| return DdiMedia_ReleaseContextInternal(ctx, context, mfe_context); |
| } |
| |
| VAStatus MediaLibvaInterface::MfeSubmit( |
| VADriverContextP ctx, |
| VAMFContextID mfe_context, |
| VAContextID *contexts, |
| int32_t num_contexts) |
| { |
| return DdiEncode_MfeSubmit(ctx, mfe_context, contexts, num_contexts); |
| } |
| #endif |