/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
 * Copyright (c) 2025 Rockchip Electronics Co., Ltd.
 */

#ifndef __KMPP_VDEC_H__
#define __KMPP_VDEC_H__

#include "rk_vdec_kcfg.h"

typedef void* KmppVdec;

#define KMPP_VDEC_IOCTL_TABLE(prefix, IOC_CTX, IOC_IN_, IOC_OUT, IOC_IO_) \
    IOC_IN_(prefix, init,           MppVdecKcfg)                \
    IOC_CTX(prefix, deinit)                                     \
    IOC_CTX(prefix, reset)                                      \
    IOC_CTX(prefix, start)                                      \
    IOC_CTX(prefix, stop)                                       \
    IOC_IN_(prefix, get_cfg,        MppVdecKcfg)                \
    IOC_IN_(prefix, set_cfg,        MppVdecKcfg)                \
    IOC_IN_(prefix, get_rt_cfg,     MppVdecKcfg)                \
    IOC_IN_(prefix, set_rt_cfg,     MppVdecKcfg)                \
    IOC_IO_(prefix, decode,         KmppPacket,     KmppFrame)  \
    IOC_IN_(prefix, put_pkt,        KmppPacket)                 \
    IOC_OUT(prefix, get_frm,        KmppFrame)                  \
    IOC_IN_(prefix, put_frm,        KmppFrame)

#define KMPP_OBJ_NAME               kmpp_vdec
#define KMPP_OBJ_INTF_TYPE          KmppVdec
#define KMPP_OBJ_FUNC_IOCTL         KMPP_VDEC_IOCTL_TABLE
#include "kmpp_obj_func.h"

#endif /*__KMPP_VDEC_H__*/
