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

📄 jma_cam_player.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
*  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 + -