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 + -
显示快捷键?