📄 jma_video_recorder.c
字号:
* 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(¤t_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 + -