[mpp_frame]: Add MppFrameStatus for internal flow

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ie0203316dd674eb1dd43f68cb71d021deb650f0b
This commit is contained in:
Herman Chen 2022-12-28 10:55:02 +08:00 committed by Yandong Lin
parent c1f8e93630
commit f7f39557e3
2 changed files with 67 additions and 3 deletions

View file

@ -22,6 +22,59 @@
typedef struct MppFrameImpl_t MppFrameImpl;
typedef union MppFrameStatus_u {
/* total 64 bit frame status for internal flow */
RK_U64 val;
struct {
/* bit 0 ~ 7 common frame status flag for both encoder and decoder */
/*
* data status flag
* 0 - pixel data is invalid
* 1 - pixel data is valid
*/
RK_U32 valid : 1;
/* reference status flag */
/*
* 0 - inter frame
* 1 - intra frame
*/
RK_U32 is_intra : 1;
/*
* Valid when is_intra is true
* 0 - normal intra frame
* 1 - IDR frame
*/
RK_U32 is_idr : 1;
/*
* 0 - mark as reference frame
* 1 - mark as non-refernce frame
*/
RK_U32 is_non_ref : 1;
/*
* Valid when is_non_ref is false
* 0 - mark as short-term reference frame
* 1 - mark as long-term refernce frame
*/
RK_U32 is_lt_ref : 1;
RK_U32 is_b_frame : 1;
/*
* frame usage flag for decoder / encoder flow
* 0 - mark as general frame
* 1 - mark as used by decoder
* 2 - mark as used by encoder
* 4 - mark as used by vproc
*/
RK_U32 usage : 3;
};
} MppFrameStatus;
struct MppFrameImpl_t {
const char *name;
@ -127,6 +180,7 @@ struct MppFrameImpl_t {
*/
RK_U32 fbc_offset;
size_t fbc_size;
/*
* frame buffer contain downsacle pic
*
@ -134,6 +188,11 @@ struct MppFrameImpl_t {
* w/2 x h / 2
*/
RK_U32 thumbnail_en;
/*
* frame status info for internal flow
*/
MppFrameStatus status;
};
#ifdef __cplusplus
@ -147,8 +206,7 @@ RK_U32 mpp_frame_get_fbc_stride(MppFrame frame);
size_t mpp_frame_get_fbc_size(MppFrame frame);
void mpp_frame_set_fbc_size(MppFrame frame, size_t size);
void mpp_frame_set_task(MppFrame frame, MppTask task);
MppTask mpp_frame_get_task(MppFrame frame);
MppFrameStatus *mpp_frame_get_status(MppFrame frame);
/*
* Debug for frame process timing

View file

@ -148,6 +148,13 @@ void mpp_frame_set_meta(MppFrame frame, MppMeta meta)
p->meta = meta;
}
MppFrameStatus *mpp_frame_get_status(MppFrame frame)
{
MppFrameImpl *p = (MppFrameImpl *)frame;
return &p->status;
}
void mpp_frame_set_stopwatch_enable(MppFrame frame, RK_S32 enable)
{
if (check_is_mpp_frame(frame))
@ -290,4 +297,3 @@ MPP_FRAME_ACCESSORS(RK_U32, errinfo)
MPP_FRAME_ACCESSORS(MppTask, task)
MPP_FRAME_ACCESSORS(RK_U32, thumbnail_en)
MPP_FRAME_ACCESSORS(size_t, fbc_size)