도 4는 인코더 및 디코더의 일례를 나타낸 블록도이다.
시스템(400)은 디코더(412)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(411)를 포함한다. 인코더(411)와 디코더(412)는 네트워크를 통해 통신할 수 있다.
인코더(411)는 고 처리율 이진화 모드를 사용하여 인코딩하도록 구성된 전자 디바이스(421)를 포함한다. 전자 디바이스(421)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 5 및 도 6에 도시된 작업(operation)을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(412)는 고 처리율 이진화 모드를 사용하여 디코딩하도록 구성된 전자 디바이스(422)를 포함한다. 전자 디바이스(422)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 7 및 도 8에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 5는 전자 디바이스에서의 고 처리율 이진화 모드를 위한 방법의 일 구성을 나타낸 흐름도이다.
블록 511에서, 전자 디바이스(421)는 변환 및 양자화된 계수(TQC)의 블록을 취득한다. 판정 블록 512에서, 전자 디바이스(421)는 고 처리율 이진화 모드 조건이 충족되는지를 판정한다. 판정 블록 512에서, 조건이 충족되지 않으면, 블록 513에서 전자 디바이스(421)가 레귤러 코딩 모드와 바이패스 코딩 모드를 선택적으로 사용하여 블록을 코딩한다(종래의 CABAC 선택 스킴에 따름). 판정 블록 512에서 조건이 충족되면, 블록 514에서, 전자 디바이스(421)가 고 처리율 이진화 모드 및 바이패스 코딩 모드를 사용하여 블록을 코딩한다. 블록 515에서, 전자 디바이스(421)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
HTB 모드는 레벨 값의 코딩에 바이패스 코딩 모드를 사용한다. 레귤러 코딩 모드와는 대조적으로, 바이패스 코딩 모드는 입력 빈에 대해 고정된 확률 분포를 가정하기 때문에, 바이패스 코딩은 계산 비용이 많이 드는 컨텍스트 추정 단계 및 확률 갱신 단계를 생략한다.
코딩에 바이패스 코딩 모드를 사용하는 것에 더해, 종래의 CABAC와는 대조적인 방식으로, HTB 모드는 디코딩에 단순화된 부호 구조(simplified signing structure)를 사용한다. 예를 들어, 종래의 CABAC는 코딩에 Greater_than_1, Greater_than_2, Sign information, 및 Absolute-3을 포함한 네 개의 서브파트(sub-part)를 필요로 한다.
도 6은 고 처리율 이진화 모드를 사용한 인코더 처리의 일 구성을 나타낸 흐름도이다.
블록 612-615는 블록 514에서 수행되는 작업을 더 상세하게 나타낸다. 블록 612에서, 전자 디바이스(421)가 각각의 영이 아닌 값에, 절대값 빼기 일 함수(absolute value minus one function)를 적용하고 각각의 영이 아닌 값의 부호를 검사하여, TQC의 블록으로부터 임의의 영이 아닌 값에 대한 부호 및 레벨 정보를 생성한다. 설명의 편의상, 본 출원의 배경기술 부분으로부터 1D 배열된 TQC의 값 [4, 0, 3, -3, 2, 1, 0, -1, 0, ...]를 고려한다. 각각의 영이 아닌 값에, 절대값 빼기 일 함수를 적용하고 각각의 영이 아닌 값의 부호를 검사하여, 부호와 레벨 정보의 6개 조합을 다음과 같이 생성한다: +3, +2, -2, +1, +0, 및 -0.
블록 613에서, 전자 디바이스(421)는 매핑 테이블을 사용하여, 생성된 부호와 레벨 정보의 조합 각각에 입력 값을 매핑한다. 매핑 테이블은 도 9에 도시되어 있다. 도 9는 또한 블록 612 및 613에 따라 입력 값을 결정하기 위한 식도 보여준다.
블록 614에서, 전자 디바이스(421)는 복수의 이진화 테이블, 예컨대, 컨텍스트 적응적 가변 길이 코딩(Context Adaptive Variable Length Coding, CAVLC)의 VLC 테이블을 사용하여 입력 값에 대해 적응적 이진화를 수행한다. CAVLC의 VLC 테이블의 예는 도 10에 도시되어 있다. 도 10은 또한 이전의 입력 정보에 기초하여 이진화 테이블을 갱신하기 위한 식도 보여준다.
예에서, 블록 614는 적어도 제1 입력 값을 이진화하기 위해 VLC-Table-0(FIG. 10) 열의 초기에 사용하는 값을 포함한다. VLC 테이블 번호는 이전의 값이 주어진 임계값, 3, 5, 13, 27보다 클 때 단조 증가될 수 있다(monotomically increased). 따라서, 제1 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-1 열로부터의 값을 사용할 수 있고, 제2 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-2 열로부터의 값을 사용할 수 있고, 등등이다.
블록, 615에서, 전자 디바이스(421)가 CABAC 바이패스 코딩 모드를 사용한 적응적 이진화의 결과 값을 인코딩한다.
(고 처리율 이진화 모드 조건)
예에서, 이미지 데이터의 블록에 대응하는 특성이 미리 정해진 임계값보다 크면, 고 처리율 이진화 모드 조건이 충족된다, 예를 들어, 전자 디바이스(421)는 고 처리율 이진화 모드 지시자(indicator), 예컨대, HTB 모드 플래그를 값 1로 설정할 수 있다(이는 물론 디자인 선호도에 따라 HTB 모드 플래그의 디폴트 값을 변경하거나, 또는 HTB 모드 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다)
예에서, 전자 디바이스(421)는 코딩의 비트율이 미리 설정된 임계값보다 큰지를 판정한다. 비트율이 미리 설정된 임계값보다 크면, 고 처리율 이진화 모드 조건이 충족된다. 예에서, 미리 설정된 비트율 임계값은 QP 16에 해당하지만; 상이한 QP 값에 대응하는 미리 설정된 임계값이 사용될 수 있다.
예에서, (전자 디바이스(421) 또는 전자 디바이스(422)에 의한) 고 처리율 이진화 모드 조건이 충족하는지에 대한 판정은, 이미지 데이터의 대응하는 블록의 변환 유닛 레벨(예를 들어 변환 유닛에 의해 생성되는 레벨 값에 한정되지 않음)이 미리 설정된 임계값보다 큰 것인지에 기초한다.
예에서, 고 처리율 이진화 모드 조건은, 크기가 영보다 큰, 이미지 데이터의 대응하는 블록의 레벨 값의 수가 미리 설정된 임계값, 예컨대, 8보다 클 때, 충족될 수 있다. 다른 예에서, 고 처리율 이진화 모드 조건은, 크기가 미리 설정된 제1 임계값보다 큰, 이미지 데이터의 대응하는 블록의 레벨 값의 수가 미리 설정된 제2 임계값보다 클 때, 충족된다. 또 다른 예에서, 고 처리율 이진화 모드 조건은, 이미지 데이터의 대응하는 블록의 레벨 값이 미리 설정된 임계값보다 클 때, 충족된다.
도 20a∼도 20e는 직전의 두 단락에서 설명한 원리 중 적어도 일부에 따라 작동하는 시스템의 예에서 인코더 또는 디코더에 사용될 수 있는 구성의 일부 예를 보여준다. 도 20a는 도시된 바와 같이, 프로세스 1611-1616을 나타낸다. 도 20b는 도시된 바와 같이, 프로세스 1711-1716을 나타낸다. 도 20c는 프로세스 1801-1805 및 1814-1820을 나타낸다. 도 20d는 프로세스 1901-1905 및 1914-1920을 나타낸다. 도 20e에서, 도시된 바와 같이, 도 20c의 프로세스들이 프로세스 1816까지 수행된다. 프로세스 1816에서 카운터가 임계값보다 크면, 도 20e에 도시된 구성을 계속한다.
예에서, (전자 디바이스(421) 또는 전자 디바이스(422)에 의한) 고 처리율 이진화 모드 조건이 충족하는지에 대한 판정은 이미지 데이터의 대응하는 블록의 슬라이스 레벨(slice level)이 미리 설정된 임계값보다 큰지에 기초한다.
(고 처리율 이진화 모드 지시자)
예에서, 전자 디바이스(421)는 고 처리율 이진화 모드 지시자, 예컨대, HTB 모드 플래그를 헤더(header), 예컨대, 슬라이스 헤더(slice header)에 설정하도록 구성된다. 고 처리율 이진화 모드 지시자는 도 5에 도시된 프로세스가 슬라이스 헤더에 대응하는 블록(들)에 대해 실행되는지를 판정하는 데 사용될 수 있다.
예에서, HTB 모드 플래그를 "1"로 설정하는 것은, 전자 디바이스(421)로 하여금 "1"인 HTB 모드 플래그 값의 관찰에 응답하여 슬라이스 헤더에 대응하는 블록(들)에 대해 도 5의 흐름도에 도시된 프로세스를 수행하도록 한다. HTB 모드 플래그를 "0"으로 설정하는 것은 전자 디바이스(421)로 하여금 "0"인 HTB 모드 플래그 값의 관찰에 응답하여 종래의 CABAC 기술에 따라 슬라이스 헤더에 대응하는 블록(들)을 인코딩하도록 한다.
HTB 모드 플래그 값은 또한 디코딩을 위한 전자 디바이스(422)에 의해 관찰될 수 있다. 예에서, 전자 디바이스(422)는 HTB 모드 플래그 값 "1"의 발견에 응답하여 슬라이스 헤더에 대응하는 블록(들)에 대한 도 7의 흐름도에 도시된 프로세스에 따라, HTB 모드 플래그 값 "1"인 슬라이스 헤더에 대응하는 블록(들)을 디코딩한다. 전자 디바이스(422)는 HTB 모드 플래그 값 "0"의 발견에 응답하여 종래의 CABAC 기술에 따라 HTB 모드 플래그 값 "0"인 슬라이스 헤더에 대응하는 블록(들)을 디코딩한다.
도 7은 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드를 위한 방법의 일 구성을 나타낸 흐름도이다.
블록 710에서, 전자 디바이스(422)가 비트 스트림을 취득한다. 블록 711에서, 전자 디바이스(422)가 취득한 비트 스트림으로부터 이진 심볼을 복원한다.
판정 블록 712에서, 전자 디바이스(422)가 고 처리율 이진화 모드 조건이 충족되는지를 판정한다. 예에서, 판정은 슬라이스 헤더와 같은, 수신된 비트 스트림에 대응하는 헤더의 검사를 포함할 수 있다. 헤더를 검사하는 것은 고 처리율 이진화 모드 지시자의 값에 대해 취득된 비트 스트림에 대응하는 슬라이스 헤더를 검사하는 것을 포함한다. 판정 블록 712에서 조건이 충족되지 않으면, 블록 713에서 전자 디바이스(422)가 레귤러 코딩 모드와 바이패스 코딩 모드를 선택적으로 사용하여 이진 심볼을 디코딩한다.
판정 블록 712에서 조건이 충족되면, 블록 714에서 전자 디바이스(421)가 고 처리율 이진화 모드와 바이패스 디코딩 모드를 사용하여 이진 심볼을 디코딩한다. 전자 디바이스(422)는 TQC의 취득된 블록을 메모리 디바이스에 저장할 수 있고/있거나 블록 715에서 비디오 데이터를 복원할 수 있다.
도 8은 고 처리율 이진화 모드를 사용한 디코더 처리의 일 구성을 나타낸 흐름도이다.
블록 812-815는 블록 714에서 수행되는 작업을 더욱 자세하게 나타낸다. 블록 812에서, 전자 디바이스(422)는 인코딩된 이진 심볼을 바이패스 디코딩한다. 블록 813에서, 전자 디바이스(422)가 바이패스 디코딩의 결과를 역이진화한다. 블록 814에서, 전자 디바이스(422)가 매핑 테이블을 사용하여 역이진화로부터 복원된 입력 값을 부호 및 레벨 정보에 매핑한다. 블록 815에서, 부호 및 레벨 정보를 사용하여 변환 및 양자화된 계수(TQC)의 블록을 디코딩한다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 변환 및 양자화된 계수(TQC)의 블록을 취득하는 것을 포함할 수 있다. 다른 작업은 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 것을 포함할 수 있다. 다른 작업은 고 처리율 이진화 모드 조건이 충족된다는 판정에 응답하여 고 처리율 이진화 모드를 사용하여 제1 비트 스트림을 생성하는 것을 포함한다. 다른 작업은 고 처리율 이진화 모드 조건이 충족되지 않는다는 판정에 응답하여 제2 비트 스트림을 생성하는 것을 포함할 수 있다. 다른 작업은 생성된 제1 또는 제2 비트 스트림을 디코더에 송신하는 것을 포함할 수 있다.
예에서, 고 처리율 이진화 모드를 사용한 제1 비트 스트림의 생성은 추가적인 작업을 포함할 수 있다. 하나의 작업은, 영이 아닌 값 각각에 대해 절대값 빼기 일 함수를 적용하여 블록으로부터 임의의 영이 아닌 값에 대한 부호 및 레벨 정보를 생성하고 영이 아닌 값 각각의 부호를 검사하는 것을 포함할 수 있다. 다른 작업은 매핑 테이블을 사용하여, 생성된 부호와 레벨 정보의 조합 각각에 입력 값을 매핑하는 것을 포함할 수 있다. 다른 작업은 복수의 이진화 테이블을 사용하여 매핑된 입력 값의 적응적 이진화를 수행하는 것을 포함할 수 있다. 다른 작업은 적응적 이진화의 결과를 인코딩하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블은 CAVLC의 VLC를 포함한다. 적응적 이진화의 결과를 인코딩하는 것은 CABAC 바이패스 코딩 모드를 이용하는 작업을 더 포함할 수 있다.
예에서, 복수의 이진화 테이블을 사용한 매핑된 입력 값들의 적응적 이진화는 추가적인 작업을 더 포함할 수 있다. 하나의 작업은 매핑된 입력 값 중 하나가 미리 설정된 임계값보다 큰지를 판정하는 것을 포함할 수 있다. 다른 작업은 상기 매핑된 입력 값이 미리 설정된 임계값보다 크다는 판정에 응답하여 테이블 갱신을 수행하는 것을 포함할 수 있다. 예에서, 테이블 갱신 선택은 테이블의 세트에서 하나의 테이블의 선택을 포함한다.
예에서, 제1 비트 스트림의 생성은 추가적인 작업을 포함할 수 있다. 하나의 작업은 CABAC에 따라 레귤러 코딩 모드와 바이패스 코딩 모드를 선택적으로 이용하여 블록을 코딩하는 것을 포함할 수 있다. 다른 작업은 바이패스 코딩 모드만을 이용하여 제1 비트 스트림을 생성하는 것을 포함할 수 있다.
예에서, 고 처리율 이진화 모드 조건이 충족되는지의 판정은 이미지 데이터의 블록에 대응하는 특성이 미리 설정된 임계값보다 큰지에 기초한다.
예에서, 고 처리율 이진화 모드 조건이 충족되는지의 판정은 이미지 데이터의 대응하는 블록의 슬라이스 레벨이 미리 설정된 임계값보다 큰지에 기초한다.
예에서, 고 처리율 이진화 모드 조건이 충족하는지의 판정은 이미지 데이터의 대응하는 블록의 송신 유닛 레벨이 미리 설정된 임계값보다 큰지에 기초한다.
(HEVC의 CABAC를 위한 무손실 코딩 기술)
도 12는 무손실 코딩 기술을 위한 인코더 및 디코더의 예를 나타낸 블록도이다.
시스템(1400)은 디코더(1412)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(1411)를 포함한다. 인코더(1411)와 디코더(1412)는 네크워크를 통해 통신할 수 있다.
인코더(1411)는 HEVC의 CABAC를 위한 무손실 코딩 기술을 사용하여 인코딩하도록 구성된 전자 디바이스(1421)를 포함한다. 전자 디바이스(1421)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 13, 도 16 및 도 18에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(1412)는 는 HEVC의 CABAC를 위한 무손실 코딩 기술을 사용하여 디코딩하도록 구성된 전자 디바이스(1422)를 포함한다. 전자 디바이스(1422)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 15, 도 17 및 도 19에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 13은 전자 디바이스에서의 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 911에서, 전자 디바이스(1421)가 잔차 샘플을 나타내는 블록을 취득한다. 일례에서, 지그재그 스캐닝 방향은 이웃하는 화소 간의 공간 중복성(redundancy)를 제거하는 데 사용되는 인트라 예측의 방향에 맞도록 재정의될 수 있다. 무손실 인트라 코딩 모드에 이용 가능한 인트라 예측 모드는 몇 가지가 있다. 일례에서, 수직 인트라 예측 모드(vertical intra prediction mode)에서, 위쪽의 화소가 현재 화소 값의 예측 값이 되고, 현재 값과 예측 값(수직 모드에서 위쪽의 화소 값) 사이의 차가 잔차 샘플 값이 된다. 컨텍스트 모델 선택은 또한 인트라 예측의 방향과 대응하는 블록 크기에 따라 달라질 수도 있다.
블록 912에서, 전자 디바이스(1421)가 신택스 요소의 시퀀스에 사용될 유의성 맵(significance map)을 생성한다. 블록 913에서, 전자 디바이스(1421)가 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드를 블록의 최종 위치의 레벨에 대응하는 값으로 채운다.
블록 914에서, 전자 디바이스(1421)가 상기 값을 가지는 유의성 맵을 포함하는 신택스 요소의 시퀀스를 생성한다. 신택스 요소의 시퀀스의 생성은 종래의 CABAC 무손실 코딩 모드의 최종 위치 코딩 단계를 생략한다.
도 14는 도 13에 나타낸 구성에 따른 신택스 요소의 시퀀스를 보여주는 테이블이다.
몇 가지 차이점이 도 11에 도시된 신택스 요소의 시퀀스와 비교하여 도 14에 도시된 신택스 요소의 시퀀스의 대비에 의해 관찰될 수 있다. 도 11에 도시된 신택스 요소의 시퀀스는, 종래의 CABAC 무손실 코딩 모드가 최종 위치 코딩 단계를 포함하기 때문에, Last_position_X 필드 및 Last_position_Y 필드를 포함한다. 이와는 대조적으로, 도 14에 도시된 신택스 요소의 시퀀스는, 도 14의 구성이 최종 위치 코딩 단계를 생략하기 때문에, Last_position_X 필드 및 Last_position_Y 필드를 포함하지 않는다.
신택스 요소의 시퀀스 둘 다는 유의성 맵을 포함하지만, 그 유의성 맵 사이에는 차이점이 존재한다. 도 11의 신택스 요소의 시퀀스의 유의성 맵에서, 유의성 맵 필드는, 채워진 Last_position_X/Last_position_Y 필드와 부합하도록 채워지지 않는다. 이와는 대조적으로, 도 14에서, 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드는 블록의 최종 위치의 레벨에 대응하는 값, 즉 예의 블록에 대해 "0"으로 채워진다.
도 15는 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 구성을 나타낸 흐름도이다.
블록 1011에서, 전자 디바이스(1422)가, 비트 스트림으로부터, 블록의 최종 스캐닝 위치에 대응하는 값의 번호를 포함하는 유의성 맵 필드를 가지는 신택스 요소의 시퀀스를 복원한다. 블록 1012에서, 유의성 맵 및 유의성 맵의 상기 값을 사용하여 블록의 레벨을 디코딩한다. 블록 1013에서, 메모리 디바이스에 잔차 값(residual value)에 대응하는 취득된 블록을 저장 및/또는 비디오 데이터를 복원한다.
도 16은 전자 디바이스에서의 무손실 코딩 방법의 다른 구성을 나타낸 흐름도이다.
블록 1111에서, 전자 디바이스(1421)가 잔차 샘플의 블록에 대한 레벨 정보를 나타내는 신택스 요소의 시퀀스를 취득한다. 블록 1112에서, 복수의 이진화 테이블, 예컨대, CAVLC의 VLC 테이블(도 10)을 사용하여 신택스 요소의 시퀀스의 절대값-3(Absolute-3) 부분의 값에 대해 적응적 이진화를 수행하며, 신택스 요소의 시퀀스의 절대값-3 부분의 값은 복수의 이진화 테이블에 대해 입력 값으로 사용된다. 이전의 입력 정보에 기초하여 이진화 테이블을 갱신하기 위한 식은 이하에 나타낸다:
예에서, 블록 1111은 적어도 제1 입력 값을 이진화하기 위해 인터 슬라이스(inter slice)에 대한 VLC-Table-0(FIG. 10) 열 및 인트라 슬라이스(intra slice)에 대한 VLC-Table-1 열로부터의 초기에 사용하는 값을 포함한다. VLC 테이블 번호는 이전의 값이, 예컨대, 주어진 임계값, 3, 5, 13, 27보다 클 때 단조 증가될 수 있다. 따라서, 제1 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-1 열로부터의 값을 사용할 수 있고, 제2 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-2 열로부터의 값를 사용할 수 있고, 등등이다.
블록 1113에서, 전자 디바이스(1421)가 CABAC 바이패스 코딩 모드를 사용하여 적응적 이진화의 결과 값을 인코딩한다.
도 17은 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 다른 구성을 나타낸 흐름도이다.
블록 1211에서 전자 디바이스(1422)가 비트 스트림으로부터 이진 심볼을 복원한다. 블록 1212에서, 전자 디바이스(1422)가 이진 심볼을 바이패스 디코딩한다. 블록 1213에서, 전자 디바이스(1422)가 바이패스 디코딩의 결과를 적응적으로 역이진화한다. 블록 1214에서, 적응적 역이진화의 결과를 사용하여 잔차 정보를 나타내는 블록을 복원한다.
도 18은 전자 디바이스에서의 무손실 코딩 방법의 또 다른 구성을 나타낸 흐름도이다.
블록 1311에서, 전자 디바이스(1421)가 CABAC의 컨텍스트 모델의 서브세트만을 액세스한다. CABAC의 컨텍스트 모델의 수는 184개일 수 있다. 서브세트를 생성하기 위해, 이들 컨텍스트 모델은 컨텍스트 모델의 연관 특성에 기초하여, 예컨대 어느 컨텍스트 모델이 주파수 성분과 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 스캔 위치와 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 CABAC의 최종 위치 코딩 단계와 연관되어 있는지에 기초하여, 등등, 또는 이들의 조합에 기초하여, 필터링될 수 있다. 필터링은 일례에서 전자 디바이스(1421)에 의해 수행될 수 있지만, 다른 예에서는 전자 디바이스(1421)가 무손실 코딩 모드를 위해 제공된 서브세트를 액세스할 수 있도록, 서브세트가 전자 디바이스(1421)에 제공될 수 있다. 예에서는, 서브세트를 생성하기 위해, CABAC의 컨텍스트 모델은 컨텍스트 모델의 연관된 특성에 기초하여, 예컨대, 어느 컨텍스트 모델이 주파수 성분에 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 스캔 위치와 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 CABAC의 최종 위치 코딩 단계와 연관되어 있는지에 기초하여, 등등, 또는 이들의 임의 조합에 기초하여, 분류될 수 있다. 예에서, 주파수 성분과 스캔 위치는 같고 상호교환할 수 있다.
일례에서, 서브세트는 제1 주파수 성분과 동일하지 않는 주파수 성분을 갖는 CABAC 컨텍스트 모델을 포함하지 않을 수 있다. 예에서, 결과 서브세트는 26개의 컨텍스트 모델, 즉 유의성 맵을 코딩하기 위한 두 개의 컨텍스트 모델(하나는 제1 루마 주파수 성분을 위한 것이고 다른 하나는 제1 크로마 주파수 성분을 위한 것임), Greater_than_1 플래그의 제1 루마 주파수 성분의 코딩, Greater_than_1 플래그의 제1 크로마 주파수 성분의 코딩, Greater_than_2 플래그의 제1 루마 주파수 성분의 코딩, 및 Greater_than_2 플래그의 제1 크로마 주파수 성분의 코딩을 위한 각각 6개의 컨텍스트 모델을 포함할 것이다. 따라서, 총 24개의 컨텍스트 모델이 Greater_than_1 및 Greather_than_2를 위해 사용된다. 예에서, 상기 제1 주파수 성분은 블록 1312에서 유의성 맵을 코딩할 때만 액세스된다.
표 3에 나타낸 바와 같이, 플래그의 제1 루마 주파수를 코딩하기 위한 5개의 컨텍스트 모델은 서브블록의 유형 및 LargerT1 값에 따라 달라질 수 있으며, LargerT1 값은 이전 서브 블록에서 1보다 큰 계수 레벨 값의 개수이다. 예에서, 용어 "서브블록(sub-block)"은 잔차 샘플을 분할한 것(또는 TQC에 대한 블록)을 가리킨다. 예를 들어, 서브블록 크기가 4x4인 경우, 크기 8x8의 잔차 샘플은 4개의 4x4 서브블록으로 분할된다. 유사하게, 서브블록 크기가 8x4인 경우, 크기 32x8의 잔차 샘플은 8개의 8x4 서브블록으로 분할된다. 서브블록들은 코딩 순서에 의해 식별되며, 서브블록 0은 첫 번째(제1) 코딩된 서브블록을 나타낸다. 예에서, 제1 코딩된 서브블록은 블록의 오른쪽 아래(bottom right)에 위치한 서브블록이다. 다른 예에서, 제1 코딩된 서브블록은 블록 중간에 위치한 서브블록이다.
[표 3]
블록 1312에서, 전자 디바이스(1421)가 컨텍스트 모델의 서브세트를 사용하여 유의성 맵을 코딩한다.
단락 [0127]에서 설명하는 바와 같이, 제1 주파수 성분(또는 스캐닝 위치)과 동일하지 않은 주파수 성분(또는 스캐닝 위치)을 가진 컨텍스트 모델은 무손실 코딩 모드에 사용될 수 없다. 이것은 무손실 코딩 모드에 대한 계산 복잡도 및 메모리를 줄이는 이점이 있다. 컨텍스트 모델의 제1 서브세트는 유의성 맵 처리에 사용될 수 있다. 컨텍스트 모델의 제2 서브세트는 레벨 코딩, 예컨대 Greater_than_1 코딩 및/또는 Greater_than_2 코딩에 사용될 수 있다. 제1 서브세트는 제2 서브세트와 상이할 수 있다.
이상에서 설명한 원리 중 적어도 일부를 적용한 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는 단 하나의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는, 색 정보(루마/크로마)에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는, 예측 유형, 예컨대,블록 내의 인트라 프레임(intra-frame) 또는 인터 프레임(inter-frame) 예측의 사용에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 수 개의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는 블록 크기에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는 서브블록 유형에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다.
이상에서 설명한 원리 중 적어도 일부를 적용한 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제2 서브세트는 단 하나의 컨텍스트 모델을 포함할 수 있다. 이상에서 설명한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제2 서브세트는, 색 정보(루마/크로마)에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 이상에서 설명한 원리 중 적어도 일부를 적용한 또 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제2 서브세트는, 예측 유형, 예컨대, 블록 내의 인트라 프레임 또는 인터 프레임 예측의 사용에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 수 개의 컨텍스트 모델을 포함할 수 있다. 이상에 설명한 원리 중 적어도 일부를 적용한 다른 예에서, 레벨 코딩에 사용된 컨텍스트 모델의 제1 서브세트는 블록 크기에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 이상에서 설명한 원리 중 적어도 일부를 적용한 다른 예에서, 레벨 코딩 처리에 사용된 컨텍스트 모델의 제1 서브세트는, 서브블록 유형에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다.
도 19는 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 또 다른 구성을 나타낸 흐름도이다.
블록 1511에서, 전자 디바이스(1422)가 CABAC의 컨텍스트 모델의 서브세트만을 액세스한다. 블록 1512에서, 전자 디바이스(1422)가 컨텍스트 모델의 서브세트를 사용하여 비트 스트림으로부터 이진 심볼을 복원한다. 블록 1513에서, 전자 디바이스(1422)가 디코딩 결과를 사용하여 비디오 데이터를 복원한다.
상술한 바에서, 전자 디바이스(1421)에 의해 구현될 수 있는 구성은 도 13, 도 16 및 도 18에 나타나 있다. 이러한 구성을 모두를 갖는 인코더를 구성하는 것은 공지의 CABAC 무손실 코딩모드에 비해 코딩 성능을 향상시킨다. 그럼에도 불구하고, 임의의 조합으로 모든 이러한 구성보다 작은 구성, 이러한 구성 중 하나 또는 이러한 구성 중 어느 두 개를 갖는 인코더를 구성하는 것도 가능하고 실제적이며, 또한 공지의 CABAC 무손실 코딩모드에 비해 코딩 성능을 향상시킨다.
전술한 바에서, 전자 디바이스(1422)에 의해 구현될 수 있는 구성은 도 14, 도 17 및 도 19에 나타나 있다. 이러한 구성 모두를 갖는 디코더를 구성하는 것은 공지의 CABAC 무손실 코딩모드에 비해 코딩 성능을 향상시킨다. 그럼에도 불구하고, 임의의 조합으로 모든 이러한 구성보다 작은 구성, 이러한 구성 중 하나 또는 이러한 구성 중 어느 두 개를 갖는 디코더를 구성하는 것도 가능하고 실제적이며, 또한 공지의 CABAC 무손실 코딩 모드에 비해 코딩 성능을 향상시킨다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 무손실 인코딩을 위한 잔차 샘플을 취득하는 것을 포함할 수 있다. 다른 작업은 유의성 맵을 생성하는 것을 포함할 수 있으며, 생성하는 것은 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드를 블록의 최종 스캐닝 위치의 레벨에 대한 값으로 채우는 것을 포함한다. 다른 작업은 값을 가지는 유의성 맵을 포함하는 신택스 요소의 시퀀스를 생성하는 것을 포함할 수 있다. 다른 작업은 디코더에 생성된, 신택스 요소의 시퀀스를 나태는 비트 스트림을 송신하는 것을 포함할 수 있다.
예에서, 신택스 요소의 시퀀스는 컨텍스트 적응적 이진 산술 코딩(CABAC)의 최종 위치 코딩 단계를 수행하지 않고 생성된다.
예에서, 다른 작업은 복수의 이진 테이블을 사용하여 적응적 이진화를 수행하는 것을 포함할 수 있으며, 신택스 요소의 시퀀스의 Absolute-3 부분의 값은 복수의 이진화 테이블에 대해 입력 값으로서 사용된다. 다른 작업은 적응적 이진화의 결과를 인코딩하는 것을 포함할 수 있다. 복수의 이진화 테이블은 CAVLC의 VLC 테이블일 수 있다.
예에서, 적응적 이진화의 결과를 인코딩하는 것은, 추가적인 작업을 포함할 수 있다. 추가적인 작업은 CABAC 바이패스 코딩 모드를 이용하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블을 사용하여 입력 값의 적응적 이진화는 추가적인 작업을 포함할 수 있다. 추가적인 작업은 입력 값 중 하나가 미리 설정된 임력값보다 큰지를 판정하는 것을 포함할 수 있다. 추가적인 작업은 상기 입력 값이 미리 설정된 임계값보다 크다는 판정에 응답하여 테이블 갱신을 수행하는 것을 포함할 수 있다.
예에서, 다른 작업은 CABAC의 컨텍스트 모델의 서브세트만을 액세스하는 것을 포함할 수 있다. 다른 작업은 유의성 맵을 코딩하기 위해 컨텍스트 모델의 서브세트를 사용하는 것을 포함할 수 있다. 서브세트는 제1 주파수와 같지 않은 주파수 성분을 가지는 CABAC의 컨텍스트 모델을 포함할 수 있다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 무손실 인코딩을 위한 잔차 샘플을 취득하는 것을 포함할 수 있다. 다른 작업은 블록을 나타내기 위한 신택스 요소의 시퀀스를 생성하는 것을 포함할 수 있다. 다른 작업은 복수의 이진화 테이블을 사용하여 적응적 이진화를 수행하는 것을 포함할 수 있으며, 신택스 요소의 시퀀스의 Absolute-3 부분의 값은 복수의 이진화 테이블을 위한 입력 값으로 사용된다. 다른 작업은 적응적 이진화의 결과를 인코딩하는 것을 포함할 수 있다. 다른 작업은 디코더에 인코딩한 것을 전송하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블은 CAVLC의 VLC 테이블이다.
예에서, 적응적 이진화의 결과를 인코딩하는 것은 추가적인 작업을 포함할 수 있다. 추가적인 작업은 컨텍스트 적응적 이진 산술 코딩(CABAC) 바이패스 코딩 모드를 이용하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블을 사용한 입력 값의 적응적 이진화는 추가적인 작업을 포함할 수 있다. 추가적인 작업은 입력 값 중 하나가 미리 설정된 임계값보다 큰지를 판정하는 것을 포함할 수 있다. 추가적인 작업은 상기 입력 값이 미리 설정된 임계값보다 크다는 판정에 응답하여 테이블 갱신을 수행하는 것을 포함할 수 있다.
예에서, 다른 작업은 유의성 맵을 생성하는 것을 포함할 수 있으며, 상기 생성하는 것은 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드를 블록의 최종 스캐닝 위치의 레벨에 대응하는 값으로 채우는 것을 포함할 수 있다. 다른 작업은 생성된 유의성 맵을 사용하여 신택스 요소의 시퀀스를 생성하는 것을 포함할 수 있다.
예에서, 신택스 요소의 시퀀스는 CABAC의 최종 위치 코딩 단계를 수행하지 않고 생성된다.
일례에서는, 방법을 제공한다. 상기 방법은 디코더를 사용하여 수행될 수 있다. 상기 방법의 하나의 작업은 어느 컨텍스트 모델이 주파수 성분과 연관되어 있는지에 기초하여 컨텍스트 적응적 이진 산술 코딩(CABAC)의 컨텍스트 모델을 필터링하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 비트 스트림을 취득하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 비트 스트림으로부터 이진 심볼을 복원하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 필터링된 컨텍스트 모델을 사용하여 이진 심보를 디코딩하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 디코딩의 결과를 사용하여 비디오 데이터를 복원하는 것을 포함할 수 있다.
예에서, 다른 작업은, 비트 스트림으로부터, 잔차 샘플을 나타내는 블록의 최종 스캐닝 위치에 대응하는 값으로 채워진 유의성 맵을 갖는 신택스 요소의 시퀀스를 복원하는 것을 포함할 수 있다. 다른 작업은 유의성 맵 및 유의성 맵의 상기 값을 사용하여 블록의 레벨을 디코딩하는 것을 포함할 수 있다.
예에서, 블록의 레벨을 디코딩하는 것은 CABAC의 최종 위치 디코딩 단계를 수행하지 않고 수행될 수 있다.
예에서, 다른 작업은 복원된 이진 심볼을 바이패스 디코딩하는 것을 포함할 수 있다. 다른 작업은 바이패스 디코딩의 결과를 적응적으로 역이진화하는 것을 포함할 수 있다. 다른 작업은 역이진화의 결과를 사용하여 잔차 정보를 나타내는 블록을 복원하는 것을 포함할 수 있다.
예에서, 다른 작업은 적응적 역이진화를 위한 CAVLC의 복수의 VLC 테이블을 사용하는 것을 포함할 수 있다.
예에서, 바이패스 디코딩은 CABAC 바이패스 디코딩 모드를 이용하는 것을 포함할 수 있다.
도 21은 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 방법의 일 구성을 나타낸 흐름도이다.
블록 2611에서 전자 디바이스(422)가 비트 스트림을 취득한다. 블록 2612에서 전자 디바이스(422)가 레벨 값의 블록을 취득한다. 예에서, 블록의 TQC의 블록을 포함한다.
블록 2613에서, 전자 디바이스(422)가 영이 아닌 레벨 값의 개수를 결정한다. 판정 블록 2614에서, 전자 디바이스(422)가 개수가 미리 설정된 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 임계값은 8일 수 있으며, 이는 4x4 블록의 개수 값의 절반이다. N개 레벨 값을 갖는 블록 크기를 가지는 예에서, 임계값은 N의 50%에 상당할 수 있다. 예에서, 전자 디바이스(422)는 전자 디바이스(421)로부터의 시그널링을 수신한다. 전자 디바이스(421)에 의해 송신되는 시그널링은 미리 설정된 임계값을 지정할 수 있거나 미리 설정된 임계값을 결정하기 위해 전자 디바이스(421)에 의해 사용될 수 있는 정보를 포함할 수 있다.
판정 블록 2614에서 개수가 미리 설정된 임계값 이하이면, 블록 2615에서 전자 디바이스(422)는 영이 아닌 레벨 값을 제1 이진화 방법으로 디코딩한다. 판정 블록 2614에서 상기 개수가 미리 설정된 임계값보다 크면, 블록 2616에서 전자 디바이스(422)가 영이 아닌 레벨 값을 제1 이진화 방법과는 다른 제2 이진화 방법으로 디코딩한다. 예에서, 제2 이진화 방법은, 앞서 설명한 HTB 모드와 같은, 고 처리율 역이진화 모드를 포함할 수 있다. 예에서, 제1 이진화 모드는 종래의 CABAC의 이진화를 포함할 수 있다.
도 22는 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 방법의 다른 구성을 나타낸 흐름도이다.
블록 2711에서, 전자 디바이스(422)가 비트 스트림을 취득한다. 블록 2712에서, 전자 디바이스(422)가 레벨 값의 블록을 취득한다. 예에서, 블록은 TQC의 블록을 포함한다.
블록 2713에서, 전자 디바이스(422)가 절대값이 제1 임계값보다 큰, 레벨 값의 개수를 결정한다. 다른 예에서는 다른 미리 설정된 제1 임계값이 사용될 수 있지만, 예에서, 미리 설정된 제1 임계값은 1 또는 2일 수 있다. 판정 블록 2714에서, 전자 디바이스(422)는 그 개수가 미리 설정된 제2 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 제2 임계값은 8일 수 있으며, 이는 4x4 블록의 개수 값의 절반이다. N개 레벨 값을 갖는 블록 크기를 가지는 예에서, 미리 설정된 제2 임계값은 N의 50%에 상당할 수 있다.
예에서, 전자 디바이스(422)는 전자 디바이스(421)로부터의 시그널링을 수신한다. 전자 디바이스(421)에 의해 송신되는 시그널링은 미리 설정된 제1 임계값 및/또는 미리 설정된 제2 임계값을 지정할 수 있거나, 또는 미리 설정된 제1 임계값 및/또는 미리 설정된 제2 임계값을 결정하기 위해 전자 디바이스(421)에 의해 사용될 수 있는 정보를 포함할 수 있다.
판정 블록 2714에서 개수가 미리 설정된 제2 임계값 이하이면, 블록 2715에서 전자 디바이스(422)는 영이 아닌 레벨 값을 제1 이진화 방법으로 디코딩한다. 판정 블록 2714에서 상기 개수가 미리 설정된 임계값보다 크면, 블록 2716에서 전자 디바이스(422)가 영이 아닌 레벨 값을 제1 이진화 방법과는 다른 제2 이진화 방법으로 디코딩한다. 예에서, 제2 이진화 방법은, 앞서 설명한 HTB 모드와 같은, 고 처리율 역이진화 모드를 포함할 수 있다. 예에서, 제1 이진화 모드는 공지의 CABAC 디코딩의 이진화를 포함할 수 있다.
도 23은 인코더 및 디코더 예를 나타낸 블록도이다.
시스템(2400)은 디코더(2412)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(2411)를 포함한다. 인코더(2411)와 디코더(2412)는 네크워크를 통해 통신할 수 있다.
디코더(2412)는 고 처리율 유의성 맵 처리를 사용하여 디코딩하도록 구성된 전자 디바이스(2422)를 포함한다. 전자 디바이스(2422)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 24 - 도 27에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
인코더(2411)는 전자 디바이스(2421)를 포함하며, 이는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있으며, 메모리는 도 24 - 도 27에 도시된 구성에 대한 설명 및 그에 대응하는 설명으로부터 당업자에 의해 이해될 것인 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
도 24는 디코딩 측의 전자 디바이스에서의 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
블록 2801에서, 전자 디바이스(2422)가 비트 스트림을 취득한다. 블록 2802에서 전자 디바이스(2422)가 레벨 값의 블록을 취득한다. 예에서, 블록은 TQC의 블록을 포함한다. 블록 2803에서, 전자 디바이스(2422)가 블록의 레벨 값, 예컨대, 블록의 제1 레벨 값 또는 블록의 다음 레벨 값을 취득한다.
판정 블록 2804에서, 전자 디바이스(2422)가, 취득된 레벨 값이 블록의 최종 레벨 값인지를 판정한다. 판정 블록 2804에서 취득된 레벨 값이 최종 레벨 값이 아니면, 전자 디바이스(2422)는 판정 블록 2804를 처리한다. 판정 블록 2804에서 취득된 레벨 값이 최종 레벨 값이면, 블록 2805에서 전자 디바이스(2422)가 레벨 값의 크기(이는 각 레벨 값의 부호 정보 및 절대 크기 모두를 포함할 수 있음)를 디코딩한다.
판정 블록 2814를 다시 참조하여, 전자 디바이스(2422)가, 제1 디코딩 방법을 사용하여 취득된 레벨 값이 영이 아닌지를 판정한다. 판정 블록 2814에서 취득된 레벨 값이 영이 아니면, 전자 디바이스(2422)는 블록 2815로 진행하고; 그렇지 않으면 전자 디바이스(2422)는 블록 2803으로 돌아간다. 블록 2815에서, 전자 디바이스(2422)가 카운터를 증가시킨다.
판정 블록 2816에서, 전자 디바이스(2422)가 카운터의 현재 카운트 값이 미리 설정된 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 임계값은 도 21을 참조하여 설명한 미리 설정된 임계값을 포함할 수 있다. 판정 블록 2816에서, 카운터의 현재 카운트 값이 미리 설정된 임계값보다 크면, 전자 디바이스(2422)는 블록 2817로 진행하고; 그렇지 않으면 전자 디바이스(2422)는 블록 2803으로 돌아간다.
블록 2817에서, 전자 디바이스(2422)가 블록의 다음 레벨 값 취득한다. 판정 블록 2818에서, 전자 디바이스(2422)가 취득된 레벨 값이 블록의 최종 레벨 값인지를 판정한다. 판정 블록 2818에서 취득된 레벨 값이 최종 레벨 값이 아니면, 전자 디바이스(2422)는 블록 2819로 진행하고; 그렇지 않으면 블록 2820에서 전자 디바이스(2422)가 레벨 값의 크기를 디코딩한다.
블록 2819에서, 전자 디바이스(2422)가 제1 디코딩 방법과는 다른 제2 디코딩 방법을 사용하여 취득된 레벨 값이 영이 아닌지를 판정한다. 예에서, 제2 디코딩 방법은 고 처리율 디코딩 방법, 바이패스 디코딩 방법, 등을 포함한다. 예에서, 제1 디코딩 방법은 CABAC의 레귤러 디코딩 모드를 포함한다.
상기에 따라, 유의성 맵은 요소단위(element-by-element), 예컨대 유의성 맵 필드 단위(significance map field-by-significance map field)로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 나머지 유의성 맵 부분의 디코딩을 변경할 수 있다. 고 처리율 또는 바이패스 유의성 맵 디코딩 모드가 나머지 유의성 맵 부분에 대해 사용될 수 있다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
도 25는 디코딩 측의 전자 디바이스에서의 고 처리율 유의성 맵 디코딩 방법의 다른 구성을 나타낸 흐름도이다.
도 25에 도시된 방법에서, 프로세스 2901-2905는 프로세스 2801-2805(도 24)와 유사하게, 도시된 바와 같이 수행될 수 있다.
블록 2914에서, 전자 디바이스(2422)가 제1 디코딩 방법을 사용하여 취득된 레벨 값의 절대값이 제1 임계값보다 큰지를 판정한다. 다른 예에서는 다른 제1 임계값이 사용될 수 있지만, 예에서, 제1 임계값은 1 또는 2일 수 있다. 판정 블록 2914에서 취득된 레벨 값의 절대값이 제1 임계값보다 크면, 전자 디바이스(2422)는 블록 2915로 진행하고; 그렇지 않으면, 전자 디바이스(2422)는 블록 2903으로 돌아간다. 블록 2915에서, 전자 디바이스(2422)는 카운터를 증가시킨다.
판정 블록 2916에서, 전자 디바이스(2422)가 카운터의 현재 카운트가 미리 설정된 제2 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 제2 임계값은 8일 수 있으며, 이는 4x4 블록의 개수 값의 절반이다. N개 레벨 값을 갖는 블록 크기를 가지는 예에서, 미리 설정된 제2 임계값은 N의 50%에 상당할 수 있다. 판정 블록 2916에서, 카운터의 현재 카운트가 미리 설정된 제2 임계값보다 크면, 전자 디바이스(2422)는 블록 297로 진행하고; 그렇지 않으면 전자 디바이스(2422)는 블록 2903으로 돌아간다.
블록 2917에서, 전자 디바이스(2422)가 블록의 다음 레벨 값 취득한다. 판정 블록 2918에서, 전자 디바이스(2422)가 취득된 레벨 값이 블록의 최종 레벨 값인지를 판정한다. 판정 블록 2918에서 취득된 레벨 값이 최종 레벨 값이 아니면, 전자 디바이스(2422)는 블록 2919로 진행하고; 그렇지 않으면 블록 2920에서 전자 디바이스(2422)가 레벨 값의 크기를 디코딩한다.
블록 2919에서, 전자 디바이스(2422)가 제1 디코딩 방법과는 상이한 제2 디코딩 방법을 사용하여 취득된 레벨 값의 절대값이 제1 임계값보다 큰지를 판정한다. 예에서, 제2 디코딩 방법은 고 처리율 디코딩 방법, 바이패스 디코딩 방법, 등을 포함한다. 예에서, 제1 디코딩 방법은 CABAC의 레귤러 디코딩 모드를 포함한다.
이상의 설명에 따르면, 유의성 맵은 요소 단위, 예컨대 유의성 맵 필드 단위로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 나머지 유의성 맵 부분의 디코딩을 변경할 수 있다. 고 처리율 또는 바이패스 유의성 맵 디코딩 모드가 나머지 유의성 맵 부분에 대해 사용될 수 있다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
도 26은 디코딩 측의 전자 디바이스에서의 디코딩 바이패스 특성을 갖는 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
도 26에 도시된 방법에서, 프로세스 3001-3004 및 3014-3016는, 프로세스 2801-2804 및 2814-2816(도 24)와 유사하게, 도시된 바와 같이 수행될 수 있다.
블록 3005에서, 전자 디바이스(2422)가 제3 디코딩 방법, 예컨대 이진화 방법을 사용하여 레벨 값의 크기를 복원한다. 블록 3020에서, 전자 디바이스(2422)가 제3 디코딩 방법을 사용하여 레벨 값의 제1 부분의 크기를 복원하고, 제4 디코딩 방법, 예컨대 다른 이진화 방법을 사용하여 레벨 값의 제2 부분의 크기를 복원한다.
예에서, 레벨 값의 제1 부분은 제1 디코딩 방법으로 처리되는 레벨 값을 포함한다. 레벨 값의 제2 부분은 제1 디코딩 방법으로 처리되지 않는 레벨 값을 포함한다.
명백해야 하는 것은, 도 26에 도시된 구성과 유사한, 디코딩 측의 전자 디바이스에서의 디코딩 바이패스 특성을 갖는 고 처리율 유의성 맵 디코딩 방법이 다른 구성이 가능하고 실제적일 수 있다는 것이다. 예를 들어, 다른 구성에서, 전자 디바이스(2422)는, 판정 블록 2914(도 25)와 유사하게, 제1 디코딩 방법을 사용하여 취득된 레벨 값의 절대 값이 미리 설정된 제1 임계값보다 큰지를 판정한다. 또한, 전자 디바이스(2422)는 판정 블록 2916(도 25)과 유사하게, 카운터가 미리 설정된 제1 임계값보다 큰지를 판정한다.
이상의 설명에 따르면, 유의성 맵은 요소 단위, 예컨대 유의성 맵 필드 단위로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 유의성 맵의 디코딩을 중지할 수 있다(유의성 맵의 나머지 요소는 디코딩되지 않는다). 그 후, 디코딩된 요소에 대응하는 레벨 값이 이진화 방법(예컨대, 영의 값을 전송할 수 있는 이진화 방법)을 사용하여 처리되는 한편, 나머지 요소는 상이한 이진화 방법(예컨대, 영의 값을 전송할 수 없는 이진화 방법)을 사용하여 처리된다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
도 27은 디코딩 측의 전자 디바이스에서의 디코딩 방법 스위칭 특성(decode-method-switching feature)을 갖는 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
도 27에 도시된 방법에서, 프로세스 2801-2804 및 2814-2819(도 24)와 유사하게, 프로세스 801-3804 및 3814-3819가 도시된 바와 같이 수행될 수 있다. 블록 3805에서, 전자 디바이스(2422)는 제3 디코딩 방법(도 26의 제3 디코딩 방법)을 사용하여 레벨 값의 크기를 복원한다. 블록 3820에서, 전자 디바이스(2422)가 제3 디코딩 방법을 사용하여 레벨 값의 제1 부분의 크기를 복원하고, 제4 디코딩 방법(도 26의 제4 디코딩 방법)을 사용하여 레벨 값의 제2 부분의 크기를 복원한다. 예에서, 레벨 값의 제1 부분은 블록 3803에서 취득된 레벨 값을 포함하는 한편, 레벨 값의 제2 부분은 블록 3817에서 취득된 레벨 값을 포함한다.
명백해야 하는 것은, 도 27에 도시된 구성과 유사한 디코딩 측의 전자 디바이스에서 디코딩 바이패스 특성을 갖는 고 처리율 유의성 맵 디코딩 방법의 다른 구성이 가능하고 실제적일 수 있다는 것이다. 예를 들어, 다른 구성에서, 전자 디바이스(2422)는 판정 블록 2914(도 25)와 유사하게, 취득된 레벨 값의 절대값이 미리 설정된 제1 임계값보다 큰지를 제1 디코딩 방법을 사용하여 결정한다. 또한, 전자 디바이스(2422)는, 판정 블록 2916(도 25)과 유사하게, 카운터가 미리 설정된 제2 임계값보다 큰지를 판정한다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 제1 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 비트 스트림을 수신하는 것을 포함할 수 있다. 다른 작업은 수신된 비트 스트림에 기초하여 레벨 값의 블록을 취득하는 것을 포함할 수 있다. 다른 작업은 임계값에 따라 레벨 값의 일부분을 식별하는 것을 포함할 수 있다. 다른 작업은, 그 부분을 식별한 후, 고 처리율 유의성 맵 처리 모드를 이용하여 레벨 값의 임의의 나머지 부분을 처리하는 것을 포함할 수 있다. 다른 작업은 그 처리에 기초하여 비디오 데이터를 복원하는 것을 포함할 수 있다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 제2 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다. 작업은 제1 전자 디바이스에 시그널링을 전송하는 것을 포함할 수 있으며, 그 시그널링은 임계값을 식별할 수 있게 해준다.
이상에 따르면, 유의성 맵은 요소 단위, 예컨대 유의성 맵 필드 단위로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 유의성 맵의 디코딩을 중지할 수 있다(유의성 맵의 나머지 요소는 디코딩되지 않는다). 그 후, 디코딩된 요소에 대응하는 레벨 값이 이진화 방법(예컨대, 영(0, zero)의 값을 전송할 수 있는 이진화 방법)을 사용하여 처리되는 한편, 나머지 요소는 다른 이진화 방법(예컨대, 영의 값을 전송할 수 없는 이진화 방법)을 사용하여 처리된다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
(HEVC에서 CABAC를 위해 상이한 파라미터 선택 기술을 사용하는 무손실 코딩)
무손실 코딩 모드로 HEVC에서 CABAC 인코딩을 이용할 때, 인코딩/디코딩은 계산적으로 복잡하다. 계산 복잡성에 대한 하나의 이유는, 신택스 요소 "Absolute-3"의 인코딩이다. 공지의 CABAC 코딩에서, 지수 골롬 라이스 코딩 방법(Exponential-Golomb-Rice coding method)이 신택스 요소를 인코딩하는 데 사용된다.
배경으로서, 지수 골롬 라이스(G-R) 코딩 방법은 도 28에 도시된 라이스 파라미터 갱신 테이블을 이용한다. GPR 코딩 방법은 다음 단락에서 더 자세하게 설명되는 바와 같이, CABAC의 공지의 무손실 코딩 방법에서 신택스 요소 "Absolute-3"(즉, 도 2의 테이블의 마지막 줄)을 코딩하는 데 적용된다.
라이스 파라미터는 심볼의, 빈으로의 변환을 제어한다. 예로 설명하기 위해, 심볼 0, 11, 4..., 를 변환하기 위해 도 28의 테이블 및 G-R 코딩의 사용을 고려하고, "0"(제1 심볼)은 서브블록에서 초기 심볼이다. 라이스 파라미터는, 제1 심볼이 서브블록에서 초기 심볼이기 때문에, 제1 심볼에 대해 영으로 초기화된다. 제1 심볼은 영(zero)인 현재의 라이스 파라미터를 사용하여 코딩된다. 일례에서, RP의 라이스 파라미터를 사용하여 심볼을 코딩하는 프로세스는, 값 Quotient=floor( (symbol-1)/RP)을 계산하는 것, 및 1인 빈에 이은 0인 빈의 Quotient 스트링을 포함하는 출력을 생성하는 것으로 구성된다. 여기서, Quotient는 정수이고 floor()는 정수와 분수 성분을 포함하는 값을 정수 성분에 매핑하는 연산자이다. 설명을 위해, 라이스 파라미터 3인 심볼 "5"의 코딩은 1의 Quotient 값 및 "01"의 출력 빈을 낳는다. 유사하게, 라이스 파라미터 33인 심볼 "100"의 코딩은 Quotient 값 3 및 "0001"의 출력 빈을 낳는다. 다른 예에서, RP의 라이스 파라미터를 가지는 심볼의 코딩 프로세스는 값 Quotient=floor((symbol-1)/RP)를 계산하는 것과, 0인 빈에 이은 1인 빈의 Quotient 스트링을 포함하는 출력을 생성하는 것으로 구성된다. 또 다른 예에서, RP의 라이스 파라미터를 가지는 심볼을 코딩하는 프로세스는, 룩업 테이블 세트로부터, 심볼과 빈의 시퀀스 사이의 매핑을 정의하는 제RP(RP-th) 룩업 테이블을 선택하는 것으로 구성된다. 도 28의 테이블에 따라 룩업 결과가 영으로 주어지면, 라이스 파라미터는 다음 심볼에 대해 갱신하지 않는다. 따라서 제2 심볼 "11"이 영인 현재의 라이스 파라미터를 사용하여 코딩된다. 제2 심볼 "11" 및 라이스 파라미터 "0"에 대한 룩업 결과 ("2")가 현재의 라이스 파라미터 값(즉, 영)과 상이한 것으로 주어지면, 라이스 파라미터는 영(0)에서 2로 갱신된다. 제3 심볼 "4"가 그후 2인 현재의 라이스 파라미터를 사용하여 코딩된다. 룩업 결과가 현재의 라이스 파라미터와 상이하지 않은 것으로 주어지면, 라이스 파라미터 2가 다음 심볼에 대해 사용된다.
공지의 CABAC에 따라 "Absolute-3" 값을 코딩하는 G-R의 계산 복잡성으로 인해, 인코딩/디코딩은 상당한 양의 처리 자원을 소비할 수 있고/있거나 완료까지 상당한 시간이 걸릴 수 있다. 아래의 개시 내용은 이러한 문제 및 다른 문제들을 해결한다.
도 29는 인코더 및 디코더의 예를 설명하는 블록도이다.
시스템(2900)은 디코더(2912)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(2911)를 포함한다. 인코더(2911)와 디코더(2912)는 네크워크를 통해 통신할 수 있다.
인코더(2911)는 HEVC에서 CABAC을 위해 다른 파라미터 선택을 갖는 무손실 코딩을 사용하여 인코딩하도록 구성된 전자 디바이스(2921)를 포함한다. 전자 디바이스(2921)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 30에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(2912)는 HEVC에서 CABAC을 위해 다른 파라미터 선택을 갖는 무손실 코딩을 사용하여 디코딩하도록 구성된 전자 디바이스(2922)를 포함한다. 전자 디바이스(2922)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 31에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 30은 전자 디바이스에서의 다른 파라미터 선택을 갖는 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3011에서, 전자 디바이스(2921)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 판정 블록 3012에서, 전자 디바이스(2921)가, 블록이 무손실 인코딩을 사용하여 인코딩될 것인지를 판정한다. 블록이 무손실 인토딩을 사용하여 인코딩될 것이 아니면, 블록 3013에서, 제1 Absoute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩한다.
블록이 무손실 인코딩을 사용하여 인코딩될 것이면, 블록 3014에서, 전자 디바이스(2921)가 제2 상이한 Absoute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩한다. 블록 3015에서, 전자 디바이스(2921)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
예에서, 제1 Absolute-3 기술은 CABAC 코딩의 R-G 코딩 기술을 포함한다, 즉, 라이스 파라미터는 각 서브블록 코딩 단계에서 0으로 초기화하고, 도 28에 도시된 테이블의 5개 파라미터가 고려된다. 예에서, 다른 제2 Absolute-3 코딩 기술은 각 서브블록의 코딩 단계에서 영으로 초기화하지 않는다, 즉, 다르게 초기화된다, 및/또는 다른 라이스 파라미터 갱신 테이블, 예컨대 축소된 라이스 파라미터 갱신 테이블(reduced Rice parameter update table)을 사용한다.
예에서, 다른 초기화는 각 서브블록이 아니라 각 블록 내의 라이스 파라미터를 영으로 초기화 하는 것을 포함할 수 있다. 예에서, 상이한 초기화는 이전 서브블록에서 현재 서브블록의 초기 라이스 파라미터로 사용된 최근(last) 라이스 파라미터를 사용하는 것을 포함할 수 있다.
예에서, 상이한 초기화는 잔차 샘플의 통계값(statistics)에 기초한 초기화를 포함할 수 있다. 예에서, 상이한 초기화는 블록 유형, 블곡 크기, 또는 색 정보(루마/크로마), 등, 또는 이들의 조합에 기초하여 미러 정의된 라이스 파라미터 값으로 초기화하는 것을 포함할 수 있다. 블록 유형은 블록의 블록 크기, 블록의 예측 정보(인트라/인터), 및 블록의 색 정보(루마/크로마)에 기초하여 블록을 표현하기 위한 값이다. 예에서, 상이한 초기화는, 현재 블록 유형이 특정한 미리 정의된 값(들), 예컨대 "2" 및/또는 "5"일 때, 라이스 파라미터를 미리 정의된 값 "1"로 초기화하는 것을 포함할 수 있다.
예에서, 상이한 라이스 파라미터 갱신 테이블은 제1 Absolute-3 코딩 기술에 사용된 라이스 파라미터 갱신 테이블보다 적은 수의 파라미터를 포함한다. 예에서, 상이한 라이스 파라미터 갱신 테이블은 처음의 두 경우(라이스 파라미터가 "0"과 "1"이다)만을 포함한다. 이러한 라이스 파라미터 갱신 테이블의 예시는 도 28에 포함된다.
예에서, 다른 제2 Absolute-3 코딩 기술이 사용되면, 전자 디바이스(2921)는 대응하는 지시자, 예컨대 다른 제2 Absolute-3 코딩 기술과 연관된 플래그를, 값 1로 설정할 수 있다(이는 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나, 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다).
도 31은 디코딩 측의 전자 디바이스에서의 다른 파라미터 선택을 갖는 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3110에서, 전자 디바이스(2922)가 비트 스트림을 취득한다. 블록 3111에서, 전자 디바이스(2922)가 취득된 비트 스트림으로부터 인진 심볼을 복원한다. 판정 블록 3112에서, 전자 디바이스(2922)가 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것인지를 판정한다. 예에서, 상기 판정은 수신된 비트 스트림에 대응하는, 슬라이스 헤더와 같은, 헤더의 검사를 포함할 수 있다. 예에서, 헤더를 검사하는 것은 다른 제2 Absolute-3 코딩 기술과 연관된 플래그의 값에 대해 취득된 비트 스트림에 대응하는 슬라이스 헤더를 검사하는 것을 더 포함할 수 있다. 다른 예에서, 상기 판정은 TQC로의 계수 레벨의 변환을 제어하는 블록 유형 또는 양자화 파라미터와 같은, 블록과 연관된 이전의 디코딩된 심볼을 검사하는 것을 포함할 수 있다. 판정 블록 3112에서 조건이 충족되지 않으면, 블록 3113에서 전자 디바이스(2922)가 제1 Absoute-3 코딩 기술을 사용하여 TQC의 블록을 취득한다.
판정 블록 3112에서 조건이 충족되면, 블록 3114에서 전자 디바이스(2921)가 다른 제2 Absolute-3 코딩 기술을 사용하여 잔차 샘플을 취득한다. 블록 3115에서 전자 디바이스(2922)는 취득된 TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원할 수 있다.
(HEVC의 CABAC를 위한 고 처리율 코딩)
HEVC의 CABAC를 이용할 때, 처리율 성능은, 빈/화소의 총 개수, 바이패스 빈/화소의 개수, 및 레귤러(또는 컨텍스트) 코딩된 빈/화소의 개수와 같은 상이한 인자에 따라 달라질 수 있지만, 이에 한정되는 것은 아니다. 따라서, 이들 인자에 따라, 코딩에는 상당한 양의 처리 자원을 소비할 수 있고/있거나 상당한 시간이 걸릴 수 있다. 이하의 개시 내용은 이 문제 및 다른 문제를 해결한다.
배경으로서, 공지의 CABAC에 따라, 신택스 요소의 25개 레벨 코드 플래그까지가 컨텍스트 코딩된다. 나머지 레벨 코드 플래그는 파이패스 코딩된다. 미리 정의된 (그리고 고정된) 수의 Greater_than_1 플래그, 8개의 Greater_than_1 플래그가 컨텍스트 코딩된다. 미리 정의된 (그리고 고정된) 수, 즉 1개의 Greater_than_2 플래그가 컨텍스트 코딩된다. 모든 유의성 맵 플래그, 즉 16개까지 컨켁스트 코딩된다(신택스 요소는 그 블록의 최종 위치 정보에 따라 16개보다 작게 유의성 맵 플래그를 가질 수 있다). 따라서, 최대 25개 컨텍스트 코딩된 빈이 주어진 서브세트 블록에 대해 필요하다(25 빈/16 화소 = 1.56 빈/화소). 위의 예는 4x4 서브블록을 사용하는 경우이다.
도 34는 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3411에서, 전자 디바이스(2321)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 블록 3412에서, 전자 디바이스(2321)가 제1 수량의, 신택스 요소의 레벨 코드 플래그, 예컨대, CABAC 신택스 요소의 Greater_than_1 및 Greater_than_2 플래그를 컨텍스트 코딩한다. 제1 수량은 미리 정해진 제1 개수, 예컨대 9개, 즉, 8개의 Greater_than_1 플래그와 1개의 Greater_than_2 플래그를 포함한다.
블록 3413에서, 전자 디바이스(2321)가 신택스 요소의 유의성 맵 내의 실제로 코딩된 빈의 개수를 식별한다. 블록 3414에서, 전자 디바이스(2321)가 미리 정해진 제2 개수와(예컨대 CABAC에서의 16개) 식별된 개수의 차를 결정한다. 블록 3415에서, 전자 디바이스(2321)가 제2 수량의 레벨 코드 플래그를 컨텍스트 코딩하며, 제2 수량은 결정된 차를 포함한다. 블록 3416에서, 전자 디바이스(2321)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
예에서, 도 34에 도시된 구성이 사용되면, 전자 디바이스(2321)는 대응하는 지시자, 예컨대, 플래그를 값 1로 설정할 수 있다(물론 이것은 설계 선호도에 따라 플래그의 디폴트 값을 변경하는 것 또는 플래그를 디폴트 값으로 그대로 두는 것을 포함할 수 있다). 예에서, 지시자는 컨텍스트 코딩되는 추가적인 Greater_than_1 및/또는 Greater_than_2 플래그의 수를 식별하게 해줄 수 있다.
전술한 구성에 따라 생성되는 신택스 요소의 예는 도 36에 도시되어 있다. 예에서, 예의 신택스 요소의 유의성 맵에서 실제로 코딩된 빈의 개수는 12개이다. 16과 12 사이의 결정된 차는 4이다. 컨텍스트 코딩되는 레벨 코드 플래그의 제1 수량은 9개(8개의 Greater_than_1 플래그와 1개의 Greater_than_2 플래그). 컨텍스트 코딩되는 레벨 코드 플래그의 제2 수량은 4개이다. 이 특정한 예에서, 이 4개는 모두 Greater_than_1 플래그이지만, 다른 예에서는 이 4개는 하나 이상의 Greater_than_1 플래그와 하나 이상의 Greater_than_2 플래그, 또는 4개의 Greater_than_2 플래그를 포함할 수 있다. 나머지 레벨 코드 플래그는 바이패스 인코딩된다.
도 35는 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3510에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 3511에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 이진 심볼을 복원한다.
블록 3512에서, 전자 디바이스(3322)가 제1 수량의, 신택스 요소의 레벨 코드 플래그, 예컨대, CABAC 신택스 요소의 Greater_than_1 및 Greater_than_2 플래그를 컨텍스트 디코딩하며, 제1 수량은 미리 정해진 제1 개수, 예컨대 9개, 즉, 8개의 Greater_than_1 플래그와 1개의 Greater_than_2 플래그이다. 판정 블록 3513에서, 전자 디바이스(3322)가, 신택스 요소의 추가적인 레벨 코드 플래그가 컨텍스트 코딩되는지를 판정한다. 예에서, 판정은 슬라이스 헤더와 같은, 수신된 비트 스트렘에 대응하는 헤더를 검사하는 것을 포함한다. 확인하는 것은 지시자, 예컨대 플래의 값에 대해 취득된 비트 스트림에 대응하는 슬라이스 헤더를 검사하는 것을 더 포함할 수 있다. 판정 블록 3513에서, 전자 디바이스(3322)가 추가적인 레벨 코드 플래그가 컨텍스트 코딩되지 않는 것으로 판정하면, 3514에서, 신택스 요소의 나머지 레벨 코드 플래그를 바이패스 디코딩한다. 판정 블록 3513에서, 전자 디바이스(3322)가 추가적인 레벨 코드 플래그가 컨텍스트 코딩되는 것으로 판정하면, 블록 3515에서, 전자 디바이스(3322)가 제2 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 디코딩한다. 예에서, 전자 디바이스(3322)는 슬라이스 헤더로부터의 정보에 기초하여 컨텍스트 코딩되는 추가적인 Greater_than_1 및/또는 Greater_than_2의 개수를 식별할 수 있다. 블록 3514에서, 전자 디바이스(3322)가 임의의 나머지 레벨 코드 플래그를 바이패스 디코딩한다. 블록 3516에서, 전자 디바이스(3322)가 취득된, TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원한다.
도 38은 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3850에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 3851에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 레벨 값의 블록을 취득한다.
블록 3853에서, 전자 디바이스(3322)가 블록의 최종 유효 계수(last significant coefficient)의 위치를 결정한다. 블록 3854에서, 전자 디바이스(3322)가 취득된 블록으로부터 유효 계수를 컨텍스트 디코딩하고, 컨텍스트 디코딩을 위한 심볼의 최대 개수를 결정된 위치의 함수로 결정한다.
블록 3855에서, 전자 디바이스(3322)가 카운터를 리세트(reset), 예컨대, 카운터를 영으로 설정한다. 판정 블록 3856에서, 전자 디바이스(3322)가 디코딩될 레벨 코드 플래그가 남아 있는지를 판정한다. 판정 블록 3856에서 남아 있는 레벨 코드 플래그가 없으면, 블록 3857에서, 전자 디바이스(3322)가 취득된 TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원한다.
레벨 코드 플레그가 남아 있으면(판정 블록 3856), 판정 블록 3858에서, 카운터가 임계값보다 큰지를 판정한다. 예에서, 임계값은 결정된 최대값과 연관될 수 있다. 예에서, 임계값은 결정된 최대값과 블록의 유의성 맵 플래그의 개수의 차에 대응할 수 있다. 판정 블록 3858에서 카운터가 임계값보다 크면, 블록 3859에서, 전자 디바이스(3322)가 레벨 코드 플래그를 바이패스 디코딩한다. 판정 블록 3858에서 카운터가 임계값 미만이면, 블록 3860에서, 전자 디바이스(3322)가 레벨 코드 플래그를 컨텍스트 디코딩한다. 전자 디바이스(3322)는 블록 3861에서, 카운터를 증가시킨다.
도 39는 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3950에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 3951에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 레벨 값의 블록을 취득한다.
블록 3953에서, 전자 디바이스(3322)가 블록의 최종 유효 계수의 위치를 결정한다. 블록 3954에서, 전자 디바이스(3322)가 취득된 블록으로부터 유효 계수를 컨텍스트 디코딩하고, 컨텍스트 디코딩을 위한 심볼의 최대 개수를 결정된 위치 및 서브블록 위치 모두의 함수로 결정한다. 프로세스 3955-3961은 프로세스 3855-3861에 대응할 수 있다.
도 40은 디코딩 측의 전자 디바이스에서 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4050에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 4051에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 레벨 값의 블록을 취득한다.
블록 4053에서, 전자 디바이스(3322)가 최종 유효 계수의 위치를 결정한다. 블록 4054에서, 전자 디바이스(3322)가 취득된 블록으로부터 유효 계수를 컨텍스트 디코딩하고, 컨텍스트 디코딩을 위한 심볼의 최대 개수를 블록의 속성의 함수, 예컨대, 블록의 유효 계수의 개수로 결정로 결정한다. 프로세스 4055-4061는 프로세스 3855-3861에 대응할 수 있다.
일례에서, 시스템이 제공된다. 이 시스템은 비트 스트림으로부터 레벨 값의 블록을 취득하고; 블록의 레벨 코드 플래그를 컨텍스트 디코딩하고; 블록의 다음 레벨 코드 플래그가 있는지를 검사하고; 다음 레벨 코드 플래그가 있으면, 컨텍스트 코딩된 레벨 코드 플래그의 카운트 값이 임계값보다 큰지를 판정하고; 카운트 값이 임계값 미만이라는 판정에 응답하여, 다음 레벨 코드 플래그를 바이패스 디코딩하고; 카운트 값이 임계값보다 크다는 판정에 응답하여, 다음 레벨 코드 플래그를 컨텍스트 디코딩하고; 디코딩된 레벨 코드 플래그를 사용하여 TQC의 블록 또는 잔차 샘플을 복원하고; 복원된 블록을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원하도록 구성된 전자 디바이스를 포함할 수 있다.
상기 전자 디바이스는, 다음 레벨 코드 플래그의 컨텍스트 코딩에 응답하여 카운트를 증가시키도록 구성될 수 있다. 전자 디바이스는 블록의 모든 레벨 코드 플래그가 디코딩될 때까지, 검사, 판정, 디코딩, 및 증가시키는 것을 반복하도록 구성될 수 있다. 전자 디바이스는 제1 레벨 코드 플래그의 컨텍스트 코딩에 응답하여 카운트를 증가시키도록 구성될 수 있다.
상기 전자 디바이스는 블록의 최종 유효 계수의 위치를 결정하고; 적어도 부분적으로 블록의 속성에 기초하여 컨텍스트 디코딩할 심볼의 최대 개수를 결정하도록 구성될 수 있다. 전자 디바이스는 최대 개수의 결정 결과에 따라 임계값을 설정하도록 구성될 수 있다.
상기 전자 디바이스는 블록의 최종 유효 계수의 위치를 결정하고; 적어도 부분적으로 결정된 위치에 기초하여 컨텍스트 디코딩할 심볼의 최대 개수를 결정하도록 구성될 수 있다. 전자 디바이스는 적어도 부분적으로 결정된 위치에 기초하여 적어도 부분적으로 서브블록 위치에 기초하여 컨텍스트 디코딩할 심볼의 최대 개수를 결정하도록 구성될 수 있다.
상기 전자 디바이스는 제1 수량의, 블록과 연관된 신택스 요소의 레벨 코드 플래그를 컨텍스트 디코딩하고 - 제1 수량은 제1 미리 정해진 개수임 -; 신택스 요수의 유의성 맵에서 실제 코딩된 빈의 개수를 식별하고; 제1 미리 정해진 개수와 식별된 개수의 차를 결정하고; 제2 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 디코딩 - 제2 수량은 결정된 차를 포함할 수 있음 -하도록 구성될 수 있다. 예에서, 제1 미리 정해진 개수는 9개를 포함할 수 있다. 예에서, 제2 미리 정해진 개수는 16개를 포함할 수 있다. 예에서, 제1 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 8개의 "greater than 1" 플래그와 1개의 "greater than 2" 플래그를 포함한다. 예에서, 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 "greater than 1" 플래그만을 포함한다. 예에서, 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 오직 "greater than 2" 플래그만을 포함한다.
예에서, 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 제3 미리 정해진 개수의 "greater than 1" 플래그와 동적인 개수(dynamic number)의 greater than 1" 플래그를 포함하고, 동적인 개수는 제2 수량과 미리 정해진 제3 개수의 차를 포함한다.
일례에서, 시스템이 제공된다. 상기 시스템은 인코더의 제1 전자 디바이스를 포함할 수 있고, 제1 전자 디바이스는, 산술 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득하고; 그 데이터의 블록이 무손실 인코딩될 것인지를 판정하고; 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 제1 Absolute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩하고; 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 제2 Absolute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩하고 - 제2 Absolute-3 코딩 기술은 제1 Absolute-3 코딩 기술과 다름 -; 및 인코딩한 것을 메모리 디바이스에 저장하도록 하도록 구성된다.
상기 시스템은 디코더의 제2 전자 디바이스를 더 포함할 수 있으며, 제2 전자 디바이스는, 수신된 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것인지를 판정하고; 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이라는 판정에 응답하여, 제1 Absolute-3 코딩 기술을 사용하여 TQC의 블록을 취득하고; 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이라는 판정에 응답하여, 제2 Absolute-3 코딩 기술을 사용하여 잔차 샘플을 취득 하도록 구성된다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하고; 데이터 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 서브블록의 초기 값을 위해 이전 서브블록의 최종 값으로부터 라이스 파라미터를 사용하도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하고; 데이터 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하는 것을 건너뛰도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 블록 유형, 블록 크기, 및 색 정보(루마/크로마)를 포함하는 그룹에서 선택된 하나 이상에 기초하여 라이스 파라미터를 미리 정해진 값으로 초기화하도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 현재의 블록 유형이 2개 또는 5개일 때, 라이스 파라미터를 1로 초기화하도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하고; 데이터 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하는 것을 건너뛰도록 구성될 수 있다.
제1 전자 디바이스는, 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이 아니라는 판정에 응답하여, 제1 라이스 파라미터 갱신 테이블을 채용하고; 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이라는 판정에 응답하여, 제1 라이스 파라미터 갱신 테이블과는 다른 제2 라이스 파라미터 갱신 테이블을 채용하도록 구성될 수 있다.
제2 라이스 파라미터 갱신 테이블은 제1 라이스 파라미터 갱신 테이블을 절단 버전(truncated version)을 포함할 수 있다. 일 예에서, 제2 라이스 파라미터 갱신 테이블만, 현재의 라이스 파라미터가 2, 3, 또는 4로 갱신되거나 초기화된 후 갱신을 방지하도록 구성된다.
일례에서, 시스템이 제공된다. 상기 시스템은 인코더의 제1 전자 디바이스를 포함하고, 제1 전자 디바이스는, 제1 전자 디바이스는, 산술 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득하고; 제1 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 코딩하고 - 제1 수량은 미리 정해진 제1 개수임 -; 신택스 요소의 유의성 맵에서 실제 코딩된 빈의 개수를 식별하고; 미리 정해진 제2 개수와 식별된 개수의 차를 결정하고; 제2 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 코딩하고 - 제2 수량은 상기 결정된 차를 포함한- ; 컨텍스트 코딩에 의해 생성된 비트 스트림이 메모리 디바이스에 저장되게 하도록 구성된다.
산술 기반 인코딩은 CABAC 인코더를 포함할 수 있다. 미리 정해진 제1 개수는 9개를 포함할 수 있다. 미리 정해진 제2 개수는 16개를 포함할 수 있다. 제1 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 8개의 "greater than 1" 플래그와 1개의 "greater than 2" 플래그를 포함할 수 있다. 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 "greater than 1" 플래그만을 포함한다. 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 "greater than 2" 플래그만을 포함할 수 있다. 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 미리 정해진 제3 개수의 "greater than 1" 플래그와 동적인 개수의 greater than 1" 플래그를 포함하고, 동적인 개수는 제2 수량과 미리 정해진 제3 개수의 차를 포함한다.
(HEVC의 CABAC를 위한 변환 생략된 블록(transform skipped block)에 대한 고 처리율 잔차 코딩)
도 41은 인코더 및 디코더의 예를 나타낸 블록도이다.
시스템(4100)은 디코더(4112)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(4111)를 포함한다. 인코더(4111)와 디코더(4112)는 네트워크를 통해 통신할 수 있다.
인코더(4111)는 고 처리율 잔차 코딩 모드를 사용하여 인코딩하도록 구성된 전자 디바이스(4121)를 포함한다. 전자 디바이스(4121)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 42에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(4112)는 고 처리율 잔차 코딩 모드를 사용하여 디코딩하도록 구성된 전자 디바이스(4122)를 포함한다. 전자 디바이스(4122)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 43에 도시된 작업을 수행하는 프로세서에 의해 실행 가능한 명령어들을 저장한다.
도 42는 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4211에서, 전자 디바이스(4121)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 블록 4212에서, 전자 디바이스(4121)가, 블록이 고 처리율 잔차 코딩을 사용하여 인코딩될 것인지를 판정한다. 블록이 고 처리율 잔차 코딩을 사용하여 인코딩될 것이 아니라면, 블록 4213에서, 전자 디바이스(4121)가 제1 코딩 기술을 사용하여 데이터의 블록을 코딩한다. 예에서, 제1 코딩 기술은 Absolute-3 코딩 기술, 예컨대, 도 30의 블록 3013을 참조하여 설명한 코딩 기술을 포함할 수 있다.
블록이 고 처리율 잔차 코딩을 사용하여 인코딩될 것이면, 블록 4214에서, 전자 디바이스(4121)가 제1 코딩 기술과는 다른 제2 코딩 기술을 사용하여 데이터의 블록을 코딩한다. 블록 4215에서, 전자 디바이스(4121)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
예에서, 제2 코딩 기술은 제1 코딩 기술의 코딩 단계의 서브세트만을 포함한다. 예에서, 제1 코딩 기술은 Greater_than_1 코딩 단계와 Greater_than_2 코딩 단계를 포함하고, 제2 코딩 기술은 Greater_than_1 코딩 단계와 Greater_than_2 코딩 단계 중 적어도 하나를 포함하지 않는다.
예에서, 제1 코딩 기술은 유의성 맵 코딩(significance map coding) 후에 Absolute-3 코딩을 포함하지만, 제2 코딩 기술은 유의성 맵 코딩 후에 Absolute-3 코딩을 포함하지 않는다. 제2 코딩 기술의 예에서, 유의성 맵 코딩 후, Absolute-1 또는 Absolute-2 값이 코딩된다. 예에서, Greater_than_1 코딩 단계와 Greater_than_2 코딩 단계 둘 다를 건너뛰면, Absolute-1 값이 코딩되는 반면, Greater_than_2 코딩 단계를 건너뛰고 Greater_than_1 코딩 단계를 건너뛰지 않으면 Absolute-2 값이 코딩된다. 부호 코딩(sign coding)은 일례에서 Absolute-1 또는 Absolute-2 코딩 전에 수행될 수 있다. Absolute-1 또는 Absolute-2 값 코딩은 여기서 설명한 골롬 라이스(Golomb-Rice, G-R) 코드를 사용한다. 예를 들어, Absolute-1 또는 Absolute-2 값 코딩은 도 30을 참조하여 설명한 G-R 코딩 기술을 사용할 수 있다. 예에서, Absolute-1 또는 Absolute-2 값 코딩은 제1 코딩 기술에 사용된 동일한 G-R 코딩을 사용한다.
예에서, Absolute-1 또는 Absolute-2 값 코딩에 사용된 G-R 코딩 기술은 블록 유형, 블록 크기, 또는 색 정보(루마/크로마), 등, 또는 이들의 임의 조합에 기초하여 미리 정의된 라이스 파라미터로 초기화하는 것을 포함할 수 있다. 예를 들어, 미리 정의된 라이스 파라미터는 루마 블록에 대해 두 개일 수 있고, 크로마 블록에 대해 하나 일 수 있다. 예에서, 동일한 G-R 코딩이 Absolute-1 또는 Absolute-2 코딩과 Absolute-3 코딩에 사용된다.
예에서, 전자 디바이스(4121)는 디코딩 측의 초기화 정보를 명시적으로 시그널링할 수 있다. 초기화 정보는 비트 스트림 또는 현재의 블록, 즉 블록 단위로 라이스 파라미터 초기 값을 포함할 수 있다. 초기화 정보가 블록에 대한 하나 이상의 라이스 파라미터 초기 값을 포함하면, 초기화 정보는 또한 제1 값 또는 제2 값을 사용하기 위한 기준(criterion)을 지시할 수 있고, 즉 값은 2와 1일 수 있고, 조건은 루마 블록에 대해 2 및/또는 크로마 블록에 대해 1일 수 있다. 예에서, 추가적인 정보가 추가적인 신택스 요소를 포함할 수 있다.
예에서, 판정 블록 4212는 데이터의 블록의 Transform_skip_flag 또는 Trans_quant_Bypass_flag가 세트(set)되어 있는지를 판정하는 것을 포함할 수 있다. 예에서, Transform_skip_flag 또는 Trans_quant_Bypass_flag가 1이면, 고 처리율 잔차 코딩이 그 데이터 블록에 사용된다(반대로, Transform_skip_flag와 Trans_quant_Bypass_flag 어느 것도 세트되어 있지 않으면, 고 처리율 장차 코딩은 그 데이터의 블록에 사용되지 않는다).
배경으로서, Transform_skip_flag는 대응하는 블록이 변환되는지 여부를 지시한다. 공지의 스킴에서, Transform_skip_flag는 대응하는 블록이 변환되는 경우 영과 같다. Transform_skip_flag이 1과 같은 경우, 대응하는 블록은 변환되지 않는다, 즉 잔차 데이터는 잔차 샘플을 나타낸다.
배경으로서, Trans_quant_Bypass_flag는 대응하는 블록이 변환 및 양자화되는지의 여부를 지시한다. Trans_quant_Bypass_flag가 1이면, 대응하는 블록은 변환 및 양자화되지 않는다, 즉 잔차 데이터는 잔차 샘플을 나타낸다. 또한, 변환은 레귤러 코딩 모드에서 사용되만 무손실 코딩 모드에서 사용되지 않기 때문에, 인코딩이 무손실 코딩 모드에 의한 것인 경우, Trans_quant_Bypass_flag는 1이다.
이해해야 할 것은, 예에서, 하나 이상의 레벨 코딩 단계, 예컨대 Greater_than_1 및/또는 Greater_than_2를 인코딩될 데이터의 블록에 대해 선택적으로 건너뛸 수 있다는 것이다. 예에서, 데이터 블록의 Transform_skip_flag 검사는 하나 이상의 레벨 코딩 단계를 건너뛰는지의 여부를 판정하기 위해 사용된다. 예에서, 데이터의 블록이 무손실 코딩 모드를 사용하여 인코딩될 것이면 하나 이상의 레벨 코딩 단계를 건너뛸 수 있다. 이해해야 할 것은, 하나 이상의 레벨 코딩 단계를 건너뛸 경우, 처리율 이득이 실현될 수 있다는 것이다.
예에서, 다른 제2 코딩 기술이 사용되면, 전자 디바이스(4121)는 대응하는 지시자, 예컨대, 다른 제2 코딩 기술과 연관된 플래그를 값 1로 설정할 수 있다(이것은 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다). 그러나, 일부 예에서, 디코딩 측은 블록에 대한 Transform_skip_flag 및/또는 Trans_quant_Bypass_flag를 검사하여, Transform_skip_flag와 Trans_quant_Bypass_flag 중 어느 하나가 1이면, 인코딩 측이 그 블록에 대해 제2 코딩 기술을 사용하였다고 추론할 수 있기 때문에, 그러한 명시적인 시그널링은 필요하지 않다.
도 43은 디코딩 측의 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4310에서, 전자 디바이스(4122)가 비트 스트림을 취득한다. 블록 4311에서, 취득된 비트 스트림으로부터 이진 심볼을 복원한다.
판정 블록 4312에서, 전자 디바이스(4122)가 이진 심볼이 고 처리율 잔차 코딩을 사용하여 인코딩될 것인지를 판정한다. 예에서, 판정 블록 4312는 복원된 이진 심볼이 변환된 계수를 나타내는지를 판정하는 것, 예컨대, 복원된 이진 심볼과 연관된 Transform_skip_flag가 세트되어 있는지를 판정하는 것, rans_quant_bypass_flag가 세트되어 있는지를 판정하는 것, 및/또는 비트 스트림이 무손실 코딩 모드를 사용하여 코딩되었는지를 판정하는 것을 포함한다. 판정 블록 4312에서 조건이 충족되면, 블록 4313에서, 전자 디바이스(4122)가 제1 코딩 기술을 사용하여 TQC의 블록을 취득한다.
판정 블록 4312에서 조건이 충족되지 않으면, 블록 4314에서, 전자 디바이스(4122)가 제2 코딩 기술을 사용하여 잔차 샘플을 취득한다. 전자 디바이스(4122)는 블록 4315에서, 취득된, TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원한다.
예에서, 제1 코딩 기술과 제2 코딩 기술 중 제1 코딩 기술만이 Absolute-3 코딩 기술을 포함한다. 예에서, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 코딩 기술을 포함한다.
예에서, 제1 코딩 기술은 Greater_than_1 flag 및 Greater_than_2 flag의 코딩, 즉 GR1 코딩 단계와 GR2 코딩 단계를 포함하고, 제2 코딩 기술은 어떤 Greater_than_1 flag 및/또는 Greater_than_2 flag 어느 것도 코딩하지 않는다, 즉 GR1 코딩 단계를 포함하지 않고/않거나 GR2 코딩 단계를 포함하지 않는다.
예에서, 제1 코딩 기술은 Absolute-3 값을 코딩하기 위해 골롬-라이스(G-R) 코딩 방법을 포함하고, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 값을 코딩하기 위해 G-R 코딩 방법을 포함한다. 예에서, G-R 코딩 방법은 라이스 파라미터를, 블록 유형, 블록 크기, 및 색 정보(루마/크로마)를 포함하는 그룹에서 선택되는 하나 이상에 기초하여 미리 정해진 값으로 초기화하는 것을 포함한다. 예에서, 미리 정의된 라이스 파라미터는 텍스처(루마/크로마)에 의존할 수 있다. 예를 들어, 미리 정해진 라이스 파라미터 값은 루바 블록에 대해 2이고 크로마 블록에 대해 1이다. 예에서, 동일한 G-R 코딩이 Absolute-1 또는 Absolute-2 코딩 및 Absolute-3 코딩에 사용된다.
예에서, 시스템은 비트 스트림을 취득하고; 취득된 비트 스트림으로부터 이진 심볼을 복원하고; 이진 심볼이 고 처리율 잔차 코딩 모드를 사용하여 디코딩될 것인지를 판정하고; 이진 심볼이 고 처리율 잔차 코딩 모드를 사용하여 디코딩될 것이 아니라는 판정에 응답하여, 제1 코딩 기술을 사용하여 변환 및 양자화된 계수(TQC)를 취득하고; 이진 심볼이 고 처리율 잔차 코딩 모드를 사용하여 디코딩될 것이라는 판정에 응답하여, 제2 다른 코딩 기술을 사용하여 잔차 샘플을 취득하고; 취득된 TQC의 블록 또는 취득된 잔차 샘플, 또는 취득된 TQC의 블록 또는 취득된 잔차 샘플을 대표하는 비디오 데이터를 메모리 디바이스에 저장하도록 구성된, 디코더의 제1 전자 디바이스를 포함한다.
예에서, 제1 코딩 기술과 제2 코딩 기술 중 제1 코딩 기술만 이 Absolute-3 코딩 기술을 포함한다. 예에서, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 코딩 기술을 포함한다.
예에서, 제1 전자 디바이스는 복원된 이진 심볼이 변환된 계수를 나타내는지를 판정하고; 복원된 이진 심볼이 변환된 계수를 나타내지 않는다는 판정에 응답하여 제2 다른 코딩 기술을 사용하도록 구성된다. 예에서, 제1 전자 디바이스는 복원된 이진 심볼과 연관된 변환 스킵 플래그(transform skip flag) 또는 변환 양자화 바이패스 플래그(transform quantization bypass flag)가 세트되어 있는지를 판정하고; 변환 건너뛰기 플래그 또는 변환 양자화 바이패스 플래그가 세트되어 있다는 판정에 응답하여, 제2 다른 코딩 기술을 사용하도록 구성된다. 예에서, 제1 전자 디바이스는 복원된 이진 심볼과 연관된 변환 스킵 플래그 또는 변환 양자화 바이패스 플래그가 세트되어 있는지를 판정하고; 변환 스킵 플래그 또는 변환 양자화 바이패스 플래그가 세트되어 있다는 판정에 응답하여, 제2 다른 코딩 기술을 사용하도록 구성된다. 예에서, 비트 스트림이 무손실 코딩 모드를 사용하여 코딩되었는지를 판정하고; 비트 스트림이 무손실 코딩 모드를 사용하여 코딩되었다는 판정에 응답하여 제2 상이한 코딩 기술을 사용한다.
예에서, 제1 코딩 기술은 Greater_than_1 플래그 및 Greater_than_2 플래그를 코딩하는 것을 포함하고, 제2 코딩 기술은 Greater_than_1 플래그 및/또는 Greater_than_2 플래그 어느 것도 코딩하지 않는다.
예에서, 비트 스트림은 컨텍스트 적응적 이진 산술 코딩(CABAC) 기반 인코더로부터 유래한다.
예에서, 제1 코딩 기술은 Absolute-3 값을 코딩하기 위해 골롬-라이스(G-R) 코딩 방법을 포함하고, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 값을 코딩하기 위해 G-R 코딩 방법을 포함한다.
예에서, G-R 코딩 방법은 라이스 파라미터를, 블록 유형, 블록 크기, 및 색 정보(루마/크로마)를 포함하는 그룹에서 선택되는 하나 이상에 기초하여 미리 정해진 값으로 초기화하는 것을 포함한다. 예에서, 전자 디바이스(4121)는 비트 스트림 또는 비트 스트림의 초기화 정보에 기초한 블록에 대해 미리 정해진 값을 결정할 수 있다. 초기화 정보는 비트 스트림 또는 현재 블록에 대해, 즉 블록 단위로, 라이스 파라미터의 초기 값을 포함할 수 있다. 초기화 정보가 블록에 대해 하나 이상의 라이스 파라미터를 포함하면, 초기화 정보는 또한 제1 값 또는 제2 값을 사용하여 기준을 지시할 수 있다, 즉 그 값은 2와 1일 수 있으며, 조건은 루마 블록에 대해 2 및/또는 크로마 블록에 대해 1일 수 있다. 예에서,추가적인 정보가 추가적인 신택스 요소를 포함할 수 있다.
예에서, 전자 디바이스(4121)는 현재 블록의 영이 아닌 계수의 수의 결정에 응답하여 미리 정해진 값을 결정할 수 있다. 예를 들어, 전자 디바이스(4121)는, 영이 아닌 계수의 수가 임계값보다 크면, 미리 정해진 제1 값을 사용하고, 영이 아닌 계수의 수가 임계값 미만이면, 미리 정해진 제1 값과는 다른 미리 정해진 제2 값을 사용할 수 있다.
도 44는 디코딩 측의 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4410에서, 전자 디바이스(4122)가 비트 스트림을 취득한다. 블록 4411에서, 전자 디바이스(4122)가 취득된 비트 스트림으로부터 이진 심볼을 복원한다.
판정 블록 4412에서, 전자 디바이스(4122)가, 이진 심볼이 고 처리율 잔차 코딩을 사용하여 디코딩될 것인지를 판정한다. 예에서, 판정 블록 4412는 복원된 이진 심볼의 변환 계수를 나타내는지를 판정하는 것, 예컨대, 복원된 이진 심볼과 연관된 Transform_skip_flag가 세트되어 있는지를 판정하는 것을 포함한다.
판정 블록 4412에서 조건이 충족되지 않으면, 블록 4413에서, 전자 디바이스(4122)가 라이스 파라미터 갱신 함수를 적용하여 TQC의 블록을 취득한다. 예에서, 블록 4413에서, 전자 디바이스(4122)는 초기 라이스 파라미터 값을 사용하여 초기 레벨 값을 디코딩하고, 다음 레벨 값, 등을 디코딩하기 전에 초기 라이스 파라미터 값을 증가시킬 것인지를 판정하기 위해, 도 38에서 설명한 라이스 파라미터 갱신 함수와 같은, 라이스 파라미터 갱신 함수를 적용할 수 있다.
판정 블록 4412에서 조건이 충족되면, 전자 디바이스(4122)는 레벨 값들을 상이하게 디코딩한다. 예를 들어, 전자 디바이스(4122)는 취득된 비트 스트림으로부터 라이스 파라미터를 디코딩할 수 있다. 또는 전자 디바이스(4122)는 디코딩된 라이스 파라미터 값을 사용하여 블록에 대해 모든 레벨ㄹ 값을 디코딩할 수 있다.
예에서, 블록 4414에서, 전자 디바이스(4122)가, 비트 스트림이 라이스 파라미터 갱신 함수의 최대값보다 큰 라이스 파라미터 값을 시그널링하는지를 판정한다. 비트 스트림이 상기 최대값보다 큰 라이스 파라미터 값을 시그널링하면, 블록 4417에서, 전자 디바이스(4122)가 라이스 파라미터 갱신 함수의 최대값보다 큰 라이스 파라미터 값을 사용한다. 예를 들어, 블록 4413에 적용되는 라이스 파라미터 갱신 함수는 영에서 최대 4까지의 범위일 수 있다(도 28에 의해 설명된 라이스 파라미터 갱신 함수가 사용되는 경우). 그러나, 비트 스트림은 라이스 파라미터 갱신 함수의 최대값, 예컨대, 5보다 큰 라이스 파라미터 값을 시그널링할 수 있다.
비트 스트림이 최대값보다 큰 라이스 파라미터 값을 시그널링하지 않으면, 블록 4416에서 전자 디바이스(4122)는, 블록 4413에 적용된 라이스 파리미터 갱신 함수의 최대값 이하인 라이스 파라미터 값, 예컨대 0-4를 사용할 수 있다. 블록 4416에서 사용되는 라이스 파라미터 값은 취득된 비트 스트림에 의해 시그널링될 수 있다. 전자 디바이스(4122)는 디코딩된 라이스 파라미터를 사용하여 블록에 대해 모든 레벨 값을 디코딩할 수 있다.
블록 4418에서, 전자 디바이스(4122)가 취득된, TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원할 수 있다.
블록 4414가 전자 디바이스(4122)에 의해 수행될 것인지를 제어하기 위해 플래그 또는 다른 지시자가 사용될 수 있다. 인코더 측의 전자 디바이스(4121)는, 블록 4414가 전자 디바이스(4121)에 의해 수행될 수 있도록, 플래그 또는 다른 지시자의 값을 1로 세트할 수 있다(이것은 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다). 플래그는 비트 스트림에서 임의의 레벨, 시퀀스 레벨, 슬라이스 레벨, 코딩 유닛(Coding Unit ,CU) 레벨, 예측 유닛(Prediction Unit, PU) 레벨, 또는 변환 유닛(Transform Unit, TU) 레벨, 등에 위치할 수 있다. 예에서, 전자 디바이스(4121)는 콘텐츠의 비트 심도(bit depth)가 임계값보다 크고, 플래그가 1로 세트되어 있는 경우에만 블록 4414를 수행할 수 있다.
판정 블록 4414가 수행되지 않을 경우(예컨대, 블록이 변환 스킵 블록이 아니고, 플래그가 영으로 세트되어 있거나, 비트 심도가 미리 설정된 임계값 이하임), 라이스 파라미터 값은 비트 스트림에서 시그널링되지 않을 수 있거나, 라이스 파라미터 값은 라이스 파라미터 갱신 함수의 범위내 일 수 있다. 변환 스킵 블록이 수신되지만 플래그가 영이거나 비트 심도가 미리 설정된 임계값 이하이면, 전자 디바이스(4122)는 라이스 파라미터 갱신 함수를 적용하여 잔차 샘플을 취득할 수 있다. 예에서, 상기 라이스 파라미터 갱신 함수는 도 28에서 설명한 라이스 파라미터 갱신 함수와 다를 수 있으며, 예를 들어, 최대 라이스 파라미터 값은 4보다 클 수 있다, 예컨대, 6 이상일 수 있다.
도 45a는 라이스 파라미터 갱신 함수를 적용하는 일 구성을 나타낸 흐름도이다.
블록 4510에서, 전자 디바이스(4122)가 라이스 파라미터를 초기화한다. 블록 4511에서, 전자 디바이스(4122)가 초기화된 라이스 파라미터를 사용하여 레벨 값을 디코딩한다.
판정 블록 4512에서, 전자 디바이스(4122)가 제1 라이스 파라미터 갱신 함수를 적용할 것인지를 판정한다. 예에서, 상기 제1 라이스 파라미터 갱신 함수는 도 28에서 설명한 라이스 파라미터 갱신 함수와 동일하다. 판정 블록 4512에서 조건이 충족되면, 블록 4514에서, 전자 디바이스(4122)가 제1 라이스 파라미터 갱신 함수를 적용한다.
예에서, 판정 블록 4512는 복원된 이진 심볼이 변환된 계수를 나타내는지를 판정하는 것, 예컨대, 복원된 이진 심볼과 연관된 Transform_skip_flag이 세트되어 있는지를 결정하는 것을 포함한다. 이러한 예에서, 복원된 이진 심볼과 연관된 Transform_skip_flag이 세트되어 있다는, 예컨대 값이 1이라는 판정에 응답하여 제1 라이스 파라미터 갱신 함수가 적용된다.
제1 라이스 파라미터 갱신 함수가 전자 디바이스(4122)에 의해 적용될 것인지를 제어하는 데, 플래그 또는 다른 지시자가 사용될 수 있다. 인코더 측의 전자 디바이스(4121)는 플래그 또는 다른 지시자를 값 1로 설정하여(이것은 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있음), 전자 디바이스(4122)가 제2 다른 라이스 파라미터 갱신 함수를 사용하도록 할 수 있다. 플래그는 비트 스트림에서 임의의 레벨, 시퀀스 레벨, 슬라이스 레벨, 코딩 유닛(CU) 레벨, 예측 유닛(PU) 레벨, 또는 변환 유닛(TU) 레벨, 등에 위치할 수 있다. 예에서, 전자 디바이스(4121)는, 콘텐츠의 비트 심도가 임계값보다 크고, 플래그가 1로 설정되어 있는 경우에만 제2 라이스 파라미터 갱신 함수를 적용하도록 결정할 수 있다.
판정 블록 4512에서 조건이 충족되면, 블록 4513에서, 전자 디바이스(4122)가 제1 라이스 파라미터 갱신 함수와는 다른 제2 라이스 파라미터 갱신 함수를 적용한다. 제2 라이스 파라미터 갱신 함수는 제1 라이스 파라미터 갱신 함수와는 다른 최대값, 예컨대 더 큰 최대값을 가질 수 있다. 예에서, 제2 라이스 파라미터 갱신 함수는 6 이상의 최대값을 가진다.
예를 들어, 도 45b는 최대값이 8인 다른 제2 라이스 파라미터 갱신 함수에 대한 테이블(4800)을 보여준다. 테이블(4900)에서, 심볼은 Absolute-1, Absolute-2, 또는 Absolute-3에 대응할 수 있다. 최대 라이스 파라미터 값이 N인 다른 테이블에서, 임계값은 4, 7, 13, 25, 49, 97, 193, 385, ...(3*2N+1)일 수 있다.
도 44 및 도 45와 관련하여 설명한 구성과는 다른 전자 디바이스(4121) 및 전자 디바이스(4122)의 구성의 다른 예에서, HEVC가 최대 라이스 파라미터 값이 4인 라이스 파라미터 갱신 함수를 적용하는 것과 유사한 방식으로, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수를 적용한다. 전자 디바이스(4121) 및 전자 디바이스(4122)의 구성의 또 다른 예에서, 전자 디바이스(4121)는, 전자 디바이스(4122)가 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수 또는 최대 라이스 파라미터 값이 4인 라이스 파라미터 갱신 함수를 적용하는지를 제어하기 위해 플래그 또는 다른 지시자를 설정한다. 플래그 또는 다른 지시자가 1로 설정되면, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수를 적용한다. 플래그 또는 다른 지시자가 0으로 설정되면, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 4인 라이스 파라미터 갱신 함수를 적용한다. 전자 디바이스(4121)와 전자 디바이스(4122)의 구성의 또 다른 예에서, 콘텐츠의 비트 심도가 임계값보다 크고 플래그가 1로 설정되어 있는 경우에만, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수를 적용한다.
(고 비트 심도 코딩을 위한 수정된 변환 스킵 모드)
배경으로서, HEVC에 따른 디코딩에서, 엔트로피 디코딩 뒤에는 역양자화가 이어지고, 이 뒤에는 역 변환 스킵이 이어질 수 있다. 공지의 엔트로피 디코딩 또는 여기서 설명한 엔트로피 디코딩 중 어느 것을 사용하는 시스템에서, 역변환은 변환 스킵 블록에 대해 수행되지 않는다. 이 대신에, 스케일링(scaling)이 역약장화의 결과에 대해 적용될 수 있다. 스케일링 작업(scaling operation)은 유도된 변수 TS_Shift에 기초하여 결정된다. HEVC에서 역변환 스킵 작업은 아래의 의사 코드(pseudo-code)에 대응한다:
공지의 스케일링 작업은 TS_Shift를 MAX_TDR-Bit_Depth-Log2TrSize로 결정하는 것을 포함한다. Max_TDR는 변환의 최대 동적 범위이고, 이는 공지의 시스템에서 15일 수 있다. Bit_Depth는 샘플 값의 비트 심도이고, 이는 공지의 시스템에서 0 내지 16의 범위일 수 있다. Log2TrSize는 변환 크기의 Log2이고, 이는 변환 스킵이 4x4 블록에 적용되는 공지의 시스템에서 2일 수 있다(TrSize는 블록의 크기를 의미한다). 고 비트 심도 코딩(higher bit-depth coding)의 경우, TS_Shift=MAX_TDR-Bit_Depth-Log2TrSize인 스케일링 연산을 적용한 뒤에 정밀도 손실이 관찰되었다.
이 기술분야에 공지된, 관찰되는 정밀도 손실 없이 고 비트 심도 코딩을 지원하기 위해, TS_Shift는 MAX[(MAX_TDR-Bit_Depth-Log2TrSize), 0]로 결정될 수 있다. MAX 연산은 괄호 안의 값, MAX_TDR-Bit_Depth-Log2TrSize와 0 중 최대값을 돌려준다. 따라서, TS_Shift는 음이 아닌 정수, 예컨대, 영보다 작지 않은 정수이다.
다른 예에서, 이 기술분야에 공지된, 관찰되는 정밀도 손실 없이 고 비트 심도 코딩을 지원하기 위해, TS_Shift는 MAX_TDR-Bit_Depth-Log2TrSize+A로 결정될 수 있다. 인코더는 변수 A를 선택하여 TS_Shift가 영보다 작을 수 있는지의 여부를 제어할 수 있다. 디코더는 MAX_TDR-Bit_Depth-Log2TrSize+A를 사용하여 TS_Shift를 결정하기 위해 비트 스트림으로부터 값 A를 디코딩할 수 있다.
예에서, 입력 비디오 데이터의 비트 심도가 14 비트 이상이면, 인코더는 A를 1로 설정할 수 있고, 다른 비트 심도에 대해서는 A는 0으로 설정된다. 또한, 입력 비디오 데이터의 비트 심도가 14 비트 이상이지만 16비트 미만이면, 인코더는 A를 3으로 설정할 수 있고, 다른 비트 심도에 대해서는 A는 0으로 설정된다.
도 46은 인코더 및 디코더의 예를 나타낸 블록도이다.
시스템(4600)은 디코더(4612)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(4611)를 포함한다. 인코더(4611)와 디코더(4612)는 네트워크를 통해 통신할 수 있다.
인코더(4611)는 수정된 변환 스킵 모드를 사용하여 인코딩하도록 구성된 전자 디바이스(4621)를 포함한다. 전자 디바이스(4621)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 47에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(4612)는 수정된 변환 스킵 모드를 사용하여 디코딩하도록 구성된 전자 디바이스(4622)를 포함한다. 전자 디바이스(4622)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 48에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 47은 수정된 변환 스킵 모드를 사용하는 방법의 일 구성을 나타낸 흐름도이다.
블록 4701에서, 전자 디바이스(4621)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 판정 블록 4702에서, 전자 디바이스(4621)가 블록의 인코딩이 수정된 변환 스킵 모드를 사용하여 디코딩될 것인지를 판정한다.
블록의 인코딩이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이면, 블록 4703에서, 전자 디바이스(4621)가 수정된 변환 스킵 모드를 채용하도록 디코더(4612)에 시그널링하여 TS_Shift를 결정한다. 예에서, 신호는 생성된 비트 스트림 내의 플래그일 수 있다. 플래그는 비트 스트림에서 임의의 레벨, 시퀀스 레벨, 슬라이스 레벨, CU 레벨, PU 레벨, 또는 TU 레벨, 등에 위치할 수 있다. TS_Shift는 수정된 변환 스킵 모드에서 MAX_TDR - Bit_Depth - Log2TrSize + A로 계산될 것이면, 전자 디바이스(4621)는 또한 플래그의 설정에 더해 A의 값을 시그널링할 수 있다.
블록의 인코딩이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이 아니면, 블록 4704에서, 전자 디바이스(4621)는 수정된 변환 스킵 모드를 채용하도록 디코더(4612)에 시그널링하지 않고 TS_Shift를 결정한다.
블록 4705에서, 전자 디바이스(4621)는 데이터의 블록을 인코딩하고 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
도 48은 디코딩 측에서 수정된 변환 스킵 모드를 사용하는 방법의 일 구성을 나타낸 흐름도이다.
블록 4801에서, 전자 디바이스(4622)가 비트 스트림을 취득한다. 블록 4802에서, 전자 디바이스(4622)가 이진 심볼을 복원한다.
판정 블록 4803에서, 전자 디바이스(4622)가 이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것인지를 판정한다. 예에서, 전자 디바이스(4622)는 취득된 비트 스트림 내의 플래그가 세트되어 있는지를 판정한다.
이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이면, 블록 4804에서, 전자 디바이스(4622)가 제1 알고리즘을 사용하여 TS_Shift를 결정하고, 비디오 데이터를 복원한다. 예에서, 제1 알고리즘은 MAX[(MAX_TDR-Bit_Depth-Log2TrSize), 0]이다. 다른 예에서, 제1 알고리즘은 MAX_TDR-Bit_Depth-Log2TrSize+A이다. 후자의 경우에, 전자 디바이스(4622)는 또한 인코더(4611)로부터의 신호에 기초하여 값 A를 결정할 수 있다. 또는, 후자의 경우에, 전자 디바이스(4622)는 취득된 비트 스트림의 속성에 기초하여 A의 값을 추론할 수 있다. 예를 들어, 전자 디바이스(4622)는 비트 스트림의 비트 심도가 14 비트 이상인지를 판정하고, 그렇다면, 값 1이 A에 사용된다. 그러나, 그 검사 결과가 비트 스트림이 14비트보다 작다는 것을 지시하면, 값 0이 A에 사용된다. 다른 예에서, 전자 디바이스(4622)는 비트 스트림의 비트 심도가 14 비트 이상이지만 16 비트 이하인지를 판정하고, 그렇다면, 값 3이 A에 사용된다. 그러나, 검사 결과가, 비트 스트림의 비트 심도가 14 비트보다 작거나 16 비트보다 크면, 값 0이 A에 사용된다.
이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이 아니면, 블록 4805에서, 전자 디바이스(4622)가 제2 알고리즘을 사용하여 TS_Shift를 결정하고, 비디오 데이터를 복원한다. 예를 들어, TS_Shift는 MAX_TDR-Bit_Depth-Log2TrSize로 결정된다. 블록 4806에서, 전자 디바이스(4622)가 복원된 비디오 데이터를 메모리 디바이스에 저장한다.
HEVC 규격(specification) 내에서, 역양자화된 입력 d[x][y]의 세트에 대한 역 변환 스킵 프로세스의 출력 r[x][y]은 다음과 같이 지정되어 있다:
TS_Shift를 MAX[(MAX_TDR-Bit_Depth-Log2TrSize), 0]로 결정하는 것은 아래의 수정된 역변환 스킵 프로세스와 연관될 수 있다:
입력으로 역양자화된 계수 d[x][y]를 취하여 잔차 샘플 값 r[x][y]을 출력하는 역변환 스킵 시프트 프로세스를 위한 전반적인 스케일링 연산은, 초기의 왼쪽 비트 시프트 연산과 나중의 오른쪽 비트 시프트 연산을 포함할 수 있다. 일부 시스템에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 하는 것이 바람직할 수 있다. 만약 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 많으면, 그 결과 출력은 영(0)으로 설정된 최하위 비트(least significant bit)들의 서브세트를 포함할 수 있다. 이것은 역변환 스킵 프로세스에서 충실도(fidelity)의 손실에 해당한다. 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 최소 개수를 제한함으로써 달성된다. 예를 들어, 오른쪽 비트 시프트의 양은 MAX(오른쪽 비트 시프트의 양에 대한 하한, 오른쪽 비트 시프트 양에 대한 유도된 값)으로 계산될 수 있다. 다른 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은, 왼쪽 시프트 연산에 의해 시프트되는 비트의 최대 수를 제한함으로써 달성된다. 예를 들어, 왼쪽 비트 시프트의 양은 MIN(왼쪽 비트 시프의 양에 대한 상한, 왼쪽 비트 시프트의 양에 대한 유도된 값)으로 계산될 수 있다. MIN 연산은 괄호 안의 값 중 최소 값을 돌려준다. 에를 들어, MIN(x,y)의 결과는 x<=y이면 x이고, 그렇지 않으면 그 결과는 y이다. 다른 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은, 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 최소 수와 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 최대 수를 모두 제한함으로써 달성된다. 다른 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은, 기타 적절한 메커니즘에 의해 달성된다.
왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 최대 수를 제한할 때, 역양자화된 입력 d[x][y] (주: d[x][y]는 스케일링된 변환 계수라고도 할 수 있음)의 세트에 대한 역 변환 스킵 프로세스의 출력 r[x][y]은 다음과 같이 지정될 수 있다:
a. 변수 bdShift는 다음과 같이 유도된다:
bdShift=(cIdx==0)?20 - BitDepthY:20-BitDepthC
b. 잔차 샘플 r의 (nTbS)x(nTbS) 배열은 다음과 같이 유도된다:
- transform_skip_flag_sh[xTbY][yTbY][cIdx]가 1이면, x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 배열 값 r[x][y]은 다음과 같이 유도된다:
r[x][y]=(d[x][y]<< MIN(7, bdShift))
- 그렇지 않고 (transform_skip_flag_sh[xTbY][yTbY][cIdx]가 0)이면, 스케일링된 변환 계수에 대한 변환 프로세스는 변환 블록 위치 (xTbY, yTbY), 변환 블록의 크기 nTbS, 색 성분 변수 cIdx, 및 스케일링된 변환 계수 d의 (nTbS)x(nTbS) 배열을 입력으로 하여 호출되고, 그 출력은 잔차 샘플 r의 (nTbS)x(nTbS) 배열이다.
c. x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 값 r[x][y]는 다음과 같이 수정된다:
r[x][y]=(r[x][y]+(1<<(bdShift-1)))>>bdShift
여기서,
(xTbY, yTbY)는 현재 픽처의 왼쪽 위 루마 샘플(top-left luma sample)에 상대적인 현재의 루마 변환 블록의 왼쪽 위 샘플를 지정하는 루마 위치에 대응하고,
cIdx는 현재 블록의 색 성분을 지정하고,
nTbS는 현재의 변환 블록의 크기를 지정하고,
BitDepthY와 BitDepthC는 각각 루마 소스 비트 심도와 크로마 소스 비트 심도를 지시한다.
transform_skip_flag_sh[x0][y0][cIdx]는, 변환이 연관된 변환 블록에 적용되는지의 여부를 지정한다: 배열 인덱스 x0, y0는 픽처의 왼쪽 위 루마 샘플에 상대적인 고려된 변환 블록의 왼쪽 위 루마 샘플의 위치 (x0, y0)를 지정한다. 배열 인덱스 cIdx는 색 성분에 대한 지시자를 지정하고; 이는 루마에 대해서는 0이고, Cb에 대해서는 1이고, Cr에 대해서는 2이다. transform_skip_flag_sh[x0][y0][cIdx]이 1일 때, 변환이 현재의 변환 블록에 적용되지 않는다는 것을 지정한다. transform_skip_flag_sh[x0][y0][cIdx]이 0일 때, 변환이 현재의 변환 블록에 적용되거나 다른 신택스 요소에 의존하지 않는다는 것을 지정한다. transform_skip_flag_sh[x0][y0][cIdx]가 존재하지 않을 때, 이것은 0과 동일하다고 추론된다.
실시예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 최대 수가 제한될 때, 왼쪽 비트 시프트의 양에 대한 유도된 값은 비트 스트림 내의 시그널링된 과거 데이터, 예를 들어 현재의 변환 블록의 크기에 기초하여 결정된다. 왼쪽 비트 시프트의 양에 대한 유도된 값을 derivedTSLeftShift로 표기하면, 역양자화된 입력 d[x][y](스케일링된 변환 계수라고도 함)의 세트에 대한 역변환 스킵 프로세스의 출력 r[x][y]은 다음과 같이 지정될 수 있다:
a. 변수 bdShift는 다음과 같이 유도된다:
bdShift=(cIdx==0)?20-BitDepthY:20-BitDepthC
b. 잔차 샘플 r의 (nTbS)x(nTbS) 배열은 다음과 같이 유도된다:
- transform_skip_flag_sh[xTbY][yTbY][cIdx]가 1이면, x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 배열 값 r[x][y]는 다음과 같이 유도된다:
r[x][y]=(d[x][y]<<MIN(derivedTSLeftShift, bdShift))
- 그렇지 않고 (transform_skip_flag_sh[xTbY][yTbY][cIdx]가 0)이면, 스케일링된 변환 계수에 대한 변환 프로세스는 변환 블록 위치 (xTbY, yTbY), 변환 블록의 크기 nTbS, 색 성분 변수 cIdx, 및 스케일링된 변환 계수 d의 (nTbS)x(nTbS) 배열을 입력으로 하여 호출되고, 그 출력은 잔차 샘플 r의 (nTbS)x(nTbS) 배열이다.
c. x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 값 r[x][y]는 다음과 같이 수정된다:
r[x][y]=(r[x][y]+(1<<(bdShift-1)))>>bdShift
예에서, transform_skip_flag_sh[xTbY][yTbY][x]는 Transform_skip_flag에 대응한다.
이상에서 설명한 시스템과 장치는 전용 프로세서 시스템, 마이크로 컨트롤러, 프로그래머블 로직 디바이스, 마이크로프로세서, 또는 이들의 임의 조합을 사용하여, 여기서 설명한 작업(operation)의 일부 또는 전부를 수행할 수 있다. 이상에서 설명한 작업의 일부는 소프트웨어로 구현될 수 있고 다른 작업들은 하드웨어로 구현될 수 있다. 여기서 설명한 하나 이상의 작업, 프로세스, 및/또는 방법은 도시된 도면을 참조하여 여기서 설명한 것과 실질적으로 유사한 장치, 기기, 및/또는 시스템에 의해 수행될 수 있다.
처리 디바이스는 메모리에 저장된 명령어 또는 "코드"를 실행할 수 있다. 메모리는 데이터도 저장할 수 있다. 처리 디바이스는, 아날로그 프로세서, 디지털 프로세서, 마이크로프로세서, 멀티코어 프로세서, 프로세서 어레이, 네트워크 프로세서, 등을 포함할 수 있지만, 이에 한정되지 않는다. 처리 디바이스는 통합된 제어 시스템 또는 시스템 관리자의 일부일 수 있거나, 또는
무선 송신을 통해 로컬로 또는 원격으로 네트워킹된 시스템과 인터페이싱하도록 구성된 휴대형 전자 디바이스로서 제공될 수 있다.
프로세서 메모리, 예를 들어, 집적회로 마이크로프로세서 등 내에 배치된 RAM 또는 FLASH 메모리는 처리 디바이스와 함께 통합될 수 있다. 다른 예에서, 메모리는, 외부 디스크 드라이브, 스토리지 어레이, 휴대형 FLASH 키폽(key fob) 등의, 독립적인 디바이스를 포함할 수 있다. 메모리와 처리 디바이스는 작동 가능하게 서로 연결되거나, 또는 서로 통신할 수 있다. 관련 메모리(associated memory)는 권한 설정, 또는 미설정에 의해 디자인(ROM)에 의해 "읽기 전용"할 수 있다. 메모리의 다른 예는 고체 상태의 반도체 디바이스로 구현될 수 있는 WORM, EPROM, EEPROM, FLASH 등을 포함할 수 있지만, 이에 한정되지 않을 수 있다. 다른 메모리는, 종래의 회전 디스크 드라이브와 같이, 움직이는 부분을 포함할 수 있다. 이러한 모든 메모리들은 "기계로 판독 가능할" 수 있고, 처리 디바이스에 판독 가능할 수 있다.
조작 명령어 또는 커맨드는 저장된 컴퓨터 소프트웨어("컴퓨터 프로그램" 또는 "코드"라고도 알려져 있음)의 유형의 형태로 구현되거나 실시될 수 있다. 프로그램, 또는 코드는 디지털 메모리에 저장될 수 있고, 처리 디바이스에 의해 판독될 수 있다. "컴퓨터로 판독 가능한(computer-readable) 저장 매체"(또는, 대안으로는, "기계로 판독 가능한(machine-readable) 저장 매체")는, 메모리가 컴퓨터 프로그램 또는 다른 데이터와 유사한 디지털 정보를, 적어도 일시적으로 저장할 수 있는 한, 그리고 저장된 정보가 적절한 처리 디바이스로 "판독"될 수 있는 한, 장래의 새로운 기술은 물론, 전술한 모든 유형의 메모리를 포함할 수 있다. 용어는 "컴퓨터로 판독 가능"은 완전한 메인프레임, 미니 컴퓨터, 데스크톱 또는 심지어 노트북 컴퓨터를 의미하는 "컴퓨터"의 역사적 사용에 한정되지 않을 수 있습니다. 오히려, "컴퓨터로 판독 가능"은 프로세서, 처리 디바이스, 또는 임의의 컴퓨팅 시스템에 의해 판독 가능할 수 있는 저장 매체를 포함할 수 있다. 이러한 매체는 컴퓨터 또는 프로세서에 의해 로컬 및/또는 원격으로 액세스할 수 있는 임의의 이용 가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 및 탈착 가능한 매체 및 탈착 불가능한 매체, 또는 그 임의 조합을 포함할 수 있다.
컴퓨터로 판독 가능한 저장 매체에 저장된 프로그램은 컴퓨터 프로그램 제품을 포함할 수 있다. 예를 들어, 저장 매체는 컴퓨터 프로그램을 저장 또는 전송하기 위한 편리한 수단으로 사용될 수 있다. 편의상, 작업은 다양한 상호접속 또는 연결된 기능 블록 또는 다이어그램으로 설명될 수 있다. 그러나, 이들 기능 블록 또는 다이어그램이, 경계가 불분명한 단일 논리 디바이스, 프로그램, 또는 작업에 동등하게 집성될 수 있는 경우가 있을 수 있다.
당업자는 본원에 개시된 개념들은 여러 가지 방법으로 특정 애플리케이션에 맞춰질 수 있다는 것을 인식할 것이다. 특히, 당업자는, 도시된 예가 본 명세서를 읽으면 명백해질, 많은 다른 구현예 중 하나일 뿐임을 인식할 것이다.
명세서는 여러 곳에서, "일", "하나", "다른", 또는 "일부" 예(들)를 참조할 수 있지만, 이것은 반드시 그러한 각각의 참조가 동일한 예(들)에 대한 것, 또는 특징이 단일 예에만 적용된다는 것을 의미하지 않는다.