feat[kmpp_packet]: Add kmpp_packet interface

Change-Id: If913e5deb0077b8fe59f2a6a5eebfcd76fcabf7b
Signed-off-by: xiaoxu.chen <xiaoxu.chen@rock-chips.com>
This commit is contained in:
xiaoxu.chen 2025-04-10 19:50:16 +08:00
parent fddfc9db2e
commit 08bbde04bd
4 changed files with 109 additions and 0 deletions

View file

@ -7,6 +7,7 @@ add_library(kmpp_base OBJECT
kmpp_obj.c
kmpp_frame.c
kmpp_venc_cfg.c
kmpp_packet.c
)
set_target_properties(kmpp_base PROPERTIES FOLDER "kmpp/base")

View file

@ -0,0 +1,36 @@
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
* Copyright (c) 2025 Rockchip Electronics Co., Ltd.
*/
#ifndef __KMPP_PACKET_H__
#define __KMPP_PACKET_H__
#include "rk_type.h"
#define KMPP_PACKET_ENTRY_TABLE(prefix, ENTRY, STRCT, EHOOK, SHOOK, ALIAS) \
ENTRY(prefix, s32, rk_s32, size, FLAG_NONE, size) \
ENTRY(prefix, s32, rk_s32, length, FLAG_NONE, length) \
ENTRY(prefix, s64, rk_s64, pts, FLAG_NONE, pts) \
ENTRY(prefix, s64, rk_s64, dts, FLAG_NONE, dts) \
ENTRY(prefix, u32, rk_u32, status, FLAG_NONE, status) \
ENTRY(prefix, u32, rk_u32, temporal_id, FLAG_NONE, temporal_id) \
STRCT(prefix, shm, KmppShmPtr, data, FLAG_NONE, data) \
STRCT(prefix, shm, KmppShmPtr, buffer, FLAG_NONE, buffer) \
STRCT(prefix, shm, KmppShmPtr, pos, FLAG_NONE, pos) \
ENTRY(prefix, u32, rk_u32, flag, FLAG_NONE, flag)
#ifdef __cplusplus
extern "C" {
#endif
#define KMPP_OBJ_NAME kmpp_packet
#define KMPP_OBJ_INTF_TYPE KmppPacket
#define KMPP_OBJ_ENTRY_TABLE KMPP_PACKET_ENTRY_TABLE
#include "kmpp_obj_func.h"
#ifdef __cplusplus
}
#endif
#endif /*__KMPP_PACKET_H__*/

View file

@ -0,0 +1,59 @@
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
* Copyright (c) 2025 Rockchip Electronics Co., Ltd.
*/
#ifndef __KMPP_PACKET_IMPL_H__
#define __KMPP_PACKET_IMPL_H__
#include "kmpp_packet.h"
#define KMPP_PACKET_FLAG_EOS (0x00000001)
#define KMPP_PACKET_FLAG_EXTRA_DATA (0x00000002)
#define KMPP_PACKET_FLAG_INTERNAL (0x00000004)
#define KMPP_PACKET_FLAG_EXTERNAL (0x00000008)
#define KMPP_PACKET_FLAG_INTRA (0x00000010)
#define KMPP_PACKET_FLAG_PARTITION (0x00000020)
#define KMPP_PACKET_FLAG_EOI (0x00000040)
typedef struct RingBufPool_t {
rk_u32 r_pos;
rk_u32 w_pos;
rk_u32 len;
rk_u32 use_len;
void *buf_base;
MppBuffer buf;
rk_u32 init_done;
rk_u32 min_buf_size;
rk_u32 l_r_pos;
rk_u32 l_w_pos;
rk_u32 max_use_len;
} RingBufPool;
typedef struct RingBuf_t {
MppBuffer buf;
void *buf_start;
RingBufPool *ring_pool;
rk_u32 start_offset;
rk_u32 r_pos;
rk_u32 use_len;
rk_u32 size;
rk_u32 cir_flag;
} RingBuf;
typedef struct KmppPacketImpl_t {
const char *name;
rk_s32 size;
rk_s32 length;
rk_s64 pts;
rk_s64 dts;
rk_u32 status;
rk_u32 flag;
rk_u32 temporal_id;
KmppShmPtr data;
KmppShmPtr pos;
KmppShmPtr buffer;
RingBuf buf;
} KmppPacketImpl;
#endif /* __KMPP_PACKET_IMPL_H__ */

13
kmpp/base/kmpp_packet.c Normal file
View file

@ -0,0 +1,13 @@
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
* Copyright (c) 2025 Rockchip Electronics Co., Ltd.
*/
#include "kmpp_packet_impl.h"
#define KMPP_OBJ_NAME kmpp_packet
#define KMPP_OBJ_INTF_TYPE KmppPacket
#define KMPP_OBJ_IMPL_TYPE KmppPacketImpl
#define KMPP_OBJ_SGLN_ID MPP_SGLN_PACKET
#define KMPP_OBJ_ENTRY_TABLE KMPP_PACKET_ENTRY_TABLE
#include "kmpp_obj_helper.h"