📄 tvo_msg_handler.c
字号:
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 + -