sdk-hwV1.3/external/eyesee-mpp/middleware/sun8iw21/media/include/component/VideoDec_Component.h

187 lines
7.0 KiB
C
Executable File

/******************************************************************************
Copyright (C), 2001-2016, Allwinner Tech. Co., Ltd.
******************************************************************************
File Name : VideoDec_Component.h
Version : Initial Draft
Author : Allwinner BU3-PD2 Team
Created : 2016/08/19
Last Modified :
Description : mpp component implement
Function List :
History :
******************************************************************************/
#ifndef __IPCLINUX_VIDEODEC_COMPONENT_H__
#define __IPCLINUX_VIDEODEC_COMPONENT_H__
//ref platform headers
#include "plat_type.h"
#include "plat_errno.h"
#include "plat_defines.h"
#include "plat_math.h"
//media api headers to app
#include "mm_common.h"
#include "mm_comm_video.h"
#include <mm_comm_vdec.h>
//media internal common headers.
#include "media_common.h"
#include "mm_component.h"
#include "ComponentCommon.h"
#include "tmessage.h"
#include "tsemaphore.h"
#include <VdecCompStream.h>
#include <vdecoder.h>
typedef enum VIDEODECODER_PORT_INDEX_DEFINITION{
VDEC_PORT_INDEX_DEMUX = 0x0,
VDEC_OUT_PORT_INDEX_VRENDER = 0x1,
VDEC_PORT_INDEX_CLOCK = 0x2,
}VIDEODECODER_PORT_INDEX_DEFINITION;
ERRORTYPE VideoDecGetMPPChannelInfo(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT MPP_CHN_S *pChn);
ERRORTYPE VideoDecGetPortDefinition(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_INOUT COMP_PARAM_PORTDEFINITIONTYPE *pPortDef);
ERRORTYPE VideoDecGetCompBufferSupplier(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_INOUT COMP_PARAM_BUFFERSUPPLIERTYPE *pPortBufSupplier);
ERRORTYPE VideoDecGetBufferState(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT COMP_BUFFERSTATE* pBufferState);
ERRORTYPE VideoDecGetFbmBufInfo(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT FbmBufInfo* pFbmBufInfo);
ERRORTYPE VideoDecGetChnAttr(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT VDEC_CHN_ATTR_S* pChnAttr);
ERRORTYPE VideoDecGetChnState(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT VDEC_CHN_STAT_S *pChnStat);
ERRORTYPE VideoDecGetParam(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT VDEC_CHN_PARAM_S* pChnParam);
ERRORTYPE VideoDecGetProtocolParam(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT VDEC_PRTCL_PARAM_S *pProtocolParam);
/**
* get frame, used in non-tunnel mode.
*
* @return SUCCESS.
* @param hComponent vdec component.
* @param pFrameInfo store frame info, caller malloc.
* @param nMilliSec 0:return immediately, <0:wait forever, >0:wait some time.
*/
ERRORTYPE VideoDecGetFrame(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT VIDEO_FRAME_INFO_S *pFrameInfo,
PARAM_OUT VIDEO_FRAME_INFO_S *pSubFrameInfo,
PARAM_IN int nMilliSec);
ERRORTYPE VideoDecGetRotate(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_OUT ROTATE_E *pRotate);
ERRORTYPE VideoDecSetPortDefinition(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN COMP_PARAM_PORTDEFINITIONTYPE *pPortDef);
ERRORTYPE VideoDecSetCompBufferSupplier(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN COMP_PARAM_BUFFERSUPPLIERTYPE *pPortBufSupplier);
ERRORTYPE VideoDecSetIonFd(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN int nIonFd);
ERRORTYPE VideoDecSeek(PARAM_IN COMP_HANDLETYPE hComponent);
ERRORTYPE VideoDecSetStreamEof(PARAM_IN COMP_HANDLETYPE hComponent);
ERRORTYPE VideoDecClearStreamEof(PARAM_IN COMP_HANDLETYPE hComponent);
ERRORTYPE VideoDecSetRotate(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN ROTATE_E eRotate);
ERRORTYPE VideoDecSetOutputPixelFormat(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN enum EPIXELFORMAT eVdecPixelFormat);
ERRORTYPE VideoDecSetDisplayFrameRequestMode(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN int nFrameRequest);
ERRORTYPE VideoDecSetMPPChannelInfo(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN MPP_CHN_S *pChn);
ERRORTYPE VideoDecSetChnAttr(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN VDEC_CHN_ATTR_S *pChnAttr);
ERRORTYPE VideoDecResetChannel(PARAM_IN COMP_HANDLETYPE hComponent);
ERRORTYPE VideoDecSetChnParam(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN VDEC_CHN_PARAM_S *pChnParam);
ERRORTYPE VideoDecSetProtocolParam(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN VDEC_PRTCL_PARAM_S *pPrtclParam);
/**
* release frame, used in non-tunnel mode.
*
* @return SUCCESS.
* @param hComponent vdec component.
* @param pFrameInfo frame info, caller malloc.
*/
ERRORTYPE VideoDecReleaseFrame(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN VIDEO_FRAME_INFO_S *pFrameInfo,
PARAM_IN VIDEO_FRAME_INFO_S *pSubFrameInfo);
ERRORTYPE VideoDecSetFrameBuffersToVdecLib(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN VDecCompFrameBuffersParam *pParam);
ERRORTYPE VideoDecReopenVideoEngine(PARAM_IN COMP_HANDLETYPE hComponent);
ERRORTYPE VideoDecSendCommand(COMP_HANDLETYPE hComponent, COMP_COMMANDTYPE Cmd, unsigned int nParam1, void* pCmdData);
ERRORTYPE VideoDecGetState(COMP_HANDLETYPE hComponent, COMP_STATETYPE* pState);
ERRORTYPE VideoDecSetCallbacks(COMP_HANDLETYPE hComponent, COMP_CALLBACKTYPE* pCallbacks, void* pAppData);
ERRORTYPE VideoDecGetConfig(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN COMP_INDEXTYPE nIndex,
PARAM_INOUT void* pComponentConfigStructure);
ERRORTYPE VideoDecSetConfig(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN COMP_INDEXTYPE nIndex,
PARAM_IN void* pComponentConfigStructure);
ERRORTYPE VideoDecComponentTunnelRequest(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN unsigned int nPort,
PARAM_IN COMP_HANDLETYPE hTunneledComp,
PARAM_IN unsigned int nTunneledPort,
PARAM_INOUT COMP_TUNNELSETUPTYPE* pTunnelSetup);
ERRORTYPE VideoDecRequstBuffer(COMP_HANDLETYPE hComponent, unsigned int nPortIndex, COMP_BUFFERHEADERTYPE* pBuffer);
/**
* update vbs data to VdecLib, used in tunnel mode.
*
* @return SUCCESS.
* @param hComponent vdec component.
* @param nPortIndex indicate vbs inputPort index.
* @param pBuffer contain vbs data struct.
*/
ERRORTYPE VideoDecReleaseBuffer(COMP_HANDLETYPE hComponent, unsigned int nPortIndex, COMP_BUFFERHEADERTYPE* pBuffer);
/**
* send stream to vdeclib, can used in tunnel/non-tunnel mode.
*
* @return SUCCESS
* @param hComponent vdecComp handle.
* @param pBuffer stream info.
*/
ERRORTYPE VideoDecEmptyThisBuffer(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN COMP_BUFFERHEADERTYPE* pBuffer);
/**
* return frame to vdeclib in tunnel mode.
*
* @return SUCCESS
* @param hComponent vdecComp handle.
* @param pBuffer frame buffer info.
*/
ERRORTYPE VideoDecFillThisBuffer(
PARAM_IN COMP_HANDLETYPE hComponent,
PARAM_IN COMP_BUFFERHEADERTYPE* pBuffer);
ERRORTYPE VideoDecComponentDeInit(COMP_HANDLETYPE hComponent);
ERRORTYPE VideoDecComponentInit(PARAM_IN COMP_HANDLETYPE hComponent);
#endif /* __IPCLINUX_VIDEODEC_COMPONENT_H__ */