Files
2026-08-24 10:03:24 +08:00

219 lines
5.0 KiB
C

/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*
* This source code is subject to the terms and conditions defined in below
* which is part of this source code package.
*
* Description:
*/
// Copyright (C) 2019 Amlogic, Inc. All rights reserved.
//
// All information contained herein is Amlogic confidential.
//
// This software is provided to you pursuant to Software License
// Agreement (SLA) with Amlogic Inc ("Amlogic"). This software may be
// used only in accordance with the terms of this agreement.
//
// Redistribution and use in source and binary forms, with or without
// modification is strictly prohibited without prior written permission
// from Amlogic.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef __VP5_FUNCTION_H__
#define __VP5_FUNCTION_H__
#include "vpuapi.h"
#include "product.h"
#define VP5_TEMPBUF_OFFSET (1024*1024)
#define VP5_TEMPBUF_SIZE (1024*1024)
#define VP5_TASK_BUF_OFFSET (2*1024*1024) // common mem = | codebuf(1M) | tempBuf(1M) | taskbuf0x0 ~ 0xF |
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define VP5_SUBSAMPLED_ONE_SIZE(_w, _h) ((((_w/4)+15)&~15)*(((_h/4)+7)&~7))
#define VP5_SUBSAMPLED_ONE_SIZE_AVC(_w, _h) ((((_w/4)+31)&~31)*(((_h/4)+3)&~3))
#define BSOPTION_ENABLE_EXPLICIT_END (1<<0)
#define WTL_RIGHT_JUSTIFIED 0
#define WTL_LEFT_JUSTIFIED 1
#define WTL_PIXEL_8BIT 0
#define WTL_PIXEL_16BIT 1
#define WTL_PIXEL_32BIT 2
extern Uint32 Vp5VpuIsInit(
Uint32 coreIdx
);
extern Int32 Vp5VpuIsBusy(
Uint32 coreIdx
);
extern Int32 VpVpuGetProductId(
Uint32 coreIdx
);
extern RetCode Vp5VpuEncGiveCommand(
CodecInst *pCodecInst,
CodecCommand cmd,
void *param
);
extern void Vp5BitIssueCommand(
CodecInst* instance,
Uint32 cmd
);
extern RetCode Vp5VpuGetVersion(
Uint32 coreIdx,
Uint32* versionInfo,
Uint32* revision
);
extern RetCode Vp5VpuInit(
Uint32 coreIdx,
void* firmware,
Uint32 size
);
extern RetCode Vp5VpuSleepWake(
Uint32 coreIdx,
int iSleepWake,
const Uint16* code,
Uint32 size
);
extern RetCode Vp5VpuReset(
Uint32 coreIdx,
SWResetMode resetMode
);
extern RetCode Vp5VpuReInit(
Uint32 coreIdx,
void* firmware,
Uint32 size
);
extern Int32 Vp5VpuWaitInterrupt(
CodecInst* instance,
Int32 timeout,
BOOL pending
);
extern RetCode Vp5VpuClearInterrupt(
Uint32 coreIdx,
Uint32 flags
);
extern RetCode Vp5VpuGetBwReport(
CodecInst* instance,
VPUBWData* bwMon
);
extern RetCode Vp5VpuGetDebugInfo(
CodecInst* instance,
VPUDebugInfo* info
);
/***< VP5 Encoder >******/
RetCode Vp5VpuEncUpdateBS(
CodecInst* instance,
BOOL updateNewBsbuf
);
RetCode Vp5VpuEncGetRdWrPtr(CodecInst* instance,
PhysicalAddress *rdPtr,
PhysicalAddress *wrPtr
);
extern RetCode Vp5VpuBuildUpEncParam(
CodecInst* instance,
EncOpenParam* param
);
extern RetCode Vp5VpuEncInitSeq(
CodecInst*instance
);
extern RetCode Vp5VpuEncGetSeqInfo(
CodecInst* instance,
EncInitialInfo* info
);
extern RetCode Vp5VpuEncRegisterFramebuffer(
CodecInst* inst,
FrameBuffer* fbArr,
TiledMapType mapType,
Uint32 count
);
extern RetCode Vp5EncWriteProtect(
CodecInst* instance
);
extern RetCode Vp5VpuEncode(
CodecInst* instance,
EncParam* option
);
extern RetCode Vp5VpuEncGetResult(
CodecInst* instance,
EncOutputInfo* result
);
extern RetCode Vp5VpuEncGetHeader(
EncHandle instance,
EncHeaderParam * encHeaderParam
);
extern RetCode Vp5VpuEncFiniSeq(
CodecInst* instance
);
extern RetCode Vp5VpuEncParaChange(
EncHandle instance,
EncChangeParam* param
);
extern RetCode CheckEncCommonParamValid(
EncOpenParam* pop
);
extern RetCode CheckEncRcParamValid(
EncOpenParam* pop
);
extern RetCode CheckEncCustomGopParamValid(
EncOpenParam* pop
);
extern RetCode Vp5VpuGetSrcBufFlag(
CodecInst* instance,
Uint32* flag
);
extern RetCode Vp5VpuCheckInterrupt(Uint32 coreIdx, Uint32 index,
Uint32 *int_result);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __VP5_FUNCTION_H__ */