2023-08-30 16:21:18 +08:00
|
|
|
/*
|
2025-01-08 19:12:06 +08:00
|
|
|
* Copyright (C) 2020-2024 ArtInChip Technology Co. Ltd
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
*
|
|
|
|
|
* Author: <jun.ma@artinchip.com>
|
|
|
|
|
* Desc: aic video render interface
|
|
|
|
|
*/
|
2023-08-30 16:21:18 +08:00
|
|
|
|
|
|
|
|
#ifndef __AIC_RENDER_H__
|
|
|
|
|
#define __AIC_RENDER_H__
|
|
|
|
|
|
|
|
|
|
#include "mpp_dec_type.h"
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
2025-01-08 19:12:06 +08:00
|
|
|
extern "C" {
|
2023-08-30 16:21:18 +08:00
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
|
|
struct aic_video_render {
|
2025-01-08 19:12:06 +08:00
|
|
|
s32 (*init)(struct aic_video_render *render, s32 layer_id, s32 dev_id);
|
|
|
|
|
s32 (*destroy)(struct aic_video_render *render);
|
|
|
|
|
s32 (*rend)(struct aic_video_render *render, struct mpp_frame *frame_info);
|
|
|
|
|
s32 (*get_screen_size)(struct aic_video_render *render, struct mpp_size *size);
|
|
|
|
|
s32 (*set_dis_rect)(struct aic_video_render *render, struct mpp_rect *rect);
|
|
|
|
|
s32 (*get_dis_rect)(struct aic_video_render *render, struct mpp_rect *rect);
|
|
|
|
|
s32 (*set_on_off)(struct aic_video_render *render, s32 on_off);
|
|
|
|
|
s32 (*get_on_off)(struct aic_video_render *render, s32 *on_off);
|
|
|
|
|
s32 (*rend_last_frame)(struct aic_video_render *render, s32 enable);
|
2023-08-30 16:21:18 +08:00
|
|
|
};
|
|
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_init(render, layer_id, dev_id) \
|
|
|
|
|
((struct aic_video_render *)render)->init(render, layer_id, dev_id)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_destroy(render) \
|
|
|
|
|
((struct aic_video_render *)render)->destroy(render)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_rend(render, frame_info) \
|
|
|
|
|
((struct aic_video_render *)render)->rend(render, frame_info)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_set_dis_rect( \
|
|
|
|
|
render, \
|
|
|
|
|
rect) \
|
|
|
|
|
((struct aic_video_render *)render)->set_dis_rect(render, rect)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_get_dis_rect( \
|
|
|
|
|
render, \
|
|
|
|
|
rect) \
|
|
|
|
|
((struct aic_video_render *)render)->get_dis_rect(render, rect)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_set_on_off( \
|
|
|
|
|
render, \
|
|
|
|
|
on_off) \
|
|
|
|
|
((struct aic_video_render *)render)->set_on_off(render, on_off)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_get_on_off( \
|
|
|
|
|
render, \
|
|
|
|
|
on_off) \
|
|
|
|
|
((struct aic_video_render *)render)->get_on_off(render, on_off)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define aic_video_render_rend_last_frame( \
|
|
|
|
|
render, \
|
|
|
|
|
enable) \
|
|
|
|
|
((struct aic_video_render *)render)->rend_last_frame(render, enable)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
|
|
|
|
s32 aic_video_render_create(struct aic_video_render **render);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif /* End of #ifdef __cplusplus */
|
|
|
|
|
|
|
|
|
|
#endif
|