blob: 5bc381843ceecb65b637e81c9c0de65389562534 [file] [log] [blame]
/*
* Copyright (c) 2013-2020, 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 codechal_secure_decode_interface.h
//! \brief Stub file for CodecHal Secure Decode
//!
#ifndef __CODECHAL_SECURE_DECODE_INTERFACE_H__
#define __CODECHAL_SECURE_DECODE_INTERFACE_H__
#include "codechal_hw.h"
//!
//! \class CodechalSecureDecode
//! \brief Codechal secure decode
//!
class CodechalSecureDecodeInterface
{
public:
//!
//! \brief Allocate Resource
//!
virtual MOS_STATUS AllocateResource(void *state) = 0;
//!
//! \brief Execute Huc StreamOut
//!
virtual MOS_STATUS Execute(void *state) = 0;
//!
//! \brief Set Bitstream Buffer
//!
virtual MOS_STATUS SetBitstreamBuffer(MHW_VDBOX_IND_OBJ_BASE_ADDR_PARAMS *indObjBaseAddrParams) = 0;
//!
//! \brief Set HEVC Huc Dmem S2L Bss
//!
virtual MOS_STATUS SetHevcHucDmemS2LBss(
void *state,
void *hucPicBss,
void *hucSliceBss) = 0;
//!
//! \brief Add Hevc Huc SecureState
//!
virtual MOS_STATUS AddHucSecureState(
void * state,
void * hevcSliceState,
PMOS_COMMAND_BUFFER cmdBuffer) = 0;
//!
//! \brief Set Huc StreamObject Params
//!
virtual MOS_STATUS SetHucStreamObj(
PMHW_VDBOX_HUC_STREAM_OBJ_PARAMS hucStreamObjParams) = 0;
//!
//! \brief Add Hevc Hcp SecureState
//!
virtual MOS_STATUS AddHcpSecureState(
PMOS_COMMAND_BUFFER cmdBuffer,
void *sliceState) = 0;
//!
//! \brief Reset VP9 SegId Buffer With Huc
//!
virtual MOS_STATUS ResetVP9SegIdBufferWithHuc(
void *state,
PMOS_COMMAND_BUFFER cmdBuffer) = 0;
//!
//! \brief Update VP9 ProbBuffer With Huc
//!
virtual MOS_STATUS UpdateVP9ProbBufferWithHuc(
bool isFullUpdate,
void *state,
PMOS_COMMAND_BUFFER cmdBuffer) = 0;
//!
//! \brief Encrypt default cdf table buffer through HuC copy
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
//!
virtual MOS_STATUS ProtectDefaultCdfTableBuffer(
void *state,
uint32_t bufIndex,
PMOS_COMMAND_BUFFER cmdBuffer) = 0;
//!
//! \brief Return the temp cdf table buffer
//! \return PMOS_RESOURCE
//!
virtual PMOS_RESOURCE GetTempCdfTableBuffer() = 0;
//!
//! \brief Is aux data invalid
//!
virtual bool IsAuxDataInvalid(
PMOS_RESOURCE res) = 0;
//!
//! \brief Encrypt aux buffer through partial copy
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
//!
virtual MOS_STATUS InitAuxSurface(
PMOS_RESOURCE res,
bool auxUV,
bool isMmcEnabled) = 0;
//!
//! \brief Is Dummy SteamOut Enabled
//!
virtual bool IsDummyStreamEnabled() = 0;
//!
//! \brief Destructor
//!
virtual ~CodechalSecureDecodeInterface(){}
//!
//! \brief Update huc streamout buffer index
//!
virtual MOS_STATUS UpdateHuCStreamoutBufferIndex() = 0;
};
//!
//! \brief Create CodechalSecureDeocde Object
//! Must use Delete_CodechalSecureDecodeInterface to delete created Object to avoid ULT Memory Leak errors
//!
//! \return Return CP Wrapper Object
//!
CodechalSecureDecodeInterface *Create_SecureDecodeInterface(
CodechalSetting * codechalSettings,
CodechalHwInterface * hwInterfaceInput);
//!
//! \brief Delete the CodecHalSecureDecode Object
//!
//! \param [in] *pMhwCpInterface
//! MhwCpInterface
//!
void Delete_SecureDecodeInterface(CodechalSecureDecodeInterface* pCodechalSecureDecodeInterface);
#endif // __CODECHAL_SECURE_DECODE_H__