📄 vdoplyapp.c
字号:
#ifdef __MMI_VIDEO_PDL__
//#define VDOPLY_PDL_DEBUG
#endif
/*****************************************************************************
* Typedef
*****************************************************************************/
typedef enum
{
VDOPLY_PLAY_FROM_FILE = 0,
VDOPLY_PLAY_FROM_ID,
VDOPLY_PLAY_FROM_STREAMING_RTSP,
VDOPLY_PLAY_FROM_STREAMING_RAM,
VDOPLY_PLAY_FROM_STREAMING_SDP,
VDOPLY_PLAY_FROM_PROGRESSIVE_DL
} vdoply_play_src_enum;
typedef enum
{
VDOPLY_ADJ_BRIGHTNESS,
VDOPLY_ADJ_CONTRAST,
VDOPLY_ADJ_REPEAT,
/* count */
VDOPLY_ADJ_TOTAL
} vdoply_adjust_item_enum;
typedef enum
{
VDOPLY_REPEAT_OFF,
VDOPLY_REPEAT_ON,
/* count */
VDOPLY_REPEAT_TOTAL
} vdoply_repeat_type_enum;
typedef enum
{
VDOPLY_VOL_1 = LEVEL1,
VDOPLY_VOL_2,
VDOPLY_VOL_3,
VDOPLY_VOL_4,
VDOPLY_VOL_5,
VDOPLY_VOL_6,
VDOPLY_VOL_7,
VDOPLY_VOL_8,
VDOPLY_VOL_9,
VDOPLY_VOL_10,
VDOPLY_VOL_11,
VDOPLY_VOL_12,
VDOPLY_VOL_13,
VDOPLY_VOL_14,
VDOPLY_VOL_15,
VDOPLY_VOL_16,
VDOPLY_VOL_MUTE
} vdoply_aud_vol_enum;
/*****************************************************************************
* Global Variable
*****************************************************************************/
extern BOOL r2lMMIFlag;
/*****************************************************************************
* Global Function
*****************************************************************************/
extern kal_uint8 GpioCtrlReq(kal_uint8 action);
extern void AudioStopReq(U16 soundId);
extern U16 GetCurKeypadTone(void);
extern void refresh_status_icon_display(void); /* in Wgui_status_icons.c */
#if defined(__MMI_AUDIO_PLAYER__) && defined(__MMI_BT_MTK_SUPPORT__) && defined(__MMI_A2DP_SUPPORT__)
extern mmi_bt_dev_struct *mmi_audply_get_bt_headset(void); /* tmp use audio player's */
#endif
/*****************************************************************************
* Local Variable
*****************************************************************************/
vdoply_context_struct g_vdoply_cntx;
vdoply_context_struct *const mmi_vdoply_cntx_p = &g_vdoply_cntx;
#ifdef VDOPLY_PDL_DEBUG
S8 pdl_src_filename[FMGR_PATH_BUFFER_SIZE];
FS_HANDLE pdl_src_file;
FS_HANDLE pdl_dest_file;
#endif
/*****************************************************************************
* Local Function
*****************************************************************************/
static MMI_BOOL mmi_vdoply_is_output_to_bt(void);
static BOOL mmi_vdoply_get_storage_disk_path(PS8 drv_buf);
/* video player screen */
static void mmi_vdoply_blt_screen(void);
static void mmi_vdoply_null_key_event(void);
static void mmi_vdoply_disply_popup(PU8 str_ptr, U16 img_id, U16 image_on_bottom, U16 tone_duration, U16 tone_id);
static BOOL mmi_vdoply_check_and_display_error_popup(MDI_RESULT result);
static U16 mmi_vdoply_get_speed_image(void);
static void mmi_vdoply_highlight_play(void);
static U8 mmi_vdoply_del_screen_hdlr(void *ptr);
static void mmi_vdoply_entry_player_screen_internal(void);
static void mmi_vdoply_draw_opening_anim(void);
static void mmi_vdoply_clear_opening_anim(void);
static void mmi_vdoply_draw_snapshoting(void);
static void mmi_vdoply_draw_aud_only_anim(void);
static void mmi_vdoply_clear_aud_only_anim(void);
static void mmi_vdoply_draw_play_region_bg(void);
#ifdef __MMI_VIDEO_STREAM__
static void mmi_vdoply_draw_loading(S32 percentage, MMI_BOOL draw_bg);
static void mmi_vdoply_draw_connecting_anim(void);
static void mmi_vdoply_clear_connecting_anim(void);
#endif /* __MMI_VIDEO_STREAM__ */
static void mmi_vdoply_draw_bg(void);
static void mmi_vdoply_draw_title(void);
static void mmi_vdoply_draw_panel_state(void);
static void mmi_vdoply_draw_panel_progress(void);
static void mmi_vdoply_draw_panel_timer(void);
static void mmi_vdoply_draw_panel_speed(void);
static void mmi_vdoply_draw_panel_volume(void);
static void mmi_vdoply_draw_style_text(PS8 str, S32 offset_x, S32 offset_y, video_style_text_struct *style_txt);
static void mmi_vdoply_draw_softkey(void);
static void mmi_vdoply_draw_panel(void);
static void mmi_vdoply_init_ui(void);
static void mmi_vdoply_calc_progress_ratio(void);
#ifdef __VDOPLY_FEATURE_FULLSCREEN__
static void mmi_vdoply_draw_fullscr_panel_progress(void);
static void mmi_vdoply_draw_fullscr_panel_timer(void);
static void mmi_vdoply_draw_fullscr_panel_speed(void);
static void mmi_vdoply_draw_fullscr_panel_volume(void);
static void mmi_vdoply_draw_fullscr_softkey(void);
static void mmi_vdoply_draw_fullscr_osd(void);
static void mmi_vdoply_clear_fullscr_osd(void);
static void mmi_vdoply_draw_fullscr_aud_only_anim(void);
static void mmi_vdoply_clear_fullscr_aud_only_anim(void);
static void mmi_vdoply_draw_fullscr_play_region_bg(void);
static void mmi_vdoply_init_fullscr_ui(void);
static void mmi_vdoply_fullscr_reset_osd_fade(BOOL sleep);
static void mmi_vdoply_fullscr_osd_fade_cyclic(void);
static void mmi_vdoply_fullscr_osd_show_up(void);
static U16 mmi_vdoply_fullscr_get_speed_image(void);
#endif /* __VDOPLY_FEATURE_FULLSCREEN__ */
#ifdef __VDOPLY_FEATURE_SNAPSHOT__
static void mmi_vdoply_get_next_snapshot_filename(PS8 file_buf, PS8 file_path);
#endif
static MDI_RESULT mmi_vdoply_play_video(void);
static void mmi_vdoply_stop_video(void);
#ifdef __VDOPLY_FEATURE_SNAPSHOT__
static void mmi_vdoply_player_snapshot(void);
static void mmi_vdoply_player_snapshot_key_press(void);
static void mmi_vdoply_player_snapshot_key_release(void);
#endif /* __VDOPLY_FEATURE_SNAPSHOT__ */
static void mmi_vdoply_player_timer_cyclic(void);
static void mmi_vdoply_set_softkey(PS8 lsk_str_ptr, PS8 rsk_str_ptr, U16 lsk_img_id, U16 rsk_img_id, U16 ck_img_id);
static void mmi_vdoply_lsk_release(void);
static void mmi_vdoply_rsk_release(void);
static void mmi_vdoply_lsk_press(void);
static void mmi_vdoply_rsk_press(void);
static void mmi_vdoply_ck_press(void);
static void mmi_vdoply_ck_release(void);
#ifdef __VDOPLY_FEATURE_VOLUME__
static void mmi_vdoply_vol_up_key_press(void);
static void mmi_vdoply_vol_up_key_release(void);
static void mmi_vdoply_vol_down_key_press(void);
static void mmi_vdoply_vol_down_key_release(void);
#endif /* __VDOPLY_FEATURE_VOLUME__ */
#ifdef __VDOPLY_FEATURE_SPEED__
static void mmi_vdoply_speed_inc_key_press(void);
static void mmi_vdoply_speed_inc_key_release(void);
static void mmi_vdoply_speed_dec_key_press(void);
static void mmi_vdoply_speed_dec_key_release(void);
#endif /* __VDOPLY_FEATURE_SPEED__ */
static void mmi_vdoply_seek_result_hdlr(MDI_RESULT result);
static void mmi_vdoply_seek_key_release(void);
static BOOL mmi_vdoply_seek_foward(void);
static void mmi_vdoply_seek_foward_key_press_cyclic(void);
static void mmi_vdoply_seek_foward_key_press(void);
static void mmi_vdoply_seek_foward_key_release(void);
static BOOL mmi_vdoply_seek_backward(void);
static void mmi_vdoply_seek_backward_key_press_cyclic(void);
static void mmi_vdoply_seek_backward_key_press(void);
static void mmi_vdoply_seek_backward_key_release(void);
#ifdef __VDOPLY_FEATURE_FULLSCREEN__
static void mmi_vdoply_toggle_fullscreen_display(void);
static void mmi_vdoply_toggle_fullscreen_key_press(void);
static void mmi_vdoply_toggle_fullscreen_key_release(void);
#endif /* __VDOPLY_FEATURE_FULLSCREEN__ */
#ifdef __MMI_TVOUT__
static void mmi_vdoply_toggle_tvout_display(void);
static void mmi_vdoply_toggle_tvout_key_press(void);
static void mmi_vdoply_toggle_tvout_key_release(void);
#endif /* __MMI_TVOUT__ */
static void mmi_vdoply_set_state_key_event(U16 state);
static void mmi_vdoply_enter_general_state(U16 state);
#ifdef __VDOPLY_FEATURE_FULLSCREEN__
static void mmi_vdoply_enter_fullscr_state(U16 state);
#endif
#ifdef __MMI_VIDEO_STREAM__
static void mmi_vdoply_enter_stream_state(U16 state);
#endif
#ifdef __MMI_VIDEO_PDL__
static void mmi_vdoply_enter_progressive_state(U16 state);
#endif
static void mmi_vdoply_enter_state(U16 state);
static void mmi_vdoply_exit_player_screen_internal(void);
static void mmi_vdoply_close_file(void);
static S16 mmi_vdoply_get_speed_factor(void);
static void mmi_vdoply_set_state_softkey(U16 state);
static void mmi_vdoply_set_state_layer_config(U16 state);
#ifdef __MMI_SUBLCD__
static void mmi_vdoply_draw_sublcd_icon(void);
static void mmi_vdoply_entry_sublcd_screen(void);
static void mmi_vdoply_exit_sublcd_screen(void);
#endif /* __MMI_SUBLCD__ */
#if defined(__MMI_CLAMSHELL__) && !defined(__MMI_SLIDE__)
static U8 mmi_vdoply_clam_close_event_hdlr(void *ptr);
#endif
void mmi_vdoply_player_play_finish_hdlr(MDI_RESULT result);
void mmi_vdoply_player_open_done_hdlr(MDI_RESULT result, mdi_video_info_struct *vdo_clip);
/* player list */
static void mmi_vdoply_highlight_app(void);
void mmi_vdoply_exit_from_fmgr(void *filename, int is_short);
void mmi_vdoply_exit_from_fmgr_emptry_folder(void);
/* re-enter */
static void mmi_vdoply_re_entry_player_screen_from_file(void);
static void mmi_vdoply_re_entry_player_screen_from_id(void);
/* storage */
static void mmi_vdoply_hint_set_storage(U16 index);
static void mmi_vdoply_highlight_set_storage(void);
static void mmi_vdoply_get_drive_callback(S8 drv_letter);
static void mmi_vdoply_entry_set_storage_screen(void);
/* bluetooth */
#if defined(__MMI_AUDIO_PLAYER__) && defined(__MMI_BT_MTK_SUPPORT__) && defined(__MMI_A2DP_SUPPORT__)
static void mmi_vdoply_highlight_bluetooth_setting(void);
#endif
#if defined(__VDOPLY_FEATURE_TOUCH_SCREEN__) && defined(__MMI_TOUCH_SCREEN__)
static void mmi_vdoply_touch_scr_pen_down_hdlr(mmi_pen_point_struct pos);
static void mmi_vdoply_touch_scr_pen_up_hdlr(mmi_pen_point_struct pos);
static void mmi_vdoply_touch_scr_pen_move_hdlr(mmi_pen_point_struct pos);
static BOOL mmi_vdoply_touch_scr_hit_test(S32 pos_x, S32 pos_y, vdoply_ui_touch_struct *touch_obj);
#endif /* defined(__VDOPLY_FEATURE_TOUCH_SCREEN__) && defined(__MMI_TOUCH_SCREEN__) */
#if defined(__VDOPLY_FEATURE_LSK_OPTION__)
static void mmi_vdoply_entry_adjust_option_scr(void);
static void mmi_vdoply_exit_adjust_option_scr(void);
static void mmi_vdoply_adjust_option_lsk_hdlr(void);
static void mmi_vdoply_adjust_option_highlight_hdlr(S32 index);
#endif /* defined(__VDOPLY_FEATURE_LSK_OPTION__) */
#if defined(__MMI_VIDEO_STREAM__) || defined(__MMI_VIDEO_PDL__)
static void mmi_vdoply_highlight_url_input_method(void);
static void mmi_vdoply_highlight_network(void);
static void mmi_vdoply_highlight_data_account(void);
static void mmi_vdoply_highlight_proxy(void);
static void mmi_vdoply_highlight_input_url(void);
static void mmi_vdoply_highlight_video_setting(void);
static void mmi_vdoply_highlight_save_connection(void);
static void mmi_vdoply_highlight_stream_editor_done(void);
static void mmi_vdoply_highlight_stream_editor_cancel(void);
static void mmi_vdoply_highlight_stream_input_method(void);
static void mmi_vdoply_check_filename_and_save(void);
static void mmi_vdoply_cancel_stream_editor_and_exit(void);
static void mmi_vdoply_entry_stream_editor_scr(void);
static void mmi_vdoply_entry_stream_editor_option_scr(void);
static void mmi_vdoply_save_stream_file(void);
static void mmi_vdoply_highlight_url_editor_done(void);
static void mmi_vdoply_highlight_url_editor_cancel(void);
static void mmi_vdoply_highlight_url_input_method(void);
static void mmi_vdoply_hint_data_account(U16 index);
static void mmi_vdoply_check_url_and_enter(void);
static void mmi_vdoply_cancel_url_and_exit(void);
static void mmi_vdoply_return_to_editor_screen(void);
static void mmi_vdoply_entry_url_editor_scr(void);
static void mmi_vdoply_entry_url_editor_option_scr(void);
static void mmi_vdoply_entry_option_scr(void);
static void mmi_vdoply_entry_network_setting_scr(void);
static void mmi_vdoply_entry_network_setting_scr_internal(void);
static void mmi_vdoply_entry_network_data_account_scr(void);
static void mmi_vdoply_data_account_callback(U16 index);
static void mmi_vdoply_entry_network_proxy_scr(void);
static void mmi_vdoply_exit_network_proxy_scr(void);
static void mmi_vdoply_network_proxy_highlight_hdlr(S32 index);
static void mmi_vdoply_network_proxy_lsk_hdlr(void);
static void mmi_vdoply_ip_addr_callback(U8 *string_buffer, U8 *ip1, U8 *ip2, U8 *ip3, U8 *ip4);
#endif /* defined(__MMI_VIDEO_STREAM__) || defined(__MMI_VIDEO_PDL__) */
#ifdef __MMI_VIDEO_STREAM__
static void mmi_vdoply_re_entry_player_screen_from_rtsp_streaming(void);
static void mmi_vdoply_re_entry_player_screen_from_sdp_streaming(void);
static void mmi_vdoply_stream_connect_result_hdlr(MDI_RESULT result, mdi_video_info_struct *vdo_clip);
static void mmi_vdoply_stream_buffering_cyclic(void);
static void mmi_vdoply_stream_buffering_done_hdlr(MDI_RESULT result, mdi_video_info_struct *vdo_clip);
static void mmi_vdoply_stream_start_buffering(void);
static void mmi_vdoply_stream_stop_buffering(void);
#ifdef __VDOPLY_FEATURE_FULLSCREEN__
static void mmi_vdoply_stream_fullscr_buffering_cyclic(void);
static void mmi_vdoply_draw_fullscr_loading(S32 percentage, MMI_BOOL draw_bg);
static void mmi_vdoply_draw_fullscr_connecting_anim(void);
static void mmi_vdoply_clear_fullscr_connecting_anim(void);
#endif /* __VDOPLY_FEATURE_FULLSCREEN__ */
static void mmi_vdoply_rtsp_url_hdlr(void *msg_ptr);
#endif /* __MMMI_VIDEO_STREAM__ */
#ifdef __MMI_VIDEO_PDL__
static void mmi_vdoply_re_entry_player_screen_from_pdl_file(void);
static void mmi_vdoply_entry_pdl_teminate_confirm_scr(void);
static void mmi_vdoply_pdl_teminate_confirm_yes(void);
static void mmi_vdoply_pdl_teminate_confirm_no(void);
static void mmi_vdoply_pdl_draw_progressbar_cyclic(void);
static void mmi_vdoply_pdl_buffering_cyclic(void);
#ifdef __VDOPLY_FEATURE_FULLSCREEN__
static void mmi_vdoply_pdl_fullscr_buffering_cyclic(void);
#endif /* __VDOPLY_FEATURE_FULLSCREEN__ */
#ifdef __MMI_DOWNLOAD_AGENT__
static void mmi_vdoply_pdl_da_report_hdlr(S32 session_id, S32 status, S32 cause, U32 seq_num, U32 acc_size);
static BOOL mmi_vdoply_pdl_da_filepath_hdlr(S32 session_id, S32 mime_type, S32 mime_subtype, PU16 filepath);
#endif /* __MMI_DOWNLOAD_AGENT__ */
#endif /* __MMI_VIDEO_PDL__ */
#ifdef __MMI_AVRCP_SUPPORT__
//static U8 mmi_vdoply_bt_avrcp_cmd_hdlr(U16 command, BOOL key_up);
#endif
#if defined(__MMI_AUDIO_PLAYER__) && defined(__MMI_BT_MTK_SUPPORT__) && defined(__MMI_A2DP_SUPPORT__)
/*****************************************************************************
*
* Bluetooth related usage
*
*****************************************************************************/
/*****************************************************************************
* FUNCTION
* mmi_vdoply_draw_bt_connecting
* DESCRIPTION
* draw bt connecting animation
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
static void mmi_vdoply_draw_bt_connecting_anim(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S32 layer_offset_x;
S32 layer_offset_y;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_vdoply_cntx.ui_type == VDOPLY_UI_TYPE_NORMAL)
{
mmi_vdoply_set_state_layer_config(VDOPLY_STATE_BT_CONNECTING);
mmi_vdoply_draw_panel();
if (g_vdoply_cntx.bt_connecting_anim == GDI_NULL_HANDLE)
{
gdi_layer_push_and_set_active(g_vdoply_cntx.process_layer_handle);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -