mirror of
https://github.com/sengeiou/realtek_ameba_mp_sdk.git
synced 2026-07-09 04:55:42 +00:00
ameba micropython sdk first commit
This commit is contained in:
commit
8508ee6139
5619 changed files with 1874619 additions and 0 deletions
38
sdk/component/common/media/framework/hantro_modify_parm.h
Normal file
38
sdk/component/common/media/framework/hantro_modify_parm.h
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#ifndef HANTRO_MODIFY_PARM_H
|
||||
#define HANTRO_MODIFY_PARM_H
|
||||
|
||||
#define CMD_VIDEO_H264_CHG_FPS 0x01
|
||||
#define CMD_VIDEO_H264_CHG_RESOLUTION 0x02
|
||||
#define CMD_VIDEO_H264_CHG_BPS 0x03
|
||||
#define CMD_VIDEO_H264_CHG_IFRAME 0x04
|
||||
|
||||
struct mmf_video_h264_parm{
|
||||
int cmd_code;
|
||||
int config_flag;
|
||||
int fps;
|
||||
int width;
|
||||
int height;
|
||||
int bps;
|
||||
};
|
||||
|
||||
struct mmf_video_modify_parm_context{
|
||||
struct mmf_video_h264_parm h264_parm[3];
|
||||
};
|
||||
|
||||
void mmf_video_modify_parm_init(void);
|
||||
|
||||
void mmf_video_isp_reset_buffer(int streamid);
|
||||
|
||||
void mmf_video_h264_change_parm_cb(void *ctx);
|
||||
|
||||
int mmf_video_h264_change_fps(int streamid,int fps);
|
||||
|
||||
int mmf_video_h264_change_resolution(int streamid,int width,int height);
|
||||
|
||||
int mmf_video_h264_change_bps(int streamid,int bps);
|
||||
|
||||
int mmf_video_h264_force_iframe(int streamid);
|
||||
|
||||
void mmf_video_nv12_change_parm_cb(void *ctx);
|
||||
|
||||
#endif
|
||||
26
sdk/component/common/media/framework/jpeg_snapshot.h
Normal file
26
sdk/component/common/media/framework/jpeg_snapshot.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef JPEG_SNAPSHOT_H
|
||||
#define JPEG_SNAPSHOT_H
|
||||
|
||||
#include "video_common_api.h"
|
||||
|
||||
void jpeg_snapshot_initial_with_instance(void* jpeg_ctx, uint32_t dest_addr, uint32_t dest_len, uint8_t snapshot_during_jpeg_streaming);
|
||||
void jpeg_snapshot_initial(uint32_t width, uint32_t height, uint32_t fps, uint32_t level, uint32_t dest_addr, uint32_t dest_len);
|
||||
int jpeg_snapshot_encode_cb(uint32_t y_addr,uint32_t uv_addr);
|
||||
void jpeg_snapshot_cb(void);
|
||||
|
||||
int jpeg_snapshot_isp_config(int streamid);
|
||||
int jpeg_snapshot_get_buffer(VIDEO_BUFFER* video_buf, uint32_t timeout_ms);
|
||||
void jpeg_snapshot_set_processing(uint8_t snapshot_processing);
|
||||
uint8_t jpeg_snapshot_get_processing();
|
||||
|
||||
// For AT command
|
||||
void jpeg_snapshot_stream();
|
||||
int jpeg_snapshot_isp();
|
||||
int jpeg_snapshot_isp_change_resolution(int width,int height);
|
||||
void jpeg_snapshot_isp_callback(int arg);
|
||||
|
||||
int yuv_snapshot_isp_config(int width,int height,int fps,int streamid);
|
||||
int yuv_snapshot_isp(unsigned char **raw_y);
|
||||
int yuv_snapshot_isp_deinit();
|
||||
|
||||
#endif
|
||||
35
sdk/component/common/media/framework/memory_encoder.h
Normal file
35
sdk/component/common/media/framework/memory_encoder.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef ENCODER_MEMORY_H
|
||||
#define ENCODER_MEMORY_H
|
||||
|
||||
#include "osdep_service.h"
|
||||
#include <stdint.h>
|
||||
|
||||
struct encoder_buffer{
|
||||
_mutex memory_lock;
|
||||
|
||||
uint8_t* pool;
|
||||
uint8_t* pool_table; // index table
|
||||
int32_t max_pool_blk; //
|
||||
|
||||
int32_t blk_size; // one block size
|
||||
int32_t mem_size; // total pool size
|
||||
|
||||
int32_t pool_blk_idx;
|
||||
int32_t rest_pool_blk;
|
||||
|
||||
|
||||
int32_t blk_serial;
|
||||
|
||||
int32_t min_rest_blk;
|
||||
};
|
||||
|
||||
|
||||
void *memory_init(int size,int block_size);
|
||||
void memory_deinit(void *ctx);
|
||||
//u8* _memory_realloc(struct encoder_buffer *eb,uint8_t *addr,uint32_t size);
|
||||
uint8_t* memory_realloc(void *ctx,uint8_t *addr,uint32_t size);
|
||||
void memory_free(void *ctx,uint8_t *addr);
|
||||
void* memory_alloc(void *ctx,uint32_t size);
|
||||
void dump_info(void *ctx);
|
||||
|
||||
#endif
|
||||
79
sdk/component/common/media/framework/mmf_command.h
Normal file
79
sdk/component/common/media/framework/mmf_command.h
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
#ifndef _MMF_COMMAND_H_
|
||||
#define _MMF_COMMAND_H_
|
||||
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
|
||||
#define MMF_CMD_DEBUG 0
|
||||
|
||||
#if MMF_CMD_DEBUG
|
||||
#define MMF_CMD_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define MMF_CMD_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define MMF_CMD_PRINTF(fmt, args...)
|
||||
#define MMF_CMD_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#endif
|
||||
|
||||
#define MMF_COMMAND_SERVICE_PRIORITY tskIDLE_PRIORITY + 1
|
||||
#define MMF_COMMAND_BUF_SIZE 512
|
||||
#define DEF_MMF_COMMAND_PORT 16385
|
||||
|
||||
#define MMF_COMMAND_SELECT_SOCK 8
|
||||
|
||||
// TODO: command list
|
||||
/*mmf command list*/
|
||||
|
||||
typedef struct {
|
||||
struct list_head list;
|
||||
u8 bCmd;
|
||||
u8 bSubCommand;
|
||||
u8 bidx;
|
||||
u8 bLen;// sizeof[data]
|
||||
u16 wParam;
|
||||
u16 wAddr;
|
||||
u8 *data; // max: 32byte
|
||||
} mcmd_t;
|
||||
|
||||
typedef struct mmf_command_socket
|
||||
{
|
||||
int server_socket;
|
||||
u8 *server_ip;
|
||||
u16 server_port;
|
||||
u8 *remote_ip;
|
||||
u16 remote_port;
|
||||
int client_socket;
|
||||
|
||||
mcmd_t* command;
|
||||
u8 *request;
|
||||
u8 *response;
|
||||
int (*cb_command)(void*,void*);
|
||||
} mcmd_socket_t;
|
||||
|
||||
typedef struct mmf_command_context
|
||||
{
|
||||
struct list_head cmd_list;
|
||||
_mutex list_lock;
|
||||
_sema cmd_in_sema;
|
||||
xTaskHandle queue_task;
|
||||
int (*cb_custom)(void*);
|
||||
mcmd_socket_t* mcmd_socket;
|
||||
xTaskHandle socket_task;
|
||||
} mcmd_context;
|
||||
|
||||
mcmd_t* mcmd_cmd_create(u8 bCmd, u8 bSubCommand, u8 bidx, u8 bLen, u16 wParam, u16 wAddr, u8 *data);
|
||||
void mcmd_queue_service(void *param);
|
||||
int mcmd_queue_task_open(mcmd_context *ctx);
|
||||
mcmd_context * mcmd_context_init();
|
||||
void mcmd_context_deinit(mcmd_context *ctx);
|
||||
void mcmd_in_cmd_queue(mcmd_t *cmd, mcmd_context *ctx);
|
||||
mcmd_t *mcmd_out_cmd_queue(mcmd_context *ctx);
|
||||
|
||||
mcmd_socket_t* mcmd_socket_create();
|
||||
void mcmd_socket_free(mcmd_socket_t *mcmd_socket);
|
||||
char mcmd_socket_bind_server(mcmd_socket_t *mcmd_socket);
|
||||
char mcmd_socket_accept_client(mcmd_socket_t *mcmd_socket);
|
||||
mcmd_t* mcmd_parse_cmd(u8 *data);
|
||||
|
||||
#endif
|
||||
94
sdk/component/common/media/framework/mmf_common.h
Normal file
94
sdk/component/common/media/framework/mmf_common.h
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
#ifndef _EXCHBUF_H
|
||||
#define _EXCHBUF_H
|
||||
#include "cmsis_os.h"
|
||||
#include "osdep_service.h"
|
||||
#include "mmf_dbg.h"
|
||||
|
||||
/*service task state*/
|
||||
#define S_STOP 0x00
|
||||
#define S_RUN 0x01
|
||||
#define S_FROZEN 0X02
|
||||
|
||||
/*exchange buffer state*/
|
||||
#define STAT_INIT 0
|
||||
#define STAT_USED 1
|
||||
#define STAT_READY 2
|
||||
#define STAT_RESERVED 3
|
||||
|
||||
/*output sink state*/
|
||||
#define SINK_STOP 0x00
|
||||
#define SINK_RUN 0x01
|
||||
|
||||
typedef struct _media_source_module msrc_module_t;
|
||||
typedef struct _media_sink_module msink_module_t;
|
||||
|
||||
typedef struct _share_cache{
|
||||
_mutex mutex;
|
||||
uint8_t* data; // command arg
|
||||
}share_cache_t;
|
||||
|
||||
typedef struct _exch_buf_output_list{
|
||||
uint8_t index;
|
||||
msink_module_t * sink; // destination sink
|
||||
xQueueHandle output_qid;
|
||||
uint8_t send;
|
||||
}output_list_t;
|
||||
|
||||
typedef struct _exch_buf{
|
||||
//_list node; // linking node
|
||||
uint32_t type; // CMD, or DATA
|
||||
uint32_t cmd; // command
|
||||
uint32_t arg; // command arg
|
||||
|
||||
uint8_t* data; //
|
||||
uint32_t index;
|
||||
uint32_t len;
|
||||
uint32_t timestamp; // 0: not set
|
||||
uint32_t hw_timestamp; // ISP hw timestamp
|
||||
uint32_t codec_fmt; // FMT_V_xx or FMT_A_xx
|
||||
|
||||
uint32_t state;
|
||||
void* priv; // private use
|
||||
|
||||
xQueueHandle source_qid;
|
||||
output_list_t* output_sink_list;
|
||||
uint8_t sink_cnt;
|
||||
uint32_t dst_count;
|
||||
uint32_t* ref_count;
|
||||
_mutex ref_count_lock;
|
||||
uint32_t share_cache_size;
|
||||
uint32_t max_share_cnt;
|
||||
share_cache_t* cache_list;
|
||||
}exch_buf_t;
|
||||
|
||||
/*CMDs necessary for MMF*/
|
||||
#define CMD_SET_STREAMMING 0x00
|
||||
#define CMD_SET_INPUT_QUEUE 0x01
|
||||
#define CMD_SET_OUTPUT_QUEUE 0x02
|
||||
#define CMD_SET_TASK_ON 0x03
|
||||
#define CMD_SET_TASK_FROZEN 0x04
|
||||
#define CMD_SET_TASK_OFF 0x05
|
||||
|
||||
/* CMDs optional for MMF*/
|
||||
#define CMD_SET_CB_START 0x0a
|
||||
#define CMD_SET_CB_STOP 0x0b
|
||||
#define CMD_SET_CB_PAUSE 0x0c
|
||||
#define CMD_SET_CB_CUSTOMCMD 0x0d
|
||||
|
||||
/* currently supported media format type */
|
||||
#define FMT_V_MJPG 0x00
|
||||
#define FMT_V_H264 0x01
|
||||
#define FMT_V_MP4V_ES 0x02
|
||||
#define FMT_A_PCMU 0x10
|
||||
#define FMT_A_PCMA 0x11
|
||||
#define FMT_A_MP4A_LATM 0x12
|
||||
#define FMT_A_AAC_RAW 0x13
|
||||
#define FMT_AV_UNKNOWN 0xFF
|
||||
|
||||
/* common error code for MMF */
|
||||
#define EAGAIN 11
|
||||
#define EFAULT 14
|
||||
#define EINVAL 22
|
||||
#define ENOSR 63
|
||||
|
||||
#endif
|
||||
111
sdk/component/common/media/framework/mmf_dbg.h
Normal file
111
sdk/component/common/media/framework/mmf_dbg.h
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
#ifndef __MMF_DBG_H_
|
||||
#define __MMF_DBG_H_
|
||||
|
||||
#include "platform_stdlib.h"
|
||||
|
||||
extern int PRINT_TS_DIFF;
|
||||
|
||||
// Define debug group
|
||||
#define _MMF_DBG_RTSP_ 0x00000001
|
||||
#define _MMF_DBG_RTP_ 0x00000002
|
||||
#define _MMF_DBG_ISP_ 0x00000004
|
||||
#define _MMF_DBG_ENCODER_ 0x00000008
|
||||
|
||||
extern u32 ConfigDebugMmfErr;
|
||||
extern u32 ConfigDebugMmfWarn;
|
||||
extern u32 ConfigDebugMmfInfo;
|
||||
|
||||
#define DBG_MMF_ERR_MSG_ON(x) (ConfigDebugMmfErr |= (x))
|
||||
#define DBG_MMF_WARN_MSG_ON(x) (ConfigDebugMmfWarn |= (x))
|
||||
#define DBG_MMF_INFO_MSG_ON(x) (ConfigDebugMmfInfo |= (x))
|
||||
|
||||
#define DBG_MMF_ERR_MSG_OFF(x) (ConfigDebugMmfErr &= ~(x))
|
||||
#define DBG_MMF_WARN_MSG_OFF(x) (ConfigDebugMmfWarn &= ~(x))
|
||||
#define DBG_MMF_INFO_MSG_OFF(x) (ConfigDebugMmfInfo &= ~(x))
|
||||
|
||||
|
||||
#define RTSP_ERR_PREFIX "[RTSP Err]"
|
||||
#define RTSP_WARN_PREFIX "[RTSP Wrn]"
|
||||
#define RTSP_INFO_PREFIX "[RTSP Inf]"
|
||||
|
||||
#define RTP_ERR_PREFIX "[RTP Err]"
|
||||
#define RTP_WARN_PREFIX "[RTP Wrn]"
|
||||
#define RTP_INFO_PREFIX "[RTP Inf]"
|
||||
|
||||
#define ISP_ERR_PREFIX "[ISP Err]"
|
||||
#define ISP_WARN_PREFIX "[ISP Wrn]"
|
||||
#define ISP_INFO_PREFIX "[ISP Inf]"
|
||||
|
||||
#define ENCODER_ERR_PREFIX "[Enc Err]"
|
||||
#define ENCODER_WARN_PREFIX "[Enc Wrn]"
|
||||
#define ENCODER_INFO_PREFIX "[Enc Inf]"
|
||||
|
||||
|
||||
#define MMF_PRINTK printf
|
||||
|
||||
#define RTSP_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_RTSP_) \
|
||||
MMF_PRINTK("\n\r" RTSP_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define RTP_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_RTP_) \
|
||||
MMF_PRINTK("\n\r" RTP_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ISP_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_ISP_) \
|
||||
MMF_PRINTK("\n\r" ISP_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ENCODER_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_ENCODER_) \
|
||||
MMF_PRINTK("\n\r" ENCODER_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
|
||||
// DBG_WARNING
|
||||
#define RTSP_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_RTSP_) \
|
||||
MMF_PRINTK("\n\r" RTSP_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define RTP_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_RTP_) \
|
||||
MMF_PRINTK("\n\r" RTP_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ISP_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_ISP_) \
|
||||
MMF_PRINTK("\n\r" ISP_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ENCODER_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_ENCODER_) \
|
||||
MMF_PRINTK("\n\r" ENCODER_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
|
||||
// DBG_INFO
|
||||
#define RTSP_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_RTSP_) \
|
||||
MMF_PRINTK("\n\r" RTSP_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define RTP_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_RTP_) \
|
||||
MMF_PRINTK("\n\r" RTP_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ISP_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_ISP_) \
|
||||
MMF_PRINTK("\n\r" ISP_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ENCODER_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_ENCODER_) \
|
||||
MMF_PRINTK("\n\r" ENCODER_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#endif
|
||||
|
||||
30
sdk/component/common/media/framework/mmf_sink.h
Normal file
30
sdk/component/common/media/framework/mmf_sink.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef _STREAM_H
|
||||
#define _STREAM_H
|
||||
#include "cmsis_os.h"
|
||||
#include "mmf_common.h"
|
||||
#include "mmf_source_modules/mmf_source_list.h" // for sink modules to find src
|
||||
|
||||
struct _media_sink_module{
|
||||
void* (*create)(void);
|
||||
void (*destroy)(void*);
|
||||
int (*set_param)(void*, int, int);
|
||||
int (*handle)(void*,void*); // data handle, input output will cast to exch_buf_t
|
||||
};
|
||||
|
||||
typedef struct _media_sink_context{
|
||||
xQueueHandle input_qid;
|
||||
//xQueueHandle output_qid;
|
||||
int state;
|
||||
xTaskHandle hdl_task; // queue service task
|
||||
|
||||
void* drv_priv; // private data for module
|
||||
msink_module_t * sink;
|
||||
}msink_context;
|
||||
|
||||
void mmf_sink_close(msink_context* ctx);
|
||||
msink_context* mmf_sink_open(msink_module_t *sink);
|
||||
int mmf_sink_ctrl(msink_context* ctx, int cmd, int arg);
|
||||
|
||||
// must be here
|
||||
#include "mmf_sink_modules/mmf_sink_list.h"
|
||||
#endif
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#ifndef _MMF_SINK_I2S_H_
|
||||
#define _MMF_SINK_I2S_H_
|
||||
|
||||
#include "i2s_api.h"
|
||||
#include "g711/g711_codec.h"
|
||||
#include "alc5651.h"
|
||||
|
||||
void i2s_mod_close(void* ctx);
|
||||
void* i2s_mod_open(void);
|
||||
int i2s_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int i2s_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef _STREAM_MODULES_H
|
||||
#define _STREAM_MODULES_H
|
||||
#include "../mmf_sink.h"
|
||||
|
||||
//list all avaliable modules here
|
||||
extern msink_module_t rtsp_module;
|
||||
extern msink_module_t rtsp2_module;
|
||||
extern msink_module_t i2s_sink_module;
|
||||
extern msink_module_t audio_sink_module;
|
||||
extern msink_module_t audio_wrapper_sink_module;
|
||||
extern msink_module_t mp4_module;
|
||||
extern msink_module_t mp3_sink_module;
|
||||
extern msink_module_t rtsp2_module2;
|
||||
extern msink_module_t rtsp2_module3;
|
||||
extern msink_module_t uvcd_module;
|
||||
#endif
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef MMF_SINK_MP3_FILE_H
|
||||
#define MMF_SINK_MP3_FILE_H
|
||||
#include "mmf_sink.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "platform_opts.h"
|
||||
#include "mp3/mp3_codec.h"
|
||||
#include "diag.h"
|
||||
#include "i2s_api.h"
|
||||
#include "analogin_api.h"
|
||||
#include <stdlib.h>
|
||||
#include "section_config.h"
|
||||
#if CONFIG_EXAMPLE_MP3_STREAM_SGTL5000
|
||||
#include "sgtl5000.h"
|
||||
#else
|
||||
#include "alc5651.h"
|
||||
#endif
|
||||
|
||||
void mp3_sink_mod_close(void* ctx);
|
||||
void* mp3_sink_mod_open(void);
|
||||
int mp3_sink_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int mp3_sink_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif /* MMF_SINK_MP3_FILE_H */
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
#ifndef _MMF_SINK_MP4_H_
|
||||
#define _MMF_SINK_MP4_H_
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include <platform/platform_stdlib.h>
|
||||
#include "basic_types.h"
|
||||
#include "platform_opts.h"
|
||||
#include "section_config.h"
|
||||
|
||||
#include "ff.h"
|
||||
#include <fatfs_ext/inc/ff_driver.h>
|
||||
#include "sdio_host.h"
|
||||
#include "sdio_combine.h"
|
||||
#include <disk_if/inc/sdcard.h>
|
||||
|
||||
#include "sockets.h"
|
||||
#include "lwip/netif.h"
|
||||
#if defined(CONFIG_PLATFORM_8195BHP)
|
||||
#include "mp4_muxer.h"
|
||||
#endif
|
||||
#ifdef CONFIG_PLATFORM_8195A
|
||||
#include "mp4_encap.h"
|
||||
#endif
|
||||
|
||||
void mp4_mod_close(void* ctx);
|
||||
void* mp4_mod_open(void);
|
||||
int mp4_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int mp4_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_MP4_SET_HEIGHT 0x10
|
||||
#define CMD_MP4_SET_WIDTH 0x11
|
||||
#define CMD_MP4_SET_FRAMERATE 0x12
|
||||
#define CMD_MP4_SET_GOP 0x13
|
||||
#define CMD_MP4_SET_SAMPLERATE 0x14
|
||||
#define CMD_MP4_SET_CHANNEL_CNT 0x15
|
||||
#define CMD_MP4_SET_ST_PERIOD 0x16
|
||||
#define CMD_MP4_SET_ST_TOTAL 0x17
|
||||
#define CMD_MP4_SET_ST_TYPE 0x18
|
||||
#define CMD_MP4_SET_ST_FILENAME 0x19
|
||||
#define CMD_MP4_SET_ST_START 0x1a
|
||||
#define CMD_MP4_SET_ST_STOP 0x1b
|
||||
#define CMD_MP4_SET_START_CB 0x1c
|
||||
#define CMD_MP4_SET_STOP_CB 0x1d
|
||||
#define CMD_MP4_GET_STATUS 0x1e
|
||||
|
||||
#define CMD_MP4_SET_FATFS_DRV_NUM 0x20
|
||||
#define CMD_MP4_SET_FATFS_DRV 0x21
|
||||
#define CMD_MP4_SET_FATFS_SD 0x22
|
||||
#define CMD_MP4_SET_FATFS_BUF_SIZE 0x23
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
#ifndef _MMF_SINK_AUDIO_H_
|
||||
#define _MMF_SINK_AUDIO_H_
|
||||
|
||||
#include "audio_api.h"
|
||||
#include "g711/g711_codec.h"
|
||||
|
||||
#include "mmf_source.h"
|
||||
#include "cmsis.h"
|
||||
//#include "shell.h"
|
||||
//#include "main.h"
|
||||
//#include "hal_cache.h"
|
||||
//#include "hal_timer.h"
|
||||
#include "cmsis_os.h"
|
||||
#include <math.h>
|
||||
#include "hal_timer.h"
|
||||
#include "sgpio_api.h"
|
||||
#include "audio_api.h"
|
||||
|
||||
typedef enum {
|
||||
AUDIO_MODE_UNKNOWN = -1,
|
||||
AUDIO_MODE_G711A = 1,
|
||||
AUDIO_MODE_G711U = 2
|
||||
}Audio_mode;
|
||||
|
||||
typedef struct {
|
||||
Audio_mode mode; //intend to encode as G711A or G711U
|
||||
int len; //data length
|
||||
// _sema RWSema;
|
||||
unsigned char *raw_data; //address of buffered data (not encoded
|
||||
int data_start; // a shift value to show where the data starts
|
||||
int data_end; // a shift value shows data ending
|
||||
}audio_buf_context;
|
||||
|
||||
void audio_mod_close(void* ctx);
|
||||
void* audio_mod_open(void);
|
||||
int audio_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int audio_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef _MMF_SINK_AUDIO_H_
|
||||
#define _MMF_SINK_AUDIO_H_
|
||||
|
||||
#include "mmf_wrapper/mmf_wrapper_pro_audio.h"
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
#ifndef _MMF_SINK_RTSP_H_
|
||||
#define _MMF_SINK_RTSP_H_
|
||||
|
||||
#include "rtsp/rtsp_api.h"
|
||||
#include "sockets.h"
|
||||
#include "lwip/netif.h"
|
||||
|
||||
void rtsp_mod_close(void* ctx);
|
||||
void* rtsp_mod_open(void);
|
||||
int rtsp_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int rtsp_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_RSTP_SET_FRAMERATE 0x10
|
||||
#define CMD_RSTP_SET_BITRATE 0x11
|
||||
#define CMD_RSTP_SET_SAMPLERATE 0x12
|
||||
#define CMD_RSTP_SET_CHANNEL 0x13
|
||||
#define CMD_RSTP_SET_SPS 0x14
|
||||
#define CMD_RSTP_SET_PPS 0x15
|
||||
#define CMD_RSTP_SET_LEVEL 0x16
|
||||
#define CMD_RSTP_SET_APPLY 0x17
|
||||
#define CMD_RSTP_SET_CODEC 0x18
|
||||
#define CMD_RSTP_SET_START_CB 0x19
|
||||
#define CMD_RSTP_SET_STOP_CB 0x1a
|
||||
#define CMD_RSTP_SET_PAUSE_CB 0x1b
|
||||
#define CMD_RSTP_SET_CUSTOM_CB 0x1c
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
#ifndef _MMF_SINK_RTSP2_H_
|
||||
#define _MMF_SINK_RTSP2_H_
|
||||
|
||||
#include "rtsp/rtsp_api.h"
|
||||
#include "sockets.h"
|
||||
#include "lwip/netif.h"
|
||||
|
||||
void rtsp2_mod_close(void* ctx);
|
||||
void* rtsp2_mod_open(void);
|
||||
int rtsp2_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int rtsp2_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_RSTP2_SELECT_CHANNEL 0x10
|
||||
#define CMD_RSTP2_SET_FRAMERATE 0x11
|
||||
#define CMD_RSTP2_SET_BITRATE 0x12
|
||||
#define CMD_RSTP2_SET_SAMPLERATE 0x13
|
||||
#define CMD_RSTP2_SET_CHANNEL 0x14
|
||||
#define CMD_RSTP2_SET_SPS 0x15
|
||||
#define CMD_RSTP2_SET_PPS 0x16
|
||||
#define CMD_RSTP2_SET_LEVEL 0x17
|
||||
#define CMD_RSTP2_SET_APPLY 0x18
|
||||
#define CMD_RSTP2_SET_CODEC 0x19
|
||||
#define CMD_RSTP2_SET_FLAG 0x1a
|
||||
#define CMD_RSTP2_SET_START_CB 0x1b
|
||||
#define CMD_RSTP2_SET_STOP_CB 0x1c
|
||||
#define CMD_RSTP2_SET_PAUSE_CB 0x1d
|
||||
#define CMD_RSTP2_SET_CUSTOM_CB 0x1e
|
||||
|
||||
#define TIME_SYNC_EN 0
|
||||
#define TIME_SYNC_DIS 1
|
||||
|
||||
#endif
|
||||
52
sdk/component/common/media/framework/mmf_source.h
Normal file
52
sdk/component/common/media/framework/mmf_source.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
#ifndef _MEDIA_H
|
||||
#define _MEDIA_H
|
||||
#include "cmsis_os.h"
|
||||
#include "mmf_common.h"
|
||||
#include "mmf_sink_modules/mmf_sink_list.h" // for source modules to set dest_sink
|
||||
|
||||
struct _media_source_module{
|
||||
void* (*create)(void);
|
||||
void (*destroy)(void*);
|
||||
int (*set_param)(void*, int, int);
|
||||
int (*handle)(void*, void*); // data handle, input output will cast to exch_buf_t
|
||||
};
|
||||
|
||||
typedef struct _media_source_output_queue{
|
||||
uint8_t index;
|
||||
msink_module_t * sink; // destination sink
|
||||
xQueueHandle output_qid;
|
||||
uint8_t sink_state; // SINK_STOP or SINK_RUN
|
||||
}msrc_output_queue_t;
|
||||
|
||||
typedef struct _media_source_context{
|
||||
xQueueHandle input_qid;
|
||||
msrc_output_queue_t* output_qid_list;
|
||||
//xQueueHandle output_qid;
|
||||
int state;
|
||||
xTaskHandle hdl_task; // queue service task
|
||||
|
||||
void* drv_priv;
|
||||
msrc_module_t * source;
|
||||
|
||||
uint8_t stream_on;
|
||||
uint32_t free_exch_buf_cnt;
|
||||
_sema stream_off_done_sema;
|
||||
uint8_t sink_cnt;
|
||||
uint8_t max_share_cnt;
|
||||
uint32_t share_cache_size;// if 0 -> don't use cache, use referece count
|
||||
uint32_t exch_buf_cnt;
|
||||
exch_buf_t* p_exbuf;
|
||||
}msrc_context;
|
||||
|
||||
void mmf_source_close(msrc_context* ctx);
|
||||
msrc_context* mmf_source_open(msrc_module_t *source, uint8_t sink_cnt, uint8_t max_share_cnt, uint32_t cache_size);
|
||||
int mmf_source_ctrl(msrc_context* ctx, int cmd, int arg);
|
||||
void mmf_source_sink_state_change(msrc_context* ctx, msink_module_t* sink, uint8_t state);
|
||||
char mmf_source_all_sink_off(msrc_context* ctx);
|
||||
void mmf_source_reset_exbuf_sending_list(exch_buf_t *exbuf);
|
||||
void mmf_source_add_exbuf_sending_list(exch_buf_t *exbuf, msink_module_t *sink);
|
||||
void mmf_source_add_exbuf_sending_list_all(exch_buf_t *exbuf);
|
||||
|
||||
// must be here
|
||||
#include "mmf_source_modules/mmf_source_list.h"
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef _MMF_SOURCE_AAC_ENCODE_H_
|
||||
#define _MMF_SOURCE_AAC_ENCODE_H_
|
||||
|
||||
#include "aac_util.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "aac_util.h"
|
||||
#include <math.h>
|
||||
#include "psych.h"
|
||||
#include "faac.h"
|
||||
|
||||
#include "sample_aacenc.h"
|
||||
#include "faac_api.h"
|
||||
|
||||
#include "memory_encoder.h"
|
||||
#include "encoder_buffer_handler.h"
|
||||
|
||||
#define AAC_MAX_BUFFER_COUNT 6
|
||||
#define AAC_DISABLE 0
|
||||
#define AAC_ENABLE 1
|
||||
|
||||
#define AAC_DEBUG_SHOW 0
|
||||
|
||||
struct aac_enc_buf_handle{
|
||||
struct enc_buf_data enc_data[AAC_MAX_BUFFER_COUNT];
|
||||
struct enc_list_handle enc_list;
|
||||
};
|
||||
|
||||
struct aacen_context
|
||||
{
|
||||
faacEncHandle hEncoder;
|
||||
int bit_length;
|
||||
int sample_rate;
|
||||
int channel;
|
||||
int samplesInput;
|
||||
int maxBytesOutput;
|
||||
void *source_addr;
|
||||
unsigned char *outputBuffer;
|
||||
struct mem_info mem_info_value;
|
||||
struct encoder_list_head encoder_lh;
|
||||
_sema encoder_output_sema;
|
||||
};
|
||||
|
||||
void* aac_encode_mod_open(void);
|
||||
void aacf_encode_close(void* ctx);
|
||||
int aacf_encode_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int aac_encode_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_AACEN_SET_BIT_LENGTH 0x10
|
||||
#define CMD_AACEN_SET_SAMPLE_RATE 0x11
|
||||
#define CMD_AACEN_SET_APPLY 0x12
|
||||
#define CMD_AACEN_SET_CHANEEL 0X13
|
||||
|
||||
#define CMD_AACEN_MEMORY_SIZE 0X30
|
||||
#define CMD_AACEN_BLOCK_SIZE 0X31
|
||||
#define CMD_AACEN_MAX_FRAME_SIZE 0X32
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef _MMF_SOURCE_AAC_FILE_H_
|
||||
#define _MMF_SOURCE_AAC_FILE_H_
|
||||
|
||||
#include "sample_aac.h"
|
||||
|
||||
void* aacf_mod_open(void);
|
||||
void aacf_mod_close(void* ctx);
|
||||
int aacf_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int aacf_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
#ifndef _MMF_SOURCE_GEO_H_
|
||||
#define _MMF_SOURCE_GEO_H_
|
||||
|
||||
#include "videodev2.h"
|
||||
#include "uvcvideo.h"
|
||||
#include "v4l2_intf.h"
|
||||
|
||||
#include "driver/geo/patch_uvc_geo.h"
|
||||
|
||||
void* geo_mod_open(void);
|
||||
void geo_mod_close(void* ctx);
|
||||
int geo_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int geo_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_GEO_SELECT_CHANNEL 0x10
|
||||
#define CMD_GEO_SET_HEIGHT 0x11
|
||||
#define CMD_GEO_SET_WIDTH 0x12
|
||||
#define CMD_GEO_SET_FRAMERATE 0x13
|
||||
#define CMD_GEO_SET_SAMPLERATE 0x14
|
||||
#define CMD_GEO_SET_CPZRATIO 0x15
|
||||
#define CMD_GEO_SET_FRAMETYPE 0x16
|
||||
#define CMD_GEO_SET_APPLY 0x17
|
||||
#define CMD_GEO_SET_CHANNEL 0x18
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
#ifndef _MMF_SOURCE_H1V6_H264_H_
|
||||
#define _MMF_SOURCE_H1V6_H264_H_
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
#include <platform_opts.h>
|
||||
#include "cmsis.h"
|
||||
#include "rtl8195bhp_video.h"
|
||||
#include "hal_encorder.h"
|
||||
#include "hal_cache.h"
|
||||
#include "section_config.h"
|
||||
|
||||
#include "memory_encoder.h"
|
||||
#include "hantro_h264_encoder.h"
|
||||
#include "isp_api.h"
|
||||
|
||||
void* h1v6_h264_open(void);
|
||||
void h1v6_h264_close(void* ctx);
|
||||
int h1v6_h264_set_param(void* ctx, int cmd, int arg);
|
||||
int h1v6_h264_handle(void* ctx, void* b);
|
||||
|
||||
struct h1v6_h264_rc_parm
|
||||
{
|
||||
unsigned int rcMode;
|
||||
unsigned int iQp; // for fixed QP
|
||||
unsigned int pQp; // for fixed QP
|
||||
unsigned int minQp; // for CBR/VBR
|
||||
unsigned int minIQp; // for CBR/VBR
|
||||
unsigned int maxQp; // for CBR/VBR
|
||||
};
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_HANTRO_H264_SET_HEIGHT 0x10
|
||||
#define CMD_HANTRO_H264_SET_WIDTH 0x11
|
||||
#define CMD_HANTRO_H264_BITRATE 0x12
|
||||
#define CMD_HANTRO_H264_FPS 0x13
|
||||
#define CMD_HANTRO_H264_GOP 0x14
|
||||
#define CMD_HANTRO_H264_RCMODE 0x15
|
||||
#define CMD_HANTRO_H264_SET_RCPARAM 0x16
|
||||
#define CMD_HANTRO_H264_GET_RCPARAM 0x17
|
||||
#define CMD_HANTRO_H264_APPLY 0x18
|
||||
|
||||
#define CMD_ISP_STREAMID 0X20
|
||||
#define CMD_ISP_HW_SLOT 0X21
|
||||
#define CMD_ISP_SW_SLOT 0X22
|
||||
|
||||
#define CMD_H1V6_MEMORY_SIZE 0X30
|
||||
#define CMD_H1V6_BLOCK_SIZE 0X31
|
||||
#define CMD_H1V6_MAX_FRAME_SIZE 0X32
|
||||
|
||||
#define CMD_SNAPSHOT_ENCODE_CB 0x40
|
||||
#define CMD_HANTRO_H264_CHANGE_PARM_CB 0x41
|
||||
#endif
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef _MMF_SOURCE_H1V6_JPEG_H_
|
||||
#define _MMF_SOURCE_H1V6_JPEG_H_
|
||||
|
||||
#include "hantro_jpeg_encoder.h"
|
||||
|
||||
void* h1v6_jpeg_open(void);
|
||||
void h1v6_jpeg_close(void* ctx);
|
||||
int h1v6_jpeg_set_param(void* ctx, int cmd, int arg);
|
||||
int h1v6_jpeg_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_HANTRO_JPEG_SET_HEIGHT 0x10
|
||||
#define CMD_HANTRO_JPEG_SET_WIDTH 0x11
|
||||
#define CMD_HANTRO_JPEG_LEVEL 0x12
|
||||
#define CMD_HANTRO_JPEG_FPS 0x13
|
||||
#define CMD_HANTRO_JPEG_HEADER_TYPE 0x14
|
||||
#define CMD_HANTRO_JPEG_APPLY 0x15
|
||||
|
||||
#define CMD_ISP_STREAMID 0X20
|
||||
#define CMD_ISP_HW_SLOT 0X21
|
||||
#define CMD_ISP_SW_SLOT 0X22
|
||||
|
||||
#define CMD_H1V6_MEMORY_SIZE 0X30
|
||||
#define CMD_H1V6_BLOCK_SIZE 0X31
|
||||
#define CMD_H1V6_MAX_FRAME_SIZE 0X32
|
||||
|
||||
#define CMD_SNAPSHOT_CB 0X40
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef _MMF_SOURCE_H264_FILE_H_
|
||||
#define _MMF_SOURCE_H264_FILE_H_
|
||||
#include "encoder_buffer_handler.h"
|
||||
#include "isp_api.h"
|
||||
|
||||
#define CMD_ISP_STREAMID 0x10
|
||||
#define CMD_ISP_HW_SLOT 0x11
|
||||
#define CMD_ISP_SW_SLOT 0x12
|
||||
#define CMD_ISP_HEIGHT 0x13
|
||||
#define CMD_ISP_WIDTH 0x14
|
||||
#define CMD_ISP_FPS 0x15
|
||||
#define CMD_ISP_FORMAT 0x16
|
||||
#define CMD_ISP_APPLY 0x17
|
||||
|
||||
struct uvc_format{
|
||||
int width;
|
||||
int height;
|
||||
int format;
|
||||
int fps;
|
||||
};
|
||||
|
||||
struct h1v6_nv12_context {
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
int fps;
|
||||
long index;
|
||||
int start;
|
||||
int format;
|
||||
int uvc_format;//0:yuy2 1:nv12 2:mjpg 3:jpeg
|
||||
struct isp_info isp_info_value;
|
||||
};
|
||||
#endif
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
#ifndef _MMF_SOURCE_H264_FILE_H_
|
||||
#define _MMF_SOURCE_H264_FILE_H_
|
||||
|
||||
#include "sample_h264.h"
|
||||
#include "memory_encoder.h"
|
||||
#include "encoder_buffer_handler.h"
|
||||
#include "timer_api.h"
|
||||
|
||||
#define H264F_DBG_SHOW 0
|
||||
#define H264F_MAX_BUFFER_COUNT 6
|
||||
|
||||
struct h264f_enc_buf_handle{
|
||||
struct enc_buf_data enc_data[H264F_MAX_BUFFER_COUNT];
|
||||
struct enc_list_handle enc_list;
|
||||
};
|
||||
|
||||
struct h264f_context
|
||||
{
|
||||
unsigned int fps;
|
||||
void *source_addr;
|
||||
unsigned char *outputBuffer;
|
||||
struct mem_info mem_info_value;
|
||||
struct encoder_list_head encoder_lh;
|
||||
_sema encoder_output_sema;
|
||||
};
|
||||
|
||||
void* h264f_mod_open(void);
|
||||
void h264f_mod_close(void* ctx);
|
||||
int h264f_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int h264f_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_H264F_SET_FPS 0x10
|
||||
#define CMD_H264F_SET_APPLY 0x11
|
||||
|
||||
#define CMD_H264F_MEMORY_SIZE 0X20
|
||||
#define CMD_H264F_BLOCK_SIZE 0X21
|
||||
#define CMD_H264F_MAX_FRAME_SIZE 0X22
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef _MMF_SOURCE_H264_UNIT_H_
|
||||
#define _MMF_SOURCE_H264_UNIT_H_
|
||||
|
||||
#include "h264_encode.h"
|
||||
|
||||
void* h264_unit_open(void);
|
||||
void h264_unit_close(void* ctx);
|
||||
int h264_unit_set_param(void* ctx, int cmd, int arg);
|
||||
int h264_unit_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef MMF_SOURCE_I2S_H
|
||||
#define MMF_SOURCE_I2S_H
|
||||
|
||||
#include "mmf_source.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
//#include "example_rtsp_server_i2s.h"
|
||||
#include "rtsp/rtsp_api.h"
|
||||
#include "sockets.h"
|
||||
#include "lwip/netif.h"
|
||||
|
||||
#include "i2s_api.h"
|
||||
#include "alc5651.h"
|
||||
#include "g711/g711_codec.h"
|
||||
#include "gpio_api.h" // mbed
|
||||
#include "gpio_irq_api.h"
|
||||
|
||||
#include <platform/platform_stdlib.h>
|
||||
#include "platform_opts.h"
|
||||
#include "dlist.h"
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
|
||||
#define I2S_DMA_PAGE_SIZE 320 // 2 ~ 4096
|
||||
#define I2S_DMA_PAGE_NUM 4 // Vaild number is 2~4
|
||||
#define RECV_PAGE_NUM I2S_DMA_PAGE_NUM
|
||||
|
||||
#define G711_FSIZE 160
|
||||
#define I2S_MODE_SWITCH PE_5
|
||||
|
||||
#define I2S_SCLK_PIN PC_1
|
||||
#define I2S_WS_PIN PC_0
|
||||
#define I2S_SD_PIN PC_2
|
||||
|
||||
void* i2s_mod_open(void);
|
||||
void i2s_mod_close(void* ctx);
|
||||
int i2s_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int i2s_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_I2S_SET_FRAMETYPE 0x10
|
||||
|
||||
#endif /* MMF_SOURCE_I2S_H */
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
#ifndef _MEDIA_MODULES_H
|
||||
#define _MEDIA_MODULES_H
|
||||
#include "../mmf_source.h"
|
||||
|
||||
//list all avaliable modules here
|
||||
extern msrc_module_t uvc_module;
|
||||
extern msrc_module_t geo_module;
|
||||
extern msrc_module_t mjpgf_module;
|
||||
extern msrc_module_t h264f_module;
|
||||
extern msrc_module_t h264_unit_module;
|
||||
extern msrc_module_t h264sd_module;
|
||||
extern msrc_module_t aacf_module;
|
||||
extern msrc_module_t pcmuf_module;
|
||||
extern msrc_module_t i2s_module;
|
||||
extern msrc_module_t rtp_src_module;
|
||||
extern msrc_module_t mp4de_module;
|
||||
extern msrc_module_t audio_module;
|
||||
extern msrc_module_t audio_wrapper_module;
|
||||
#ifdef CONFIG_PLATFORM_8195BHP
|
||||
extern msrc_module_t aac_enc_module;
|
||||
extern msrc_module_t h1v6_nv12_module;
|
||||
#endif
|
||||
#ifdef CONFIG_PLATFORM_8195BHP
|
||||
extern msrc_module_t h1v6_h264_module;
|
||||
extern msrc_module_t h1v6_jpeg_module;
|
||||
#endif
|
||||
#endif
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef _MMF_SOURCE_MJPG_FILE_H_
|
||||
#define _MMF_SOURCE_MJPG_FILE_H_
|
||||
|
||||
#include "sample_jpeg.h"
|
||||
|
||||
void* mjpgf_mod_open(void);
|
||||
void mjpgf_mod_close(void* ctx);
|
||||
int mjpgf_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int mjpgf_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef _MMF_SOURCE_MP4DE_H_
|
||||
#define _MMF_SOURCE_MP4DE_H_
|
||||
|
||||
|
||||
#define CMD_SET_SAMPLERATE 0x06
|
||||
#define CMD_SET_CHANNEL 0x07
|
||||
#define CMD_SET_CODEC 0x08
|
||||
#define CMD_SET_STREAMNUM 0x09
|
||||
#define CMD_SET_APPLY 0x1f
|
||||
|
||||
/*mp4 storage*/
|
||||
#define CMD_SET_ST_PERIOD 0X60
|
||||
#define CMD_SET_ST_TOTAL 0X61
|
||||
#define CMD_SET_ST_TYPE 0X62
|
||||
#define CMD_SET_ST_FILENAME 0x63
|
||||
#define CMD_SET_ST_START 0x64
|
||||
/*mp4 storage*/
|
||||
#define STORAGE_ALL 0
|
||||
#define STORAGE_VIDEO 1
|
||||
#define STORAGE_AUDIO 2
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef _MMF_SOURCE_PCMU_FILE_H_
|
||||
#define _MMF_SOURCE_PCMU_FILE_H_
|
||||
|
||||
#include "sample_pcmu.h"
|
||||
|
||||
void* pcmuf_mod_open(void);
|
||||
void pcmuf_mod_close(void* ctx);
|
||||
int pcmuf_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int pcmuf_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
#ifndef _MMF_SOURCE_PRO_AUDIO_H_
|
||||
#define _MMF_SOURCE_PRO_AUDIO_H_
|
||||
|
||||
#include "mmf_source.h"
|
||||
#include "cmsis.h"
|
||||
//#include "shell.h"
|
||||
//#include "main.h"
|
||||
//#include "hal_cache.h"
|
||||
//#include "hal_timer.h"
|
||||
#include "cmsis_os.h" // CMSIS RTOS header file
|
||||
#include <math.h>
|
||||
#include "hal_timer.h"
|
||||
#include "sgpio_api.h"
|
||||
#include "audio_api.h"
|
||||
//#include "g711/g711_codec.h"
|
||||
#include "../../../audio/g711/g711_codec.h"
|
||||
|
||||
#define DEBUG_LOG_BUF_SIZE 256
|
||||
#define G711_FSIZE 160
|
||||
#define RECV_PAGE_NUM 2
|
||||
|
||||
typedef enum {
|
||||
AUDIO_MODE_UNKNOWN = -1,
|
||||
AUDIO_MODE_G711A = 1,
|
||||
AUDIO_MODE_G711U = 2
|
||||
}Audio_mode;
|
||||
|
||||
typedef struct {
|
||||
Audio_mode mode; //intend to encode as G711A or G711U
|
||||
int len; //data length
|
||||
// _sema RWSema;
|
||||
unsigned char *raw_data; //address of buffered data (not encoded
|
||||
int data_start; // a shift value to show where the data starts
|
||||
int data_end; // a shift value shows data ending
|
||||
}audio_buf_context;
|
||||
|
||||
void* audio_mod_open(void);
|
||||
void audio_mod_close(void* ctx);
|
||||
int audio_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int audio_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_AUDIO_SET_FRAMETYPE 0x10
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef _MMF_SOURCE_PRO_AUDIO_H_
|
||||
#define _MMF_SOURCE_PRO_AUDIO_H_
|
||||
|
||||
#include "mmf_wrapper/mmf_wrapper_pro_audio.h"
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#ifndef _MMF_SOURCE_RTP_H_
|
||||
#define _MMF_SOURCE_RTP_H_
|
||||
|
||||
#include "wifi_conf.h"
|
||||
#include "lwip/api.h" //netconn use
|
||||
#include <lwip/sockets.h>
|
||||
#include "rtsp/rtp_api.h"
|
||||
|
||||
#define MAX_SELECT_SOCKET 8
|
||||
#define DEFAULT_RTP_PORT 16384
|
||||
|
||||
#if CONFIG_EXAMPLE_MP3_STREAM_RTP
|
||||
#define G711_BLK_SIZE (634)
|
||||
#define AUDIO_BUF_SIZE (646) //160 BYTE DATA + 12 BYTE RTP HEADER
|
||||
#elif CONFIG_EXAMPLE_MEDIA_BISTREAM || CONFIG_EXAMPLE_MEDIA_H264_AND_TWO_WAY_AUDIO || CONFIG_MEDIA_STREAMING_AND_RECORDING
|
||||
#define G711_BLK_SIZE (160)
|
||||
#define AUDIO_BUF_SIZE (1500) //160 BYTE DATA + 12 BYTE RTP HEADER
|
||||
#else
|
||||
#define G711_BLK_SIZE (160)
|
||||
#define AUDIO_BUF_SIZE (172) //160 BYTE DATA + 12 BYTE RTP HEADER
|
||||
#endif
|
||||
|
||||
#define AUDIO_BUF_DEPTH (4)
|
||||
|
||||
typedef struct rtp_exbuf_type
|
||||
{
|
||||
u8 buf[AUDIO_BUF_SIZE];
|
||||
int len;
|
||||
}rtp_exbuf_t;
|
||||
|
||||
typedef struct rtp_client_type
|
||||
{
|
||||
TaskHandle_t task_handle;
|
||||
xQueueHandle cache_queue;
|
||||
xQueueHandle done_queue;
|
||||
struct connect_context connect_ctx;
|
||||
_sema rtp_sema;
|
||||
u8 rtp_shutdown;
|
||||
u8 rtp_socket_closed;
|
||||
}rtp_client_t;
|
||||
|
||||
void* rtp_mod_open(void);
|
||||
void rtp_mod_close(void* ctx);
|
||||
int rtp_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int rtp_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_RTP_SET_PRIV_BUF 0x10
|
||||
#define CMD_RTP_SET_SINK_MODULE 0x11
|
||||
#define CMD_RTP_SET_SUPPORTED_PAYLOAD_TYPE 0x12
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#ifndef _MMF_SOURCE_UVC_H_
|
||||
#define _MMF_SOURCE_UVC_H_
|
||||
|
||||
#include "videodev2.h"
|
||||
#include "uvcvideo.h"
|
||||
#include "v4l2_driver.h"
|
||||
#include "uvc_intf.h"
|
||||
|
||||
void* uvc_mod_open(void);
|
||||
void uvc_mod_close(void* ctx);
|
||||
int uvc_mod_set_param(void* ctx, int cmd, int arg);
|
||||
int uvc_mod_handle(void* ctx, void* b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_UVC_SET_HEIGHT 0x10
|
||||
#define CMD_UVC_SET_WIDTH 0x11
|
||||
#define CMD_UVC_SET_FRAMERATE 0x12
|
||||
#define CMD_UVC_SET_CPZRATIO 0x13
|
||||
#define CMD_UVC_SET_FRAMETYPE 0x14
|
||||
#define CMD_UVC_SET_APPLY 0x15
|
||||
#define CMD_UVC_GET_STREAM_READY 0x16
|
||||
#define CMD_UVC_GET_STREAM_STATUS 0x17
|
||||
|
||||
#endif
|
||||
3200
sdk/component/common/media/framework/mmf_source_modules/sample_aac.h
Normal file
3200
sdk/component/common/media/framework/mmf_source_modules/sample_aac.h
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
34405
sdk/component/common/media/framework/mmf_source_modules/sample_h264.h
Normal file
34405
sdk/component/common/media/framework/mmf_source_modules/sample_h264.h
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
14596
sdk/component/common/media/framework/mmf_source_modules/sample_pcmu.h
Normal file
14596
sdk/component/common/media/framework/mmf_source_modules/sample_pcmu.h
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef _MMF_WRAPPER_PRO_AUDIO_H_
|
||||
#define _MMF_WRAPPER_PRO_AUDIO_H_
|
||||
|
||||
#include "g711/g711_codec.h"
|
||||
|
||||
#define ENABLE_SPEEX_AEC (1)
|
||||
#define ENABLE_AAC_ENC (1)
|
||||
#define ENABLE_AAC_DEC (1)
|
||||
|
||||
#define AUDIO_DMA_PAGE_NUM 2
|
||||
#define AUDIO_DMA_PAGE_SIZE (320)
|
||||
|
||||
#define G711_FSIZE (160)
|
||||
|
||||
void *audio_wrapper_open();
|
||||
void audio_wrapper_close();
|
||||
int audio_wrapper_set_param(void *ctx, int cmd, int arg);
|
||||
int audio_wrapper_sink_mod_handle(void *ctx, void *b);
|
||||
int audio_wrapper_source_mod_handle(void *ctx, void *b);
|
||||
|
||||
/*customized CMDs used for this module - all customized CMDs should start from 0x10 at least*/
|
||||
#define CMD_AUDIO_SET_SOURCE_FRAMETYPE 0x10
|
||||
#define CMD_AUDIO_SET_SINK_FRAMETYPE 0x11
|
||||
#define CMD_AUDIO_TX_ENABLE 0x12
|
||||
#define CMD_AUDIO_RX_ENABLE 0x13
|
||||
|
||||
#define CMD_AUDIO_AACEN_SET_SAMPLERATE 0x20
|
||||
#define CMD_AUDIO_AACEN_SET_CHANNEL 0x21
|
||||
#define CMD_AUDIO_AACEN_SET_APPLY 0x22
|
||||
|
||||
#define CMD_AUDIO_AACDE_SET_SAMPLERATE 0x30
|
||||
#define CMD_AUDIO_AACDE_SET_CHANNEL 0x31
|
||||
#define CMD_AUDIO_AACDE_SET_APPLY 0x32
|
||||
|
||||
#endif
|
||||
85
sdk/component/common/media/framework/sensor_service.h
Normal file
85
sdk/component/common/media/framework/sensor_service.h
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
#ifndef _SENSOR_SERVICE_H_
|
||||
#define _SENSOR_SERVICE_H_
|
||||
|
||||
void init_sensor_service(void);
|
||||
|
||||
/**
|
||||
* ambient light sensor init
|
||||
*
|
||||
* @param param For future use.
|
||||
* @return 0 for success
|
||||
*/
|
||||
int ambient_light_sensor_init(void *param);
|
||||
|
||||
/**
|
||||
* Turn on ambient light sensor power.
|
||||
*
|
||||
* Some ambient light sensor has low power mode and able to save power while not in use.
|
||||
*
|
||||
* @param enable 1 for power on, 0 for power off
|
||||
* @return 0 for success
|
||||
*/
|
||||
int ambient_light_sensor_power(int enable);
|
||||
|
||||
/**
|
||||
* Get LUX (illuminance) from ambient light sensor
|
||||
*
|
||||
* @param sensibility Range:0~100. Ambient light sensor is able to adjust the integration time to get more precision lux value
|
||||
* @return 0 for success
|
||||
*/
|
||||
int ambient_light_sensor_get_lux(int sensibility);
|
||||
|
||||
/**
|
||||
* IR cut init
|
||||
*
|
||||
* @param param For future use.
|
||||
* @return 0 for success
|
||||
*/
|
||||
int ir_cut_init(void *param);
|
||||
|
||||
/**
|
||||
* enable/disable IR cut
|
||||
*
|
||||
* @param enable 1 for enable, 0 for disable
|
||||
* @return 0 for success
|
||||
*/
|
||||
int ir_cut_enable(int enable);
|
||||
|
||||
/**
|
||||
* IR ctrl init
|
||||
*
|
||||
* @param param For future use.
|
||||
* @return 0 for success
|
||||
*/
|
||||
int ir_ctrl_init(void *param);
|
||||
|
||||
/**
|
||||
* Adjust IR LED brightness
|
||||
*
|
||||
* @param brightness range:0.0~1.0
|
||||
* @return 0 for success
|
||||
*/
|
||||
int ir_ctrl_set_brightness(float brightness);
|
||||
|
||||
/**
|
||||
* enable/disable gray mode
|
||||
*
|
||||
* In low light situation, we can turn on IR LED to get enough light.
|
||||
* But it also turns thing red. So we need enter gray mode.
|
||||
*
|
||||
* @param enable 1 for enable, 0 for disable
|
||||
* @return 0 for success
|
||||
*/
|
||||
int sensor_external_set_gray_mode(int enable);
|
||||
|
||||
/**
|
||||
* loop routine
|
||||
*
|
||||
* If sensor implementation are block functions without and task swith, then we can put some delay here to let other task do their jobs.
|
||||
* We can also put some routine related to sensor here.
|
||||
*
|
||||
* @return 0 for success
|
||||
*/
|
||||
int sensor_external_loop();
|
||||
|
||||
#endif
|
||||
10
sdk/component/common/media/framework/snapshot_tftp_handler.h
Normal file
10
sdk/component/common/media/framework/snapshot_tftp_handler.h
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef SNAPSHOT_TFTP_HANDLER_H
|
||||
#define SNAPSHOT_TFTP_HANDLER_H
|
||||
|
||||
void jpeg_snapshot_create_tftp_thread();
|
||||
void jpeg_snapshot_set_tftp_host_ip(char* addr_string);
|
||||
char* jpeg_snapshot_get_tftp_host_ip();
|
||||
void jpeg_snapshot_set_filename(char* file_name);
|
||||
char* jpeg_snapshot_get_filename();
|
||||
|
||||
#endif /* SNAPSHOT_TFTP_HANDLER_H */
|
||||
7
sdk/component/common/media/media_amebacam_broadcast.h
Normal file
7
sdk/component/common/media/media_amebacam_broadcast.h
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#ifndef __MEDIA_AMEBACAM_APP_BROADCAST_H__
|
||||
#define __MEDIA_AMEBACAM_APP_BROADCAST_H__
|
||||
|
||||
void media_amebacam_broadcast();
|
||||
|
||||
#endif //#ifndef __MEDIA_AMEBACAM_APP_BROADCAST_H__
|
||||
|
||||
35
sdk/component/common/media/mmfv2/memory_encoder.h
Normal file
35
sdk/component/common/media/mmfv2/memory_encoder.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef ENCODER_MEMORY_H
|
||||
#define ENCODER_MEMORY_H
|
||||
|
||||
#include "osdep_service.h"
|
||||
#include <stdint.h>
|
||||
|
||||
struct encoder_buffer{
|
||||
_mutex memory_lock;
|
||||
|
||||
uint8_t* pool;
|
||||
uint8_t* pool_table; // index table
|
||||
int32_t max_pool_blk; //
|
||||
|
||||
int32_t blk_size; // one block size
|
||||
int32_t mem_size; // total pool size
|
||||
|
||||
int32_t pool_blk_idx;
|
||||
int32_t tail_blk_idx; // tail empty block start index, it will set when pool_blk_idx reset to 0, clear to -1, when pool_blk_idx != 0 in realloc function
|
||||
int32_t rest_pool_blk;
|
||||
|
||||
int32_t blk_serial;
|
||||
|
||||
int32_t min_rest_blk;
|
||||
};
|
||||
|
||||
|
||||
void *memory_init(int size,int block_size);
|
||||
void memory_deinit(void *ctx);
|
||||
//u8* _memory_realloc(struct encoder_buffer *eb,uint8_t *addr,uint32_t size);
|
||||
u8* memory_realloc(void *ctx,uint8_t *addr,uint32_t size);
|
||||
void memory_free(void *ctx,uint8_t *addr);
|
||||
void* memory_alloc(void *ctx,uint32_t size);
|
||||
void dump_info(void *ctx);
|
||||
|
||||
#endif
|
||||
12
sdk/component/common/media/mmfv2/mmf2.h
Normal file
12
sdk/component/common/media/mmfv2/mmf2.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef MMF2_H
|
||||
#define MMF2_H
|
||||
|
||||
#include "mmf2_link.h"
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#include "mmf2_siso.h"
|
||||
#include "mmf2_miso.h"
|
||||
#include "mmf2_mimo.h"
|
||||
#include "mmf2_simo.h"
|
||||
|
||||
#endif
|
||||
112
sdk/component/common/media/mmfv2/mmf2_dbg.h
Normal file
112
sdk/component/common/media/mmfv2/mmf2_dbg.h
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
#ifndef __MMF_DBG_H_
|
||||
#define __MMF_DBG_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// Define debug group
|
||||
#define _MMF_DBG_RTSP_ 0x00000001
|
||||
#define _MMF_DBG_RTP_ 0x00000002
|
||||
#define _MMF_DBG_ISP_ 0x00000004
|
||||
#define _MMF_DBG_ENCODER_ 0x00000008
|
||||
|
||||
extern uint32_t ConfigDebugMmfErr;
|
||||
extern uint32_t ConfigDebugMmfWarn;
|
||||
extern uint32_t ConfigDebugMmfInfo;
|
||||
|
||||
#define DBG_MMF_ERR_MSG_ON(x) (ConfigDebugMmfErr |= (x))
|
||||
#define DBG_MMF_WARN_MSG_ON(x) (ConfigDebugMmfWarn |= (x))
|
||||
#define DBG_MMF_INFO_MSG_ON(x) (ConfigDebugMmfInfo |= (x))
|
||||
|
||||
#define DBG_MMF_ERR_MSG_OFF(x) (ConfigDebugMmfErr &= ~(x))
|
||||
#define DBG_MMF_WARN_MSG_OFF(x) (ConfigDebugMmfWarn &= ~(x))
|
||||
#define DBG_MMF_INFO_MSG_OFF(x) (ConfigDebugMmfInfo &= ~(x))
|
||||
|
||||
|
||||
#define RTSP_ERR_PREFIX "[RTSP Err]"
|
||||
#define RTSP_WARN_PREFIX "[RTSP Wrn]"
|
||||
#define RTSP_INFO_PREFIX "[RTSP Inf]"
|
||||
|
||||
#define RTP_ERR_PREFIX "[RTP Err]"
|
||||
#define RTP_WARN_PREFIX "[RTP Wrn]"
|
||||
#define RTP_INFO_PREFIX "[RTP Inf]"
|
||||
|
||||
#define ISP_ERR_PREFIX "[ISP Err]"
|
||||
#define ISP_WARN_PREFIX "[ISP Wrn]"
|
||||
#define ISP_INFO_PREFIX "[ISP Inf]"
|
||||
|
||||
#define ENCODER_ERR_PREFIX "[Enc Err]"
|
||||
#define ENCODER_WARN_PREFIX "[Enc Wrn]"
|
||||
#define ENCODER_INFO_PREFIX "[Enc Inf]"
|
||||
|
||||
|
||||
#define MMF_PRINTK printf
|
||||
|
||||
#define RTSP_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_RTSP_) \
|
||||
MMF_PRINTK("\n\r" RTSP_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define RTP_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_RTP_) \
|
||||
MMF_PRINTK("\n\r" RTP_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#ifdef ISP_DBG_ERROR
|
||||
#undef ISP_DBG_ERROR
|
||||
#define ISP_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_ISP_) \
|
||||
MMF_PRINTK("\n\r" ISP_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#endif
|
||||
#define ENCODER_DBG_ERROR(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfErr&_MMF_DBG_ENCODER_) \
|
||||
MMF_PRINTK("\n\r" ENCODER_ERR_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
|
||||
// DBG_WARNING
|
||||
#define RTSP_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_RTSP_) \
|
||||
MMF_PRINTK("\n\r" RTSP_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define RTP_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_RTP_) \
|
||||
MMF_PRINTK("\n\r" RTP_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ISP_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_ISP_) \
|
||||
MMF_PRINTK("\n\r" ISP_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ENCODER_DBG_WARNING(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfWarn&_MMF_DBG_ENCODER_) \
|
||||
MMF_PRINTK("\n\r" ENCODER_WARN_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
|
||||
// DBG_INFO
|
||||
#define RTSP_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_RTSP_) \
|
||||
MMF_PRINTK("\n\r" RTSP_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define RTP_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_RTP_) \
|
||||
MMF_PRINTK("\n\r" RTP_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ISP_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_ISP_) \
|
||||
MMF_PRINTK("\n\r" ISP_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#define ENCODER_DBG_INFO(...) \
|
||||
do { \
|
||||
if (ConfigDebugMmfInfo&_MMF_DBG_ENCODER_) \
|
||||
MMF_PRINTK("\n\r" ENCODER_INFO_PREFIX __VA_ARGS__); \
|
||||
}while(0)
|
||||
#endif
|
||||
|
||||
48
sdk/component/common/media/mmfv2/mmf2_link.h
Normal file
48
sdk/component/common/media/mmfv2/mmf2_link.h
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#ifndef MMF2_INTERCONNECT_H
|
||||
#define MMF2_INTERCONNECT_H
|
||||
|
||||
// MMIC : media moudle inter connection
|
||||
//-----------------------------------------------------------------------------
|
||||
// Inter connection module command
|
||||
#define MMIC_CMD_ADD_INPUT 0x00
|
||||
#define MMIC_CMD_ADD_INPUT0 0x00
|
||||
#define MMIC_CMD_ADD_INPUT1 0x01
|
||||
#define MMIC_CMD_ADD_INPUT2 0x02
|
||||
#define MMIC_CMD_ADD_INPUT3 0x03
|
||||
|
||||
#define MMIC_CMD_ADD_OUTPUT 0x10
|
||||
#define MMIC_CMD_ADD_OUTPUT0 0x10
|
||||
#define MMIC_CMD_ADD_OUTPUT1 0x11
|
||||
#define MMIC_CMD_ADD_OUTPUT2 0x12
|
||||
#define MMIC_CMD_ADD_OUTPUT3 0x13
|
||||
|
||||
#define MMIC_CMD_SET_STACKSIZE 0x20
|
||||
#define MMIC_CMD_SET_TASKPRIORITY 0x21
|
||||
|
||||
#define MMIC_STAT_EXIT 0x00
|
||||
#define MMIC_STAT_RUN 0x01
|
||||
#define MMIC_STAT_PAUSE 0x02
|
||||
#define MMIC_STAT_SET_EXIT 0x10
|
||||
#define MMIC_STAT_SET_PAUSE 0x20
|
||||
#define MMIC_STAT_SET_RUN 0x40
|
||||
|
||||
//
|
||||
#define MM_OUTPUT_MASK 0xf0
|
||||
#define MM_OUTPUT 0x10
|
||||
#define MM_OUTPUT0 0x10
|
||||
#define MM_OUTPUT1 0x20
|
||||
#define MM_OUTPUT2 0x40
|
||||
#define MM_OUTPUT3 0x80
|
||||
#define MM_INPUT_MASK 0x0f
|
||||
#define MM_INPUT 0x01
|
||||
#define MM_INPUT0 0x01
|
||||
#define MM_INPUT1 0x02
|
||||
#define MM_INPUT2 0x04
|
||||
#define MM_INPUT3 0x08
|
||||
|
||||
#define MMIC_DEP_INPUT0 MM_INPUT0
|
||||
#define MMIC_DEP_INPUT1 MM_INPUT1
|
||||
#define MMIC_DEP_INPUT2 MM_INPUT2
|
||||
#define MMIC_DEP_INPUT3 MM_INPUT3
|
||||
|
||||
#endif
|
||||
61
sdk/component/common/media/mmfv2/mmf2_mimo.h
Normal file
61
sdk/component/common/media/mmfv2/mmf2_mimo.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef MMF2_MIMO_H
|
||||
#define MMF2_MIMO_H
|
||||
#include <stdint.h>
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#include "dlist.h"
|
||||
|
||||
typedef struct mm_mimo_item_s
|
||||
{
|
||||
// list node
|
||||
struct list_head node;
|
||||
|
||||
// data
|
||||
uint32_t data;
|
||||
|
||||
// ref count
|
||||
uint32_t ref_cnt;
|
||||
|
||||
// log
|
||||
uint32_t use_log;
|
||||
}mm_mimo_item_t;
|
||||
|
||||
typedef struct mm_mimo_queue_s{
|
||||
// list entry
|
||||
struct list_head head;
|
||||
|
||||
// protection
|
||||
SemaphoreHandle_t lock;
|
||||
}mm_mimo_queue_t;
|
||||
|
||||
typedef struct mm_mimo_s{
|
||||
int input_cnt;
|
||||
|
||||
// depend on intput count
|
||||
mm_context_t *input[4];
|
||||
mm_mimo_queue_t queue[4];
|
||||
|
||||
int output_cnt;
|
||||
|
||||
// depend on output count
|
||||
uint32_t pause_mask[4];
|
||||
mm_context_t *output[4]; // output module context
|
||||
uint32_t output_dep[4]; // output depend on which input, bit mask
|
||||
uint32_t input_mask[4]; // convert from output_dep, input referenced by which output, bit mask
|
||||
uint32_t status[4];
|
||||
uint32_t stack_size;
|
||||
uint32_t task_priority;
|
||||
xTaskHandle task[4];
|
||||
}mm_mimo_t;
|
||||
|
||||
extern int mimo_start(mm_mimo_t* mimo);
|
||||
extern void mimo_stop(mm_mimo_t* mimo);
|
||||
extern void mimo_pause(mm_mimo_t* mimo, uint32_t pause_mask);
|
||||
extern void mimo_resume(mm_mimo_t* mimo);
|
||||
extern void mimo_ctrl(mm_mimo_t* mimo, uint32_t cmd, uint32_t arg1, uint32_t arg2);
|
||||
extern mm_mimo_t* mimo_create(void);
|
||||
extern mm_mimo_t* mimo_delete(mm_mimo_t* mimo);
|
||||
|
||||
#endif
|
||||
29
sdk/component/common/media/mmfv2/mmf2_miso.h
Normal file
29
sdk/component/common/media/mmfv2/mmf2_miso.h
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef MMF2_MISO_H
|
||||
#define MMF2_MISO_H
|
||||
#include <stdint.h>
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include "mmf2_module.h"
|
||||
|
||||
typedef struct mm_miso_s{
|
||||
int input_cnt;
|
||||
mm_context_t *input[4]; // max 4 input
|
||||
|
||||
mm_context_t *output;
|
||||
|
||||
uint32_t pause_mask;
|
||||
uint32_t status;
|
||||
uint32_t stack_size;
|
||||
uint32_t task_priority;
|
||||
xTaskHandle task;
|
||||
}mm_miso_t;
|
||||
|
||||
extern int miso_start(mm_miso_t* miso);
|
||||
extern void miso_stop(mm_miso_t* miso);
|
||||
extern void miso_pause(mm_miso_t* miso, uint32_t pause_mask);
|
||||
extern void miso_resume(mm_miso_t* miso);
|
||||
extern void miso_ctrl(mm_miso_t* miso, uint32_t cmd, uint32_t arg1, uint32_t arg2);
|
||||
extern mm_miso_t* miso_create(void);
|
||||
extern mm_miso_t* miso_delete(mm_miso_t* miso);
|
||||
|
||||
#endif
|
||||
124
sdk/component/common/media/mmfv2/mmf2_module.h
Normal file
124
sdk/component/common/media/mmfv2/mmf2_module.h
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
#ifndef MMF2_MODULE_H
|
||||
#define MMF2_MODULE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <FreeRTOS.h>
|
||||
#include <semphr.h>
|
||||
|
||||
#include <diag.h>
|
||||
#if defined(CONFIG_PLATFORM_8721D)
|
||||
#ifndef rt_printf
|
||||
#define rt_printf printf
|
||||
#endif
|
||||
#define mm_printf rt_printf
|
||||
#else
|
||||
#define mm_printf(...) do{ __disable_irq(); rt_printf(__VA_ARGS__); __enable_irq();}while(0)
|
||||
#endif
|
||||
|
||||
// MM : media module
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define MM_TYPE_NONE 0x00 // not create output queue if output type is none
|
||||
|
||||
#define MM_MASK_SRC 0x10
|
||||
#define MM_TYPE_VSRC 0x10 // ISP or file
|
||||
#define MM_TYPE_ASRC 0x11 // I2S or file or RTP
|
||||
|
||||
#define MM_MASK_DSP 0x20
|
||||
#define MM_TYPE_VDSP 0x20 // H264 ENC or JPEG ENC
|
||||
#define MM_TYPE_ADSP 0x21 // AAC ENC or AAC DEC
|
||||
|
||||
#define MM_MASK_SINK 0x40
|
||||
#define MM_TYPE_VSINK 0x41 // RTSP or file
|
||||
#define MM_TYPE_ASINK 0x42 // RTSP or I2S or file
|
||||
#define MM_TYPE_AVSINK 0x43 // RTSP or file
|
||||
|
||||
|
||||
#define MM_CMD_INIT_QUEUE_ITEMS 0x00 // init static queue item
|
||||
#define MM_CMD_SET_QUEUE_LEN 0x01 // set one queue's length
|
||||
#define MM_CMD_SET_QUEUE_NUM 0x02 // set number of queue (multiple queue)
|
||||
#define MM_CMD_SELECT_QUEUE 0x03 // select queue from queue0 ~ queue3
|
||||
#define MM_CMD_CLEAR_QUEUE_ITEMS 0x04 // clear queue item
|
||||
|
||||
|
||||
#define MM_CMD_MODULE_BASE 0x80
|
||||
#define MM_MODULE_CMD(x) (MM_CMD_MODULE_BASE+(x))
|
||||
|
||||
#define MM_STAT_INIT 0x00
|
||||
#define MM_STAT_READY 0x01
|
||||
#define MM_STAT_ERROR 0x10
|
||||
#define MM_STAT_ERR_MALLOC 0x11
|
||||
#define MM_STAT_ERR_QUEUE 0x12
|
||||
#define MM_STAT_ERR_NEWITEM 0x13
|
||||
|
||||
/* common error code for MMF */
|
||||
#define EAGAIN 11
|
||||
#define EFAULT 14
|
||||
#define EINVAL 22
|
||||
#define ENOSR 63
|
||||
|
||||
typedef struct mm_module_s{
|
||||
void* (*create)(void*);
|
||||
void* (*destroy)(void*);
|
||||
int (*control)(void*, int, int);
|
||||
int (*handle)(void*, void*, void*); // void* ctx, void* input, void *output , return ( <0 error code, >0 success with output length , =0 success)
|
||||
|
||||
void* (*new_item)(void*); // malloc
|
||||
void* (*del_item)(void*, void*); // free
|
||||
void* (*rsz_item)(void*, void*, int); // resize (only shrink)
|
||||
|
||||
uint32_t output_type;
|
||||
uint32_t module_type;
|
||||
char* name;
|
||||
}mm_module_t;
|
||||
|
||||
typedef struct mm_conveyor_s{
|
||||
xQueueHandle output_ready;
|
||||
xQueueHandle output_recycle;
|
||||
int32_t item_num;
|
||||
}mm_conveyor_t;
|
||||
|
||||
typedef struct mm_contex_s{
|
||||
union{
|
||||
struct{
|
||||
xQueueHandle output_ready;
|
||||
xQueueHandle output_recycle;
|
||||
int32_t item_num;
|
||||
};
|
||||
mm_conveyor_t port[4];
|
||||
};
|
||||
|
||||
mm_module_t* module;
|
||||
|
||||
// private data structure for created instance
|
||||
void* priv;
|
||||
|
||||
// module state
|
||||
uint32_t state;
|
||||
int32_t queue_num; // number of queue
|
||||
int32_t curr_queue;
|
||||
}mm_context_t;
|
||||
|
||||
#define MMQI_FLAG_STATIC 0x00
|
||||
#define MMQI_FLAG_DYNAMIC 0x01
|
||||
#define MMQI_FLAG_READY 0x10
|
||||
#define MMQI_FLAG_USED 0x20
|
||||
|
||||
typedef struct mm_queue_item_s{
|
||||
uint32_t flag;
|
||||
uint32_t data_addr; // store data address
|
||||
|
||||
uint32_t timestamp;
|
||||
uint32_t hw_timestamp;
|
||||
uint32_t type;
|
||||
uint32_t size;
|
||||
uint32_t index; // for RTSP
|
||||
uint32_t in_idx; // input index
|
||||
}mm_queue_item_t;
|
||||
|
||||
|
||||
extern void mm_module_ctrl(mm_context_t *ctx, int cmd, int arg);
|
||||
extern mm_context_t* mm_module_open(mm_module_t *mm );
|
||||
extern mm_context_t* mm_module_close(mm_context_t *ctx);
|
||||
|
||||
#endif
|
||||
61
sdk/component/common/media/mmfv2/mmf2_simo.h
Normal file
61
sdk/component/common/media/mmfv2/mmf2_simo.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef MMF2_SIMO_H
|
||||
#define MMF2_SIMO_H
|
||||
#include <stdint.h>
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include <semphr.h>
|
||||
#include "dlist.h"
|
||||
#include "mmf2_module.h"
|
||||
|
||||
|
||||
typedef struct mm_simo_item_s
|
||||
{
|
||||
// list node
|
||||
struct list_head node;
|
||||
|
||||
// data
|
||||
uint32_t data;
|
||||
|
||||
// ref count
|
||||
uint32_t ref_cnt;
|
||||
|
||||
// log
|
||||
uint32_t use_log;
|
||||
}mm_simo_item_t;
|
||||
|
||||
typedef struct mm_simo_queue_s{
|
||||
// list entry
|
||||
struct list_head head;
|
||||
|
||||
// item counter
|
||||
int count;
|
||||
|
||||
// protection
|
||||
SemaphoreHandle_t lock;
|
||||
}mm_simo_queue_t;
|
||||
|
||||
typedef struct mm_simo_s{
|
||||
mm_context_t *input;
|
||||
|
||||
int output_cnt;
|
||||
mm_context_t *output[4];
|
||||
|
||||
// internal queue to handle reference count and usage log
|
||||
mm_simo_queue_t queue;
|
||||
|
||||
uint32_t pause_mask;
|
||||
uint32_t status[4];
|
||||
uint32_t stack_size;
|
||||
uint32_t task_priority;
|
||||
xTaskHandle task[4];
|
||||
}mm_simo_t;
|
||||
|
||||
extern int simo_start(mm_simo_t* simo);
|
||||
extern void simo_stop(mm_simo_t* simo);
|
||||
extern void simo_pause(mm_simo_t* simo, uint32_t pause_mask);
|
||||
extern void simo_resume(mm_simo_t* simo);
|
||||
extern void simo_ctrl(mm_simo_t* simo, uint32_t cmd, uint32_t arg1, uint32_t arg2);
|
||||
extern mm_simo_t* simo_create(void);
|
||||
extern mm_simo_t* simo_delete(mm_simo_t* simo);
|
||||
|
||||
#endif
|
||||
30
sdk/component/common/media/mmfv2/mmf2_siso.h
Normal file
30
sdk/component/common/media/mmfv2/mmf2_siso.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef MMF2_SISO_H
|
||||
#define MMF2_SISO_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include "mmf2_module.h"
|
||||
|
||||
|
||||
typedef struct mm_siso_s{
|
||||
mm_context_t *input;
|
||||
mm_context_t *output;
|
||||
int input_port_idx; // default is 0, can be set to 1 or 2 or 3 if source module support 2 or more output queue
|
||||
|
||||
uint32_t status;
|
||||
|
||||
uint32_t stack_size;
|
||||
uint32_t task_priority;
|
||||
xTaskHandle task;
|
||||
}mm_siso_t;
|
||||
|
||||
extern int siso_start(mm_siso_t* siso);
|
||||
extern void siso_stop(mm_siso_t* siso);
|
||||
extern void siso_pause(mm_siso_t* siso);
|
||||
extern void siso_resume(mm_siso_t* siso);
|
||||
extern void siso_ctrl(mm_siso_t* siso, uint32_t cmd, uint32_t arg1, uint32_t arg2);
|
||||
extern mm_siso_t* siso_create(void);
|
||||
extern mm_siso_t* siso_delete(mm_siso_t* siso);
|
||||
|
||||
#endif
|
||||
50
sdk/component/common/media/mmfv2/module_aac.h
Normal file
50
sdk/component/common/media/mmfv2/module_aac.h
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#ifndef _MODULE_AAC_H
|
||||
#define _MODULE_AAC_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#include "faac.h"
|
||||
|
||||
#define CMD_AAC_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_AAC_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_AAC_SAMPLERATE MM_MODULE_CMD(0x02)
|
||||
#define CMD_AAC_CHANNEL MM_MODULE_CMD(0x03)
|
||||
#define CMD_AAC_BITLENGTH MM_MODULE_CMD(0x04)
|
||||
#define CMD_AAC_MEMORY_SIZE MM_MODULE_CMD(0x07)
|
||||
#define CMD_AAC_BLOCK_SIZE MM_MODULE_CMD(0x08)
|
||||
#define CMD_AAC_MAX_FRAME_SIZE MM_MODULE_CMD(0x09)
|
||||
#define CMD_AAC_INIT_MEM_POOL MM_MODULE_CMD(0x0a)
|
||||
|
||||
#define CMD_AAC_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
|
||||
typedef struct aac_param_s{
|
||||
uint32_t sample_rate; // 8000
|
||||
uint32_t channel; // 1
|
||||
uint32_t bit_length; // 16
|
||||
uint32_t mpeg_version; // 16
|
||||
|
||||
uint32_t mem_total_size;
|
||||
uint32_t mem_block_size;
|
||||
uint32_t mem_frame_size;
|
||||
|
||||
int samples_input;
|
||||
int max_bytes_output;
|
||||
//...
|
||||
}aac_params_t;
|
||||
|
||||
typedef struct aac_ctx_s{
|
||||
void* parent;
|
||||
|
||||
faacEncHandle faac_enc;
|
||||
|
||||
void* mem_pool;
|
||||
aac_params_t params;
|
||||
|
||||
uint8_t *cache;
|
||||
uint32_t cache_idx;
|
||||
}aac_ctx_t;
|
||||
|
||||
extern mm_module_t aac_module;
|
||||
|
||||
#endif
|
||||
46
sdk/component/common/media/mmfv2/module_aad.h
Normal file
46
sdk/component/common/media/mmfv2/module_aad.h
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#ifndef _MODULE_AAD_H
|
||||
#define _MODULE_AAD_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "aacdec.h"
|
||||
|
||||
#define CMD_AAD_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_AAD_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_AAD_SAMPLERATE MM_MODULE_CMD(0x02)
|
||||
#define CMD_AAD_CHANNEL MM_MODULE_CMD(0x03)
|
||||
#define CMD_AAD_STREAM_TYPE MM_MODULE_CMD(0x04)
|
||||
|
||||
|
||||
#define CMD_AAD_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
|
||||
#define TYPE_ADTS 0
|
||||
#define TYPE_RTP_RAW 1
|
||||
#define TYPE_TS 2
|
||||
|
||||
typedef struct aad_param_s{
|
||||
uint32_t type;
|
||||
uint32_t sample_rate; // 8000
|
||||
uint32_t channel; // 1
|
||||
}aad_params_t;
|
||||
|
||||
typedef void (*aad_parser_t)(void*, void*, int);
|
||||
|
||||
typedef struct aad_ctx_s{
|
||||
void* parent;
|
||||
|
||||
HAACDecoder aad;
|
||||
|
||||
aad_params_t params;
|
||||
|
||||
uint16_t data_cache_len;
|
||||
uint16_t data_cache_size;
|
||||
uint8_t *data_cache;
|
||||
uint8_t *decode_buf;
|
||||
|
||||
aad_parser_t parser;
|
||||
}aad_ctx_t;
|
||||
|
||||
extern mm_module_t aad_module;
|
||||
|
||||
#endif
|
||||
64
sdk/component/common/media/mmfv2/module_array.h
Normal file
64
sdk/component/common/media/mmfv2/module_array.h
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#ifndef _MODULE_ARRAY_H
|
||||
#define _MODULE_ARRAY_H
|
||||
|
||||
#include <FreeRTOS.h>
|
||||
#include <Freertos_service.h>
|
||||
#include <task.h>
|
||||
#include <stdint.h>
|
||||
#include "timer_api.h"
|
||||
|
||||
#define DEFAULT_G711_LEN 160
|
||||
#define DEFAULT_AAC_LEN 2048
|
||||
|
||||
#define ARRAY_MODE_ONCE 0
|
||||
#define ARRAY_MODE_LOOP 1
|
||||
|
||||
#define CMD_ARRAY_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_ARRAY_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_ARRAY_SET_ARRAY MM_MODULE_CMD(0x02)
|
||||
#define CMD_ARRAY_SET_MODE MM_MODULE_CMD(0x03)
|
||||
#define CMD_ARRAY_GET_STATE MM_MODULE_CMD(0x04)
|
||||
#define CMD_ARRAY_STREAMING MM_MODULE_CMD(0x05)
|
||||
|
||||
|
||||
#define CMD_ARRAY_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
|
||||
typedef struct array_param_s{
|
||||
uint32_t type;
|
||||
uint32_t codec_id;
|
||||
uint8_t mode;
|
||||
union{
|
||||
struct array_video_param_s{
|
||||
uint32_t fps;
|
||||
uint8_t h264_nal_size;
|
||||
}v;
|
||||
struct array_audio_param_s{
|
||||
uint32_t channel;
|
||||
uint32_t samplerate;
|
||||
uint32_t sample_bit_length;
|
||||
uint32_t frame_size;
|
||||
}a;
|
||||
}u;
|
||||
}array_params_t;
|
||||
|
||||
typedef struct array_s{
|
||||
uint32_t data_addr;
|
||||
uint32_t data_len;
|
||||
uint32_t data_offset;
|
||||
}array_t;
|
||||
|
||||
typedef struct array_ctx_s{
|
||||
void* parent;
|
||||
TaskHandle_t task;
|
||||
_sema up_sema;
|
||||
gtimer_t frame_timer;
|
||||
uint32_t frame_timer_period; // us
|
||||
|
||||
array_params_t params;
|
||||
array_t array;
|
||||
// flag
|
||||
int stop;
|
||||
}array_ctx_t;
|
||||
|
||||
extern mm_module_t array_module;
|
||||
#endif
|
||||
66
sdk/component/common/media/mmfv2/module_audio.h
Normal file
66
sdk/component/common/media/mmfv2/module_audio.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
#ifndef _MODULE_AUDIO_H
|
||||
#define _MODULE_AUDIO_H
|
||||
|
||||
#include "mmf2_module.h"
|
||||
#if defined(CONFIG_PLATFORM_8721D) //amebad
|
||||
#include "ameba_soc.h"
|
||||
#include "rl6548.h"
|
||||
#else //amebapro use audio api
|
||||
#include "audio_api.h"
|
||||
#endif
|
||||
#define ENABLE_SPEEX_AEC 1
|
||||
|
||||
#define CMD_AUDIO_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_AUDIO_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_AUDIO_SET_SAMPLERATE MM_MODULE_CMD(0x02)
|
||||
#define CMD_AUDIO_SET_WORDLENGTH MM_MODULE_CMD(0x03)
|
||||
#define CMD_AUDIO_SET_MICGAIN MM_MODULE_CMD(0x04)
|
||||
#define CMD_AUDIO_SET_AES MM_MODULE_CMD(0x05)
|
||||
|
||||
#define CMD_AUDIO_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
|
||||
|
||||
#if defined(CONFIG_PLATFORM_8721D) //amebad
|
||||
typedef struct {
|
||||
GDMA_InitTypeDef SpTxGdmaInitStruct; //Pointer to GDMA_InitTypeDef
|
||||
GDMA_InitTypeDef SpRxGdmaInitStruct; //Pointer to GDMA_InitTypeDef
|
||||
}SP_GDMA_STRUCT, *pSP_GDMA_STRUCT;
|
||||
|
||||
typedef struct audio_param_s{
|
||||
uint32_t sample_rate;
|
||||
uint32_t word_length;
|
||||
uint32_t mono_stereo;
|
||||
uint32_t direction;
|
||||
uint32_t enable_aec; // 0
|
||||
uint32_t mix_mode; // 0
|
||||
}audio_params_t;
|
||||
#else //amebapro
|
||||
typedef struct audio_param_s{
|
||||
audio_sr sample_rate; // ASR_8KHZ
|
||||
audio_wl word_length; // WL_16BIT
|
||||
audio_mic_gain mic_gain; // MIC_40DB
|
||||
|
||||
int channel; // 1
|
||||
int enable_aec; // 0
|
||||
int mix_mode; // 0
|
||||
//...
|
||||
}audio_params_t;
|
||||
#endif
|
||||
|
||||
typedef struct audio_ctx_s{
|
||||
void* parent;
|
||||
#if !defined(CONFIG_PLATFORM_8721D) //amebapro
|
||||
audio_t* audio;
|
||||
#endif
|
||||
audio_params_t params;
|
||||
|
||||
uint32_t sample_rate;
|
||||
uint8_t word_length; // Byte
|
||||
// for AEC
|
||||
TaskHandle_t aec_rx_task;
|
||||
xSemaphoreHandle aec_rx_done_sema;
|
||||
}audio_ctx_t;
|
||||
|
||||
|
||||
extern mm_module_t audio_module;
|
||||
#endif
|
||||
32
sdk/component/common/media/mmfv2/module_g711.h
Normal file
32
sdk/component/common/media/mmfv2/module_g711.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef _MODULE_G711_H
|
||||
#define _MODULE_G711_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define CMD_G711_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_G711_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_G711_CODECID MM_MODULE_CMD(0x02)
|
||||
#define CMD_G711_LENGTH MM_MODULE_CMD(0x03)
|
||||
#define CMD_G711_CODECMODE MM_MODULE_CMD(0x04)
|
||||
|
||||
|
||||
#define CMD_G711_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
|
||||
#define G711_ENCODE 0
|
||||
#define G711_DECODE 1
|
||||
|
||||
typedef struct g711_param_s{
|
||||
uint32_t codec_id; // AV_CODEC_ID_PCMA or AV_CODEC_ID_PCMU
|
||||
uint32_t buf_len; // output buffer length
|
||||
uint32_t mode; // decode or encode
|
||||
}g711_params_t;
|
||||
|
||||
typedef struct g711_ctx_s{
|
||||
void* parent;
|
||||
|
||||
g711_params_t params;
|
||||
}g711_ctx_t;
|
||||
|
||||
extern mm_module_t g711_module;
|
||||
|
||||
#endif
|
||||
76
sdk/component/common/media/mmfv2/module_h264.h
Normal file
76
sdk/component/common/media/mmfv2/module_h264.h
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
#ifndef _MODULE_H264_H
|
||||
#define _MODULE_H264_H
|
||||
|
||||
#include "h264_encoder.h"
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#define CMD_H264_SET_PARAMS MM_MODULE_CMD(0x00)
|
||||
#define CMD_H264_GET_PARAMS MM_MODULE_CMD(0x01)
|
||||
#define CMD_H264_SET_HEIGHT MM_MODULE_CMD(0x02)
|
||||
#define CMD_H264_SET_WIDTH MM_MODULE_CMD(0x03)
|
||||
#define CMD_H264_BITRATE MM_MODULE_CMD(0x04)
|
||||
#define CMD_H264_FPS MM_MODULE_CMD(0x05)
|
||||
#define CMD_H264_GOP MM_MODULE_CMD(0x06)
|
||||
#define CMD_H264_MEMORY_SIZE MM_MODULE_CMD(0x07)
|
||||
#define CMD_H264_BLOCK_SIZE MM_MODULE_CMD(0x08)
|
||||
#define CMD_H264_MAX_FRAME_SIZE MM_MODULE_CMD(0x09)
|
||||
#define CMD_H264_RCMODE MM_MODULE_CMD(0x0a)
|
||||
#define CMD_H264_SET_RCPARAM MM_MODULE_CMD(0x0b)
|
||||
#define CMD_H264_GET_RCPARAM MM_MODULE_CMD(0x0c)
|
||||
#define CMD_H264_INIT_MEM_POOL MM_MODULE_CMD(0x0d)
|
||||
#define CMD_H264_FORCE_IFRAME MM_MODULE_CMD(0x0e)
|
||||
#define CMD_H264_SET_RCADVPARAM MM_MODULE_CMD(0x10)
|
||||
#define CMD_H264_GET_RCADVPARAM MM_MODULE_CMD(0x11)
|
||||
|
||||
#define CMD_SNAPSHOT_ENCODE_CB MM_MODULE_CMD(0x30)
|
||||
|
||||
#define CMD_H264_APPLY MM_MODULE_CMD(0x20)
|
||||
#define CMD_H264_UPDATE MM_MODULE_CMD(0x21)
|
||||
#define CMD_H264_PAUSE MM_MODULE_CMD(0x22)
|
||||
|
||||
typedef struct h264_ctx_s{
|
||||
void* parent;
|
||||
|
||||
struct h264_context* h264_cont;
|
||||
|
||||
void* mem_pool;
|
||||
}h264_ctx_t;
|
||||
|
||||
typedef struct h264_params_s{
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t bps;
|
||||
uint32_t fps;
|
||||
uint32_t gop;
|
||||
uint32_t rc_mode;
|
||||
uint32_t vbr_mode; // mode 0: fixed min/max QP (try to keep quality), mode 1: flexible min/max QP (try to fit requried bitrate)
|
||||
uint32_t mem_total_size;
|
||||
uint32_t mem_block_size;
|
||||
uint32_t mem_frame_size;
|
||||
}h264_params_t;
|
||||
|
||||
typedef struct h264_rc_parm_s
|
||||
{
|
||||
unsigned int rcMode;
|
||||
unsigned int iQp; // for fixed QP
|
||||
unsigned int pQp; // for fixed QP
|
||||
unsigned int minQp; // for CBR/VBR
|
||||
unsigned int minIQp; // for CBR/VBR
|
||||
unsigned int maxQp; // for CBR/VBR
|
||||
}h264_rc_parm_t;
|
||||
|
||||
typedef struct h264_rc_adv_parm_s
|
||||
{
|
||||
unsigned int rc_adv_enable;
|
||||
unsigned int maxBps; // for VBR
|
||||
unsigned int minBps; // for VBR
|
||||
|
||||
int intraQpDelta;
|
||||
int mbQpAdjustment;
|
||||
unsigned int mbQpAutoBoost;
|
||||
}h264_rc_adv_parm_t;
|
||||
|
||||
extern mm_module_t h264_module;
|
||||
|
||||
|
||||
#endif
|
||||
32
sdk/component/common/media/mmfv2/module_httpfs.h
Normal file
32
sdk/component/common/media/mmfv2/module_httpfs.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef _MODULE_HTTPFS_H
|
||||
#define _MODULE_HTTPFS_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <osdep_service.h>
|
||||
#include "fatfs_sdcard_api.h"
|
||||
|
||||
#define CMD_HTTPFS_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_HTTPFS_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_HTTPFS_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
#define CMD_HTTPFS_STREAM_STOP MM_MODULE_CMD(0x23) // stop stream
|
||||
#define CMD_HTTPFS_SET_RESPONSE_CB MM_MODULE_CMD(0x14)
|
||||
|
||||
typedef struct httpfs_param_s{
|
||||
char fileext[4];
|
||||
char filedir[32];
|
||||
char request_string[128];
|
||||
uint32_t fatfs_buf_size;
|
||||
}httpfs_params_t;
|
||||
|
||||
typedef struct httpfs_ctx_s{
|
||||
void* parent;
|
||||
TaskHandle_t task;
|
||||
_sema up_sema;
|
||||
|
||||
httpfs_params_t params;
|
||||
fatfs_sd_params_t fatfs_params;
|
||||
int (*cb_response)(void);
|
||||
}httpfs_ctx_t;
|
||||
|
||||
extern mm_module_t httpfs_module;
|
||||
#endif
|
||||
46
sdk/component/common/media/mmfv2/module_i2s.h
Normal file
46
sdk/component/common/media/mmfv2/module_i2s.h
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#ifndef _MODULE_I2S_H
|
||||
#define _MODULE_I2S_H
|
||||
|
||||
#include "mmf2_module.h"
|
||||
#include "audio_api.h"
|
||||
#include "i2s_api.h"
|
||||
|
||||
#define ENABLE_SPEEX_AEC 1
|
||||
|
||||
#define CMD_I2S_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_I2S_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_I2S_SET_SAMPLERATE MM_MODULE_CMD(0x02)
|
||||
#define CMD_I2S_SET_WORDLENGTH MM_MODULE_CMD(0x03)
|
||||
#define CMD_I2S_SET_MICGAIN MM_MODULE_CMD(0x04)
|
||||
#define CMD_I2S_SET_AES MM_MODULE_CMD(0x05)
|
||||
#define CMD_I2S_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
|
||||
typedef struct i2s_param_s{
|
||||
uint32_t sample_rate; // SR_32KHZ
|
||||
uint32_t out_sample_rate; // SR_8KHZ
|
||||
uint32_t word_length; // WL_24b
|
||||
uint32_t out_word_length; // WL_16b
|
||||
audio_mic_gain mic_gain; // MIC_40DB
|
||||
int channel; // 1
|
||||
int out_channel;
|
||||
int enable_aec; // 0
|
||||
int mix_mode; // 0
|
||||
//...
|
||||
}i2s_params_t;
|
||||
|
||||
typedef struct i2s_ctx_s{
|
||||
void* parent;
|
||||
i2s_t* i2s_obj;
|
||||
i2s_params_t params;
|
||||
uint32_t sample_rate;
|
||||
uint8_t word_length; // Byte
|
||||
int sr_shrink;
|
||||
int wl_shrink;
|
||||
int ch_shrink;
|
||||
// for AEC
|
||||
TaskHandle_t aec_rx_task;
|
||||
xSemaphoreHandle aec_rx_done_sema;
|
||||
}i2s_ctx_t;
|
||||
|
||||
extern mm_module_t i2s_module;
|
||||
#endif
|
||||
71
sdk/component/common/media/mmfv2/module_isp.h
Normal file
71
sdk/component/common/media/mmfv2/module_isp.h
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
#ifndef _MODULE_ISP_H
|
||||
#define _MODULE_ISP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <osdep_service.h>
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#include "isp_api.h"
|
||||
#include "sensor.h"
|
||||
|
||||
#define CMD_ISP_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_ISP_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_ISP_STREAMID MM_MODULE_CMD(0x02)
|
||||
#define CMD_ISP_HW_SLOT MM_MODULE_CMD(0x03)
|
||||
#define CMD_ISP_SW_SLOT MM_MODULE_CMD(0x04)
|
||||
#define CMD_ISP_FPS MM_MODULE_CMD(0x05)
|
||||
#define CMD_ISP_HEIGHT MM_MODULE_CMD(0x06)
|
||||
#define CMD_ISP_WIDTH MM_MODULE_CMD(0x07)
|
||||
#define CMD_ISP_FORMAT MM_MODULE_CMD(0x08)
|
||||
#define CMD_ISP_DUMP_STATE MM_MODULE_CMD(0x09)
|
||||
#define CMD_ISP_SET_SELF_BUF MM_MODULE_CMD(0x0A)
|
||||
#define CMD_ISP_SET_BOOT_MODE MM_MODULE_CMD(0x0B)
|
||||
|
||||
#define CMD_ISP_APPLY MM_MODULE_CMD(0x20) // apply setting
|
||||
#define CMD_ISP_UPDATE MM_MODULE_CMD(0x21) // update new setting
|
||||
#define CMD_ISP_STREAM_START MM_MODULE_CMD(0x22) // start stream
|
||||
#define CMD_ISP_STREAM_STOP MM_MODULE_CMD(0x23) // stop stream
|
||||
|
||||
|
||||
typedef struct isp_state_s{
|
||||
uint32_t timer_1;
|
||||
uint32_t timer_2;
|
||||
uint32_t drop_frame;
|
||||
uint32_t isp_frame;
|
||||
uint32_t drop_frame_total;
|
||||
uint32_t isp_frame_total;
|
||||
}isp_state_t;
|
||||
|
||||
#define MAX_ISP_SELF_BUFF 4
|
||||
|
||||
typedef struct isp_param_s{
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t fps;
|
||||
uint32_t slot_num;
|
||||
uint32_t buff_num;
|
||||
uint32_t stream_id;
|
||||
uint32_t format;
|
||||
uint32_t self_buf_count;//Use self buffer
|
||||
uint32_t self_buf_addr[MAX_ISP_SELF_BUFF];
|
||||
uint32_t boot_mode;
|
||||
uint32_t bayer_type;
|
||||
//...
|
||||
}isp_params_t;
|
||||
|
||||
typedef struct isp_ctx_s{
|
||||
void* parent;
|
||||
|
||||
isp_stream_t* stream;
|
||||
|
||||
isp_params_t params;
|
||||
isp_state_t state;
|
||||
|
||||
mm_queue_item_t* hw_slot_item[4];
|
||||
|
||||
uint32_t buf_width, buf_height;
|
||||
}isp_ctx_t;
|
||||
|
||||
extern mm_module_t isp_module;
|
||||
|
||||
#endif
|
||||
47
sdk/component/common/media/mmfv2/module_jpeg.h
Normal file
47
sdk/component/common/media/mmfv2/module_jpeg.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#ifndef _MODULE_JPEG_H
|
||||
#define _MODULE_JPEG_H
|
||||
|
||||
#include "jpeg_encoder.h"
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#define CMD_JPEG_SET_PARAMS MM_MODULE_CMD(0x00)
|
||||
#define CMD_JPEG_GET_PARAMS MM_MODULE_CMD(0x01)
|
||||
#define CMD_JPEG_SET_HEIGHT MM_MODULE_CMD(0x02)
|
||||
#define CMD_JPEG_SET_WIDTH MM_MODULE_CMD(0x03)
|
||||
#define CMD_JPEG_LEVEL MM_MODULE_CMD(0x04)
|
||||
#define CMD_JPEG_FPS MM_MODULE_CMD(0x05)
|
||||
#define CMD_JPEG_HEADER_TYPE MM_MODULE_CMD(0x06)
|
||||
#define CMD_JPEG_MEMORY_SIZE MM_MODULE_CMD(0x07)
|
||||
#define CMD_JPEG_BLOCK_SIZE MM_MODULE_CMD(0x08)
|
||||
#define CMD_JPEG_MAX_FRAME_SIZE MM_MODULE_CMD(0x09)
|
||||
#define CMD_JPEG_INIT_MEM_POOL MM_MODULE_CMD(0x0a)
|
||||
#define CMD_JPEG_GET_ENCODER MM_MODULE_CMD(0x0b)
|
||||
|
||||
#define CMD_SNAPSHOT_CB MM_MODULE_CMD(0x10)
|
||||
#define CMD_JPEG_CHANGE_PARM_CB MM_MODULE_CMD(0x11)
|
||||
#define CMD_JPEG_UPDATE MM_MODULE_CMD(0x12)
|
||||
|
||||
#define CMD_JPEG_APPLY MM_MODULE_CMD(0x20)
|
||||
|
||||
typedef struct jpeg_ctx_s{
|
||||
void* parent;
|
||||
|
||||
struct jpeg_context* jpeg_cont;
|
||||
|
||||
void* mem_pool;
|
||||
}jpeg_ctx_t;
|
||||
|
||||
typedef struct jpeg_params_s{
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t level;
|
||||
uint32_t fps;
|
||||
uint32_t mem_total_size;
|
||||
uint32_t mem_block_size;
|
||||
uint32_t mem_frame_size;
|
||||
}jpeg_params_t;
|
||||
|
||||
extern mm_module_t jpeg_module;
|
||||
|
||||
|
||||
#endif //_MODULE_JPEG_H
|
||||
61
sdk/component/common/media/mmfv2/module_mp4.h
Normal file
61
sdk/component/common/media/mmfv2/module_mp4.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef _MODULE_MP4_H
|
||||
#define _MODULE_MP4_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#include "fatfs_sdcard_api.h"
|
||||
#include "mp4_muxer.h"
|
||||
|
||||
#define CMD_MP4_SET_PARAMS MM_MODULE_CMD(0x00)
|
||||
#define CMD_MP4_GET_PARAMS MM_MODULE_CMD(0x01)
|
||||
#define CMD_MP4_SET_HEIGHT MM_MODULE_CMD(0x02)
|
||||
#define CMD_MP4_SET_WIDTH MM_MODULE_CMD(0x03)
|
||||
#define CMD_MP4_SET_FPS MM_MODULE_CMD(0x04)
|
||||
#define CMD_MP4_SET_GOP MM_MODULE_CMD(0x05)
|
||||
#define CMD_MP4_SET_SAMPLERATE MM_MODULE_CMD(0x06)
|
||||
#define CMD_MP4_SET_CHANNEL MM_MODULE_CMD(0x07)
|
||||
#define CMD_MP4_SET_RECORD_LENGTH MM_MODULE_CMD(0x08)
|
||||
#define CMD_MP4_GET_RECORD_LENGTH MM_MODULE_CMD(0x09)
|
||||
#define CMD_MP4_SET_RECORD_TYPE MM_MODULE_CMD(0x0a)
|
||||
#define CMD_MP4_GET_RECORD_TYPE MM_MODULE_CMD(0x0b)
|
||||
#define CMD_MP4_SET_RECORD_FILE_NAME MM_MODULE_CMD(0x0c)
|
||||
#define CMD_MP4_GET_RECORD_FILE_NAME MM_MODULE_CMD(0x0d)
|
||||
#define CMD_MP4_SET_FATFS_BUF_SIZE MM_MODULE_CMD(0x0e)
|
||||
#define CMD_MP4_GET_FATFS_PARAMS MM_MODULE_CMD(0x0f)
|
||||
#define CMD_MP4_START MM_MODULE_CMD(0x10)
|
||||
#define CMD_MP4_STOP MM_MODULE_CMD(0x11)
|
||||
#define CMD_MP4_GET_STATUS MM_MODULE_CMD(0x12)
|
||||
#define CMD_MP4_RESET_FILE_INDEX MM_MODULE_CMD(0x13)
|
||||
#define CMD_MP4_SET_STOP_CB MM_MODULE_CMD(0x14) //Every record loop will enter the callback
|
||||
#define CMD_MP4_SET_END_CB MM_MODULE_CMD(0x15) //Only final loop will ebter the callback
|
||||
#define CMD_MP4_LOOP_MODE MM_MODULE_CMD(0x16)
|
||||
|
||||
typedef struct mp4_param_s{
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t fps;
|
||||
uint32_t gop;
|
||||
|
||||
uint32_t sample_rate;
|
||||
uint32_t channel;
|
||||
|
||||
uint32_t record_length;
|
||||
uint32_t record_type;
|
||||
uint32_t record_file_num;
|
||||
char record_file_name[32];
|
||||
uint32_t fatfs_buf_size;
|
||||
}mp4_params_t;
|
||||
|
||||
typedef struct mp4_ctx_s{
|
||||
void* parent;
|
||||
|
||||
pmp4_context mp4_muxer;
|
||||
|
||||
mp4_params_t params;
|
||||
fatfs_sd_params_t fatfs_params;
|
||||
}mp4_ctx_t;
|
||||
|
||||
extern mm_module_t mp4_module;
|
||||
|
||||
#endif
|
||||
49
sdk/component/common/media/mmfv2/module_rtp.h
Normal file
49
sdk/component/common/media/mmfv2/module_rtp.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
#ifndef _MODULE_RTP_H
|
||||
#define _MODULE_RTP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "rtsp/rtp_api.h"
|
||||
|
||||
#define AUDIO_BUF_SIZE (1500) //160 BYTE DATA + 12 BYTE RTP HEADER
|
||||
#define DEFAULT_RTP_PORT 16384
|
||||
|
||||
#define MAX_SELECT_SOCKET 8
|
||||
|
||||
|
||||
#define CMD_RTP_SET_PARAMS MM_MODULE_CMD(0x00) // set parameter
|
||||
#define CMD_RTP_GET_PARAMS MM_MODULE_CMD(0x01) // get parameter
|
||||
#define CMD_RTP_STREAMING MM_MODULE_CMD(0x02)
|
||||
|
||||
#define CMD_RTP_APPLY MM_MODULE_CMD(0x20) // for hardware module
|
||||
|
||||
//static long listen_time_s = 0;
|
||||
//static long listen_time_us = 20000; //20ms
|
||||
#define LISTEN_TIME_S 0
|
||||
#define LISTEN_TIME_US 500
|
||||
|
||||
typedef struct rtp_param_s{
|
||||
uint32_t valid_pt; // set 0xFFFFFFFF ==> allow RTP_PT_PCMU/RTP_PT_PCMA/RTP_PT_DYN_BASE (type is an unsigned 8 bit value)
|
||||
uint32_t port;
|
||||
uint32_t frame_size;
|
||||
uint32_t cache_depth;
|
||||
}rtp_params_t;
|
||||
|
||||
typedef struct rtp_ctx_s{
|
||||
void* parent;
|
||||
struct connect_context connect_ctx;
|
||||
TaskHandle_t task;
|
||||
_sema up_sema;
|
||||
|
||||
rtp_params_t params;
|
||||
// flag
|
||||
int rtp_shutdown;
|
||||
int socket_closed;
|
||||
|
||||
// cache handler
|
||||
xQueueHandle cache_ready;
|
||||
xQueueHandle cache_recycle;
|
||||
TaskHandle_t cache_handler;
|
||||
}rtp_ctx_t;
|
||||
|
||||
extern mm_module_t rtp_module;
|
||||
#endif
|
||||
77
sdk/component/common/media/mmfv2/module_rtsp2.h
Normal file
77
sdk/component/common/media/mmfv2/module_rtsp2.h
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
#ifndef _MODULE_RTSP2_H
|
||||
#define _MODULE_RTSP2_H
|
||||
|
||||
#include "rtsp/rtsp_api.h"
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#define TIME_SYNC_UNDEF 0
|
||||
#define TIME_SYNC_EN 1
|
||||
#define TIME_SYNC_DIS 2
|
||||
|
||||
|
||||
#define RTSP2_NON_BLOCK_TYPE 0
|
||||
#define RTSP2_BLOCK_TYPE 1
|
||||
|
||||
#define STREAM_FLOW_ID_BASE 0
|
||||
|
||||
#define CMD_RTSP2_SET_PARAMS MM_MODULE_CMD(0x00)
|
||||
#define CMD_RTSP2_GET_PARAMS MM_MODULE_CMD(0x01)
|
||||
#define CMD_RTSP2_SET_STREAMMING MM_MODULE_CMD(0x02)
|
||||
#define CMD_RTSP2_SELECT_STREAM MM_MODULE_CMD(0x03)
|
||||
#define CMD_RTSP2_SET_FRAMERATE MM_MODULE_CMD(0x04)
|
||||
#define CMD_RTSP2_SET_BITRATE MM_MODULE_CMD(0x05)
|
||||
#define CMD_RTSP2_SET_SAMPLERATE MM_MODULE_CMD(0x06)
|
||||
#define CMD_RTSP2_SET_CHANNEL MM_MODULE_CMD(0x07)
|
||||
#define CMD_RTSP2_SET_SPS MM_MODULE_CMD(0x08)
|
||||
#define CMD_RTSP2_SET_PPS MM_MODULE_CMD(0x09)
|
||||
#define CMD_RTSP2_SET_LEVEL MM_MODULE_CMD(0x0a)
|
||||
#define CMD_RTSP2_SET_CODEC MM_MODULE_CMD(0x0b)
|
||||
#define CMD_RTSP2_SET_FLAG MM_MODULE_CMD(0x0c)
|
||||
#define CMD_RTSP2_SET_APPLY MM_MODULE_CMD(0x0d)
|
||||
#define CMD_RTSP2_USE_RTP_TICK_INC MM_MODULE_CMD(0x0e)
|
||||
#define CMD_RTSP2_SET_PORT MM_MODULE_CMD(0x0f)
|
||||
|
||||
|
||||
#define CMD_RTSP2_SET_START_CB MM_MODULE_CMD(0x10)
|
||||
#define CMD_RTSP2_SET_STOP_CB MM_MODULE_CMD(0x11)
|
||||
#define CMD_RTSP2_SET_PAUSE_CB MM_MODULE_CMD(0x12)
|
||||
#define CMD_RTSP2_SET_CUSTOM_CB MM_MODULE_CMD(0x13)
|
||||
|
||||
#define CMD_RTSP2_SET_DROP_TIME MM_MODULE_CMD(0x14)
|
||||
#define CMD_RTSP2_SET_BLOCK_TYPE MM_MODULE_CMD(0x15)
|
||||
#define CMD_RTSP2_SET_SYNC_MODE MM_MODULE_CMD(0x16)
|
||||
|
||||
typedef struct rtsp2_params_s{
|
||||
uint32_t type;
|
||||
union{
|
||||
struct rtsp_video_param_s{
|
||||
uint32_t codec_id;
|
||||
uint32_t fps;
|
||||
uint32_t bps;
|
||||
uint32_t ts_flag;
|
||||
char* sps;
|
||||
char* pps;
|
||||
char* lv;
|
||||
}v;
|
||||
struct rtsp_audio_param_s{
|
||||
uint32_t codec_id;
|
||||
uint32_t channel;
|
||||
uint32_t samplerate;
|
||||
}a;
|
||||
}u;
|
||||
}rtsp2_params_t;
|
||||
|
||||
typedef struct rtsp2_ctx_s{
|
||||
void* parent;
|
||||
|
||||
struct rtsp_context *rtsp;
|
||||
|
||||
rtsp2_params_t params[2];
|
||||
uint32_t block_type;
|
||||
}rtsp2_ctx_t;
|
||||
|
||||
|
||||
|
||||
extern mm_module_t rtsp2_module;
|
||||
|
||||
#endif
|
||||
68
sdk/component/common/media/mmfv2/module_ua2.h
Normal file
68
sdk/component/common/media/mmfv2/module_ua2.h
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#ifndef _MODULE_UA2_H
|
||||
#define _MODULE_UA2_H
|
||||
|
||||
|
||||
#include "sip/re/inc/re.h"
|
||||
#include "sip/re/inc/baresip.h"
|
||||
#include "sip/ua_api.h"
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#define TIME_SYNC_UNDEF 0
|
||||
#define TIME_SYNC_EN 1
|
||||
#define TIME_SYNC_DIS 2
|
||||
|
||||
#define STREAM_FLOW_ID_BASE 0
|
||||
|
||||
#define CMD_UA2_SET_PARAMS MM_MODULE_CMD(0x00)
|
||||
#define CMD_UA2_GET_PARAMS MM_MODULE_CMD(0x01)
|
||||
#define CMD_UA2_SET_STREAMMING MM_MODULE_CMD(0x02)
|
||||
#define CMD_UA2_SELECT_STREAM MM_MODULE_CMD(0x03)
|
||||
#define CMD_UA2_SET_FRAMERATE MM_MODULE_CMD(0x04)
|
||||
#define CMD_UA2_SET_BITRATE MM_MODULE_CMD(0x05)
|
||||
#define CMD_UA2_SET_SAMPLERATE MM_MODULE_CMD(0x06)
|
||||
#define CMD_UA2_SET_CHANNEL MM_MODULE_CMD(0x07)
|
||||
#define CMD_UA2_SET_SPS MM_MODULE_CMD(0x08)
|
||||
#define CMD_UA2_SET_PPS MM_MODULE_CMD(0x09)
|
||||
#define CMD_UA2_SET_LEVEL MM_MODULE_CMD(0x0a)
|
||||
#define CMD_UA2_SET_CODEC MM_MODULE_CMD(0x0b)
|
||||
#define CMD_UA2_SET_FLAG MM_MODULE_CMD(0x0c)
|
||||
#define CMD_UA2_SET_APPLY MM_MODULE_CMD(0x0d)
|
||||
#define CMD_UA2_USE_RTP_TICK_INC MM_MODULE_CMD(0x0e)
|
||||
|
||||
#define CMD_UA2_SET_REGISTER MM_MODULE_CMD(0x0f)
|
||||
#define CMD_UA2_SET_FROM_URI MM_MODULE_CMD(0x10)
|
||||
#define CMD_UA2_SET_TO_URI MM_MODULE_CMD(0x11)
|
||||
|
||||
typedef struct ua2_params_s{
|
||||
uint32_t type;
|
||||
union{
|
||||
struct ua_video_param_s{
|
||||
uint32_t codec_id;
|
||||
uint32_t fps;
|
||||
uint32_t bps;
|
||||
uint32_t ts_flag;
|
||||
char* sps;
|
||||
char* pps;
|
||||
char* lv;
|
||||
}v;
|
||||
struct ua_audio_param_s{
|
||||
uint32_t codec_id;
|
||||
uint32_t channel;
|
||||
uint32_t samplerate;
|
||||
}a;
|
||||
}u;
|
||||
}ua2_params_t;
|
||||
|
||||
typedef struct ua2_ctx_s{
|
||||
void* parent;
|
||||
|
||||
struct ua_context *ua;
|
||||
|
||||
ua2_params_t params[2];
|
||||
}ua2_ctx_t;
|
||||
|
||||
|
||||
|
||||
extern mm_module_t ua2_module;
|
||||
|
||||
#endif
|
||||
34
sdk/component/common/media/mmfv2/module_uvcd.h
Normal file
34
sdk/component/common/media/mmfv2/module_uvcd.h
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#ifndef _MODULE_USBD_H
|
||||
#define _MODULE_USBD_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <osdep_service.h>
|
||||
#include "mmf2_module.h"
|
||||
|
||||
#define FORMAT_TYPE_YUY2 0
|
||||
#define FORMAT_TYPE_NV12 1
|
||||
#define FORMAT_TYPE_MJPEG 2
|
||||
#define FORMAT_TYPE_H264 3
|
||||
#define FORMAT_TYPE_BAYER 4
|
||||
|
||||
#define BAYER_TYPE_BEFORE_BLC 1
|
||||
#define BAYER_TYPE_AFTER_BLC 2
|
||||
#define BAYER_TYPE_AFTER_LSC 3
|
||||
#define BAYER_TYPE_AFTER_DNO 4
|
||||
|
||||
struct uvc_format{
|
||||
int width;
|
||||
int height;
|
||||
int format;
|
||||
int fps;
|
||||
int state;
|
||||
int isp_format;//1:YUV420 2:YUV422 3:Bayer
|
||||
int ldc;//0:Disable 1:Enable
|
||||
int bayer_type;
|
||||
_sema uvcd_change_sema;
|
||||
};
|
||||
|
||||
|
||||
extern mm_module_t uvcd_module;
|
||||
|
||||
#endif
|
||||
52
sdk/component/common/media/muxer/mp4_demuxer.h
Normal file
52
sdk/component/common/media/muxer/mp4_demuxer.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
#ifndef _MP4_DEMUXER_
|
||||
typedef struct _header{
|
||||
unsigned int size;
|
||||
unsigned char str[4];
|
||||
}header;
|
||||
|
||||
#define audio_bit 31
|
||||
#define vkey_bit 30
|
||||
|
||||
#define mvhd_length 8
|
||||
#define trak_length 8
|
||||
#define mdia_length 8
|
||||
#define minf_length 8
|
||||
|
||||
#define video_type 0
|
||||
#define audio_type 1
|
||||
|
||||
typedef struct _mp4_demux{
|
||||
FATFS m_fs;
|
||||
int drv_num;
|
||||
char _drv[4];
|
||||
FIL m_file;
|
||||
char filename[32];
|
||||
int type;
|
||||
unsigned int video_len;
|
||||
unsigned int audio_len;
|
||||
unsigned int key_len;
|
||||
unsigned int sample_index;
|
||||
unsigned int channel_count;
|
||||
//unsigned int video_buf[2740][2];
|
||||
//unsigned int audio_buf[2740][2];
|
||||
//unsigned int (*video_buf)[2];
|
||||
//unsigned int (*audio_buf)[2];
|
||||
unsigned int (*all_buf)[2];
|
||||
//unsigned int all_buf[3200][2];
|
||||
unsigned int keyframe[100];
|
||||
unsigned char sps[0x40];
|
||||
unsigned char pps[0x10];
|
||||
unsigned short sps_length;
|
||||
unsigned short pps_length;
|
||||
unsigned int mp4_index;
|
||||
unsigned int total_len;
|
||||
}mp4_demux,*pmp4_demux;
|
||||
|
||||
int get_video_trak(mp4_demux *mp4_demuxer,int index);
|
||||
int get_audio_trak(mp4_demux *mp4_demuxer,int index);
|
||||
void create_adts_header(int rate_idx,int channels,int length,unsigned char *adts_header);
|
||||
int ccompare( const void *a , const void *b );
|
||||
FRESULT fseek ( FIL * stream, long int offset, int origin );
|
||||
FRESULT fread ( void * ptr, size_t size, size_t count, FIL * stream );
|
||||
FRESULT fwrite ( const void * ptr, size_t size, size_t count, FIL * stream );
|
||||
#endif
|
||||
114
sdk/component/common/media/muxer/mp4_encap.h
Normal file
114
sdk/component/common/media/muxer/mp4_encap.h
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#ifndef _MP4_ENCAP_H_
|
||||
#define _MP4_ENCAP_H_
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
|
||||
#define MAX_BOX_CHILD 8
|
||||
#define RBUF_SIZE 1024
|
||||
|
||||
typedef struct _mp4root{
|
||||
unsigned int video_len;
|
||||
unsigned int audio_len;
|
||||
unsigned int total;
|
||||
unsigned int keyindex;
|
||||
}MP4root,*PMP4root;
|
||||
|
||||
#define STORAGE_IDLE 0
|
||||
#define STORAGE_START 1
|
||||
#define STORAGE_WRITE_ALL 2
|
||||
#define STORAGE_WRITE_VIDEO 3
|
||||
#define STORAGE_WRITE_AUDIO 4
|
||||
#define STORAGE_STOP 5
|
||||
#define STORAGE_END 6
|
||||
|
||||
|
||||
#define STORAGE_ALL 0
|
||||
#define STORAGE_VIDEO 1
|
||||
#define STORAGE_AUDIO 2
|
||||
|
||||
typedef struct _mp4_payload{
|
||||
unsigned char *addr;
|
||||
unsigned int len;
|
||||
}mp4_payload,pmp4_payload;
|
||||
|
||||
typedef struct _mp4_write_info{
|
||||
int mp4_start_position;
|
||||
int mp4_end_position;
|
||||
int mp4_occupy_size;
|
||||
int mp4_empty_size;
|
||||
int mp4_write_start_position;
|
||||
int mp4_write_end_position;
|
||||
int mp4_write_occupy_size;
|
||||
int mp4_write_empty_size;
|
||||
int mp4_write_length;
|
||||
}mp4_winfo,*pmp4_winfo;
|
||||
|
||||
typedef struct _mp4_context{
|
||||
FATFS m_fs;
|
||||
int drv_num;
|
||||
char _drv[4];
|
||||
FIL m_file;
|
||||
char filename[32];
|
||||
int Fatfs_ok;
|
||||
int filecount;
|
||||
int width;
|
||||
int height;
|
||||
int sample_rate;
|
||||
int channel_count;
|
||||
int frame_rate;
|
||||
u32 start_time;//rtw_get_current_time()
|
||||
u32 file_name_index;
|
||||
u32 storage_state;
|
||||
MP4root root;
|
||||
MP4root root_reserve;
|
||||
int period_time;
|
||||
int file_total;
|
||||
int sps_start;
|
||||
int type;
|
||||
int sps_len;
|
||||
int pps_len;
|
||||
int sps_pps_mark;
|
||||
unsigned int *video_buffer_index;
|
||||
unsigned int *video_buffer_size;
|
||||
int video_size;
|
||||
unsigned int *audio_buffer_index;
|
||||
unsigned int *audio_buffer_size;
|
||||
int audio_size;
|
||||
unsigned char *moov_box;
|
||||
int moov_box_size;
|
||||
unsigned char *h264_buf;
|
||||
int H264_LENGTH;
|
||||
mp4_payload payload;
|
||||
mp4_payload reserved_payload;
|
||||
int reserved_start_index;
|
||||
int iframe;
|
||||
int reserved_type;
|
||||
_sema start_fatfs_write;
|
||||
int write_status;
|
||||
int audio_write_status;
|
||||
int video_write_status;
|
||||
int buffer_write_status;//0: real write 1: virtual write
|
||||
mp4_winfo winfo;
|
||||
int nal_len;
|
||||
int h264_extra_len;
|
||||
int mp4_muxer_enable;
|
||||
|
||||
int (*cb_start)(void*); // start recording
|
||||
int (*cb_stop)(void*); // stop recording
|
||||
}mp4_context,*pmp4_context;
|
||||
#define IDLE 0
|
||||
#define FATFS_WRITING 1
|
||||
#define FATFS_DONE 2
|
||||
|
||||
void mp4_handle(pmp4_context mp4_ctx,unsigned char *buf,unsigned int size,int type);
|
||||
void set_mp4_audio_buffer(pmp4_context mp4_ctx,unsigned int *audio_index,unsigned int *audio_size,int size);
|
||||
void set_mp4_video_buffer(pmp4_context mp4_ctx,unsigned int *video_index,unsigned int *video_size,int size);
|
||||
void set_mp4_moov_buffer(pmp4_context mp4_ctx,unsigned char *moov,int size);
|
||||
int mp4_set_record(pmp4_context mp4_ctx,int num);
|
||||
void mp4_muxer_init(pmp4_context mp4_ctx);
|
||||
void mp4_muxer_close(pmp4_context mp4_ctx);
|
||||
int mp4_set_start_status(pmp4_context mp4_ctx);
|
||||
int mp4_set_stop_status(pmp4_context mp4_ctx);
|
||||
|
||||
#endif
|
||||
106
sdk/component/common/media/muxer/mp4_muxer.h
Normal file
106
sdk/component/common/media/muxer/mp4_muxer.h
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
#ifndef _MP4_MUXER_H_
|
||||
#define _MP4_MUXER_H_
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
#include "fatfs_sdcard_api.h"
|
||||
|
||||
#define MAX_BOX_CHILD 8
|
||||
#define RBUF_SIZE 1024
|
||||
|
||||
typedef struct _mp4root{
|
||||
unsigned int video_len;
|
||||
unsigned int audio_len;
|
||||
unsigned int total;
|
||||
unsigned int keyindex;
|
||||
}MP4root,*PMP4root;
|
||||
|
||||
#define STORAGE_IDLE 0
|
||||
#define STORAGE_INIT 1
|
||||
#define STORAGE_START 2
|
||||
#define STORAGE_WRITE_ALL 3
|
||||
#define STORAGE_WRITE_VIDEO 4
|
||||
#define STORAGE_WRITE_AUDIO 5
|
||||
#define STORAGE_STOP 6
|
||||
|
||||
#define STORAGE_ALL 0
|
||||
#define STORAGE_VIDEO 1
|
||||
#define STORAGE_AUDIO 2
|
||||
|
||||
typedef struct _mp4_payload{
|
||||
unsigned char *addr;
|
||||
unsigned int len;
|
||||
}mp4_payload,pmp4_payload;
|
||||
|
||||
typedef struct _mp4_context{
|
||||
FATFS m_fs;
|
||||
int drv_num;
|
||||
char _drv[4];
|
||||
FIL m_file;
|
||||
char filename[32];
|
||||
int Fatfs_ok;
|
||||
int filecount;
|
||||
int width;
|
||||
int height;
|
||||
int sample_rate;
|
||||
int channel_count;
|
||||
int frame_rate;
|
||||
int gop;
|
||||
u32 start_time;//rtw_get_current_time()
|
||||
u32 file_name_index;
|
||||
u32 storage_state;
|
||||
MP4root root;
|
||||
int period_time;
|
||||
int file_total;
|
||||
int sps_start;
|
||||
int type;
|
||||
int sps_len;
|
||||
int pps_len;
|
||||
int sps_pps_mark;
|
||||
unsigned int *video_buffer_index;
|
||||
unsigned int *video_buffer_size;
|
||||
unsigned int video_size;
|
||||
unsigned int *key_frame;
|
||||
unsigned int key_frame_size;
|
||||
unsigned int *audio_buffer_index;
|
||||
unsigned int *audio_buffer_size;
|
||||
unsigned int audio_size;
|
||||
unsigned char *moov_box;
|
||||
unsigned int moov_box_size;
|
||||
unsigned char *fatfs_buf;
|
||||
unsigned int fatfs_buf_size;
|
||||
unsigned int fatfs_buf_pos;
|
||||
mp4_payload payload;
|
||||
int write_status;
|
||||
int nal_len;
|
||||
int h264_extra_len;
|
||||
char sps_str[64];
|
||||
char pps_str[64];
|
||||
unsigned char ftyp_box[24];
|
||||
unsigned char mdat_box[8];
|
||||
int audio_clock_rate;
|
||||
int video_clock_rate;
|
||||
unsigned int video_old_depend_clock_tick;
|
||||
unsigned int audio_old_depend_clock_tick;
|
||||
unsigned int video_timestamp;
|
||||
unsigned int audio_timestamp;
|
||||
unsigned int video_timestamp_first;
|
||||
unsigned int audio_timestamp_first;
|
||||
unsigned int *video_timestamp_buffer;
|
||||
unsigned int *audio_timestamp_buffer;
|
||||
int (*cb_start)(void*);
|
||||
int (*cb_stop)(void*);
|
||||
int (*cb_end)(void*);
|
||||
int loop_mode;
|
||||
}mp4_context,*pmp4_context;
|
||||
|
||||
void mp4_muxer_init(pmp4_context mp4_ctx);
|
||||
void mp4_muxer_close(pmp4_context mp4_ctx);
|
||||
void set_mp4_fatfs_param(pmp4_context mp4_ctx, fatfs_sd_params_t* fatfs_param);
|
||||
|
||||
u8 mp4_is_recording(pmp4_context mp4_ctx);
|
||||
int mp4_start_record(pmp4_context mp4_ctx, int file_num);
|
||||
int mp4_stop_record(pmp4_context mp4_ctx);
|
||||
void mp4_muxer_handle(pmp4_context mp4_ctx,unsigned char *buf,unsigned int size,int type,unsigned int timestamp);
|
||||
|
||||
#endif //_MP4_MUXER_H_
|
||||
42
sdk/component/common/media/rtp_codec/aac/aac.h
Normal file
42
sdk/component/common/media/rtp_codec/aac/aac.h
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#ifndef _AAC_H
|
||||
#define _AAC_H
|
||||
|
||||
#include "dlist.h" //list management
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
//#include "osdep_api.h"
|
||||
|
||||
#define AAC_DEBUG 1
|
||||
|
||||
#if AAC_DEBUG
|
||||
#define AAC_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define AAC_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define AAC_PRINTF(fmt, args...)
|
||||
#define AAC_ERROR(fmt, args...)
|
||||
#endif
|
||||
|
||||
struct rtp_au_hdr
|
||||
{
|
||||
u32 au_size; //contain AU size in octets(header length included)
|
||||
#if 0
|
||||
u16 au_index;
|
||||
u16 au_index_delta;
|
||||
u16 cts_flag;
|
||||
u16 cts_delta;
|
||||
u16 dts_flag;
|
||||
u16 dts_delta;
|
||||
u16 rap_flag;
|
||||
u16 stream_state;
|
||||
#endif
|
||||
u32 au_header_len; //record AU header size in octets
|
||||
};
|
||||
|
||||
struct rtp_aac_obj
|
||||
{
|
||||
u16 au_headers_len; //contain AU header size in octet (we will translate it into bit-wise count before sending)
|
||||
u8 au_header_num; //contain AU header number
|
||||
// struct rtp_au_hdr *au_hdr;
|
||||
};
|
||||
|
||||
#endif /*_AAC_H*/
|
||||
140
sdk/component/common/media/rtp_codec/avcodec.h
Normal file
140
sdk/component/common/media/rtp_codec/avcodec.h
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
#ifndef _AV_CODEC_H_
|
||||
#define _AV_CODEC_H_
|
||||
|
||||
/* Is this the place to include different codec header for rtp usage?*/
|
||||
|
||||
|
||||
struct codec_info
|
||||
{
|
||||
int codec_id;
|
||||
const char codec_name[8];
|
||||
uint8_t pt;
|
||||
uint32_t clock_rate;
|
||||
uint8_t audio_channels;
|
||||
void *priv;
|
||||
};
|
||||
|
||||
/* media type list -- range from 0-255 stored in 1 BYTE*/
|
||||
#define AVMEDIA_TYPE_VIDEO 0
|
||||
#define AVMEDIA_TYPE_AUDIO 1
|
||||
#define AVMEDIA_TYPE_SUBTITLE 2
|
||||
#define AVMEDIA_TYPE_UNKNOWN 255
|
||||
|
||||
/*codec id list -- id must match its placing order (starting from 0) in av_codec_tables*/
|
||||
|
||||
#define AV_CODEC_ID_MJPEG 0
|
||||
#define AV_CODEC_ID_H264 1
|
||||
#define AV_CODEC_ID_PCMU 2
|
||||
#define AV_CODEC_ID_PCMA 3
|
||||
#define AV_CODEC_ID_MP4A_LATM 4
|
||||
#define AV_CODEC_ID_MP4V_ES 5
|
||||
#define AV_CODEC_ID_PCM_RAW 6
|
||||
#define AV_CODEC_ID_UNKNOWN -1
|
||||
|
||||
/*rtp payload type mapping and standard rtp payload type table -- range from 0-255 in 1 BYTE*/
|
||||
#define RTP_PT_PCMU 0
|
||||
#define RTP_PT_GSM 3
|
||||
#define RTP_PT_G723 4
|
||||
#define RTP_PT_DVI4_R8000 5
|
||||
#define RTP_PT_DVI4_R16000 6
|
||||
#define RTP_PT_LPC 7
|
||||
#define RTP_PT_PCMA 8
|
||||
#define RTP_PT_G722 9
|
||||
#define RTP_PT_L16_C2 10
|
||||
#define RTP_PT_L16_C1 11
|
||||
#define RTP_PT_QCELP 12
|
||||
#define RTP_PT_CN 13
|
||||
#define RTP_PT_MPA 14
|
||||
#define RTP_PT_G728 15
|
||||
#define RTP_PT_DVI4_R11025 16
|
||||
#define RTP_PT_DVI4_R22050 17
|
||||
#define RTP_PT_G719 18
|
||||
#define RTP_PT_CELB 25
|
||||
#define RTP_PT_JPEG 26
|
||||
#define RTP_PT_NV 28
|
||||
#define RTP_PT_H261 31
|
||||
#define RTP_PT_MPV 32
|
||||
#define RTP_PT_MP2T 33
|
||||
#define RTP_PT_H263 34
|
||||
#define RTP_PT_RTCP_BASE 72
|
||||
#define RTP_PT_DYN_BASE 96
|
||||
#define RTP_PT_UNKNOWN 255
|
||||
/* AAC PROFILE */
|
||||
#define AV_PROFILE_AAC_MAIN 0
|
||||
#define AV_PROFILE_AAC_LOW 1
|
||||
#define AV_PROFILE_AAC_SSR 2
|
||||
#define AV_PROFILE_AAC_LTP 3
|
||||
#define AV_PROFILE_AAC_HE 4
|
||||
#define AV_PROFILE_AAC_HE_V2 28
|
||||
#define AV_PROFILE_AAC_LD 22
|
||||
#define AV_PROFILE_AAC_ELD 38
|
||||
#define AV_PROFILE_MPEG2_AAC_LOW 128
|
||||
#define AV_PROFILE_MPEG2_AAC_HE 131
|
||||
|
||||
#if 0
|
||||
/* MPEG4 VIDEO PROFILE */
|
||||
#define AV_PROFILE_MPEG4_SIMPLE 0
|
||||
#define AV_PROFILE_MPEG4_SIMPLE_SCALABLE 1
|
||||
#define AV_PROFILE_MPEG4_CORE 2
|
||||
#define AV_PROFILE_MPEG4_MAIN 3
|
||||
#define AV_PROFILE_MPEG4_N_BIT 4
|
||||
#define AV_PROFILE_MPEG4_SCALABLE_TEXTURE 5
|
||||
#define AV_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6
|
||||
#define AV_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7
|
||||
#define AV_PROFILE_MPEG4_HYBRID 8
|
||||
#define AV_PROFILE_MPEG4_ADVANCED_REAL_TIME 9
|
||||
#define AV_PROFILE_MPEG4_CORE_SCALABLE 10
|
||||
#define AV_PROFILE_MPEG4_ADVANCED_CODING 11
|
||||
#define AV_PROFILE_MPEG4_ADVANCED_CORE 12
|
||||
#define AV_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
|
||||
#define AV_PROFILE_MPEG4_SIMPLE_STUDIO 14
|
||||
#define AV_PROFILE_MPEG4_ADVANCED_SIMPLE 15
|
||||
/* DTS */
|
||||
#define AV_PROFILE_DTS 20
|
||||
#define AV_PROFILE_DTS_ES 30
|
||||
#define AV_PROFILE_DTS_96_24 40
|
||||
#define AV_PROFILE_DTS_HD_HRA 50
|
||||
#define AV_PROFILE_DTS_HD_MA 60
|
||||
#define AV_PROFILE_DTS_EXPRESS 70
|
||||
/* MPEG2 */
|
||||
#define AV_PROFILE_MPEG2_422 0
|
||||
#define AV_PROFILE_MPEG2_HIGH 1
|
||||
#define AV_PROFILE_MPEG2_SS 2
|
||||
#define AV_PROFILE_MPEG2_SNR_SCALABLE 3
|
||||
#define AV_PROFILE_MPEG2_MAIN 4
|
||||
#define AV_PROFILE_MPEG2_SIMPLE 5
|
||||
/* H264 */
|
||||
#define AV_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag
|
||||
#define AV_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag
|
||||
|
||||
#define AV_PROFILE_H264_BASELINE 66
|
||||
#define AV_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)
|
||||
#define AV_PROFILE_H264_MAIN 77
|
||||
#define AV_PROFILE_H264_EXTENDED 88
|
||||
#define AV_PROFILE_H264_HIGH 100
|
||||
#define AV_PROFILE_H264_HIGH_10 110
|
||||
#define AV_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA)
|
||||
#define AV_PROFILE_H264_HIGH_422 122
|
||||
#define AV_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA)
|
||||
#define AV_PROFILE_H264_HIGH_444 144
|
||||
#define AV_PROFILE_H264_HIGH_444_PREDICTIVE 244
|
||||
#define AV_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
|
||||
#define AV_PROFILE_H264_CAVLC_444 44
|
||||
#endif
|
||||
|
||||
/*av codec tables*/
|
||||
//#include "section_config.h"
|
||||
//SDRAM_DATA_SECTION
|
||||
static const struct codec_info av_codec_tables[] = {
|
||||
{AV_CODEC_ID_MJPEG, "MJPEG", RTP_PT_JPEG, 90000, 0, 0},
|
||||
{AV_CODEC_ID_H264, "H264", RTP_PT_DYN_BASE, 90000, 0, 0},
|
||||
{AV_CODEC_ID_PCMU, "PCMU", RTP_PT_PCMU, 8000, 1, 0},
|
||||
{AV_CODEC_ID_PCMA, "PCMA", RTP_PT_PCMA, 8000, 1, 0},
|
||||
{AV_CODEC_ID_MP4A_LATM, "MP4A", RTP_PT_DYN_BASE, 8000, 2, 0},
|
||||
{AV_CODEC_ID_MP4V_ES, "MP4V", RTP_PT_DYN_BASE, 90000, 0, 0},
|
||||
};
|
||||
#define AVCODEC_SIZE 6
|
||||
|
||||
void get_codec_by_id(struct codec_info *c, int id);
|
||||
|
||||
#endif //_AV_CODEC_H_
|
||||
27
sdk/component/common/media/rtp_codec/g711/g711.h
Normal file
27
sdk/component/common/media/rtp_codec/g711/g711.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
#ifndef _G711_H
|
||||
#define _G711_H
|
||||
|
||||
#include "dlist.h" //list management
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
//#include "osdep_api.h"
|
||||
|
||||
#define G711_DEBUG 1
|
||||
|
||||
#if G711_DEBUG
|
||||
#define G711_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define G711_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define G711_PRINTF(fmt, args...)
|
||||
#define G711_ERROR(fmt, args...)
|
||||
#endif
|
||||
|
||||
|
||||
//struct rtp_g711_obj {
|
||||
//};
|
||||
|
||||
|
||||
/*for debug purpose*/
|
||||
|
||||
#endif /*_G711_H*/
|
||||
26
sdk/component/common/media/rtp_codec/g711_sip/g711_sip.h
Normal file
26
sdk/component/common/media/rtp_codec/g711_sip/g711_sip.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef _G711_SIP_H
|
||||
#define _G711_SIP_H
|
||||
|
||||
#include "dlist.h" //list management
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
//#include "osdep_api.h"
|
||||
|
||||
#define G711_DEBUG 0
|
||||
|
||||
#if G711_DEBUG
|
||||
#define G711_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define G711_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define G711_PRINTF(fmt, args...)
|
||||
#define G711_ERROR(fmt, args...)
|
||||
#endif
|
||||
|
||||
|
||||
//struct rtp_g711_obj {
|
||||
//};
|
||||
|
||||
|
||||
/*for debug purpose*/
|
||||
|
||||
#endif /*_G711_SIP_H*/
|
||||
75
sdk/component/common/media/rtp_codec/h264/h264.h
Normal file
75
sdk/component/common/media/rtp_codec/h264/h264.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
#ifndef _H264_H
|
||||
#define _H264_H
|
||||
|
||||
#include "dlist.h" //list management
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
//#include "osdep_api.h"
|
||||
|
||||
#define H264_DEBUG 0
|
||||
|
||||
#if H264_DEBUG
|
||||
#define H264_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define H264_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define H264_PRINTF(fmt, args...)
|
||||
#define H264_ERROR(fmt, args...)
|
||||
#endif
|
||||
|
||||
#define MAX_NUM_NAL_PER_FRM 4
|
||||
|
||||
struct rtp_nal_obj
|
||||
{
|
||||
u8 start_code_len;
|
||||
unsigned char nal_header;
|
||||
u8 is_fu_start;
|
||||
u8 is_fu_end;
|
||||
u8 must_not_drop;
|
||||
u8 do_not_send;
|
||||
int offset;
|
||||
};
|
||||
|
||||
struct rtp_h264_obj
|
||||
{
|
||||
int num_nal;
|
||||
struct rtp_nal_obj nal_obj[MAX_NUM_NAL_PER_FRM];
|
||||
};
|
||||
|
||||
#endif /*_H264_H*/
|
||||
|
||||
#if 0
|
||||
|
||||
#ifndef _H264_H
|
||||
#define _H264_H
|
||||
|
||||
#include "dlist.h" //list management
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
//#include "osdep_api.h"
|
||||
|
||||
#define H264_DEBUG 0
|
||||
|
||||
#if H264_DEBUG
|
||||
#define H264_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define H264_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define H264_PRINTF(fmt, args...)
|
||||
#define H264_ERROR(fmt, args...)
|
||||
#endif
|
||||
|
||||
/* in favor of rtp fragmentation */
|
||||
struct rtp_h264_obj
|
||||
{
|
||||
u8 start_code_len;
|
||||
unsigned char nal_header;
|
||||
u8 is_fu_start;
|
||||
u8 is_fu_end;
|
||||
u8 must_not_drop;
|
||||
};
|
||||
|
||||
|
||||
/********************************h264 over rtp******************************/
|
||||
|
||||
|
||||
#endif /*_H264_H*/
|
||||
#endif
|
||||
38
sdk/component/common/media/rtp_codec/h264_sip/h264_sip.h
Normal file
38
sdk/component/common/media/rtp_codec/h264_sip/h264_sip.h
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#ifndef _H264_SIP_H
|
||||
#define _H264_SIP_H
|
||||
|
||||
#include "dlist.h" //list management
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
//#include "osdep_api.h"
|
||||
|
||||
#define H264_SIP_DEBUG 0
|
||||
|
||||
#if H264_SIP_DEBUG
|
||||
#define H264_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define H264_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define H264_PRINTF(fmt, args...)
|
||||
#define H264_ERROR(fmt, args...)
|
||||
#endif
|
||||
|
||||
#define MAX_NUM_NAL_PER_FRM 4
|
||||
|
||||
struct rtp_nal_obj
|
||||
{
|
||||
u8 start_code_len;
|
||||
unsigned char nal_header;
|
||||
u8 is_fu_start;
|
||||
u8 is_fu_end;
|
||||
u8 must_not_drop;
|
||||
u8 do_not_send;
|
||||
int offset;
|
||||
};
|
||||
|
||||
struct rtp_h264_obj
|
||||
{
|
||||
int num_nal;
|
||||
struct rtp_nal_obj nal_obj[MAX_NUM_NAL_PER_FRM];
|
||||
};
|
||||
|
||||
#endif /*_H264_H*/
|
||||
61
sdk/component/common/media/rtp_codec/mjpeg/mjpeg.h
Normal file
61
sdk/component/common/media/rtp_codec/mjpeg/mjpeg.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef _MJPEG_H_
|
||||
#define _MJPEG_H_
|
||||
|
||||
#include "dlist.h" //list management
|
||||
#include "basic_types.h"
|
||||
#include "osdep_service.h"
|
||||
//#include "osdep_api.h"
|
||||
|
||||
#define MJPEG_DEBUG 0
|
||||
|
||||
#if MJPEG_DEBUG
|
||||
#define MJPEG_PRINTF(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#define MJPEG_ERROR(fmt, args...) printf("\n\r%s: " fmt, __FUNCTION__, ## args)
|
||||
#else
|
||||
#define MJPEG_PRINTF(fmt, args...)
|
||||
#define MJPEG_ERROR(fmt, args...)
|
||||
#endif
|
||||
|
||||
struct jpeghdr {
|
||||
unsigned int tspec:8; /* type-specific field */
|
||||
unsigned int off:24; /* fragment byte offset */
|
||||
u8 type; /* id of jpeg decoder params */
|
||||
u8 q; /* quantization factor (or table id) */
|
||||
u8 width; /* frame width in 8 pixel blocks */
|
||||
u8 height; /* frame height in 8 pixel blocks */
|
||||
};
|
||||
|
||||
struct jpeghdr_rst {
|
||||
u16 dri; /*restart interval*/
|
||||
unsigned int f:1; /*restart first bit flag*/
|
||||
unsigned int l:1; /*restart last bit flag*/
|
||||
unsigned int count:14; /*restart count*/
|
||||
};
|
||||
|
||||
|
||||
struct jpeghdr_qtable {
|
||||
u8 mbz;
|
||||
u8 precision;
|
||||
u16 length;
|
||||
};
|
||||
|
||||
#define RTP_JPEG_RESTART 0x40
|
||||
#define USE_EXPLICIT_DQT 255
|
||||
#define USE_IMPLICIT_DQT 0
|
||||
|
||||
struct rtp_jpeg_obj
|
||||
{
|
||||
struct jpeghdr jpghdr;
|
||||
struct jpeghdr_rst rsthdr;
|
||||
struct jpeghdr_qtable qtable;
|
||||
u8 lqt[64*2]; /* Luma Quantizer table */
|
||||
u8 cqt[64*2]; /* Croma Quantizer table */
|
||||
int hdr_len;
|
||||
int frame_offset;
|
||||
};
|
||||
|
||||
/*for debug purpose*/
|
||||
void dumpJpegHeader(struct jpeghdr *jpghdr);
|
||||
void dumpRstDeader(struct jpeghdr_rst *rsthdr);
|
||||
|
||||
#endif /*_MJPEG_H_*/
|
||||
21
sdk/component/common/media/rtp_codec/mjpeg/mjpeg2jpeg.h
Normal file
21
sdk/component/common/media/rtp_codec/mjpeg/mjpeg2jpeg.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef MJPEG_2_JPEG_H
|
||||
#define MJPEG_2_JPEG_H
|
||||
#if 0
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#include "osdep_api.h"
|
||||
#include "basic_types.h"
|
||||
|
||||
typedef struct AVFrames
|
||||
{
|
||||
char *FrameData;
|
||||
int FrameLength;
|
||||
}AVFrame;
|
||||
|
||||
int mjpeg2jfif(AVFrame *in_frame);
|
||||
|
||||
|
||||
#endif
|
||||
3200
sdk/component/common/media/samples/sample_aac.h
Normal file
3200
sdk/component/common/media/samples/sample_aac.h
Normal file
File diff suppressed because it is too large
Load diff
2152
sdk/component/common/media/samples/sample_aacenc.h
Normal file
2152
sdk/component/common/media/samples/sample_aacenc.h
Normal file
File diff suppressed because it is too large
Load diff
1936
sdk/component/common/media/samples/sample_doorbell_pcmu.h
Normal file
1936
sdk/component/common/media/samples/sample_doorbell_pcmu.h
Normal file
File diff suppressed because it is too large
Load diff
34405
sdk/component/common/media/samples/sample_h264.h
Normal file
34405
sdk/component/common/media/samples/sample_h264.h
Normal file
File diff suppressed because it is too large
Load diff
1429
sdk/component/common/media/samples/sample_jpeg.h
Normal file
1429
sdk/component/common/media/samples/sample_jpeg.h
Normal file
File diff suppressed because it is too large
Load diff
14596
sdk/component/common/media/samples/sample_pcmu.h
Normal file
14596
sdk/component/common/media/samples/sample_pcmu.h
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue