📄 cameradriver.cpp
字号:
case CAM_IOCTL_GET_LATEST_FRAME:
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:CAM_IOCTL_GET_LATEST_FRAME\r\n")));
if (pCamDevice->m_dwFrameCount < 2)
{
RETAILMSG(1,(TEXT("CAMERA:CAM_IOCTL_GET_LATEST_FRAME - frame not available!!!\r\n")));
return false;
}
pCamDevice->Copy_Cam_Image(pOutBufUnmapped, QCIF_XSIZE, QCIF_YSIZE, PORT_A);
break;
case CAM_IOCTL_SAMSUNG_CAM: // ID=0x520
RETAILMSG(RETAIL_ON,(_T("CAM_IOCTL_SAMSUNG_CAM\r\n")));
pCamDevice->Samsung_camcoder(pOutBufUnmapped);
break;
case CAM_IOCTL_SAMSUNG_CAM_PR: // ID=0x522
RETAILMSG(RETAIL_ON,(_T("CAM_IOCTL_SAMSUNG_CAM_PR\r\n")));
pCamDevice->Samsung_camcoder_pr(pOutBufUnmapped);
break;
case CAM_IOCTL_SAMSUNG_PREVIEW_START : // ID=0x523
DRIVER_PREVIEW_ENABLE = 1;
RETAILMSG(RETAIL_ON,(TEXT("CAM_IOCTL_SAMSUNG_PREVIEW_START: DRIVER_PREVIEW_ENABLE is 1\r\n")));
break;
case CAM_IOCTL_SAMSUNG_PREVIEW_STOP : // ID=0x524
DRIVER_PREVIEW_ENABLE = 2;
RETAILMSG(RETAIL_ON,(TEXT("CAM_IOCTL_SAMSUNG_PREVIEW_STOP: DRIVER_PREVIEW_ENABLE is 2\r\n")));
//RETAILMSG(RETAIL_ON,(_T("CAM_IOCTL_SAMSUNG_PREVIEW_STOP(%x)\r\n"),*pOutBufUnmapped, DRIVER_PREVIEW_ENABLE));
break;
case IOCTL_CAM_SETGAMMA :
if( *pOutBufUnmapped == 1 )
{
DRIVER_PREVIEW_ENABLE = 1;
RETAILMSG(RETAIL_ON,(TEXT("IOCTL_CAM_SETGAMMA: DRIVER_PREVIEW_ENABLE is 1\r\n")));
}
else if( *pOutBufUnmapped == 2 )
{
DRIVER_PREVIEW_ENABLE = 2;
RETAILMSG(RETAIL_ON,(TEXT("IOCTL_CAM_SETGAMMA: DRIVER_PREVIEW_ENABLE is 2\r\n")));
}
RETAILMSG(1,(_T("IOCTL_CAM_SETGAMMA:*pOutBufUnmapped(%x):DRIVER_PREVIEW_ENABLE(%x)\r\n"),*pOutBufUnmapped, DRIVER_PREVIEW_ENABLE));
break;
case CAM_IOCTL_IMAGE_CHANGE: // ID=0x521
RETAILMSG(1,(TEXT("CAM_IOCTL_IMAGE_CHANGE\r\n")));
memcpy(&sCAMINFO, pInBufUnmapped, sizeof(sCAMINFO));
RETAILMSG(1,(TEXT("image_Xsize:%d, image_YSize:%d, ZoomIndex:%d\r\n"), sCAMINFO.nDestWidth, sCAMINFO.nDestHeight, sCAMINFO.nZoomIndex));
pCamDevice->m_rS2440INT->INTMSK |= ( 1 << IRQ_CAM );
pCamDevice->m_rS2440INT->INTSUBMSK |= (( 1 << IRQ_SUB_CAM_P )|( 1 << IRQ_SUB_CAM_C ));
pCamDevice->Camif_Capture(CAPTURE_OFF, CAPTURE_OFF);
if((sCAMINFO.nZoomIndex == 2) ||(sCAMINFO.nZoomIndex == 3))
pCamDevice->CamInit(sCAMINFO.nDestWidth, sCAMINFO.nDestHeight, PREVIEW_X, PREVIEW_Y, sCAMINFO.nZoomIndex*80, sCAMINFO.nZoomIndex*60, (U32)(pCamDevice->m_lnPhysCodecAddr.LowPart), (U32)(pCamDevice->m_lnPhysPreviewAddr.LowPart));
else if(sCAMINFO.nZoomIndex == 1)
pCamDevice->CamInit(sCAMINFO.nDestWidth, sCAMINFO.nDestHeight, PREVIEW_X, PREVIEW_Y, 120, 100, (U32)(pCamDevice->m_lnPhysCodecAddr.LowPart), (U32)(pCamDevice->m_lnPhysPreviewAddr.LowPart));
else
pCamDevice->CamInit(CIF_XSIZE, CIF_YSIZE, PREVIEW_X, PREVIEW_Y, 120, 100, (U32)(pCamDevice->m_lnPhysCodecAddr.LowPart), (U32)(pCamDevice->m_lnPhysPreviewAddr.LowPart));
break;
case IOCTL_CAM_COPY :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_COPY\r\n")));
break;
case IOCTL_CAM_SETCOLKEY :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETCOLKEY\r\n")));
break;
case IOCTL_CAM_SETALPHA :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETALPHA\r\n")));
break;
case IOCTL_CAM_GETINFO :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_GETINFO\r\n")));
break;
case IOCTL_CAM_SETSCALE :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETSCALE\r\n")));
break;
case IOCTL_CAM_SETHUE :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETHUE\r\n")));
break;
#if 0
case IOCTL_CAM_SETGAMMA :
// Get which ping -pong buffer have data
//DisplayEnable = 0;
Sleep(200);
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_BUFFER:%d\r\n"),buffer_num));
break;
#endif
case IOCTL_CAM_SETWBCOORD :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETWBCOORD\r\n")));
break;
case IOCTL_CAM_SETAELIMIT :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETAELIMIT\r\n")));
break;
case IOCTL_CAM_SETADCOFS :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETADCOFS\r\n")));
break;
case IOCTL_CAM_SETWBGAIN :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETWBGAIN\r\n")));
break;
case IOCTL_CAM_SETCBCRGAIN :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETCBCRGAIN\r\n")));
break;
case IOCTL_CAM_SETLEGAIN :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETLEGAIN\r\n")));
break;
case IOCTL_CAM_SETBRIGHTNESS :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETBRIGHTNESS\r\n")));
break;
case IOCTL_CAM_SETCLIP :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETCLIP\r\n")));
break;
case IOCTL_CAM_SETSLICELMT :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETSLICELMT\r\n")));
break;
case IOCTL_CAM_WBACCLMT :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_WBACCLMT\r\n")));
break;
case IOCTL_CAM_CSEDGELMT :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_CSEDGELMT\r\n")));
break;
case IOCTL_CAM_ENVINT :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_ENVINT\r\n")));
break;
case IOCTL_CAM_DISVINT :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_DISVINT\r\n")));
break;
case IOCTL_CAM_SETCAMERA :
RETAILMSG(RETAIL_ON,(TEXT("CAMERA:IOCTL_CAM_SETCAMERA\r\n")));
default:
{
DEBUGMSG( ZONE_IOCTL, (_T("CIS_IOControl(%08x): Unsupported IOCTL code %u\r\n"), dwContext, Ioctl ) );
dwErr = ERROR_NOT_SUPPORTED;
break;
}
}
// pass back appropriate response codes
SetLastError( dwErr );
RETAILMSG(RETAIL_ON,(TEXT("-CIS_IOControl\r\n")));
return ( ( dwErr == ERROR_SUCCESS ) ? TRUE : FALSE );
}
EXTERN_C
DWORD
CIS_Open(
DWORD Context,
DWORD Access,
DWORD ShareMode
)
{
DEBUGMSG( ZONE_FUNCTION, ( _T("CIS_Open(%x, 0x%x, 0x%x)\r\n"), Context, Access, ShareMode ) );
UNREFERENCED_PARAMETER( ShareMode );
UNREFERENCED_PARAMETER( Access );
// TODO : HANDLE ShareMode and Access parameters
CAMERADEVICE * pCamDevice = reinterpret_cast<CAMERADEVICE *>( Context );
CAMERAOPENHANDLE * pCamOpenHandle = NULL;
HANDLE hCurrentProc = NULL;
hCurrentProc = GetCallerProcess();
ASSERT( pCamDevice != NULL );
if ( pCamDevice->BindApplicationProc( hCurrentProc ) )
{
pCamOpenHandle = new CAMERAOPENHANDLE;
if ( NULL == pCamOpenHandle )
{
DEBUGMSG( ZONE_FUNCTION, ( _T("CIS_Open(%x): Not enought memory to create open handle\r\n"), Context ) );
}
else
{
pCamOpenHandle->pCamDevice = pCamDevice;
}
}
else
{
SetLastError( ERROR_ALREADY_INITIALIZED );
}
return reinterpret_cast<DWORD>( pCamOpenHandle );
}
EXTERN_C
BOOL
CIS_Close(
DWORD Context
)
{
DEBUGMSG( ZONE_FUNCTION, ( _T("CIS_Close(%x)\r\n"), Context ) );
PCAMERAOPENHANDLE pCamOpenHandle = reinterpret_cast<PCAMERAOPENHANDLE>( Context );
pCamOpenHandle->pCamDevice->UnBindApplicationProc( );
SAFEDELETE( pCamOpenHandle ) ;
return TRUE;
}
BOOL
__stdcall
DllMain(
HANDLE hDllHandle,
DWORD dwReason,
VOID * lpReserved
)
{
BOOL bRc = TRUE;
UNREFERENCED_PARAMETER( lpReserved );
switch ( dwReason )
{
case DLL_PROCESS_ATTACH:
{
DEBUGREGISTER( reinterpret_cast<HMODULE>( hDllHandle ) );
DEBUGMSG( ZONE_INIT, ( _T("*** DLL_PROCESS_ATTACH - Current Process: 0x%x, ID: 0x%x ***\r\n"), GetCurrentProcess(), GetCurrentProcessId() ) );
DisableThreadLibraryCalls( reinterpret_cast<HMODULE>( hDllHandle ) );
break;
}
case DLL_PROCESS_DETACH:
{
DEBUGMSG( ZONE_INIT, ( _T("*** DLL_PROCESS_DETACH - Current Process: 0x%x, ID: 0x%x ***\r\n"), GetCurrentProcess(), GetCurrentProcessId() ) );
break;
}
case DLL_THREAD_DETACH:
{
break;
}
case DLL_THREAD_ATTACH:
{
break;
}
default:
{
break;
}
}
return bRc;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -