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

📄 vis_msg_handler.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                if (vid_context_p->file_size > vid_context_p->file_size_info.file_size_limit ||
                    (status != MEDIA_STATUS_OK && VIDEO_GetLastError() == MED_STAT_VIDEO_ENC_RESOURCE_NOT_AVAIL))
                {
                    video_enc_stop_record();
                    VIS_ENTER_STATE(VISUAL_IDLE);
                    vis_send_record_finish_ind(MED_RES_END_OF_FILE);
                }
                break;

            case VIDEO_ENC_EVENT_COMPLETE:
                VIS_ENTER_STATE(VISUAL_IDLE);
                vis_send_record_finish_ind(MED_RES_END_OF_FILE);
                break;
            case VIDEO_ENC_EVENT_FAIL:
                VIS_ENTER_STATE(VISUAL_IDLE);
                vis_send_record_finish_ind(MED_RES_FAIL);
                break;
            default:
                break;
        }
    }
}


/*****************************************************************************
 * FUNCTION
 *  vis_decode_visual_data_ind_hdlr
 * DESCRIPTION
 *  This function is to handle visual decode data indication
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void vis_decode_visual_data_ind_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_decode_visual_data_ind_struct *ind_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    med_v_context_p->src_mod = ilm_ptr->src_mod_id;

    ind_p = (media_decode_visual_data_ind_struct*) ilm_ptr->local_para_ptr;

    if (VIS_IN_STATE(VISUAL_PLAY))
    {
        switch (ind_p->event)
        {
            case VIDEO_DEC_DRV_SEEK_ACTION:
                video_seek_action();
                break;

            case VIDEO_DEC_EVENT_BUFFER_EMPTY:
            {
                MEDIA_STATUS_CODE status;

                status = video_dec_put_frame_to_buffer();
                if (status != MEDIA_STATUS_OK)
                {
                    VID_VIS_ERROR_TRACE(status, __LINE__);
                    VIS_ENTER_STATE(VISUAL_IDLE);
                    vis_send_play_finish_ind((kal_int16)vid_get_result_from_media_status(status));
                }
                break;
            }
            case VIDEO_DEC_EVENT_COMPLETE:
                VIS_ENTER_STATE(VISUAL_IDLE);
                vis_send_play_finish_ind(MED_RES_OK);
                break;

            case VIDEO_DEC_EVENT_SEEK_DONE:
                vis_send_seek_cnf(MED_V_RES_OK);
                break;

            case VIDEO_DEC_EVENT_NO_TRACK:
                vis_send_play_cnf(MED_V_RES_OK, 0);
                break;

            case VIDEO_DEC_RECOVER:
            {
                vis_send_error_recover_ind();
                break;
            }
            case VIDEO_DEC_EVENT_FAIL:
                VIS_ENTER_STATE(VISUAL_IDLE);
                vis_send_play_finish_ind(MED_RES_VIDEO_ERROR);
                break;

            case VIDEO_DEC_SEEK_AUDIO_EVENT_COMPLETE:
                /* Should play mute, if video is not end!! */
                /* If video is also end, please stop it. */
                ASSERT(ind_p->event != VIDEO_DEC_SEEK_AUDIO_EVENT_COMPLETE);
                break;

            default:
                break;
        }
    }
}


/*****************************************************************************
 * FUNCTION
 *  vis_play_req_hdlr
 * DESCRIPTION
 *  This function is to handle visual play request
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void vis_play_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_visual_play_req_struct *req_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    med_v_context_p->src_mod = ilm_ptr->src_mod_id;

    req_p = (media_visual_play_req_struct*) ilm_ptr->local_para_ptr;

    VIS_ENTER_STATE(VISUAL_PLAY);

    vis_send_play_cnf(MED_V_RES_OK, med_v_context_p->audio_frame_num);
}


/*****************************************************************************
 * FUNCTION
 *  vis_seek_req_hdlr
 * DESCRIPTION
 *  This function is to handle visual seek request
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void vis_seek_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_visual_seek_req_struct *req_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    med_v_context_p->src_mod = ilm_ptr->src_mod_id;

    req_p = (media_visual_seek_req_struct*) ilm_ptr->local_para_ptr;

}


/*****************************************************************************
 * FUNCTION
 *  vis_pause_req_hdlr
 * DESCRIPTION
 *  This function is to handle visual pause request
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void vis_pause_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
}


/*****************************************************************************
 * FUNCTION
 *  vis_resume_req_hdlr
 * DESCRIPTION
 *  This function is to handle visual resume request
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void vis_resume_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
}


/*****************************************************************************
 * FUNCTION
 *  vis_snapshot_req_hdlr
 * DESCRIPTION
 *  This function is to handle visual snapshot request
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void vis_snapshot_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
}


/*****************************************************************************
 * FUNCTION
 *  vis_clean_temp_files
 * DESCRIPTION
 *  This function is to clean temp files after file merge.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void vis_clean_temp_files(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    med_remove_file_name(med_v_context_p->storing_path);
    kal_wstrcat(med_v_context_p->storing_path, VID_AUDIO_FILE);
    FS_Delete(med_v_context_p->storing_path);

    med_remove_file_name(med_v_context_p->storing_path);
    kal_wstrcat(med_v_context_p->storing_path, VID_AUDIO_SAMPLE_FILE);
    FS_Delete(med_v_context_p->storing_path);

    med_remove_file_name(med_v_context_p->storing_path);
    kal_wstrcat(med_v_context_p->storing_path, VID_VISUAL_FILE);
    FS_Delete(med_v_context_p->storing_path);

    med_remove_file_name(med_v_context_p->storing_path);
    kal_wstrcat(med_v_context_p->storing_path, VID_VISUAL_META_FILE);
    FS_Delete(med_v_context_p->storing_path);

    med_remove_file_name(med_v_context_p->storing_path);
    kal_wstrcat(med_v_context_p->storing_path, VID_VISUAL_REAL_META_FILE);
    FS_Delete(med_v_context_p->storing_path);
}


/*****************************************************************************
 * FUNCTION
 *  write_audio_sample_data
 * DESCRIPTION
 *  This function is to write audio sample(meta) file for video file merge.
 * PARAMETERS
 *  audio_sample_count      [?]     
 * RETURNS
 *  kal_int16
 *****************************************************************************/
kal_int16 write_audio_sample_data(kal_uint32 *audio_sample_count)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint8 bAMRType = 0; /* 0:AMR 1:AMR-WB */
    kal_uint32 uSampleCount = 0;
    kal_uint32 uAMRFileLen;
    kal_uint32 uAMRFilePos;
    FSAL_Status eFSALRet;
    kal_bool audio_file_open = KAL_FALSE;
    kal_bool audio_meta_file_open = KAL_FALSE;
    kal_int16 result;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* open sample data file for writing */
    med_remove_file_name(med_v_context_p->storing_path);
    kal_wstrcat(med_v_context_p->storing_path, VID_AUDIO_SAMPLE_FILE);
    if ((vid_context_p->file_handle = FS_Open(med_v_context_p->storing_path, VID_TEMP_FILE_ATTRIBUTES)) < 0)
    {
        if (vid_context_p->file_handle == FS_WRITE_PROTECTION)
        {
            result = MED_RES_WRITE_PROTECTION;
        }
        else
        {
            result = MED_RES_OPEN_FILE_FAIL;
        }
        VID_FSAL_ERROR_TRACE(vid_context_p->file_handle, __LINE__);
        goto audio_sample_error;
    }
    audio_meta_file_open = KAL_TRUE;
    eFSALRet = FSAL_Open_WithHandle(&fsalAudioSampleDataFile, (void*)vid_context_p->file_handle);
    if (eFSALRet != FSAL_OK)
    {
        result = MED_RES_OPEN_FILE_FAIL;
        VID_FSAL_ERROR_TRACE(eFSALRet, __LINE__);
        goto audio_sample_error;
    }
    FSAL_SetBuffer(
        &fsalAudioSampleDataFile,
        (kal_uint32) sizeof(buffer_enc_audio_sample_tmp),
        (kal_uint8*) buffer_enc_audio_sample_tmp);

    /* open amr file */
    med_remove_file_name(med_v_context_p->storing_path);
    kal_wstrcat(med_v_context_p->storing_path, VID_AUDIO_FILE);
    eFSALRet = FSAL_Open(&fsalAudioFile, (void*)med_v_context_p->storing_path, FSAL_READ);
    if (eFSALRet != FSAL_OK)
    {
        result = MED_RES_OPEN_FILE_FAIL;
        VID_FSAL_ERROR_TRACE(eFSALRet, __LINE__);
        goto audio_sample_error;
    }
    audio_file_open = KAL_TRUE;
    FSAL_SetBuffer(&fsalAudioFile, (kal_uint32) sizeof(buffer_enc_audio_tmp), (kal_uint8*) buffer_enc_audio_tmp);

    eFSALRet = FSAL_GetFileSize(&fsalAudioFile, &uAMRFileLen);
    if (eFSALRet != FSAL_OK)
    {

⌨️ 快捷键说明

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