📄 hal_jpeg.c
字号:
;*************************************************************************************/
/*void JpegLoadHuffmanTables( void )
{
static unsigned short aDCHuffmanTable0[] =
{
0x0000,0x0001,0x0005,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b
};
static unsigned short aACHuffmanTable0[] =
{
0x0000,0x0002,0x0001,0x0003,0x0003,0x0002,0x0004,0x0003,0x0005,0x0005,0x0004,0x0004,0x0000,0x0000,0x0001,0x007d,
0x0001,0x0002,0x0003,0x0000,0x0004,0x0011,0x0005,0x0012,0x0021,0x0031,0x0041,0x0006,0x0013,0x0051,0x0061,0x0007,
0x0022,0x0071,0x0014,0x0032,0x0081,0x0091,0x00a1,0x0008,0x0023,0x0042,0x00b1,0x00c1,0x0015,0x0052,0x00d1,0x00f0,
0x0024,0x0033,0x0062,0x0072,0x0082,0x0009,0x000a,0x0016,0x0017,0x0018,0x0019,0x001a,0x0025,0x0026,0x0027,0x0028,
0x0029,0x002a,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,
0x004a,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
0x006a,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,
0x008a,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,
0x00a8,0x00a9,0x00aa,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00c2,0x00c3,0x00c4,0x00c5,
0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00e1,0x00e2,
0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,
0x00f9,0x00fa
};
static unsigned short aDCHuffmanTable1[] =
{
0x0000,0x0003,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b
};
static unsigned short aACHuffmanTable1[] =
{
0x0000,0x0002,0x0001,0x0002,0x0004,0x0004,0x0003,0x0004,0x0007,0x0005,0x0004,0x0004,0x0000,0x0001,0x0002,0x0077,
0x0000,0x0001,0x0002,0x0003,0x0011,0x0004,0x0005,0x0021,0x0031,0x0006,0x0012,0x0041,0x0051,0x0007,0x0061,0x0071,
0x0013,0x0022,0x0032,0x0081,0x0008,0x0014,0x0042,0x0091,0x00a1,0x00b1,0x00c1,0x0009,0x0023,0x0033,0x0052,0x00f0,
0x0015,0x0062,0x0072,0x00d1,0x000a,0x0016,0x0024,0x0034,0x00e1,0x0025,0x00f1,0x0017,0x0018,0x0019,0x001a,0x0026,
0x0027,0x0028,0x0029,0x002a,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,
0x0049,0x004a,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,
0x0069,0x006a,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
0x0088,0x0089,0x008a,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x00a2,0x00a3,0x00a4,0x00a5,
0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00c2,0x00c3,
0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,
0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,
0x00f9,0x00fa
};
LoadTable( REG1400_DC_HUFFMAN_TABLE0_REG0, aDCHuffmanTable0,sizeof( aDCHuffmanTable0)/sizeof( unsigned short ) );
LoadTable( REG1440_AC_HUFFMAN_TABLE0_REG0, aACHuffmanTable0,sizeof( aACHuffmanTable0 )/sizeof( unsigned short ) );
LoadTable( REG1600_DC_HUFFMAN_TABLE1_REG0, aDCHuffmanTable1,sizeof( aDCHuffmanTable1)/sizeof( unsigned short ) );
LoadTable( REG1640_AC_HUFFMAN_TABLE1_REG0, aACHuffmanTable1,sizeof( aACHuffmanTable1)/sizeof( unsigned short ) );
}
*/
/********************************************************************************
; Jpeg_Func.C - JPEG functions module for JPEG library
;*******************************************************************************/
/********************************************************************************
; Function: Jpeg Control Register Set
; Input: moduleOn
; opMode
; yurvOutRangeSel
; swReset
; pJEncodeInfo pointer to encode info structure
; Output: n/a
; Format: void JpegCtlSet( BOOL moduleOn, JpegOpMode opMode, BOOL yuvOutRangeSel, BOOL swReset, JENCODEINFO* pJEncodeInfo )
;********************************************************************************/
void JpegCtlSet( BOOL moduleOn, JpegOpMode opMode, BOOL yuvOutRangeSel, BOOL swReset, JENCODEINFO* pJEncodeInfo )
{
unsigned short ctl = (unsigned short)((swReset << 7) | (yuvOutRangeSel << 4) | (opMode << 1) | moduleOn);
halWriteReg16( REG0980_JPEG_CTRL, ctl );
halReadReg16( REG0980_JPEG_CTRL );
halDelayUS( pJEncodeInfo->Delay );
}
/********************************************************************************
; Function: Sets JPEG control software reset
; Input: n/a
; Output: n/a
; Format: void JpegCtlSWResetSet( void )
;********************************************************************************/
void JpegCtlSWResetSet( void )
{
unsigned short ctl = halReadReg16( REG0980_JPEG_CTRL );
ctl |= 0x0080;
halWriteReg16( REG0980_JPEG_CTRL, ctl );
}
/********************************************************************************
; Function: sets YUV output data range select
; Input: YUVOutRangeSel
; Output: n/a
; Format: void JpegYUVOutDataRangeSelSet( BOOL YUVOutRangeSel )
;********************************************************************************/
void JpegYUVOutDataRangeSelSet( BOOL YUVOutRangeSel )
{
unsigned short ctl = halReadReg16( REG0980_JPEG_CTRL );
ctl &= ~0x0010;
ctl |= (unsigned short)(YUVOutRangeSel << 4);
halWriteReg16( REG0980_JPEG_CTRL, ctl );
}
/********************************************************************************
; Function: retrieves YUV output data range select
; Input: n/a
; Output: YUVRangeSel
; Format: BOOL JpegYUVOutDataRangeSelGet( void )
;********************************************************************************/
BOOL JpegYUVOutDataRangeSelGet( void )
{
unsigned short ctl = halReadReg16( REG0980_JPEG_CTRL );
BOOL yuvRangeSel = (BOOL)((ctl >> 4) & TRUE);
return ( yuvRangeSel );
}
/********************************************************************************
; Function: sets JPEG operation mode
; Input: Jpegoperation mode
; Output: n/a
; Format: void JpegOpModeSet( JpegOpMode opMode )
;********************************************************************************/
void JpegOpModeSet( JpegOpMode opMode )
{
unsigned short ctl = halReadReg16( REG0980_JPEG_CTRL );
ctl &= (~0x000E);
ctl |= (unsigned short)(opMode << 1);
halWriteReg16( REG0980_JPEG_CTRL, ctl );
}
/********************************************************************************
; Function: retrieves JPEG operation mode
; Input: n/a
; Output: mode
; Format: JpegOpMode JpegOpModeGet( void )
;********************************************************************************/
JpegOpMode JpegOpModeGet( void )
{
unsigned short ctl = halReadReg16( REG0980_JPEG_CTRL );
JpegOpMode opMode = (JpegOpMode)((ctl & 0x000E) >> 1);
return ( opMode );
}
/********************************************************************************
; Function: sets state of JPEG module
; Input: on true means clock supplies to Jpeg module
; Output: n/a
; Format: void JpegModuleOnSet( BOOL on )
;********************************************************************************/
void JpegModuleOnSet( BOOL on )
{
unsigned short ctl = halReadReg16( REG0980_JPEG_CTRL );
BOOL prevOn = (BOOL)(ctl & TRUE);
ctl &= (~TRUE);
ctl |= (unsigned short)(on & TRUE);
halWriteReg16( REG0980_JPEG_CTRL, ctl );
halReadReg16( REG0980_JPEG_CTRL );
}
/********************************************************************************
; Function: get status of JPEG module
; Input: n/a
; Output: on true means clock supplies to Jpeg module
; false means clock does not supply to Jpeg module
; Format: BOOL JpegModuleOnGet( void )
********************************************************************************/
BOOL JpegModuleOnGet( void )
{
unsigned short ctl = halReadReg16( REG0980_JPEG_CTRL );
BOOL moduleOn = (BOOL)(ctl & TRUE);
return ( moduleOn );
}
/********************************************************************************
; Function: clears FIFO threshold interrupt flag
; Input: n/a
; Output: n/a
; Format: void JpegFifoClearThrshInt( void )
;********************************************************************************/
void JpegFifoClearThrshInt( void )
{
unsigned short statusFlag = halReadReg16( REG0982_JPEG_STATUS_FLAG );
statusFlag |= (unsigned short)FifoThrshTrigger;
halWriteReg16( REG0982_JPEG_STATUS_FLAG, statusFlag );
}
/********************************************************************************
; Function: sets JPEG status flag register
; Input: flag
; Output: n/a
; Format: void JpegStatusFlagSet( JpegStatusFlag flag )
********************************************************************************/
void JpegStatusFlagSet( JpegStatusFlag flag )
{
halWriteReg16( REG0982_JPEG_STATUS_FLAG, (unsigned short)flag );
}
/********************************************************************************
; Function: retrieves JPEG status flag register
; Input: n/a
; Output: flag
; Format: JpegStatusFlag JpegStatusFlagGet( void )
;********************************************************************************/
JpegStatusFlag JpegStatusFlagGet( void )
{
JpegStatusFlag flag = (JpegStatusFlag)halReadReg16( REG0982_JPEG_STATUS_FLAG );
return ( flag );
}
/********************************************************************************
; Function: retrieves JPEG raw status flag register
; Input: n/a
; Output: status
; Format: unsigned short JpegRawStatusFlagGet( void )
;********************************************************************************/
unsigned short JpegRawStatusFlagGet( void )
{
unsigned short Status = halReadReg16( REG0984_JPEG_RAW_STATUS_FLAG );
return ( Status );
}
/********************************************************************************
; Function: sets state of FIFO Threshold Trigger Enable
; Input: enable
; Output: Status Flag
; Format: void JpegFifoThrshTrigEnSet( BOOL enable )
;********************************************************************************/
void JpegFifoThrshTrigEnSet( BOOL enable )
{
unsigned short interruptCtl = halReadReg16( REG0986_JPEG_INTERRUPT_CTRL );
interruptCtl &= (~0x0400);
interruptCtl |= (unsigned short)(enable << 10);
halWriteReg16( REG0986_JPEG_INTERRUPT_CTRL, interruptCtl );
}
/********************************************************************************
; Function: Sets interrupt control register
; Input: ctl
; Output: n/a
; Format: void JpegIntCtlSet( JpegIntCtl ctl )
;********************************************************************************/
void JpegIntCtlSet( JpegIntCtl ctl )
{
halWriteReg16( REG0986_JPEG_INTERRUPT_CTRL, (unsigned short)ctl );
}
/********************************************************************************
; Function: Gets interrupt control flag
; Input: n/a
; Output: interrupt control flag
; Format: JpegIntCtl JpegIntCtlGet( void )
;********************************************************************************/
JpegIntCtl JpegIntCtlGet( void )
{
JpegIntCtl interruptCtl = (JpegIntCtl)halReadReg16( REG0986_JPEG_INTERRUPT_CTRL );
return ( interruptCtl );
}
/********************************************************************************
; Function: sets JPEG start control flag
; Input: start
; Output: n/a
; Format: void JpegCodeStartCtlSet( BOOL start, JENCODEINFO* pJEncodeInfo )
;********************************************************************************/
void JpegCodeStartCtlSet( BOOL start, JENCODEINFO* pJEncodeInfo )
{
halWriteReg16( REG098A_JPEG_STARTSTOP_CTRL, (unsigned short)start );
halDelayUS( pJEncodeInfo->Delay );
}
/********************************************************************************
; Function: retrieves JPEG start control flag
; Input: n/a
; Output: when Jpeg encoding
; true means Jpeg codec capturing start from next frame
; false means Jpeg codec finish capturing
; when YUV Data Capturing
; true means capturing start from next frame
; false means capturing finished
; Format: BOOL JpegCodeStartCtlGet( void )
;********************************************************************************/
BOOL JpegCodeStartCtlGet( void )
{
BOOL startStopCtl = (BOOL)halReadReg16( REG098A_JPEG_STARTSTOP_CTRL );
return ( startStopCtl );
}
/*************************************************************************************
; Jpeg_file.C - Jpeg File buffer module set for JPEG library
;************************************************************************************/
/*************************************************************************************
; Function: FIFO Control
; Input: TriggerThreshold ( trigger way )
; clear (clear fifo)
; pJEncodeInfo ( pointer to Encode Info structure )
; Output: n/a
; Format: void JpegFifoCtl( JpegFifoThrsh TriggerThreshold, BOOL clear, JENCODEINFO* pJEncodeInfo )
*************************************************************************************/
void JpegFifoCtl( JpegFifoThrsh TriggerThreshold, BOOL clear, JENCODEINFO* pJEncodeInfo )
{
unsigned short tmp;
tmp = (unsigned short)((TriggerThreshold << 4) | (clear << 2));
halWriteReg16( REG09A0_JPEG_FIFO_CTRL ,tmp );
if( clear )
{
tmp = halReadReg16( REG09A6_JPEG_FIFO_RDWR );
tmp = halReadReg16( REG09A6_JPEG_FIFO_RDWR );
}
}
/*************************************************************************************
; Function: Clears the Fifo (write and read pointer)
; Input: pJEncodeInfo pointer to Encode Info structure
; Output: n/a
; Format: void JpegFifoClear( JENCODEINFO* pJEncodeInfo )
;*************************************************************************************/
void JpegFifoClear( JENCODEINFO* pJEncodeInfo )
{
JpegFifoCtl( pJEncodeInfo->FifoThreshold, TRUE, pJEncodeInfo );
JpegFifoCtl( pJEncodeInfo->FifoThreshold, FALSE,pJEncodeInfo );
}
/*************************************************************************************
; Function: set FIFO threshold select
; Input: fifoThrsh
; Output: n/a
; Format: void JpegFifoThrshSelSet( JpegFifoThrsh fifoThrsh )
;*************************************************************************************/
void JpegFifoThrshSelSet( JpegFifoThrsh fifoThrsh )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -