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

📄 jma_video_player.c

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