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

📄 jma_video_recorder.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 4 页
字号:
 * PARAMETERS
 *  mma_type            [IN]        Int recorder
 *  java_player       [IN]        
 * RETURNS
 *  kal_bool - true
 *****************************************************************************/
kal_bool jma_video_recorder_reset(kal_int32 mma_type, kal_int32 java_player)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_RESET, 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);
    }

    if (video_player.state == JAVA_MEDIA_STATE_RECORDING ||
         video_player.state == JAVA_MEDIA_STATE_PAUSED)
    {
        /* State will be changed */
        jma_video_recorder_stop_record(mma_type, java_player);
    }

    /* MED recorder has stopped, JAL has not saved file yet */
    if (video_player.state == JAVA_MEDIA_STATE_STOPPED_PAUSED)
    {
        /* delete file */
        if (mdi_video_rec_has_unsaved_file(NULL) == TRUE)
        {
            mdi_video_rec_delete_unsaved_file(NULL);
        }
        
        /* Clear */
        video_record_need_merge = KAL_FALSE;
        
            /* After reset(), setRecordLocation needs to be called again */
        mmi_ucs2cpy((S8*) video_player.filename, "");
        
        kal_trace(TRACE_GROUP_4, J2ME_MMA_STATE_TRANSITION, video_player.state, JAVA_MEDIA_STATE_READY);
        video_player.state = JAVA_MEDIA_STATE_READY;
    }

    JMA_CS_LEAVE(KAL_TRUE);
}


/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_refresh
 * DESCRIPTION
 *  The function is used to refresh video recorder to new location/size
 * PARAMETERS
 *  mma_type                [IN]        
 *  java_player             [IN]        
 *  x                   [IN]        
 *  y                  [IN]        
 * RETURNS
 *  set display width and height.(?)
 *****************************************************************************/
kal_bool jma_video_recorder_refresh(kal_int32 java_player)
{  
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_bool ret;
    MDI_RESULT ms;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_REFRESH, java_player, video_player.state);

    /* ignore at NULL, READY state */
    if (video_player.state == JAVA_MEDIA_STATE_PLAYING ||
        video_player.state == JAVA_MEDIA_STATE_RECORDING ||
        video_player.state == JAVA_MEDIA_STATE_PAUSED)
    {
        ms = mdi_video_rec_update_blt_pause();
        
        if (ms != MDI_RES_VDOREC_SUCCEED)
        {
            kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_MARKER_FAIL);
            kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_D, ms);
            jma_video_recorder_close(MMA_TYPE_MPEG, java_player);
            return KAL_FALSE;
        }
            
        jma_video_player_refine_display_info();
        ret = jma_video_player_process_layer();        
        
        /* Config hardware layer: even if in invisible case */
        jui_widget_set_hardware_layer(preview_layer_handle, &blt_layer_flag, &preview_layer_flag);
        if (video_ctrl_info.is_visible == KAL_FALSE)
        {
            jui_widget_set_hardware_layer(GDI_NULL_HANDLE, NULL, NULL);
            jui_widget_refresh_screen(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1);
        }
        
        ms = mdi_video_rec_update_blt_resume(
                preview_layer_handle,
                blt_layer_flag,
                preview_layer_flag,
                video_ctrl_info.is_visible);
        if (ms != MDI_RES_VDOREC_SUCCEED)
        {
            kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_MARKER_FAIL);
            kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_D, ms);
            jma_video_recorder_close(MMA_TYPE_MPEG, java_player);
            return KAL_FALSE;
        }
    }
    
    return KAL_TRUE;
}


/*****************************************************************************
 * FUNCTION
 *  jma_video_player_set_display_location
 * DESCRIPTION
 *  function to be called to set display width and height
 * PARAMETERS
 *  mma_type                [IN]        
 *  java_player             [IN]        
 *  x                   [IN]        
 *  y                  [IN]        
 * RETURNS
 *  set display width and height.(?)
 *****************************************************************************/
kal_bool jma_video_recorder_set_record_location(kal_int32 mma_type, kal_int32 java_player, kal_char *path)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 file_handle;
    kal_int32 result;
    kal_char *file_name;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_SET_RECORD_LOCATION, 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);
    }

    mmi_ucs2ncpy((PS8) video_player.filename, path, J2ME_PATH_BUFFER_SIZE);
    
    result = FS_GetDevStatus(video_player.filename[0] ,FS_MOUNT_STATE_ENUM);
    if (result == FS_NO_ERROR) 
    {
        /* Check if valid file name */
        file_name = kal_dchar_strrchr((S8*) video_player.filename, '\\');

        if (file_name)
        {
            file_name += 2;
            if (!mmi_fmgr_is_filename_valid(file_name))
            {
                kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_MARKER_FAIL);
                JMA_CS_LEAVE(KAL_FALSE);
            }               
        }
        else /* Do not file '\\' */
        {
            kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_MARKER_FAIL);
            JMA_CS_LEAVE(KAL_FALSE);
        }   

        /* Check if dir exist or if valid dir */
        *file_name = '\0';
        file_handle = FS_Open(video_player.filename, FS_OPEN_DIR | FS_READ_ONLY);            
        if (file_handle > 0)
        {
           FS_Close(file_handle);
        }
        else
        {
           kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_MARKER_FAIL);
           JMA_CS_LEAVE(KAL_FALSE);
        }

        /* Copy again to repair audio_recorder.filename */
        mmi_ucs2ncpy((PS8) video_player.filename, (PS8) path, J2ME_PATH_BUFFER_SIZE);
        
        file_handle = FS_Open(video_player.filename, FS_READ_ONLY);
        if (file_handle > 0) /* Check if file exist */
        {
            result = FS_Close(file_handle); /* need to close file before delete */
            result = FS_Delete(video_player.filename);
            if (result != FS_NO_ERROR)
            {
                kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_D, result);
                JMA_CS_LEAVE(KAL_FALSE);
            }
        }
        JMA_CS_LEAVE(KAL_TRUE);
    }
    else
    {
       kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_MARKER_FAIL);
       kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_D, result);
       JMA_CS_LEAVE(KAL_FALSE);
    }
}


/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_set_record_size_limit
 * DESCRIPTION
 *  This function set the size limit of recorded data
 * PARAMETERS
 *  mma_type            [IN]        Int recorder
 *  java_player       [IN]        
 *  limit_size          [IN]        
 * RETURNS
 *  int - limit_size set
 *****************************************************************************/
kal_int32 jma_video_recorder_set_record_size_limit(kal_int32 mma_type, kal_int32 java_player, kal_int32 limit_size)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 ticks = kal_milli_secs_to_ticks(200); /* 200 ms */   

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_SET_RECORD_SIZE_LIMIT, java_player, video_player.state, limit_size);
    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(0);
    }

    /* Save parameter */
    video_player.record_size_limit = limit_size;

    /* start timer */
    if (video_player.state == JAVA_MEDIA_STATE_RECORDING)
    {
        if(video_player.record_size_limit != -1)
        {
            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(limit_size);
}

/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_record_merged
 * DESCRIPTION
 *  This function handles video recorder merged
 * PARAMETERS
 *  mma_type            [IN]        
 *  java_player       [IN]        
 * RETURNS
 *  bool result
 *****************************************************************************/
kal_bool jma_video_recorder_record_merged(kal_int32 mma_type, kal_int32 java_player)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return (!video_record_need_merge);

}


/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_get_record_time
 * DESCRIPTION
 *  This function invoke VideoGetRecordTime request to media task.
 * PARAMETERS
 *  mma_type        [IN]        
 *  java_player     [IN]        
 * RETURNS
 *  long - current_time
 *****************************************************************************/
kal_uint64 jma_video_recorder_get_record_time(kal_int32 mma_type, kal_int32 java_player)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint64 current_time = 0;
   
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, FUNC_J2ME_JMA_VIDEO_RECORDER_GET_RECORD_TIME, java_player, video_player.state);
    JMA_CS_ENTER(0);

    if (video_player.id != java_player)
    {
        kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_RESOURCE_ERROR, video_player.id);
        JMA_CS_LEAVE(0);
    }

    if (video_player.state == JAVA_MEDIA_STATE_RECORDING)
    {
        /* Should call after Start_Record(), or DataAbort()*/
        mdi_video_rec_get_cur_record_time(&current_time);
        video_player.current_time = current_time;
        
    }
    else
    {
        current_time = video_player.current_time;
    }
    kal_trace(TRACE_GROUP_4, INFO_J2ME_MMA_D, current_time);
    
    JMA_CS_LEAVE(current_time);
}


/*****************************************************************************
 * FUNCTION
 *  jma_video_recorder_is_active
 * DESCRIPTION
 *  This function checks if video recorder is active
 * PARAMETERS
 *  void
 * RETURNS
 *  kal_bool result
 *****************************************************************************/
kal_bool jma_video_recorder_is_active(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (video_player.device_type == JAVA_MEDIA_MPEG_RECORDER_DEVICE)
    {
        return KAL_TRUE;
    }
    else
    {
        return KAL_FALSE;
    }
}

#else /* defined (SUPPORT_MMAPI) && !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_RECORDER__) */ 
kal_bool jma_video_recorder_open(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_close(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_start_preview(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_stop_preview(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_start_record(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_pause_record(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_commit(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_reset(kal_int32 mma_type, kal_int32 java_player){return KAL_FALSE;}
kal_bool jma_video_recorder_set_record_location(kal_int32 mma_type, kal_int32 java_player, kal_char *path){return KAL_FALSE;}
kal_bool jma_video_recorder_is_active(void){return KAL_FALSE;}
kal_int32 jma_video_recorder_set_record_size_limit(kal_int32 mma_type, kal_int32 file, kal_int32 limit){return 0;}
kal_bool jma_video_recorder_record_merged(kal_int32 mma_type, kal_int32 recorder){return KAL_FALSE;}
kal_uint64 jma_video_recorder_get_record_time(kal_int32 mma_type, kal_int32 java_player){return 0;}
#endif /* defined (SUPPORT_MMAPI) && !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_RECORDER__) */ 

⌨️ 快捷键说明

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