10.1_demo/extern/qlibquammapi/include/pipeline/qua_mpp_frame.h

68 lines
1.6 KiB
C

/*
* Copyright (c) 2024 Quaming Intelligent Technology Co., Ltd.
*
* All Rights Reserved.
* Confidential and Proprietary - Quaming Intelligent Technology Co., Ltd.
*/
#ifndef __QUA_MPP_FRAME_H__
#define __QUA_MPP_FRAME_H__
#include "common/qua_mm_video_common_type.h"
#include "audio/qua_mm_audio.h"
#include "utils/qua_list.h"
#include "pipeline/qua_mpp_base.h"
#include "video/qua_mm_video_type.h"
typedef enum mpp_frame_owner {
MPP_FRAME_OWNER_QUAMM_HAL = 0,
MPP_FRAME_OWNER_QUAMM_FWK,
MPP_FRAME_OWNER_QUAMM_USER
} mpp_frame_owner_t;
typedef struct mpp_frame_provider {
mpp_frame_owner_t owner;
QUA_VOID *priv;
mpp_element_type_t ele_type;
QUA_BOOL (*dispose)(QUA_VOID *priv);
} mpp_frame_provider_t;
typedef enum mpp_frame_data_type {
MPP_FRAME_VIDEO_RAW,
MPP_FRAME_VIDEO_CODEC,
MPP_FRAME_AUDIO_RAW,
MPP_FRAME_AUDIO_CODEC,
MPP_FRAME_BUTT
} mpp_frame_data_type_t;
typedef struct qua_mpp_frame {
union {
qua_video_frame_info_t video_frame;
qua_audio_frame_t audio_frame;
qua_venc_stream_t venc_stream;
qua_vdec_stream_t vdec_stream;
} frame;
mpp_frame_data_type_t data_type;
QUA_U32 ref_cnt;
QUA_U64 id;
QUA_CONST_CHAR *birth_name;
mpp_frame_provider_t provider;
qua_list_node_t list;
} qua_mpp_frame_t;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
qua_mpp_frame_t *qua_mpp_frame_acquire(QUA_CONST_CHAR *birth_name, mpp_frame_provider_t *prvoider);
QUA_BOOL qua_mpp_frame_retain(qua_mpp_frame_t *frame);
QUA_BOOL qua_mpp_frame_release(qua_mpp_frame_t *frame);
#ifdef __cplusplus
};
#endif
#endif