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

📄 tvo_msg_handler.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 2 页
字号:
                break;
        }
        tvo_context_p->tv_connected = KAL_FALSE;
    }
}


/*****************************************************************************
 * FUNCTION
 *  tvo_start_req_hdlr
 * DESCRIPTION
 *  This function is to start tv output.
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void tvo_start_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_tvo_start_req_struct *req_p;
    tv_output_para_struct tv_para;
    kal_int32 result;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    req_p = (media_tvo_start_req_struct*) ilm_ptr->local_para_ptr;

    tvo_context_p->src_mod = ilm_ptr->src_mod_id;

    tvo_context_p->tv_output_mode = req_p->tv_output_mode;
    tvo_context_p->tv_output_format = req_p->tv_output_format;
    tvo_context_p->tv_output_width = req_p->tv_output_width;
    tvo_context_p->tv_output_height = req_p->tv_output_height;
    switch (tvo_context_p->state)
    {
        case TVO_IDLE:
            result = MED_RES_BUSY;
            break;
        case TVO_READY:
        {
            init_tv();

            tv_para.tv_output_mode = tvo_context_p->tv_output_mode;
            tv_para.tv_output_format = tvo_context_p->tv_output_format;
            tv_para.tv_output_offset_x = 30;
            tv_para.tv_output_offset_y = 21;
            set_tv_output_mode(&tv_para);
            if (tvo_context_p->tv_output_mode == MED_TV_OUT_MODE2 || tvo_context_p->tv_output_mode == MED_TV_OUT_MODE3)
            {
                tvo_context_p->tv_output_buffer_size =
                    (tvo_context_p->tv_output_width * tvo_context_p->tv_output_height * 3) >> 1;
                set_tv_output_data_format(TV_DATA_YUV420);
                set_tv_src_size(TV_OUT_OWNER_MMI, tvo_context_p->tv_output_width, tvo_context_p->tv_output_height);
            }
            else
            {
                tvo_context_p->tv_output_buffer_size =
                    (tvo_context_p->tv_output_width * tvo_context_p->tv_output_height * 2);
                set_tv_output_data_format(TV_DATA_RGB565);
                set_tv_src_size(TV_OUT_OWNER_MMI, tvo_context_p->tv_output_width, tvo_context_p->tv_output_height);
            }
        #if (!defined(MT6228_EVB) && !defined(MT6229_EVB))
            if (tvo_context_p->tv_connected)
        #endif 
            {
                enable_tv_output(KAL_TRUE);
                aud_set_tv_out_aud_path(KAL_TRUE);
            }
            tvo_context_p->tv_output = KAL_TRUE;
            TVO_ENTER_STATE(TVO_UPDATE);
            result = MED_RES_OK;
            break;
        }
        default:
            result = MED_RES_BUSY;
            break;
    }
    tvo_set_result(result);
    TVO_SET_EVENT(TVO_EVT_START);

}


/*****************************************************************************
 * FUNCTION
 *  tvo_stop_req_hdlr
 * DESCRIPTION
 *  This function is to stop tv output.
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void tvo_stop_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

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

    switch (tvo_context_p->state)
    {
        case TVO_READY:
        {
            tvo_context_p->tv_output = KAL_FALSE;
            TVO_ENTER_STATE(TVO_IDLE);
            break;
        }
        case TVO_UPDATE:
        {
            enable_tv_output(KAL_FALSE);
            aud_set_tv_out_aud_path(KAL_FALSE);            
            tvo_context_p->tv_output = KAL_FALSE;
            TVO_ENTER_STATE(TVO_READY);
            break;
        }
        default:
            break;
    }

    TVO_SET_EVENT(TVO_EVT_STOP);

}


/*****************************************************************************
 * FUNCTION
 *  tvo_set_mode_req_hdlr
 * DESCRIPTION
 *  This function is to set tv output mode.
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void tvo_set_mode_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_tvo_set_mode_req_struct *req_p;
    tv_output_para_struct tv_para;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    req_p = (media_tvo_set_mode_req_struct*) ilm_ptr->local_para_ptr;

    tvo_context_p->src_mod = ilm_ptr->src_mod_id;

    tvo_context_p->tv_output_mode = req_p->tv_output_mode;
    tvo_context_p->tv_output_format = req_p->tv_output_format;
    tvo_context_p->tv_output_width = req_p->tv_output_width;
    tvo_context_p->tv_output_height = req_p->tv_output_height;
    if (tvo_context_p->tv_vertical_fileter != req_p->tv_output_vertical_filter)
    {
        tvo_context_p->tv_vertical_fileter = req_p->tv_output_vertical_filter;
        enable_tv_vertical_interpolation(tvo_context_p->tv_vertical_fileter);
    }

    tv_para.tv_output_mode = tvo_context_p->tv_output_mode;
    tv_para.tv_output_format = tvo_context_p->tv_output_format;
    tv_para.tv_output_offset_x = 30;
    tv_para.tv_output_offset_y = 21;
    set_tv_output_mode(&tv_para);
    if (tvo_context_p->tv_output_mode == MED_TV_OUT_MODE2 || tvo_context_p->tv_output_mode == MED_TV_OUT_MODE3)
    {
        tvo_context_p->tv_output_buffer_size =
            (tvo_context_p->tv_output_width * tvo_context_p->tv_output_height * 3) >> 1;
        set_tv_output_data_format(TV_DATA_YUV420);
        set_tv_src_size(TV_OUT_OWNER_MMI, tvo_context_p->tv_output_width, tvo_context_p->tv_output_height);
    }
    else
    {
        tvo_context_p->tv_output_buffer_size = (tvo_context_p->tv_output_width * tvo_context_p->tv_output_height * 2);
        set_tv_output_data_format(TV_DATA_RGB565);
        set_tv_src_size(TV_OUT_OWNER_MMI, tvo_context_p->tv_output_width, tvo_context_p->tv_output_height);
    }

    TVO_SET_EVENT(TVO_EVT_SET_MODE);

}


/*****************************************************************************
 * FUNCTION
 *  tvo_set_param_req_hdlr
 * DESCRIPTION
 *  This function is to set tv out parameters.
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void tvo_set_param_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_tvo_set_param_req_struct *req_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    req_p = (media_tvo_set_param_req_struct*) ilm_ptr->local_para_ptr;

    tvo_context_p->src_mod = ilm_ptr->src_mod_id;

    switch (req_p->type)
    {
       case MED_TV_PARAM_Y_COMP:
       case MED_TV_PARAM_U_COMP:
       case MED_TV_PARAM_V_COMP:
       {
          set_tv_parameter(req_p->type, req_p->para);
       }
       break;

       case MED_TV_PARAM_AUD_PATH:
       {
            /* set audio path */
            if (req_p->para == MED_TV_PARAM_AUD_PATH_BOTH)
            {
                aud_set_tv_out_param(KAL_TRUE);
            }
            else if (req_p->para == MED_TV_PARAM_AUD_PATH_TV)
            {
                aud_set_tv_out_param(KAL_FALSE);
            }
       }
       break;
    }     

}

#endif /* __MED_TVO_MOD__ */ 

#endif /* MED_NOT_PRESENT */ 

⌨️ 快捷键说明

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