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

📄 jma_video_recorder.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 4 页
字号:
/*****************************************************************************
*  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_recorder.c
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   This file defines native JMA video recorder 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!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
/**
 * @(#)jma_video_recorder.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"

/*************************************************************************
 * 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_VIDEO_RECORDER__)

/*****************************************************************************
 * Global Definition and Declaration
*****************************************************************************/

kal_bool video_record_need_merge = KAL_FALSE;


/*****************************************************************************
 * private functions
*****************************************************************************/
void jma_video_recorder_save_file(void);
void jma_video_recorder_record_result_hdlr(MDI_RESULT result);
void jma_video_recorder_save_result_hdlr(MDI_RESULT result);
kal_bool jma_video_recorder_refresh(kal_int32 java_player);
static kal_bool jma_video_recorder_stop_record(kal_int32 mma_type, kal_int32 java_player);



/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_timer_expired
 * DESCRIPTION
 *  This function handles video recorder timer expired
 * PARAMETERS
 *  mma_type            [IN]        
 *  java_player       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void jma_video_recorder_timer_expired(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint64 record_size;
    kal_int32 ticks = kal_milli_secs_to_ticks(200); /* 200 ms */  
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_TIMER_EXPIRED, video_player.id, video_player.state);
    JMA_CS_ENTER(JMA_VOID);

    if (video_player.state != JAVA_MEDIA_STATE_RECORDING)
    {
        kal_print("Video Record FAIL: state is not right!");
        JMA_CS_LEAVE(JMA_VOID);
    }
    
    ASSERT(video_player.state == JAVA_MEDIA_STATE_RECORDING);

    record_size = mdi_video_rec_get_record_file_size();

    kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_D, record_size);

    /* Reach record size limit */
    if (record_size >= video_player.record_size_limit)
    {
        /* State will be changed */
        jma_video_recorder_stop_record(MMA_TYPE_MPEG, video_player.id);        

        jvm_post_mma_event(MMA_EVENT_RECORD_STOPPED, 
            (kal_int16) video_player.id, video_player.current_time);
    }
    else /* re-start timer */
    {
        kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_STACK_START_TIMER);
        stack_start_timer(&java_media_timer, JAVA_MEDIA_TIMER_VIDEO_RECORDER, ticks);
    }
    JMA_CS_LEAVE(JMA_VOID);
}


/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_suspend_hdlr
 * DESCRIPTION
 *  This function handles video recorder suspend
 * PARAMETERS
 *  hdlr        [IN]        
 * RETURNS
 *  int result
 *****************************************************************************/
kal_int32 jma_video_recorder_suspend_hdlr(kal_int32 java_player)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    java_media_state_enum original_state;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_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);
    }

    original_state = video_player.state;
    
    /* Avoid data abort: But Cannot change state */
    if (original_state == JAVA_MEDIA_STATE_RECORDING ||
        original_state == JAVA_MEDIA_STATE_PAUSED ||
        original_state == JAVA_MEDIA_STATE_STOPPED_PAUSED)
    {        
        /* State will be changed to READY */
        jma_video_recorder_reset(MMA_TYPE_MPEG, java_player);
    }
    else if (original_state == JAVA_MEDIA_STATE_PLAYING)
    {
        jma_video_recorder_stop_preview(MMA_TYPE_MPEG, java_player);
    }   

    /* Camera power off */
    if (video_player.state == JAVA_MEDIA_STATE_READY)
    {
        mdi_video_rec_power_off();
    } 
    
    /* Resume to original state */
    video_player.state = original_state;
    
    JMA_CS_LEAVE(RESOUCE_NO_ERROR);
}


/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_resume_hdlr
 * DESCRIPTION
 *  This function handles video recorder timer expired
 * PARAMETERS
 *  native_recorder     [IN]        
 * RETURNS
 *  int - result
 *****************************************************************************/
kal_int32 jma_video_recorder_resume_hdlr(kal_int32 java_player)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    MDI_RESULT result;
    kal_bool ret;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_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);
    }

    if (video_player.state == JAVA_MEDIA_STATE_READY)
    {
        /* Backlight control */
        jvm_force_backlight_on(KAL_TRUE);
        
        /* camera HW power on */
        result = mdi_video_rec_power_on();
    }
    else if (video_player.state == JAVA_MEDIA_STATE_PLAYING)
    {
        /* Backlight control */
        jvm_force_backlight_on(KAL_TRUE);
        
        result = mdi_video_rec_power_on();
        video_player.state = JAVA_MEDIA_STATE_READY;
        ret = jma_video_recorder_start_preview(MMA_TYPE_MPEG, java_player);

        if (ret == KAL_FALSE)
        {
            result = 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_MPEG_RECORDER_DEVICE, java_player);
            /* Backlight control */
            jvm_force_backlight_on(KAL_FALSE);        
        }
    }
    else
    {
        jvm_post_mma_event(
            MMA_EVENT_RECORD_ERROR,
           (kal_int16) java_player,
            (kal_int64) MMA_ERR_MMI_INTERRUPT);

        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_RECORDER_DEVICE, java_player);
    }  
   
    JMA_CS_LEAVE(RESOUCE_NO_ERROR);
}


/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_close_hdlr
 * DESCRIPTION
 *  This function handles video recorder timer expired
 * PARAMETERS
 *  native_recorder     [IN]        
 * RETURNS
 *  int result
 *****************************************************************************/
kal_int32 jma_video_recorder_close_hdlr(kal_int32 java_player)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/    
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_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_RECORDING ||
            video_player.state == JAVA_MEDIA_STATE_PAUSED ||
            video_player.state == JAVA_MEDIA_STATE_STOPPED_PAUSED)
        {        
            /* State will be changed to READY */
            jma_video_recorder_reset(MMA_TYPE_MPEG, java_player);
        }

        if (video_player.state == JAVA_MEDIA_STATE_PLAYING)
        {
            jma_video_recorder_stop_preview(MMA_TYPE_MPEG, java_player);
        }   
        
        /* Camera power off */
        if (video_player.state == JAVA_MEDIA_STATE_READY)
        {
            mdi_video_rec_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();
    
    video_record_need_merge = KAL_FALSE;

    /* Backlight control */
    jvm_force_backlight_on(KAL_FALSE);

    JMA_CS_LEAVE(RESOUCE_NO_ERROR);
}

⌨️ 快捷键说明

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