blob: 3d81211f83f8a9fd7b918bd0ee6d307638c46cc8 [file] [log] [blame]
/*
* 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