2012-05-21 2 views
3

오류 수정을 사용해야하는 응용 프로그램이 있습니다. 나는 어떤 접근 방식이 가장 합리적인지 불확실하다. 갈대 솔로몬이 가장 인기있는 선택 인 것 같지만 다른 어떤 것이 있는지 알아보기 위해 제 환경을 열거하고 있습니다.반복 스트림에 대한 오류 수정

데이터 손실이 50 %이고 동기화 손실 문제가 발생할 가능성이있는 매우 시끄러운 데이터 스트림이 있습니다. 보낸 사람이 여러 번 데이터를 반복합니다. 수신자는 데이터의 여러 복사본을 읽을 수 있지만 각각 다른 손실이 발생하고 데이터 조각이 누락 될 수 있습니다. 각각의 각 데이터 블록에서 전송으로 인해 어떤 바이트가 손실되었는지를 일반적으로 결정할 수 있지만 오류 수정에는 전체 데이터 블록을 확인하고 수정하는 방법도 포함되어야합니다.

조각이 없다고 말하면 동기화 손실이 발생합니다. 나는 데이터 스트림에서 빠져 나와 나중에 임의의 시점에 다시 들어올 것이다. 어떤 종류의 마커 코드없이 스트림에서 내가 어디에 있는지 알 수있는 방법이 없습니다. 이것들은 나 자신을 추가 할 수 있지만 여기에도 표준 접근법이 있다면 그것은 좋을 것입니다.

리드 솔로몬이가는 길이라면 누군가가 좋은 C++ 구현을 알고 있습니까? 리드 - 솔로몬의

+0

'TCP'에서 어떻게 수행되는지 확인할 수 있습니까? 그게 도움이 되겠습니까? – Default

+0

TCP는 체크섬을 사용하여 문제가 있는지 확인합니다. 실제로 오류 수정을 수행하지는 않습니다 (단순히 패킷을 다시 요청합니다). –

+0

http://openfec.org/ 체크 아웃 얼마나 잘 작동하지 않습니다. – rve

답변

-1

소스 코드 : http://sourceforge.net/projects/rscode/

그러나, 50 %의 데이터 손실 율, 내가 터보 코드를 생각 또는 LDPC은 리드 - 솔로몬보다 더 나은 성능을 제공합니다.

+0

포인터 주셔서 감사합니다. 다른 옵션들을 살펴볼 것입니다. 필자는 전송 당 몇 K 개의 데이터만을 처리하기 때문에 성능이 가장 중요하지 않습니다. 단순성은 아마 여러 번 구현해야 할 수도 있기 때문에 더 중요합니다. –

관련 문제