Пример #1
0
void System_OnStrgInit_INMEM(void)
{
    static BOOL bStrg_init_INMEM = FALSE;
    UINT32 i=0;
    if(bStrg_init_INMEM)
        return;

    //check partition overlap
    //part 0(FW area) must match loader reserved size,and next area can not overlap previos area
    for(i=0;i<NAND_PARTITION_NUM;i++)
    {
        if(i==0)
        {
            if(NandPartition[i].uiPhySize<gBinInfo.ld.FWResvSize)
            {
               DBG_ERR("part0 %x < FWResvSize %x,cannot init\r\n",NandPartition[i].uiPhySize,gBinInfo.ld.FWResvSize);
               return;
            }
        }
        else
        {
            if(NandPartition[i].uiPhyAddr<NandPartition[i-1].uiPhyAddr+NandPartition[i-1].uiPhySize)
            {
                DBG_ERR("part%d start %x overlap part%d end %x,cannot init\r\n",i,NandPartition[i].uiPhyAddr,i-1,NandPartition[i-1].uiPhyAddr+NandPartition[i-1].uiPhySize);
                return;
            }
        }
    }

    for(i=0;i<NAND_PARTITION_NUM;i++)
    {
        DX_HANDLE DxNandDev = Dx_GetObject(NandPartition[i].uiDxClassType);
        //#NT#2014/07/16#Calvin Chang#Support DRAM Tiny Mode -begin
        #if (_INTERSTORAGE_ == _INTERSTORAGE_SPI_)
        UserNandInit.buf.Addr = OS_GetMempoolAddr(POOL_ID_STORAGE_RAMDISK);
        UserNandInit.buf.Size = OS_GetMempoolSize(POOL_ID_STORAGE_RAMDISK);
        #else
        UserNandInit.buf.Addr = OS_GetMempoolAddr(POOL_ID_STORAGE_NAND);
        UserNandInit.buf.Size = OS_GetMempoolSize(POOL_ID_STORAGE_NAND);
        #endif
        UserNandInit.prt.uiDxClassType = NandPartition[i].uiDxClassType;
        UserNandInit.prt.uiPhyAddr = NandPartition[i].uiPhyAddr;
        UserNandInit.prt.uiPhySize = NandPartition[i].uiPhySize;
        if(i==0)
            UserNandInit.prt.uiResvSize = gBinInfo.ld.LdBlockCount; //FWS use loader block count as reserved blcok
        else
            UserNandInit.prt.uiResvSize = NandPartition[i].uiResvSize;
        Dx_Init(DxNandDev,&UserNandInit,0,STORAGE_VER);
    }

    bStrg_init_INMEM = TRUE;
}
Пример #2
0
void UI_GfxInit(void)
{
    UINT32              uiPoolAddr;

    //Initial all states, all buffers
    DBG_FUNC_BEGIN("\r\n");

    uiPoolAddr = OS_GetMempoolAddr(POOL_ID_GFX_TEMP);

    ////////////////////////////////////////////////////////////////

    GxGfx_Config(CFG_STRING_BUF_SIZE,256);
    //Init Gfx
    GxGfx_Init((UINT32*)uiPoolAddr,POOL_SIZE_GFX_TEMP);       //initial Graphics

    //set default shape, text, image state for GxGfx
    GxGfx_SetAllDefault();
    //set custom image state for GxGfx
    GxGfx_SetImageStroke(ROP_KEY,IMAGEPARAM_DEFAULT);
    GxGfx_SetImageColor(IMAGEPALETTE_DEFAULT,IMAGEPARAM_DEFAULT);
#if (UI_STYLE==UI_STYLE_DRIVER)
    GxGfx_SetImageTable((const IMAGE_TABLE*)gDemoKit_Image);
#else
    GxGfx_SetImageTable((const IMAGE_TABLE*)gDemo_Image);
#endif
    //set custom text state for GxGfx
    GxGfx_SetTextColor(TEXTFORECOLOR1_DEFAULT, TEXTFORECOLOR2_DEFAULT, TEXTFORECOLOR3_DEFAULT);
#if (UI_STYLE==UI_STYLE_DRIVER)
    GxGfx_SetTextStroke((const FONT*)gDemoKit_Font, FONTSTYLE_NORMAL, SCALE_1X);
#else
    GxGfx_SetTextStroke((const FONT*)gDemo_Font, FONTSTYLE_NORMAL, SCALE_1X);
#endif
    GxGfx_SetStringTable((const STRING_TABLE*)Get_LanguageTable());
}
Пример #3
0
BOOL Cmd_user_dump_pool(CHAR* strCmd)
{
    UINT32 i;
    DBG_DUMP("dump pool status\r\n");

    debug_msg("POOL_ID_STORAGE_NAND:%d- start addr:0x%08lX, size:0x%08lX\r\n", POOL_ID_STORAGE_NAND, OS_GetMempoolAddr(POOL_ID_STORAGE_NAND), OS_GetMempoolSize(POOL_ID_STORAGE_NAND));
    debug_msg("POOL_ID_APP:%d- start addr:0x%08lX, size:0x%08lX\r\n", POOL_ID_APP, OS_GetMempoolAddr(POOL_ID_APP), OS_GetMempoolSize(POOL_ID_APP));

    debug_msg("------------------------------------------------\r\n");
    for(i = 1; i <= POOL_ID_APP; i++)
    {
        debug_msg("POOL_ID_%d- start addr:0x%08lX, size:0x%08lX\r\n", i, OS_GetMempoolAddr(i), OS_GetMempoolSize(i));
    }

    return TRUE;
}
Пример #4
0
BOOL UIDisplay_GetCleanBuf(UINT32* pAddr, UINT32* pSize)
{
    //if all OSD buffers are continuous memory block, fill current addr & size
    //UINT32* pAddr = (UINT32*)param1;
    //UINT32* pSize = (UINT32*)param2;
    UINT32 uiBufAddr;
    uiBufAddr = OS_GetMempoolAddr(POOL_ID_DISP_OSD1);
    *pAddr = uiBufAddr;
    *pSize = POOL_SIZE_DISP_OSD1*4;
    return TRUE;
}
Пример #5
0
UINT32 User_GetTempBuffer(UINT32 uiSize)
{
    void *pBuf = 0;
    if(uiSize <= POOL_SIZE_APP)
    {
        pBuf = (void*)OS_GetMempoolAddr(POOL_ID_APP);
    }
    if(pBuf == NULL)
    {
        DBG_ERR("get buffer fail\r\n");
    }
    return (UINT32)pBuf;
}
Пример #6
0
void UI_ShowJPG(UINT8 LayerID, UINT32 uiJPGData, UINT32 uiJPGSize, UINT32 uiTempBuf)
{
    UINT16 w=0,h=0,fmt=0;
    UINT32 uiOutAddrY, uiOutAddrCb, uiOutAddrCr;
    ISIZE             DeviceSize;
    DeviceSize = GxVideo_GetDeviceSize(DOUT1);
    #if(VDO_USE_ROTATE_BUFFER == ENABLE)
    GX_IMAGE_PIXEL_FMT GxImgFMT = GX_IMAGE_PIXEL_FMT_YUV420_PACKED;
    IMG_BUF   DispImg = {0};
    IMG_BUF   DispOutImg = {0};
    UINT32    uiPoolAddr,uiPoolSize;

    uiPoolAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO2TEMP);
    uiPoolSize = OS_GetMempoolSize(POOL_ID_DISP_VDO2TEMP);
    #endif

#if 1
    Jpeg_DecodeInfo((const UINT8*)uiJPGData, uiJPGSize, &w,  &h, &fmt);
    DBG_IND("Splash data=%08x, size=%08x, w=%d, h=%d, fmt=%x\r\n", uiJPGData, uiJPGSize, w, h, fmt);
    Jpeg_GetImageAddr(w, h, fmt, (UINT8*)uiTempBuf, &uiOutAddrY, &uiOutAddrCb, &uiOutAddrCr);
    DBG_IND("output dataY=%08x, dataY=%08x, dataY=%08x\r\n", uiOutAddrY, uiOutAddrCb, uiOutAddrCr);
    Jpeg_DecodeImage((UINT8*)uiJPGData, uiJPGSize, (UINT8*)uiTempBuf, w*h*2);


    if(LayerID == LAYER_VDO1) //VDO1
    {
        #if(VDO_USE_ROTATE_BUFFER == ENABLE)
        if (fmt == PXLFMT_YUV422_PK)
            GxImg_InitBuf(&DispImg,w,h,GX_IMAGE_PIXEL_FMT_YUV422, GXIMAGE_LINEOFFSET_ALIGN(16),uiTempBuf,w*h*2);
        else
            GxImg_InitBuf(&DispImg,w,h,GX_IMAGE_PIXEL_FMT_YUV420, GXIMAGE_LINEOFFSET_ALIGN(16),uiTempBuf,w*h*2);
        GxImg_RotateData(&DispImg,uiPoolAddr,uiPoolSize,GX_IMAGE_ROTATE_90,&DispOutImg);
        Display_SetBuffer(LAYER_VDO1, h, w, h, PXLFMT_YUV420_PK, DispOutImg.PxlAddr[0], DispOutImg.PxlAddr[1], DispOutImg.PxlAddr[2]);
        Display_SetWindow(LAYER_VDO1, 0, 0, DeviceSize.h, DeviceSize.w);
        #else
        Display_SetBuffer(LAYER_VDO1, w, h, w, fmt, uiOutAddrY, uiOutAddrCb, uiOutAddrCr);
        Display_SetWindow(LAYER_VDO1, 0, 0, DeviceSize.w, DeviceSize.h);
        #endif
        Display_SetEnable(LAYER_VDO1, TRUE);
        Display_SetEnable(LAYER_VDO2, FALSE);
    }
    if(LayerID == LAYER_VDO2) //VDO2
    {
        Display_SetBuffer(LAYER_VDO2, w, h, w, fmt, uiOutAddrY, uiOutAddrCb, uiOutAddrCr);
        Display_SetWindow(LAYER_VDO2, 0, 0, DeviceSize.w, DeviceSize.h);
        Display_SetEnable(LAYER_VDO1, FALSE);
        Display_SetEnable(LAYER_VDO2, TRUE);
    }
#endif
}
Пример #7
0
void System_OnStrgInit_EXMEM(void)
{
    static BOOL bStrg_init_EXMEM = FALSE;
    if(bStrg_init_EXMEM)
        return;
    {
    DX_HANDLE DxCardDev1 = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_CARD1);
    UserSdioInit.buf.Addr = OS_GetMempoolAddr(POOL_ID_STORAGE_SDIO);
    UserSdioInit.buf.Size = OS_GetMempoolSize(POOL_ID_STORAGE_SDIO);
    Dx_Init(DxCardDev1,&UserSdioInit,0,STORAGE_VER);
    }
    #if(COPYCARD2CARD_FUNCTION == ENABLE)
    // for card 2
    {
    DX_HANDLE DxCardDev2 = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_CARD2);
    UserSdio2Init.buf.Addr = OS_GetMempoolAddr(POOL_ID_STORAGE_SDIO2);
    UserSdio2Init.buf.Size = OS_GetMempoolSize(POOL_ID_STORAGE_SDIO2);
    Dx_Init(DxCardDev2,&UserSdio2Init,0,STORAGE_VER);
    }
    #endif

    bStrg_init_EXMEM = TRUE;
}
Пример #8
0
/**
  Initialize application for USB SIDC mode

  Initialize application for USB SIDC mode.

  @param void
  @return void
*/
void AppInit_ModeUSBSIDC(void)
{
    //#Bus-Power or Self-Power is decided by project.Bus-Powered is default.
    USB_SIDC_INFO   SIDCInfo={0};
    char* pDxName=NULL;
    UINT32          uiPoolAddr, uiSidcBuff;
    DX_HANDLE pStrgDev = GxStrg_GetDevice(0);

    uiPoolAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO1);

    Sidc_SetSendObjBufAddrSize((UINT32)uiPoolAddr, MIN_BUFFER_SIZE_FOR_SENDOBJ);

    uiSidcBuff = uiPoolAddr + MIN_BUFFER_SIZE_FOR_SENDOBJ;
    SIDCInfo.uiSidcBufAddr = uiSidcBuff;
    SIDCInfo.uiSidcBufSize = SIDC_WORKING_BUFFER;
    USBMakerInit_USIDC(&SIDCInfo);

    if(Dx_GetInfo(pStrgDev, DX_INFO_NAME,&pDxName)!=DX_OK)
    {
        pDxName = NULL;
    }

    // Check card lock status, only storage card has this status, where NAND flash does not
    if (pDxName==NULL || strcmp(pDxName, "Storage_Nand1")==0)
    {
        SIDCInfo.uiStrgCardLock = FALSE;
    }
    else if (strcmp(pDxName,"Storage_Card1")==0)
    {
        //#NT#2010/07/20#Jeah Yen -begin
        SIDCInfo.uiStrgCardLock = GxStrg_GetDeviceCtrl(0, CARD_READONLY);
        //#NT#2010/07/20#Jeah Yen -end
    }
    //#Bus-Power or Self-Power is decided by project.Bus-Powered is default.
    #if (USB_CHARGE_FUNCTION == DISABLE)
    SIDCInfo.isSelfPwred = TRUE;
    #endif
    if (Sidc_Open(&SIDCInfo) != E_OK)
    {
        debug_err(("Error open USB SIDC task\r\n"));
    }
}
Пример #9
0
void Display_ShowSplash(SPLASH_ID splash_id)
{
    UINT32  uiPoolAddr;

    //TM_Begin(DISP_SHOWLOGO);

    //get temp buffer
    uiPoolAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO2);
    if (uiPoolAddr == 0)
    {   
        return;
    }

#if 1
    //load default logo
#if (UI_STYLE==UI_STYLE_DRIVER)
    if (splash_id == SPLASH_POWERON)
    {
        p_gLogoJPG = (UINT32)g_ucBGOpening;
        p_gLogoSize = Logo_getBGOpening_size();
    } else {
        p_gLogoJPG = (UINT32)g_ucBGGoodbye;
        p_gLogoSize = Logo_getBGGoodbye_size();
    }
#else
    if (splash_id == SPLASH_POWERON)
    {
        p_gLogoJPG = (UINT32)gDemo_Logo;
        p_gLogoSize = DEMO_LOGO_SIZE;
    }
    else
    {
        p_gLogoJPG = (UINT32)gDemoPwroff_Logo;
        p_gLogoSize = DEMO_PWROFFLOGO_SIZE;
    }
#endif
    //show logo
    DBG_IND("Show Logo\r\n");
    UI_ShowJPG(LOGO_DISP_LAYER, (UINT32)p_gLogoJPG, p_gLogoSize, uiPoolAddr);
#endif
    //TM_End(DISP_SHOWLOGO);
}
Пример #10
0
void PipView_FlipImage(PIMG_BUF pSrc, IRECT* pRcSrc, PIMG_BUF pDst, IRECT* pRcDst)
{
    UINT32      uiPoolAddr, uiPoolSize, uiBufSize;
    UINT32      uiLineOffset[2] = {0};
    UINT32      uiPxlAddr[2] = {0};
    IRECT       DstRegion;
    IPOINT      Location;
    IMG_BUF     DstImg;

    uiPoolAddr = OS_GetMempoolAddr(POOL_ID_PIP_FLIP);
    uiPoolSize = OS_GetMempoolSize(POOL_ID_PIP_FLIP);

    DstRegion.x = 0;
    DstRegion.y = 0;
    DstRegion.w = ALIGN_CEIL_16(pRcDst->w);
    DstRegion.h = ALIGN_CEIL_8(pRcDst->h);

    uiLineOffset[0] = DstRegion.w;
    uiLineOffset[1] = DstRegion.w;
    uiPxlAddr[0]    = uiPoolAddr;
    uiPxlAddr[1]    = uiPoolAddr + DstRegion.w * DstRegion.h;

    // scale
    GxImg_InitBufEx(&DstImg,
                    DstRegion.w,
                    DstRegion.h,
                    pDst->PxlFmt,
                    uiLineOffset,
                    uiPxlAddr);

    GxImg_ScaleData(pSrc, pRcSrc, &DstImg, &DstRegion);

    // horizontal flip
    uiBufSize = (DstRegion.w * DstRegion.h * 3) / 2;
    GxImg_SelfRotate(&DstImg, uiPoolAddr + uiBufSize, uiPoolSize - uiBufSize, GX_IMAGE_ROTATE_HRZ);

    // copy
    Location.x = pRcDst->x;
    Location.y = pRcDst->y;
    GxImg_CopyData(&DstImg, &DstRegion, pDst, &Location);
}
Пример #11
0
void System_OnStrgInit_PS(void)
{
    //PHASE-2 : Init & Open Lib or LibExt
#if PST_FUNC
    // Open PStore
    PSFMT gFmtStruct = {MAX_BLK_PER_SEC,MAX_SEC_NUM};
    PSTORE_INIT_PARAM gPStoreParam;
    UINT32 result=0;
    UINT8 *pBuf;
    DX_HANDLE pStrgDev = 0;
    //UINT32 hStrg = 0;
    pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_NAND3);

    //PStore_InstallCmd();

    pBuf = (UINT8 *)OS_GetMempoolAddr(POOL_ID_PS_BUFFER);

    gPStoreParam.pBuf = pBuf;
    gPStoreParam.uiBufSize = POOL_SIZE_PS_BUFFER;

    result = PStore_Open(pStrgDev,&gPStoreParam);

    if(result!=E_PS_OK)
    {
         DBG_ERR("PStore Open fail %d format \r\n",result);
         result = PStore_Format(&gFmtStruct);
    }
    //#NT#2013/05/28#Lincy Lin -begin
    //#NT#
    // read calibration data
    #if (UI_STYLE!=UI_STYLE_DRIVER)
    Cal_ReadSysData();
    Cal_ApplyData(CAL_SYS_DATA);
    #endif
    //#NT#2013/05/28#Lincy Lin -end
#endif
}
Пример #12
0
void System_OnStrgInit_FWS(void)
{
    BOOL bLZC = FALSE;
    ER er;
    UINT32 m_LdLoadedOffest;
    DX_HANDLE pStrgDev = 0;

    DBG_MSG("Init!\r\n");
    DBG_IND("^M LD_BLOCK=%d\r\n", gBinInfo.ld.LdBlockCount);
    DBG_IND("^M FW_MAX_SIZE=%08X\r\n", gBinInfo.ld.FWResvSize);
    DBG_IND("^MFW_validate-update:");
    //ValidateUpdateFW
    {
        UINT32 bUpdate = ((gBinInfo.ld.LdCtrl2 & LDCF_UPDATE_FW)!=0);
        UINT32 uiUpdateResult = ((gBinInfo.ld.LdCtrl2 & LDCF_UPDATE_FW_DONE)!=0);
        if(bUpdate)
        {
            DBG_IND("\r\n^MFW is just updated.\r\n");
            if(!uiUpdateResult)
            {
                DBG_FATAL("\r\nFW updated: fail!\r\n");
            }
        }
    }
    DBG_IND("^M ok\r\n");


    pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_NAND0);

    #if (_INTERSTORAGE_==_INTERSTORAGE_SPI_)
    bLZC = TRUE;
    #else
    bLZC = FALSE;
    #endif

    if(bLZC)
    {
        gPL_Init.PlInit.DataType = PARTLOAD_DATA_TYPE_COMPRESS_LZ;
        gPL_BufAddr = OS_GetMempoolAddr(POOL_ID_APP);
        gPL_BufSize = POOL_SIZE_APP;
    }
    else
    {
        gPL_Init.PlInit.DataType = PARTLOAD_DATA_TYPE_UNCOMPRESS;
        gPL_BufAddr = OS_GetMempoolAddr(POOL_ID_FWS_BUFFER);
        gPL_BufSize = POOL_SIZE_FWS_BUFFER;
    }

    m_LdLoadedOffest = gBinInfo.ld.LdLoadSize; //Get Ld loaded size

    gPL_Init.uiApiVer = FWSRV_API_VERSION;
    gPL_Init.TaskID = 0;
    gPL_Init.SemID = 0;
    gPL_Init.FlagID = 0;
    gPL_Init.PlInit.uiApiVer = PARTLOAD_API_VERSION;
    gPL_Init.PlInit.hStrg = pStrgDev;
    gPL_Init.PlInit.uiAddrBegin = OS_GetMemAddr(MEM_CODE)+m_LdLoadedOffest; //Must be block boundary align
    gPL_Init.PlInit.uiWorkingAddr = gPL_BufAddr;
    gPL_Init.PlInit.uiWorkingSize = gPL_BufSize;
    er = FwSrv_Init(&gPL_Init);
    if(er != FWSRV_ER_OK)
    {
        DBG_ERR("Init failed!\r\n");
    }
    er = FwSrv_Open();
    if(er != FWSRV_ER_OK)
    {
        DBG_ERR("Open failed!\r\n");
    }
}
Пример #13
0
void UIDisplay_Init(UINT8 iDD, BOOL bClear, ISIZE* pDeviceSize)
{
    RESULT r;
    LAYER_INIT LayerInit;

    UINT32 uiBufAddr;
    //fixed buffer size
    UINT32 osd_w = OSD_W;
    UINT32 osd_h = OSD_H;
    //fixed buffer size
    UINT32 vdo_w = OSD_W;
    UINT32 vdo_h = OSD_H;
    //ISIZE DeviceSize;
    LAYER_INIT* pLayerInit = (LAYER_INIT*)&LayerInit; //layer init parameter
    //DeviceSize = GxVideo_GetDeviceSize(DOUT1);
    ISIZE DeviceSize = pDeviceSize[0];

    DBG_MSG("DOUT=%d\n\r",iDD>>4);
    switch(iDD & 0x0f) //check layer
    {
    case LAYER_OSD1:

        uiBufAddr = OS_GetMempoolAddr(POOL_ID_DISP_OSD1);

        pLayerInit->uiType = TYPE_FB;
        pLayerInit->uiPxlfmt = DISPLAY_OSD_FMT;
        pLayerInit->uiWidth = osd_w;
        pLayerInit->uiHeight = osd_h;
        #if (OSD_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->uiBufCount = 1;
        pLayerInit->uiSwapEffect = SWAPEFFECT_COPY;
        #else
        pLayerInit->uiBufCount = 0;
        pLayerInit->uiSwapEffect = SWAPEFFECT_DISCARD;
        #endif
        switch(pLayerInit->uiPxlfmt)
        {
        case PXLFMT_INDEX1: pLayerInit->uiBufSize = (osd_w*osd_h)>>3;break;
        case PXLFMT_INDEX2: pLayerInit->uiBufSize = (osd_w*osd_h)>>2;break;
        case PXLFMT_INDEX4: pLayerInit->uiBufSize = (osd_w*osd_h)>>1;break;
        case PXLFMT_INDEX8: pLayerInit->uiBufSize = (osd_w*osd_h)>>0;break;
        }
        pLayerInit->pBufAddr[0] = uiBufAddr;
        #if (OSD_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->pBufAddr[1] = uiBufAddr + pLayerInit->uiBufSize;
        #else
        pLayerInit->pBufAddr[1] = 0;
        #endif
        pLayerInit->pBufAddr[2] = 0;
        //dynamic window size
        pLayerInit->win.x= 0;
        pLayerInit->win.y = 0;
        pLayerInit->win.w = DeviceSize.w;
        pLayerInit->win.h = DeviceSize.h;
        pLayerInit->uiWinAttr = 0;

        #if (OSD_USE_ROTATE_BUFFER == ENABLE)
        if(gbOsdRotate == 1)
        {
        DBG_MSG("^YEnable Rotate\r\n");
        //prepare show DC
        UINT32 buf_w = pLayerInit->uiWidth;
        UINT32 buf_h = pLayerInit->uiHeight;
        UINT32 win_w = pLayerInit->win.w;
        UINT32 win_h = pLayerInit->win.h;
        pLayerInit->uiWidth = buf_h;
        pLayerInit->uiHeight = buf_w;
        pLayerInit->uiBufCount = 0;
        pLayerInit->uiSwapEffect = SWAPEFFECT_DISCARD;
        pLayerInit->pBufAddr[0] = uiBufAddr;
        pLayerInit->pBufAddr[1] = 0;
        pLayerInit->pBufAddr[2] = 0;
        pLayerInit->win.w = win_h;
        pLayerInit->win.h = win_w;

        //prepare paint DC
        memset(pPaintDC, 0, sizeof(DC));
        GxGfx_AttachDC(pPaintDC, TYPE_FB,
            pLayerInit->uiPxlfmt, buf_w, buf_h, buf_w,
            (UINT8*)(uiBufAddr + pLayerInit->uiBufSize), 0, 0);
        }
        else
        {
        DBG_MSG("^YDisable Rotate\r\n");
        }
        #endif

        r = GxDisplay_InitLayer(iDD, &LayerInit, bClear);
        UI_DirtyDisplaySource(iDD); //must force flush to update new swap-buffer and new swap-effect
        DBG_MSG("OSD1 buf=%08x, size=%08x\n\r",LayerInit.pBufAddr[0], LayerInit.uiBufSize);
        DBG_MSG("OSD1 buf.w=%d, buf.h=%d;\n\r",LayerInit.uiWidth, LayerInit.uiHeight);
        DBG_MSG("OSD1 win.w=%d, win.h=%d;\n\r",LayerInit.win.w, LayerInit.win.h);


        break;

    case LAYER_OSD2:

        uiBufAddr = OS_GetMempoolAddr(POOL_ID_DISP_OSD2);

        pLayerInit->uiType = TYPE_FB;
        pLayerInit->uiPxlfmt = DISPLAY_OSD_FMT;
        pLayerInit->uiWidth = osd_w;
        pLayerInit->uiHeight = osd_h;
        #if (OSD2_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->uiBufCount = 1;
        pLayerInit->uiSwapEffect = SWAPEFFECT_COPY;
        #else
        pLayerInit->uiBufCount = 0;
        pLayerInit->uiSwapEffect = SWAPEFFECT_DISCARD;
        #endif
        switch(pLayerInit->uiPxlfmt)
        {
        case PXLFMT_INDEX1: pLayerInit->uiBufSize = (osd_w*osd_h)>>3;break;
        case PXLFMT_INDEX2: pLayerInit->uiBufSize = (osd_w*osd_h)>>2;break;
        case PXLFMT_INDEX4: pLayerInit->uiBufSize = (osd_w*osd_h)>>1;break;
        case PXLFMT_INDEX8: pLayerInit->uiBufSize = (osd_w*osd_h)>>0;break;
        }
        pLayerInit->pBufAddr[0] = uiBufAddr;
        #if (OSD2_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->pBufAddr[1] = uiBufAddr + pLayerInit->uiBufSize;
        #else
        pLayerInit->pBufAddr[1] = 0;
        #endif
        pLayerInit->pBufAddr[2] = 0;
        //dynamic window size
        pLayerInit->win.x= 0;
        pLayerInit->win.y = 0;
        pLayerInit->win.w = DeviceSize.w;
        pLayerInit->win.h = DeviceSize.h;
        pLayerInit->uiWinAttr = 0;

        r = GxDisplay_InitLayer(iDD, &LayerInit, bClear);
        DBG_MSG("OSD2 buf=%08x, size=%08x\n\r",LayerInit.pBufAddr[0], LayerInit.uiBufSize);
        DBG_MSG("OSD2 buf.w=%d, buf.h=%d;\n\r",LayerInit.uiWidth, LayerInit.uiHeight);
        DBG_MSG("OSD2 win.w=%d, win.h=%d;\n\r",LayerInit.win.w, LayerInit.win.h);

        break;

    case LAYER_VDO1:

        uiBufAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO1);

        pLayerInit->uiType = TYPE_FB;
        pLayerInit->uiPxlfmt = DISPLAY_VDO_FMT;
        pLayerInit->uiWidth = vdo_w;
        pLayerInit->uiHeight = vdo_h;
        #if (VDO_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->uiBufCount = 1;
        pLayerInit->uiSwapEffect = SWAPEFFECT_COPY;
        #else
        pLayerInit->uiBufCount = 0;
        pLayerInit->uiSwapEffect = SWAPEFFECT_DISCARD;
        #endif
        switch(pLayerInit->uiPxlfmt)
        {
            case PXLFMT_YUV422:
            case PXLFMT_YUV422_PK:
                pLayerInit->uiBufSize = (vdo_w*vdo_h)*2 + 64;break;
                break;
            default: DBG_ERR("Pxlfmt %d",pLayerInit->uiPxlfmt);

        }
        pLayerInit->pBufAddr[0] = uiBufAddr;
        #if (VDO_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->pBufAddr[1] = uiBufAddr + pLayerInit->uiBufSize;
        #else
        pLayerInit->pBufAddr[1] = 0;
        #endif
        pLayerInit->pBufAddr[2] = 0;
        //dynamic window size
        pLayerInit->win.x= 0;
        pLayerInit->win.y = 0;
        pLayerInit->win.w = DeviceSize.w;
        pLayerInit->win.h = DeviceSize.h;
        pLayerInit->uiWinAttr = 0;

        r = GxDisplay_InitLayer(iDD, &LayerInit, bClear);
        DBG_MSG("VDO1 buf=%08x, size=%08x\n\r",LayerInit.pBufAddr[0], LayerInit.uiBufSize);
        DBG_MSG("VDO1 buf.w=%d, buf.h=%d;\n\r",LayerInit.uiWidth, LayerInit.uiHeight);
        DBG_MSG("VDO1 win.w=%d, win.h=%d;\n\r",LayerInit.win.w, LayerInit.win.h);

        break;

    case LAYER_VDO2:

        uiBufAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO2);

        pLayerInit->uiType = TYPE_FB;
        pLayerInit->uiPxlfmt = DISPLAY_VDO_FMT;
        pLayerInit->uiWidth = vdo_w;
        pLayerInit->uiHeight = vdo_h;
        #if (VDO2_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->uiBufCount = 1;
        pLayerInit->uiSwapEffect = SWAPEFFECT_COPY;
        #else
        pLayerInit->uiBufCount = 0;
        pLayerInit->uiSwapEffect = SWAPEFFECT_DISCARD;
        #endif
        switch(pLayerInit->uiPxlfmt)
        {
            case PXLFMT_YUV422:
            case PXLFMT_YUV422_PK: pLayerInit->uiBufSize = (vdo_w*vdo_h)*2 + 64;
                break;
            default: DBG_ERR("Pxlfmt %d",pLayerInit->uiPxlfmt);
        }
        pLayerInit->pBufAddr[0] = uiBufAddr;
        #if (VDO2_USE_DOUBLE_BUFFER == ENABLE)
        pLayerInit->pBufAddr[1] = uiBufAddr + pLayerInit->uiBufSize;
        #else
        pLayerInit->pBufAddr[1] = 0;
        #endif
        pLayerInit->pBufAddr[2] = 0;
        pLayerInit->win.x = 0;
        pLayerInit->win.y = 0;
        pLayerInit->win.w = DeviceSize.w;
        pLayerInit->win.h = DeviceSize.h;
        pLayerInit->uiWinAttr = 0;

        r = GxDisplay_InitLayer(iDD, &LayerInit, bClear);
        DBG_MSG("VDO2 buf1=%08x, size=%08x\n\r",LayerInit.pBufAddr[0], LayerInit.uiBufSize);
        DBG_MSG("VDO2 buf2=%08x, size=%08x\n\r",LayerInit.pBufAddr[1], LayerInit.uiBufSize);
        DBG_MSG("VDO2 buf.w=%d, buf.h=%d;\n\r",LayerInit.uiWidth, LayerInit.uiHeight);
        DBG_MSG("VDO2 win.w=%d, win.h=%d;\n\r",LayerInit.win.w, LayerInit.win.h);

        break;
    }
}
Пример #14
0
static BOOL UI_WriteLogoFileName(UINT32 logoId)
{
    FST_FILE    pFile;
    UINT32      uiFileSize;
    UINT8       *BgBuf;
    char        *fileName;
    URECT       Rect = {0, 0, 320, 240};
    ER          erReturn = E_OK;
    PSTORE_SECTION_HANDLE* pSecHdl; // to save the handle of PStore section
    char *psecnameId;

    if (logoId == UI_LOGO_POWERON)
    {
        fileName = "A:\\logo.jpg";
        psecnameId = PS_POWERON_LOGO;
    }
    else //if (logoId == UI_LOGO_POWEROFF)
    {
        fileName = "A:\\logo2.jpg";
        psecnameId = PS_POWEROFF_LOGO;
    }

    FileSys_WaitFinish();
    pFile = FileSys_OpenFile(fileName, FST_OPEN_READ);

    if (pFile == NULL)
    {
        debug_err(("open file error\r\n"));
        return FALSE;
    }

    uiFileSize = FileSys_GetFileLen(fileName);  // for small page nand

    USE_MSG(("file size = %d\r\n",uiFileSize));

    if ((uiFileSize < 1024) || (uiFileSize > LOGO_MAX_FILESIZE))
    {
        Cal_FillRect(&Rect, _OSD_INDEX_BLACK);
        Cal_ShowStringByColor("jpg size is too big or too small\n", &Rect, _OSD_INDEX_YELLOW, _OSD_INDEX_BLACK);
        Delay_DelayMs(2000);
        Cal_FillRect(&Rect, _OSD_INDEX_BLACK);
        debug_err(("Write logo error\n\r"));
        return FALSE;
    }

    BgBuf = (UINT8 *)OS_GetMempoolAddr(POOL_ID_APP);
    if (FileSys_ReadFile(pFile,(UINT8 *)(BgBuf+4),&uiFileSize,FST_FLAG_NONE,NULL)!=FST_STA_OK)
    {
        USE_MSG(("file read failed\r\n"));
        return FALSE;
    }

    FileSys_CloseFile(pFile);

    *BgBuf = LO_BYTE(LO_WORD(uiFileSize));
    *(BgBuf+1) = HI_BYTE(LO_WORD(uiFileSize));
    *(BgBuf+2) = LO_BYTE(HI_WORD(uiFileSize));
    *(BgBuf+3) = HI_BYTE(HI_WORD(uiFileSize));

    pSecHdl = PStore_OpenSection(psecnameId, PS_RDWR | PS_CREATE);

    if (pSecHdl == E_PS_SECHDLER)
    {
        debug_err(("Section open fail\r\n"));
        goto err_ret;
    }

    erReturn = PStore_WriteSection(BgBuf, 0, SYSPARAM_LOGO_LEN, pSecHdl);

    if (erReturn != E_PS_OK)
    {
        debug_err(("PStore program error\r\n"));
        goto err_ret;
    }
    //#PIC#2010/07/23#Creator -begin
    PStore_CloseSection(pSecHdl);
    //#PIC#2010/07/23#Creator -end
    return TRUE;

err_ret:
    PStore_CloseSection(pSecHdl);
    //PStore_DisablePS();
    return FALSE;
}
Пример #15
0
BOOL UI_ShowLogoFile(UINT32 logoId,UINT32 *uiJpgAddr,UINT32 *uiJpgSize)
{
    UINT32      uiFileSize;
    UINT8       *BgBuf;
    ER          erReturn;
    PSTORE_SECTION_HANDLE* pSecHdl; // to save the handle of PStore section
    char *psecnameId;


    if (logoId == UI_LOGO_POWERON)
    {
        psecnameId = PS_POWERON_LOGO;
    }
    else //if (logoId == UI_LOGO_POWEROFF)
    {
        psecnameId = PS_POWEROFF_LOGO;
    }

    //get_blk((void *)&BgBuf,  POOL_ID_SICD);
    //rel_blk(POOL_ID_SICD, BgBuf);
    BgBuf = (UINT8 *)OS_GetMempoolAddr(POOL_ID_APP);

    //PStore_EnablePS();
    //pSecHdl = PStore_OpenSection(PS_BG_LOGO, PS_RDONLY);
    pSecHdl = PStore_OpenSection(psecnameId, PS_RDONLY);

    if (pSecHdl == E_PS_SECHDLER)
    {
        debug_err(("Section PS_BG_LOGO open fail\r\n"));
        PStore_CloseSection(pSecHdl);
        //PStore_DisablePS();

        return FALSE;
    }

    erReturn = PStore_ReadSection(BgBuf, 0, 4, pSecHdl);

    if (erReturn != E_PS_OK)
    {
        debug_err(("PStore read error\r\n"));
    }
    uiFileSize = MAKE_LONG(MAKE_WORD(BgBuf[0],BgBuf[1]),MAKE_WORD(BgBuf[2],BgBuf[3]));

    USE_MSG(("UserPS_ShowLogoFile: logo uiFileSize %d\r\n",uiFileSize));
    //check file size logo size:  1k---20k
    if ((uiFileSize < 1024) || (uiFileSize > LOGO_MAX_FILESIZE))
    {
        USE_MSG(("Show logo error\n\r"));
        PStore_CloseSection(pSecHdl);
        //PStore_DisablePS();

        return FALSE;
    }
    erReturn = PStore_ReadSection(BgBuf, 0, (uiFileSize+4), pSecHdl);

    if (erReturn != E_PS_OK)
    {
        debug_err(("PStore read error\r\n"));
        PStore_CloseSection(pSecHdl);
        return FALSE;
    }

    PStore_CloseSection(pSecHdl);

    *uiJpgAddr = (UINT32)(BgBuf+4);
    *uiJpgSize = (UINT32)uiFileSize;

    return TRUE;
}
Пример #16
0
void UI_UpdateCfgFile(void)
{
#if 0
    UINT32      uiKeyAct, uiKeyCode;
    FLGPTN     uiFlag;
#endif
    char*       str;
    FST_FILE    pFile;
    UINT32      uiFileSize;
    UINT8       *BgBuf;
    char        *fileName;
    URECT       Rect = {0, 0, 320, 240};
    BOOL        Ret  =TRUE ;
    ER          erReturn;

    PSTORE_SECTION_HANDLE* pSecHdl; // to save the handle of PStore section

    fileName = "A:\\NTCONFIG.bin";

    FileSys_WaitFinish();
    pFile = FileSys_OpenFile(fileName, FST_OPEN_READ);

    if (pFile == NULL)
    {
        debug_err(("open file error\r\n"));
        Ret  =FALSE;
    }

    uiFileSize = FileSys_GetFileLen(fileName);  // for small page nand
    USE_MSG(("file size = %d\r\n",uiFileSize));

    //if file is null
    if (uiFileSize == 0)
    {
        USE_MSG(("file size is 0\r\n"));
        Ret  =FALSE;
    }

    if (uiFileSize > CFG_MAX_FILESIZE)
    {
        USE_MSG(("file size is bigger = %d\r\n",uiFileSize));
        Ret  =FALSE;
    }

    //get_blk((void *)&BgBuf,  POOL_ID_SICD);
    //rel_blk(POOL_ID_SICD, BgBuf);
    //SysGetSICDAddr((UINT32*)&BgBuf);
    BgBuf = (UINT8 *)OS_GetMempoolAddr(POOL_ID_APP);
    if (FileSys_ReadFile(pFile,BgBuf,&uiFileSize,FST_FLAG_NONE,NULL)!=FST_STA_OK)
    {
        USE_MSG(("file read failed\r\n"));
        Ret  =FALSE;
    }

    FileSys_CloseFile(pFile);

    *BgBuf = LO_BYTE(LO_WORD(uiFileSize));
    *(BgBuf+1) = HI_BYTE(LO_WORD(uiFileSize));
    *(BgBuf+2) = LO_BYTE(HI_WORD(uiFileSize));
    *(BgBuf+3) = HI_BYTE(HI_WORD(uiFileSize));

    //PStore_EnablePS();
    pSecHdl = PStore_OpenSection(PS_BG_CFG, PS_RDWR | PS_CREATE);

    if (pSecHdl == E_PS_SECHDLER)
    {
        debug_err(("Section open fail\r\n"));
        PStore_CloseSection(pSecHdl);
        //PStore_DisablePS();
        Ret  =FALSE;
    }

    erReturn = PStore_WriteSection(BgBuf, 0, SYSPARAM_SYSFLAG_LEN, pSecHdl);

    PStore_CloseSection(pSecHdl);

    if (erReturn != E_PS_OK)
    {
        debug_err(("PStore program error\r\n"));
        Ret  =FALSE;
    }


    Cal_FillRect(&Rect, _OSD_INDEX_BLACK);

    Rect.x   = 56;
    Rect.y   = 108;
    Rect.w   = 212;
    Rect.h   = 24;

    if (Ret  == FALSE)
    {
        str =  "Update Cfg file error";
        Cal_ShowStringByColor(str, &Rect, _OSD_INDEX_YELLOW, _OSD_INDEX_BLACK);
    }else
    {
        str = "Update Cfg file ok";
        Cal_ShowStringByColor(str, &Rect, _OSD_INDEX_YELLOW, _OSD_INDEX_BLACK);
    }

    Delay_DelayMs(1000);

    if (Ret)
    {
       System_PowerOff(SYS_POWEROFF_NORMAL);
    }

#if 0

    clr_flg(FLG_ID_CALIBRATION, 0xffffffff);
    while (1)
    {
        wai_flg(&uiFlag, FLG_ID_CALIBRATION, 0xffffffff, TWF_ORW | TWF_CLR);

        debug_msg("^GuiFlag:%x\r\n",uiFlag);
        if (uiFlag)
            break;
    }
#else
    Delay_DelayMs(1500);
#endif
}
Пример #17
0
BOOL UI_LoadCfgFile(void)
{
    ER erReturn;
    UINT32 i;

    char *SysParam_Sector;
    UINT32      uiFileSize;
    UINT8       *BgBuf;
    PSTORE_SECTION_HANDLE* pSecHdl;


    strcpy(gUIConfigInfo.strMakerString, (CHAR *)GetMakerString());
    strcpy(gUIConfigInfo.strModelString,(CHAR *)GetModelString());
    strcpy(gUIConfigInfo.strSoftwareVer,(CHAR *)GetVersionString());

    gUIConfigInfo.uiSizeDefaultIndex        = DEFAULT_PHOTO_SIZE;
    gUIConfigInfo.uiMovieSizeDefaultIndex   = DEFAULT_MOVIE_SIZE;
    gUIConfigInfo.uiLanguageDefaultIndex    = DEFAULT_LANGUAGE;
    gUIConfigInfo.uiFreqDefaultIndex        = DEFAULT_FREQUENCY;
    gUIConfigInfo.uiTVModeDefaultIndex      = DEFAULT_TV_MODE;
    gUIConfigInfo.uiDateImprintDefaultIndex = DEFAULT_MOVIE_DATEIMPRINT;
    gUIConfigInfo.uiBeepDefaultIndex        = DEFAULT_BEEP;
    gUIConfigInfo.uiVideoAudioDefaultIndex  = DEFAULT_MOVIE_AUDIO;


    BgBuf = (UINT8 *)OS_GetMempoolAddr(POOL_ID_APP);
    //PStore_EnablePS();
    pSecHdl = PStore_OpenSection(PS_BG_CFG, PS_RDONLY);

    if (pSecHdl == E_PS_SECHDLER)
    {
        debug_err(("UserPS_ReadCfgFile: Section open fail\r\n"));
        goto err_ret;
    }

    erReturn = PStore_ReadSection(BgBuf, 0, 4, pSecHdl);

    if (erReturn != E_PS_OK)
    {
        debug_err(("UserPS_ReadCfgFile: PStore read error\r\n"));
        goto err_ret;
    }

    uiFileSize = MAKE_LONG(MAKE_WORD(BgBuf[0],BgBuf[1]),MAKE_WORD(BgBuf[2],BgBuf[3]));

    USE_MSG(("UserPS_ReadCfgFile: cfg filesize=%d\r\n", uiFileSize));

    if (uiFileSize > CFG_MAX_FILESIZE)
    {
        debug_err(("UserPS_ReadCfgFile: file size error\n\r"));
        goto err_ret;
    }

    erReturn = PStore_ReadSection(BgBuf, 0, (uiFileSize+4), pSecHdl);
    if (erReturn != E_PS_OK)
    {
        debug_err(("UserPS_ReadCfgFile: PStore read error\r\n"));
        goto err_ret;
    }
    PStore_CloseSection(pSecHdl);
    //PStore_DisablePS();

    SysParam_Sector = (char *)(BgBuf + ((uiFileSize+4+4-1)/4)*4);

    memset((UINT8 *)SysParam_Sector,0,SYSPARAM_SYSFLAG_LEN);
    if (!get_key_value((char *)&BgBuf[4],(char*)SysParam_Sector))
    {
        debug_err(("UserPS_ReadCfgFile: Read cfg file error\r\n"));
        return FALSE;//goto err_ret;
    }

    i = 0;
    while(TRUE)
    {
        if (SysParam_Sector[0] == '\0')
        {
             debug_err(("sysflag is null\r\n"));
             break;
        }
        if (i*KEY_VALUE_LEN >= SYSPARAM_SYSFLAG_LEN)
        {
            break;
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "beep"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "yes"))
            {
                USE_MSG(("beep yes\r\n"));
                UI_SetBeepDefaultIndex(BEEP_ON);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "no"))
            {
                USE_MSG(("beep no\r\n"));
                UI_SetBeepDefaultIndex(BEEP_OFF);
            }
        }

        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "videoaudio"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "yes"))
            {
                USE_MSG(("videoaudio yes\r\n"));
                UI_SetVideoAudioDefaultIndex(MOVIE_AUDIO_ON);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "no"))
            {
                USE_MSG(("videoaudio no\r\n"));
                UI_SetVideoAudioDefaultIndex(MOVIE_AUDIO_OFF);
            }
        }

        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "hz"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "50hz"))
            {
                USE_MSG(("50hz\r\n"));
                UI_SetFreqDefaultIndex(FREQUENCY_50HZ);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "60hz"))
            {
                USE_MSG(("60hz\r\n"));
                UI_SetFreqDefaultIndex(FREQUENCY_60HZ);
            }
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "tvmode"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "pal"))
            {
                USE_MSG(("tvmode pal\r\n"));
                UI_SetTVModeDefaultIndex(TV_MODE_PAL);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "ntsc"))
            {
                USE_MSG(("tvmode  ntsc\r\n"));
                UI_SetTVModeDefaultIndex(TV_MODE_NTSC);
            }
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "date"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "yes"))
            {
                USE_MSG(("date_time on\r\n"));
                UI_SetDateImprintDefaultIndex(DATE_TIME_ON);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "no"))
            {
                USE_MSG(("date_time off\r\n"));
                UI_SetDateImprintDefaultIndex(DATE_TIME_OFF);
            }
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "moviesize"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "1080p"))
            {
                USE_MSG(("moviesize-1080p\r\n"));
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_1080P].TextId = IDS_MOVIE_SIZE_1080FHD;
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_1080P].IconId = IDI_MOVIE_SIZE_1080FHD;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "720p"))
            {
                USE_MSG(("moviesize-720p\r\n"));
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_720P].TextId = IDS_MOVIE_SIZE_720P;
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_720P].IconId = IDI_MOVIE_SIZE_720P;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "wvga"))
            {
                USE_MSG(("moviesize-wvga\r\n"));
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_WVGA].TextId = IDS_MOVIE_SIZE_WVGA;
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_WVGA].IconId = IDI_MOVIE_SIZE_WVGA;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "vga"))
            {
                USE_MSG(("moviesize-vga\r\n"));
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_VGA].TextId = IDS_MOVIE_SIZE_VGA;
                gTM_OPTIONS_MOVIE_SIZE[MOVIE_SIZE_VGA].IconId = IDI_MOVIE_SIZE_VGA;
            }
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "photosize"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "12m"))
            {
                USE_MSG(("photosize-12m\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_12M].TextId = IDS_PHOTO_SIZE_12M;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_12M].IconId = IDI_PHOTO_SIZE_12M;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "10m"))
            {
                USE_MSG(("photosize-10m\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_10M].TextId = IDS_PHOTO_SIZE_10M;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_10M].IconId = IDI_PHOTO_SIZE_10M;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "8m"))
            {
                USE_MSG(("photosize-8m\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_8M].TextId = IDS_PHOTO_SIZE_8M;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_8M].IconId = IDI_PHOTO_SIZE_8M;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "5m"))
            {
                USE_MSG(("photosize-5m\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_5M].TextId = IDS_PHOTO_SIZE_5M;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_5M].IconId = IDI_PHOTO_SIZE_5M;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "3m"))
            {
                USE_MSG(("photosize-3m\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_3M].TextId = IDS_PHOTO_SIZE_3M;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_3M].IconId = IDI_PHOTO_SIZE_3M;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "2m169"))
            {
                USE_MSG(("photosize-2m9\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_2MHD].TextId = IDS_PHOTO_SIZE_2MHD;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_2MHD].IconId = IDI_PHOTO_SIZE_2MHD;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "vga"))
            {
                USE_MSG(("photosize-vgam\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_VGA].TextId = IDS_PHOTO_SIZE_VGA;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_VGA].IconId = IDI_PHOTO_SIZE_VGA;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "1m"))
            {
                USE_MSG(("photosize-1m\r\n"));
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_1M].TextId = IDS_PHOTO_SIZE_1M;
                gTM_OPTIONS_PHOTO_SIZE[PHOTO_SIZE_1M].IconId = IDI_PHOTO_SIZE_1M;
            }
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "defaultmoviesize"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "1080p"))
            {
                USE_MSG(("defaultmoviesize-1080p\r\n"));
                UI_SetMovieSizeDefaultIndex(MOVIE_SIZE_1080P);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "720p"))
            {
                USE_MSG(("defaultmoviesize-720p\r\n"));
                UI_SetMovieSizeDefaultIndex(MOVIE_SIZE_720P);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "wvga"))
            {
                USE_MSG(("defaultmoviesize-wvga\r\n"));
                UI_SetMovieSizeDefaultIndex(MOVIE_SIZE_WVGA);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "vga"))
            {
                USE_MSG(("defaultmoviesize-vga\r\n"));
                UI_SetMovieSizeDefaultIndex(MOVIE_SIZE_VGA);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "qvga"))
            {
                USE_MSG(("defaultmoviesize-qvga\r\n"));
                UI_SetMovieSizeDefaultIndex(MOVIE_SIZE_QVGA);
            }
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "defaultphotosize"))
        {
            #if (UPDATE_CFG == UPDATE_CFG_YES)
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "vga"))
            {
                USE_MSG(("defaultphotosize-vga\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_VGA);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "2m169"))
            {
                USE_MSG(("defaultphotosize-2m169\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_2MHD);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "2m"))
            {
                USE_MSG(("defaultphotosize-2m\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_2M);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "3m"))
            {
                USE_MSG(("defaultphotosize-3m\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_3M);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "5m"))
            {
                USE_MSG(("defaultphotosize-5m\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_5M);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "8m"))
            {
                USE_MSG(("defaultphotosize-8m\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_8M);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "9m"))
            {
                USE_MSG(("defaultphotosize-9m\r\n"));
                //UI_SetSizeDefaultIndex(PHOTO_SIZE_10M);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "10m"))
            {
                USE_MSG(("defaultphotosize-10m\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_10M);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "12m"))
            {
                USE_MSG(("defaultphotosize-12m\r\n"));
                UI_SetSizeDefaultIndex(PHOTO_SIZE_12M);
            }
            #endif
        }

        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "language"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "en"))
            {
                USE_MSG(("language-en\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_EN].TextId = IDS_LANG_EN;
                gTM_OPTIONS_LANGUAGE[LANG_EN].IconId = IDI_LANG_EN;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "de"))
            {
                USE_MSG(("language-de\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_DE].TextId = IDS_LANG_DE;
                gTM_OPTIONS_LANGUAGE[LANG_DE].IconId = IDI_LANG_DE;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "es"))
            {
                USE_MSG(("language-es\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_ES].TextId = IDS_LANG_ES;
                gTM_OPTIONS_LANGUAGE[LANG_ES].IconId = IDI_LANG_ES;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "it"))
            {
                USE_MSG(("language-it\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_IT].TextId = IDS_LANG_IT;
                gTM_OPTIONS_LANGUAGE[LANG_IT].IconId = IDI_LANG_IT;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "ru"))
            {
                USE_MSG(("language-ru\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_RU].TextId = IDS_LANG_RU;
                gTM_OPTIONS_LANGUAGE[LANG_RU].IconId = IDI_LANG_RU;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "fr"))
            {
                USE_MSG(("language-fr\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_FR].TextId = IDS_LANG_FR;
                gTM_OPTIONS_LANGUAGE[LANG_FR].IconId = IDI_LANG_FR;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "sc"))
            {
                USE_MSG(("language-sc\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_SC].TextId = IDS_LANG_SC;
                gTM_OPTIONS_LANGUAGE[LANG_SC].IconId = IDI_LANG_SC;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "tc"))
            {
                USE_MSG(("language-tc\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_TC].TextId = IDS_LANG_TC;
                gTM_OPTIONS_LANGUAGE[LANG_TC].IconId = IDI_LANG_TC;
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "jp"))
            {
                USE_MSG(("language-jp\r\n"));
                gTM_OPTIONS_LANGUAGE[LANG_JP].TextId = IDS_LANG_JP;
                gTM_OPTIONS_LANGUAGE[LANG_JP].IconId = IDI_LANG_JP;
            }
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "defaultlanguage"))
        {
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "en"))
            {
                USE_MSG(("defaultlanguage-en\r\n"));
                UI_SetLanguageDefaultIndex(LANG_EN);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "fr"))
            {
                USE_MSG(("defaultlanguage-fr\r\n"));
                UI_SetLanguageDefaultIndex(LANG_FR);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "de"))
            {
                USE_MSG(("defaultlanguage-de\r\n"));
                UI_SetLanguageDefaultIndex(LANG_DE);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "es"))
            {
                USE_MSG(("defaultlanguage-es\r\n"));\
                UI_SetLanguageDefaultIndex(LANG_ES);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "ru"))
            {
                USE_MSG(("defaultlanguage-ru\r\n"));
                UI_SetLanguageDefaultIndex(LANG_RU);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "it"))
            {
                USE_MSG(("defaultlanguage-it\r\n"));
                UI_SetLanguageDefaultIndex(LANG_IT);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "sc"))
            {
                USE_MSG(("defaultlanguage-sc\r\n"));
                UI_SetLanguageDefaultIndex(LANG_SC);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "tc"))
            {
                USE_MSG(("defaultlanguage-tc\r\n"));
                UI_SetLanguageDefaultIndex(LANG_TC);
            }
            if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN, "jp"))
            {
                USE_MSG(("defaultlanguage-jp\r\n"));
                UI_SetLanguageDefaultIndex(LANG_JP);
            }
        }

        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "maker"))
        {

            USE_MSG(("maker:%s\r\n",SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN));
            strcpy(gUIConfigInfo.strMakerString,SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN);
        }

        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "model"))
        {

            USE_MSG(("model:%s\r\n",SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN));
            strcpy(gUIConfigInfo.strModelString,SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN);
        }

        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "version"))
        {

            USE_MSG(("verion:%s\r\n",SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN));
            strcpy(gUIConfigInfo.strSoftwareVer,SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN);
        }
        if (!strcmp(SysParam_Sector+i*KEY_VALUE_LEN, "ImageDescription"))
        {

            USE_MSG(("sImageDescription:%s\r\n",SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN));
            strcpy(gUIConfigInfo.strImageDescription,SysParam_Sector+i*KEY_VALUE_LEN+KEY_LEN);
        }

        i++;
    }

    return TRUE;
err_ret:

    PStore_CloseSection(pSecHdl);
    //PStore_DisablePS();
    return FALSE;
}
Пример #18
0
void System_OnStrgInit_FS(void)
{
    //#NT#2015/01/21#KS Hung -begin
    //#NT#Fast boot recording.
    #if (_FAST_BOOT_REC_FUNC_)
    DX_HANDLE pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_CARD1);
    UINT32 paramArray[0];
    #endif
    //#NT#2015/01/21#KS Hung -end

    {
        MEM_RANGE Pool;
        Pool.Addr = OS_GetMempoolAddr(POOL_ID_FS_BUFFER);
        //#NT#2015/01/21#KS Hung -begin
        //#NT#Fast boot recording.
        #if (_FAST_BOOT_REC_FUNC_)
        Pool.Addr = dma_getCacheAddr(Pool.Addr);
        #endif
        //#NT#2015/01/21#KS Hung -end
        Pool.Size = OS_GetMempoolSize(POOL_ID_FS_BUFFER);
        #if USE_FILEDB
        GxStrg_SetConfig(FILE_CFG_SUPPORT_EXFAT, FALSE); // cannot support exFAT if using FileDB
        #endif
        GxStrg_SetConfig(FILE_CFG_BUF, (UINT32)&Pool);
        //FileSys_InstallCmd();
    }
    {
        MEM_RANGE WorkBuf;
        WorkBuf.Addr = OS_GetMempoolAddr(POOL_ID_EXIF);
        WorkBuf.Size = POOL_SIZE_EXIF;
        Exif_Init(&WorkBuf, ExifCB);
        #if (_SENSORLIB2_ != _SENSORLIB2_DUMMY_)
        WorkBuf.Addr += POOL_SIZE_EXIF;
        EXIF_Init(EXIF_HDL_ID_2, &WorkBuf, ExifCB);
        #endif
    }
    GxStrg_RegCB(Strg_CB);         //Register CB function of GxStorage (NANR or CARD)
    {
        //FileSys:

        //1.設定init值
        //#NT#2012/11/14#Philex Lin - begin
        // init DCF FolderID/FileID with RTC data
        #if (UI_STYLE==UI_STYLE_DRIVER)
        System_OnStrgInitDCFFolder();
        #else
        // Initialize DCF name.ext
        //DCF dir-name
        DCF_SetDirFreeChars( DCF_SUBPATH );
        //DCF file-name
        DCF_SetFileFreeChars( DCF_FILE_TYPE_ANYFORMAT, DCF_IMAGE_NAME );
        #endif
        //#NT#2012/11/14#Philex Lin - end
        //DCF file-ext
        #if (MOVIE_FORMAT == MOVIE_FORMAT_AVI)
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI);
        #else
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI|DCF_FILE_TYPE_MOV|DCF_FILE_TYPE_MP4);
        #endif
        DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO);

        //TODO: [DCF] How to add an new format & its ext?

        //2.設定CB值,
        //3.註冊SxJob服務 ---------> System Job
        //4.註冊SxTimer服務 ---------> Detect Job
        #if (SDINSERT_FUNCTION == ENABLE)
        SX_TIMER_DET_STRG_ID = SxTimer_AddItem(&Timer_Card_DetInsert);
        #endif
        SX_TIMER_DET_SYSTEM_BUSY_ID = SxTimer_AddItem(&Timer_System_DetBusy);
        //5.註冊SxCmd服務 ---------> Cmd Function
        //System_AddSxCmd(Storage_OnCommand); //GxStorage

        #if (_DUAL_CARD_FUNC_ == ENABLE)
        SysSetFlag(FL_DualCardMain, MAIN_CARD_NONE);
        #endif

        //#NT#2014/12/08#KS Hung -begin
        //#NT#Fast boot recording.
        #if (_FAST_BOOT_REC_FUNC_)
        paramArray[0] = (UINT32)pStrgDev;
        if ( (GxStrg_GetDeviceCtrl((UINT32)pStrgDev, CARD_INSERT)) || (GxStrg_GetDeviceCtrl((UINT32)pStrgDev, CARD_READONLY)) )
        {
            GxStrg_ForceDetect(CARD_FORCE_DET_INSERT);
            System_OnStrgInsert(&SystemObjCtrl, 1, paramArray);
        }
        else
        {
            System_OnStrgRemove(&SystemObjCtrl, 1, paramArray);
        }
        #endif
        //#NT#2014/12/08#KS Hung -end
        //start scan
        SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, TRUE);
        SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, TRUE);
        /*
        #if (SDINSERT_FUNCTION == ENABLE)
        {
            //提早detect storage可以得到兩個好處:
            //1.知道storage的type是哪一種
            //2.立刻"啟動File System"
            //  如果沒這樣, 就要等到SXOPEN之後, SX_TIMER_DET_STRG_ID開始跑才會"啟動File System",
            //  與其他task的競爭結果, 容易造成"啟動File System"的timing不固定
            GxDet_Storage();
            GxDet_Storage();
            Delay_DelayMs(30);
        }
        #endif
        */
    }

}
Пример #19
0
INT32 JPG2MOV_MakeMovie(JPG2MOV_OBJ *pObj)
{
    #define BS_SIZE_MAX         (10*1024*1024)   // 10MB
    #define YUV_SIZE_MAX        (12*1024*1024)   // 12MB
    #define MEDIAREC_BUF_SIZE   (60*1024*1024)   // 60MB

    UINT32          uiPoolAddr, uiPoolSize, uiBSAddr, uiFileSize;
    UINT32          i, j, uiTimeCount, uiMediaRecAddr;
    JPG2YUV_INFO    Jpg2Yuv;
    FST_FILE        pFile;
    ER              err = E_OK;
    MEDIAREC_OBJ    MediaRecObj = {0};

    UINT32 FileNumber;
    FILEDB_HANDLE       fileDbHandle, fileDbbufSize=0x200000, fileDbbufAddr;
    PFILEDB_FILE_ATTR   pFileAttr;

    uiPoolAddr = OS_GetMempoolAddr(POOL_ID_APP);
    uiPoolSize = OS_GetMempoolSize(POOL_ID_APP);

    uiBSAddr = uiPoolAddr + uiPoolSize - BS_SIZE_MAX;
    uiMediaRecAddr = uiPoolAddr + YUV_SIZE_MAX;
    fileDbbufAddr = uiBSAddr - fileDbbufSize;

    // ----------------------------------- <--- APP buffer starting address
    // | JPEG decode YUV buffer          | (original image format)
    // -----------------------------------
    // | YUV buffer 1 for media recorder | (image format transform: to YUV420 UV-pack, ...)
    // -----------------------------------
    // | YUV buffer 2 for media recorder |
    // -----------------------------------
    // | YUV buffer 3 for media recorder |
    // -----------------------------------
    // | ...                             |
    // -----------------------------------
    // | JPEG bitstream buffer           |
    // ----------------------------------- <--- IQ buffer end address
    //
    // Note: Be sure the buffer is enough for storing the necessary YUV patterns!

    Perf_Open();
    uiTimeCount = Perf_GetCurrent();
    MediaRecObj.CallBackFunc = JPG2MOV_RecCB;
    if (MediaRec_Open(&MediaRecObj) != E_OK)
    {
        DBG_ERR("MediaRec_Open() failed!\r\n");
        return E_SYS;
    }

    // reset video encode ready flag to TRUE
    g_bVidEncReady = TRUE;

    //MediaRec_OpenCutMsg(1);
    MediaRec_SetGiveYUVBuf(uiMediaRecAddr, MEDIAREC_BUF_SIZE);
    JPG2MOV_SetRecParam();
    //MediaRec_ChangeParameter(MEDIAREC_RECPARAM_PRE_ENCODE, FALSE, 0, 0);
    //MediaRec_ChangeParameter(MEDIAREC_RECPARAM_MERGEYUV, 1, 0, 0);
    MediaRec_Record();

    //  create fileDB for copy
    {
        FILEDB_INIT_OBJ   FilDBInitObj={0};
        CHAR              rootPath[20]=FILEDB_TMLPS_ROOT;//"A:\\TMLPS\\";

        FilDBInitObj.rootPath = rootPath;
        FilDBInitObj.bIsRecursive = TRUE;
        FilDBInitObj.bIsCyclic = TRUE;
        FilDBInitObj.bIsMoveToLastFile = TRUE;
        FilDBInitObj.bIsSupportLongName = TRUE;
        FilDBInitObj.bIsDCFFileOnly = FALSE;
        FilDBInitObj.bIsChkHasFile = FALSE;
        FilDBInitObj.u32MaxFilePathLen = 60;
        FilDBInitObj.u32MaxFileNum = 20000;
        FilDBInitObj.fileFilter = FILEDB_FMT_JPG;
        FilDBInitObj.u32MemAddr = dma_getCacheAddr(fileDbbufAddr);
        FilDBInitObj.u32MemSize = fileDbbufSize;
        fileDbHandle = FileDB_Create(&FilDBInitObj);
    }

    // merge JPEG file one by one
    FileNumber = FileDB_GetTotalFileNum(fileDbHandle);
    for (i = 0; i < FileNumber; i++)
    {
        DBG_MSG("Handle photo no. %d\r\n", i);

        // 1. Read JPG data from file
        pFileAttr = FileDB_SearhFile(fileDbHandle, i);
        //sprintf(sFileName, "A:\\TMLPS\\PHOTO\\2000_0509_043848_001.JPG", (i+1));
        uiFileSize = BS_SIZE_MAX;
        pFile = FileSys_OpenFile(pFileAttr->filePath, FST_OPEN_READ);
        if (pFile)
        {
            FileSys_ReadFile(pFile, (UINT8 *)uiBSAddr, &uiFileSize, 0, NULL);
            FileSys_CloseFile(pFile);
            DBG_MSG("File %s, size %d\r\n", sFileName, uiFileSize);

            if (uiFileSize == BS_SIZE_MAX)
            {
                DBG_ERR("Read buffer is not enough!\r\n");
                MediaRec_Stop(MEDIAREC_WAIT_END);
                MediaRec_Close();
                return E_SYS;
            }
        }
        else
        {
            DBG_ERR("Open %s for reading failed!\r\n", sFileName);
            MediaRec_Stop(MEDIAREC_WAIT_END);
            MediaRec_Close();
            return E_SYS;
        }

        // 2. Decode JPEG, do format transform and image scaling
        Jpg2Yuv.uiJpgAddr = uiBSAddr;
        Jpg2Yuv.uiJpgSize = uiFileSize;
        Jpg2Yuv.uiYAddr = uiPoolAddr;
        err = JPG2YUV_DecodeAndScale(&Jpg2Yuv);

        // 3. Wait for video encode ready last time
        j = 0;
        while (j < 40)
        {
            if (g_bVidEncReady) // check video encode ready
            {
                break;
            }

            Delay_DelayMs(1); // delay 1 ms
            j++;
        }

        // 4. Trigger writing file every second
        if (i && ((i % 30) == 0))
        {
            MediaRec_TriggerWriteFile();
        }

        // 5. Do H.264 encode
        if (err == E_OK)
        {
            MEDIAREC_READYBUF_INFO readyInfo;

            readyInfo.y = Jpg2Yuv.uiYAddr;
            readyInfo.cb = Jpg2Yuv.uiUAddr;
            readyInfo.cr = Jpg2Yuv.uiVAddr;
            readyInfo.y_lot = Jpg2Yuv.uiYLineOffset;
            readyInfo.uv_lot = Jpg2Yuv.uiUVLineOffset;
            g_bVidEncReady = FALSE;
            MediaRec_GiveYUV(&readyInfo);
        }

        // 6. Update progress test
        if (pObj->fpProgressCB)
            pObj->fpProgressCB(((i+1)*100)/FileNumber);
    }
    FileDB_Release(fileDbHandle);

    MediaRec_Stop(MEDIAREC_WAIT_END);
    MediaRec_Close();
    uiTimeCount = Perf_GetCurrent() - uiTimeCount;
    DBG_DUMP("^YTotal merge time %d ms\r\n", uiTimeCount/1000);

    return E_OK;
}
Пример #20
0
void System_OnStrgInit_FS(void)
{
    {
        MEM_RANGE Pool;
        Pool.Addr = OS_GetMempoolAddr(POOL_ID_FS_BUFFER);
        Pool.Size = OS_GetMempoolSize(POOL_ID_FS_BUFFER);
        GxStrg_SetConfig(FILE_CFG_BUF, (UINT32)&Pool);
        //FileSys_InstallCmd();
    }
    {
        MEM_RANGE WorkBuf;
        WorkBuf.Addr = OS_GetMempoolAddr(POOL_ID_EXIF);
        WorkBuf.Size = POOL_SIZE_EXIF*POOL_CNT_EXIF;
        Exif_Init(&WorkBuf, ExifCB);
    }
    GxStrg_RegCB(Strg_CB);         //Register CB function of GxStorage (NANR or CARD)
    {
        //FileSys:

        //1.設定init值
        //#NT#2012/11/14#Philex Lin - begin
        // init DCF FolderID/FileID with RTC data
        #if (UI_STYLE==UI_STYLE_DRIVER)
        System_OnStrgInitDCFFolder();
        #else
        // Initialize DCF name.ext
        //DCF dir-name
        DCF_SetDirFreeChars( DCF_SUBPATH );
        //DCF file-name
        DCF_SetFileFreeChars( DCF_FILE_TYPE_ANYFORMAT, DCF_IMAGE_NAME );
        #endif
        //#NT#2012/11/14#Philex Lin - end
        //DCF file-ext
        #if (MOVIE_FORMAT == MOVIE_FORMAT_AVI)
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI);
        #else
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI|DCF_FILE_TYPE_MOV|DCF_FILE_TYPE_MP4);
        #endif
        DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO);

        //TODO: [DCF] How to add an new format & its ext?

        //2.設定CB值,
        //3.註冊SxJob服務 ---------> System Job
        //4.註冊SxTimer服務 ---------> Detect Job
        #if (SDINSERT_FUNCTION == ENABLE)
        SX_TIMER_DET_STRG_ID = SxTimer_AddItem(&Timer_Card_DetInsert);
        #endif
        SX_TIMER_DET_SYSTEM_BUSY_ID = SxTimer_AddItem(&Timer_System_DetBusy);
        //5.註冊SxCmd服務 ---------> Cmd Function
        //System_AddSxCmd(Storage_OnCommand); //GxStorage

        //start scan
        SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, TRUE);
        SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, TRUE);
        /*
        #if (SDINSERT_FUNCTION == ENABLE)
        {
            //提早detect storage可以得到兩個好處:
            //1.知道storage的type是哪一種
            //2.立刻"啟動File System"
            //  如果沒這樣, 就要等到SXOPEN之後, SX_TIMER_DET_STRG_ID開始跑才會"啟動File System",
            //  與其他task的競爭結果, 容易造成"啟動File System"的timing不固定
            GxDet_Storage();
            GxDet_Storage();
            Delay_DelayMs(30);
        }
        #endif
        */
    }

}
Пример #21
0
void MsdcNvtCb_Open(MSDCNVTCB_OPEN* pOpen)
{
    UINT8*              pMemPool = NULL;
    UINT32              MemSize = 0;
    MSDCNVT_INIT        MsdcNvtInit = {0};
    USB_MSDC_INFO       MSDCInfo = {0};
    MSDCNVT_LUN*        pLun = MsdcNvt_GetNullLun();

    //Due to PC Limit Max Packet Size is 64k Bytes, so MsdcVendor work need to cache buffer with 0x24000 bytes
    #if(CFG_CACHE_USE==CACHE_USE_LOCAL)
    pMemPool    = m_MsdcNvtCache;
    MemSize     = sizeof(m_MsdcNvtCache);
    #elif(CFG_CACHE_USE==CACHE_USE_MEM_POOL)
    pMemPool = (UINT8*)OS_GetMempoolAddr(POOL_ID_CACHE);
    pMemPool    += POOL_CACHE_OFFSET_MSDC_DBGSYS;
    MemSize     = POOL_SIZE_CACHE_MSDC_DBGSYS;
    #else
        #error "You have to select a cache source!"
    #endif

    MsdcNvtInit.uiApiVer         = MSDCNVT_API_VERSION;
    MsdcNvtInit.pMemCache        = (UINT8*)pMemPool;
    MsdcNvtInit.uiSizeCache      = MemSize;
    MsdcNvtInit.bHookDbgMsg      = TRUE;
    MsdcNvtInit.uiUartIdx        = 0;
    if(!MsdcNvt_Init(&MsdcNvtInit))
    {
        debug_err(("MsdcNvt_Init() Failed!\r\n"));
        return;
    }

    //Register Bi - Direction Functions
    #if(CFG_MSDC_NVT_CB_PHOTO==ENABLE)
    MsdcNvtRegBi_Photo();
    #endif
    #if(CFG_MSDC_NVT_CB_DISP==ENABLE)
    MsdcNvtRegBi_Disp();
    #endif
    #if(CFG_MSDC_NVT_CB_FILE==ENABLE)
    {
        MSDCNVTCBFILE_INIT Init={0};
        Init.uiWorkingAddr = OS_GetMempoolAddr(POOL_ID_APP);
        Init.uiWorkingSize = POOL_SIZE_APP;
        MsdcNvtCbFile_Init(&Init);
        MsdcNvtRegBi_File();
    }
    #endif
    #if(CFG_MSDC_NVT_CB_ADJ==ENABLE)
    MsdcNvtRegBi_Adj();
    #endif
    #if(CFG_MSDC_NVT_CB_UPDFW==ENABLE)
    MsdcNvtRegBi_UpdFw();
    #endif

    //Register Single Direction Functions
    #if(CFG_SI_MODULE==SI_MODULE_CUSTOM_SI)
    MsdcNvtRegSi_CustomSi();
    #elif (CFG_SI_MODULE==SI_MODULE_IQSIM)
    MsdcNvtRegSi_IQSim();
    #elif (CFG_SI_MODULE==SI_MODULE_AE)
    AEAlg2_MsdcCB();
    #endif

    MSDCInfo.uiMsdcBufAddr = (UINT32)pMemPool;
    MSDCInfo.uiMsdcBufSize = (UINT32)MemSize;
    pOpen->fpUSBMakerInit(&MSDCInfo);

    //The callback functions for the MSDC Vendor command.
    //If project doesn't need the MSDC Vendor command, set this callback function as NULL.
    MSDCInfo.msdc_check_cb = MsdcNvt_Verify_Cb;
    MSDCInfo.msdc_vendor_cb = MsdcNvt_Vendor_Cb;

    //Assign a Null Lun
    MSDCInfo.pStrgHandle[0] = pLun->hStrg;
    MSDCInfo.msdc_type[0] = pLun->Type;
    MSDCInfo.msdc_storage_detCB[0] = pLun->fpStrgDetCb;
    MSDCInfo.msdc_strgLock_detCB[0] = pLun->fpStrgLockCb;
    MSDCInfo.LUNs = pLun->uiLUNs;

    // Open MSDC task
    if (Msdc_Open(&MSDCInfo) != E_OK)
    {
        debug_err(("Error open USB MSDC task\r\n"));
    }
}
Пример #22
0
void System_OnVideoInit(void)
{
    DX_HANDLE cDispDev = 0;
    PDISP_OBJ       pDispObj=disp_getDisplayObject(DISP_1);
    DISPDEV_PARAM   DispDev;
    //PHASE-1 : Init & Open Drv or DrvExt
    {
        GxVideo_RegCB(Video_CB);         //Register CB function of GxVideo

        gDevLCDObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT|DX_TYPE_LCD);
        DBG_MSG("LCD = %08x\r\n", gDevLCDObj);

        gDevTVObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT|DX_TYPE_TVOUT);
        DBG_MSG("TV = %08x\r\n", gDevTVObj);
        gDevHDMIObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT|DX_TYPE_HDMIOUT);
        DBG_MSG("HDMI = %08x\r\n", gDevHDMIObj);

        GxVideo_InitDevice(DOUT1);
        GxVideo_InitDevice(DOUT2);

        cDispDev = gDevLCDObj;
        if(cDispDev)
        {
            //Dx_Init(cDispDev, 0, Display_CB, DISPLAY_VER);
            Dx_Init(cDispDev, 0, 0, DISPLAY_VER);
        }
        cDispDev = gDevTVObj;
        if(cDispDev)
        {
            //Dx_Init(cDispDev, 0, Display_CB, DISPLAY_VER);
            Dx_Init(cDispDev, 0, 0, DISPLAY_VER);
        }
        cDispDev = gDevHDMIObj;
        if(cDispDev)
        {
            //Dx_Init(cDispDev, 0, Display_CB, DISPLAY_VER);
            Dx_Init(cDispDev, 0, 0, DISPLAY_VER);
        }
        //5.註冊SxCmd服務 ---------> Cmd Function
        //SxCmd_AddTabel(Cmd_lcd);
        //SxCmd_AddTabel(Cmd_tv);
        //SxCmd_AddTabel(Cmd_hdmi);
        //GxVideo_InstallCmd();
    }
    //PHASE-2 : Init & Open Lib or LibExt
    {
        //Config SxJob,SxTimer,SxCmd
        //3.註冊SxJob服務 ---------> System Job
        //SX_JOB_DISPLAY = System_AddSxJob(Display_Change_Job);
        //SX_JOB_DISPMODE = System_AddSxJob(Display_ChangeMode_Job);
        //4.註冊SxTimer服務 ---------> Detect Job
        #if (TVINSERT_FUNCTION == ENABLE)
        SX_TIMER_DET_TV_ID = SxTimer_AddItem(&Timer_Display_DetTV);
        #endif
        #if (DET_LCD_REG_FUNCTION == ENABLE)
        SX_TIMER_DET_LCDREG_ID = SxTimer_AddItem(&Timer_Display_DetStatus);
        #endif
        #if (DET_LCDDIR_FUNCTION == ENABLE)
        SX_TIMER_DET_LCDDIR_ID = SxTimer_AddItem(&Timer_Display_DetLCDDir);
        #endif

        //5.註冊SxCmd服務 ---------> Cmd Function

        //config video Output
        cDispDev = gDevLCDObj;
        GxVideo_OpenDevice(DOUT1, (UINT32)cDispDev, DISP_LASTMODE);//open LCD first
        GxVideo_DumpInfo();
        #if (DET_LCDDIR_FUNCTION == ENABLE)
        //config video Direct
        Display_DetLCDDir();
        #endif
        DispDev.SEL.SET_ROTATE.Rot = DISPDEV_LCD_ROTATE_180;
          pDispObj->devCtrl(DISPDEV_SET_ROTATE, &DispDev);	
        Ux_PostEvent(NVTEVT_VIDEO_ATTACH, 1, 1); // attach

        #if (TVINSERT_FUNCTION == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_TV_ID, TRUE);
        #endif
        #if (DET_LCDDIR_FUNCTION == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_LCDDIR_ID, TRUE);
        #endif

        //DispSrv_InstallCmd();
        AppView_Init();
        {
        #if(VDO_USE_ROTATE_BUFFER == ENABLE)
            UINT32 uiPoolAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO1);
            UINT32 uiPoolSize = OS_GetMempoolSize(POOL_ID_DISP_VDO1)+OS_GetMempoolSize(POOL_ID_DISP_VDO1TEMP)+OS_GetMempoolSize(POOL_ID_DISP_VDO1TEMP2);
            AppView_ConfigWorkingBuffer(uiPoolAddr, uiPoolSize);
            if((DX_HANDLE)GxVideo_GetDevice(DOUT1) == gDevLCDObj)
            {
                 AppView_ConfigAttr(0, 0, DISPSRV_ROTATE_90); //enable rotate 90
            }
        #else
            UINT32 uiPoolAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO1);
            UINT32 uiPoolSize = OS_GetMempoolSize(POOL_ID_DISP_VDO1)+OS_GetMempoolSize(POOL_ID_DISP_VDO1TEMP);
            AppView_ConfigWorkingBuffer(uiPoolAddr, uiPoolSize);
        #endif
        }
        {
        #if(OSD_USE_ROTATE_BUFFER == ENABLE)
            if((DX_HANDLE)GxVideo_GetDevice(DOUT1) == gDevLCDObj)
            {
                View_Window_ConfigAttr(0, 1); //enable rotate 90
            }
        #endif
        }
    }
    ////////////////////////////////////////////////////////////////
    {
        ISIZE             DeviceSize;
        //Init Display
        DeviceSize = GxVideo_GetDeviceSize(DOUT1); //Get LCD size
        GxDisplay_Init(DOUT1, DeviceSize.w, DeviceSize.h);
        DeviceSize = GxVideo_GetDeviceSize(DOUT2); //Get LCD size
        GxDisplay_Init(DOUT2, DeviceSize.w, DeviceSize.h);
    }
}
Пример #23
0
void FlowMode_OnUsbUnplug(void)
{
    UINT32 filesize ;
    char * uiBuffer ;
    //ER status ;
    UIDebug_usb(("^BFlowMode_OnUsbUnplug begin\r\n"));
    //#NT#2010/03/16#Lincy Lin -begin
    //#NT# For Calibration
    #if 1
    if(IS_USB_VENDOR())
    {
            FST_FILE filehdl = NULL;
            INT32 ret = FST_STA_ERROR;
#if _DEMO_TODO
            GxFile_GetStorageObj(PRIMARY_STGTYPE_CARD)->Close();
            //GxFile_ChangeStorage(PRIMARY_STGTYPE_CARD);
            GxFile_ChangeStorage(PRIMARY_STGTYPE_CARD);
#endif
            uiBuffer = (char *)OS_GetMempoolAddr(POOL_ID_GFX_IMAGE);
            debug_err(("\n[IMG] Pool size read %d \r\n", OS_GetMempoolSize(POOL_ID_GFX_IMAGE)));
            // Update English Language begin
            filesize = 0x4;
            // Disable IDE video1/video2 output
            //UI_Show(UI_SHOW_INFO, TRUE); //OSD2
            //UI_Show(UI_SHOW_WINDOW, TRUE);  //OSD1
            //UI_Show(UI_SHOW_BACKGND, TRUE); //VDO2
            //UI_Show(UI_SHOW_PREVIEW, TRUE); //VDO1
            GxVideo_SetDeviceCtrl(DOUT1, DISPLAY_DEVCTRL_BRIGHTLVL, 5);
            filehdl = FileSys_OpenFile("A:\\FO.txt",FST_OPEN_READ);
            ret = FileSys_ReadFile(filehdl,(UINT8*)uiBuffer,&filesize, 0, 0);
            FileSys_CloseFile(filehdl);
            if(ret==FST_STA_OK)
            {
                Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_PHOTO);
                #if (_CALIBRATION_MODE_ == ENABLE)
                //g_IsautoMTF = TRUE;
                g_bCalbirationOpened = FALSE;
                #endif
                SwTimer_DelayMs(1500);
                Ux_PostEvent(NVTEVT_STORAGE_INIT, 0, 0);
                //FocusOffsetAdjust();
                //debug_err(("^R status = 0x%x 0x%x \r\n" , status , *(UINT32 *)uiBuffer));
            }
            else
            {
                UIDebug_usb(("^B USB PlugOff,PwrOff 1\r\n"));
                System_PowerOff(SYS_POWEROFF_NORMAL);
            }
    }
    else
    {
        UIDebug_usb(("^B USB PlugOff,PwrOff 2\r\n"));
        System_PowerOff(SYS_POWEROFF_NORMAL);
    }
    #else
    #if (MODEKEY_FUNCTION == ENABLE)
    Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, System_GetState(SYS_STATE_PREVMODE));
    //#NT#2009/12/24#Lily Kao - begin
    debug_msg("USB_CB:PlugOff,PrevMode=%d\r\n",System_GetState(SYS_STATE_PREVMODE));
    //System_PowerOff();
    //#NT#2010/01/14#Lincy Lin -begin
//#NT#2010/02/03#Brad Chen -begin
//#NT# add USB unplug then change to photo mode
    {
        UINT32 uiDscMode;
        //#NT#2010/01/20#JeahYen -begin
        uiDscMode = Input_Key2Mode(GxKey_GetData(GXKEY_STS_KEY1));
        //#NT#2010/01/20#JeahYen -end
        UI_SetData(FL_ModeIndex,uiDscMode);
        UI_Switch_DscMode(uiDscMode,DSCMODE_SWITCH_FORCE,DSCMODE_SWITCHDIR_DONT_CARE);
    }
//#NT#2010/02/03#Brad Chen -end
    #else
    {
        UINT32 uiDscMode;
        //#NT#2010/01/20#JeahYen -begin
        uiDscMode = Input_Key2Mode(GxKey_GetData(GXKEY_STS_KEY1));
        //#NT#2010/01/20#JeahYen -end
        UI_SetData(FL_ModeIndex,uiDscMode);
        UI_Switch_DscMode(uiDscMode,DSCMODE_SWITCH_FORCE,DSCMODE_SWITCHDIR_DONT_CARE);
    }
    #endif
    #endif
    //#NT#2010/03/16#Lincy Lin -end
    UIDebug_usb(("^BFlowMode_OnUsbUnplug end\r\n"));
}
Пример #24
0
INT32 SetupExe_OnFileSysInit(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
#if _DEMO_TODO
    //#NT#2010/11/27Steven feng-begin
    UINT32       uiPoolAddr;
    UINT32       uiBufSize = 0 ,status;
    //#NT#2011/02/16#Steven feng -begin
    #if SLIDESHOW_MUSIC_OPTION
    UINT32       i;
    #endif
    //#NT#2011/02/16#Steven feng -end
    //#NT#2010/11/27Steven feng-end
    //debug_msg("[SetupObj] FileSysInit\r\n");
    //#NT#2010/09/28#Lincy Lin -begin
    //#NT#Add check if write Photo frame Pstore when update FW
    if(FlowMode_IsPowerOnUpdateFW())
    {
        FST_FILE filehdl = NULL;
        INT32 ret = FST_STA_ERROR;
        //#NT#2011/01/07#Janice Huang -begin
        //#NT#add warn wind,for Production line ,unplug bettery
        Ux_OpenWindow(&DialogWarnCtrl, 2, WRN_FW_UPDATING, WARN_ALWAYS);
        //#NT#2010/11/04#Lincy Lin -begin
        // delay for AE stable
        SwTimer_DelayMs(100);
        //#NT#2010/11/04#Lincy Lin -end
        UIRes_ChkWritePHFE();

        //#NT#2011/02/14Steven feng-begin
        #if SLIDESHOW_MUSIC_OPTION
        UIRes_ChkWriteSSWAV();
        #endif
        //#NT#2011/02/14Steven feng-end

        //#NT#2010/11/27Steven feng-begin

        uiPoolAddr = OS_GetMempoolAddr(POOL_ID_APP);

        filehdl = FileSys_OpenFile(CAL_CLEAR_FOLDER,FST_OPEN_READ);
        ret = FileSys_ReadFile(filehdl,(UINT8*)uiPoolAddr,&uiBufSize, 0, 0);
        FileSys_CloseFile(filehdl);
        if(ret == FST_STA_OK)
        {
           debug_err(("^G Clear Cal Data & status\r\n"));
           Cal_ItemClearStatus();
        }
        else
           debug_err(("^G Reserve Cal Data & status\r\n"));

        //#NT#2010/11/27Steven feng-end

//#NT#2011/01/28#Brad Chen -begin
//#NT# add burn ISO
        if(_MSDC_MODE_==_MSDC_ALL_NAND2_|| _MSDC_MODE_ == _MSDC_SINGLE_NAND2_)
        {
            ER result = E_OK;
            char        *fileName = "A:\\GEISO.ISO";
            FST_FILE   *pFile;
            UINT32 value = 0X30444301;
            result = copy_iso();
            pFile = FileSys_OpenFile((char *)fileName,FST_OPEN_READ);
            if (pFile != NULL)
            {
                FormatNand();
            }
            else
            {
                debug_err(("open file error\r\n"));
            }

            result = check_iso(0x8000,value,4);
            if (result == E_OK)
            {
                debug_msg(" set AutoRunISOWriteSts OK\r\n");
                UI_SetData(FL_AutoRunISOWriteSts,TRUE);
            }
            else
                debug_msg(" set AutoRunISOWriteSts Fail\r\n");

        }
//#NT#2011/01/28#Brad Chen -end


        Ux_CloseWindow(&DialogWarnCtrl,0);

        UIRes_InitReadPHFE();
        //#NT#2011/02/16#Steven feng -begin
        #if SLIDESHOW_MUSIC_OPTION
        for(i = 0 ; i<4 ; i++)
            UIRes_InitReadSSWAV(i);
        #endif
       //#NT#2011/02/16#Steven feng -end
        Ux_OpenWindow(&DialogWarnCtrl, 2, WRN_FW_CHECK, WARN_ALWAYS);

        //post event again,because open wind ,miss the event
        Ux_PostEvent(NVTEVT_STORAGE_INIT, 0, 0);
        //#NT#2011/01/07#Janice Huang -end

        //#NT#2011/03/01#Lincy Lin -begin
        //#NT#Fix remove battery the info not save bug
        Save_MenuInfo();
        //#NT#2011/03/01#Lincy Lin -end
    }
    else
    {
        //#NT#2010/09/28#Lincy Lin -end
        //#NT#2010/11/01#Lincy Lin -begin
        UIRes_InitReadPHFE();
        //#NT#2010/11/01#Lincy Lin -end
    }

    #if _PWRON_WAIT_FILESYSTEM_
    if (UIStorageCheck(STORAGE_CHECK_DCIM_READONLY, NULL) == TRUE)
    {
        UI_SetData(FL_IsDCIMReadOnly,TRUE);
    }
    #endif

    //#NT#2011/03/24#Lincy Lin -begin
    //#NT#
    BackupPhotoParamsInfo();
    //#NT#2011/03/24#Lincy Lin -end
#endif

    return NVTEVT_CONSUME;
}
Пример #25
0
INT32 UIFlowWndPlay_OnKeyEnter(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    //#NT#2012/08/31#Calvin Chang#Porting Media Flow -begin
    //UINT32 uiCurindex;
    UINT32 uiPoolAddr;
    char   pFilePath[FULL_FILE_PATH_LEN];
    UINT32 fileType = DCF_FILE_TYPE_JPG;
    UINT32 uiPBFileFmt;

    switch(g_PlbData.State)
    {
        case PLB_ST_PLAY_MOV:
        case PLB_ST_FWD_MOV:
        case PLB_ST_BWD_MOV:
            Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_PAUSE_PLAY_MOVIE, 0);
            FlowPB_IconDrawMovPlay(TRUE);
            g_PlbData.State = PLB_ST_PAUSE_MOV;
            //#NT#2012/10/23#Philex Lin - begin
            // enable auto power off/USB detect timer
            // enable sound key tone flag
            KeyScan_EnableMisc(TRUE);
            //#NT#2012/10/23#Philex Lin - end
            break;

        case PLB_ST_PAUSE_MOV:
            //#NT#2012/10/23#Philex Lin - begin
            // disable auto power off/USB detect timer
            // disable key tone flag
            KeyScan_EnableMisc(FALSE);
            //#NT#2012/10/23#Philex Lin - end
            // Start to Play
            Ux_SendEvent(&UIMoviePlayObjCtrl,
                         NVTEVT_PLAY_PLAY_MOVIE,
                         2,
                         g_uiUIFlowWndPlayCurrenSpeed,
                         g_uiUIFlowWndPlayCurrenDirection);
            FlowPB_IconDrawMovPlay(TRUE);
            g_PlbData.State = PLB_ST_PLAY_MOV;
            break;

        default:
        case PLB_ST_FULL:
            uiPBFileFmt = AppPlay_GetData(PLAY_FILEFMT);
            if (uiPBFileFmt & PBFMT_AVI ||
                uiPBFileFmt & PBFMT_MOVMJPG ||
                uiPBFileFmt & PBFMT_MP4)
            {
                // Open Video File
                if (gphUIFlowMovPlay_Filehdl)
                {
                    FileSys_CloseFile(gphUIFlowMovPlay_Filehdl);
                    gphUIFlowMovPlay_Filehdl = NULL;
                }
                if (uiPBFileFmt & PBFMT_AVI)
                  fileType = DCF_FILE_TYPE_AVI;
                else if (uiPBFileFmt & PBFMT_MOVMJPG)
                  fileType = DCF_FILE_TYPE_MOV;
                else if (uiPBFileFmt & PBFMT_MP4)
                  fileType = DCF_FILE_TYPE_MOV;
                else
                {
                    debug_msg("Wrong video file format!! \r\n");
                    break;
                }

                // Get Current index
                PB_GetParam(PBPRMID_CURR_FILEPATH, (UINT32 *)pFilePath);
#if 0
                uiCurindex = DCF_GetCurIndex();
                DCF_GetObjPath(uiCurindex,fileType,pFilePath);
#endif
                // Open Test Media File
                gphUIFlowMovPlay_Filehdl = FileSys_OpenFile(pFilePath, FST_OPEN_READ);

                if (!gphUIFlowMovPlay_Filehdl)
                {
                    debug_msg("UIFlowWndPlay_OnKeyEnter: Can't open Video file!\r\n");
                    break;
                }
                //#NT#2012/10/23#Philex Lin - begin
                // disable auto power off/USB detect timer
                // disable key tone flag
                KeyScan_EnableMisc(FALSE);
                //#NT#2012/10/23#Philex Lin - end

                // Buffer Allocation
                get_blf((VP*)&(uiPoolAddr), POOL_ID_APP);
                rel_blf(POOL_ID_APP, (VP)uiPoolAddr);

                g_UIPlayMediaObj.hActMediafilehdl = gphUIFlowMovPlay_Filehdl;
                g_UIPlayMediaObj.CallBackFunc     = Play_MovieCB;
//                g_UIPlayMediaObj.uiMemAddr        = uiPoolAddr;
                g_UIPlayMediaObj.uiMemAddr        = (UINT32)OS_GetMempoolAddr(POOL_ID_APP);
                g_UIPlayMediaObj.uiMemSize        = POOL_SIZE_APP;
                //g_UIPlayMediaObj.iAudioType       = AUDIO_OUTPUT_HP;
                g_UIPlayMediaObj.bDisableAudio    = FALSE;

                UIFlowMoviePlay_SetSpeed(g_PlbData.VideoPBSpeed);
                g_uiUIFlowWndPlayCurrenDirection = MEDIAPLAY_DIR_FORWARD;

                //flush event first
                Ux_FlushEventByRange(NVTEVT_KEY_EVT_START,NVTEVT_KEY_EVT_END);

                //stop scan
                //SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, FALSE);
                SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, FALSE);

                Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_INIT_PLAY_MOVIE, 1, &g_UIPlayMediaObj);

                // Start to Play
                Ux_SendEvent(&UIMoviePlayObjCtrl,
                             NVTEVT_PLAY_PLAY_MOVIE,
                             2,
                             g_uiUIFlowWndPlayCurrenSpeed,
                             g_uiUIFlowWndPlayCurrenDirection);

                if (KeyScan_GetPlugDev()!=PLUG_HDMI)
                {
                    //FlowPB_IconDrawMovPlayVolumn(g_uiUIFlowWndPlayCurrentVolume);
                }
                FlowPB_IconDrawMovPlay(TRUE);
                g_PlbData.State = PLB_ST_PLAY_MOV;

            }
            break;
    }
    //#NT#2012/08/31#Calvin Chang -end

    return NVTEVT_CONSUME;
}