KR100672585B1 - 비디오 압축 형식 신호의 복호방법 - Google Patents
비디오 압축 형식 신호의 복호방법 Download PDFInfo
- Publication number
- KR100672585B1 KR100672585B1 KR1020050123034A KR20050123034A KR100672585B1 KR 100672585 B1 KR100672585 B1 KR 100672585B1 KR 1020050123034 A KR1020050123034 A KR 1020050123034A KR 20050123034 A KR20050123034 A KR 20050123034A KR 100672585 B1 KR100672585 B1 KR 100672585B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- probability distance
- variable
- starting point
- probability
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명은 비디오 압축 형식 신호의 복호방법에 관한 것이다. 본 발명은 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 상기 입력 스트림에 대한 상기 확률거리와 상기 시작지점의 크기를 비교하여, 상기 비교 결과에 따라 상기 입력 스트림에 대한 이진값을 산출하는 단계; 및 (b) 상기 확률거리와 상기 시작지점을 연산하여 상기 확률거리의 값과 상기 시작지점의 값을 갱신하여 설정하고, 상기 갱신된 확률거리가 소정의 비트값보다 작을 경우, 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 갱신된 확률거리에 대한 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하여, 상기 산출된 비트 자리 수만큼 입력 스트림을 추가로 읽는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다. 본 발명에 따른 비디오 압축 형식 신호의 복호방법에 의하면, 이진산술복호과정의 복호 성능을 개선할 수 있다.
CABAC, 엔트로피, 부호화, H.264, 복호화,
Description
도 1은 H.264내 CABAC의 디시전 과정에서 수행되는 흐름도
도 2는 pStateIdx와 qCodIRangeIdx값에 의한 테이블(rangeTabLPS) 값을 나타낸 도면
도 3은 확률상태 전이 테이블(pState transition table)을 나타낸 도면
도 4는 H.264내 CABAC의 리노말리제이션(renormalization) 과정을 나타낸 흐름도
도 5는 H.264내 CABAC의 바이패스 과정에 의해 복호 비트를 출력하는 과정을 흐름도
도 6는 H.264내 CABAC의 터미네이트 과정에 의해 복호 비트를 출력하는 흐름도
도 7은 본 발명에 따른 비디오 압축 형식 신호의 복호방법에서 배럴 쉬프터(barrel shifter)와의 인터페이스를 위한 타이밍 다이어그램
도 8은 본 발명에 따른 비디오 압축 형식 신호의 복호방법 중 이진산술복호 정규과정에 대한 흐름도
도 9는 입력 스트림으로부터 읽어야 하는 비트 수를 결정하는 과정을 나타내 는 흐름도
도 10은 본 발명에 따른 비디오 압축 형식 신호의 복호방법 중 이진산술복호 우회과정에 대한 흐름도
도 11은 본 발명에 따른 비디오 압축 형식 신호의 복호방법 중 이진산술복호 종결과정에 대한 흐름도
본 발명은 비디오 압축 형식 신호의 복호방법에 관한 것으로서, 보다 상세하게는 소정의 비디오 압축 형식에 있어서 엔트로피 부호화된 신호를 복호하는 이진산술복호과정(binary arithmetic decoding process)의 복호 성능을 향상시킬 수 있는 비디오 압축 형식 신호의 복호방법에 관한 것이다.
방대한 비디오 데이터를 저장 및 전송하기 위한 여러 가지 비디오 데이터의 압축기술이 연구되고 있다. 디지털 동영상 정보의 부호화 및 저장기술 표준 규격을 제정해야 한다는 요구에 따라 국제전기통신연합(ITU; International Telecommunication Union)은 유무선 통신망 환경에서 동영상 서비스를 위한 표준 규격인 H.261과 H.263을 제정했고, 세계표준화기구(ISO; International Organization for Standardization)도 동영상 표준 규격으로 MPEG(Moving Picture Experts Group; MPEG)1, MPEG2 및 MPEG4 등을 마련하여 세계적인 표준화 논의가 활발했다.
이후 무선통신이 급격히 확산되면서 종전 압축방법에 비해 더욱 향상된 압축효율을 제공하면서 다양한 통신환경을 수용할 수 있는 동영상 압축기술 규격의 필요성이 대두하였다. 이러한 필요성에 부흥하기 위해 각계의 노력이 있었으며 ITU-T는 H.264라는 표준을 승인하였고, ISO/IEC(International Organization for Standardization/International Electrotechnical Commission)에서는 MPEG(Moving Picture Experts Group)-4 part10(H.264/MPEG-4 AVC Video Coding Standard; 이하 H.264)을 최종 승인했다.
ITU-T와 ISO가 공동 제정한 차세대 동영상 압축 표준인 H.264는 다양한 네트워크 환경에 쉽게 적용할 수 있는 유연성이 있으며, 기존 기술 표준들에 비해 동영상의 부호화의 효율성이 매우 높다. 이를 위해 H.264는 향상된 움직임 예측 및 보상과정을 수행하고, 부정합(mismatch) 문제를 해결한 블록 변환과정을 도입하고, 인루프 디블록킹 필터(In-Loop Deblocking Filter)를 채용하였다. 또한, 향상된 엔트로피 코딩 및 다양한 네트워크 환경에 적응하기 위한 NAL(Network Abstraction Layer) 구조를 채택하였다.
이와 같이 H.264는 높은 압축성능과 유연성의 장점을 가진 반면, 부호화부(encorder) 및 복호화부(decorder)의 복잡도는 훨씬 증가한다는 단점이 있다. 부호화부는 종래의 비디오 표준보다 더욱 많아진 파라미터 및 부호화 모드를 결정해야 하며, 복호화부는 디블록킹필터나 1/4 화소 단위의 움직임 보상 또는 더욱 복잡해진 엔트로피 코딩을 수행해야 하므로 전체적인 계산량이 매우 증가했다.
따라서 H.264가 상용화되기 위해서는 이와 같은 복잡도 및 계산량을 극복하 여 합리적인 수준의 복부호화 성능 및 칩 게이트 사이즈(chip gate size)를 가져야 한다.
상기하였듯이 H.264의 복잡도를 증가시키는 것 중 하나는 엔트로피 부호화 방식이다. H.264는 엔트로피 부호화 방식으로 EGC(Exponential Golomb Code;이하 EGC) 및 CAVLC(Context Adaptive Variable Length Coding)를 사용하거나 이진 산술부호화 방법을 이용하는 CABAC(Context-Based Adaptive Binary Arithmetic Coding)을 사용한다.
상기 중 첫 번째 방식에서, 변환 계수들을 제외한 대부분의 신택스 성분(syntax element)은 데이터의 특성에 따라 적응적으로 하나의 코드워드 테이블(codeword table)로 변환된 후 EGC로 부호화된다. 그리고, 좀 더 효율적으로 부호화하기 위해 변환 계수는 이미 부호화된 주변 블록들의 특성과 부호화된 변환 계수를 이용하는 CAVLC 방법을 통하여 부호화될 수 있다.
두 번째 방식인 CABAC 엔트로피 부호화 방식은 종래의 산술 부호화 방식(Binary Arithmetic Coding)에 컨텍스트 모델링(Context Modeling)을 추가하여 추정된 심볼에 확률분포모델을 적응적으로 선택하는 방식이다. 이를 이용하면 EGC와 CAVLC를 이용하는 방식에 비해 약 5~15% 정도 비트율을 감소시킬 수 있다.
CABAC에서 사용하게 되는 산술부호화 방식은 대표적인 무손실 압축 방식으로서 각 심볼에 대한 확률에 기반하여, 확률구간인 0과 1 사이에서 발생되는 심볼에 대해 연속적으로 구간분해전개(interval sub-division)를 하고, 그 구간의 확률거리(range)와 시작 지점(offset)을 업데이트한다.
그리고 CABAC에서의 각 신택스 엘리멘트(syntax element)는 각각 컨텍스트 모델(context model)에 기반한 초기화 테이블로부터 최대발생가능심볼(most probable symbol;이하 MPS) 및 확률상태(probable state) 값이 산출되고, 각 신택스 엘리멘트별로 MPS와 확률 상태는 업데이트되어 저장된다. 동시에 확률거리(range) 및 시작지점(offset)을 저장하는 저장부의 관리를 위하여 고정비트라고 판단되는 비트를 전송한다.
CABAC 복호 과정은 테이블로부터 해당 코드를 찾는 VLC와 달리 신택스 별로 MPS와 확률 상태가 업데이트 되어야 다음 비트를 디코딩할 수 있다. 또한 이진산술복호과정에서 저장하는 확률거리 및 시작지점 역시 복호하는 비트별로 업데이트되기 때문에 신택스 별로 순차적으로 복호되어야 할 뿐만 아니라 한 번에 한 개의 비트만을 디코딩할 수 있다.
따라서 CABAC 복호 과정은 계산속도의 관점에서 볼 때, 복호 과정에서 병목구간이 될 수 있고, H.264 형식의 신호를 복호하는 성능을 떨어뜨리는 문제점이 있다. 또 확률 거리 및 확률 상태를 계산할 때 드는 계산량의 감소를 위해 H.264는 이것을 테이블 형태로 제공하고, 초기 MPS 및 초기 확률 상태를 구하기 위해서 신택스 엘리멘트별로 초기화 테이블을 제공한다.
이러한 테이블을 하드웨어적으로 구현하기 위해서는 저장공간이 필요하고 이를 위해서는 많은 칩 게이트 사이즈를 할당해야 한다. 결과적으로 H.264의 CABAC 과정은 압축이라는 측면에서 CAVLC보다 더 좋은 성능을 보이지만, 이를 구현하기 위해서는 시스템 전체의 속도 및 자원을 많이 희생해야 하는 문제점이 있다.
또한, H.264 형식 신호의 이진산술복호과정은 구현상 그 구조가 매우 복잡하고 한번에 한 개의 비트만을 디코딩해야 하는 형태이기 때문에 H.264 형식 신호의 파싱(parsing) 과정뿐만 아니라 시스템 전체의 성능에도 문제가 된다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 비디오 압축 형식의 복호과정 중 이진산술복호과정의 복호 성능을 개선할 수 있는 비디오 압축 형식 신호의 복호방법을 제공하는 것이다.
본 발명의 다른 목적은 비디오 압축 표준 방식 중 H.264 표준 방식 또는 이를 이용한 비디오 압축 형식에 있어서, 엔트로피 부호화된 신호를 복호하는 이진산술복호과정의 속도를 향상시켜 복호 시스템 전체의 성능을 높일 수 있는 비디오 압축 형식 신호의 복호방법을 제공하는 것이다.
본 발명의 또 다른 목적은 H.264 표준 방식 또는 이를 이용한 비디오 압축 형식에 있어서, 이진산술복호과정인 CABAC 복호과정의 서브 프로세스를 각각 하나의 클럭 사이클에 종료시킬 수 있는 비디오 압축 형식 신호의 복호방법을 제공하는 것이다.
상기 목적을 달성하기 위하여, 본 발명은 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 상기 입력 스트림에 대한 상기 확률거리와 상기 시작지점의 크기를 비교하여, 상기 비교 결과에 따라 상기 입력 스트림에 대한 이진값을 산출하는 단계; 및 (b) 상기 확률거리와 상기 시작지점을 연산하여 상기 확률거리의 값과 상기 시작지점의 값을 갱신하여 설정하고, 상기 갱신된 확률거리가 소정의 비트값보다 작을 경우, 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 갱신된 확률거리에 대한 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하여, 상기 산출된 비트 자리 수만큼 입력 스트림을 추가로 읽는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다.
비디오 압축 형식 신호의 복호방법은 상기 (b) 단계에서 산출한 비트 자리 수만큼 제 1 확률거리변수 및 제 1 시작지점변수를 각각 쉬프트(shift) 연산하고, 상기 제 1 확률거리변수가 쉬프트 된 자리인 최하위 비트는 0(zero)으로, 상기 제 1 시작지점변수가 쉬프트 된 자리의 최하위 비트는 상기 (b) 단계에서 추가로 읽은 입력 스트림으로 채우는 단계를 더 포함할 수 있다.
또한, 상기 (b) 단계의 소정의 비트 값은 0x0100일 수 있다.
상기한 방법을 이진산술복호 정규과정에 이용한 것으로서, 본 발명은 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 상기 입력 스트림 중 소정의 비트열에 대한 상기 확률거리로부터 상기 입력 스트림의 최단확률거리를 감산하여 제 1 확률거리변수를 산출하는 단계; (b) 상기 시작지점과 상기 제 1 확률거리변수의 크기를 비교하는 단계; (c) 상기 (b) 단계의 비교 결과 상기 시작지점이 크거나 같은 경우, 상기 시작지점에서 상기 제 1 확률거리변수를 감산한 결과를 제 2 시작지점변수로 산출하고, 상기 최단확률거리를 제 2 확률거리변수로 하는 단계; (d) 상기 제 2 확률거리변수가 소정의 비트 값보다 작을 경우, 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 제 2 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트 자리 수의 차를 산출하는 단계 ; (e) 상기 (d) 단계에서 산출된 비트 자리 수만큼 제 2 확률거리변수와 제 2 시작지점변수를 쉬프트시키는 단계; 및 (f) 상기 (d) 단계에서 산출한 만큼 입력 스트림을 추가로 읽어 상기 (e) 단계에서 쉬프트된 제 2 시작지점변수의 최하위비트에 채우는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다.
상기 (a) 단계의 소정의 비트열은 입력 스트림의 26 비트 자리에 위치한 비트 값 및 27 비트 자리에 위치한 비트 값인 것이 바람직하며, 상기 (d) 단계의 소정의 비트값은 0x0100일 수 있다.
그리고, 이진산술복호 우회과정으로서, 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 상기 시작지점을 한 비트만큼 쉬프트시키고, 상기 쉬프트 된 자리인 최하위 비트에 상기 입력 스트림에서 읽은 한 비트를 채워 제 2 시작지점변수로 설정하는 단계; (b) 상기 제 2 시작지점변수와 상기 확률거리의 크기를 비교하는 단계; 및 (c) 상기 (b) 단계의 비교결과 제 2 시작지점변수가 크거나 같을 경우, 상기 제 2 시작지점변수와 상기 확률거리의 차로 임시의 시작지점을 설정하고, 상기 확률거리가 클 경우 상기 제 2 시작지점변수로 임시의 시작지점을 설정하는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다.
또한 이진산술복호 종결과정으로서 본 발명은, 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 상기 확률거리에서 2를 감산한 결과로 제 1 확률거리변수를 설정하는 단계; (b) 상기 시작지점과 상기 제 1 확률거리변수를 크기를 비교하는 단계; 및 (c) 상기 (b) 단계의 비교 결과 상기 시작지점의 크기가 상기 제 1 확률거리변수보다 작을 경우 상기 제 1 확률거리변수가 소정의 비트값보다 작을 경우, 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 제 1 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하여, 상기 산출된 비트 자리 수만큼 입력 스트림을 추가로 읽는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다.
상기 (c) 단계의 소정의 비트값은 0x0100인 것이 바람직하다.
그리고, 상기 이진산술복호 종결과정은 상기 비디오 압축 형식 신호의 복호방법은 I 슬라이스 내 매크로블록 타입 에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 P 슬라이스 내 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 B 슬라이스 내 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 슬라이스의 종 결을 신택스 엘리멘트를 복호하는 경우 중 어느 하나의 경우에 수행될 수 있다.
상기의 이진산술복호 정규과정, 이진산술복호 우회과정 및 이진산술복호 종결과정은 이하에서 정의하는 용어의 정의에 따른다.
본 발명에 따른 비디오 압축 형식 신호의 복호방법을 동영상 압축 규격인 H.264에 적용될 수 있는 형태로 요약하면, 본 발명은 확률거리(codIRange)와 시작지점(codIOffset)을 사용하여 이진산술부호화된 H.264 형식의 입력 스트림을 이진산술복호하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 상기 형식의 입력 스트림의 최하위로부터 26번째 비트자리와 27번째 비트자리의 비트 값으로 산출한 산출한 최단확률거리(codIRangeLPS)를 상기 확률거리(codIRange)로부터 감산하여 제 1 확률거리변수를 산출하는 단계; (b) 상기 제 1 확률거리변수와 상기 시작지점(codIOffset)를 비교하는 단계; (c) 상기 비교결과, 상기 시작지점(codIOffset)이 상기 제 1 확률거리변수보다 크거나 같을 경우 상기 시작지점(codIOffset)과 제 1 확률거리변수의 차를 제 2 시작지점변수로, 상기 최단확률거리(codIRangeLPS)를 제 2 확률거리변수로 설정하고, 그렇지 않을 경우 상기 제 1 확률거리변수를 제 2 확률거리변수로, 상기 시작지점(codIOffset)을 제 2 시작지점변수로 설정하는 단계; (d) 상기 제 2 확률거리변수가 소정의 비트값보다 작을 경우 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 제 2 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하는 단계; (e) 상기 (d) 단계에서 산출된 비트 자리 수만큼 제 2 확률거리변수와 제 2 시작지점변수를 쉬프트시 키는 단계; 및 (f) 상기 (d) 단계에서 산출한 만큼 입력 스트림을 추가로 읽어 상기 (e) 단계에서 쉬프트된 제 2 시작지점변수의 최하위비트에 채우는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다.
상기한 비디오 압축 형식 신호의 복호방법은 H.264의 CABAC(Context-Based Adaptive Binary Arithmetic Coding) 과정 중 디시전(decision) 과정을 의미한다.
또한, 본 발명은 확률거리(codIRange)와 시작지점(codIOffset)을 사용하여 이진산술 부호화된 H.264 형식의 입력 스트림을 이진산술 복호하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 상기 시작지점(codIOffset)을 1 만큼 쉬프트 연산하여, 최하위 비트에 한 비트의 입력 스트림을 채워 제 2 시작지점변수로 설정하는 단계; 및 (b) 상기 제 2 시작지점변수보다 상기 확률거리(codIRange)가 크거나 같을 경우 상기 제 2 시작지점변수와 상기 확률거리(codIRange)의 차로 임시의 시작지점을 설정하고, 그렇지 않은 경우 상기 제 2 시작지점변수로 임시의 시작지점을 설정하는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다.
상기 비디오 압축 형식 신호의 복호방법은 H.264의 CABAC(Context-Based Adaptive Binary Arithmetic Coding) 과정 중 바이패스(bypass) 과정을 의미한다.
또한, 본 발명은 확률거리(codIRange)와 시작지점(codIOffset)을 사용하여 이진산술 부호화된 H.264 형식의 입력 스트림을 이진산술 복호하는 비디오 압축 형식 신호의 복호방법에 있어서, (a) 확률거리(codIRange)로부터 2를 감산하여 제 1 확률거리변수로 설정하는 단계; (b) 상기 시작지점(codIOffset)과 상기 제 1 확률 거리변수를 비교하는 단계; (c) 상기 비교 결과 상기 시작지점(codIOffset)이 상기 제 1 확률거리변수보다 크거나 같을 경우 상기 제 1 확률거리변수로 임시의 확률거리를 설정하고, 그렇지 않을 경우 상기 제 1 확률거리변수와 0x0100의 크기를 비교하여 상기 제 1 확률거리변수가 작을 경우 0x0100중 1이 위치한 최하위 비트자리 수와 상기 제 2 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하는 단계; 및 (d) 상기 (c) 단계에서 산출된 비트 자리 수만큼 제 2 확률거리변수와 제 2 시작지점변수를 쉬프트시키고 상기 (c) 단계에서 산출한 만큼 입력 스트림을 추가로 읽어 상기 쉬프트된 제 2 시작지점변수의 최하위비트에 채우는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법을 제공한다.
상기 비디오 압축 형식 신호의 복호방법은 H.264의 CABAC(Context-Based Adaptive Binary Arithmetic Coding) 과정 중 터미네이트(terminate) 과정을 의미한다.
이하에서는 상기 목적을 구체적으로 실현할 수 있는 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 설명한다.
비디오 압축 형식 신호의 복호방법 중 H.264의 CABAC 이진산술복호과정은 해당 신택스 엘리멘트 별로 저장하고 있던 이전의 MPS 및 확률상태와 이진산술복호과정에서 저장하고 있던 확률거리 및 시작지점 데이터를 바탕으로 실제 복호하고 있는 비트가 최대발생가능심볼(most probable symbol; MPS)인지 최저발생가능심볼(least probable symbol; LPS)인지를 판단하여 이에 따라 복호 결과를 출력한다.
그리고 각 신택스 엘리멘트 별로 MPS와 LPS의 발생에 따라 각 MPS 값과 확률상태를 업데이트하고, 확률거리 및 시작지점 데이터도 업데이트하여 저장할 수 있다.
본 발명에 의한 비디오 압축 형식 신호의 복호방법은 일정형식의 비디오 압축 신호에 국한되는 것이 아니며, 확률적 방법에 기반한 이진산술복호방법(binary arithmetic decording)에 적용가능하다. 다만, 본 발명에 따른 비디오 압축 형식 신호의 복호방법을 용이하게 설명하기 위해 이하의 발명의 상세한 설명에서는 H.264의 CABAC 과정을 일 예로 하여, 상기 H.264의 CABAC복호 과정의 서브 프로세스(sub process)를 설명하도록 한다.
H.264의 표준이 제안하는 이진산술복호방법은 초기화(initialisation) 과정, 디시전(decision) 과정, 바이패스(bypass) 과정 그리고, 터미네이트(teminate) 과정의 4가지 서브 프로세스에 의해 수행될 수 있다.
첫째, 초기화 과정은 매 슬라이스(slice)의 시작시에 또는 각 IPCM(Inverse Pulse Code Modulation) 매크로블록(macroblock)이 디코딩될 때마다 수행되어야 하는 과정이다. 초기화 과정에서는 복호과정의 변수(engine variable)인 확률거리 및 시작지점의 초기화가 이루어지는데 확률거리(이하, codIRange)의 값은 0x01FE로 초기화되고, 시작지점(이하, codIOffset)의 값은 입력 비트 스트림으로부터 9 비트를 읽어내어 이것을 codIOffset의 초기화 값으로 한다.
둘째, 디시전(decision) 과정은 대부분 신택스 엘리멘트(syntax element)의 이진산술복호를 위해 호출되는 과정으로서, 각 신택스의 MPS(most probable symbol)와 확률상태(이하, pState라고 한다) 값을 입력 값으로 한다.
도 1은 H.264내 CABAC의 디시전 과정에서 수행되는 흐름도이다. 도 1을 참조하여 상기 디시전 과정을 설명하면 다음과 같다.
일단, 이진산술복호과정에서 저장하고 있는 확률거리(codIRange)의 최상위 일곱번째 비트와 여섯번째 비트를 qCodIRangeIdx에 전달한다(S12). 그리고, 상기 값을 신택스 엘리멘트 별로 저장하다가 해당 신택스 엘리멘트의 복호를 위해 입력된 확률상태(pState)를 pStateIdx로 전달한 후 소정의 테이블로부터 최단확률거리(codIRangeLPS) 값을 선택한다(S12). 상기 최단확률거리(codIRangeLPS)는 복호과정의 특정 상태(state)에서 신택스 엘리멘트를 구성하는 각 비트(또는 심볼)의 이진값에 대한 확률을 거리 또는 길이로 나타내었을 때 최저발생확률을 구성하는 거리를 의미한다.
상기 최단확률거리(codIRangeLPS) 값은 도 2의 테이블로부터 선택된 qCodIRangeIdx에 의해 선택될 수 있다. 상기 도 2는 pStateIdx와 qCodIRangeIdx값으부터 최단확률거리(codIRangeLPS) 값을 계산할 수 있는 테이블을 나타낸다.
구간분해전개(interval sub-division)를 위해서 이전에 저장되어 있던 확률거리(codIRange)에서 최단확률거리(codIRangeLPS)를 뺀 값을 새로운 확률거리(codIRange)로 업데이트한다(S12).
상기 업데이트된 확률거리(codIRange)와 현재에 저장되어 있는 시작지점(codIOffset)을 비교한다(S13). 시작지점(codIOffset)이 확률거리(codIRange)보다 크거나 같으면 LPS(least probable symbol)가, 작으면 MPS(most probable symbol) 가 발생한 것으로 판단한다(S13).
상기 비교 결과 LPS가 발생한 것(codIOffset >= codIRange)으로 판단하는 경우에는 출력하는 디코딩 비트는 입력된 MPS 값과 반대의 값이 된다(S14). 즉, 입력 MPS가 1이면 0, 0이면 1을 디코딩 비트로서 출력한다. 시작지점(codIOffset)은 이전 시작지점(codIOffset)과 현재 확률거리(codIRange)의 차이값으로 업데이트하고, 확률거리(codIRange)는 최단확률거리(codIRangeLPS) 값으로 업데이트한다(S14).
그리고, 현재 pState가 0인지 판단하여(S15), 현재 pState가 0이면 MPS값을 바꾸어 업데이트하고(S16), 그렇지 않으면 현재 MPS 값을 그대로 유지한다.
도 3은 확률상태 전이 테이블(pState transition table)을 나타내는데, 상기 pState 값은 도 3의 테이블로부터 현재의 pStateIdx에 대한 transIdxLPS 값으로 업데이트한다(S17).
한편, S13의 비교 결과 MPS가 발생한 것으로 판단하는 경우에는 출력 디코딩 비트는 입력된 MPS값과 동일한 값인 것을 의미하므로, pState 값은 도 3에 의한 테이블로부터 현재의 pStateIdx를 찾아서 transIdxMPS 값으로 업데이트한다(S18).
그리고 이후, 리노말리제이션(renormalization) 과정(S19)을 거친다. 상기 리노말리제이션 과정(S19)은 복호 변수(engine variable)인 확률거리(codIRange)와 시작지점(codIOffset)를 저장하기 위해서 이진산술복호과정에서 더 이상 의미가 없는 비트들을 해당 비트 수만큼 버리고, 입력 스트림으로부터 새로운 비트를 반복하여 읽어들이는 과정이다.
도 4는 이와 같은 리노말리제이션(renormalization) 과정을 나타낸 흐름도이 다. 도 4를 참조하여 리노말리제이션(renormalization) 과정을 설명하면 다음과 같다. 만약 업데이트된 확률거리(codIRange)가 0x0100보다 작은지 판단한다(S19b). 만약 상기 확률거리(codIRange)가 0x0100보다 크거나 같으면 어떤 처리도 없이 리노말리제이션(renormalization) 과정이 종결된다(S19d).
반대로, 업데이트된 확률거리(codIRange)가 0x0100보다 작으면, 확률거리(codIRange)가 0x0100보다 크거나 같게 될 때까지 확률거리(codIRange)를 왼쪽으로 한 비트씩 쉬프트(shift) 시키면서 최하위 비트(LSB, least significant bit)에 0을 채운다(S19c). 그리고, 시작지점(codIOffset)은 왼쪽으로 한 비트씩 쉬프트(shift) 시키면서 입력 스트림으로부터 한 비트씩 읽어와서 최하위 비트를 채운다(S19c).
이와 같이 최종 업데이트된 확률거리(codIRange)와 시작지점(codIOffset)을 이진산술복호과정에서 저장하고 있다가 다음 복호 요구가 있으면 상기 확률거리(codIRange)값과 시작지점(codIOffset)값을 읽어서 반복하여 처리하게 된다.
상기에서 설명한 디시전(decision) 과정은 이진산술복호과정에서 신택스(syntax) 엘리멘트(element)를 복호하는 일반적인 과정이다. H.264에서 상기 디시전 과정은 이하에서 설명하는 바이패스(bypass) 과정 또는 터미네이트(terminate) 과정을 거쳐야 하는 신택스 엘리멘트를 제외한 모든 엘리멘트를 복호한다.
본 명세서에서 상기한 디시전(decision) 과정은 이진산술복호 정규과정이라고 명명한다. 따라서, 이진산술복호 정규과정은 복호하려는 신택스 엘리멘트에 대한 확률거리와 시작지점을 반복적으로 업데이트하여 최종비트를 결정하는 과정을 의미한다.
H.264 규격에서 바이패스(bypass) 과정은 디코딩 비트 출력 및 복호 변수(engine variable)의 업데이트에 사용되는 과정이다. 바이패스(bypass) 과정은 디코딩 비트 출력 및 복호 변수(engine variable)의 업데이트를 위해 MPS 값과 pState 값을 입력으로 받을 필요가 없고, 비트 데이터와 확률거리(codIRange)와 시작지점(codIOffset)을 입력으로 사용한다.
도 5는 H.264 규격에서 바이패스 과정에 의해 디코딩 비트를 출력하는 과정을 흐름도로 나타낸 것이다. 바이패스(bypass) 과정이 호출되면 시작지점(codIOffset)을 왼쪽으로 한 비트 쉬프트(shift)시키고 입력 스트림으로부터 한 비트를 읽어서 최하위비트(LSB)에 채운다(S22). 업데이트된 시작지점(codIOffset)과 확률거리(codIRange)를 비교하여(S23), 시작지점(codIOffset)이 크거나 같으면 출력 디코딩 비트로 1을 출력하고 시작지점(codIOffset)은 시작지점(codIOffset)과 확률거리(codIRange)의 차이값으로 업데이트한다(S24). 시작지점(codIOffset)과 확률거리(codIRange)를 비교하여 시작지점(codIOffset)이 작으면 출력 복호 값으로 0을 출력하고(S25), 복호 변수를 더 이상 업데이트하지 않고 바이패스 과정을 종결한다(S26).
상기에서 설명한 바와 같이 바이패스 과정은 pstateIdx와 MPS를 사용하거나 갱신하지 않기 때문에 도 3에서 나타낸 테이블에 의해 수행되는 상태전이가 발생하지 않고, 동일한 확률상태로 그대로 유지되기 때문에 확률에 기반하지 않는 과정이다. 따라서, 본 명세서에서는 확률상태에 기반하지 않고, 시작지점과 확률거리만의 연산만으로 이진산술복호를 수행하는 과정을 이진산술복호 우회과정이라고 명명한다.
마지막으로 H.264 규격에서 터미네이트 과정은 I 슬라이스 내 매크로블록 타입 에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 P 슬라이스 내 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 B 슬라이스 내 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 슬라이스의 종결을 의미하는 end_of_slice을 복호하는 경우만 사용하게 되는 과정이다.
터미네이트 과정은 바이패스 과정과 마찬가지로 디코딩 비트 출력 및 복호 변수(engine variable)의 업데이트를 위해서 MPS와 pState를 입력으로 받을 필요가 없다.
도 6는 터미네이트 과정에 의해 복호 비트를 출력하는 흐름도를 나타낸다. 터미네이트 과정 과정이 호출되면 확률거리(codIRange)에서 2를 뺀 값을 새로운 확률거리(codIRange)로 업데이트하고(S32), 이를 이전에 저장되어 있던 시작지점(codIOffset)과 비교한다(S33). 시작지점(codIOffset)이 확률거리(codIRange)보다 크거나 같으면 출력 디코딩 값으로 1을 출력하고(S34) 과정을 종결한다. 그렇지 않고 시작지점(codIOffset)이 확률거리(codIRange)보다 작으면 출력 디코딩 값으로 0을 출력하고(S35), 도 4에 의한 리노말리제이션(renormalization) 과정(S19)에 의해서 codIRange와 codIOffset을 업데이트한다.
상기 터미네이트 과정은 확률상태에 기반하지 않고, 특정한 조건일 경우 확 률거리의 연산만으로 최종비트를 결정하는 과정이다. 상기 터미네이트 과정은 복호되는 이진값이 1인 경우 codIOffset와 codIRange을 버리고, 다시 초기화시키기 위한 과정이다.
상기의 특정한 조건이란, 슬라이스(slice)의 끝을 복호하는 경우이거나, I 슬라이스에 속해있는 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, P 슬라이스에 속해 있는 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, B 슬라이스에 속해 있는 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호할 경우를 의미한다.
이하, 본 명세서에서는 상기와 같은 조건에서 이진산술복호과정을 수행하는 것을 이진산술복호 종결과정이라고 명명한다.
본 발명에 따른 비디오 압축 형식 신호의 복호방법은 이진산술복호과정에서 각 서브 프로세스를 한 사이클(cycle) 내에 수행할 수 있는 방법을 제공한다.
도 7은 본 발명에 따른 비디오 압축 형식 신호의 복호방법에서 사용되는 배럴 쉬프터(barrel shifter)와의 인터페이스를 위한 타이밍 다이어그램(timing diagram)의 일 예를 나타낸다.
이진산술복호과정의 첫 서브 프로세서인 초기화 과정에서 수행해야 하는 codIOffset의 업데이트를 위해서 타임(time) a에서 입력 스트림으로부터 9 비트(bit)를 읽는다. 그리고, 동일한 클럭 사이클에서 비트스트림읽기요청신호를 발생시키기 위한 인에이블(enable) 신호를 발생시키고, 읽으려는 비트 수로부터 9비트를 읽었음을 배럴 쉬프터에 알린다. 그러면, 배럴 쉬프터는 타임(time) b에서 상기 읽은 비트 스트림을 업데이트한다.
상기 도 7의 타이밍 다이어그램(timing diagram)은 하나의 예이며 이는 복호과정 구현에 따라 다르게 설계될 수 있다. 도 7에서 보인 바와 같이 입력 비트를 읽는 경우에는 클럭 사이클이 소모된다. 본 발명에 따른 비디오 압축 형식 신호의 복호방법에서는 입력 비트를 읽는 과정을 매 비트마다 반복하지 않고 하나 이상의 입력 비트를 읽는다. 따라서, 입력 비트를 읽는데 소요되는 클럭 사이클을 줄일 수 있기 때문에 이진산술복호과정의 효율을 높일 수 있다.
이하에서 본 발명에 따른 비디오 압축 형식 신호의 복호방법인 이진산술복호방법을 H.264의 규격에 따른 내용으로 설명한다. 그리고, 상기에서 설명한 단계와 동일한 구성 단계는 설명의 편의상 동일 명칭 및 동일 부호를 부여한다.
도 8은 본 발명에 따른 비디오 압축 형식 신호의 복호방법 중 이진산술복호 정규과정의 일 실시예에 대한 흐름도를 나타낸다. 도 8을 참조하여 본 발명에 따른 일 실시예를 설명하면 다음과 같다.
본 발명에 따른 이진산술복호 정규과정의 일 실시예에 의하면, 이진산술복호과정에서 저장하고 있는 확률거리(도 8에서 codIRange로 나타낸다)의 일곱번째와 여섯번째 비트를 qCodIRangeIdx에 전달한다(S12). 그리고, 상기 값과, 해당 신택스 엘리멘트의 복호를 위해 입력된 pState에 따른 pStateIdx를 이용하여 심볼의 최저발생확률에 따른 확률거리(codIRangeLPS)를 산출한다. 그리고, codIRange에서codIRangeLPS를 감산하여 제 1 확률거리 변수를 설정한다. 상기 실시예에서 상기 제 1 확률거리변수는 codIRange1로 나타내었다(S12).
상기 제 1 확률거리변수(codIRange1)와 시작지점(도 8에서 codIOffset로 나타낸다)를 비교하고, 상기 비교결과로 LPS가 발생하는지 또는 MPS가 발생하는지 여부를 판단한다(S13).
상기 판단 결과, 제 1 확률거리변수(codIRange1)가 시작지점(codIOffset)보다 클 경우 복호할 비트값(binVal)이 최대발생가능심볼(valMPS)로 결정한다. 그리고 그 경우, 제 1 확률거리변수(codIRange1)을 제 2 확률거리변수(본 명세서에서 codIRange2로 나타낸다)로, 시작지점(codIOffset)을 제 2 시작지점변수(본 명세서에서 codIOffset2로 나타낸다)으로 전달한다(S18).
상기 S13의 시작지점(codIOffset)이 제 1 확률거리변수(codIRange1) 이상일 경우, 복호할 비트값은 최대발생가능심볼이 아닌 것으로 판단할 수 있다. 따라서, LPS가 발생한 것으로 판단하고, 시작지점(codIOffset)과 제 1 확률거리변수(codIRange1)의 차로 제 2 시작지점(codIOffset2)을 할당하고, 최단 확률 거리(codIRangeLPS)는 제 2 확률거리(codIRange2)로 전달한다(S14).
LPS가 발생하였다고 판단하는 경우에는 출력하는 복호 비트는 이진심볼에 있어서, 입력된 MPS 값과 반대의 심볼로 한다(즉, 입력된 MPS가 0이면 1이 되고, 입력된 MPS가 1이면 0이된다).
즉, 확률 상태 pState가 0인지 판단하여(S15), 현재 pState가 0이면 MPS값을 바꾸어 업데이트하고(S16), 그렇지 않으면 현재 MPS 값을 그대로 유지한다.
그리고, 본 발명에 따른 이진산술복호과정의 정규과정 중 리노말리제이션(renormalization) 과정에서는, 도 4에서 보인 과정에서처럼 한 비트별로 비트 리 드(bit read) 과정을 반복적으로 수행하지 않는다. 도 4에서는, 확률거리(codIRange)를 왼쪽으로 한 비트씩 쉬프트시켜 최하위 비트(LSB)에 0을 채우고, 시작지점(codIOffset)를 왼쪽으로 한 비트씩 쉬프트시켜, 입력 스트림으로부터 한 비트를 읽어와서 상기 시작지점(codIOffset)의 LSB를 채우는 과정을 수행하였다.
따라서, 본 발명에서는 바람직한 방법으로써, codIRange가 확률거리를 의미하므로 0이 될 수 없다는 사실을 이용할 수 있다. 본 발명에 의하면 리노말리제이션 과정에서는 codIRange를 한 비트이상 쉬프트시키고, 입력 스트림으로부터 한 비트이상을 읽을 수 있다.
도 8에서 보인 본 발명의 일 실시예에서는 제 2 확률거리변수(codIRange2)를 이용하여 읽을 비트 수를 계산한다. 즉, 제 2 확률거리변수(codIRange2)의 각 비트를 순차적으로 검사하면 몇 비트를 읽어야 하는지 예측할 수 있다. 상기 예측하는 과정에 대한 설명을 용이하게 하기 위해 도 9를 참조한다.
도 9는 입력 스트림으로부터 읽어야 하는 비트 수를 결정하는 과정을 나타내는 흐름도이다. 도 9를 참조하여 입력 스트림으로부터 읽는 비트 수(본 명세서에서 N이라고 하고, N은 정수를 의미한다)를 결정하는 순서를 설명하면 다음과 같다.
먼저 제 2 확률거리변수(codIRange2)가 0x0100보다 크거나 같은지 여부를 판단하고(S51), 상기 판단 결과 1이면 더 이상 업데이트를 하지 않고 과정을 종료한다. 만약 제 2 확률거리변수(codIRange2)가 0x0100보다 작으면 일곱번째(27의 비트자리) 비트가 1인지 여부를 판단한다(S52). 만약 S52의 판단 결과 상기 일곱번째 비트(27의 비트자리)가 1이면 한 개의 비트(N=1)만을 입력 스트림으로부터 읽는다.
만약 일곱번째 비트가 0이면 여섯번째 비트가 1인지 여부를 판단한다(S53). 그리고, 여섯번째 비트가 1(26비트 자리)이면 2개의 비트(N=2)만을 입력 스트림으로부터 읽는다. 여섯번째 비트가 0이면 다시 다섯번째 비트(25비트자리)가 1인지 여부를 판단한다(S54). 상기 판단 결과가 1이면 입력 스트림으로부터 세 개의 비트(N=3)를 읽는다.
상기와 같이 순차적으로 비트를 읽는 방법을 수행하면, 리노말리제이션(renomalization) 과정에서 1 비트 이상의 N 비트의 입력스트림을 한 사이클에 읽는 경우가 발생하므로 복호 과정에서의 클럭 사이클 소모를 줄일 수 있다.
여기서 다시 도 8로 돌아가 리노말리제이션(renormalization) 과정에 대해 계속 설명한다. 도 9의 과정에 의해 입력 스트림으로부터 읽을 비트 수를 예측하고, 그 결과 N개의 비트를 읽는다면(S191), 제 2 확률거리(codIRange2)와 제 2 시작지점(codIOffset2)을 왼쪽으로 N 비트만큼 쉬프트시킨다(S192).
그리고, 임시의 확률거리(new_codIRange)는 LSB(최하위비트)를 0으로 채우고, 임시의 시작지점(new_codIOffset)에는 읽어온 N개의 비트로 채운다.
상기와 같이 임시의 확률거리(new_codIRange)와 임시의 시작지점(new_codIOffset)은 다음 클럭에서 읽어서 본래 변수인 확률거리 (codIRange)와 시작지점(codIOffset)으로 각각 최종 저장한다.
도 10은 본 발명에 따른 비디오 압축 형식 신호의 복호방법 중 이진산술복호 우회과정의 일 실시예에 대한 흐름도를 나타낸다. 도 10을 참조하여 본 발명에 따른 비디오 압축 형식 신호의 복호방법 중 이진산술복호 우회과정을 설명하면 다음과 같다.
이진산술복호 우회과정은 한 비트만을 읽어서 복호 비트를 결정한다. 읽어온 비트로부터 시작지점(codIOffset)을 한 비트 쉬프트하여 제 1 시작지점변수(codIOffset1)에 할당하고, 읽어온 한 비트를 상기 제 1 시작지점변수(codIOffset1)의 최저 비트에 할당하여, 상기 할당된 값을 제 2 시작지점변수(codIOffset2)로 한다(S22).
그리고, 상기 제 2 시작지점변수(codIOffset2)과 확률 거리(codIRange)의 크기를 비교한다(S23). 만약, 제 2 시작지점변수(codIOffset2)가 확률 거리(codIRange)보다 크거나 같으면 제 2 시작지점변수(codIOffset2)에서 확률 거리(codIRange)를 뺀 값을 임시의 시작지점(new_codIOffset)으로 한다(S24).
그리고, 임시의 확률거리(new_codIRange)는 본래의 확률거리(codIRange)값이 변함없이 전달될 수 있다.(S24).
제 2 시작지점변수(codIOffset2)가 확률거리(codIRange)보다 작으면 제 2 시작지점(codIOffset2)을 임시의 시작지점(new_codIOffset)에 전달하고, 확률거리(codIRange)를 임시의 확률거리(new_codIRange)에 전달한다. 이와 같이 최종 업데이트된 임시의 확률거리(new_codIRange)와 임시의 시작지점(new_codIOffset)은 다음 클럭에서 읽어서 확률거리(codIRange)와 시작지점(codIOffset)으로 각각 최종 저장된다.
도 11은 본 발명에 따른 비디오 압축 형식 신호의 복호방법 중 이진산술복호 종결과정의 일 실시예에 대한 흐름도를 나타낸다. 도 11을 참조하여 본 발명에 따른 비디오 압축 형식 신호의 복호방법의 종결과정의 일 실시예를 설명하면 다음과 같다.
이진산술복호 종결과정에서는 일단 확률거리(codIRange)에서 2를 뺀 값을 제 1 확률거리변수(codIRange1)로 설정한다(S32). 상기 제 1 확률거리변수(codIRange1) 값과 시작지점(codIOffset)을 비교한다(S33). 비교 결과 시작지점(codIOffset)이 제 1 확률거리변수(codIRange1)보다 크거나 같으면 시작지점(codIOffset)을 임시의 시작지점(new_codIOffset1)에, 제 1 확률 거리변수(codIRange1)를 임시의 확률거리(new_codIRange)에 전달한다(S34).
반면에 시작지점(codIOffset)이 제 1 확률거리(codIRange1)보다 작으면 도 9에서 설명한 리노말리제이션(renormalization) 과정을 수행할 수 있다. 따라서, 제 1 확률거리변수(codIRange1)의 여덟번째 비트부터 순차적으로 각 비트를 검토하여 몇 비트를 비트 스트림으로부터 읽어올 것인지 결정한다(S191).
그리고, 그 결과 N개의 비트를 읽는다면(S191), 제 1 확률거리변수(codIRange2)와 제 1 시작지점변수(codIOffset2)를 왼쪽으로 N 비트만큼 쉬프트시킨다(S192).
그리고, 임시의 확률 거리(new_codIRange)는 LSB(최하위비트)를 0으로 채우고, 임시의 시작지점(new_codIOffset)에는 읽어온 N개의 비트로 채운다.
상기와 같이 임시의 확률거리(new_codIRange)와 임시의 시작지점 (new_codIOffset)은 다음 클럭에서 읽어서 본래 변수인 확률거리 (codIRange)와 시작지점(codIOffset)으로 각각 최종 저장한다.
본 발명에 따르면 비디오 압축 형식 신호의 복호방법은 어느 경우에나 한 클럭에 수행될 수 있다. 모든 신택스 엘리멘트의 각 비트의 복호를 위해서 이진산술복호과정이 호출된다는 것을 고려할 때, 상기 방법은 이진산술복호과정의 성능을 개선시킬 수 있다.
상기에서 설명한 본 발명에 따른 비디오 압축 형식 신호의 복호방법의 효과를 설명하면 다음과 같다.
첫째, 발명에 따른 비디오 압축 형식 신호의 복호방법에 의하면, 이진산술복호과정의 복호 성능을 개선할 수 있다.
둘째, 비디오 압축 형식에 있어서, 엔트로피 부호화된 신호를 복호하는 이진산술복호과정의 속도를 향상시켜 복호 과정 전체의 성능을 높일 수 있다.
셋째, 비디오 압축 형식 중 H.264에 있어서, 이진산술복호과정인 CABAC 복호과정의 서브 프로세스를 각각 하나의 클럭에 종료시킬 수 있다.
Claims (20)
- 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서,(a) 상기 입력 스트림에 대한 상기 확률거리와 상기 시작지점의 크기를 비교하여, 상기 비교 결과에 따라 상기 입력 스트림에 대한 이진값을 산출하는 단계; 및(b) 상기 확률거리와 상기 시작지점을 연산하여 상기 확률거리의 값과 상기 시작지점의 값을 갱신하여 설정하고, 상기 갱신된 확률거리가 소정의 비트값보다 작을 경우, 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 갱신된 확률거리에 대한 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하여, 상기 산출된 비트 자리 수만큼 입력 스트림을 추가로 읽는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 1항에 있어서,비디오 압축 형식 신호의 복호방법은 상기 (b) 단계에서 산출한 비트 자리 수만큼 제 1 확률거리변수 및 제 1 시작지점변수를 각각 쉬프트(shift) 연산하고, 상기 제 1 확률거리변수가 쉬프트 된 자리인 최하위 비트는 0(zero)으로, 상기 제 1 시작지점변수가 쉬프트 된 자리의 최하위 비트는 상기 (b) 단계에서 추가로 읽은 입력 스트림으로 채우는 단계를 더 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 1 항에 있어서,상기 (b) 단계의 소정의 비트 값은 0x0100인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 1항에 있어서,상기 비디오 압축 형식은 H.264인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서,(a) 상기 입력 스트림 중 소정의 비트열에 대한 상기 확률거리로부터 상기 입력 스트림의 최단확률거리를 감산하여 제 1 확률거리변수를 산출하는 단계;(b) 상기 시작지점과 상기 제 1 확률거리변수의 크기를 비교하는 단계;(c) 상기 (b) 단계의 비교 결과 상기 시작지점이 크거나 같은 경우, 상기 시작지점에서 상기 제 1 확률거리변수를 감산한 결과를 제 2 시작지점변수로 산출하고, 상기 최단확률거리를 제 2 확률거리변수로 하는 단계;(d) 상기 제 2 확률거리변수가 소정의 비트 값보다 작을 경우, 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 제 2 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트 자리 수의 차를 산출하는 단계 ;(e) 상기 (d) 단계에서 산출된 비트 자리 수만큼 제 2 확률거리변수와 제 2 시작지점변수를 쉬프트시키는 단계; 및(f) 상기 (d) 단계에서 산출한 만큼 입력 스트림을 추가로 읽어 상기 (e) 단계에서 쉬프트된 제 2 시작지점변수의 최하위비트에 채우는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 5항에 있어서,상기 이진값을 결정하는 복호과정은 이진산술복호 정규과정인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 5항에 있어서,상기 (a) 단계의 소정의 비트열은 입력 스트림의 26 비트 자리에 위치한 비트 값 및 27 비트 자리에 위치한 비트 값인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 5항에 있어서,상기 (d) 단계의 소정의 비트값은 0x0100인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서,(a) 상기 시작지점을 한 비트만큼 쉬프트시키고, 상기 쉬프트 된 자리인 최하위 비트에 상기 입력 스트림에서 읽은 한 비트를 채워 제 2 시작지점변수로 설정하는 단계;(b) 상기 제 2 시작지점변수와 상기 확률거리의 크기를 비교하는 단계; 및(c) 상기 (b) 단계의 비교결과 제 2 시작지점변수가 크거나 같을 경우, 상기 제 2 시작지점변수와 상기 확률거리의 차로 임시의 시작지점을 설정하고, 상기 확률거리가 클 경우 상기 제 2 시작지점변수로 임시의 시작지점을 설정하는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 9항에 있어서,상기 이진값을 결정하는 과정은 이진산술복호 우회과정인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 확률거리와 시작지점을 사용하여 부호화된 입력 스트림을 소정크기의 비트 수만큼 읽고, 상기 입력 스트림에 대한 이진값을 결정하는 비디오 압축 형식 신호의 복호방법에 있어서,(a) 상기 확률거리에서 2를 감산한 결과로 제 1 확률거리변수를 설정하는 단계;(b) 상기 시작지점과 상기 제 1 확률거리변수를 크기를 비교하는 단계; 및(c) 상기 (b) 단계의 비교 결과 상기 시작지점의 크기가 상기 제 1 확률거리변수보다 작을 경우 상기 제 1 확률거리변수가 소정의 비트값보다 작을 경우, 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 제 1 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하여, 상기 산출된 비트 자리 수만큼 입력 스트림을 추가로 읽는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 11항에 있어서,상기 이진값을 결정하는 과정은 이진산술복호 종결과정인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 11항에 있어서,상기 (c) 단계의 소정의 비트값은 0x0100인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 11항에 있어서,상기 비디오 압축 형식 신호의 복호방법은 I 슬라이스 내 매크로블록 타입 에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 P 슬라이스 내 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 B 슬라이스 내 매크로블록 타입 중 I 매크로블록 타입에 해당하는 두 번째 비트를 복호하는 경우이거나, 또는 슬라이스의 종결을 신택스 엘리멘트를 복호하는 경우 중 어느 하나의 경우에 수행되는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 확률거리(codIRange)와 시작지점(codIOffset)을 사용하여 이진산술부호화된 H.264 형식의 입력 스트림을 이진산술복호하는 비디오 압축 형식 신호의 복호방법에 있어서,(a) 상기 형식의 입력 스트림의 최하위로부터 26번째 비트자리와 27번째 비트자리의 비트 값으로 산출한 산출한 최단확률거리(codIRangeLPS)를 상기 확률거리(codIRange)로부터 감산하여 제 1 확률거리변수를 산출하는 단계;(b) 상기 제 1 확률거리변수와 상기 시작지점(codIOffset)를 비교하는 단계;(c) 상기 비교결과, 상기 시작지점(codIOffset)이 상기 제 1 확률거리변수보다 크거나 같을 경우 상기 시작지점(codIOffset)과 제 1 확률거리변수의 차를 제 2 시작지점변수로, 상기 최단확률거리(codIRangeLPS)를 제 2 확률거리변수로 설정하 고, 그렇지 않을 경우 상기 제 1 확률거리변수를 제 2 확률거리변수로, 상기 시작지점(codIOffset)을 제 2 시작지점변수로 설정하는 단계;(d) 상기 제 2 확률거리변수가 소정의 비트값보다 작을 경우 상기 소정의 비트값 중 1이 위치한 최하위 비트자리 수와 상기 제 2 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하는 단계;(e) 상기 (d) 단계에서 산출된 비트 자리 수만큼 제 2 확률거리변수와 제 2 시작지점변수를 쉬프트시키는 단계; 및(f) 상기 (d) 단계에서 산출한 만큼 입력 스트림을 추가로 읽어 상기 (e) 단계에서 쉬프트된 제 2 시작지점변수의 최하위비트에 채우는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 15항에 있어서,상기 비디오 압축 형식 신호의 복호방법은 H.264의 CABAC(Context-Based Adaptive Binary Arithmetic Coding) 과정 중 디시전(decision) 과정인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 확률거리(codIRange)와 시작지점(codIOffset)을 사용하여 이진산술 부호화된 H.264 형식의 입력 스트림을 이진산술 복호하는 비디오 압축 형식 신호의 복호방법에 있어서,(a) 상기 시작지점(codIOffset)을 1 만큼 쉬프트 연산하여, 최하위 비트에 한 비트의 입력 스트림을 채워 제 2 시작지점변수로 설정하는 단계; 및(b) 상기 제 2 시작지점변수보다 상기 확률거리(codIRange)가 크거나 같을 경우 상기 제 2 시작지점변수와 상기 확률거리(codIRange)의 차로 임시의 시작지점을 설정하고, 그렇지 않은 경우 상기 제 2 시작지점변수로 임시의 시작지점을 설정하는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 17항에 있어서,상기 비디오 압축 형식 신호의 복호방법은 H.264의 CABAC(Context-Based Adaptive Binary Arithmetic Coding) 과정 중 바이패스(bypass) 과정인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 확률거리(codIRange)와 시작지점(codIOffset)을 사용하여 이진산술 부호화된 H.264 형식의 입력 스트림을 이진산술 복호하는 비디오 압축 형식 신호의 복호방법에 있어서,(a) 확률거리(codIRange)로부터 2를 감산하여 제 1 확률거리변수로 설정하는 단계;(b) 상기 시작지점(codIOffset)과 상기 제 1 확률거리변수를 비교하는 단계;(c) 상기 비교 결과 상기 시작지점(codIOffset)이 상기 제 1 확률거리변수보다 크거나 같을 경우 상기 제 1 확률거리변수로 임시의 확률거리를 설정하고, 그렇지 않을 경우 상기 제 1 확률거리변수와 0x0100의 크기를 비교하여 상기 제 1 확률 거리변수가 작을 경우 0x0100중 1이 위치한 최하위 비트자리 수와 상기 제 2 확률거리변수의 비트열 중 1이 위치한 최상위 비트자리 수와의 비트자리 수 차를 산출하는 단계; 및(d) 상기 (c) 단계에서 산출된 비트 자리 수만큼 제 2 확률거리변수와 제 2 시작지점변수를 쉬프트시키고 상기 (c) 단계에서 산출한 만큼 입력 스트림을 추가로 읽어 상기 쉬프트된 제 2 시작지점변수의 최하위비트에 채우는 단계를 포함하는 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
- 제 19항에 있어서,상기 비디오 압축 형식 신호의 복호방법은 H.264의 CABAC(Context-Based Adaptive Binary Arithmetic Coding) 과정 중 터미네이트(terminate) 과정인 것을 특징으로 하는 비디오 압축 형식 신호의 복호방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050123034A KR100672585B1 (ko) | 2005-12-14 | 2005-12-14 | 비디오 압축 형식 신호의 복호방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050123034A KR100672585B1 (ko) | 2005-12-14 | 2005-12-14 | 비디오 압축 형식 신호의 복호방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100672585B1 true KR100672585B1 (ko) | 2007-01-24 |
Family
ID=38014451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050123034A KR100672585B1 (ko) | 2005-12-14 | 2005-12-14 | 비디오 압축 형식 신호의 복호방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100672585B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040106401A (ko) * | 2002-04-26 | 2004-12-17 | 가부시키가이샤 엔티티 도코모 | 신호 부호화 방법, 신호 복호 방법, 신호 부호화 장치,신호 복호 장치, 신호 부호화 프로그램 및 신호 복호프로그램 |
KR20060038189A (ko) * | 2004-10-29 | 2006-05-03 | 삼성전자주식회사 | 컨텍스트 기반 적응형 이진 산술 복부호화 방법 및 장치 |
KR20060110713A (ko) * | 2005-04-19 | 2006-10-25 | 삼성전자주식회사 | 향상된 코딩 효율을 갖는 컨텍스트 기반 적응적 산술 코딩및 디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오코딩 및 디코딩 방법과 이를 위한 장치 |
-
2005
- 2005-12-14 KR KR1020050123034A patent/KR100672585B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040106401A (ko) * | 2002-04-26 | 2004-12-17 | 가부시키가이샤 엔티티 도코모 | 신호 부호화 방법, 신호 복호 방법, 신호 부호화 장치,신호 복호 장치, 신호 부호화 프로그램 및 신호 복호프로그램 |
KR20060038189A (ko) * | 2004-10-29 | 2006-05-03 | 삼성전자주식회사 | 컨텍스트 기반 적응형 이진 산술 복부호화 방법 및 장치 |
KR20060110713A (ko) * | 2005-04-19 | 2006-10-25 | 삼성전자주식회사 | 향상된 코딩 효율을 갖는 컨텍스트 기반 적응적 산술 코딩및 디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오코딩 및 디코딩 방법과 이를 위한 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4295356B1 (ja) | 画像および/またはビデオ符号器と復号器における変換係数を符号化するための方法と装置および対応するコンピュータプログラムと対応するコンピュータによる読み出し可能な記憶媒体 | |
KR100648258B1 (ko) | 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 | |
KR100856398B1 (ko) | 복수 매핑 테이블을 이용한 가변장 부호화 및 복호화방법과 그 장치 | |
TWI685245B (zh) | 資料編碼及解碼 | |
KR100801364B1 (ko) | 산술부호의 복호기 또는 부호화기와 역2치화 변환기 또는2치화 변환기의 사이에 중간 버퍼가 삽입된 복호장치 또는부호화 장치 | |
KR102039049B1 (ko) | 저-지연을 위한 샘플 배치 코딩 | |
CN111083476B (zh) | 编码和解码视频数据的方法及视频数据编码器和解码器 | |
TWI455594B (zh) | 影像記憶體壓縮方法與裝置 | |
US10791341B2 (en) | Binary arithmetic coding with progressive modification of adaptation parameters | |
US20050038837A1 (en) | Method and apparatus for binarization and arithmetic coding of a data value | |
US20050012648A1 (en) | Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables | |
US9001882B2 (en) | System for entropy decoding of H.264 video for real time HDTV applications | |
KR0180169B1 (ko) | 가변길이 부호기 | |
US10554988B2 (en) | Binary arithmetic coding with parameterized probability estimation finite state machines | |
JP2021520087A (ja) | Cabacのニューラルネットワーク実装に基づくビデオの符号化及び復号のための方法及び機器 | |
KR20070006445A (ko) | 하이브리드 엔트로피 부호화, 복호화 방법 및 장치 | |
TW201342919A (zh) | 資料編碼及解碼 | |
JP2009021775A (ja) | 符号化装置及び符号化方法 | |
JP4453398B2 (ja) | 符号化装置、プログラム、および符号化処理方法 | |
KR20060038189A (ko) | 컨텍스트 기반 적응형 이진 산술 복부호화 방법 및 장치 | |
KR100672585B1 (ko) | 비디오 압축 형식 신호의 복호방법 | |
JP5632328B2 (ja) | 符号量予測装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20101223 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |