⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifo.h

📁 SAMSUNG 5009的源代码
💻 H
字号:
#ifndef __IFO_H__
#define __IFO_H__

#include "Struct.h"
//#include "API/HAPI/SH_MEM_api.h"

#if _COP_CAPTURE_LOGO_USED

//#define IFO_OUT_BUF_SIZE	0x78000		//480KB
#define IFO_OUT_BUF_START	IFO_OUT_BUF_ADR // + 2
#define IFO_OUT_BUF_END 	IFO_OUT_BUF_ADR + 0x020000
#define IFO_QM_BASE			IFO_QM_ADR
#define IFO_QM_SIZE		256
#define MAX_SIZE_IFO_WRITE_FLASH	32000

/* input buffer pointer change functions */

/* output buffer pointer change functions */
#define ADR_TE_CHANGE(x)	rIFO_ADR_TE=x
#define ADR_TO_CHANGE(x)	rIFO_ADR_TO=x
#define ADR_BE_CHANGE(x)	rIFO_ADR_BE=x
#define ADR_BO_CHANGE(x)	rIFO_ADR_BO=x

/* CMD description and setting */
#define IFO_RESET		0x04
#define IFO_NO_OPERATION	0x00
#define IFO_CONTINUE		0x01
#define START_PICTURE		0x02
#define START_DATA		0x03
#define IFO_SET_CMD(x)		rIFO_CMD=x

/* interrupt control functions */
#define IFO_ALL_INT_ENABLE()	rIFO_IRQM=0X0000000F
#define IFO_ALL_INT_DISABLE()	rIFO_IRQM=0X00
#define IFO_INT_ENABLE(x)	rIFO_IRQM|=(0x01<<x)
#define IFO_IRQ_CLEAR(x)	rIFO_IRQ|=(0x01<<x)
#define	IFO_ENABLE()		rIFO_CLC= 1
#define	IFO_DISABLE()		rIFO_CLC= 0

/* interrupt bit position */
#define MB_READY		0
#define SLICE_READY		1
#define PICTURE_READY		2
#define END_ADR_REACHED		3

/* rate control parameters */
//#define HOR_PIC_SIZE		720
//#define VERT_PIC_SIZE		480
//#define HOR_MB_SIZE		HOR_PIC_SIZE/16
//#define VERT_MB_SIZE		VERT_PIC_SIZE/16

#define Q_START_VAL			10
#define BITS_PER_PIC		80*1024*8
#define PARAMETER_R		2*BITS_PER_PIC
#define B_FULLNESS_D0		Q_START_VAL * PARAMETER_R / 31
#define SPARE_I_SPACE		0x5000		// 20KB
/* rate control mode definition */
#define NORM			0		// 100% tar_bits_pic
#define REDUCED			1		// 90% tar_bits_pic
#define EMERGENCY		2		// 80% tar_bits_pic

//#define BITS_PER_MB		BITS_PER_PIC/(HOR_MB_SIZE*VERT_MB_SIZE)

/* buffer control */
#define NUM_OF_TOTAL_I		6

#define	S5H_IFO_HISR_STACK_SIZE	512
#define IFO_TASK_STACK_SIZE	10000
#define IFO_TASK_PRIORITY		3
#define logo_size	0x10000



/* Error return code */
typedef unsigned char Error;

/* Global variables for IFO */
extern unsigned int num_of_MB;	// the num of MB per picture
extern int	gIFO_bCount;	//count the used ifo node
extern BOOL	gIFO_encoding;	//identify the ifo is running or not
extern SysQueue_t 		gIFO_queue;
extern SysSema_t 		gIFO_sema_sync;
extern SysSema_t		gIFO_sema_cmd;
extern SysTask_t		gIFO_task;

extern UINT gIFO_IRQ_IDX[2];
extern unsigned char captured_logo[logo_size];


 typedef enum {
 	IFO_START_ENCODING,
	IFO_OUTBUF_AVAIL,
	IFO_CONTINUE_ENCODING,
	IFO_PIC_FINISH,
	IFO_OUTBUF_FILLED,
	IFO_STOP_ENCODING
} IFO_CtrlCmd_et;

typedef struct {
	IFO_CtrlCmd_et	 msg_id;
} IFO_Msg_st;

typedef struct {
	UCHAR *		tar_addr;
	UCHAR *		out_buf_addr;
} IFO_DumpParam_st;


typedef struct {
	BM_FILLEDLIST 	*pFilled_list;
	
	BM_NODE 		*pBuf_out;
} IFO_Output_st;


typedef struct{
	BOOL	aborted;
	BOOL	pic_finished;
	BOOL	incorrect_param;

}IFO_Flag_st;


typedef struct{
	UINT		src_width;
	UINT		src_height;
	UINT		disp_format;
}IFO_VpParam_st;



typedef enum {
	IFO_STATE_ABORT,
	IFO_STATE_ENABLE_IFO,
	IFO_STATE_SET_PARAM,
	IFO_STATE_WR_SEQ_HD,
	IFO_STATE_DUMP_DATA,
	IFO_STATE_GET_OUT_BUF,
	IFO_STATE_START_ENCODING,
	IFO_STATE_CONTINUE,
	IFO_STATE_PIC_FINISH,
	IFO_STATE_STOP,
	IFO_STATE_IDLE,
	IFO_STATE_WAIT_OUTBUF,
	IFO_STATE_WAIT_BUF_FILLED
} IFO_State_et;


/* functions for IFO */
void IFO_PreInit(void);
void IFO_Encoding(VOID);
void ifoTask(UNSIGNED argc, void * argv);
void ifoProcessStart(void);
void ifoProcessContinue(void);
void ifoProcessOutbufAvail(void);
void ifoProcessOutbufFilled(void);
void ifoProcessPicFinish(void);
void ifoProcessStopEncoding(void);
void ifoStateManager(void);
void ifoStateEnableIFO(void);
void ifoStateSetParam(void);
void ifoStateWrSeqHd(void);
void ifoStateDumpData(void);
void ifoStateGetOutBuf(void);
void ifoStateEncoding(void);
void ifoStateContinue(void);
BOOL ifoUseCmdReadySema(void);
SYS_RETURN ifoReleaseWaitCmdReady(void);
void ifoStateStop(void);
int ifoOutbufFilledCallback(int param1, int param2);
int ifoOutbufAvailCallback(int param1, int param2);
void ifo_dump_capd_logo(UCHAR * target_addr , UCHAR * buf_addr);
SysLisrEntryPtr_t	Ifo_Isr(void);
UINT IFO_GetInvQmValues( UINT	qm_adr, UINT	index);
void IFO_SetInvQMatrix( void );


/* interrupt service routine */

#endif	// __IFO_H__
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -