2025-02-27 17:59:18 +08:00

118 lines
3.9 KiB
C
Executable File

// Copyright 2020-2021 Beken
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <common/bk_include.h>
#include <driver/uvc_camera_types.h>
#include <components/video_types.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum
{
APP_CAMERA_DVP_JPEG,
APP_CAMERA_DVP_YUV,
APP_CAMERA_DVP_MIX,
APP_CAMERA_UVC_MJPEG,
APP_CAMERA_UVC_H264,
APP_CAMERA_NET_MJPEG,
APP_CAMERA_NET_H264,
APP_CAMERA_DVP_H264_TRANSFER,
APP_CAMERA_DVP_H264_LOCAL,
APP_CAMERA_DVP_H264_ENC_LCD,
APP_CAMERA_INVALIED,
} app_camera_type_t;
/*
* legacy
*/
#define APP_CAMERA_DVP APP_CAMERA_DVP_JPEG
#define APP_CAMERA_YUV APP_CAMERA_DVP_YUV
#define APP_CAMERA_MIX APP_CAMERA_DVP_MIX
#define APP_CAMERA_UVC APP_CAMERA_UVC_MJPEG
typedef enum
{
APP_LCD_RGB,
APP_LCD_MCU,
} app_lcd_type_t;
typedef int (*media_transfer_send_cb)(uint8_t *data, uint32_t length, uint16_t *retry_cnt);
typedef int (*media_transfer_prepare_cb)(uint8_t *data, uint32_t length);
typedef void* (*media_transfer_get_tx_buf_cb)(void);
typedef int (*media_transfer_get_tx_size_cb)(void);
typedef void (*frame_cb_t)(frame_buffer_t *frame);
typedef bool (*media_transfer_drop_check_cb)(frame_buffer_t *frame,uint32_t count, uint16_t ext_size);
typedef struct {
media_transfer_send_cb send;
media_transfer_prepare_cb prepare;
media_transfer_drop_check_cb drop_check;
media_transfer_get_tx_buf_cb get_tx_buf;
media_transfer_get_tx_size_cb get_tx_size;
pixel_format_t fmt;
} media_transfer_cb_t;
bk_err_t media_app_camera_open(media_camera_device_t *device);
bk_err_t media_app_camera_close(camera_type_t type);
bk_err_t media_app_register_read_frame_callback(pixel_format_t fmt, frame_cb_t cb);
bk_err_t media_app_unregister_read_frame_callback(void);
bk_err_t media_app_lcd_open(void *lcd_open);
bk_err_t media_app_lcd_close(void);
bk_err_t media_app_storage_open(void);
bk_err_t media_app_storage_close(void);
bk_err_t media_app_capture(char *name);
bk_err_t media_app_save_start(char *name);
bk_err_t media_app_save_stop(void);
bk_err_t media_app_lcd_set_backlight(uint8_t level);
bk_err_t media_app_mailbox_test(void);
bk_err_t media_app_lcd_rotate(media_rotate_t rotate);
bk_err_t media_app_lcd_resize(media_ppi_t ppi);
bk_err_t media_app_dump_display_frame(void);
bk_err_t media_app_dump_decoder_frame(void);
bk_err_t media_app_dump_jpeg_frame(void);
bk_err_t media_app_lcd_step_mode(bool enable);
bk_err_t media_app_lcd_step_trigger(void);
bk_err_t media_app_transfer_pause(bool pause);
bk_err_t media_app_lcd_display_file(char *file_name); //display sd card file
bk_err_t media_app_lcd_display(void* lcd_display);
bk_err_t media_app_lcd_display_beken(void* lcd_display);
bk_err_t media_app_lcd_blend(void *param);
bk_err_t media_app_register_uvc_connect_state_cb(void *cb);
bk_err_t media_app_lcd_gui_blend_open(int blend_x_size, int blend_y_size);
bk_err_t media_app_lcd_gui_blend_close(void);
bk_err_t media_app_lcd_decode(media_decode_mode_t decode_mode);
bk_err_t media_app_lcd_blend_open(bool en);
uint32_t media_app_get_lcd_devices_num(void);
uint32_t media_app_get_lcd_devices_list(void);
uint32_t media_app_get_lcd_device_by_id(uint32_t id);
bk_err_t media_app_rtsp_open(video_config_t *config);
bk_err_t media_app_rtsp_close();
bk_err_t media_app_get_uvc_camera_status(void);
bk_err_t media_app_get_lcd_status(void);
#if CONFIG_VIDEO_AVI
bk_err_t media_app_avi_open(void);
bk_err_t media_app_avi_close(void);
#endif
#ifdef __cplusplus
}
#endif