📄 chp_dl_media_from_host.c
字号:
dl_media_iou_int_disable();
mp4_mjp_flag = 0;
// sys_printf("********MJP play end******** \n");
return;
}
else if (dl_media_frame.rsp == RSP_MP3_PLAY_OVER)
{
if(KTV_Play_Flag==1)
{
if(KTV_Over_Check==1)
{
dl_media_interrupt_disable();
dl_media_iou_int_disable();
dl_media_dac_close();
// sys_printf("********end********mmd play over \n");
IOU_OUT(IMUSIC_MUSIC_START,0x00);
IOU_OUT(IMUSIC_FIFO_CLR, 0X02); // CLEAR SCORE FIFO
IOU_OUT(IMUSIC_FIFO_CLR, 0X00);
KTV_Play_Flag = 0;
KTV_Over_Check =0;
//dl_media_line_in_close();
}
else
{
KTV_Over_Check =1;
// sys_printf("********Set_Check =1********mmd play over \n");
}
}
else
{
dl_media_interrupt_disable();
dl_media_iou_int_disable();
dl_media_dac_close();
// sys_printf("********Mp3 play end******** \n");
}
return;
}
else
{
dl_media_host_data.ret = DL_MEDIA_RET_FAIL;
// sys_printf("*****dl_media_host_data.ret = DL_MEDIA_RET_FAIL \n");
}
}
return;
}
void dl_media_host_handle_rsp(void *p_para)
{
DL_MEDIA_IOU_FRAME_T dl_media_frame;
UINT16 iou_size[4],ret;
UINT8 *p_buffer = dl_media_host_data.p_buffer;
UINT32 length = dl_media_host_data.length;
ret =dl_media_iou_read_frame((UINT8*)&dl_media_frame);
// sys_printf("dl_media_iou_read_frame is end rst = %d, type=%d, rsp=0x%x\n", ret,dl_media_frame.type,dl_media_frame.rsp);
FATAL_ERROR_TO_RESET(ret);
if (dl_media_frame.type == IOU_FRAME_REQ_FILE_LENGTH)
{
iou_size[0] = 0xfff0;
iou_size[1] = 0x0000;
iou_size[2] = length;
iou_size[3] = length >> 16;
ret = dl_media_iou_write_cmd(iou_size, 8);
// sys_printf("dl_media_iou_write_cmd is end rst = %d\n", ret);
dl_media_host_data.offsize = 0;
dl_media_host_data.offset = 0;
}
else if (dl_media_frame.type == IOU_FRAME_OFFSET_SIZE)
{
dl_media_host_data.offset = dl_media_frame.value[2]<<16 | dl_media_frame.value[1];
if (dl_media_frame.value[0] == 0)
dl_media_host_data.offsize = dl_media_host_data.offset;
else if (dl_media_frame.value[0] == 1)
dl_media_host_data.offsize += dl_media_host_data.offset;
else if (dl_media_frame.value[0] == 2)
dl_media_host_data.offsize = dl_media_host_data.size - dl_media_host_data.offset;
p_buffer = dl_media_host_data.p_buffer + dl_media_host_data.offsize;
dl_media_host_data.wsize = (dl_media_frame.size_hi << 16) | dl_media_frame.size_low;
if (dl_media_host_data.wsize != 0)
{
#ifndef CHP_BIG_ENDIAN
ret = dl_media_iou_write_data(p_buffer, dl_media_host_data.wsize);
#else
ret = dl_media_iou_write_data_for_big_endian(p_buffer, dl_media_host_data.wsize);
#endif
// sys_printf("dl_media_iou_write_data_for_big_endian is end rst = %d\n", ret);
dl_media_host_data.offsize += dl_media_host_data.wsize;
}
}
else if (dl_media_frame.type == IOU_FRAME_ARM_RSP)
{
if (dl_media_frame.rsp == RSP_MJPG_PLAY_START ||
dl_media_frame.rsp == RSP_MP3_PLAY_START ||
dl_media_frame.rsp == RSP_SUCCESS)
{
// sys_printf("********Start or sucess******** \n");
return;
}
else if ( dl_media_frame.rsp == RSP_MJPG_PLAY_OVER)
{
dl_media_interrupt_disable();
dl_media_iou_int_disable();
mp4_mjp_flag = 0;
sys_printf("********MJP play end******** \n");
return;
}
else if (dl_media_frame.rsp == RSP_MP3_PLAY_OVER)
{
if(KTV_Play_Flag==1)
{
if(KTV_Over_Check==1)
{
dl_media_interrupt_disable();
dl_media_iou_int_disable();
dl_media_dac_close();
sys_printf("********end********mmd play over \n");
IOU_OUT(IMUSIC_MUSIC_START,0x00);
IOU_OUT(IMUSIC_FIFO_CLR, 0X02); // CLEAR SCORE FIFO
IOU_OUT(IMUSIC_FIFO_CLR, 0X00);
KTV_Play_Flag = 0;
KTV_Over_Check =0;
//dl_media_line_in_close();
}
else
{
KTV_Over_Check =1;
sys_printf("********Set_Check =1********mmd play over \n");
}
}
else
{
dl_media_interrupt_disable();
dl_media_iou_int_disable();
dl_media_dac_close();
sys_printf("********Mp3 play end******** \n");
}
return;
}
else
{
dl_media_host_data.ret = DL_MEDIA_RET_FAIL;
// sys_printf("*****dl_media_host_data.ret = DL_MEDIA_RET_FAIL \n");
}
}
return;
}
DL_MEDIA_RET_T dl_media_host_patch(void)
{
DL_MEDIA_RET_T ret;
ret = dl_media_send_cmd_and_read_rsp(DL_MEDIA_CMD_SYS_PATCH, NULL);
return ret;
}
DL_MEDIA_RET_T dl_media_host_jpg_capture(void *p_buffer, UINT32 *p_length)
{
DL_MEDIA_RET_T ret;
dl_media_iou_int_disable();
ret = dl_media_send_cmd(DL_MEDIA_CMD_HOST_JPG_CAPTURE, NULL);
if (ret != DL_MEDIA_RET_SUCCESS)
{
dl_media_iou_int_restore();
return ret;
}
dl_media_delay(8);
ret = dl_media_host_get_data(p_buffer, p_length);
dl_media_iou_int_restore();
return ret;
}
DL_MEDIA_RET_T dl_media_host_jpg_display(void *p_buffer, UINT32 len)
{
DL_MEDIA_RET_T ret;
ret =dl_media_chip_patch(PATCH_VIDEO_DEC);
sys_printf("dl_media_chip_patch is end rst = %d\n", ret);
if(ret) return ret;
dl_media_iou_int_disable();
ret = dl_media_send_cmd(DL_MEDIA_CMD_HOST_JPG_DISPLAY, NULL);
sys_printf("dl_media_send_cmd is end rst = %d\n", ret);
if (ret != DL_MEDIA_RET_SUCCESS)
{
dl_media_iou_int_restore();
return ret;
}
dl_media_delay(1);
ret = dl_media_host_send_data(p_buffer, len);
sys_printf("dl_media_host_send_data is end rst = %d\n", ret);
dl_media_iou_int_restore();
return ret;
}
DL_MEDIA_RET_T dl_media_host_mjp_capture_start(void *p_buffer, UINT32 *p_length)
{
DL_MEDIA_RET_T ret;
ret =dl_media_chip_patch(PATCH_VIDEO_ENC);
if(ret) return ret;
dl_media_callback.cmd_callback = dl_media_host_handle_rsp_data;
dl_media_host_data.p_buffer = p_buffer;
dl_media_host_data.p_length = p_length;
dl_media_host_data.size = 0;
dl_media_host_data.ret = DL_MEDIA_RET_SUCCESS;
dl_media_callback.cmd_para = NULL;
dl_media_interrupt_enable();
dl_media_iou_int_enable();
ret = dl_media_send_cmd(DL_MEDIA_CMD_HOST_MJP_CAPTURE, NULL);
if (ret != DL_MEDIA_RET_SUCCESS)
{
dl_media_iou_int_disable();
dl_media_interrupt_disable();
dl_media_callback.cmd_callback = NULL;
return ret;
}
return DL_MEDIA_RET_SUCCESS;
}
DL_MEDIA_RET_T dl_media_host_mjp_capture_end(UINT32 *p_length)
{
DL_MEDIA_RET_T ret;
UINT32 length = *dl_media_host_data.p_length;
if (dl_media_host_data.ret != DL_MEDIA_RET_SUCCESS)
{
*p_length = dl_media_host_data.size;
return DL_MEDIA_RET_SUCCESS;
}
dl_media_interrupt_disable();
dl_media_iou_int_disable();
dl_media_callback.cmd_callback = NULL;
ret = dl_media_send_cmd(DL_MEDIA_CMD_CMR_MJP_CAPTURE_END, NULL);
if (ret != DL_MEDIA_RET_SUCCESS)
{
dl_media_iou_int_restore();
return ret;
}
dl_media_host_data.p_buffer = (UINT8*)dl_media_host_data.p_buffer + dl_media_host_data.size;
length -= dl_media_host_data.size;
ret = dl_media_host_get_data(dl_media_host_data.p_buffer, &length);
*p_length = dl_media_host_data.size + length;
dl_media_iou_int_restore();
return ret;
}
DL_MEDIA_RET_T dl_media_host_mjp_display_start(void *p_buffer, UINT32 length)
{
DL_MEDIA_RET_T ret;
ret =dl_media_chip_patch(PATCH_VIDEO_DEC);
sys_printf("=====dl_media_chip_patch = 0x%x\n",ret);
if(ret) return ret;
#ifndef CHP_BIG_ENDIAN
dl_media_callback.cmd_callback = dl_media_host_handle_rsp;
#else
if(mp4_mjp_flag)
{
dl_media_callback.cmd_callback = dl_media_host_handle_rsp_for_mp4ktv; //hannah
}
else
{
dl_media_callback.cmd_callback = dl_media_host_handle_rsp;
}
#endif
dl_media_host_data.p_buffer = p_buffer;
// sys_printf("===length = 0x%x\n",length);
dl_media_host_data.length = length;
dl_media_host_data.ret = DL_MEDIA_RET_SUCCESS;
dl_media_callback.cmd_para = NULL;
dl_media_interrupt_enable();
dl_media_iou_int_enable();
ret = dl_media_send_cmd(DL_MEDIA_CMD_HOST_MJP_DISPLAY, NULL);
sys_printf("=====dl_media_send_cmd = 0x%x\n",ret);
if (ret != DL_MEDIA_RET_SUCCESS)
{
dl_media_iou_int_disable();
dl_media_interrupt_disable();
dl_media_callback.cmd_callback = NULL;
return ret;
}
return DL_MEDIA_RET_SUCCESS;
}
DL_MEDIA_RET_T dl_media_host_mjp_display_end()
{
DL_MEDIA_RET_T ret;
DL_MEDIA_IOU_FRAME_T dl_media_frame;
UINT8 *p_buffer = dl_media_host_data.p_buffer;
if (dl_media_host_data.ret != DL_MEDIA_RET_SUCCESS)
return dl_media_host_data.ret;
dl_media_interrupt_disable();
dl_media_iou_int_disable();
dl_media_callback.cmd_callback = NULL;
ret = dl_media_send_cmd(DL_MEDIA_CMD_MJP_FILE_DISPLAY_END, NULL);
if (ret != DL_MEDIA_RET_SUCCESS)
{
dl_media_iou_int_restore();
return ret;
}
//dl_media_delay(50);
ret =dl_media_iou_read_frame((UINT8*)&dl_media_frame);
FATAL_ERROR_TO_RESET(ret);
while(dl_media_frame.type == IOU_FRAME_OFFSET_SIZE)
{
dl_media_host_data.offset = dl_media_frame.value[2]<<16 | dl_media_frame.value[1];
if (dl_media_frame.value[0] == 0)
dl_media_host_data.offsize = dl_media_host_data.offset;
else if (dl_media_frame.value[0] == 1)
dl_media_host_data.offsize += dl_media_host_data.offset;
else if (dl_media_frame.value[0] == 2)
dl_media_host_data.offsize = dl_media_host_data.size - dl_media_host_data.offset;
p_buffer = dl_media_host_data.p_buffer + dl_media_host_data.offsize;
dl_media_host_data.wsize = (dl_media_frame.size_hi << 16) | dl_media_frame.size_low;
if (dl_media_host_data.wsize != 0)
{
#ifndef CHP_BIG_ENDIAN
ret = dl_media_iou_write_data(p_buffer, dl_media_host_data.wsize);
#else
ret = dl_media_iou_write_data_for_big_endian(p_buffer, dl_media_host_data.wsize);
#endif
dl_media_host_data.offsize += dl_media_host_data.wsize;
}
ret =dl_media_iou_read_frame((UINT8*)&dl_media_frame);
FATAL_ERROR_TO_RESET(ret);
}
if (dl_media_frame.type == IOU_FRAME_ARM_RSP)
{
if (dl_media_frame.rsp == RSP_MJPG_PLAY_OVER||
dl_media_frame.rsp == RSP_SUCCESS)
return DL_MEDIA_RET_SUCCESS;
else
return DL_MEDIA_RET_FAIL;
}
return DL_MEDIA_RET_FAIL;
}
DL_MEDIA_RET_T dl_media_host_mp3_play(void *p_buffer, UINT32 length)
{
DL_MEDIA_RET_T ret;
UINT16 fid = 2;
ret =dl_media_chip_patch(PATCH_MP3);
sys_printf("=====dl_media_chip_patch = 0x%x\n",ret);
if(ret) return ret;
#ifndef CHP_BIG_ENDIAN
dl_media_callback.cmd_callback = dl_media_host_handle_rsp;
#else
if(KTV_Play_Flag)
{
dl_media_callback.cmd_callback = dl_media_host_handle_rsp_for_mp4ktv; //hannah
}
else
{
dl_media_callback.cmd_callback = dl_media_host_handle_rsp;
}
#endif
dl_media_host_data.p_buffer = p_buffer;
sys_printf("===length = 0x%x\n",length);
dl_media_host_data.length = length;
dl_media_host_data.ret = DL_MEDIA_RET_SUCCESS;
dl_media_callback.cmd_para = NULL;
dl_media_dac_open();
dl_media_interrupt_enable();
dl_media_iou_int_enable();
ret = dl_media_send_cmd(DL_MEDIA_CMD_MP3_PLAY_FROM_HOST, (void*)&fid);
sys_printf("=====dl_media_send_cmd = 0x%x\n",ret);
if (ret != DL_MEDIA_RET_SUCCESS)
{
dl_media_iou_int_disable();
dl_media_interrupt_disable();
dl_media_callback.cmd_callback = NULL;
return ret;
}
return DL_MEDIA_RET_SUCCESS;
}
DL_MEDIA_RET_T dl_media_host_mp3_pause(void)
{
DL_MEDIA_RET_T ret;
DL_MEDIA_IOU_FRAME_T dl_media_frame;
UINT8 *p_buffer = dl_media_host_data.p_buffer;
if (dl_media_host_data.ret != DL_MEDIA_RET_SUCCESS)
return dl_media_host_data.ret;
dl_media_dac_close();
dl_media_interrupt_disable();
dl_media_iou_int_disable();
ret = dl_media_send_cmd(DL_MEDIA_CMD_MP3_PAUSE, NULL);
if (ret != DL_MEDIA_RET_SUCCESS)
return ret;
ret =dl_media_iou_read_frame((UINT8*)&dl_media_frame);
FATAL_ERROR_TO_RESET(ret);
while(dl_media_frame.type == IOU_FRAME_OFFSET_SIZE)
{
dl_media_host_data.offset = dl_media_frame.value[2]<<16 | dl_media_frame.value[1];
if (dl_media_frame.value[0] == 0)
dl_media_host_data.offsize = dl_media_host_data.offset;
else if (dl_media_frame.value[0] == 1)
dl_media_host_data.offsize += dl_media_host_data.offset;
else if (dl_media_frame.value[0] == 2)
dl_media_host_data.offsize = dl_media_host_data.size - dl_media_host_data.offset;
p_buffer = dl_media_host_data.p_buffer + dl_media_host_data.offsize;
dl_media_host_data.wsize = (dl_media_frame.size_hi << 16) | dl_media_frame.size_low;
if (dl_media_host_data.wsize != 0)
{
#ifndef CHP_BIG_ENDIAN
ret = dl_media_iou_write_data(p_buffer, dl_media_host_data.wsize);
#else
ret = dl_media_iou_write_data_for_big_endian(p_buffer, dl_media_host_data.wsize);
#endif
dl_media_host_data.offsize += dl_media_host_data.wsize;
}
ret =dl_media_iou_read_frame((UINT8*)&dl_media_frame);
FATAL_ERROR_TO_RESET(ret);
}
if (dl_media_frame.type == IOU_FRAME_ARM_RSP)
{
if (dl_media_frame.rsp == RSP_SUCCESS)
return DL_MEDIA_RET_SUCCESS;
else
return DL_MEDIA_RET_FAIL;
}
return DL_MEDIA_RET_FAIL;
}
DL_MEDIA_RET_T dl_media_host_mp3_resume(void)
{
DL_MEDIA_RET_T ret;
dl_media_dac_open();
dl_media_interrupt_enable();
dl_media_iou_int_enable();
ret = dl_media_send_cmd(DL_MEDIA_CMD_MP3_RESUME, NULL);
return ret;
}
DL_MEDIA_RET_T dl_media_host_mp3_stop(void)
{
DL_MEDIA_RET_T ret;
DL_MEDIA_IOU_FRAME_T dl_media_frame;
UINT8 *p_buffer = dl_media_host_data.p_buffer;
if (dl_media_host_data.ret != DL_MEDIA_RET_SUCCESS)
return dl_media_host_data.ret;
dl_media_dac_close();
dl_media_interrupt_disable();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -