xref: /rockchip-linux_mpp/kmpp/base/inc/kmpp_packet_impl.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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__ */