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
 | 
