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

📄 cameradriver.cpp

📁 三星2440原版bsp
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -