1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2*437bfbebSnyanmisaka /* 3*437bfbebSnyanmisaka * Copyright (c) 2025 Rockchip Electronics Co., Ltd. 4*437bfbebSnyanmisaka */ 5*437bfbebSnyanmisaka 6*437bfbebSnyanmisaka #ifndef __KMPP_PACKET_IMPL_H__ 7*437bfbebSnyanmisaka #define __KMPP_PACKET_IMPL_H__ 8*437bfbebSnyanmisaka 9*437bfbebSnyanmisaka #include "kmpp_packet.h" 10*437bfbebSnyanmisaka 11*437bfbebSnyanmisaka #define KMPP_PACKET_FLAG_EOS (0x00000001) 12*437bfbebSnyanmisaka #define KMPP_PACKET_FLAG_EXTRA_DATA (0x00000002) 13*437bfbebSnyanmisaka #define KMPP_PACKET_FLAG_INTERNAL (0x00000004) 14*437bfbebSnyanmisaka #define KMPP_PACKET_FLAG_EXTERNAL (0x00000008) 15*437bfbebSnyanmisaka #define KMPP_PACKET_FLAG_INTRA (0x00000010) 16*437bfbebSnyanmisaka #define KMPP_PACKET_FLAG_PARTITION (0x00000020) 17*437bfbebSnyanmisaka #define KMPP_PACKET_FLAG_EOI (0x00000040) 18*437bfbebSnyanmisaka 19*437bfbebSnyanmisaka typedef struct RingBufPool_t { 20*437bfbebSnyanmisaka rk_u32 r_pos; 21*437bfbebSnyanmisaka rk_u32 w_pos; 22*437bfbebSnyanmisaka rk_u32 len; 23*437bfbebSnyanmisaka rk_u32 use_len; 24*437bfbebSnyanmisaka void *buf_base; 25*437bfbebSnyanmisaka MppBuffer buf; 26*437bfbebSnyanmisaka rk_u32 init_done; 27*437bfbebSnyanmisaka rk_u32 min_buf_size; 28*437bfbebSnyanmisaka rk_u32 l_r_pos; 29*437bfbebSnyanmisaka rk_u32 l_w_pos; 30*437bfbebSnyanmisaka rk_u32 max_use_len; 31*437bfbebSnyanmisaka } RingBufPool; 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka typedef struct RingBuf_t { 34*437bfbebSnyanmisaka MppBuffer buf; 35*437bfbebSnyanmisaka void *buf_start; 36*437bfbebSnyanmisaka RingBufPool *ring_pool; 37*437bfbebSnyanmisaka rk_u32 start_offset; 38*437bfbebSnyanmisaka rk_u32 r_pos; 39*437bfbebSnyanmisaka rk_u32 use_len; 40*437bfbebSnyanmisaka rk_u32 size; 41*437bfbebSnyanmisaka rk_u32 cir_flag; 42*437bfbebSnyanmisaka } RingBuf; 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisaka typedef struct KmppPacketImpl_t { 45*437bfbebSnyanmisaka const char *name; 46*437bfbebSnyanmisaka rk_s32 size; 47*437bfbebSnyanmisaka rk_s32 length; 48*437bfbebSnyanmisaka rk_s64 pts; 49*437bfbebSnyanmisaka rk_s64 dts; 50*437bfbebSnyanmisaka rk_u32 status; 51*437bfbebSnyanmisaka rk_u32 flag; 52*437bfbebSnyanmisaka rk_u32 temporal_id; 53*437bfbebSnyanmisaka KmppShmPtr data; 54*437bfbebSnyanmisaka KmppShmPtr pos; 55*437bfbebSnyanmisaka KmppShmPtr buffer; 56*437bfbebSnyanmisaka RingBuf buf; 57*437bfbebSnyanmisaka } KmppPacketImpl; 58*437bfbebSnyanmisaka 59*437bfbebSnyanmisaka typedef struct KmppPacketPriv_t { 60*437bfbebSnyanmisaka KmppMeta meta; 61*437bfbebSnyanmisaka } KmppPacketPriv; 62*437bfbebSnyanmisaka 63*437bfbebSnyanmisaka #endif /* __KMPP_PACKET_IMPL_H__ */