📄 jma_video_player.c
字号:
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* jma_video_player.c
*
* Project:
* --------
* Maui_Software
*
* Description:
* ------------
* This file defines native JMA video player APIs
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
/**
* @(#)jma_video_player.c 1.00 05/12/07
*
* Copyright (c) 2005 MediaTek Inc. All rights reserved.
*/
/*************************************************************************
* Include Header Files
*************************************************************************/
#include "jma_interface.h"
#include "jma_internal.h"
#include "FileManagerGProt.h"
#include "mmi_features_video.h"
/*************************************************************************
* bluetooth headers
*************************************************************************/
#if defined(__MMI_FTS_SUPPORT__)
#if defined(__MMI_BT_BCHS_SUPPORT__)
#include "BTMMIBCHS.h"
#include "BTMMIScr.h"
#include "FTPMMIGprots.h"
#elif defined(__MMI_BT_MTK_SUPPORT__)
#include "BTMMICm.h"
#include "BTMMIFtpGprots.h"
#endif
#endif
#ifdef __MMI_OPP_SUPPORT__
#if defined(__MMI_BT_BCHS_SUPPORT__)
#include "OPPMMIGprots.h"
#elif defined(__MMI_BT_MTK_SUPPORT__)
#include "BTMMIOppGprots.h"
#endif
#endif
/*****************************************************************************
* Global Definition and Declaration
*****************************************************************************/
#ifdef SUPPORT_MMAPI
video_player_struct video_player;
video_ctrl_struct video_ctrl_info;
extern kal_bool is_jvm_in_busy;
kal_uint32 jma_total_frames = 0;
GDI_HANDLE preview_layer_handle;
kal_uint16 *preview_buf_ptr = NULL;
kal_int32 preview_buf_size = 0;
kal_uint32 preview_layer_flag;
kal_uint32 blt_layer_flag;
#endif /* SUPPORT_MMAPI */
#if defined (SUPPORT_MMAPI) && !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_PLAYER__)
/*****************************************************************************
* private functions
*****************************************************************************/
static void jma_video_player_get_display_full_screen(kal_int32 *x, kal_int32 *y, kal_int32 *width, kal_int32 *height);
void jma_video_player_play_finish_hdlr(MDI_RESULT result);
#ifdef __MMI_VIDEO_STREAM__
static kal_bool jma_stream_player_refresh(kal_int32 java_player);
void jma_stream_player_buffering_done_hdlr(MDI_RESULT result, mdi_video_info_struct *vdo_clip);
void jma_stream_player_connect_result_hdlr(MDI_RESULT result, mdi_video_info_struct *vdo_clip);
void jma_stream_player_play_finish_hdlr(MDI_RESULT result);
#endif
#ifdef __MMI_VIDEO_PDL__
void jma_video_player_cache_open_done_hdlr(MDI_RESULT result, mdi_video_info_struct *vdo_clip);
#endif
extern void jvm_stop_vm_external(void);
/*****************************************************************************
* routine implementations
*****************************************************************************/
/*****************************************************************************
* FUNCTION
* jma_video_player_suspend_hdlr
* DESCRIPTION
* This function handles before suspend
* PARAMETERS
* hdlr [IN]
* RETURNS
* int - result
*****************************************************************************/
kal_int32 jma_video_player_suspend_hdlr(kal_int32 java_player)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MDI_RESULT ms;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_PLAYER_SUSPEND_HDLR, java_player, video_player.state);
JMA_CS_ENTER(RESOUCE_FAIL);
if (video_player.id != java_player)
{
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_RESOURCE_ERROR, video_player.id);
JMA_CS_LEAVE(RESOUCE_FAIL);
}
/* Avoid interaction */
j2me_lcd_mutex_lock();
if (video_player.state == JAVA_MEDIA_STATE_PLAYING)
{
ms = mdi_video_ply_stop();
mdi_video_ply_get_cur_play_time(&video_player.current_time);
}
#ifdef __MMI_VIDEO_PDL__
else if (video_player.state == JAVA_MEDIA_STATE_BUFFERING)
{
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_STACK_STOP_TIMER);
stack_stop_timer(&java_media_timer);
}
#endif
if (!video_player.progressive_dl)
{
if (video_player.buffer == NULL)
{
ms = mdi_video_ply_close_clip_file();
}
else
{
ms = mdi_video_ply_close_clip_buffer();
}
}
#ifdef __MMI_VIDEO_PDL__
else
{
mdi_video_progressive_close_file();
}
#endif
if (video_player.track != MDI_VIDEO_TRACK_A_ONLY)
{
jui_widget_set_hardware_layer(GDI_NULL_HANDLE, NULL, NULL);
jui_widget_refresh_screen(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1);
if (preview_layer_handle != GDI_LAYER_EMPTY_HANDLE)
{
gdi_layer_free(preview_layer_handle);
preview_layer_handle = GDI_LAYER_EMPTY_HANDLE;
ASSERT(preview_buf_ptr != NULL);
mmi_frm_scrmem_free(preview_buf_ptr);
preview_buf_ptr = NULL;
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_RELEASE_SCR_MEMORY);
}
}
/* Avoid interaction */
j2me_lcd_mutex_unlock();
JMA_CS_LEAVE(RESOUCE_NO_ERROR);
}
/*****************************************************************************
* FUNCTION
* jma_video_player_resume_hdlr
* DESCRIPTION
* This function is mpeg resume handler invoked when resumeAudio executes
* PARAMETERS
* hdlr [IN]
* RETURNS
* resource_error_code
*****************************************************************************/
kal_int32 jma_video_player_resume_hdlr(kal_int32 java_player)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MDI_RESULT ms = MDI_RES_VDOPLY_ERR_FAILED;
mdi_video_info_struct vdo_clip;
kal_bool ret;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_PLAYER_RESUME_HDLR, java_player, video_player.state);
JMA_CS_ENTER(RESOUCE_FAIL);
if (video_player.id != java_player)
{
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_RESOURCE_ERROR, video_player.id);
JMA_CS_LEAVE(RESOUCE_FAIL);
}
/* Backlight control */
jvm_force_backlight_on(KAL_TRUE);
/* Open */
if (!video_player.progressive_dl)
{
/* DRM does not consume count */
#ifdef __DRM_SUPPORT__
mdi_video_ply_drm_disable_consume_count();
#endif
mdi_video_ply_enable_aud_only_video_clip();
if (video_player.buffer == NULL)
{
ms = mdi_video_ply_open_clip_file((S8*) video_player.filename, &vdo_clip);
}
else
{
ms = mdi_video_ply_open_clip_buffer(video_player.buffer, video_player.buffer_length, &vdo_clip);
}
}
#ifdef __MMI_VIDEO_PDL__
else
{
ms = mdi_video_progressive_open_file(
(S8*) video_player.filename,
jma_video_player_cache_open_done_hdlr);
}
#endif
/* Open fail */
if (ms != MDI_RES_VDOPLY_SUCCEED)
{
if (video_player.is_double_buffer)
{
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_STOP_DOUBLE_BUFFER);
jui_widget_stop_double_buffer();
video_player.is_double_buffer = KAL_FALSE;
}
jma_video_player_reset_parameter();
jma_deregister_device(JAVA_MEDIA_MPEG_PLAYER_DEVICE, java_player);
/* Backlight control */
jvm_force_backlight_on(KAL_FALSE);
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_MARKER_FAIL);
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_D, ms);
JMA_CS_LEAVE(RESOUCE_FAIL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -