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

📄 vdoplyapp.c

📁 plutommi mtkapp Video Src
💻 C
📖 第 1 页 / 共 5 页
字号:
    ReadValue(NVRAM_VDOPLY_STORAGE, &g_vdoply_cntx.storage, DS_SHORT, &error);

    /* init if needed */
    if (g_vdoply_cntx.storage == 0xffff)
    {
        is_inited_before = FALSE;
        g_vdoply_cntx.storage = (U16)MMI_PUBLIC_DRV;
    }

    /* brightness setting */
    ReadValue(NVRAM_VDOPLY_OPTION_BRIGHTNESS, &g_vdoply_cntx.brightness, DS_SHORT, &error);

    if (g_vdoply_cntx.brightness == 0xffff)
    {
        g_vdoply_cntx.brightness = MDI_VIDEO_BRIGHTNESS_0;
    }

    /* contrast setting */
    ReadValue(NVRAM_VDOPLY_OPTION_CONTRAST, &g_vdoply_cntx.contrast, DS_SHORT, &error);

    if (g_vdoply_cntx.contrast == 0xffff)
    {
        g_vdoply_cntx.contrast = MDI_VIDEO_CONTRAST_0;
    }

    /* auto repeat setting */
    ReadValue(NVRAM_VDOPLY_OPTION_REPEAT, &g_vdoply_cntx.repeat, DS_SHORT, &error);

    if (g_vdoply_cntx.repeat == 0xffff)
    {
        g_vdoply_cntx.repeat = VDOPLY_REPEAT_OFF;
    }


#if defined(__MMI_VIDEO_STREAM__) || defined(__MMI_VIDEO_PDL__)
    /* stream */
    ReadValue(NVRAM_VDOPLY_PROXY_PORT, &g_vdoply_cntx.proxy_port, DS_DOUBLE, &error);    
    ReadValue(NVRAM_VDOPLY_DATA_ACCOUNT_ID, &g_vdoply_cntx.data_account_id, DS_BYTE, &error);        
    ReadValue(NVRAM_VDOPLY_PROXY_IP1, &g_vdoply_cntx.proxy_addr[0], DS_BYTE, &error); 
    ReadValue(NVRAM_VDOPLY_PROXY_IP2, &g_vdoply_cntx.proxy_addr[1], DS_BYTE, &error);     
    ReadValue(NVRAM_VDOPLY_PROXY_IP3, &g_vdoply_cntx.proxy_addr[2], DS_BYTE, &error);         
    ReadValue(NVRAM_VDOPLY_PROXY_IP4, &g_vdoply_cntx.proxy_addr[3], DS_BYTE, &error);   
    ReadValue(NVRAM_VDOPLY_PROXY_ON_OFF, &g_vdoply_cntx.proxy_on_off, DS_BYTE, &error);   

    if (!is_inited_before)
    {
        /* get a default DA id */        
        g_vdoply_cntx.data_account_id 
            = mmi_dtcnt_get_first_account_id(DATA_ACCOUNT_BEARER_GPRS | DATA_ACCOUNT_BEARER_WIFI);

        g_vdoply_cntx.proxy_port = 0;        
        g_vdoply_cntx.proxy_on_off = 0;
        g_vdoply_cntx.proxy_addr[0] = 0;       
        g_vdoply_cntx.proxy_addr[1] = 0;
        g_vdoply_cntx.proxy_addr[2] = 0;
        g_vdoply_cntx.proxy_addr[3] = 0;    

    }
    
#endif /* defined(__MMI_VIDEO_STREAM__) || defined(__MMI_VIDEO_PDL__) */

    if (!is_inited_before)
    {
        /* first time init, store the init value */
        mmi_vdoply_store_setting();
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_vdoply_store_setting
 * DESCRIPTION
 *  store storage to NVRAM
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_vdoply_store_setting(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S16 error;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    WriteValue(NVRAM_VDOPLY_STORAGE, &g_vdoply_cntx.storage, DS_SHORT, &error);
    WriteValue(NVRAM_VDOPLY_OPTION_BRIGHTNESS, &g_vdoply_cntx.brightness, DS_SHORT, &error);
    WriteValue(NVRAM_VDOPLY_OPTION_CONTRAST, &g_vdoply_cntx.contrast, DS_SHORT, &error);
    WriteValue(NVRAM_VDOPLY_OPTION_REPEAT, &g_vdoply_cntx.repeat, DS_SHORT, &error);

#if defined(__MMI_VIDEO_STREAM__) || defined(__MMI_VIDEO_PDL__)
    /* stream */
    WriteValue(NVRAM_VDOPLY_PROXY_PORT, &g_vdoply_cntx.proxy_port, DS_DOUBLE, &error);    
    WriteValue(NVRAM_VDOPLY_DATA_ACCOUNT_ID, &g_vdoply_cntx.data_account_id, DS_BYTE, &error);        
    WriteValue(NVRAM_VDOPLY_PROXY_IP1, &g_vdoply_cntx.proxy_addr[0], DS_BYTE, &error); 
    WriteValue(NVRAM_VDOPLY_PROXY_IP2, &g_vdoply_cntx.proxy_addr[1], DS_BYTE, &error);     
    WriteValue(NVRAM_VDOPLY_PROXY_IP3, &g_vdoply_cntx.proxy_addr[2], DS_BYTE, &error);         
    WriteValue(NVRAM_VDOPLY_PROXY_IP4, &g_vdoply_cntx.proxy_addr[3], DS_BYTE, &error);             
    WriteValue(NVRAM_VDOPLY_PROXY_ON_OFF, &g_vdoply_cntx.proxy_on_off, DS_BYTE, &error);     
#endif /* defined(__MMI_VIDEO_STREAM__) || defined(__MMI_VIDEO_PDL__) */

}



/*****************************************************************************
 * FUNCTION
 *  mmi_vdoply_disply_popup
 * DESCRIPTION
 *  display popup. will roate if is horizontal screen
 * PARAMETERS
 *  str_ptr             [IN]        String pointer
 *  img_id              [IN]        Image id
 *  image_on_bottom     [IN]        Is image on bottom
 *  tone_duration       [IN]        Tone duration
 *  tone_id             [IN]        Tine id
 * RETURNS
 *  void
 *****************************************************************************/
static void mmi_vdoply_disply_popup(PU8 str_ptr, U16 img_id, U16 image_on_bottom, U16 tone_duration, U16 tone_id)
{
#if defined(__VDOPLY_FEATURE_HORIZONTAL_VIEW__) && defined(__MMI_SCREEN_ROTATE__)
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    DisplayPopupRotated(
        (PU8) str_ptr,
        (U16) img_id,
        (U8) image_on_bottom,
        (U32) tone_duration,
        (U8) tone_id,
        MMI_FRM_SCREEN_ROTATE_270);
#else /* defined(__VDOPLY_FEATURE_HORIZONTAL_VIEW__) && defined(__MMI_SCREEN_ROTATE__) */ 
    DisplayPopup((PU8) str_ptr, (U16) img_id, (U8) image_on_bottom, (U32) tone_duration, (U8) tone_id);
#endif /* defined(__VDOPLY_FEATURE_HORIZONTAL_VIEW__) && defined(__MMI_SCREEN_ROTATE__) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_vdoply_check_and_display_error_popup
 * DESCRIPTION
 *  display error popup.
 * PARAMETERS
 *  result      [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
static BOOL mmi_vdoply_check_and_display_error_popup(MDI_RESULT result)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (result < 0) /* error happened */
    {
        switch (result)
        {
            case MDI_RES_VDOPLY_ERR_SNAPSHOT_DISK_FULL:
                mmi_vdoply_disply_popup(
                    (PU8) GetString(FMGR_FS_DISK_FULL_TEXT),
                    IMG_GLOBAL_WARNING,
                    1,
                    ST_NOTIFYDURATION,
                    WARNING_TONE);
                break;

            case MDI_RES_VDOPLY_ERR_SNAPSHOT_ROOT_DIR_FULL:
                mmi_vdoply_disply_popup(
                    (PU8) GetString(FMGR_FS_ROOT_DIR_FULL_TEXT),
                    IMG_GLOBAL_WARNING,
                    1,
                    ST_NOTIFYDURATION,
                    WARNING_TONE);
                break;

            case MDI_RES_VDOPLY_ERR_SNAPSHOT_WRITE_PROTECTION:
                mmi_vdoply_disply_popup(
                    (PU8) GetString(STR_ID_VDOPLY_NOTIFY_WRITE_PROTECTION),
                    IMG_GLOBAL_WARNING,
                    1,
                    ST_NOTIFYDURATION,
                    SUCCESS_TONE);
                break;

            case MDI_RES_VDOPLY_ERR_SNAPSHOT_NO_DISK:
            case MDI_RES_VDOPLY_ERR_SNAPSHOT_FAILED:
                mmi_vdoply_disply_popup(
                    (PU8) GetString(STR_ID_VDOPLY_NOTIFY_SNAPSHOT_FAILED),
                    IMG_GLOBAL_WARNING,
                    1,
                    ST_NOTIFYDURATION,
                    SUCCESS_TONE);
                break;

                /* followings are serious error, has to exit app */
            case MDI_RES_VDOPLY_ERR_OPEN_FILE_FAILED:
            case MDI_RES_VDOPLY_ERR_PLAY_FAILED:
            case MDI_RES_VDOPLY_ERR_SEEK_FAILED:
            case MDI_RES_VDOPLY_ERR_FAILED:                
                mmi_vdoply_disply_popup(
                    (PU8) GetString(STR_ID_VDOPLY_NOTIFY_INVALID_VIDEO_FILE),
                    IMG_GLOBAL_WARNING,
                    1,
                    ST_NOTIFYDURATION,
                    WARNING_TONE);
                DeleteNHistory(1);
                break;

            default:
                MMI_ASSERT(0);  /* use assert here, make sure all error case is handled properly */
        }

        return TRUE;
    }
    else
    {
        return FALSE;
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_vdoply_get_speed_image
 * DESCRIPTION
 *  get speed image
 * PARAMETERS
 *  void
 * RETURNS
 *  U16
 *****************************************************************************/
static U16 mmi_vdoply_get_speed_image(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S32 speed;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    speed = mmi_vdoply_get_speed_factor();

#ifndef __VDOPLY_FEATURE_FWD_BWD_SPEED__
    switch (speed)
    {
        case 50:
            return IMG_ID_VDOPLY_OSD_SPEED_50;
            break;

        case 75:
            return IMG_ID_VDOPLY_OSD_SPEED_75;
            break;

        case 100:
            return IMG_ID_VDOPLY_OSD_SPEED_100;
            break;

        case 125:
            return IMG_ID_VDOPLY_OSD_SPEED_125;
            break;

        case 150:
            return IMG_ID_VDOPLY_OSD_SPEED_150;
            break;

        case 200:
            return IMG_ID_VDOPLY_OSD_SPEED_200;
            break;

        case 400:
            return IMG_ID_VDOPLY_OSD_SPEED_400;
            break;

        case 800:
            return IMG_ID_VDOPLY_OSD_SPEED_800;
            break;

        default:
            return IMG_ID_VDOPLY_OSD_SPEED_UNDEF;
            break;

    }
#else /* __VDOPLY_FEATURE_FWD_BWD_SPEED__ */ 
    if (speed > 0)
    {
        return IMG_ID_VDOPLY_OSD_SPEED_FWD;
    }
    else if (speed < 0)
    {
        return IMG_ID_VDOPLY_OSD_SPEED_BWD;
    }
    else
    {
        return IMG_ID_VDOPLY_OSD_SPEED_UNDEF;
    }
#endif /* __VDOPLY_FEATURE_FWD_BWD_SPEED__ */ 

}


/*****************************************************************************
 * FUNCTION
 *  mmi_vdoply_highlight_play
 * DESCRIPTION
 *  highlight handler
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static void mmi_vdoply_highlight_play(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    SetLeftSoftkeyFunction(mmi_vdoply_entry_player_screen, KEY_EVENT_UP);
    ClearKeyHandler(KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
}



#ifdef VDOPLY_PDL_DEBUG
U8 pdl_buffer[1024*100];
void mmi_vdoply_pdl_debug_write_file(void)
{
    U32 src_file_size;
    U32 dest_file_size;    
    U32 readed;
    U32 written;

    FS_GetFileSize(pdl_src_file, &src_file_size);
    FS_GetFileSize(pdl_dest_file, &dest_file_size);    

    FS_Read(pdl_src_file, (void*)pdl_buffer, 1024*2, &readed); /* xK once */
    FS_Write(pdl_dest_file, (void*)pdl_buffer, readed, &written);

    if (readed == 0)
    {
        g_vdoply_cntx.pdl_dl_state = VDOPLY_PDL_DL_STATE_FINISHED;
        return;
    }

    gui_start_timer(100, mmi_vdoply_pdl_debug_write_file);

}
#endif /* VDOPLY_PDL_DEBUG */


/*****************************************************************************
 * FUNCTION
 *  mmi_vdoply_del_screen_hdlr
 * DESCRIPTION
 *  callback function when someone delete this screen's id
 * PARAMETERS
 *  ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
static U8 mmi_vdoply_del_screen_hdlr

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -