📄 jma_cam_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_cam_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!
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
/**
* @(#)jma_cam_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"
/*************************************************************************
* 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
*****************************************************************************/
#if defined (SUPPORT_MMAPI) && !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_CAMERA__)
/*****************************************************************************
* FUNCTION
* jma_cam_player_suspend_hdlr
* DESCRIPTION
* This function handles before suspend
* PARAMETERS
* hdlr [IN]
* RETURNS
* int - result
*****************************************************************************/
kal_int32 jma_cam_player_suspend_hdlr(kal_int32 java_player)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_CAM_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 data abort when release screen memory */
if (video_player.state == JAVA_MEDIA_STATE_PLAYING)
{
mdi_camera_preview_stop();
mdi_camera_power_off();
}
else if (video_player.state == JAVA_MEDIA_STATE_READY)
{
mdi_camera_power_off();
}
jui_widget_set_hardware_layer(GDI_NULL_HANDLE, NULL, NULL);
jui_widget_refresh_screen(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1);
/* free layers */
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);
}
JMA_CS_LEAVE(RESOUCE_NO_ERROR);
}
/*****************************************************************************
* FUNCTION
* jma_cam_player_resume_hdlr
* DESCRIPTION
* This function is camera resume handler invoked when resumeAudio executes
* PARAMETERS
* hdlr [IN]
* RETURNS
* resource_error_code
*****************************************************************************/
kal_int32 jma_cam_player_resume_hdlr(kal_int32 java_player)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_bool ret = KAL_FALSE;
MDI_RESULT ms;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_CAM_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);
if (video_player.state == JAVA_MEDIA_STATE_READY)
{
ms = mdi_camera_power_on();
if (ms == MDI_RES_CAMERA_SUCCEED)
{
ret = KAL_TRUE;
}
}
else if (video_player.state == JAVA_MEDIA_STATE_PLAYING)
{
ms = mdi_camera_power_on();
if (ms == MDI_RES_CAMERA_SUCCEED)
{
video_player.state = JAVA_MEDIA_STATE_READY;
ret = jma_cam_player_preview_start(MMA_TYPE_CAM, video_player.id);
if (ret == KAL_FALSE)
{
ms = mdi_camera_power_off();
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_CAM_PLAYER_DEVICE, java_player);
/* Backlight control */
jvm_force_backlight_on(KAL_FALSE);
}
}
}
if (ret == KAL_TRUE)
{
JMA_CS_LEAVE(RESOUCE_NO_ERROR);
}
else
{
JMA_CS_LEAVE(RESOUCE_FAIL);
}
}
/*****************************************************************************
* FUNCTION
* jma_cam_player_close_hdlr
* DESCRIPTION
* This function is camera close handler invoked when finalizeResoueceMgr executes
* PARAMETERS
* hdlr [IN]
* RETURNS
* resource_error_code
*****************************************************************************/
kal_int32 jma_cam_player_close_hdlr(kal_int32 java_player)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_bool ret;
MDI_RESULT ms;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_CAM_PLAYER_CLOSE_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);
}
if (!is_vm_suspend_media)
{
if (video_player.state == JAVA_MEDIA_STATE_PLAYING)
{
ret = jma_cam_player_preview_stop(MMA_TYPE_MPEG, java_player);
ms = mdi_camera_power_off();
}
else if (video_player.state == JAVA_MEDIA_STATE_READY)
{
ms = mdi_camera_power_off();
}
}
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();
/* Backlight control */
jvm_force_backlight_on(KAL_FALSE);
JMA_CS_LEAVE(RESOUCE_NO_ERROR);
}
/*****************************************************************************
* FUNCTION
* jma_cam_player_open
* DESCRIPTION
* function to be called to power on camera
* PARAMETERS
* mma_type [IN]
* java_player [IN]
* RETURNS
* Bool.
*****************************************************************************/
kal_bool jma_cam_player_open(kal_int32 mma_type, kal_int32 java_player)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MDI_RESULT ret;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_CAM_PLAYER_OPEN, java_player);
JMA_CS_ENTER(KAL_FALSE);
if (video_player.id != INVALID_JPLAYER_ID)
{
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_RESOURCE_ERROR, video_player.id);
JMA_CS_LEAVE(KAL_FALSE);
}
if (jma_audio_recorder_is_active() || jma_audio_player_is_active() ||
video_player.device_type != JAVA_MEDIA_INVALID_DEVICE)
{
JMA_CS_LEAVE(KAL_FALSE);
}
/* Check if Bluetooth is in use now */
#ifdef __MMI_FTS_SUPPORT__
if (mmi_ftp_server_is_receiving())
{
j2me_send_not_found(BT_IN_USE);
JMA_CS_LEAVE(KAL_FALSE);
}
#endif
#ifdef __MMI_OPP_SUPPORT__
if (mmi_opp_is_receiving())
{
j2me_send_not_found(BT_IN_USE);
JMA_CS_LEAVE(KAL_FALSE);
}
#endif
if (video_player.state == JAVA_MEDIA_STATE_NULL)
{
/* Backlight control */
jvm_force_backlight_on(KAL_TRUE);
ret = mdi_camera_power_on();
if (ret == MDI_RES_CAMERA_SUCCEED)
{
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_START_DOUBLE_BUFFER);
jui_widget_start_double_buffer();
video_player.is_double_buffer = KAL_TRUE;
}
else
{
/* 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, ret);
JMA_CS_LEAVE(KAL_FALSE);
}
kal_trace(TRACE_GROUP_4, J2ME_MMA_STATE_TRANSITION, video_player.state, JAVA_MEDIA_STATE_READY);
video_player.state = JAVA_MEDIA_STATE_READY;
/* Succeed to acquire resource */
jma_register_device(
JAVA_MEDIA_CAM_PLAYER_DEVICE,
java_player,
&jma_cam_player_suspend_hdlr,
&jma_cam_player_resume_hdlr,
&jma_cam_player_close_hdlr);
video_player.id = java_player;
video_player.device_type = JAVA_MEDIA_CAM_PLAYER_DEVICE;
}
JMA_CS_LEAVE(KAL_TRUE);
}
/*****************************************************************************
* FUNCTION
* jma_cam_player_close
* DESCRIPTION
* function to be called to power off camera
* PARAMETERS
* mma_type [IN]
* java_player [IN]
* RETURNS
* Bool.
*****************************************************************************/
kal_bool jma_cam_player_close(kal_int32 mma_type, kal_int32 java_player)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_bool ret;
MDI_RESULT ms;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_CAM_PLAYER_CLOSE, java_player, video_player.state);
JMA_CS_ENTER(KAL_FALSE);
if (video_player.id != java_player)
{
kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_RESOURCE_ERROR, video_player.id);
JMA_CS_LEAVE(KAL_FALSE);
}
jma_deregister_device(JAVA_MEDIA_CAM_PLAYER_DEVICE, java_player);
if (video_player.state == JAVA_MEDIA_STATE_PLAYING)
{
ret = jma_cam_player_preview_stop(mma_type, java_player);
ms = mdi_camera_power_off();
}
else if (video_player.state == JAVA_MEDIA_STATE_READY)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -