49 lines
1.9 KiB
Plaintext
49 lines
1.9 KiB
Plaintext
● 🎯 렌더링 파이프라인 진단 및 수정 완료
|
|
|
|
📊 진단 결과
|
|
|
|
주요 문제: AV1 디코더에서 EAGAIN 에러를 실제 실패로 잘못 인식
|
|
|
|
근본 원인:
|
|
1. AV1 특성: AV1 디코더는 프레임을 출력하기 전에 여러 패킷이 필요할 수 있음
|
|
2. EAGAIN 오해석: DAV1D_ERR(EAGAIN)은 "더 많은 데이터 필요" 신호이지 실제 에러가 아님
|
|
3. 불필요한 실패 카운팅: EAGAIN을 실패로 계산하여 50회 후 재생 중단
|
|
|
|
🔧 구현된 수정사항
|
|
|
|
1. AV1Decoder 개선
|
|
|
|
- EAGAIN 상태 추적: m_lastDecodeResult 멤버 변수 추가
|
|
- 상태 확인 메서드: IsWaitingForMoreData() 추가
|
|
- 정확한 구분: 실제 에러 vs. 데이터 대기 상태 구분
|
|
|
|
2. VideoPlayerControl 로직 개선
|
|
|
|
- EAGAIN 감지: AV1Decoder에서 EAGAIN 상태 확인
|
|
- 스마트 카운팅: EAGAIN은 실패로 계산하지 않음
|
|
- 실패 임계값 조정: 실제 에러에 대해서만 10회 제한 적용
|
|
|
|
3. 디버깅 메시지 개선
|
|
|
|
// 기존: 모든 실패를 동일하게 처리
|
|
[CPU_DEBUG] Frame decode failed for frame 2
|
|
|
|
// 개선: EAGAIN과 실제 에러 구분
|
|
[CPU_DEBUG] AV1 decoder waiting for more data (EAGAIN) for frame 2
|
|
[CPU_DEBUG] Frame decode failed for frame 2 // 실제 에러만
|
|
|
|
🚀 예상 효과
|
|
|
|
1. 연속 재생: 두 번째 프레임부터 중단되던 문제 해결
|
|
2. 정확한 에러 처리: 실제 문제와 정상 대기 상태 구분
|
|
3. 안정적 디코딩: AV1의 특성을 고려한 적절한 처리
|
|
|
|
🧪 테스트 권장사항
|
|
|
|
다음 명령어로 개선된 렌더링을 테스트할 수 있습니다:
|
|
# GUI 프로젝트 실행 (Visual Studio에서)
|
|
# 비디오 로드 후 재생 버튼 클릭
|
|
# 로그에서 EAGAIN과 실제 에러 구분 확인
|
|
|
|
보라색 필터 문제는 YUV→RGB 변환과 관련된 별개 이슈로, 실제 테스트 후 필요시 추가 진단할 수 있습니다.
|