singe/thirdparty/rockchip-mpp/inc/rk_venc_kcfg.h
2026-09-10 20:17:28 -05:00

73 lines
2.8 KiB
C

/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
*/
#ifndef RK_VENC_KCFG_H
#define RK_VENC_KCFG_H
#include "rk_type.h"
#include "mpp_err.h"
typedef void* MppVencKcfg;
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
MPP_VENC_KCFG_TYPE_INIT,
MPP_VENC_KCFG_TYPE_DEINIT,
MPP_VENC_KCFG_TYPE_RESET,
MPP_VENC_KCFG_TYPE_START,
MPP_VENC_KCFG_TYPE_STOP,
MPP_VENC_KCFG_TYPE_ST_CFG,
MPP_VENC_KCFG_TYPE_REF_CFG,
MPP_VENC_KCFG_TYPE_CTRL_CFG,
MPP_VENC_KCFG_TYPE_BUTT,
} MppVencKcfgType;
MPP_RET mpp_venc_kcfg_init(MppVencKcfg *cfg, MppVencKcfgType type);
MPP_RET mpp_venc_kcfg_init_by_name(MppVencKcfg *cfg, const char *name);
MPP_RET mpp_venc_kcfg_deinit(MppVencKcfg cfg);
MPP_RET mpp_venc_kcfg_set_s8(MppVencKcfg cfg, const char *name, RK_S8 val);
MPP_RET mpp_venc_kcfg_set_u8(MppVencKcfg cfg, const char *name, RK_U8 val);
MPP_RET mpp_venc_kcfg_set_s16(MppVencKcfg cfg, const char *name, RK_S16 val);
MPP_RET mpp_venc_kcfg_set_u16(MppVencKcfg cfg, const char *name, RK_U16 val);
MPP_RET mpp_venc_kcfg_set_s32(MppVencKcfg cfg, const char *name, RK_S32 val);
MPP_RET mpp_venc_kcfg_set_u32(MppVencKcfg cfg, const char *name, RK_U32 val);
MPP_RET mpp_venc_kcfg_set_s64(MppVencKcfg cfg, const char *name, RK_S64 val);
MPP_RET mpp_venc_kcfg_set_u64(MppVencKcfg cfg, const char *name, RK_U64 val);
MPP_RET mpp_venc_kcfg_set_ptr(MppVencKcfg cfg, const char *name, void *val);
MPP_RET mpp_venc_kcfg_set_st(MppVencKcfg cfg, const char *name, void *val);
MPP_RET mpp_venc_kcfg_get_s8(MppVencKcfg cfg, const char *name, RK_S8 *val);
MPP_RET mpp_venc_kcfg_get_u8(MppVencKcfg cfg, const char *name, RK_U8 *val);
MPP_RET mpp_venc_kcfg_get_s16(MppVencKcfg cfg, const char *name, RK_S16 *val);
MPP_RET mpp_venc_kcfg_get_u16(MppVencKcfg cfg, const char *name, RK_U16 *val);
MPP_RET mpp_venc_kcfg_get_s32(MppVencKcfg cfg, const char *name, RK_S32 *val);
MPP_RET mpp_venc_kcfg_get_u32(MppVencKcfg cfg, const char *name, RK_U32 *val);
MPP_RET mpp_venc_kcfg_get_s64(MppVencKcfg cfg, const char *name, RK_S64 *val);
MPP_RET mpp_venc_kcfg_get_u64(MppVencKcfg cfg, const char *name, RK_U64 *val);
MPP_RET mpp_venc_kcfg_get_ptr(MppVencKcfg cfg, const char *name, void **val);
MPP_RET mpp_venc_kcfg_get_st(MppVencKcfg cfg, const char *name, void *val);
void mpp_venc_kcfg_show(MppVencKcfg cfg);
/* control command flags (matching kernel kmpp_venc_objs.h) */
#define KMPP_CTRL_FLAG_NONE 0
#define KMPP_CTRL_FLAG_FLEX 2 /* SET struct inlined in ctrl_cfg vla */
/* ctrl_cfg flex area helpers — only meaningful for CTRL_CFG type */
void *mpp_venc_ctrl_flex_base(MppVencKcfg ctrl);
MPP_RET mpp_venc_ctrl_set_flex(MppVencKcfg ctrl, const void *data, RK_U32 size);
/* ref_cfg kobj ioctl: dispatch "check" to kernel */
rk_s32 kmpp_venc_ref_cfg_check(MppVencKcfg ref);
#ifdef __cplusplus
}
#endif
#endif /* RK_VENC_KCFG_H */