topc.c
来自「是一个手机功能的模拟程序」· C语言 代码 · 共 129 行
C
129 行
#include "topc.h"
void previewStart()
{
jpegInitVideo(NULL);
}
void previewZoom(PREVIEWINFO * pinfo)
{
Boolean ret;
ret=previewZoomT(pinfo);
halDelayUS(20000);
/*UInt8 reg;
halWriteReg8(REG003C_LCDXFER, 0x0);
reg=halReadReg8(REG0108_CMCONTROL);
halWriteReg8(REG0108_CMCONTROL,0x18);
halDelayUS(20000);
prvSetResizeRect(
pinfo->XStart,
pinfo->YStart,
pinfo->Width+pinfo->XStart-1,
pinfo->Height+pinfo->YStart-1
);
prvSetResizeHScaleRate(pinfo->ScaleRate, NULL);
prvSetResizeVScaleRate(pinfo->ScaleRate, NULL);
if(pinfo->ScaleRate>1)
prvSetResizeScaleMode(0x01, NULL);
else
prvSetResizeScaleMode(0x00, NULL);
//Enable and reset resizer
halWriteReg8(REG0202_RESIZE, 0x81);
halWriteReg8(REG0202_RESIZE, 0x01);
halDelayUS(10000);
halWriteReg8(REG0108_CMCONTROL,0x16);
halWriteReg8(REG003C_LCDXFER, 0x01);
*/
}
void previewStop()
{
UInt8 reg;
//Disbale auot transfer
halWriteReg8(REG003C_LCDXFER,0x00);
//Enable and reset resizer
halWriteReg8(REG0202_RESIZE, 0x81);
halWriteReg8(REG0202_RESIZE, 0x01);
halDelayUS(100000);
//Stop capture
halWriteReg8(REG0108_CMCONTROL,0x18);
while(0x01==(halReadReg8(REG010A_CMSTATUS) & 0x01))
{
continue;
}
//Stop camera clock
reg = halReadReg8(REG0104_CMMODE0);
halWriteReg8(REG0104_CMMODE0,reg & 0xFE);
//Delay for stable close
//halDelayUS( 750 * 1000 );
}
Boolean previewZoomT(PREVIEWINFO * pinfo)
{
Boolean fSuccess;
// Enable the JPEG module
prvSetJpeg( TRUE, FALSE );
// Software reset the JPEG codec
prvResetJpegCodec();
// Select the operation mode for encoding
halWriteReg8( REG1000_OPMODE, YUVFmt422);
prvSetJpeg( TRUE, TRUE );
// Set the Encode Size Limit (set by Cfg)
prvHalWriteReg16( REG0820_ENCODELIMIT0, REG0821_ENCODELIMIT1, 0xFFFF );//when camera encode i use 0xffff--norman
prvSetResize(FALSE, NULL);
fSuccess=prvSetResizeRect(
pinfo->XStart,
pinfo->YStart,
pinfo->Width+pinfo->XStart-1,
pinfo->Height+pinfo->YStart-1
);
if ( fSuccess )
{
fSuccess = prvSetResizeIndScaleRate( FALSE, NULL );
if ( fSuccess )
{
fSuccess = prvSetResizeHScaleRate( pinfo->ScaleRate, NULL );
if ( fSuccess )
{
UInt8 value;
fSuccess = prvSetResizeVScaleRate( pinfo->ScaleRate, NULL );
if(pinfo->ScaleRate>1)
prvSetResizeScaleMode(0x01, NULL);
else
prvSetResizeScaleMode(0x00, NULL);
value = halReadReg8( REG0202_RESIZE );
halWriteReg8( REG0202_RESIZE, (UInt8)(value|0x81) ); // Reset and Enable Resizer
halWriteReg8( REG0202_RESIZE, (UInt8)(value|0x01) ); // Reset off (sticky reset bit)
if ( !prvGetCamClk() )
{
prvSetCamClk( TRUE );
halDelayUS( 750 * 1000 );
}
}
}
}
prvSetJpeg( FALSE, FALSE );
return ( fSuccess );
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?