xref: /rockchip-linux_mpp/mpp/base/mpp_frame.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2*437bfbebSnyanmisaka /*
3*437bfbebSnyanmisaka  * Copyright (c) 2015 Rockchip Electronics Co., Ltd.
4*437bfbebSnyanmisaka  */
5*437bfbebSnyanmisaka 
6*437bfbebSnyanmisaka #define MODULE_TAG "mpp_frame"
7*437bfbebSnyanmisaka 
8*437bfbebSnyanmisaka #include <string.h>
9*437bfbebSnyanmisaka 
10*437bfbebSnyanmisaka #include "mpp_debug.h"
11*437bfbebSnyanmisaka #include "mpp_mem_pool.h"
12*437bfbebSnyanmisaka #include "mpp_singleton.h"
13*437bfbebSnyanmisaka 
14*437bfbebSnyanmisaka #include "mpp_meta_impl.h"
15*437bfbebSnyanmisaka #include "mpp_frame_impl.h"
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka static const char *module_name = MODULE_TAG;
18*437bfbebSnyanmisaka static MppMemPool pool_frame = NULL;
19*437bfbebSnyanmisaka 
setup_mpp_frame_name(MppFrameImpl * frame)20*437bfbebSnyanmisaka static void setup_mpp_frame_name(MppFrameImpl *frame)
21*437bfbebSnyanmisaka {
22*437bfbebSnyanmisaka     frame->name = module_name;
23*437bfbebSnyanmisaka }
24*437bfbebSnyanmisaka 
setup_mpp_frame_defaults(MppFrameImpl * frame)25*437bfbebSnyanmisaka static void setup_mpp_frame_defaults(MppFrameImpl *frame)
26*437bfbebSnyanmisaka {
27*437bfbebSnyanmisaka     frame->color_range = MPP_FRAME_RANGE_UNSPECIFIED;
28*437bfbebSnyanmisaka     frame->color_primaries = MPP_FRAME_PRI_UNSPECIFIED;
29*437bfbebSnyanmisaka     frame->color_trc = MPP_FRAME_TRC_UNSPECIFIED;
30*437bfbebSnyanmisaka     frame->colorspace = MPP_FRAME_SPC_UNSPECIFIED;
31*437bfbebSnyanmisaka }
32*437bfbebSnyanmisaka 
33*437bfbebSnyanmisaka #define check_is_mpp_frame(frame) _check_is_mpp_frame(__FUNCTION__, frame)
34*437bfbebSnyanmisaka 
mpp_frame_srv_init()35*437bfbebSnyanmisaka static void mpp_frame_srv_init()
36*437bfbebSnyanmisaka {
37*437bfbebSnyanmisaka     if (pool_frame)
38*437bfbebSnyanmisaka         return;
39*437bfbebSnyanmisaka 
40*437bfbebSnyanmisaka     pool_frame = mpp_mem_pool_init_f("MppFrame", sizeof(MppFrameImpl));
41*437bfbebSnyanmisaka }
42*437bfbebSnyanmisaka 
mpp_frame_srv_deinit()43*437bfbebSnyanmisaka static void mpp_frame_srv_deinit()
44*437bfbebSnyanmisaka {
45*437bfbebSnyanmisaka     if (pool_frame) {
46*437bfbebSnyanmisaka         mpp_mem_pool_deinit_f(pool_frame);
47*437bfbebSnyanmisaka         pool_frame = NULL;
48*437bfbebSnyanmisaka     }
49*437bfbebSnyanmisaka }
50*437bfbebSnyanmisaka 
MPP_SINGLETON(MPP_SGLN_FRAME,mpp_frame,mpp_frame_srv_init,mpp_frame_srv_deinit)51*437bfbebSnyanmisaka MPP_SINGLETON(MPP_SGLN_FRAME, mpp_frame, mpp_frame_srv_init, mpp_frame_srv_deinit)
52*437bfbebSnyanmisaka 
53*437bfbebSnyanmisaka MPP_RET _check_is_mpp_frame(const char *func, void *frame)
54*437bfbebSnyanmisaka {
55*437bfbebSnyanmisaka     if (!__check_is_mpp_frame(frame))
56*437bfbebSnyanmisaka         return MPP_OK;
57*437bfbebSnyanmisaka 
58*437bfbebSnyanmisaka     mpp_err("pointer %p failed on %s check mpp_frame\n", frame, func);
59*437bfbebSnyanmisaka     mpp_abort();
60*437bfbebSnyanmisaka     return MPP_NOK;
61*437bfbebSnyanmisaka }
62*437bfbebSnyanmisaka 
__check_is_mpp_frame(void * frame)63*437bfbebSnyanmisaka MPP_RET __check_is_mpp_frame(void *frame)
64*437bfbebSnyanmisaka {
65*437bfbebSnyanmisaka     if (frame && ((MppFrameImpl*)frame)->name == module_name)
66*437bfbebSnyanmisaka         return MPP_OK;
67*437bfbebSnyanmisaka 
68*437bfbebSnyanmisaka     return MPP_NOK;
69*437bfbebSnyanmisaka }
70*437bfbebSnyanmisaka 
mpp_frame_init(MppFrame * frame)71*437bfbebSnyanmisaka MPP_RET mpp_frame_init(MppFrame *frame)
72*437bfbebSnyanmisaka {
73*437bfbebSnyanmisaka     MppFrameImpl *p;
74*437bfbebSnyanmisaka 
75*437bfbebSnyanmisaka     if (!frame) {
76*437bfbebSnyanmisaka         mpp_err_f("invalid NULL pointer input\n");
77*437bfbebSnyanmisaka         return MPP_ERR_NULL_PTR;
78*437bfbebSnyanmisaka     }
79*437bfbebSnyanmisaka 
80*437bfbebSnyanmisaka     if (!pool_frame)
81*437bfbebSnyanmisaka         mpp_frame_srv_init();
82*437bfbebSnyanmisaka 
83*437bfbebSnyanmisaka     p = (MppFrameImpl*)mpp_mem_pool_get_f(pool_frame);
84*437bfbebSnyanmisaka     if (!p) {
85*437bfbebSnyanmisaka         mpp_err_f("malloc failed\n");
86*437bfbebSnyanmisaka         return MPP_ERR_NULL_PTR;
87*437bfbebSnyanmisaka     }
88*437bfbebSnyanmisaka 
89*437bfbebSnyanmisaka     setup_mpp_frame_name(p);
90*437bfbebSnyanmisaka     setup_mpp_frame_defaults(p);
91*437bfbebSnyanmisaka     *frame = p;
92*437bfbebSnyanmisaka 
93*437bfbebSnyanmisaka     return MPP_OK;
94*437bfbebSnyanmisaka }
95*437bfbebSnyanmisaka 
mpp_frame_deinit(MppFrame * frame)96*437bfbebSnyanmisaka MPP_RET mpp_frame_deinit(MppFrame *frame)
97*437bfbebSnyanmisaka {
98*437bfbebSnyanmisaka     MppFrameImpl *p;
99*437bfbebSnyanmisaka 
100*437bfbebSnyanmisaka     if (!frame || check_is_mpp_frame(*frame)) {
101*437bfbebSnyanmisaka         mpp_err_f("invalid NULL pointer input\n");
102*437bfbebSnyanmisaka         return MPP_ERR_NULL_PTR;
103*437bfbebSnyanmisaka     }
104*437bfbebSnyanmisaka 
105*437bfbebSnyanmisaka     p = (MppFrameImpl *)*frame;
106*437bfbebSnyanmisaka     if (p->buffer)
107*437bfbebSnyanmisaka         mpp_buffer_put(p->buffer);
108*437bfbebSnyanmisaka 
109*437bfbebSnyanmisaka     if (p->meta)
110*437bfbebSnyanmisaka         mpp_meta_put(p->meta);
111*437bfbebSnyanmisaka 
112*437bfbebSnyanmisaka     if (p->stopwatch)
113*437bfbebSnyanmisaka         mpp_stopwatch_put(p->stopwatch);
114*437bfbebSnyanmisaka 
115*437bfbebSnyanmisaka     mpp_mem_pool_put_f(pool_frame, *frame);
116*437bfbebSnyanmisaka     *frame = NULL;
117*437bfbebSnyanmisaka     return MPP_OK;
118*437bfbebSnyanmisaka }
119*437bfbebSnyanmisaka 
mpp_frame_get_buffer(MppFrame frame)120*437bfbebSnyanmisaka MppBuffer mpp_frame_get_buffer(MppFrame frame)
121*437bfbebSnyanmisaka {
122*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
123*437bfbebSnyanmisaka 
124*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
125*437bfbebSnyanmisaka         return NULL;
126*437bfbebSnyanmisaka 
127*437bfbebSnyanmisaka     return (MppFrame)p->buffer;
128*437bfbebSnyanmisaka }
129*437bfbebSnyanmisaka 
mpp_frame_set_buffer(MppFrame frame,MppBuffer buffer)130*437bfbebSnyanmisaka void mpp_frame_set_buffer(MppFrame frame, MppBuffer buffer)
131*437bfbebSnyanmisaka {
132*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
133*437bfbebSnyanmisaka 
134*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
135*437bfbebSnyanmisaka         return;
136*437bfbebSnyanmisaka 
137*437bfbebSnyanmisaka     if (p->buffer != buffer) {
138*437bfbebSnyanmisaka         if (buffer)
139*437bfbebSnyanmisaka             mpp_buffer_inc_ref(buffer);
140*437bfbebSnyanmisaka 
141*437bfbebSnyanmisaka         if (p->buffer)
142*437bfbebSnyanmisaka             mpp_buffer_put(p->buffer);
143*437bfbebSnyanmisaka 
144*437bfbebSnyanmisaka         p->buffer = buffer;
145*437bfbebSnyanmisaka     }
146*437bfbebSnyanmisaka }
147*437bfbebSnyanmisaka 
mpp_frame_has_meta(const MppFrame frame)148*437bfbebSnyanmisaka RK_S32 mpp_frame_has_meta(const MppFrame frame)
149*437bfbebSnyanmisaka {
150*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
151*437bfbebSnyanmisaka 
152*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
153*437bfbebSnyanmisaka         return 0;
154*437bfbebSnyanmisaka 
155*437bfbebSnyanmisaka     return (NULL != p->meta);
156*437bfbebSnyanmisaka }
157*437bfbebSnyanmisaka 
mpp_frame_get_meta(MppFrame frame)158*437bfbebSnyanmisaka MppMeta mpp_frame_get_meta(MppFrame frame)
159*437bfbebSnyanmisaka {
160*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
161*437bfbebSnyanmisaka 
162*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
163*437bfbebSnyanmisaka         return NULL;
164*437bfbebSnyanmisaka 
165*437bfbebSnyanmisaka     if (!p->meta)
166*437bfbebSnyanmisaka         mpp_meta_get(&p->meta);
167*437bfbebSnyanmisaka 
168*437bfbebSnyanmisaka     return p->meta;
169*437bfbebSnyanmisaka }
170*437bfbebSnyanmisaka 
mpp_frame_set_meta(MppFrame frame,MppMeta meta)171*437bfbebSnyanmisaka void mpp_frame_set_meta(MppFrame frame, MppMeta meta)
172*437bfbebSnyanmisaka {
173*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
174*437bfbebSnyanmisaka 
175*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
176*437bfbebSnyanmisaka         return;
177*437bfbebSnyanmisaka 
178*437bfbebSnyanmisaka     if (p->meta) {
179*437bfbebSnyanmisaka         mpp_meta_put(p->meta);
180*437bfbebSnyanmisaka         p->meta = NULL;
181*437bfbebSnyanmisaka     }
182*437bfbebSnyanmisaka 
183*437bfbebSnyanmisaka     p->meta = meta;
184*437bfbebSnyanmisaka }
185*437bfbebSnyanmisaka 
mpp_frame_get_status(MppFrame frame)186*437bfbebSnyanmisaka MppFrameStatus *mpp_frame_get_status(MppFrame frame)
187*437bfbebSnyanmisaka {
188*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
189*437bfbebSnyanmisaka 
190*437bfbebSnyanmisaka     return &p->status;
191*437bfbebSnyanmisaka }
192*437bfbebSnyanmisaka 
mpp_frame_set_stopwatch_enable(MppFrame frame,RK_S32 enable)193*437bfbebSnyanmisaka void mpp_frame_set_stopwatch_enable(MppFrame frame, RK_S32 enable)
194*437bfbebSnyanmisaka {
195*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
196*437bfbebSnyanmisaka 
197*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
198*437bfbebSnyanmisaka         return;
199*437bfbebSnyanmisaka 
200*437bfbebSnyanmisaka     if (enable && !p->stopwatch) {
201*437bfbebSnyanmisaka         char name[32];
202*437bfbebSnyanmisaka 
203*437bfbebSnyanmisaka         snprintf(name, sizeof(name) - 1, "frm %8llx", p->pts);
204*437bfbebSnyanmisaka         p->stopwatch = mpp_stopwatch_get(name);
205*437bfbebSnyanmisaka         if (p->stopwatch)
206*437bfbebSnyanmisaka             mpp_stopwatch_set_show_on_exit(p->stopwatch, 1);
207*437bfbebSnyanmisaka     } else if (!enable && p->stopwatch) {
208*437bfbebSnyanmisaka         mpp_stopwatch_put(p->stopwatch);
209*437bfbebSnyanmisaka         p->stopwatch = NULL;
210*437bfbebSnyanmisaka     }
211*437bfbebSnyanmisaka }
212*437bfbebSnyanmisaka 
mpp_frame_get_stopwatch(const MppFrame frame)213*437bfbebSnyanmisaka MppStopwatch mpp_frame_get_stopwatch(const MppFrame frame)
214*437bfbebSnyanmisaka {
215*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
216*437bfbebSnyanmisaka 
217*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
218*437bfbebSnyanmisaka         return NULL;
219*437bfbebSnyanmisaka 
220*437bfbebSnyanmisaka     return p->stopwatch;
221*437bfbebSnyanmisaka }
222*437bfbebSnyanmisaka 
mpp_frame_dup(MppFrame src)223*437bfbebSnyanmisaka MppFrame mpp_frame_dup(MppFrame src)
224*437bfbebSnyanmisaka {
225*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)src;
226*437bfbebSnyanmisaka     MppFrameImpl *ret;
227*437bfbebSnyanmisaka     MppFrame frame = NULL;
228*437bfbebSnyanmisaka 
229*437bfbebSnyanmisaka     if (check_is_mpp_frame(src)) {
230*437bfbebSnyanmisaka         mpp_err_f("invalid input src %p\n", src);
231*437bfbebSnyanmisaka         return NULL;
232*437bfbebSnyanmisaka     }
233*437bfbebSnyanmisaka 
234*437bfbebSnyanmisaka     mpp_frame_init(&frame);
235*437bfbebSnyanmisaka     if (!frame)
236*437bfbebSnyanmisaka         return NULL;
237*437bfbebSnyanmisaka 
238*437bfbebSnyanmisaka     ret = (MppFrameImpl *)frame;
239*437bfbebSnyanmisaka     memcpy(ret, p, sizeof(MppFrameImpl));
240*437bfbebSnyanmisaka 
241*437bfbebSnyanmisaka     if (p->meta)
242*437bfbebSnyanmisaka         ret->meta = mpp_meta_dup(p->meta);
243*437bfbebSnyanmisaka 
244*437bfbebSnyanmisaka     return frame;
245*437bfbebSnyanmisaka }
246*437bfbebSnyanmisaka 
mpp_frame_copy(MppFrame dst,MppFrame src)247*437bfbebSnyanmisaka MPP_RET mpp_frame_copy(MppFrame dst, MppFrame src)
248*437bfbebSnyanmisaka {
249*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)dst;
250*437bfbebSnyanmisaka 
251*437bfbebSnyanmisaka     if (!dst || check_is_mpp_frame(src)) {
252*437bfbebSnyanmisaka         mpp_err_f("invalid input dst %p src %p\n", dst, src);
253*437bfbebSnyanmisaka         return MPP_ERR_UNKNOW;
254*437bfbebSnyanmisaka     }
255*437bfbebSnyanmisaka 
256*437bfbebSnyanmisaka     if (p->meta)
257*437bfbebSnyanmisaka         mpp_meta_put(p->meta);
258*437bfbebSnyanmisaka 
259*437bfbebSnyanmisaka     memcpy(dst, src, sizeof(MppFrameImpl));
260*437bfbebSnyanmisaka     p = (MppFrameImpl *)src;
261*437bfbebSnyanmisaka     if (p->meta)
262*437bfbebSnyanmisaka         mpp_meta_inc_ref(p->meta);
263*437bfbebSnyanmisaka 
264*437bfbebSnyanmisaka     return MPP_OK;
265*437bfbebSnyanmisaka }
266*437bfbebSnyanmisaka 
mpp_frame_info_cmp(MppFrame frame0,MppFrame frame1)267*437bfbebSnyanmisaka MPP_RET mpp_frame_info_cmp(MppFrame frame0, MppFrame frame1)
268*437bfbebSnyanmisaka {
269*437bfbebSnyanmisaka     MppFrameImpl *f0 = (MppFrameImpl *)frame0;
270*437bfbebSnyanmisaka     MppFrameImpl *f1 = (MppFrameImpl *)frame1;
271*437bfbebSnyanmisaka 
272*437bfbebSnyanmisaka     if (check_is_mpp_frame(f0) || check_is_mpp_frame(f1)) {
273*437bfbebSnyanmisaka         mpp_err_f("invalid NULL pointer input\n");
274*437bfbebSnyanmisaka         return MPP_ERR_NULL_PTR;
275*437bfbebSnyanmisaka     }
276*437bfbebSnyanmisaka 
277*437bfbebSnyanmisaka     if ((f0->width              == f1->width)  &&
278*437bfbebSnyanmisaka         (f0->height             == f1->height) &&
279*437bfbebSnyanmisaka         (f0->hor_stride         == f1->hor_stride) &&
280*437bfbebSnyanmisaka         (f0->ver_stride         == f1->ver_stride) &&
281*437bfbebSnyanmisaka         ((f0->fmt & ~MPP_FRAME_HDR_MASK) == (f1->fmt & ~MPP_FRAME_HDR_MASK)) &&
282*437bfbebSnyanmisaka         (f0->buf_size           == f1->buf_size)) {
283*437bfbebSnyanmisaka         return MPP_OK;
284*437bfbebSnyanmisaka     }
285*437bfbebSnyanmisaka     return MPP_NOK;
286*437bfbebSnyanmisaka }
287*437bfbebSnyanmisaka 
mpp_frame_get_fbc_offset(MppFrame frame)288*437bfbebSnyanmisaka RK_U32 mpp_frame_get_fbc_offset(MppFrame frame)
289*437bfbebSnyanmisaka {
290*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
291*437bfbebSnyanmisaka 
292*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
293*437bfbebSnyanmisaka         return 0;
294*437bfbebSnyanmisaka 
295*437bfbebSnyanmisaka     if (MPP_FRAME_FMT_IS_FBC(p->fmt)) {
296*437bfbebSnyanmisaka         RK_U32 fbc_version = p->fmt & MPP_FRAME_FBC_MASK;
297*437bfbebSnyanmisaka         RK_U32 fbc_offset = 0;
298*437bfbebSnyanmisaka 
299*437bfbebSnyanmisaka         if (fbc_version == MPP_FRAME_FBC_AFBC_V1) {
300*437bfbebSnyanmisaka             fbc_offset = MPP_ALIGN(MPP_ALIGN(p->width, 16) *
301*437bfbebSnyanmisaka                                    MPP_ALIGN(p->height, 16) / 16, SZ_4K);
302*437bfbebSnyanmisaka         } else if (fbc_version == MPP_FRAME_FBC_AFBC_V2 ||
303*437bfbebSnyanmisaka                    fbc_version == MPP_FRAME_FBC_RKFBC) {
304*437bfbebSnyanmisaka             fbc_offset = 0;
305*437bfbebSnyanmisaka         }
306*437bfbebSnyanmisaka         p->fbc_offset = fbc_offset;
307*437bfbebSnyanmisaka     }
308*437bfbebSnyanmisaka 
309*437bfbebSnyanmisaka     return p->fbc_offset;
310*437bfbebSnyanmisaka }
311*437bfbebSnyanmisaka 
mpp_frame_get_fbc_stride(MppFrame frame)312*437bfbebSnyanmisaka RK_U32 mpp_frame_get_fbc_stride(MppFrame frame)
313*437bfbebSnyanmisaka {
314*437bfbebSnyanmisaka     MppFrameImpl *p = (MppFrameImpl *)frame;
315*437bfbebSnyanmisaka 
316*437bfbebSnyanmisaka     if (check_is_mpp_frame(p))
317*437bfbebSnyanmisaka         return 0;
318*437bfbebSnyanmisaka 
319*437bfbebSnyanmisaka     return MPP_ALIGN(p->width, 16);
320*437bfbebSnyanmisaka }
321*437bfbebSnyanmisaka 
322*437bfbebSnyanmisaka /*
323*437bfbebSnyanmisaka  * object access function macro
324*437bfbebSnyanmisaka  */
325*437bfbebSnyanmisaka #define MPP_FRAME_ACCESSORS(type, field) \
326*437bfbebSnyanmisaka     type mpp_frame_get_##field(const MppFrame s) \
327*437bfbebSnyanmisaka     { \
328*437bfbebSnyanmisaka         check_is_mpp_frame((MppFrameImpl*)s); \
329*437bfbebSnyanmisaka         return ((MppFrameImpl*)s)->field; \
330*437bfbebSnyanmisaka     } \
331*437bfbebSnyanmisaka     void mpp_frame_set_##field(MppFrame s, type v) \
332*437bfbebSnyanmisaka     { \
333*437bfbebSnyanmisaka         check_is_mpp_frame((MppFrameImpl*)s); \
334*437bfbebSnyanmisaka         ((MppFrameImpl*)s)->field = v; \
335*437bfbebSnyanmisaka     }
336*437bfbebSnyanmisaka 
337*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, width)
338*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, height)
339*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, hor_stride_pixel)
340*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, hor_stride)
341*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, ver_stride)
342*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, fbc_hdr_stride)
343*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, offset_x)
344*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, offset_y)
345*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, mode)
346*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, discard)
347*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, viewid)
348*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, poc)
349*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_S64, pts)
350*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_S64, dts)
351*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, eos)
352*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, info_change)
353*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameColorRange, color_range)
354*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameColorPrimaries, color_primaries)
355*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameColorTransferCharacteristic, color_trc)
356*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameColorSpace, colorspace)
357*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameChromaLocation, chroma_location)
358*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameFormat, fmt)
359*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameRational, sar)
360*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameMasteringDisplayMetadata, mastering_display)
361*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameContentLightMetadata, content_light)
362*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppFrameHdrDynamicMeta*, hdr_dynamic_meta)
363*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(size_t, buf_size)
364*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, errinfo)
365*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(MppTask, task)
366*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(RK_U32, thumbnail_en)
367*437bfbebSnyanmisaka MPP_FRAME_ACCESSORS(size_t, fbc_size)
368