mirror of
https://github.com/drasko/open-ameba.git
synced 2024-11-30 02:00:30 +00:00
110 lines
3.1 KiB
C
110 lines
3.1 KiB
C
|
#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;
|
||
|
}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);
|
||
|
|
||
|
#endif
|