본문 바로가기
프로그래밍

[영상처리] iFrame 관련 이슈(프레임 깨짐 현상)

by YuminK 2022. 3. 30.

영상 데이터를 보낼 때 모든 픽셀 정보를 하나씩 처리해서 데이터를 보내지 않는다. 데이터가 너무 커져서 그런 방식은 사용하지 않고 iFrame과 pFrame의 개념을 이용하는데 iFrame은 하나의 완성된 장면을 가지고 있고 pFrame은 이진 데이터로서 움직임에 따른 장면만 가지고 있다고 한다.

이런 상태면 영상 데이터의 크기를 획기적으로 줄일 수 있게 된다. pFrame은 앞선 frame 정보를 토대로 자신의 정보를 복구하기 때문에 이전 frame의 정보가 보존이 되어야 한다는 특징이 있다.

iFrame의 경우에는 완성된 그림이므로 이전 Frame의 영향을 받지 않는다.

기존 로직에서는 영상 데이터에 iFrame 정보가 들어오면 이전에 쌓인 Frame 정보를 버리고 영상을 그려주는 처리를 해주고 있다. 또한 데이터가 너무 많이 쌓이는 경우에는 이전에 데이터를 날리고 있었는데 ... 바로 이 시점에서 문제가 발생한 것이었다. (TCP 프로토콜을 사용하여 영상 데이터를 받고 있었다.)

영상 데이터가 쌓인다 -> 너무 많은 데이터가 쌓이므로 날린다. -> pFrame

pFrame의 특성상 복구를 하려면 이전 데이터가 필요한데 이전 데이터를 정보가 없는 상태에서 복구한 영상을 뿌리니 화면이 일그러지는 현상이 일어났다.

이런 느낌

한번 일그러진 데이터가 다시 복구가 되려면 iFrame 정보가 들어와서 이전 데이터를 날려야 하는데 ... 영상 데이터에 iFrame 정보가 제대로 들어오지 않고 있으니 뭉개진 화면을 7~8초가량 계속 보게 되는 것이다.

일단 네트워크가 구린 환경이 아니라면 쌓인 영상 데이터를 버리는 문제가 잘 인식이 되지 않는다.

주로 iFrame 정보가 넘어오니까 이런 현상이 보이지 않았을 것이다.

아무튼, 수정된 부분은... n 프레임만큼 데이터가 쌓이는 상황이라면 iFrame을 서버로부터 요청한다. 그러면 서버에서 iFrame 정보를 줄 것이고 이전 데이터를 정리하면서 정상적으로 출력이 된다.

만약의 상황을 대비하여 n * 2 프레임만큼 데이터가 쌓인다면(iFrame이 들어오지 않은 경우, 서버가 맛이 간 경우) 임의로 데이터를 날리되 영상을 갱신하지는 않는다.

영상 데이터가 밀리다가 프레임이 박살 나는 현상 -> 영상 데이터가 밀리지만 끊기는 정도에서 마무리

댓글