상기 과제를 이루기 위하여 본 발명에 따른 비디오 코덱 방법은 오류허용모드에서 상기 비디오 데이터의 각 매크로 블록 영역들로부터 헤더데이터부 비트영역, 모션벡터데이터부 비트영역, 및 이산코사인변환 데이터부 비트영역들로 분할하는 단계; 상기 분할된 비트 영역들을 가변장 코딩하는 단계; 상기 가변장 코딩된 비트 영역들 중에서 복원에 필요한 소정의 우선 순위에 따라 선택되어진 비트영역들을 역가변장 코딩하는 단계; 및 가변장 코딩 또는 역가변장 코딩된 비트영역들에 마커를 삽입하는 단계;를 포함하는 것을 특징으로 한다.
상기 다른 과제를 이루기 위하여 본 발명에 따른 비디오 코덱 방법을 실행하는 컴퓨터 독취가능 기록매체는 오류허용모드에서 상기 비디오 데이터의 각 매크로 블록 영역들로부터 헤더데이터부(HDP: Header Data Part) 비트영역, 모션벡터데이터부(MVDP: Motion Vector Data Part) 비트영역, 및 이산코사인변환(DCT) 데이터부(DDP: DCT Data Part) 비트영역들로 분할하는 프로그램 코드; 상기 분할된 비트 영역들을 가변장 코딩하는 프로그램 코드; 상기 가변장 코딩된 비트 영역들 중에서 복원에 필요한 소정의 우선 순위에 따라 선택되어진 비트영역들을 역가변장 코딩하는 프로그램 코드; 및 가변장 코딩 또는 역가변장 코딩된 비트영역들에 마커를 삽입하는 프로그램 코드;를 저장하는 것을 특징으로 한다.
상기 또 다른 과제를 이루기 위하여 본 발명에 따른 비디오 코덱 장치는 오류허용모드에서 상기 비디오 데이터의 각 매크로 블록 영역들로부터 헤더데이터부 비트영역, 모션벡터데이터부 비트영역, 및 이산코사인변환 데이터부 비트영역들로 분할하는 수단; 상기 분할된 비트 영역들을 가변장 코딩하는 수단; 상기 가변장 코딩된 비트 영역들 중에서 복원에 필요한 소정의 우선 순위에 따라 선택되어진 비트영역들을 역가변장 코딩하는 수단; 및 가변장 코딩 또는 역가변장 코딩된 비트영역들에 마커를 삽입하는 수단;을 포함하는 것을 특징으로 한다.
이하 첨부된 도면들을 참조하여 본 발명에 따른 바람직한 실시예들을 상세히 기술하기로 한다.
도 2에는 본 발명의 실시예에 따른 오류 허용 모드 비디오 코덱 방법의 주요단계를 나타내었다. 도 2를 참조하면, 본 발명에 따른 오류 허용 모드 비디오 코덱 방법은 분할단계(20), 가변장 코딩 단계(22), 선택된 비트영역들에 대한 역가변장 코딩 단계(24), 및 마커 삽입 단계(26)를 포함하여 이루어진다.
분할단계(20)에서는 헤더 데이터들에 대한 분할(partitioning)에 의하여 헤더데이터부(HDP: Header Data Part) 비트영역이 구성되며, 이와 유사하게 모션벡터 데이터들과 DCT 데이터들에 대한 분할에 의하여 각각 모션벡터데이터부(MVDP: Motion Vector Data Part) 비트영역과 DCT 데이터부(DDP: DCT Data Part) 비트영역이 구성된다.
헤더데이터는 현재 매크로 블록의 코딩된 상태에 관한 정보를 포함한다. 즉, 헤더데이터는 현재 매크로블록이 현재 프레임의 내용을 그대로 코딩한 인트라(intra) 매크로블록인지, 이전 프레임의 차를 코딩한 인터(inter) 매크로블록인지를 나타내므로, 이 헤더데이터가 오류가 발생하면 매우 심각한 정보 손실을 유발한다.
따라서, 이러한 헤더데이터는 중요도가 높으며 복원함에 있어 우선적으로 복원하여야 한다. 이러한 이유로, 일예로 헤더 데이터 중에서 코딩여부의 상태를 표시하는 매크로블록식별(COD)비트와 매크로블록 패턴색도(MCBPC) 비트는 하나의 새로운 신택스(COD+MCBPC)로 결합하여 분할하는 것이 바람직하다. 이와같이 결합하여 분할하는 것이 바람직한 이유는 다음과 같다. 현재의 H.263 표준에서는 헤더 데이터로서 COD 비트에는 1 비트, MCBPC 비트에는 가변장 코드가 사용된다. 하지만, COD 비트는 0과 1이 모두 존재할 수 있기 때문에 오류가 발생하였는지를 식별하기가 어렵다. 또한, 가변장 코드를 사용하는 MCBPC 비트의 경우도 수신된 비트에 오류가 발생한 경우, 그 오류비트가 가변장 코드 테이블에 존재할 가능성이 높기 때문에 오류 검출에 어려움이 있다, 따라서, 본 발명에 따른 오류허용 모드 비디오 코덱방법의 일실시예에 따르면, 분할시에 COD 비트와 MCBPC 비트를 결합하고, 결합된 비트영역을 역가변장 코딩함으로써 비트가 변경되었는지를 식별하기가 용이하게 된다.. 예를들어 0110의 경우 0101 또는 1001과 같은 오류가 발생하더러도 오류로써 식별될 수 있기 때문에, 오류를 포함한 정보를 사용할 가능성을 줄여줄 수 있다. 더욱이, 역가변장 코딩으로 코딩되었기 때문에 역방향의 복원(recovery)도 가능하다. 하지만, 필요에 따라, 헤더데이터부(HDP)는 결합 방법을 사용하지 않고 헤더 데이터의 단독적인 분할에 의하여 구성될 수도 있다.
또한, 이러한 분할단계(20)는 각 매크로블록 단위로 수행되므로 각 패킷에 첫 번째 매크로블록의 번호를 표시하는 최초매크로블록인덱스(FMBI: First Macro Block Index) 비트영역을 삽입하는 단계를 포함 함으로써 디코딩시에 참조할 수 있도록 하는 것이 보다 바람직하다. 또한, 이 분할단계(20)에서는 상기 모션벡터데이터부(MVDP) 비트영역 다음에 예측에 의한 것이 아닌, 절대 모션벡터 정보를 포함하는 최종절대모션벡터(LAMV: Last Absolute Motion Vector) 비트를 삽입하는 단계를 포함하는 것이 바람직하다. 더욱이, 분할단계(20)에서는 패킷의 일련번호를 표시하는 패킷번호(PN: Packet Number) 비트영역을 부가정보로써 삽입하는 단계를 더 포함하는 것이 바람직하다.
가변장 코딩 단계(22)에서는 헤더데이터부(HDP) 비트영역, 모션벡터데이터부(MVDP) 비트영역, 및 DCT 데이터부(DDP) 비트영역에 대하여 가변장 코딩작업이 수행된다. 또한, 패킷번호(PN) 및 최종절대모션벡터(LAMV) 비트들도 가변장 코딩된다.
역가변장 코딩단계(24)에서는 가변장 코딩된 비트영역들 중에서 복원에 필요한 소정의 우선순위에 따라 선택되어진 비트영역들에 대하여 역가변장 코딩변환을 수행한다. 즉, 디코딩시에 만일 손실되면 전체 패킷이나 매크로블록이 손실될 수 있는 중요한 정보에 대하여 역가변장 코딩을 수행하는 것이다. 우선 순위가 필요한 이유를 상세하게 설명하면 다음과 같다. 먼저, 상술한 바와 같이 헤더데이터는 현재 매크로블록이 현재 프레임의 내용을 그대로 코딩한 인트라 매크로블록인지, 이전 프레임의 차를 코딩한 인터 매크로블록인지를 나타낸다. 대부분의 매크로블록은 압축효율을 높이기 위하여 인터 매크로블록으로 구성된다. 인터 매크로블록중에서 헤더부에 오류가 발생하면 모션벡터부, DCT 데이터부를 사용할 수 없고 모션벡터부에 오류가 발생하면 DCT 데이터부를 사용할 수 없다. 따라서, 헤더부, 모션데이터부, 및 DCT 데이터부의 순서로 중요도가 있다. 즉, 매크로 블록내에는 이러한 중요도에 해당하는 우선순위가 존재하고, 그 우선순위에 따라 복원될 필요가 있다. 이때, 모든 데이터를 역가변장 코딩하지 않고 우선순위를 두어 선택적으로 역가변장 코딩을 하는 것은 역가변장 코딩을 수행하면 가변장 코딩을 수행한 경우보다 비트수가 증가되므로 한정된 채널용량을 고려한 것이다. 도 2에 도시하지는 않았으나, 본 발명에 따른 비디오 코덱방법은 채널의 용량, 오류 상황, 혼잡도와 같은 채널의 특성에 관한 정보를 백채널(back channel)등을 통하여 수신함으로써 채널의 특성을 식별하는 단계를 더 포함하고, 상기 채널특성 식별 단계에서 채널 특성이 허용하는 경우에는 예를들어 DCT 데이터부(DDP: DCT Data Part) 비트영역과 같이 우선순위가 낮은 소정의 비트 영역을 역가변장코딩(RVLC)하고 채널 특성이 허용하지 않는 경우에는 상기 비트영역을 가변장코딩(VLC) 하는 단계를 더 포함함으로써 오류 허용을 증가시키면서도 채널의 특성을 모두 만족시키도록 구현하는 것이 더욱 바람직하다. 또한, 대안적으로 상기 채널특성 식별 단계에서 채널 특성이 허용하는 경우에는 예를들어 DCT 데이터부(DDP: DCT Data Part) 비트영역과 같이 우선순위가 적은 비트 영역에는 부가 정보를 삽입함으로써 디코딩시에 참조할 수 있도록 한다. 이하에서 이러한 부가정보의 사용에 대하여 예를들어 상세히 설명한다. 첫째, 헤더부의 정보를 DCT 데이터부내에 한번 더 전송하는 것이 가능하다. 이는 중요도가 높은 헤더부에서 오류가 발생하고 모션벡터부와 DCT 데이터부에서는 오류가 발생하지 않을 수 있는 경우를 위한 것이며, 이러한 상황은 실제로 발생할 수 있다. 이와같이 헤더 데이터를 DCT 데이터부 뒤에 위치시킴으로써 현재 데이터 패킷을 버리지 않고 복원할 수 있다. 둘째, DCT 데이터 영역내에 CRC를 부가정보로 전송하는 것이 가능하다. 예를들어, DCT 데이터는 DC 값에 8 비트의 고정장코드(FLC)를 AC 값에 가변장코드(VLC)를 사용한다. 8 비트의 고정장코드는 오류를 검출하기가 상대적으로 어렵다. 오류의 검출을 돕기 위하여 이 8 비트의 코정장 코드에 CRC를 부가함으로써 복원성을 향상시킬 수 있다. 또한, 상기 8 비트의 고정장 코드와 함께, 고정장코드를 사용하는 다른 비트, 예를들어 양자화값을 표시하는 QP 비트를 CRC를 만드는데 사용할 수도 있다. 이와같은 방법에 의하여 DCT 데이터부에서 고정장코드의 비트에 CRC를 부가하여 디코딩시 오류 복구성을 증가시킬 수 있다. 결국, 상술한 두 경우의 부가정보는 현재 패킷내에서 오류가 발생한 부분을 복원할 수 있도록 하거나, 오류 검출이 어려운 부분을 보다 용이하게 오류검출을 할 수 있도록 돕기 위한 것이다. 또한, 본 발명의 실시예에 따른 오류 허용 모드 비디오 코덱 방법에서는 역가변장 코딩할 때, 상기 채널특성 식별 단계에서 채널 특성에 따라 특성이 다른 RVLC 코딩 테이블을 사용함으로써 오류검출을 보다 효과적으로 수행한다.
마커삽입 단계(26)에서는 패킷을 구분하기 위한 재동기마커(RM: Resync Marker), 헤더부와 모션벡터부를 구분하는 정보 비트로써 헤더마커(HM: Header Marker)를 삽입한다. 또한, 마커삽입 단계(26)에서는 모션벡터데이터부(MVDP)와 DCT 데이터부(DDP)를 구분하기 위한 모션마커(MM: Motion Marker)를 삽입한다. 상기 헤더마커(HM)는 헤더데이터부(HDP)의 코딩에는 사용되지 않는 코드워드를 사용하여 이루어짐으로써 디코딩시에 구별되도록 하는 것이 바람직하다.
도 3에는 상기 방법을 구현하기 위한 본 발명의 실시예에 따른 오류 허용 모드 비디오 코덱 장치를 도시하였다. 도 3을 참조하면 본 발명에 따른 오류 허용 모드 비디오 코덱 장치는 분할수단(30), 가변장코딩수단(32), 및 상기 가변장 코딩된 비트 영역들 중에서 복원에 필요한 소정의 우선 순위에 따라 선택되어진 비트영역들을 역가변장 코딩하는 역가변장코딩수단(34)을 구비한다. 또한, 상기 오류 허용 모드 비디오 코덱 장치는 채널의 용량, 오류 상황, 혼잡도와 같은 채널의 특성에 관한 정보를 예를들어 백채널(미도시)등을 통하여 수신함으로써 채널의 특성을 식별하는 채널식별수단(36)과, 가변장 코딩 또는 역가변장 코딩된 비트영역들에 마커를 삽입하는 마커삽입수단(38)을 구비한다.
분할수단(30)은 비디오 데이터를 입력하여 도 2를 참조하여 기술한 바와 같이 오류허용모드에서 상기 비디오 데이터의 각 매크로 블록 영역들로부터 헤더데이터부(HDP) 비트영역, 모션벡터데이터부(MVDP) 비트영역, 및 이산코사인변환(DCT) 데이터(DDP) 비트영역들로 분할(partitioning)을 수행한다. 또한, 상기 분할수단은 상기 헤더데이터부(HDP) 비트를 예를들어 매크로블록식별(COD)비트와 매크로블록패턴색도(MCBPC)비트와 같이 복원에 있어 중요도가 높은 소정의 복수의 비트영역들을 결합하여 하나의 새로운 신택스(COD+MCBPC)로써 구성하는 것이 바람직하다.
가변장코딩수단(32)은 분할된 비트영역들을 입력하여 가변장코딩을 수행하고, 역가변장코딩수단(34)에서는 가변장 코딩된 비트영역들 중에서 일예로 디코딩시에 만일 손실되면 전체 패킷이나 매크로블록이 손실될 수 있는 가능성과 같이 복원에 필요한 소정의 우선순위에 따라 선택되어진 비트영역들에 대하여 오류 복구성이 양호한 역가변장 코딩변환을 수행한다. 하지만, 역가변장 코딩을 수행하면 가변장 코딩을 수행한 경우보다 비트수가 증가되므로 한정된 채널용량을 고려하여 우선순위를 두어 선택된 비트영역들에 대하여만 상기 역가변장 코딩을 수행하는 것이 바람직하다.
이를 위하여 채널특성 식별수단(36)은 채널 특성이 허용한다고 결정된 경우에는 이산코사인변환(DCT) 데이터부(DDP: DCT Data Part)와 같이 우선순위가 적은 비트 영역을 역가변장코딩(RVLC)하고 채널 특성이 허용하지 않는다고 결정된 경우에는 상기 비트영역을 가변장코딩(VLC) 하도록 가변장 코딩수단(32)과 역가변장 코딩수단(34)을 제어한다. 대안적으로, 부가 정보를 삽입하는 수단(미도시)을 더 구비하여 채널특성 식별 수단(36)에서 채널 특성이 허용하는 것으로 결정된 경우에 DCT 데이터부(DDP: DCT Data Part)와 같이 우선순위가 적은 비트 영역에 부가정보를 삽입하는 것도 가능하다. 또한, 역가변장 코딩수단(34)은 상기 채널특성 식별 수단에서 채널 특성이 허용한다고 결정한 경우에는 도 2를 참조하여 기술한 효과를 이루기 위하여 각기 다른 코딩 테이블을 사용하여 역가변장 코딩을 수행하는 것이 바람직하다.
또한, 본 발명에 따른 비디오 코덱 장치는 도 2를 참조하여 기술한 바와 같은 효과를 이루기 위하여 각 패킷에서 첫 번째 매크로블록의 번호를 표시하는 최초매크로블록인덱스(FMBI: First Macro Block Index) 비트영역을 삽입하는 수단(미도시)을 더 포함하고, 역가변장 코딩수단(34)은 최종절대모션벡터(LAMV) 비트를 역가변장 코딩하는 것이 바람직하다. 또한, 상기 비디오 코덱장치는 재동기마커(RM) 비트영역 다음에 패킷의 일련번호를 표시하는 패킷번호(PN: Packet Number) 비트영역을 부가정보로써 삽입하는 수단(미도시)와, 상기 모션벡터데이터부(MVDP) 비트 다음에 절대 모션벡터 정보를 포함하는 최종절대모션벡터(LAMV: Last Absolute Motion Vector) 비트를 삽입하는 수단(미도시)을 더 포함하는 것이 바람직하다.
한편, 마커삽입수단(38)은 패킷을 구분하기 위한 재동기마커(RM: Resync Marker)와, 헤더부와 모션벡터부를 구분하는 정보 비트로써 헤더데이터부(HDP)의 코딩에는 사용되지 않는 코드워드를 사용하여 이루어진 헤더마커(HM: Header Marker), 및 모션벡터데이터부(MVDP)와 DCT 데이터부(DDP)를 구분하기 위한 모션마커(MM: Motion Marker)를 삽입한다. 이때, 상기 헤더마커(HM)는 헤더데이터부(HDP)의 코딩에는 사용되지 않는 코드워드를 사용하여 이루어짐으로써 디코딩시에 구별되도록 하는 것이 바람직하다.
도 4에는 상기 방법에 의하여 생성된 비디오 데이터 패킷의 일예를 나타내었다. 도 4를 참조하면, 상기 방법에 의하여 생성된 비디오 데이터 패킷은 재동기마커(RM: Resync Marker) 비트, 패킷번호(PN: Packet Number) 비트, 및 최초매크로블록인덱스(FMBI: First Macro Block Index) 비트를 포함한다. 또한 상기 패킷은, 헤더데이터부(HDP: Header Data Part) 비트, 헤더마커(HM: Header Marker) 비트, 및 모션벡터데이터부(MVDP: Motion Vector Data Part) 비트를 포함한다. 또한, 상기 패킷은 최종절대모션벡터(LAMV: Last Absolute Motion Vector) 비트, 모션마커(MM: Motion Marker), 및 DCT 데이터부(DDP: DCT Data Part)를 포함한다. 이와같이 이루어진 비디오 데이터 패킷에서 재동기마커(RM) 비트는 비디오 데이터 패킷의 시작을 표시하고, 이로써 디코딩시에 종래기술 부분에서 기술한 것과 동일하게 패킷의 시작점을 찾을 수 있다. 패킷번호(PN)는 각 패킷의 일련번호를 표시하며 부가 정보로 사용될 수 있다. 최초매크로블록인덱스(FMBI) 비트는 각 패킷에서 첫 번째 매크로블록의 번호를 표시한다. 본 실시예에서 헤더데이터부(HDP: Header Data Part) 비트는 MPEG-4 또는 H.263 표준에서 정의된 매크로블록식별(COD) 비트와 매크로블록패턴색도(MCBPC) 비트가 결합되어 하나의 새로운 신택스(COD+MCBPC)를 형성하며, 상기 비트는 역가변장코딩(RVLC) 되어 이루어진다. 헤더마커(HM) 비트는 헤더부와 모션벡터부를 구분하는 정보 비트로써 헤더데이터부(HDP) 비트의 COD+MCBPC 코딩에는 사용되지 않는 코드워드(codeword)를 사용하여 이루어 진다. 모션벡터데이터부(MVDP) 비트는 모션벡터 예측에 의하여 발생된 정보를 역가변장 코딩법에 의하여 코딩한 모션벡터 데이터 부분이다. DCT 데이터부(DDP) 비트에는 이산코사인변환(DCT)과 관련된 정보를 포함하는 영역으로 CBPY 비트, DQUANT 비트, 및 DCT 계수가 코딩되어 있다. 또한, DCT 데이터부(DDP) 비트에는 현재의 패킷에서 사용되었던 정보 중에서 수신후 복호화할 때 오류 확인 및 복원에 필요할 수 있는 정보들을 삽입하는 것이 바람직하다. 이러한 정보들의 삽입은 역시 채널의 특성에 의존하여 선택적으로 적용할 수 있다. 모션마커(MM: Motion Marker) 비트는 모션벡터데이터부(MVDP) 비트와 DCT 데이터부(DDP) 비트를 구분하기 위한 것이다.
상기와 같이 인코딩된 비디오 데이터 패킷이 디코딩되는 과정을 이하에서 설명하기로 한다. 먼저, 수신된 비트스트림에서 재동기마커(RM)를 발견하면 종래 기술부에서 설명한 바와 같이 다음의 재동기마커(RM)가 발견되기 까지는 하나의 패킷으로 간주된다. 만일, 헤더데이터부(HDP)에서 오류가 발생한 경우, 상기 헤더데이터부(HDP)는 역가변장 코딩법에 의하여 코딩되어 있기 때문에 순방향의 디코딩 뿐만 아니라 역방향의 디코딩도 가능하다. 예를들어, 다음 패킷의 패킷번호(PN)와 최초매크로블록인덱스(FMBI)를 사용하여 헤더데이터부(HDP)를 복원할 수도 있다. 즉, 다음 패킷의 최초매크로블록인덱스(FMBI)에서 1을 뺀 값이 현재 패킷의 매크로블록번호이므로 역방향 디코딩을 사용하여 헤더데이터부(HDP) 비트를 오류가 발생되었던 영역까지 복원할 수 있게 된다. 또한, 모션벡터데이터부(MVDP) 비트를 모션마커(MM)를 발견하기 전까지 디코딩하며, 이로써 모션벡터 예측에 의한 모션벡터가 디코딩된다. 이러한 디코딩 과정에서 오류가 발생하면, 상기 모션벡터데이터부(MVDP) 비트도 역시 역가변장 코딩이 되어있기 때문에 역방향의 디코딩이 가능하게 된다. 이것을 종래 기술의 코덱방법에 의하여 인코딩된 비디오 데이터 패킷을 디코딩하는 과정과 비교하여 설명하면, 종래 기술의 방법에서는 모션벡터데이터부(MVDP) 비트에 모션예측에 의한 모션벡터만 존재하기 때문에 실질적인 모션벡터는 이전에 디코딩된 모션벡터가 있는 경우에만 사용이 가능하다. 하지만, 본 발명에 의한 코덱방법에서는 마지막 모션벡터를 예측하지 않은 절대 모션벡터를 역가변장 코딩법에 의해 코딩하여 전송하였기 때문에 이 최종절대모션벡터(LAMV)를 이용하여 역방향으로 디코딩하는 경우에 이전의 모션벡터에 대하여 독립적이게 된다. 또한, DDP 비트영역은 상기 DDP 비트영역에 오류가 수신되면 가변장코딩으로 코딩된 경우에는 상기 패킷을 무시할 수밖에 없지만 역가변장 코딩으로 코딩된 경우에는 역방향의 디코딩을 수행할 수 있으므로 오류 허용이 더 주어지는 효과를 이룰 수 있다. 또한, 상기 DDP 비트영역에 복원에 필요한 부가 정보들이 인코딩되어 있는 경우에는 이를 사용하여 디코딩에 사용할 수 있다.
상술한 바와 같이, 본 발명에 따른 코덱방법은 오류 허용모드를 더 줄 수 있기 때문에 무선통신 채널과 같이 오류가 많이 발생하는 환경하에서 오류에 보다 덜 민감한 통신이 가능하다.
이상에서 본 발명에 따른 코덱방법은 MPEG-4 비주얼(Visual)과 H.263을 일예로 하여 재동기마커(RM), 패킷번호(PN), 최초매크로블록인덱스(FMBI), 헤더데이터부(HDP), 헤더마커(HM), 모션벡터데이터부(MVDP), 모션마커(MM), 및 DCT 데이터부(DDP)와 같이 비트영역들에 대한 용어를 정의하여 기술하였으나, 당업자에 의하여 이해될 수 있는 바와 같이 이러한 용어들에서 정의된 것과 등가적인 다른 비트 영역들을 사용하는 모든 비디오 코덱에 적용할 수 있다.