static MUINT32 u4Capture_Cmd(int argc, char** argv)
{
    MUINT32 u4Mode = ACDK_SCENARIO_ID_CAMERA_PREVIEW; 
    MUINT32 u4EnableMsg = 0x8;    //jpeg only
    MUINT32 u4Rot = 0; 
    MUINT32 u4ShotCnt = 1; 
    u4CapCnt = 0; 

    if (argc == 1) 
    {
        u4Mode = atoi(argv[0]); 
    }
    else if (argc == 3) 
    {
        u4Mode = atoi(argv[0]); 
        g_u4Width = atoi(argv[1]); 
        g_u4Height = atoi(argv[2]); 
    }
    else if (argc == 4) 
    {
        u4Mode = atoi(argv[0]); 
        g_u4Width = atoi(argv[1]); 
        g_u4Height = atoi(argv[2]); 
        sscanf( argv[3],"%x", &u4EnableMsg); 
    }
    else if (argc == 5) 
    {
        u4Mode = atoi(argv[0]); 
        g_u4Width = atoi(argv[1]); 
        g_u4Height = atoi(argv[2]); 
        sscanf( argv[3],"%x", &u4EnableMsg); 
        u4Rot = atoi(argv[4]); 
    }
    else if (argc == 6)
    {
        u4Mode = atoi(argv[0]); 
        g_u4Width = atoi(argv[1]); 
        g_u4Height = atoi(argv[2]); 
        sscanf( argv[3],"%x", &u4EnableMsg); 
        u4Rot = atoi(argv[4]); 
        u4ShotCnt = atoi(argv[5]); 

    }

    MUINT32 cmd = SENSOR_CMD_GET_SENSOR_PRV_RANGE; 
    if (u4Mode == 0)  
    {
        cmd = SENSOR_CMD_GET_SENSOR_PRV_RANGE; 
    }
    else if (1 == u4Mode) 
    {
        cmd = SENSOR_CMD_GET_SENSOR_FULL_RANGE;    
    } 

    g_pSensorHal->sendCommand(SENSOR_DEV_MAIN,
                             cmd,
                             (int)&g_u4SensorWidth,
                             (int)&g_u4SensorHeight,
                             0
                            );    

    printf("sensor width:%d, height:%d\n", g_u4SensorWidth, g_u4SensorHeight); 
    printf("capture width:%d, height:%d\n, mode:%d, image:%x, count:%d\n", g_u4Width, g_u4Height, u4Mode, u4EnableMsg, u4ShotCnt); 

    ISingleShot *pSingleShot = ISingleShot::createInstance(eShotMode_NormalShot, "testshot"); 
    // 
    pSingleShot->init(); 
 
    // 
    pSingleShot->enableDataMsg(u4EnableMsg ); 
    // set buffer 
    //
#if ALLOCA_MEM
    allocateMem(u4EnableMsg); 
    //
    pSingleShot->registerImgBufInfo(ECamShot_BUF_TYPE_BAYER, g_rRawBufInfo); 
    pSingleShot->registerImgBufInfo(ECamShot_BUF_TYPE_YUV, g_rYuvBufInfo); 
    pSingleShot->registerImgBufInfo(ECamShot_BUF_TYPE_POSTVIEW, g_rPostViewBufInfo); 
    pSingleShot->registerImgBufInfo(ECamShot_BUF_TYPE_JPEG, g_rJpegBufInfo); 
#endif 
   

    // shot param 
    ShotParam rShotParam(eImgFmt_YV16,           //yuv format 
                         g_u4Width,              //picutre width 
                         g_u4Height,             //picture height
                         u4Rot * 90,                      //picutre rotation 
                         0,                      //picutre flip 
                         eImgFmt_I420,           //postview format 
                         640,                    //postview width 
                         480,                    //postview height 
                         0,                      //postview rotation 
                         0,                      //postview flip 
                         100                     //zoom   
                        );                                  
 
    // jpeg param 
    JpegParam rJpegParam(ThumbnailParam(160, 120, 100, MTRUE),
                         90,                     //Quality 
                         MTRUE                   //isSOI 
                        ); 
 
    // thumbnail param 
    ThumbnailParam rThumbnailParam(160,          // thumbnail width
                                   120,          // thumbnail height
                                   100,          // quality 
                                   MTRUE         // isSOI     
                                  ); 

    // sensor param 
    SensorParam rSensorParam(SENSOR_DEV_MAIN,                         //Device ID 
                             u4Mode,         //Scenaio 
                             10,                                       //bit depth 
                             MTRUE,                                   //bypass delay 
                             MFALSE                                   //bypass scenario 
                            );  
    //
    pSingleShot->setCallbacks(fgCamShotNotifyCb, fgCamShotDataCb, NULL); 
    //     
    pSingleShot->setShotParam(rShotParam); 
    //
    pSingleShot->setJpegParam(rJpegParam); 
    // 
    // 
    for (MUINT32 i = 0 ; i < u4ShotCnt; i++) 
    {
        pSingleShot->startOne(rSensorParam); 
        u4CapCnt++; 
    }
    //
    pSingleShot->uninit(); 
    //
    pSingleShot->destroyInstance(); 



    return 0; 
}
Esempio n. 2
0
static MUINT32 u4Capture_Cmd(int argc, char** argv)
{
    MUINT32 u4Transform;

    switch(g_u4Rot)
    {
        case 0:
            u4Transform = 0;
            break;
        case 1:
            u4Transform = eTransform_ROT_90;
            break;
        case 2:
            u4Transform = eTransform_ROT_180;
            break;
        case 3:
            u4Transform = eTransform_ROT_270;
            break;
        default:
            u4Transform = 0;
            break;
    }

    ISingleShot *pSingleShot = ISingleShot::createInstance(eShotMode_NormalShot, "testshot");
    //
    pSingleShot->init();
    //
    pSingleShot->enableDataMsg( g_u4EnableMsg );
    // set buffer
    //
    // register buffer
    allocateMem(g_u4RegisterDataMsg);
//    //
    if( g_u4RegisterDataMsg & ECamShot_BUF_TYPE_RAW )
        pSingleShot->registerImageBuffer(ECamShot_BUF_TYPE_RAW, g_ImgBufRaw.get());
    if( g_u4RegisterDataMsg & ECamShot_BUF_TYPE_YUV )
        pSingleShot->registerImageBuffer(ECamShot_BUF_TYPE_YUV, g_ImgBufYuv.get());
    if( g_u4RegisterDataMsg & ECamShot_BUF_TYPE_POSTVIEW )
        pSingleShot->registerImageBuffer(ECamShot_BUF_TYPE_POSTVIEW, g_ImgBufPostview.get());
    if( g_u4RegisterDataMsg & ECamShot_BUF_TYPE_JPEG )
        pSingleShot->registerImageBuffer(ECamShot_BUF_TYPE_JPEG, g_ImgBufJpeg.get());

//    pSingleShot->registerImgBufInfo(ECamShot_BUF_TYPE_YUV, g_rYuvBufInfo);
//    pSingleShot->registerImgBufInfo(ECamShot_BUF_TYPE_POSTVIEW, g_rPostViewBufInfo);
//    pSingleShot->registerImgBufInfo(ECamShot_BUF_TYPE_JPEG, g_rJpegBufInfo);


    // shot param
    ShotParam rShotParam(eImgFmt_YUY2,           //yuv format
                         g_u4Width,              //picutre width
                         g_u4Height,             //picture height
                         u4Transform,            //picutre transform
                         eImgFmt_YV12,           //postview format
                         800,                    //postview width
                         480,                    //postview height
                         0,                      //postview transform
                         100                     //zoom
                        );

    // jpeg param
    JpegParam rJpegParam(ThumbnailParam(160, 128, 100, MTRUE),
                         90,                     //Quality
                         MTRUE                   //isSOI
                        );

    // thumbnail param
    ThumbnailParam rThumbnailParam(160,          // thumbnail width
                                   128,          // thumbnail height
                                   100,          // quality
                                   MTRUE         // isSOI
                                  );

    // sensor param
    SensorParam rSensorParam(
            g_sensorIdx,                         //open ID
            g_u4Mode == 0 ? 
            SENSOR_SCENARIO_ID_NORMAL_PREVIEW : 
            SENSOR_SCENARIO_ID_NORMAL_CAPTURE,   //Scenaio
            10,                                  //bit depth
            MFALSE,                              //bypass delay
            MFALSE,                              //bypass scenario
            u4RawType                            //rawType
            );
    // update sensor's size
    if( g_u4Mode == 0 ) // preview
    {
        g_u4SensorWidth  = g_pSensorInfo[g_sensorIdx].previewWidth;
        g_u4SensorHeight = g_pSensorInfo[g_sensorIdx].previewHeight;
    }
    else if( g_u4Mode == 1 )//capture
    {
        g_u4SensorWidth  = g_pSensorInfo[g_sensorIdx].captureWidth;
        g_u4SensorHeight = g_pSensorInfo[g_sensorIdx].captureHeight;
    }
    //
    pSingleShot->setCallbacks(fgCamShotNotifyCb, fgCamShotDataCb, NULL);
    //
    pSingleShot->setShotParam(rShotParam);
    //
    pSingleShot->setJpegParam(rJpegParam);
    //
    //
    u4CapCnt = 0;
    for (MUINT32 i = 0 ; i < g_u4ShotCnt; i++)
    {
        printf("startOne count(0x%x)+\n", i);
        pSingleShot->startOne(rSensorParam);
        printf("startOne count(0x%x)-\n", i);
        u4CapCnt++;
    }
    //
    pSingleShot->uninit();
    //
    pSingleShot->destroyInstance();

    freeMem();

    return 0;
}