1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2010 Rockchip Electronics S.LSI Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __ENC_IMPL_API_H__ 18*437bfbebSnyanmisaka #define __ENC_IMPL_API_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_mpi_cmd.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka #include "hal_enc_task.h" 23*437bfbebSnyanmisaka #include "mpp_enc_cfg.h" 24*437bfbebSnyanmisaka #include "mpp_enc_refs.h" 25*437bfbebSnyanmisaka #include "mpp_dev_defs.h" 26*437bfbebSnyanmisaka 27*437bfbebSnyanmisaka /* 28*437bfbebSnyanmisaka * the reset wait for extension 29*437bfbebSnyanmisaka */ 30*437bfbebSnyanmisaka typedef struct EncImplCfg_t { 31*437bfbebSnyanmisaka // input 32*437bfbebSnyanmisaka MppCodingType coding; 33*437bfbebSnyanmisaka MppClientType type; 34*437bfbebSnyanmisaka MppEncCfgSet *cfg; 35*437bfbebSnyanmisaka MppEncRefs refs; 36*437bfbebSnyanmisaka } EncImplCfg; 37*437bfbebSnyanmisaka 38*437bfbebSnyanmisaka /* 39*437bfbebSnyanmisaka * EncImplApi is the data structure provided from different encoders 40*437bfbebSnyanmisaka * 41*437bfbebSnyanmisaka * They will be static register to mpp_enc for scaning 42*437bfbebSnyanmisaka * name - encoder name 43*437bfbebSnyanmisaka * coding - encoder coding type 44*437bfbebSnyanmisaka * ctx_size - encoder context size, mpp_dec will use this to malloc memory 45*437bfbebSnyanmisaka * flag - reserve 46*437bfbebSnyanmisaka * 47*437bfbebSnyanmisaka * init - encoder initialization function 48*437bfbebSnyanmisaka * deinit - encoder de-initialization function 49*437bfbebSnyanmisaka * proc_cfg - encoder processs control function 50*437bfbebSnyanmisaka * gen_hdr - encoder generate hearder function 51*437bfbebSnyanmisaka * proc_dpb - encoder dpb process function (approach one frame) 52*437bfbebSnyanmisaka * proc_hal - encoder prepare hal info function 53*437bfbebSnyanmisaka * add_prefix - encoder generate user data / sei to packet as prefix 54*437bfbebSnyanmisaka */ 55*437bfbebSnyanmisaka typedef struct EncImplApi_t { 56*437bfbebSnyanmisaka char *name; 57*437bfbebSnyanmisaka MppCodingType coding; 58*437bfbebSnyanmisaka RK_U32 ctx_size; 59*437bfbebSnyanmisaka RK_U32 flag; 60*437bfbebSnyanmisaka 61*437bfbebSnyanmisaka MPP_RET (*init)(void *ctx, EncImplCfg *ctrlCfg); 62*437bfbebSnyanmisaka MPP_RET (*deinit)(void *ctx); 63*437bfbebSnyanmisaka 64*437bfbebSnyanmisaka MPP_RET (*proc_cfg)(void *ctx, MpiCmd cmd, void *param); 65*437bfbebSnyanmisaka MPP_RET (*gen_hdr)(void *ctx, MppPacket pkt); 66*437bfbebSnyanmisaka 67*437bfbebSnyanmisaka MPP_RET (*start)(void *ctx, HalEncTask *task); 68*437bfbebSnyanmisaka MPP_RET (*proc_dpb)(void *ctx, HalEncTask *task); 69*437bfbebSnyanmisaka MPP_RET (*proc_hal)(void *ctx, HalEncTask *task); 70*437bfbebSnyanmisaka 71*437bfbebSnyanmisaka MPP_RET (*add_prefix)(MppPacket pkt, RK_S32 *length, RK_U8 uuid[16], 72*437bfbebSnyanmisaka const void *data, RK_S32 size); 73*437bfbebSnyanmisaka 74*437bfbebSnyanmisaka MPP_RET (*sw_enc)(void *ctx, HalEncTask *task); 75*437bfbebSnyanmisaka } EncImplApi; 76*437bfbebSnyanmisaka 77*437bfbebSnyanmisaka #endif /*__ENC_IMPL_API_H__*/ 78