在 play_hwdemux 裏的 main 函數中加入下列程式碼。

1. 宣告 RMuint32 GetBufferError = 0; 。

2. 修改下列程式碼。
原碼:
                while (RUAGetBuffer(pDMA, &buf,  GETBUFFER_TIMEOUT_US) != RM_OK) {

                    switch (play_opt->disk_ctrl_state) {
                    case DISK_CONTROL_STATE_DISABLE:
                    case DISK_CONTROL_STATE_SLEEPING:
                        break;
                    case DISK_CONTROL_STATE_RUNNING:
                        if(play_opt->disk_ctrl_callback && play_opt->disk_ctrl_callback(DISK_CONTROL_ACTION_SLEEP) == RM_OK)
                            play_opt->disk_ctrl_state = DISK_CONTROL_STATE_SLEEPING;
                        break;
                    }
                    PROCESS_KEY(FALSE, TRUE);
                    FILE_PLAYBACK_PID_FILTER(FALSE);
                    RECEIVE_DATA_AND_SAVE_IN_FILE;
                }
修改後:
                while (RUAGetBuffer(pDMA, &buf,  GETBUFFER_TIMEOUT_US) != RM_OK) {

                    switch (play_opt->disk_ctrl_state) {
                    case DISK_CONTROL_STATE_DISABLE:
                    case DISK_CONTROL_STATE_SLEEPING:
                        break;
                    case DISK_CONTROL_STATE_RUNNING:
                        if(play_opt->disk_ctrl_callback && play_opt->disk_ctrl_callback(DISK_CONTROL_ACTION_SLEEP) == RM_OK)
                            play_opt->disk_ctrl_state = DISK_CONTROL_STATE_SLEEPING;
                        break;
                    }
                    if(GetBufferError++ > 50) goto cleanup;
                    PROCESS_KEY(FALSE, TRUE);
                    FILE_PLAYBACK_PID_FILTER(FALSE);
                    RECEIVE_DATA_AND_SAVE_IN_FILE;
                }
                GetBufferError = 0;

3. 完成。


在 play_asf.c 裏的 main 函數中加入下列程式碼。

1. 宣告 RMuint32 GetBufferError = 0; 。

2. 修改下列程式碼。
原碼:
                while(RUAGetBuffer(SendContext.pDMA, &buffer, GETBUFFER_TIMEOUT_US) != RM_OK) {
                    RMbool gotKey;
                    check_prebuf_state(&SendContext, 0);
                    cWait ++;
                    switch (play_opt->disk_ctrl_state) {
                    case DISK_CONTROL_STATE_DISABLE:
                    case DISK_CONTROL_STATE_SLEEPING:
                        break;
                    case DISK_CONTROL_STATE_RUNNING:
                        if(play_opt->disk_ctrl_callback && play_opt->disk_ctrl_callback(DISK_CONTROL_ACTION_SLEEP) == RM_OK)
                            play_opt->disk_ctrl_state = DISK_CONTROL_STATE_SLEEPING;
                        break;
                    }
修改後:
                    gotKey = try_decode_wmapro(&SendContext, FALSE);
                    if (gotKey)  RMDBGLOG((ENABLE, "*************gotkey\n"));
                    PROCESS_KEY(FALSE, (!gotKey));
                }

                while(RUAGetBuffer(SendContext.pDMA, &buffer, GETBUFFER_TIMEOUT_US) != RM_OK) {
                    RMbool gotKey;
                    check_prebuf_state(&SendContext, 0);
                    cWait ++;
                    switch (play_opt->disk_ctrl_state) {
                    case DISK_CONTROL_STATE_DISABLE:
                    case DISK_CONTROL_STATE_SLEEPING:
                        break;
                    case DISK_CONTROL_STATE_RUNNING:
                        if(play_opt->disk_ctrl_callback && play_opt->disk_ctrl_callback(DISK_CONTROL_ACTION_SLEEP) == RM_OK)
                            play_opt->disk_ctrl_state = DISK_CONTROL_STATE_SLEEPING;
                        break;
                    }

                    gotKey = try_decode_wmapro(&SendContext, FALSE);
                    if (gotKey)  RMDBGLOG((ENABLE, "*************gotkey\n"));
                    PROCESS_KEY(FALSE, (!gotKey));
                    if(GetBufferError++ > 50) goto cleanup;
                }
                GetBufferError = 0;
3. OK.

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()