상기 목적을 달성하기 위하여 본 발명의 실시예에 따른 데이터 전송 방법은, 무선 네트워크로 전송할 데이터를 소정 단위 별로 인코딩하여 상기 전송할 데이터의 오류를 복구하기 위한 정보가 부가된 송신 데이터를 제공하는 단계, 상기 송신 데이터를 상기 무선 네트워크로 전송하는 단계, 및 상기 송신 데이터의 전송 성공으로 인한 전송 성공률을 계산한 결과가 상기 송신 데이터의 에러 복구율에 의해 결정된 임계값 이상인 경우, 상기 송신 데이터 중에서 미전송된 송신 데이터의 전송을 중지하고 다음 단위에 대한 송신 데이터를 전송하는 단계를 포함한다.
상기 목적을 달성하기 위하여 본 발명의 실시예에 따른 무선 네트워크에서의 데이터 전송 장치는, 무선 네트워크로 전송할 데이터를 소정 단위 별로 인코딩하여 상기 전송할 데이터의 오류를 복구하기 위한 정보가 부가된 송신 데이터를 제공하는 비디오 데이터 처리부, 상기 송신 데이터를 상기 무선 네트워크로 전송하는 송신부, 및 상기 송신 데이터의 전송 성공으로 인한 전송 성공률을 계산한 결과가 상기 송신 데이터의 에러 복구율에 의해 결정된 임계값 이상인 경우, 상기 송신 데이터 중에서 미전송된 송신 데이터의 전송을 중지하고 다음 단위에 대한 송신 데이터를 전송하는 판단부를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다
이하, 본 발명의 실시예들에 의하여 무선 네트워크에서의 데이터 전송 방법 및 장치를 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때 로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 본 발명의 제 1 실시예에 따른 비디오 송신 장치(100)의 구성을 보여주는 예시도이다.
본 실시예에서 사용되는 '~부'라는 용어, 즉 '~모듈' 또는 '~테이블' 등은 소프트웨어, FPGA(Field Programmable Gate Array) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)와 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 기능들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
도시된 비디오 송신 장치(100)는 입력부(110), 프레임 분류부(120), 비디오 데이터 처리부(130), 송신부(140), 계산부(150), 판단부(160), 저장부(170), 제어부(180) 및 수신부(190)를 포함한다.
입력부(110)는 MPEG과 같은 비디오 데이터를 입력받는다.
프레임 분류부(120)(Frame separator)는 입력부(110)를 통해 입력된 비디오 데이터를 프레임별로 분류한다. 예를 들면, MPEG 비디오 데이터는 I 프레임, B 프레임, P 프레임으로 분류될 수 있다. 이 경우, 각 프레임 데이터가 MPEG TS (Transport Stream)패킷으로 나누어질때 프레임 분류부(120)(Frame separator)는 각 TS 패킷마다 I/P/B 프레임 타입을 표시해 둔다.
비디오 데이터 처리부(130)는 입력부(110)를 통해 입력된 비디오 데이터를 처리한다. 도 2는 비디오 데이터 처리부(130)의 구성을 보다 상세히 도시한 블럭도이다.
도시된 비디오 데이터 처리부(130)는, 코더(coder; 131), 인터리버(interleaver; 132) 및 전송 패킷타이저(packetizer; 133)를 포함할 수 있다.
코더(131)는 FEC(Forward Error Correction) 방식에 따라 프레임 데이터를 코딩한다. FEC는 프레임 데이터에 일정 크기의 데이터를 부가하고, 이 부가된 데이터를 통해 유실되거나 오류가 발생한 데이터를 복구할 수 있도록 하는 것을 말한다. FEC 방식에 따른 코딩 알고리즘으로는 리드-솔로몬 코딩 알고리즘(Reed-Solomon Coding), 비터비(Viterbi) 알고리즘 예로 들 수 있다.
리드-솔로몬 알고리즘을 사용하는 경우, 실제 데이터의 크기가 K byte이며, 인코딩된 데이터가 N byte인 경우 인코딩율은 RS(N, K)로 나타낼 수 있다. 여기서, 코딩에 따라 부가된 데이터의 크기 R은 N-K 이다. 리드-솔로몬 알고리즘에서, 발생한 에러의 크기가 R/2 보다 작은 경우에는 데이터를 복구할 수 있다. 즉, R의 크기 를 크게 할수록 에러를 복구할 수 있는 범위가 증가한다. 그러나 R을 크게 하기 위해서는 N을 크게 해야하며, 이는 전송할 데이터의 크기가 많아짐을 의미한다.
코더(131)는 인코딩시 부가되는 데이터 즉, 오류를 복구할 수 있는 데이터의 크기는 프레임의 중요도에 따라 차등적으로 부가될 수 있다. 예를 들면, 코더(131)는 다른 프레임에 비해 I 프레임에 보다 많은 복구 데이터를 부가할 수 있다. 왜냐하면, I 프레임은 B 프레임과 P 프레임이 참조하는 프레임이기 때문에, I 프레임에 오류가 발생하면 이를 참조하는 B 프레임과 P 프레임에도 오류가 발생하기 때문이다.
또한, 코더(131)는 무선 네트워크의 상황에 따라 데이터를 인코딩하는 방식을 조절할 수 있다. 예를 들어, 전송된 패킷에서의 에러 발생률이 적을 경우, 코더(131)는 인코딩시 부가하는 데이터의 양을 줄일 수 있다. 또는 I 프레임에만 복구 데이터를 부가하고, P 프레임에는 복구 데이터를 부가하지 않도록 인코딩 방식을 변경할 수 있다.
인터리버(132)는, 코딩된 프레임 데이터를 인터리빙한다. 여기서, 인터리빙(interleaving)이란, 각각의 패킷을 여러 개의 블록(block)으로 나누어서, 다른 패킷들의 블록들과 통합하여 새로운 패킷으로 만드는 것을 의미한다. 즉, 도 2와 같이, 210, 220, 230, 240 패킷으로 인코딩된 프레임 데이터를 여러 개의 블록으로 나누어, 211 패킷에 210, 220, 230 및 240 패킷의 일부를 저장하고, 212, 213, 214 패킷들에도 마찬가지로 일부를 저장한다. 이와 같이 인터리빙을 수행하면, 패킷 전송시 패킷 단위로 에러가 발생하더라도, 에러가 발생한 패킷으로 인해 프레임 또는 비디오 데이터가 전부 소실되는 것을 방지할 수 있다.
좀 더 구체적으로, 도 2에서, 인터리빙을 수행하지 않고 패킷 전송했을 때, 210 패킷이 유실된다면, 210 패킷이 가지고 있는 프레임의 특정 데이터가 모두 유실된다. 인터리빙을 수행한 후 패킷을 전송하면, 211 패킷이 유실되더라도, 210, 220, 230 및 240 패킷의 일부가 유실되는 것이다. 즉, 211 패킷 유실로 인한 에러가 다른 패킷들(220, 230, 240)로 분산되기 때문에 프레임 또는 비디오 데이터가 전부 소실되는 경우를 막을 수 있다. 또한, 리드-솔로몬 알고리즘에 따르면, 각 프레임 데이터에서 발생한 에러의 크기가 R/2보다 작은 경우에는 FEC에 의해 유실된 데이터를 복구할 수 있다.
한편, 코딩된 데이터가 인터리빙될 때, 인터리빙 블록의 크기는 무선 네트워크의 상태에 따라 조절될 수 있다. 예를 들어, 무선 네트워크의 에러 발생율이 높은 경우, 인터리버(132)는 인터리빙 블록의 크기를 작게 설정할 수 있다. 반대로, 무선 네트워크의 에러 발생율이 낮은 경우, 인터리버(132)는 인터리빙 블록의 크기를 크게 설정할 수 있다.
전송 패킷타이저(133)는, 인터리빙된 프레임 데이터를 여러 개의 패킷으로 분리하고, 각 패킷의 헤더 부분에 순차 번호를 추가하는 역할을 한다. 순차 번호는, 후술할 비디오 수신 장치(400)가 수신된 데이터를 정렬하는데 사용된다. 즉, 비디오 송신 장치(100)에서 패킷이 전송된 순서와 비디오 수신 장치(400)로 패킷이 수신된 순서가 다를 경우, 비디오 수신 장치(400)는 순차 번호를 이용하여 패킷을 정렬한다.
한편, 인터리빙된 데이터가 패킷타이징될 때, UDP 패킷의 크기는 무선 네트워크의 상태에 따라 조절될 수 있다. 예를 들어, 무선 네트워크의 에러 발생율이 높은 경우에는 UDP 패킷의 크기를 줄일 수 있다. 반대로 데이터 전송률이 낮은 경우에는 UDP 패킷의 크기를 증가시킬 수 있다.
송신부(140)는 패킷을 중요도에 따라 구분하여 전송한다. 이를 위해 송신부(140)는 복수의 우선순위 큐를 포함할 수 있다. 즉, 표시된 프레임 타입에 따라 서로 다른 우선순위 큐에 저장된 후, 비디오 수신 장치(400)로 전송된다.
한편, 송신부(140)는 미리 정해진 전송 파라미터에 따라 패킷을 전송한다. 전송 파라미터로는 전송에 실패한 패킷을 재전송하는데 필요한 재전송 횟수(Retry limit), 데이터 전송률 및 한번에 전송할 수 있는 데이터의 최대 크기(Maximum Transfer unit; MTU) 등을 예로 들 수 있다. 이러한 전송 파라미터는 무선 네트워크의 상황에 따라 조절될 수 있다. 좀 더 구체적으로, 무선 네트워크의 에러 발생율이 높은 경우에는 MTU를 줄일 수 있다. 반대로 에러 발생율이 낮은 경우에는 MTU를 증가시킬 수 있다.
계산부(150)는, 송신부(140)를 통해 패킷이 전송되면, 전송된 패킷을 포함하는 프레임에 대한 패킷 전송 성공률을 계산한다. 예를 들어, 송신부(140)를 통해 I 프레임을 구성하는 패킷이 전송되었다면, I 프레임을 구성하는 전체 패킷 중에서 성공적으로 전송된 패킷의 비율을 계산한다. 그리고 이에 대한 정보를 후술될 판단부(160)로 제공한다.
판단부(160)는, 계산부(150)로부터 제공받은 패킷 전송 성공률이 임계값 이 상인지를 판단하고, 판단 결과에 따라 패킷 전송을 제어한다. 즉, 해당 패킷을 포함하는 프레임 데이터의 패킷 전송을 완료하고 다음 프레임 데이터의 패킷을 전송거나, 전송시 실패한 패킷을 재전송한다. 보다 구체적인 설명은 도 6을 참조하여 후술하기로 한다.
저장부(170)는 제1 저장부(미도시)와 제2 저장부(미도시)를 포함한다.
제1 저장부는, 인코딩율, 인터리빙 블록 크기, UDP 패킷 크기, 및 패킷 전송과 관련된 전송 파라미터 예를 들면, 데이터 전송률, MTU 및 재전송 회수에 대한 정보를 저장한다.
삭제
또한, 제1 저장부는, 인코딩율에 따른 에러 복구율 및 패킷 전송 성공률에 대한 임계값을 저장한다. 표 1과 같이 테이블화 되어 저장될 수 있다.
표 1은 리드-솔로몬 코딩 알고리즘을 적용한 경우, 인코딩율에 따른 에러 복구율 및 패킷 전송 성공률에 대한 임계값을 나타낸 것이다.
인코딩율 RS(N, K) |
에러 허용 개수 (N-K) |
에러 복구율 {(N-K)/2}*(100/N) |
패킷 전송 성공률에 대한 임계값 (100-에러 복구율) |
RS(255, 95) |
80 |
31.4% |
68.6% |
RS(255,127) |
64 |
25% |
75% |
RS(255,191) |
32 |
12.5% |
87.5% |
RS(255,223) |
16 |
6.27% |
93.73% |
RS(255,239) |
8 |
3.14% |
96.86% |
표 1을 참조하면, I 프레임이 RS(255,127)의 인코딩율로 인코딩된 경우(단위, byte), 패킷 전송 성공률에 대한 임계값은 75% 임을 알 수 있다. 이는, I 프레임이 전송 패킷타이저(133)에 의해 12개의 패킷으로 나누어진 경우, 9개 이상의 패킷이 성공적으로 전송되어야 비디오 수신 장치(400)에서 데이터를 복구할 수 있음을 의미한다.
한편, 제2 저장부는 패킷 전송시, 전송에 실패한 패킷을 저장한다. 이러한 저장부(170)는 ROM(Read Only Memory), PROM(Programable ROM), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래쉬 메모리(Flash memory)와 같은 비휘발성 메모리 소자 또는 RAM(Random Access Memory)과 같은 휘발성 메모리 소자 또는 하드디스크 드라이브(Hard Disk Drive; HDD)와 같은 저장 매체 중 적어도 하나로 구현될 수 있으나 이에 한정되지는 않는다.
수신부(190)는 후술될 비디오 수신 장치(400)로부터 무선 네트워크 상태 정보를 수신한다. 무선 네트워크의 상태 정보에는 패킷 전송률, 에러 발생율에 대한 정보가 포함될 수 있다. 수신부(190)로 수신된 무선 네트워크 상태 정보는 제어부(180)로 제공된다.
제어부(180)는 무선 네트워크의 환경에 따라 비디오 송신 장치(100) 내의 다른 구송 요소들을 제어하는 역할을 한다. 예를 들면, 제어부(180)는 송신부(140)를 제어하여 데이터 전송률, 최대 전송 유닛(Maximum Transfer Unit)의 크기를 조절한다. 좀 더 구체적으로, 802.11a의 경우, 54Mbps, 48Mbps, 36Mbps, 24Mbps, 11Mbps 등의 다양한 데이터 전송률을 제공하는데, 무선 네트워크의 에러 발생율이 낮은 경우, 제어부(180)는 데이터 전송률을 54Mbps로 설정한다. 이에 비해 무선 네트워크의 에러 발생율이 높은 경우에는 데이터 전송률을 54Mbps 보다 낮게 설정한다.
또한, 제어부(180)는 무선 네트워크의 상태에 따라 제2 저장부에 저장된 데이터 즉, 전송 실패한 패킷의 재전송 횟수를 적응적으로 설정한다. 예를 들어, 무선 네트워크의 에러 발생율이 높은 경우, 제어부(180)는 패킷 재전송 횟수를 크게 설정한다. 반면, 무선 네트워크의 에러 발생율이 낮은 경우에는 재전송 횟수를 낮게 설정한다. 또한, 제어부(180)는, 데이터의 중요도에 따라, 재전송 횟수를 적응적으로 설정할 수 있다. 다시 말해, 중요도가 높은 데이터, 예를 들면 I 프레임이 유실될 경우 다른 프레임에 영향을 미칠 수 있으므로 재전송 횟수를 높게 설정할 수 있다. 반면 B 프레임의 경우는 유실되어도 다른 프레임에 크게 영향을 미치지 않으므로 재전송 횟수를 낮게 설정할 수 있다.
도 3은 본 발명의 실시예에 따른 비디오 송신 장치(100) 내에서의 데이터 흐름을 도시한 것이다.
도 3을 참조하면, 입력부(110)를 통해 입력된 비디오 데이터는 프레임 분류부(120)에 의해 프레임별로 분류된다. 예를 들어, MPEG 비디오 데이터의 경우, I, B, P 프레임으로 분류된다. 이 후, 분류된 프레임 데이터가 MPEG TS(Transport Stream) 패킷으로 나누어질 때, 각 TS 패킷에는 해당 프레임 타입이 표시된다.
이 후, 해당 프레임 타입이 표시된 TS 패킷은 인코더(131)에 의해 미리 정해진 인코딩율에 의해 인코딩된다. 즉, 각 프레임 타입의 중요도에 맞게끔 설정된 인코딩율에 따라 인코딩된다.
이렇게 인코딩된 데이터는 무선 네트워크의 상황에 맞게끔 설정된 인터리빙 블록 크기에 맞추어 여러 개의 블록으로 나누어진 다음 서로 섞이게 된다.
인터리빙된 프레임은 전송 패킷타이저(133)에 의해 순차번호가 부가되어 패킷으로 분류된 후, 송신부(140)를 통해 비디오 수신 장치(400)로 전송된다. 패킷 전송시, 해당 프레임에 대한 패킷 전송 성공률이 임계값 이상인 경우에는 해당 프레임에 대한 패킷 전송이 종료되고, 다음 프레임의 패킷이 전송된다. 또한, 패킷 전송시, 전송 실패한 패킷은 제2 저장부에 저장된다. 제2 저장부에 저장된 패킷들은, 해당 프레임에 대한 패킷 전송률이 미리 지정된 임계값 이하이고, 프레임 단위로의 전송이 완료된 경우, 송신부(140)를 통해 재전송된다.
다음으로, 도 4는 본 발명의 제 1 실시예에 따른 비디오 수신 장치(400)의 구성을 도시한 블록도이다.
도시된 비디오 수신 장치(400)는, 수신부(410), 패킷 정렬부(420), 비디오 데이터 처리부(430), 출력부(440) 정보 수집부(450) 및 송신부(460)를 포함한다.
수신부(410)는 무선 네트워크를 통해 비디오 송신 장치(100)에서 송신된 패킷 및 재전송된 패킷을 수신한다. 이 때, 수신된 패킷들은 프레임 타입에 따라 별도의 큐에 저장된다.
패킷 정렬부(420)(packet sorter)는 수신된 패킷의 헤더에 포함된 순차번호를 참조하여, 순차적으로 수신되지 않은 패킷을 정렬한다. 이때 정렬하는 방법은 복수의 프레임 큐(미도시)에서 패킷을 하나씩 가져와서 가장 작은 순차번호를 가지는 패킷을 시퀀스 큐(미도시)에 저장한다. 그 다음 선택된 패킷이 나온 프레임 큐로부터 다음 패킷을 가져와서 다시 가장 작은 순차번호를 비교한다. 이러한 과정을 각 프레임 큐가 비게 될 때까지 되풀이 하여 수신된 패킷을 정렬한다.
비디오 데이터 처리부(430)는 패킷 정렬부(420)에 의해 정렬된 패킷을 처리하여 비디오 데이터를 재생하는 역할을 한다. 좀 더 구체적으로, 비디오 데이터 처리부(430)는, 디-패킷타이저(431), 디-인터리버(432) 및 디코더(433)를 포함한다.
디-패킷타이저(431)는 수신된 패킷을 조합하여 프레임 데이터를 생성한다. 이 때, 디-패킷타이저(431)는 패킷의 헤더에 포함되어 있는 정보 즉, 코딩된 데이터의 크기 및 순차번호를 이용하여 드랍된 패킷을 찾아내고, 드랍된 패킷의 크기만큼 더미 데이터(dummy data)를 채워 프레임 데이터를 생성한다.
디-인터리버(432)는, 디-패킷타이저(431)에 의해 생성된 프레임 데이터를 디-인터리빙(de-interleaving)한다. 이와 같이, 디-인터리빙을 하면, 더미 데이터가 프레임 전체로 분산되므로, 손실된 패킷으로 인해 프레임의 특정 부분의 데이터가 전부 소실되는 것을 막을 수 있다.
디코더(433)는, 디인터리빙된 프레임 데이터를 디코딩한다. 즉, 비디오 송신 장치(100)에서 에러 복구를 위해 부가한 복구 정보를 이용하여 원래의 비디오 데이터를 추출한다.
비디오 출력부(440)는 비디오 데이터 처리부(430)에 의해 처리된 비디오 데이터를 출력한다.
정보 수집부(450)는 디코딩된 후의 에러 발생율 등과 같은 무선 네트워크 상태 정보를 수집한다.
송신부(460)는 정보 수집부(450)에 의해 수집된 무선 네트워크 상태 정보를 비디오 송신 장치(100)로 송신하는 역할을 한다.
도 5는 본 발명의 실시예에 따른 비디오 수신 장치(400) 내에서의 데이터 흐름을 도시한 것이다.
도 5를 참조하면, 비디오 송신 장치(100)에서 전송된 패킷은 비디오 수신 장치(400)의 수신부(410)로 수신된다. 이 때, 수신부(410)로는 비디오 수신 장치(400)에서 복구 가능한만큼의 패킷이 수신된다. 수신된 패킷들은 패킷 정렬부(420)에 의해 차례대로 정렬된다. 이 후, 디-패킷타이저(431)에 의해 드랍된 패킷의 위치에, 해당 패킷의 크기만큼의 더미 데이터가 채워져 프레임 데이터가 생성되면, 프레임 데이터는 디-인터리버(432)에 의해 디-인터리빙된다. 디-인터리빙된 프레임은 디코더(433)에 의해 디코딩된 후, 비디오 출력부(440)를 통해 출력된다.
다음으로 도 6 및 도 7을 참조하여 본 발명의 제 1 실시예에 따른 데이터 송수신 방법에 대해서 설명하기로 한다.
도 6은 본 발명의 실시예에 따른 비디오 송신 장치(100)에서의 작업 처리 과정을 도시한 흐름도이다.
먼저, 제어부(180)는 수신부(190)를 통해 비디오 수신 장치(400)로부터 무선 네트워크의 상태 정보를 수신한다(S601). 여기서, 무선 네트워크의 상태 정보에는 패킷 전송률, 에러 발생율 등의 정보가 포함될 수 있다. 제어부는 수신된 무선 네트워크의 상태 정보에 따라 비디오 데이터 처리에 필요한 각종 파라미터 및 데이터 송신에 필요한 전송 파라미터를 설정한다.
이 후, 비디오 입력부(110)를 통해 입력된 비디오 데이터는 프레임별로 분류된다(S602). 예를 들어, MPEG 비디오 데이터의 경우, I, B, P 프레임으로 분류된다. 타입별로 분류된 프레임 데이터 TS 패킷으로 나누어진 후, 비디오 처리부에 의해 코딩, 인터리빙, 그리고 패킷타이징 된다(S603). 이 때, I/P/B 프레임 타입의 중요도에 맞게끔 제어부(180)에 의해 설정된 인코딩율(encoding rate), 인터리빙 블록 크기(interleaving block size), UDP 패킷 크기(UDP packet size)가 적용된다. 예를 들면, I 프레임은 중요도가 가장 높으므로, 다른 프렘임에 비해 높은 인코딩율로 인코딩될 수 있다.
한편, 비디오 프레임뿐만 아니라, 시스템에 관한 정보와 헤더, 오디오 TS 패킷도 전달이 되는데, 이 중에서 시스템 정보와 헤더는 I 프레임과 같은 중요도로 처리되어 코딩될 수 있다. 그리고 오디오 TS 패킷은 각 I/P/B 프레임에 포함되어 같이 인코딩될 수 있다.
패킷으로 만드는 과정인 패킷타이징까지 끝난 패킷은 송신부(140)를 통해 비디오 수신 장치(400)로 전송된다(S604). 이 때, 전송에 실패한 패킷들은 제2 저장부에 별도로 저장된다(S611).
한편, 송신부(140)를 통해 패킷이 전송되면, 계산부(150)는 해당 패킷을 포함하는 프레임에 대한 패킷 전송 성공률을 계산하여, 판단부(160)로 제공한다. 예를 들어, 전송된 패킷이 I 프레임의 패킷이라면(S610), 계산부(150)는 I 프레임에 대한 패킷 전송 성공률(즉, I 프레임을 구성하는 전체 패킷 중 성공적으로 전송된 패킷의 비율)을 계산하여, 판단부(160)로 제공한다.
판단부(160)는 계산부(150)로부터 제공받은 패킷 전송 성공률이 임계값 이상인지를 판단한다(S620). 예를 들어, I 프레임이 RS(255, 127)의 인코딩율로 인코딩된 경우, 판단부(160)는 계산부(150)로부터 제공받은 패킷 전송 성공률이 75%인지를 판단한다. 좀 더 구체적으로, I 프레임이 12개의 패킷으로 패킷타이징된 경우, 판단부(160)는 9개 이상의 패킷이 성공적으로 전송되었는지를 판단한다.
판단 결과, 패킷 전송 성공률이 임계값 이상이라면(S620, 예), 판단부(160)는 이를 송신부(140)에 알려 해당 프레임의 패킷 전송이 중지되고(S621), 다음 프레임의 패킷 전송될 수 있도록 한다(S622). 예를 들어, I 프레임에 대한 12개의 패킷 중 첫 번째 패킷부터 아홉 번째 패킷까지 모두 성공적으로 전송되었다면, 판단부(160)는 I 프레임에 대한 패킷 전송이 중지되고, 다음 프레임 예를 들면, B 프레임의 패킷이 전송될 수 있도록 한다. 만약, 제2 저장부에 1차 전송에 실패한 패킷들이 저장되어 있는 경우, 판단부(160)는 저장된 패킷들이 폐기될 수 있도록 한다(S621).
판단 결과, 패킷 전송 성공률이 임계값 이하라면(S620, 아니오), 판단부(160)는 전송된 패킷이 해당 프레임의 마지막 패킷인지를 판단한다(S630). 즉, 해당 프레임의 패킷이 모두 전송되었는지를 판단한다.
판단 결과, 해당 프레임의 패킷이 모두 전송되지 않은 경우(S630, 아니오), 판단부(160)는 해당 프레임의 다음 패킷이 송신부(140)를 통해 전송될 수 있도록 한다(S604). 예를 들어, I 프레임에 대한 패킷 중, 첫 번째 패킷부터 일곱 번째 패킷이 모두 성공적으로 전송된 경우, 패킷 전송 성공률은 75% 이하이고, I 프레임의 패킷이 모두 전송된 것이 아니므로, 판단부(160)는, 다음 패킷 즉, I 프레임의 여덟 번째 패킷이 전송될 수 있도록 한다.
판단 결과, 해당 프레임의 패킷이 모두 전송된 경우(S630, 예), 판단부(160)는 제2 저장부에 저장되어 있는 패킷 즉, 최초 전송시, 전송에 실패한 패킷이 재전송될 수 있도록 한다(S650). 예를 들면, I 프레임에 대한 12개의 패킷 중, 총 8개의 패킷이 성공적으로 전송된 상태에서 열두 번째 패킷을 전송한 결과, 전송에 실패한 경우, 패킷 전송 성공률은 75% 이하이고, I 프레임의 패킷이 모두 전송된 상태이므로, 판단부(160)는, 제2 저장부에 저장되어 있는 4개의 패킷 중 하나가 재전송될 수 있도록 한다. 이 때, 재전송되는 패킷들은 먼저 저장된 순서대로 재전송되거나 임의의 순서대로 재전송될 수 있다.
또한, 재전송되는 패킷의 데이터 전송률은 초기 데이터 전송률에 비해 낮게 설정되는 것이 바람직하다(S640). 예를 들어, 초기 데이터 전송률이 54Mbps였다면, 재전송되는 패킷은 24Mbps의 데이터 전송률로 전송되는 것이 바람직하다. 이와 같이, 재전송되는 패킷의 데이터 전송률을 초기 데이터 전송률에 비해 낮게 설정하므로써, 재전송되는 패킷의 전송 성공률을 높일 수 있다.
이와 같이, 패킷이 재전송되면, 판단부(160)는 패킷 전송 성공률이 임계값 이상이 되었는지를 다시 판단한다(S660).
판단 결과, 패킷 전송 성공률이 임계값 이상이라면(S660, 예), 판단부(160)는 제2 저장부에 저장되어 있는 패킷이 모두 폐기될 수 있도록 한다(S661). 그리고, 다음 프레임의 패킷이 전송될 수 있도록 한다(S662). 예를 들어, 제2 저장부에 저장된 4개의 패킷 중 하나의 패킷을 재전송한 결과, 성공적으로 전송된 경우, 12개의 패킷 중 9개의 패킷이 성공적으로 전송되었으므로, 패킷 전송 성공률이 75%가 된다. 이는, 비디오 수신 장치(400)에서는 9개의 패킷을 이용하여 I 프레임을 복구할 수 있음을 의미한다. 따라서, 판단부(160)는 제2 저장부(170)에 저장되어 있는 네 개의 패킷이 폐기될 수 있도록 한 다음, 다음 프레임 예를 들면, B 프레임의 패킷이 전송될 수 있도록 한다.
판단 결과, 패킷 전송 성공률이 임계값 이하라면(S660, 아니오), 판단부(160)는 해당 패킷이 지정된 재전송 횟수만큼 재전송되었는지를 판단한다(S670).
판단 결과, 지정된 재전송 횟수만큼 재전송되지 않은 경우(S670, 아니오), 판단부(160)는 해당 패킷이 지정된 횟수만큼 재전송될 수 있도록 한다(S671). 예를 들어, 제어부(180)에 의해 재전송 횟수가 3회로 설정된 경우, 판단부(160)는 1차 재전송된 패킷이 송신부(140)를 통해 3차까지 재전송될 수 있도록 한다.
판단 결과, 지정된 재전송 횟수만큼 재전송이 이루어진 경우(S670, 예), 판단부(160)는 해당 패킷이 폐기되도록 하거나, 별도로 저장되도록 한 후, 제2 저장부에 저장된 패킷 중에서 다른 패킷을 재전송한다(S650). 그리고, 전술한 단계(S650 내지 S671)를 반복한다.
도 7은 본 발명의 실시예에 따른 비디오 수신 장치(400)에서의 작업 처리 과정을 도시한 흐름도이다.
비디오 수신 장치(400)의 수신부(410)는 비디오 송신 장치(100)로부터 복구 가능한만큼의 패킷을 수신한다(S710). 이 후, 패킷 정렬부(420)는 수신된 패킷들을 차례대로 정렬한다(S720). 이 후, 디-패킷타이저(431)는 드롭된 패킷의 위치에 드롭된 패킷의 크기에 해당하는 더미 데이터를 채워 프레임 데이터를 생성한다(S730). 프레임 데이터가 생성되면, 디-인터리버(432)에 의해 디-인터리빙된 다음, 디코더(433)에 의해 디코딩된 후, 비디오 출력부(440)를 통해 표시된다(S740).
한편, 비디오 수신 장치(400)의 정보 수집부(450)는 디코딩된 데이터로부터 얼마만큼의 에러가 발생하였는지를 계산하여 무선 네트워크의 상태 정보를 생성한다. 그리고, 송신부(460)을 통해 이 상태 정보를 비디오 송신 장치(100)로 송신한다(S750).
다음으로, 도 8 및 도 9를 참조하여 본 발명의 제 2 실시예에 따른 비디오 송신 장치(800)의 구성 및 작업 처리 과정에 대해서 설명하기로 한다.
여기서, 도 8은 본 발명의 제 2 실시예에 따른 비디오 송신 장치(800)의 구성을 도시한 블록도이며, 도 9는 본 발명의 제 2 실시예에 따른 비디오 송신 장치(800)의 작업 처리 과정을 도시한 흐름도이다.
본 발명의 제 2 실시예에 따른 비디오 송신 장치(800)는 다음을 제외하고는 전술한 제 1 실시예에 따른 비디오 송신 장치(100)의 구조와 동일하다.
즉, 계산부(850)는 송신부(890)를 통해 전송된 패킷이 전송에 실패한 경우(S910, 아니오), 전송에 실패한 패킷을 포함하는 프레임에 대한 패킷 전송 실패율을 계산한다. 그리고 이를 판단부(860)로 제공한다. 예를 들어, I 프레임에 대한 패킷이 전송에 실패한 경우, 계산부(850)는 I 프레임에 대한 패킷 전송 실패율(즉, I 프레임을 구성하는 전체 패킷 중 전송에 실패한 패킷의 비율)을 계산하여 판단부(860)로 제공한다.
판단부(860)는 계산부(850)로부터 제공받은 패킷 전송 실패율이 에러 복구율 이상인지를 판단하고(S911), 판단 결과에 따라 전송에 실패한 패킷이 제2 저장부(미도시)에저장되거나(S912), 폐기되도록 한다(S913).
좀 더 구체적인 설명을 위해 I 프레임이 RS(255, 127)의 인코딩율로 인코딩되어, 16개의 패킷으로 패킷타이징된 경우를 예로 들어 설명하기로 한다.
I 프레임에 대한 16개의 패킷 중, 첫 번째 패킷을 전송한 결과, 전송에 실패한 경우, 계산부(850)는 첫 번째 패킷의 전송 실패로 인한 패킷 전송 실패율을 계산한다. 이 경우 패킷 전송 실패율은 약 6%이다.
이 후, 판단부(860)는 계산부(850)에서 제공된 패킷 전송 실패율이 에러 복구율 이상인지를 판단한다(S911). 즉, 패킷 전송 실패율이 25% 이상인지를 판단한다.
판단 결과, 패킷 전송 실패율이 25% 이하이므로(S911, 아니오), 판단부(860)는 첫 번째 패킷이 폐기되도록 한다(S913). 두 번째 패킷, 세 번째 및 네 번째 패킷 역시 전송에 실패하더라도, 패킷 전송 실패율은 25% 이하이다. 따라서, 판단부(860)는 두 번째 패킷, 세 번째 패킷 및 네 번째 패킷이 모두 폐기되도록 한다(S913).
만약, 다섯 번째 패킷 역시 전송에 실패한 경우, 패킷 전송 실패율은 25% 이상이 된다(S911, 예). 따라서, 판단부(860)는 다섯 번째 패킷부터 제2 저장부에 저장될 수 있도록 한다(S912). 이와 같은 방법으로 전송에 실패한 패킷을 저장하면, 제2 저장부의 공간을 보다 효율적으로 사용할 수 있다.
도 10은 인코딩율에 따른 무선 네트워크의 대역폭 사용 빈도를 표준화하여 그래프로 도시한 것이다.
도 10은 무선 네트워크에서 에러가 없는 경우의 대역폭을 1로 표준화한 것이다. 도 10을 참조하면, 동일한 평균 에러율에서, 예를 들면 2 내지 5%의 평균 에러율에서, 비디오 데이터가 RS(255,239) 또는 RS(255,223) 또는 RS(255, 191)의 인코딩율로 인코딩된 경우, 상용화된 기술인 MadWiFi에 비해서 무선 네트워크의 대역폭을 적게 사용하고 있음을 알 수 있다.
도 11은 본 발명의 실시예에 따라 데이터를 전송하는 경우, 인코딩율에 따른 패킷당 재전송 비율을 도시한 그래프이다.
도 11을 참조하면, 본 발명의 실시예에 따른 데이터 전송 방법에 따라 패킷을 전송하는 경우, 동일한 평균 에러율에서, 예를 들면 15% 내지 20%의 평균 에러율에서, 상용화된 기술인 MadWiFi 비해서 패킷 당 재전송 횟수가 현격히 감소함을 알 수 있다.
이상과 같이 예시된 도면을 참조로 하여 본 발명의 실시예를 설명하였으나, 본 발명은 본 명세서에 개시된 실시예와 도면에 의해 한정되지 않으며, 그 발명의 기술사상 범위 내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.