Files
mpp/mpp/codec/inc/encoder_codec_api.h
ChenHengming 560213eef9 [h264]: encoder and decoder share common definition
[h264e]: separate init and config into two functions and add mpp encoder config check function

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@1145 6e48237b-75ef-9749-8fc9-41990f28c85a
2016-08-03 06:20:01 +00:00

81 lines
2.3 KiB
C

/*
* Copyright 2010 Rockchip Electronics S.LSI 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 __CONTROL_API_H__
#define __CONTROL_API_H__
#include "rk_mpi.h"
#include "mpp_buf_slot.h"
#include "hal_task.h"
// TODO
#include "../enc/h264/include/h264encapi.h"
// config cmd
typedef enum EncCfgCmd_t {
CHK_ENC_CFG,
SET_ENC_CFG,
SET_ENC_RC_CFG,
GET_OUTPUT_STREAM_SIZE,
} EncCfgCmd;
/*
* the reset wait for extension
*/
typedef struct EncControllerInitCfg_t {
// input
MppCodingType coding;
// output
RK_S32 task_count;
IOInterruptCB notify_cb;
} ControllerCfg;
/*
* ControlApi is the data structure provided from different encoders
*
* They will be static register to mpp_enc for scaning
* name - encoder name
* coding - encoder coding type
* ctx_size - encoder context size, mpp_dec will use this to malloc memory
* flag - reserve
*
* init - encoder initialization function
* deinit - encoder de-initialization function
* encoder - encoder main working function, mpp_dec will input packet and get output syntax
* reset - encoder reset function
* flush - encoder output all frames
* control - encoder configure function
*/
typedef struct ControlApi_t {
char *name;
MppCodingType coding;
RK_U32 ctx_size;
RK_U32 flag;
MPP_RET (*init)(void *ctx, ControllerCfg *ctrlCfg);
MPP_RET (*deinit)(void *ctx);
MPP_RET (*encode)(void *ctx, /*HalEncTask **/void *task); // TODO
MPP_RET (*reset)(void *ctx);
MPP_RET (*flush)(void *ctx);
MPP_RET (*config)(void *ctx, RK_S32 cmd, void *param);
MPP_RET (*callback)(void *ctx, void *feedback);
} ControlApi;
#endif /*__CONTROL_API_H__*/