584 lines
26 KiB
C
Executable File
584 lines
26 KiB
C
Executable File
/**
|
|
Header file of movie interface
|
|
|
|
movie interface
|
|
|
|
@file MovieInterface.h
|
|
@ingroup mIAPPMOVIEINTERFACE
|
|
|
|
Copyright Novatek Microelectronics Corp. 2005. All rights reserved.
|
|
*/
|
|
#ifndef _MOVIEINTERFACEDEF_H
|
|
#define _MOVIEINTERFACEDEF_H
|
|
|
|
#include "kwrap/type.h"
|
|
|
|
//////#include "FileSysTsk.h"
|
|
//////#include "SysKer.h"
|
|
|
|
//#define MODULE_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
|
|
|
|
|
/**
|
|
Stop type for MovRec_Stop()
|
|
*/
|
|
typedef enum {
|
|
MOVREC_NO_WAIT = 0x0, ///< stop recording and no wait
|
|
MOVREC_WAIT_END = 0x1, ///< stop recording and wait this action finished
|
|
ENUM_DUMMY4WORD(MOVREC_STOP_TYPE)
|
|
} MOVREC_STOP_TYPE;
|
|
|
|
/**
|
|
Stop type for MovRec_Stop()
|
|
*/
|
|
typedef enum {
|
|
MOVREC_EXTENDUNIT_10 = 10,
|
|
MOVREC_EXTENDUNIT_20 = 20,
|
|
MOVREC_EXTENDUNIT_30 = 30,
|
|
ENUM_DUMMY4WORD(MOVREC_EXTENDCRASH_UNIT)
|
|
} MOVREC_EXTENDCRASH_UNIT;
|
|
|
|
#define MOVIEREC_AVIREC 0
|
|
#define MOVIEREC_MEDIAREC 1
|
|
|
|
#define MOVIEREC_JPGFMT_444 1
|
|
#define MOVIEREC_JPGFMT_422 2
|
|
#define MOVIEREC_JPGFMT_420 3
|
|
|
|
#define MOVIEREC_RECFORMAT_VIDEO_ONLY 1
|
|
#define MOVIEREC_RECFORMAT_AUD_VID_BOTH 2
|
|
|
|
#define MOVIEREC_1STQP_BEST 1280
|
|
#define MOVIEREC_1STQP_NORMAL 2560
|
|
#define MOVIEREC_1STQP_DRAFT 6400
|
|
|
|
#define MOVIEREC_ENDTYPE_CUT 1
|
|
#define MOVIEREC_ENDTYPE_NORMAL 2
|
|
|
|
#define MOVREC_VIDBS_REVSEC 3 //reserved 4 sec BS//2015/06/17 5->4
|
|
#define MOVREC_FAKE_H264BS_BUF 0x64000 //400K
|
|
|
|
#define MOVREC_VIDBS_REVSEC_S 3 //reserved 3 sec BS
|
|
|
|
#define MOVREC_VIDBS_NUMINBS 10 //if not tiny = 6+4
|
|
#define MOVREC_VIDBS_NUMINBS_S 2 //if tiny = 2+3, if writefile=0
|
|
|
|
#define MOVREC_AVI_HDR 0x10000 //one big cluster align//2013/05/28 Meg
|
|
#define MOVREC_MAX_CLUSIZE MOVREC_AVI_HDR
|
|
|
|
#define MOVREC_FILESAVE_NONE 0 //no write
|
|
#define MOVREC_FILESAVE_PART1 1 //partition 1
|
|
#define MOVREC_FILESAVE_PART2 2 //partition 2
|
|
|
|
typedef void (MovieRecCallback)(UINT32 event_id, UINT32 e_value);
|
|
|
|
typedef enum {
|
|
MOVREC_STATUS_NOT_OPENED = 0x1, ///< media recorder task is not open
|
|
MOVREC_STATUS_OPENED_NOT_RECORD = 0x2, ///< media recorder task is open, not recording
|
|
MOVREC_STATUS_RECORDING = 0x3, ///< media recorder task is recording
|
|
ENUM_DUMMY4WORD(MOVREC_STATUS_TYPE)
|
|
} MOVREC_STATUS_TYPE;
|
|
|
|
/**
|
|
check type for MediaRec_GetLastV_BS()
|
|
*/
|
|
typedef enum {
|
|
MEDIAREC_VIDBS_PATH1 = 0x0, ///< video path1 bitstream
|
|
MEDIAREC_VIDBS_PATH2 = 0x1, ///< video path2 bitstream
|
|
ENUM_DUMMY4WORD(MEDIAREC_VIDBS_TYPE)
|
|
} MEDIAREC_VIDBS_TYPE;
|
|
|
|
/**
|
|
check type for MediaRec_SetDisk2SecRestriction()
|
|
*/
|
|
typedef enum {
|
|
MEDIAREC_RESTR_INDEXBUF = 0x0, ///< check index buffer to calculate max recording time
|
|
MEDIAREC_RESTR_FSLIMIT = 0x1, ///< check fs limitation, 4GB now
|
|
ENUM_DUMMY4WORD(MEDIAREC_RESTR_TYPE)
|
|
} MEDIAREC_RESTR_TYPE;
|
|
//#NT#2010/05/17#Meg Lin -end
|
|
|
|
/**
|
|
@name IPL mode change callback event
|
|
|
|
Event ID for changing IPL mode callback function.
|
|
*/
|
|
//@{
|
|
#define MOVREC_IPLCHG_PREVIEW 1 ///< Set IPL to preview mode
|
|
#define MOVREC_IPLCHG_VIDEO 2 ///< Set IPL to video mode
|
|
#define MOVREC_DIRECT_FAKESTOPIPL 3 ///< Set IPL to preview mode for IME/ALL direct
|
|
#define MOVREC_IPLCHG_INITBS 4 ///< initbs
|
|
#define MOVREC_DIRECT_FAKESTART 5 ///< Set IPL to video mode for IME/ALL direct
|
|
#define MOVREC_DIRECT_FAKESTART_E 6 ///< Set IPL to video mode for IME/ALL direct
|
|
//@}
|
|
|
|
/**
|
|
@name Media ImmediatelyProc callback ID
|
|
|
|
Callback ID of media ImmediatelyProc.
|
|
*/
|
|
//@{
|
|
#define MOVREC_IMMPROC_CUTFILE_END 1 ///< end of one cut file, no parameter
|
|
#define MOVREC_IMMPROC_DELETE_FILE 2 ///< end of deleting file, p1: directory ID, p2: file ID
|
|
#define MOVREC_IMMPROC_ENC_SETTING 3 ///< special encoding parameters setting, such as H.264 3DNR
|
|
#define MOVREC_IMMPROC_FILEFINISH 4 ///< end of one file, no parameter
|
|
//@}
|
|
|
|
#define MOVREC_IPLGET_READYBUF 1 ///< Get IPL ready buffer
|
|
|
|
#define MOVREC_RECPARAM_WIDTH 0x01 ///< width, p1 valid, p2 fileid
|
|
#define MOVREC_RECPARAM_HEIGHT 0x02 ///< height, p1 valid, p2 fileid
|
|
#define MOVREC_RECPARAM_FRAMERATE 0x03 ///< frameRate, p1 valid
|
|
#define MOVREC_RECPARAM_QUALITY 0x04 ///< quality, p1 valid
|
|
#define MOVREC_RECPARAM_TARGETRATE 0x05 ///< target rate (bytes per second), p1 valid, p2 fileid
|
|
#define MOVREC_RECPARAM_GOLFSHOT_ON 0x08 ///< change recFormat to golfshot, p1 0 or 1
|
|
#define MOVREC_RECPARAM_CUTSEC 0x09 ///< seamless cut sec
|
|
#define MOVREC_RECPARAM_CUTSIZE 0x0A ///< seamless cut size
|
|
#define MOVREC_RECPARAM_ENDTYPE 0x0B ///< end type
|
|
#define MOVREC_RECPARAM_FLASH_ON 0x0C ///< flash recording on/off, p1 0 or 1
|
|
#define MOVREC_RECPARAM_PWROFFPT 0x0D ///< enable/disable poweroff_protection, default: on
|
|
#define MOVREC_RECPARAM_GPSON 0x0E ///< enable/disable gps info on, default: off
|
|
#define MOVREC_RECPARAM_TIMELAPSE 0x0F ///< set time lapse recording mode (ON/OFF)
|
|
#define MOVREC_RECPARAM_TIMELAPSE_TIME 0x10 ///< set time lapse recording time interval (in unit of ms, should be larger than 1/30 sec)
|
|
#define MOVREC_RECPARAM_THUMB_DATA 0x11 ///< movie thumbnail settings, p1:on/off, p2:width, p3:height
|
|
#define MOVREC_RECPARAM_AUD_SAMPLERATE 0x12 ///< audio sample rate, AUDIO_SR_8000 or others
|
|
#define MOVREC_RECPARAM_AUD_CHS 0x13 ///< audio channels, 1 or 2
|
|
#define MOVREC_RECPARAM_AUD_SRC 0x14 ///< audio source, MEDIAREC_AUDTYPE_LEFT or others
|
|
#define MOVREC_RECPARAM_AUD_CODEC 0x15 ///< audio codec type, MOVAUDENC_PCM or others
|
|
#define MOVREC_RECPARAM_RECFORMAT 0x16 ///< recording format, MEDIAREC_AUD_VID_BOTH or others
|
|
#define MOVREC_RECPARAM_EN_CUSTOMUDATA 0x17 ///< enable custom user data or not
|
|
#define MOVREC_RECPARAM_VIDEOCODEC 0x18 ///< video codec type, MEDIAREC_ENC_H264 or others
|
|
#define MOVREC_RECPARAM_H264GOPTYPE 0x19 ///< h264 GOP type, MEDIAREC_GOP_IPONLY or others
|
|
#define MOVREC_RECPARAM_H2643DNRLEVEL 0x1A ///< h264 3DNR level
|
|
#define MOVREC_RECPARAM_RAWENC_Q 0x1B ///< Q value for raw-encoding
|
|
#define MOVREC_RECPARAM_EN_AUDFILTER 0x1C ///< enable audio filter or not
|
|
#define MOVREC_RECPARAM_DROP_FRAME_NUM 0x1D ///< drop frame number as start recording (for AV sync)
|
|
#define MOVREC_RECPARAM_H264QPLEVEL 0x1E ///< h264 QP initial level
|
|
#define MOVREC_RECPARAM_MOV_ROTATE 0x1F ///< MOV/MP4 file rotation, MEDIAREC_MOV_ROTATE_0
|
|
#define MOVREC_RECPARAM_FILETYPE_2 0x20 ///< file1 type, MEDIAREC_AVI as default
|
|
#define MOVREC_RECPARAM_MERGEYUV 0x21
|
|
#define MOVREC_RECPARAM_FILETYPE 0x87 ///< file type, MEDIAREC_MOV, MEDIAREC_AVI, MEDIAREC_MP4
|
|
#define MOVREC_RECPARAM_JPG_YUVFORMAT 0x22 ///< set jpeg yuv format
|
|
#define MOVREC_RECPARAM_MULTIREC_ON 0x23
|
|
#define MOVREC_RECPARAM_LIVEVIEW 0x24 ///< set MEDIAREC_LIVEVIEW recformat 2013/10/02 Meg
|
|
#define MOVREC_RECPARAM_DAR 0x25 ///< video display aspect ratio
|
|
#define MOVREC_RECPARAM_PRE_ENCODE 0x26 ///< video pre-encode (for applying 3DNR to 1st frame)
|
|
#define MOVREC_RECPARAM_SENSOR_FPS 0x27 ///< video sensor fps
|
|
#define MOVREC_RECPARAM_SENSOR_NUM 0x28 ///< input sensor number (for encoding path judgement)
|
|
#define MOVREC_RECPARAM_SVC 0x29 ///< set SVC disable/enable and GOP number, p1 value, p2 vsID
|
|
#define MOVREC_RECPARAM_TINYMODE_ON 0x2A ///< tiny mode on/off, p1 0 or 1
|
|
#define MOVREC_RECPARAM_RAWENC_ON 0x2B ///< rawencode on/off, p1 0 or 1
|
|
#define MOVREC_RECPARAM_Y_LINEOFT 0x2C ///< y lineoffset, p1 valid, p2 pathid
|
|
#define MOVREC_RECPARAM_UV_LINEOFT 0x2D ///< uv lineoffset, p1 valid, p2 pathid
|
|
|
|
#define MOVREC_RECPARAM_MAX_WIDTH 0x2E ///< MAX width, p1 valid, p2 fileid
|
|
#define MOVREC_RECPARAM_MAX_HEIGHT 0x2F ///< MAX height, p1 valid, p2 fileid
|
|
#define MOVREC_RECPARAM_MAX_TBR 0x30 ///< MAX TBR, p1 valid, p2 fileid
|
|
#define MOVREC_RECPARAM_H264GOPNUM 0x31 ///< change GOP number, p1 valid, p2 vsID
|
|
#define MOVREC_RECPARAM_VID_ACTCODEC_ID 0x32 ///< change videc codecid, p1 valid, p2 vsID
|
|
#define MOVREC_RECPARAM_VID_EN_2NDCODEC 0x33 ///< enable 2nd codec, p1 valid (pathid)
|
|
#define MOVREC_RECPARMA_EMRLOOP_ON 0x34 ///< enable emrloop on, p1 valid, p2 vsID
|
|
#define MOVREC_RECPARAM_CBRINFO 0x35 ///< CBR, p1 MP_VDOENC_CBR_INFO, p2 vsID
|
|
#define MOVREC_RECPARAM_VBRINFO 0x36 ///< VBR, p1 MP_VDOENC_VBR_INFO, p2 vsID
|
|
//#NT#2016/09/20#Bob Huang -begin
|
|
//#NT#Support HDMI Display with 3DNR Out
|
|
#define MOVREC_RECPARAM_H264_3DNROUT 0x37 ///< enable h264 3DNR Out or not
|
|
//#NT#2016/09/20#Bob Huang -end
|
|
//#NT#2016/10/05#Bob Huang -begin
|
|
//#NT#Support Multi 2P Enc
|
|
#define MOVREC_RECPARAM_MULTI_2PENC_ON 0x38 ///< enable h264 multi 2P enc or not
|
|
//#NT#2016/10/05#Bob Huang -end
|
|
#define MOVREC_RECPARAM_NOALLOCFILE 0x39 /// disable FS allocateFile, p1 on/off, default: off
|
|
#define MOVREC_RECPARAM_ROLLBACK2M 0x3A /// enable rollback 2m, p1 on/off
|
|
#define MOVREC_RECPARAM_H264ROTATE 0x3B /// h264 rotate
|
|
|
|
#define MOVREC_GETRECPARAM_TARGETBR 0x01 ///< target bitrate (MB per sec), p1: (in)pathid, p2: (out)
|
|
#define MOVREC_GETRECPARAM_FRAMERATE 0x02 ///< framerate, p1: (in)pathid, p2: (out)
|
|
#define MOVREC_GETRECPARAM_H264GOPNUM 0x03 ///< h264 gop num, p1: (out), p2: vidID (in)
|
|
|
|
#define MOVREC_EVENT_RESULT_NORMAL 1 ///< Finish normally
|
|
#define MOVREC_EVENT_RESULT_HW_ERR 2 ///< Hardware error
|
|
#define MOVREC_EVENT_RESULT_FULL 3 ///< Card full
|
|
#define MOVREC_EVENT_RESULT_SLOW 4 ///< Write card too slowly
|
|
#define MOVREC_EVENT_RESULT_NOTREADY 5 ///< Not ready
|
|
#define MOVREC_EVENT_THRESHOLD 6 ///< Threshold meets
|
|
#define MOVREC_EVENT_RESULT_OVERTIME 7 ///< Overtime
|
|
#define MOVREC_EVENT_RESULT_WRITE_ERR 10 ///< Filesystem write fails
|
|
#define MOVREC_EVENT_STOPPED 11 ///< Callback when stops totally
|
|
#define MOVREC_EVENT_FILECOMPLETE 13 ///< Write file completely
|
|
#define MOVREC_EVENT_RESULT_CUT_FAIL 19 ///< Cut, overlap fail (write slowly)
|
|
#define MOVREC_EVENT_CUSTOM_UDATA 21 ///< Set customized user data
|
|
#define MOVREC_EVENT_ENCONE_OK 22 ///< enc one frame
|
|
#define MOVREC_EVENT_VIDEO_BS_CB 23 ///< path1 video enc ok
|
|
#define MOVREC_EVENT_H264BSCB_P1 24 ///< path2 video enc ok
|
|
#define MOVREC_EVENT_RESULT_FLASHSTOP 25 ///< 30 sec after flash stop
|
|
#define MOVREC_EVENT_AUDBSCB 26 ///< audio bitstream callback
|
|
#define MOVREC_EVENT_LOOPREC_FULL 27 ///< no space for seamless recording
|
|
#define MOVREC_EVENT_AUDREC_START 28 ///< similar to MOVREC_EVENT_START
|
|
#define MOVREC_EVENT_RESULT_PARAMERR 29 ///< parameter error
|
|
#define MOVREC_EVENT_RESULT_YUVQ_FULL 30 ///< yuv q full
|
|
#define MOVREC_EVENT_EMR_FILECOMPLETE 31 ///< Write EMR file completely, p1=pathid(0, 1..)
|
|
#define MOVREC_EVENT_H264BSCB_P2 32 ///< path3 video enc ok
|
|
#define MOVREC_EVENT_H264BSCB_P3 33 ///< path4 video enc ok
|
|
#define MOVREC_EVENT_CRASH_FILECOMPLETE 34 ///< crash file completely, p1=pathid(0, 1..)
|
|
#define MOVREC_EVENT_AUDREC_STOP 35 ///< audio recording stop
|
|
#define MOVREC_EVENT_START 0x80 ///< start recording
|
|
#define MOVREC_EVENT_TIMELAPSE_ONESHOT 0x81 ///< timelapse oneshot
|
|
#define MOVREC_EVENT_SLOWSTART 0x82 ///< slow stop begins
|
|
#define MOVREC_EVENT_ADDONEVIDBS 0x83 ///< add one video BS
|
|
#define MOVREC_EVENT_GETNAME_PATH0 0x84 ///< get custom filename
|
|
#define MOVREC_EVENT_GETNAME_EMRPATH 0x85 ///<
|
|
#define MOVREC_EVENT_VIDEO_INFO_READY 0x86 ///< h264 sps ready, param=pathid
|
|
#define MOVREC_EVENT_IMEDIRECT_STOPH264 0x90
|
|
#define MOVREC_EVENT_IMEDIRECT_IPLNOEND 0x91
|
|
#define MOVREC_EVENT_FILEOUT_WRITEOK 0x92
|
|
//#NT#2016/09/20#Bob Huang -begin
|
|
//#NT#Support HDMI Display with 3DNR Out
|
|
#define MOVREC_EVENT_3DNR_DISPSTART 0xA0 ///< 3dnr start display
|
|
#define MOVREC_EVENT_3DNR_DISPSTOP 0xA1 ///< 3dnr stop display
|
|
#define MOVREC_EVENT_3DNR_ONE_DISPLAYFRAME 0xA2 ///< 3dnr draw One display frame
|
|
#define MOVREC_EVENT_3DNR_MEDIAINFO_READY 0xA3 ///< 3dnr media information ready to config dispsrv
|
|
//#NT#2016/09/20#Bob Huang -end
|
|
|
|
#define MOVREC_EVENT_FRAME_INTERVAL 0xB0
|
|
|
|
#define MOVREC_SETCRASH_OK 0 ///< last file ro, now ro
|
|
#define MOVREC_SETCRASH_NOLASTFILE 1 ///< no last file
|
|
#define MOVREC_SETCRASH_LASTFILERO 2 ///< last file has been read-only
|
|
|
|
#define MOVREC_CRASHTYPE_RO 1
|
|
#define MOVREC_CRASHTYPE_EMR 2
|
|
#define MOVREC_CRASHTYPE_EV1 0x81 //event 1
|
|
#define MOVREC_CRASHTYPE_EV2 0x82 //event 2
|
|
#define MOVREC_CRASHTYPE_EV3 0x83 //event 3
|
|
#define MOVREC_CRASHTYPE_PREV_EMR 0x84
|
|
/**
|
|
@name Valid video input YCbCr format
|
|
|
|
Valid video input YCbCr format.
|
|
*/
|
|
//@{
|
|
#define MOVREC_JPEG_FORMAT_420 0 ///< Y:Cb:Cr = 4:1:1
|
|
#define MOVREC_JPEG_FORMAT_422 1 ///< Y:Cb:Cr = 2:1:1
|
|
#define MOVREC_JPEG_FORMAT_444 2 ///< Y:Cb:Cr = 1:1:1
|
|
#define MOVREC_JPEG_FORMAT_100 3 ///< Y:Cb:Cr = 4:1:1
|
|
//@}
|
|
|
|
|
|
/**
|
|
@name Valid counting type
|
|
|
|
Valid counting type for MediaRec_Disk2SecondWithType.
|
|
*/
|
|
//@{
|
|
#define MOVREC_COUNTTYPE_FS 1 ///< get freespace in storage
|
|
#define MOVREC_COUNTTYPE_4G 2 ///< using 4G to calculate
|
|
#define MOVREC_COUNTTYPE_USER 3 ///< using given size to calculate
|
|
//@}
|
|
|
|
/**
|
|
@name Valid end type
|
|
|
|
Valid recording end type. Normal end, cut overlap, or cut till card full.
|
|
*/
|
|
//@{
|
|
#define MOVREC_ENDTYPE_NORMAL 1 ///< normal end, such as press key to stop recording
|
|
#define MOVREC_ENDTYPE_CUTOVERLAP 2 ///< cut file and continue recording automatically; overlap the old files (cyclic recording)
|
|
#define MOVREC_ENDTYPE_CUT_TILLCARDFULL 3 ///< cut file and continue recording automatically till card full
|
|
#define MOVREC_ENDTYPE_MAX 3 ///< maximum number of recording end type
|
|
//@}
|
|
|
|
//#NT#Add media recording source type (for test mode)
|
|
/**
|
|
@name Media recording source type
|
|
|
|
Media recording video source type: normal, fixed YUV pattern, bitstream;
|
|
Media recording audio source type: normal, fixed PCM pattern.
|
|
*/
|
|
//@{
|
|
#define MOVREC_SRC_NORMAL 0 ///< normal source (video: sensor, audio: mic-in)
|
|
#define MOVREC_SRC_FIXED_YUV 1 ///< fixed YUV pattern (for video)
|
|
#define MOVREC_SRC_BS_ONLY 2 ///< bitstream only (for video)
|
|
#define MOVREC_SRC_FIXED_PCM 1 ///< fixed PCM pattern (for audio)
|
|
//@}
|
|
|
|
/**
|
|
@name Get IPL ready buffer callback event
|
|
|
|
Event ID for getting IPL ready buffer callback function.
|
|
*/
|
|
//@{
|
|
#define MOVREC_IPLGET_READYBUF 1 ///< Get IPL ready buffer
|
|
//@}
|
|
|
|
/**
|
|
@name media record information
|
|
|
|
Media recording getting information.
|
|
*/
|
|
//@{
|
|
#define MOVREC_GETINFO_WIDTH_HEIGHT 1 ///< p1: width (out), p2: height (out), p3:id (in)
|
|
#define MOVREC_GETINFO_VIDEO_CODEC 2 ///< p1: videocodec type(out), MEDIAREC_ENC_JPG or others
|
|
///< p2: pathid (in), 0:path1 1:path2
|
|
///< p3: 0 or activeID
|
|
#define MOVREC_GETINFO_AUDIO_SR 3 ///< p1: audio samplerate(out), AUDIO_SR_32000 or others//2013/01/11 Meg
|
|
#define MOVREC_GETINFO_AUDIO_CHS 4 ///< p1: audio channels(out), 1 or 2//2013/01/11 Meg
|
|
#define MOVREC_GETINFO_AUDIO_BITS 5 ///< p1: audio bits per sample, 16
|
|
#define MOVREC_GETINFO_H264_SPS 6 ///< p1: addr (out), p2: size (out), p3: num(0 or 1)
|
|
#define MOVREC_GETINFO_VIDEO_FPS 7 ///< p1: v fps (out), p3: id (in)
|
|
#define MOVREC_GETINFO_WIDTH_HEIGHT_P2 8 ///< p1: width of Path2 (out), p2: height of Path2(out)
|
|
#define MOVREC_GETINFO_AUDIO_CODEC 9 ///< p1: audio codec type of 1stpath(out), MEDIAREC_ENC_PCM or others
|
|
#define MOVREC_GETINFO_SEAMLESSSEC 10 ///< p1: seamless Sec(out),
|
|
#define MOVREC_GETINFO_RECFORMAT 11 ///< p1: recformat of 1stpath(out), MEDIAREC_AUD_VID_BOTH or others
|
|
#define MOVREC_GETINFO_PATHOPEN 12 ///< p1: pathid (in), p2: onoff(out)
|
|
|
|
#define MOVREC_GETINFO_CARDWRITE_P2 13//< p1: cardwrite[path2]
|
|
//#define MOVREC_GETINFO_RECFORMAT 14//< p1: recformat of path1
|
|
#define MOVREC_GETINFO_40_VIDTBR 0x80///< p1: vsid(in) p2: TBR (out) only 4.0
|
|
//@}
|
|
|
|
/**
|
|
@name media audio type information
|
|
|
|
Media recording audio type information.
|
|
*/
|
|
//@{
|
|
#define MOVREC_AUDTYPE_LEFT 1 ///< left
|
|
#define MOVREC_AUDTYPE_RIGHT 2 ///< right
|
|
#define MOVREC_AUDTYPE_STEREO 3 ///< stereo
|
|
#define MOVREC_AUDTYPE_MONO 4 ///< mono
|
|
//@}
|
|
|
|
//#NT#2013/04/17#Calvin Chang#Support Rotation information in Mov/Mp4 File format -begin
|
|
/**
|
|
@name media rotation angle information
|
|
|
|
Media recording roation angle information.
|
|
*/
|
|
//@{
|
|
#define MOVREC_MOV_ROTATE_0 0 ///< angle 0
|
|
#define MOVREC_MOV_ROTATE_90 1 ///< angle 90
|
|
#define MOVREC_MOV_ROTATE_180 2 ///< angle 180
|
|
#define MOVREC_MOV_ROTATE_270 3 ///< angle 270
|
|
//@}
|
|
//#NT#2013/04/17#Calvin Chang -end
|
|
|
|
/**
|
|
@name raw encoding EVENT ID
|
|
@note callback ID of raw encoder
|
|
*/
|
|
//@{
|
|
#define MOVREC_RAWENC_EVENT_RESULT_OK 1 ///< finish normally
|
|
#define MOVREC_RAWENC_EVENT_RESULT_ERR 2 ///< encode error
|
|
#define MOVREC_RAWENC_EVENT_RESULT_WRITE_ERR 3 ///< filesystem write fails
|
|
#define MOVREC_RAWENC_EVENT_RESULT_DCF_FULL 4 ///< DCF ID full
|
|
#define MOVREC_RAWENC_EVENT_RESULT_JPG_OK 5 ///< jpg encoding ok
|
|
#define MOVREC_RAWENC_EVENT_EN_IMEOUT 0x10 ///< enable IME output
|
|
#define MOVREC_RAWENC_EVENT_DIS_IMEOUT 0x11 ///< disable IME output
|
|
//@}
|
|
|
|
/**
|
|
@name raw encoding results
|
|
*/
|
|
//@{
|
|
#define MOVREC_RAWENC_OK 0 ///< encoding successfully
|
|
#define MOVREC_RAWENC_ERR_NOT_OPEN 1 ///< raw encode task is not opened
|
|
#define MOVREC_RAWENC_ERR_BUSY 2 ///< raw encode task is busy
|
|
#define MOVREC_RAWENC_ERR_IMG_NOT_READY 3 ///< YUV raw image is not ready
|
|
#define MOVREC_RAWENC_ERR_UNSAFE_TO_WRITE 4 ///< memory may be not enough for writing JPEG file
|
|
//@}
|
|
|
|
#define MOV_AUDIOBR_16000 16000
|
|
#define MOV_AUDIOBR_32000 32000
|
|
#define MOV_AUDIOBR_48000 48000
|
|
#define MOV_AUDIOBR_64000 64000
|
|
#define MOV_AUDIOBR_80000 80000
|
|
#define MOV_AUDIOBR_96000 96000
|
|
#define MOV_AUDIOBR_112000 112000
|
|
#define MOV_AUDIOBR_128000 128000
|
|
#define MOV_AUDIOBR_144000 144000
|
|
#define MOV_AUDIOBR_160000 160000
|
|
#define MOV_AUDIOBR_192000 192000
|
|
|
|
#define MOVREC_GOLFSHOT_FR1 1
|
|
#define MOVREC_GOLFSHOT_FR5 5
|
|
#define MOVREC_GOLFSHOT_FR15 15
|
|
#define MOVREC_GOLFSHOT_FR30 30
|
|
#define MOVREC_TIMELAPSE_FR30 30
|
|
|
|
|
|
//2015/11/23 only for Media 4.0
|
|
#define VIDEOENC_CODECTYPE_MAX 2//one path can match two codec,
|
|
//but only one do in the same time
|
|
|
|
#define MOVREC_RECSTATE_NONE 0
|
|
#define MOVREC_RECSTATE_START 1
|
|
#define MOVREC_RECSTATE_DONE 2
|
|
|
|
#define MOVREC_VIDEOPES_HEADERLENGTH 14
|
|
#define MOVREC_AUDIOPES_HEADERLENGTH 14
|
|
#define MOVREC_TS_NAL_LENGTH 6
|
|
#define MOVREC_TS_ADTS_LENGTH 0 //add ADTS by audEnc
|
|
#define MOVREC_TS_SPSPPS_LENGTH 33
|
|
#define MOVREC_TS_PTS_LENGTH 5
|
|
|
|
#define MOVREC_TS_PACKET_SIZE 188 //(188 = 4 head + 184 padload)
|
|
#define MOVREC_TS_HEAD_SIZE 4
|
|
|
|
|
|
#define MOVREC_TS_PMT_PID 64
|
|
#define MOVREC_TS_PCR_PID 256
|
|
#define MOVREC_TS_VIDEO_PID 512
|
|
#define MOVREC_TS_AUDIO_PID 513
|
|
#define MOVREC_TS_GPS_PID 768
|
|
#define MOVREC_TS_THUMBNAIL_PID 769
|
|
|
|
|
|
|
|
typedef struct {
|
|
UINT32 uiMemAddr; ///< starting address for recording
|
|
UINT32 uiMemSize; ///< size for recording
|
|
MovieRecCallback *CallBackFunc; ///< event inform callback
|
|
UINT32 uiRecFormat; ///< recording type, MEDIAREC_AUD_VID_BOTH
|
|
UINT32 uiVidFrameRate; ///< recording video frame rate, MEDIAREC_VRATE_30
|
|
UINT32 ui1stFrameQp; ///< recording video quality
|
|
UINT32 uiCBthreshold; ///< video frames for callback, usually equals to frame rate
|
|
UINT32 uiMaxWidth; ///< recording max video width, 1440x1088 or 1280x720
|
|
UINT32 uiMaxHeight; ///< recording max video height
|
|
UINT32 uiWidth; ///< now recording video width, 1440x1088/1280x720/640x480/320x240
|
|
UINT32 uiHeight; ///< now recording video height
|
|
UINT32 uiJpegFormat;
|
|
UINT32 uiAudSampleRate; ///< recording audio sample rate, AUDIO_SR_8000
|
|
UINT32 uiAudBits; ///< audio setting, bits per sample, 8 or 16
|
|
UINT32 uiAudChannels; ///< audio setting, channels, 1 or 2
|
|
UINT32 audioCh; ///< audio recording channel, AUDIO_CH_LEFT or others//2009/12/22 Meg
|
|
UINT16 ucSeamlessSec; ///< seamless cut second,
|
|
UINT8 ucEngType; ///< engine, MOVIEREC_AVIREC, MOVIEREC_MEDIAREC
|
|
UINT8 ucEndType; ///< end type, CUTOVERLAP, NORMAL
|
|
UINT32 uiNoiseFilterLevel; // 0: close noise filter
|
|
UINT32 uiNoiseFilterNoiseDecay; //0: noise*(1/2), 1: noise*(1/4), 2: noise*(1/8)
|
|
UINT8 ucSaveFrameNum; //if memory enough, can be frame number. else, 3,5,6,10,15,30
|
|
UINT8 rev;
|
|
UINT32 uiUserDataAddr;
|
|
UINT32 uiUserDataSize;
|
|
UINT32 uiTargetFramesize;
|
|
UINT32 uiAudioBufferAddr;
|
|
UINT32 uiAudioBufferSize;
|
|
UINT32 uiMaxRecSecs;
|
|
UINT32 uiPanelWidth; ///< input: panel size, 2011/06/10 Meg
|
|
UINT32 uiPanelHeight; ///< input: panel size, 2011/06/10 Meg
|
|
|
|
} MOVIEREC_OBJ;
|
|
|
|
typedef struct {
|
|
UINT32 Addr; ///< Memory buffer starting address
|
|
UINT32 Size; ///< Memory buffer size
|
|
UINT32 RawYAddr; ///< thisBS Y address
|
|
UINT32 uiSVCSize; ///< SVC header size
|
|
UINT32 uiTemporalId; ///< SVC temporal layer ID (0, 1, 2)
|
|
UINT32 uiy_time; ///< raw create time //2016/08/02
|
|
} MEDIAREC_MEM_RANGE, *PMEDIAREC_MEM_RANGE;
|
|
|
|
typedef struct {
|
|
UINT32 Yaddr; ///< y addr
|
|
UINT32 UVaddr; ///< uv addr
|
|
UINT32 Ylot; ///< y lineoffset
|
|
UINT32 UVlot; ///< uv lineoffset
|
|
} MEDIAREC_YUV_INFO, *PMEDIAREC_YUV_INFO;
|
|
|
|
|
|
|
|
typedef struct {
|
|
UINT64 nowFSFreeSpace; //in: free space
|
|
UINT32 vidfps; //in: video frame per second
|
|
UINT32 vidTBR; //in: now video target bit rate
|
|
UINT32 audSampleRate; //in: audio sample rate
|
|
UINT32 audCodec; //in: MEDIAREC_ENC_PCM or MEDIAREC_ENC_AAC
|
|
UINT32 audChs; //in: ahdio channels
|
|
UINT32 clustersize; //in: now cluster size
|
|
UINT32 gpson; //in: if gps on
|
|
UINT32 nidxon; //in: if nidx on
|
|
} MEDIAREC_CALCSEC_SETTING;
|
|
|
|
typedef struct {
|
|
UINT32 bsOutAddr; //in: bitstream address
|
|
UINT32 bsOutSize; //in: bitstream size
|
|
UINT32 bsKey; //in: if key-frame or not
|
|
|
|
} MEDIAREC_VIDEO_BS_INFO;
|
|
|
|
typedef struct {
|
|
UINT32 adr;
|
|
UINT32 sze;
|
|
char name[12];
|
|
UINT32 id;
|
|
} MEDIAREC_DUMPMEM_INFO;
|
|
|
|
|
|
/**
|
|
Stucture for MovRec_AddVideoOne()
|
|
*/
|
|
|
|
typedef struct {
|
|
UINT32 width; //vid width
|
|
UINT32 height; //vid height
|
|
UINT32 codectype[VIDEOENC_CODECTYPE_MAX]; //MEDIAVIDENC_H264/MEDIAVIDENC_MJPG
|
|
UINT32 targetbitrate; //Byte per second
|
|
UINT32 vidframerate; //FPS
|
|
UINT32 writeCard; //write to card
|
|
UINT32 filetype; //MEDIA_FILEFORMAT_MOV or others
|
|
UINT32 seamlessOn; //seamless or not
|
|
UINT32 seamlessSec; //seamless sec
|
|
UINT32 EMRon; //EMR on/off
|
|
UINT32 pureStreaming; //streaming or not
|
|
UINT32 maxwidth; //max vid width
|
|
UINT32 maxheight; //max vid height
|
|
UINT32 maxtbr; //max vid tbr
|
|
UINT32 matchsensor; //match which sensor, path0 or path1
|
|
UINT32 vsid; //out, vsid to start/stop
|
|
} MOVREC_ADD_INFO;
|
|
|
|
typedef struct {
|
|
UINT64 pcrValue;
|
|
UINT64 emrVidPts;
|
|
UINT64 emrAudPts;
|
|
UINT32 vidContinuityCnt;
|
|
UINT32 audContinuityCnt;
|
|
UINT32 patContinuityCnt;
|
|
UINT32 pmtContinuityCnt;
|
|
UINT32 pcrContinuityCnt;
|
|
UINT32 gpsContinuityCnt;
|
|
UINT32 thumbContinuityCnt;
|
|
UINT32 vidContCntAfterPSI;
|
|
UINT32 vidFrameCount;
|
|
UINT32 recordSec;
|
|
BOOL bReConfigMuxer;
|
|
BOOL bReady2WriteCard;
|
|
BOOL bLastFrameMuxed;//for flush
|
|
BOOL bFlush2CutFile;
|
|
BOOL bReadyToFillPSI;
|
|
} SMEDIA_TS_RECORD_INFO;
|
|
|
|
typedef struct {
|
|
UINT64 pcrValue;
|
|
UINT32 vidContinuityCnt;
|
|
UINT32 audContinuityCnt;
|
|
UINT32 psiContinuityCnt;
|
|
UINT32 vidContCntAfterPSI;
|
|
UINT32 vidFrameCount;
|
|
BOOL bReConfigMuxer;
|
|
BOOL bReady2WriteCard;
|
|
BOOL bLastFrameMuxed;//for flush
|
|
BOOL bFlush2CutFile;
|
|
BOOL bReadyToFillPSI;
|
|
} MOV_TS_RECORD_INFO;
|
|
// Audio Filter export API
|
|
extern BOOL AudFilter_Open(UINT32 uiChannels, BOOL bSmooth);
|
|
extern BOOL AudFilter_Close(void);
|
|
extern BOOL AudNoiseReduce_Open(void);
|
|
extern BOOL AudNoiseReduce_Close(void);
|
|
typedef ER(MediaRecCB_Start)(UINT32 p1, UINT32 p2, UINT32 p3); //2016/03/17
|
|
typedef ER(MediaRecCB_Get)(UINT32 p1, UINT32 p2, UINT32 p3); //2016/03/17
|
|
|
|
#endif
|