blob: 860a83b45b50617cd4d0f1637591ec557253d500 [file] [log] [blame]
/*
* Copyright (c) 2011, 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 BRCIF.h
//! \brief This modules implements the interface for BRC dll
//!
#ifndef _BRCIF_H__
#define _BRCIF_H__
//!
//! \enum ErrorCode
//! \brief Error code
//!
enum ErrorCode {
SUCCEED = 0,
NO_CURBE,
NO_HISTORY,
NO_CONSTANT,
NO_DISTORTION,
NO_PAK,
NO_ENC,
NO_IMGSTATE,
NO_MBQP,
UNKNOWN_PROCESSTYPE,
UNKNOWN_BUFFERTYPE,
UNKNOWN_ERROR
};
//!
//! \enum ProcessType
//! \brief Process type
//!
enum ProcessType {
UnknownProc = 0,
BRCInit,
BRCReset,
BRCUpdate,
BRCUpdateLD
};
//!
//! \enum BufferType
//! \brief Buffer type
//!
enum BufferType {
UnknownBuff = 0,
CURBE,
HISTORY,
CONSTANT,
DISTORTION,
PAK,
ENC,
IMGSTATE,
MBQP,
STATISTICS
};
//!
//! \enum HEVCBufferType
//! \brief HEVC buffer type
//!
enum HEVCBufferType {
HEVC_UnknownBuff = 0,
HEVC_CURBE,
HEVC_HISTORY,
HEVC_CONSTANT,
HEVC_DISTORTION,
HEVC_PAK,
HEVC_ENC,
HEVC_IMGSTATEI,
HEVC_IMGSTATEO,
HEVC_STATISTICS,
HEVC_HMEINFO,
HEVC_MBQP,
HEVC_INITCURBE,
HEVC_INTRADIST,
HEVC_EXTD
};
//!
//! \enum HevcVdencBufferType
//! \brief HEVC VDEnc Buffer type
//!
enum HevcVdencBufferType {
HEVCVDENC_UnknownBuff = 0,
HEVCVDENC_INLINE_DMEM,
HEVCVDENC_HISTORY_BUFF,
HEVCVDENC_VDENC_STATISTICS_BUFF,
HEVCVDENC_PAK_STATISTICS_BUFF,
HEVCVDENC_INPUT_SLBB_BUFF,
HEVCVDENC_BRC_DATA_BUFF,
HEVCVDENC_CONSTANT_DATA_BUFF,
HEVCVDENC_OUTPUT_SLBB_BUFF,
HEVCVDENC_PAKMMIO_BUFF,
HEVCVDENC_SLICE_STATE_BUFF,
HEVCVDENC_INPUT_STREAMIN_BUFF,
HEVCVDENC_INPUT_DELTAQP_BUFF,
HEVCVDENC_OUTPUT_STREAMIN_BUFF,
HEVCVDENC_AUX_BUFF
};
enum LAErrorCode
{
LA_SUCCEED = 0,
LA_NO_INLINE_DMEM,
LA_NO_HISTORY,
LA_NO_FRAME_STATISTICS,
LA_NO_OUTPUT,
LA_UNKNOWN_PROCESSTYPE,
LA_UNKNOWN_BUFFERTYPE,
LA_UNKNOWN_ERROR
};
enum LAProcessType
{
LookaheadUnknownProc = 0,
LookaheadInit,
LookaheadReset,
LookaheadUpdate
};
enum LABufferType
{
LA_UnknownBuff = 0,
LA_INLINE_DMEM,
LA_HISTORY_BUFF,
LA_FRAME_STATISTICS_BUFF,
LA_OUTPUT_BUFF,
LA_AUX_BUFF = 15
};
extern "C" void * MC_CreateInstance(ProcessType processor);
extern "C" void MC_ReleaseInstance(void *obj);
extern "C" int MC_Process(void *obj);
extern "C" int MC_SetBuff(unsigned char *buf, BufferType type, void *obj);
#endif