원문 출처 : MediaTek On-Line ([FAQ08246] hdmi输出画面每隔一段时间会闪动一次)
이 문제는 hdmitx driver flow 파일 내에 원인이 있는데,
먼저 ioctl을 통해 APP에서 명령을 받아오는 상황에서, 일반적인 flow에 대해 말하자면,
새로 연결된 hdmi cable 에 대한 TV가 이미 준비가 되어있는 상태가 되어야 video config 명령 하윗단이 처리될 수 있다.
이것은 hdmilocalservice와 같은 android 기본 구조 때문인데, 윗단을 고치려면 정말 많은 부분들이 수정되어야 한다.
이러한 명령들이 hdmi로 다시 전달된 이후, 모든 출력이 한 번 실행될 수 있고, 이로인해 한 번의 반찍임 현상이 발생하게 된다.
이런 현상을 막기 위해 다음의 방법을 사용할 수 있다 :
notify 이후 video config 명령이 처리 가능하므로 새로운 hdmi cable 연결이 notify된 이후,
명령이 진행되는 것에 동의하도록 한다. notify함수는 switch_set_state(&hdmi_switch_data, HDMI_STATE_ACTIVE)을 의미하며,
변경값을 적용한 후 video config의 하위 처리가 진행되도록 한다면 해당 문제가 해결된다.
당연히 resolution이 같은 상황은 막고 다를 때에만 막지 않는 방식으로 이 문제를 해결할 수 있다.
당연히 resolution이 같은 상황은 막고 다를 때에만 막지 않는 방식으로 이 문제를 해결할 수 있다.
static unsigned long hdmi_reschange = HDMI_VICEO_RESOLUTION_NUM;
이후 매번 switch_set_state(&hdmi_switch_data, HDMI_STATE_ACTIVE) 이후,
hdmi_reschange = HDMI_VICEO_RESOLUTION_NUM;
이후 MTK_HDMI_VIDEO_CONFIG case 안에서,
if(hdmi_reschange==arg)
{
break;
}
hdmi_reschange = arg;
다시 말하자면 매번 hdmi cable이 끼워진 상태에서 notify APP을 할 때, 지난번의 resolution와 지금의 resolution이 다를 때에만 video config를 처리하도록 한다.
'Android' 카테고리의 다른 글
Simulate HDMI CEC by GPIO (0) | 2018.04.19 |
---|---|
HDMI 연결부의 CEC 신호 (0) | 2018.04.19 |
[MTK][FAQ08263] Introduction to hdmi tx driver flow (0) | 2018.04.17 |