디코딩시 죽는 원인들, 깨지는 현상 방지하려면?
글쓴이: nekoko / 작성시간: 수, 2011/05/11 - 10:29오전
네트워크 카메라에서 RTP로 h264 영상을 받아 임베디드 보드에서
재생하는 데까지 성공했습니다.
그런데 몇분 안가서 시스템이 죽어버리는데요
보통 디코딩시 시스템이 죽는 원인에 뭐가 있나요..?
이런 현상은 어떤 식으로 원인을 찾아나가야 하는지요.
그리고 디버깅문을 많이 뿌린다든지 해서 시스템에 부하가
걸리게 하면 (동작이 들어간부분에서) 영상이 종종 깨지기 시작하는데요
이건.. p프레임이 중간에 과부하로 인해 손실되서 그런 것 같은데
맞는지요? 그렇다면 손실 여부를 알 수 있는지, 손실된 경우엔
다음 i프레임까지 p프레임들을 모두 버려야하는지..
이 두가지 문제에 대해 고민 중입니다.
조언 부탁드립니다!
Forums:
디코딩하는 시스템이 죽는 이유는 아래 두 가지가 거의
디코딩하는 시스템이 죽는 이유는 아래 두 가지가 거의 대부분이더라구요.
1. 파서가 역할을 제대로 못할 때(파싱을 잘못해서 영상에 디코딩 할 데이타에 다른 것들이 들어오는 경우)
2. 디코더에 예외 상황을 제대로 처리 못할 때
3. 지원하지 않는 프로파일 데이타가 들어가는 경우
내용을 보니 로그를 많이 남기시는 것 같은데요,, 로그가 많으면 의외로 부하가 큽니다.
아울러 사용하시는 SoC에 따라 다르겠지만, 하드웨어 디코더는 대부분 스팩대로 처리를 해 줍니다.
과부하로 p프레임이 손실된다는건 좀 이해하기 힘드네요. 당연히 과부하는 없애주셔야겠죠.
프레임 seq를 보시고 실제 프레임이 드랍되고 있는지 확인하시구요, 정말 프레임 드랍이 일어난다면 다음 I프레임 까지 스킵하셔야 하는데, 그렇게 만들지 않는게 중요하겠죠.
----------------------------
Let's Do It
감사합니다
답글 감사합니다!
지금.. 죽는게 완전 랜덤인데요. 재생 직후부터 짧게는 5초만에 죽는가 하면
30분이 넘게 시스템이 살아있는 경우도 있으니..
1번은 아니겠죠??
프로파일도 지원하는 거구요..
지금 RTP 수신은 LiveMedia 를 쓰고 있습니다.
지금 2번 예외상황들로 추측되는 것들을 살펴보고 있는데요
1. RTP 수신할 때 패킷 reordering이 잘 되고 있는지
2. 패킷 손실시 어떻게 처리하고 있는지
요렇게요..
그런데 RTP 라이브러리를 거쳐 나온 h264 프레임에서 프레임 seq는 어떻게 확인해야 하나요..?
보통 순서가 SPS - PPS - coded slice - coded slice - ... 이런 식이던데..
(RTP라이브러리를 거친 후에도 h264 프레임 seq 순서가 뒤바뀔 수도 있나요?)
"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011
댓글 달기