mirror of
				https://github.com/nyanmisaka/mpp.git
				synced 2025-10-31 20:42:53 +08:00 
			
		
		
		
	 3adde926e2
			
		
	
	3adde926e2
	
	
	
		
			
			NOTE: I frame header decoding should check stream version. Signed-off-by: Ding Wei <leo.ding@rock-chips.com> Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com> Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com> Change-Id: I1c8276f4499d73e3b60d582890037dec376e136f
		
			
				
	
	
		
			124 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright 2015 Rockchip Electronics Co. LTD
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  *      http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  */
 | |
| 
 | |
| #ifndef __VPU_H__
 | |
| #define __VPU_H__
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #include "rk_type.h"
 | |
| 
 | |
| #define VPU_SUCCESS                     (0)
 | |
| #define VPU_FAILURE                     (-1)
 | |
| 
 | |
| #define VPU_HW_WAIT_OK                  VPU_SUCCESS
 | |
| #define VPU_HW_WAIT_ERROR               VPU_FAILURE
 | |
| #define VPU_HW_WAIT_TIMEOUT             1
 | |
| 
 | |
| // vpu decoder 60 registers, size 240B
 | |
| #define VPU_REG_NUM_DEC                 (60)
 | |
| // vpu post processor 41 registers, size 164B
 | |
| #define VPU_REG_NUM_PP                  (41)
 | |
| // vpu decoder + post processor 101 registers, size 404B
 | |
| #define VPU_REG_NUM_DEC_PP              (VPU_REG_NUM_DEC+VPU_REG_NUM_PP)
 | |
| // vpu encoder 96 registers, size 384B
 | |
| #define VPU_REG_NUM_ENC                 (96)
 | |
| 
 | |
| typedef enum {
 | |
|     VPU_ENC                 = 0x0,
 | |
|     VPU_DEC                 = 0x1,
 | |
|     VPU_PP                  = 0x2,
 | |
|     VPU_DEC_PP              = 0x3,
 | |
|     VPU_DEC_HEVC            = 0x4,
 | |
|     VPU_DEC_RKV             = 0x5,
 | |
|     VPU_ENC_RKV             = 0x6,
 | |
|     VPU_DEC_AVSPLUS         = 0x7,
 | |
|     VPU_ENC_VEPU22          = 0x8,
 | |
|     VPU_TYPE_BUTT           ,
 | |
| } VPU_CLIENT_TYPE;
 | |
| 
 | |
| /* Hardware decoder configuration description */
 | |
| 
 | |
| typedef struct VPUHwDecConfig {
 | |
|     RK_U32 maxDecPicWidth;         /* Maximum video decoding width supported  */
 | |
|     RK_U32 maxPpOutPicWidth;       /* Maximum output width of Post-Processor */
 | |
|     RK_U32 h264Support;            /* HW supports h.264 */
 | |
|     RK_U32 jpegSupport;            /* HW supports JPEG */
 | |
|     RK_U32 mpeg4Support;           /* HW supports MPEG-4 */
 | |
|     RK_U32 customMpeg4Support;     /* HW supports custom MPEG-4 features */
 | |
|     RK_U32 vc1Support;             /* HW supports VC-1 Simple */
 | |
|     RK_U32 mpeg2Support;           /* HW supports MPEG-2 */
 | |
|     RK_U32 ppSupport;              /* HW supports post-processor */
 | |
|     RK_U32 ppConfig;               /* HW post-processor functions bitmask */
 | |
|     RK_U32 sorensonSparkSupport;   /* HW supports Sorenson Spark */
 | |
|     RK_U32 refBufSupport;          /* HW supports reference picture buffering */
 | |
|     RK_U32 vp6Support;             /* HW supports VP6 */
 | |
|     RK_U32 vp7Support;             /* HW supports VP7 */
 | |
|     RK_U32 vp8Support;             /* HW supports VP8 */
 | |
|     RK_U32 avsSupport;             /* HW supports AVS */
 | |
|     RK_U32 jpegESupport;           /* HW supports JPEG extensions */
 | |
|     RK_U32 rvSupport;              /* HW supports REAL */
 | |
|     RK_U32 mvcSupport;             /* HW supports H264 MVC extension */
 | |
| } VPUHwDecConfig_t;
 | |
| 
 | |
| /* Hardware encoder configuration description */
 | |
| 
 | |
| typedef struct VPUHwEndConfig {
 | |
|     RK_U32 maxEncodedWidth;        /* Maximum supported width for video encoding (not JPEG) */
 | |
|     RK_U32 h264Enabled;            /* HW supports H.264 */
 | |
|     RK_U32 jpegEnabled;            /* HW supports JPEG */
 | |
|     RK_U32 mpeg4Enabled;           /* HW supports MPEG-4 */
 | |
|     RK_U32 vsEnabled;              /* HW supports video stabilization */
 | |
|     RK_U32 rgbEnabled;             /* HW supports RGB input */
 | |
|     RK_U32 reg_size;                /* HW bus type in use */
 | |
|     RK_U32 reserv[2];
 | |
| } VPUHwEncConfig_t;
 | |
| 
 | |
| typedef enum {
 | |
|     // common command
 | |
|     VPU_CMD_REGISTER            ,
 | |
|     VPU_CMD_REGISTER_ACK_OK     ,
 | |
|     VPU_CMD_REGISTER_ACK_FAIL   ,
 | |
|     VPU_CMD_UNREGISTER          ,
 | |
| 
 | |
|     VPU_SEND_CONFIG             ,
 | |
|     VPU_SEND_CONFIG_ACK_OK      ,
 | |
|     VPU_SEND_CONFIG_ACK_FAIL    ,
 | |
| 
 | |
|     VPU_GET_HW_INFO             ,
 | |
|     VPU_GET_HW_INFO_ACK_OK      ,
 | |
|     VPU_GET_HW_INFO_ACK_FAIL    ,
 | |
| 
 | |
|     VPU_CMD_BUTT                ,
 | |
| } VPU_CMD_TYPE;
 | |
| 
 | |
| int VPUClientInit(VPU_CLIENT_TYPE type);
 | |
| RK_S32 VPUClientRelease(int socket);
 | |
| RK_S32 VPUClientSendReg(int socket, RK_U32 *regs, RK_U32 nregs);
 | |
| RK_S32 VPUClientSendReg2(RK_S32 socket, RK_S32 offset, RK_S32 size, void *param);
 | |
| RK_S32 VPUClientWaitResult(int socket, RK_U32 *regs, RK_U32 nregs, VPU_CMD_TYPE *cmd, RK_S32 *len);
 | |
| RK_S32 VPUClientGetHwCfg(int socket, RK_U32 *cfg, RK_U32 cfg_size);
 | |
| RK_S32 VPUClientGetIOMMUStatus();
 | |
| RK_U32 VPUCheckSupportWidth();
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* __VPU_H__ */
 |