고해상도 비디오에 대한 수요가 증가함에 따라, 비디오 코딩 방법들 및 기술들은 현대 기술에서 유비쿼터스이다. 비디오 코덱은 전형적으로 디지털 비디오를 압축하거나 압축해제하는 전자 회로 또는 소프트웨어를 포함하고, 더 높은 코딩 효율성을 제공하기 위해 지속적으로 개선되고 있다. 비디오 코덱은 압축되지 않은 비디오를 압축된 포맷으로 또는 그 반대로 변환한다. 비디오 품질, (비트 레이트에 의해 결정되는) 비디오를 나타내는데 이용되는 데이터의 양, 인코딩 및 디코딩 알고리즘들의 복잡성, 데이터 손실들 및 오류들에 대한 민감도, 편집 용이성, 랜덤 액세스, 및 종단간 지연(레이턴시) 사이에는 복잡한 관계들이 존재한다. 압축된 포맷은 대개, 표준 비디오 압축 명세, 예를 들어 HEVC(High Efficiency Video Coding) 표준(H.265 또는 MPEG-H Part 2라고도 알려짐), 마무리 예정인 VVC(Versatile Video Coding) 표준, 또는 기타의 현재 및/또는 미래의 비디오 코딩 표준들을 준수한다.
개시된 기술의 실시예들은 런타임 성능을 개선하기 위해 기존의 비디오 코딩 표준들(예를 들어, HEVC, H.265) 및 미래의 표준들에 적용될 수 있다. 섹션 제목들은 본 문서에서 설명의 가독성을 향상시키기 위해 이용되며 논의 또는 실시예들(및/또는 구현들)을 각각의 섹션들로만 어떤 식으로든 제한하지 않는다.
1 HEVC에 대한 간략한 검토
1.1 HEVC/H.265에서의 인트라 예측
인트라 예측은, 고려된 색상 채널에서 이전에 복원된 샘플들을 이용하여 주어진 TB(transform block; 변환 블록)에 대한 샘플들을 생성하는 것을 포함한다. 인트라 예측 모드는 루마 및 크로마 채널들에 대해 별개로 시그널링되며, 크로마 채널 인트라 예측 모드는 'DM_CHROMA' 모드를 통해 루마 채널 인트라 예측 모드에 선택적으로 의존한다. 인트라 예측 모드는 PB(prediction block; 예측 블록) 레벨에서 시그널링되지만, CU에 대한 잔차 쿼드 트리 계층구조에 따라 TB 레벨에서 인트라 예측 프로세스가 적용됨으로써, 1개 TB의 코딩이 CU 내의 다음 TB의 코딩에 영향을 미치는 것을 허용하므로, 기준 값들로서 이용되는 샘플까지의 거리를 감축시킨다.
HEVC는, 35개의 인트라 예측 모드 ― DC 모드, 평면 모드 및 33개의 방향성, 또는 '각도' 인트라 예측 모드를 포함한다. 33개의 각도 인트라 예측 모드가 도 1에 나와 있다.
크로마 색상 채널과 연관된 PB들의 경우, 인트라 예측 모드는, 평면, DC, 수평, 수직, 'DM_CHROMA' 모드 또는 때로는 대각선 모드 '34'로서 명시된다.
크로마 포맷들 4:2:2 및 4:2:0의 경우, 크로마 PB는 2개 또는 4개의 (각각) 루마 PB와 중첩될 수 있다; 이 경우 DM_CHROMA에 대한 루마 방향은 이들 루마 PB들의 상단 좌측에서 취해진다는 점에 유의한다.
DM_CHROMA 모드는, 루마 색상 채널 PB의 인트라 예측 모드가 크로마 색상 채널 PB들에 적용됨을 나타낸다. 이것은 비교적 일반적이기 때문에, intra_chroma_pred_mode의 최고-가능성-모드 코딩 방식은 이 모드가 선택되도록 편향된다.
2. VVC에서 인트라 예측의 예들
2.1 67개의 인트라 예측 모드를 이용한 인트라 모드 코딩
자연스런 비디오에서 나타나는 임의의 엣지 방향들을 캡처하기 위해, 방향성 인트라 모드의 수는, HEVC에서 이용될 때, 33에서 65로 확장된다. 추가적인 방향 모드들은 도 2에서 빨간색 점선 화살표들로 표시되며, 평면 및 DC 모드는 동일하게 유지된다. 이들 더 조밀한 방향성 인트라 예측 모드들은, 모든 블록 크기에 대해, 및 루마 및 크로마 인트라 예측 양쪽 모두에 대해 적용된다.
2.2 교차-성분 선형 모델(CCLM)의 예들
일부 실시예에서, 및 교차-성분 중복성을 감축시키기 위해, 다음과 같이 선형 모델을 이용함으로써 동일한 CU의 복원된 루마 샘플들에 기초하여 크로마 샘플들이 예측되는 JEM에서 교차-성분 선형 모델(CCLM) 예측 모드(LM이라고도 함)가 이용된다:
여기서,
는 CU에서 예측된 크로마 샘플을 나타내고,
는 동일한 CU의 다운샘플링된 복원된 루마 샘플을 나타낸다. 선형 모델 파라미터
및
는, 다운샘플링된 이웃 루마 샘플 세트 내부의 최소 샘플 값과 최대 샘플 값을 갖는 루마 샘플, 및 그들의 대응하는 크로마 샘플들인, 2개의 샘플로부터의 루마 값들과 크로마 값들 사이의 관계로부터 도출된다. 도 3은 CCLM 모드에 포함된 현재 블록의 샘플과 좌측 및 위쪽 샘플들의 위치의 한 예를 도시한다.
이 파라미터 계산은 디코딩 프로세스의 일부로 수행되고, 인코더 검색 동작과 같지 않다. 그 결과,
및
값을 디코더에 전달하기 위해 어떠한 신택스도 이용되지 않는다.
크로마 인트라 모드 코딩의 경우, 크로마 인트라 모드 코딩을 위해 총 8개의 인트라 모드가 허용된다. 이들 모드는, 5개의 전통적인 인트라 모드와 3개의 교차-성분 선형 모델 모드(CCLM, LM_A 및 LM_L)를 포함한다. 크로마 모드 코딩은 대응하는 루마 블록의 인트라 예측 모드에 직접적으로 의존한다. I개 슬라이스에서 루마 및 크로마 성분들에 대한 별개의 블록 분할 구조가 인에이블되기 때문에, 하나의 크로마 블록은 복수의 루마 블록에 대응할 수 있다. 따라서, 크로마 DM 모드의 경우, 현재 크로마 블록의 중심 위치를 커버하는 대응하는 루마 블록의 인트라 예측 모드가 직접 상속된다.
2.3 복수의 기준 라인(MRL) 인트라 예측
복수의 기준 라인(MRL) 인트라 예측은 인트라 예측을 위해 더 많은 기준 라인을 이용한다. 도 4에서, 4개의 기준 라인의 예가 나와 있고, 여기서, 세그먼트 A 및 F의 샘플들은 복원된 이웃 샘플들로부터 가져온 것이 아니라, 세그먼트 B 및 E로부터 가장 가까운 샘플들로 각각 패딩된다. HEVC 인트라-픽처 예측은 가장 가까운 기준 라인(즉, 기준 라인 0)을 이용한다. MRL에서, 2개의 추가적인 라인(기준 라인 1 및 기준 라인 3)이 이용된다. 선택된 기준 라인의 인덱스(mrl_idx)는 시그널링되고 인트라 예측자를 생성하는데 이용된다. 0보다 큰 기준 라인 idx의 경우, MPM 목록에는 추가적인 기준 라인 모드들만 포함하고 나머지 모드 없이 신호 mpm 인덱스만 포함한다.
2.4 인트라 서브파티션들(ISP)
ISP(Intra Sub-Partitions) 툴은 루마 인트라 예측된 블록들을 블록 크기에 따라 수직 또는 수평으로 2개 또는 4개의 서브파티션으로 분할한다. 예를 들어, ISP에 대한 최소 블록 크기는 4x8(또는 8x4)이다. 블록 크기가 4x8(또는 8x4)보다 크다면, 대응하는 블록은 4개의 서브파티션으로 분할된다. 도 5는 2개의 가능성의 예들을 도시한다. 모든 서브파티션은 적어도 16개의 샘플을 갖는 조건을 충족한다.
각각의 서브파티션에 대해, 예측 신호에 잔차 신호를 추가함으로써 복원된 샘플이 획득된다. 여기서, 엔트로피 디코딩, 역양자화, 역변환 등의 프로세스들에 의해 잔차 신호가 생성된다. 따라서, 각각의 서브파티션의 복원된 샘플 값들은 다음 서브파티션의 예측을 생성하는데 이용가능하고, 각각의 서브파티션은 반복적으로 처리된다. 또한 처리될 첫 번째 서브파티션은 CU의 상단 좌측 샘플을 포함하고 계속해서 아래쪽(수평 분할) 또는 우측(수직 분할)으로 이어지는 서브파티션이다. 그 결과, 서브파티션 예측 신호들을 생성하는데 이용되는 기준 샘플들은 라인들의 좌측과 위쪽들에만 위치한다. 모든 서브파티션은 동일한 인트라 모드를 공유한다.
2.5 어파인 선형 가중된 인트라 예측(ALWIP 또는 행렬 기반 인트라 예측)
어파인 선형 가중된 인트라 예측(ALWIP, 일명, 행렬 기반 인트라 예측(MIP))은 JVET-N0217에서 제안된다.
JVET-N0217에서, 2개의 테스트가 수행된다. 테스트 1에서, ALWIP는 8K 바이트의 메모리 제한과 샘플당 최대 4개의 곱셈으로 설계된다. 테스트 2는 테스트 1과 유사하지만, 메모리 요건 및 모델 아키텍처 측면에서 설계를 더욱 단순화한다.
○ 모든 블록 형상에 대한 단일 세트의 행렬들 및 오프셋 벡터들.
○ 모든 블록 형상에 대한 19개로의 모드 수 감축.
○ 5760 10비트 값들, 즉, 7.20 킬로바이트로의 메모리 요건의 감축.
○ 예측된 샘플들의 선형 보간은 첫 번째 테스트에서와 같이 반복 보간을 대체하여 방향당 단일의 단계에서 실행된다.
2.5.1 JVET-N0217의 테스트 1
폭
및 높이
의 직사각형 블록의 샘플을 예측하기 위해, 어파인 선형 가중된 인트라 예측(ALWIP)은 블록 좌측의 H개의 복원된 이웃 경계 샘플들의 한 라인과 블록 위의
복원된 이웃 경계 샘플들의 한 라인을 입력으로서 취한다. 복원된 샘플들이 이용가능하지 않다면, 이들은 종래의 인트라 예측에서와 같이 생성된다.
예측 신호의 생성은 다음과 같은 3개 단계에 기초한다:
경계 샘플들 중에서,
의 경우 4개 샘플, 기타 모든 경우 8개 샘플이 평균화에 의해 추출된다.
오프셋의 추가가 뒤따르는 행렬 벡터 곱셈은 평균된 샘플들을 입력으로서 이용하여 실행된다. 결과는 원래 블록의 서브샘플링된 샘플 세트에 관한 감축된 예측 신호이다.
나머지 위치들에서의 예측 신호는, 각각의 방향에서의 단일 단계 선형 보간인 선형 보간에 의해 서브샘플링된 세트에 관한 예측 신호로부터 생성된다.
예측 신호를 생성하는데 필요한 행렬들 및 오프셋 벡터들은 행렬들의 3개 세트
으로부터 취해진다. 세트
는, 각각 16개의 행 및 4개의 열과 각각 크기가 16인 18개의 오프셋 벡터
를 갖는 18개의 행렬
로 구성된다. 그 세트의 행렬들 및 오프셋 벡터들은 크기
인 블록들에 이용된다. 세트
은 10개의 행렬
로 구성되며, 각각의 행렬은 16개의 행 및 8개의 열과, 각각 크기가 16인 10개의 오프셋 벡터
를 갖는다. 그 세트의 행렬들 및 오프셋 벡터들은 크기들 4×8, 8×4, 및 8×8인 블록들에 이용된다. 마지막으로, 세트
는 6개의 행렬
로 구성되고, 각각의 행렬은 64개의 행 및 8개의 열과, 크기가 64인 6개의 오프셋 벡터
를 갖는다. 그 세트의 행렬들 및 오프셋 벡터들 또는 이들 행렬들 및 오프셋 벡터들의 부분들은 다른 모든 블록 형상들에 이용된다.
행렬 벡터 곱의 계산에 요구되는 곱셈의 총 수는 항상
보다 작거나 같다. 즉, ALWIP 모드에 대해 샘플당 최대 4개의 곱셈이 요구된다.
2.5.2 경계의 평균화
제1 단계에서 입력 경계들
및
는 더 작은 경계들
및
로 감축된다. 여기서,
및
양쪽 모두는 4×4 블록의 경우 2개의 샘플로 구성되고, 다른 모든 경우 양쪽 모두는 4개의 샘플로 구성된다.
4×4 블록의 경우,
에 대해, 다음과 같이 정의한다
그렇지 않고, 블록 폭 W가
로 주어지면,
에 대해, 다음과 같이 정의한다
2개의 감축된 경계
및
는 감축된 경계 벡터
에 연결되어, 형상 4×4의 블록들의 경우 크기가 4이고 다른 모든 형상의 블록들에 대한 크기가 8이다.
가 ALWIP 모드를 지칭한다면, 이 연결은 다음과 같이 정의된다:
마지막으로, 서브샘플링된 예측 신호의 보간을 위해, 큰 블록들에서, 평균된 경계의 제2 버전이 필요하다. 즉,
이고
이면,
로 쓸 수 있고,
에 대해, 다음과 같이 정의한다
2.5.3 행렬 벡터 곱셈에 의한 감축된 예측 신호의 생성
감축된 입력 벡터
로부터, 감축된 예측 신호
가 생성된다. 후자의 신호는 폭
및 높이
의 다운샘플링된 블록에 관한 신호이다. 여기서,
및
는 다음과 같이 정의된다:
감축된 예측 신호
는, 행렬 벡터 곱을 계산하고 오프셋을 더함으로써 계산된다:
는,
개의 행과,
인 경우 4개의 열, 다른 모든 경우에는 8개의 열을 갖는 행렬이다.
는 크기
의 벡터이다.
행렬
및 벡터
는 세트
중 하나로부터 다음과 같이 취해진다. 인덱스
을 다음과 같이 정의한다:
그 다음,
또는
및
이면,
및
로 둔다.
및
의 경우,
를,
경우 다운샘플링된 블록의 홀수 x-좌표에 대응하고,
인 경우에는 다운샘플링된 블록의 홀수 y-좌표에 대응하는,
의 모든 행을 생략함으로써 발생하는 행렬이라고 하자.
마지막으로, 감축된 예측 신호는 다음과 같은 경우들에서 그 전치(transpose)로 대체된다:
의 계산에 필요한 곱셈의 수는
의 경우에 4인데, 그것은 이 경우에
가 4개의 열과 16개의 행을 갖기 때문이다. 다른 모든 경우에는,
는 8개의 열과
개의 행을 가지며, 이들 경우에
개의 곱셈이 요구된다는 것을 즉시 확인한다, 즉, 또한 이들 경우에,
을 계산하기 위해 샘플당 최대 4개의 곱셈이 필요하다.
2.5.4 전체 ALWIP 프로세스의 예시
평균화, 행렬 벡터 곱셈 및 선형 보간의 전체 프로세스가 도 6 내지 도 9에서 상이한 형상들에 대해 예시되어 있다. 나머지 형상들은 도시된 경우들 중 하나인 것으로 취급된다는 점에 유의한다.
1. 4×4 블록이 주어지면, ALWIP는 경계의 각각의 축을 따라 2개의 평균을 취한다. 결과적인 4개의 입력 샘플은 행렬 벡터 곱셈에 들어간다. 행렬들은 세트
로부터 취해진다. 오프셋을 추가하면, 16개의 최종 예측 샘플이 나온다. 예측 신호의 생성에 대해 선형 보간이 필요하지 않다. 따라서, 샘플당 총
개의 곱셈이 수행된다.
2. 8×8 블록이 주어지면, ALWIP는 경계의 각각의 축을 따라 4개의 평균을 취한다. 결과적인 8개의 입력 샘플은 행렬 벡터 곱셈에 들어간다. 행렬들은 세트
로부터 취해진다. 이것은 예측 블록의 홀수 위치들에서 16개의 샘플을 생성한다. 따라서, 샘플당 총
개의 곱셈이 수행된다. 오프셋을 추가한 후, 이들 샘플들은 감축된 상단 경계를 이용하여 수직으로 보간된다. 원래의 좌측 경계를 이용하여 수평 보간이 뒤따른다.
3. 8×4 블록이 주어지면, ALWIP는 경계의 수평 축을 따라 4개의 평균 및 좌측 경계에서 4개의 원래 경계 값을 취한다. 결과적인 8개의 입력 샘플은 행렬 벡터 곱셈에 들어간다. 행렬들은 세트
로부터 취해진다. 이것은 예측 블록의 홀수 수평 및 각각의 수직 위치들에서 16개의 샘플을 생성한다. 따라서, 샘플당 총
개의 곱셈이 수행된다. 오프셋을 추가한 후, 이들 샘플들은 원래의 좌측 경계를 이용하여 수평으로 보간된다.
4. 16×16 블록이 주어지면, ALWIP는 경계의 각각의 축을 따라 4개의 평균을 취한다. 결과적인 8개의 입력 샘플은 행렬 벡터 곱셈에 들어간다. 행렬들은 세트
로부터 취해진다. 이것은 예측 블록의 홀수 위치들에서 64개의 샘플을 생성한다. 따라서, 샘플당 총
개의 곱셈이 수행된다. 오프셋을 추가한 후, 이들 샘플들은 상단 경계의 8개의 평균을 이용하여 수직으로 보간된다. 원래의 좌측 경계를 이용하여 수평 보간이 뒤따른다. 이 경우, 보간 프로세스는 어떠한 곱셈도 추가하지 않는다. 따라서, ALWIP 예측을 계산하기 위해 샘플당 총 2개의 곱셈이 요구된다.
더 큰 형상들의 경우, 절차는 본질적으로 동일하며 샘플당 곱셈 수가 4개보다 작은지를 체크하는 것이 쉽다.
W>8인 W×8 블록들의 경우, 샘플들이 홀수 수평 및 각각의 수직 위치들에 제공되므로 수평 보간만이 필요하다.
마지막으로, W>8인 W×4 블록들의 경우, A_kbe를, 다운샘플링된 블록의 수평 축을 따라 홀수 엔트리에 대응하는 모든 행을 생략함으로써 발생하는 행렬이라고 하자. 따라서, 출력 크기는 32이고 다시 수평 보간만 수행된다.
전치된 사례들은 그에 따라 취급된다.
2.5.5 단일 단계 선형 보간
인
블록의 경우, 예측 신호는 선형 보간에 의해
에 의해 감축된 예측 신호
로부터 발생한다. 블록 형상에 따라, 선형 보간은, 수직, 수평 또는 양쪽 방향에서 이루어진다. 선형 보간이 양쪽 방향에서 적용되는 경우,
이면 수평 방향에서 먼저 적용되고, 그렇지 않으면 수직 방향에서 먼저 적용된다.
일반성을 잃지 않고
이고
인
블록을 고려하자. 그 다음, 1차원 선형 보간이 다음과 같이 수행된다. 일반성을 잃지 않고, 수직 방향의 선형 보간을 설명하는 것으로 충분하다. 먼저, 감축된 예측 신호는 경계 신호에 의해 상단으로 확장된다. 수직 업샘플링 인자
를 정의하고
라고 기재한다. 그 다음, 확장된 감축된 예측 신호를 다음과 같이 정의한다
그 다음, 이 확장된 감축된 예측 신호로부터, 수직 선형 보간된 예측 신호는 다음과 같이 생성된다
2.5.6 제안된 인트라 예측 모드들의 신호화
인트라 모드의 각각의 CU(Coding Unit)에 대해, ALWIP 모드가 대응하는 PU(Prediction Unit)에 적용될지의 여부를 나타내는 플래그가 비트스트림에서 전송된다. 후자 인덱스의 신호화는 JVET-M0043에서와 동일한 방식으로 MRL과 조율된다. ALWIP 모드가 적용되는 경우, ALWIP 모드의 인덱스
는 3 MPMS를 갖는 MPM-목록을 이용하여 시그널링된다.
여기서, MPM들의 도출은 위쪽과 좌측 PU의 인트라 모드들을 이용하여 다음과 같이 수행된다. 각각의 종래의 인트라 예측 모드
에 ALWIP 모드를 할당하는 3개의 고정 테이블
,
이 있다.
폭
과 높이
의 각각의 PU에 대해, 인덱스를 정의한다
이 인덱스는 섹션 2.5.3에서와 같이 ALWIP 파라미터들이 3개 세트 중 어느 것으로부터 선택되는지를 나타낸다.
위쪽 예측 유닛
이 이용가능하고 현재 PU와 동일한 CTU에 속하고 인트라 모드에 있는 경우,
이고 ALWIP가 ALWIP-모드
와 함께
에 적용되면, 다음과 같이 둘수 있다
위쪽 PU가 이용가능하고 현재 PU와 동일한 CTU에 속하며, 인트라 모드에 있고 종래의 인트라 예측 모드
가 위쪽 PU에 적용되는 경우, 다음과 같이 둘 수 있다
다른 모든 경우에는, 다음과 같이 둘 수 있다
이것은 이 모드가 이용가능하지 않음을 의미한다. 동일한 방식으로 그러나 좌측 PU가 현재 PU와 동일한 CTU에 속할 필요가 있다는 제한없이, 모드
를 도출한다.
마지막으로, 3개의 고정된 디폴트 목록
이 제공되며, 각각의 목록은 3개의 구별되는 ALWIP 모드를 포함한다. 디폴트 목록
과 모드들
및
으로부터, -1을 디폴트 값들로 대체하고 반복을 제거함으로써 3개의 구별되는 MPM을 구성한다.
ALWIP MPM 목록 구성에 이용되는 좌측 이웃 블록 및 위쪽 이웃 블록은, 도 10에 도시된 바와 같이, A1과 B1이다.
2.5.7 종래의
루마
및
크로마
인트라
예측
모드들에
대한 적응형
MPM
목록 도출
제안된 ALWIP 모드들은 다음과 같이 종래의 인트라 예측 모드들 MPM 기반의 코딩과 조율된다. 종래의 인트라 예측 모드들에 대한 루마 및 크로마 MPM 목록 도출 프로세스들은, 고정 테이블들
,
를 이용하고, 주어진 PU에 관한 ALWIP 모드
를 종래의 인트라 예측 모드들 중 하나에 매핑한다.
루마 MPM 목록 도출의 경우, ALWIP 모드
를 이용하는 이웃 루마 블록과 조우할 때마다, 이 블록은 종래의 인트라 예측 모드
를 이용하는 것처럼 취급된다. 크로마 MPM 목록 도출의 경우, 현재 루마 블록이 LWIP 모드를 이용할 때마다, ALWIP 모드를 종래의 인트라 예측 모드로 변환하기 위해 동일한 매핑이 이용된다.
2.5.8 대응하는 수정된 연구 초안
일부 실시예에서, 이 섹션에서 설명된 바와 같이, intra_lwip_flag, intra_lwip_mpm_flag, intra_lwip_mpm_idx 및 intra_lwip_mpm_remainder와 관련된 부분들이 개시된 기술의 실시예들에 기초하여 연구 초안에 추가되었다.
일부 실시예에서, 이 섹션에서 설명된 바와 같이, <begin> 및 <end> 태그들은 개시된 기술의 실시예들에 기초한 연구 초안에 대한 추가 및 수정을 나타내는데 이용된다.
신택스 테이블들
코딩 유닛 신택스
시맨틱스
<begin> intra _ lwip _flag[ x0 ][ y0 ]가 1인 것은, 루마 샘플에 대한 인트라 예측 유형이 어파인 선형 가중된 인트라 예측임을 명시한다. intra_lwip_flag[ x0 ][ y0 ]가 0인 것은, 루마 샘플들에 대한 인트라 예측 유형이 어파인 선형 가중된 인트라 예측이 아님을 명시한다.
intra_lwip_flag[ x0 ][ y0 ]가 없는 것은, 0인 것으로 추론된다.
신택스 요소들 intra_lwip_mpm_flag[ x0 ][ y0 ], intra_lwip_mpm_idx[ x0 ][ y0 ] 및 intra_lwip_mpm_remainder [ x0 ][ y0 ]는 루마 샘플들에 대한 어파인 선형 가중된 인트라 예측 모드를 명시한다. 어레이 인덱스들 x0, y0은, 픽처의 상단 좌측 루마 샘플에 관한 고려되는 코딩 블록의 상단 좌측 루마 샘플의 위치 (x0, y0)를 명시한다. intra_lwip_mpm_flag[ x0 ][ y0 ]가 1일 때, 어파인 선형 가중된 인트라 예측 모드는 조항 8.4.X에 따라 이웃 인트라 예측된 코딩 유닛으로부터 추론된다.
intra_lwip_mpm_flag[ x0 ][ y0 ]가 없는 것은, 1이라고 추론된다.<end>
intra_subpartitions_split_flag[ x0 ][ y0 ]은 인트라 서브파티션 분할 유형이 수평인지 수직인지를 지정한다. intra_subpartitions_split_flag[ x0 ][ y0 ]가 없으면, 다음과 같이 추론된다:
- intra_lwip_flag[ x0 ][ y0 ]가 1이면, intra_subpartitions_split_flag[ x0 ][ y0 ]가 0인 것으로 추론된다.
- 그렇지 않으면, 다음이 적용된다:
- cbHeight가 MaxTbSizeY보다 크다면, intra_subpartitions_split_flag[ x0 ][ y0 ]가 0인 것으로 추론된다.
- 그렇지 않으면(cbWidth가 MaxTbSizeY보다 큼), intra_subpartitions_split_flag[ x0 ][ y0 ]가 1인 것으로 추론된다.
디코딩 프로세스
8.4.1 인트라 예측 모드에서 코딩된 코딩 유닛에 대한 일반 디코딩 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 코딩 블록의 상단 좌측 샘플을 명시하는 루마 위치 (xCb, yCb),
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight,
- 단일 또는 이중 트리가 이용되는지를 명시하고 이중 트리가 이용되는 경우 현재 트리가 루마 또는 크로마 성분들에 대응하는지를 지정하는 변수 treeType.
이 프로세스의 출력은 인루프 필터링 이전의 수정된 복원된 픽처이다.
조항 8.7.1에 명시된 양자화 파라미터들에 대한 도출 프로세스는, 루마 위치(xCb, yCb), 루마 샘플들에서 현재 코딩 블록의 폭 cbWidth 및 루마 샘플들에서 현재 코딩 블록 높이 cbHeight, 및 변수 treeType을 입력들로서 취하여 기동된다.
treeType이
SINGLE_TREE와 같거나
treeType이
DUAL_TREE_LUMA와 같을 때,
루마
샘플들에 대한 디코딩 프로세스는 다음과 같이 명시된다:
- pcm_flag[ xCb ][ yCb ]가 1이라면, 복원된 픽처는 다음과 같이 수정된다:
S
L
[ xCb + i ][ yCb + j ] =
pcm_sample_luma[ ( cbHeight * j ) + i ] << ( BitDepth
Y
- PcmBitDepth
Y
),
(8-6)
with i =
0..cbWidth
- 1, j =
0..cbHeight
- 1
- 그렇지 않으면, 다음이 적용된다:
1. 루마 인트라 예측 모드는 다음과 같이 도출된다:
- intra_lwip_flag[ xCb ][ yCb ]가 1과 같다면, 현재 코딩의 폭인 루마 위치(xCb, yCb), 루마 샘플들에서의 현재 코딩 블록의 폭 cbWidth 및 루마 샘플들에서 현재 코딩 블록의 높이 cbHeight를 입력으로서 취하여 조항 8.4.X에 명시된 어파인 선형 가중된 인트라 예측 모드에 대한 도출 프로세스가 기동된다.
- 그렇지 않으면, 루마 위치(xCb, yCb), 루마 샘플들에서 현재 코딩 블록의 폭 cbWidth 및 루마 샘플들에서 현재 코딩 블록의 높이 cbHeight를 입력으로서 취하여 조항 8.4.2에 명시된 루마 인트라 예측 모드에 대한 도출 프로세스가 기동된다.
2. 루마
위치(
xCb
,
yCb
), 트리 유형
treeType
,
cbWidth와
동일하게 설정된 변수
nTbW
,
cbHeight와
동일하게 설정된 변수
nTbH
,
IntraPredModeY
[
xCb
][
yCb
]와 동일하게 설정된 변수
predModeIntra
, 및 0으로 동일하게 설정된 변수
cIdx를
입력으로서 취하여 조항 8.4.4.1에 명시된
인트라
블록들에 대한 일반 디코딩 프로
세
스가 기동되고, 출력은 인루프 필터링 이전의 수정된 복원된 픽처이다.
…
<begin>
8.4.X
어파인
선형 가중된
인트라
예측
모드에
대한 도출 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 루마 코딩 블록의 상단 좌측 샘플을 명시하는 루마 위치 (xCb, yCb),
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight.
이 프로세스에서 어파인 선형 가중된 인트라 예측 모드 IntraPredModeY[ xCb ][ yCb ]가 도출된다.
IntraPredModeY[ xCb ][ yCb ]는 다음과 같은 순서화된 단계들에 의해 도출된다:
1. 이웃
위치들 (
xNbA
,
yNbA
) 및 (
xNbB
,
yNbB
)은 각각 (
xCb
-1,
yCb
) 및( xCb, yCb-1)와 동일하게 설정된다.
2. X가 A 또는 B로 대체되는 경우, 변수 candLwipModeX는 다음과 같이 도출된다:
- 조항
6.4.X
[Ed. (BB): 이웃 블록 가용성
체킹
프로세스 tbd]에 명시된 블록에 대한 가용성 도출 프로세스는, (
xCb
,
yCb
)와 동일하게 설정된 위치(
xCurr
, yCurr)와 (
xNbX
,
yNbX
)와 동일하게 설정된 이웃 위치(
xNbY
,
yNbY
)를 입력으로서 취하여
기동되고
, 출력은
availableX에
할당된다.
- 후보
어파인
선형 가중된
인트라
예측
모드
candLwipModeX는
다음과 같이 도출된다:
- 다음과 같은 조건들 중 하나 이상이 참이라면, candLwipModeX는 -1로 설정된다.
- 변수 availableX는 FALSE이다.
-
CuPredMode[ xNbX ][ yNbX ]는
MODE_
INTRA와
동일하지 않고 mh_intra_flag[
xNbX
][
yNbX
]는 1과 동일하지 않다.
- pcm_flag[ xNbX ][ yNbX ]는 1이다.
- X는 B와 동일하고
yCb
-1은 ((
yCb
>>
CtbLog2SizeY
) <<
CtbLog2SizeY
)
보다 작다
.
- 그렇지 않으면, 다음이 적용된다:
- 조항 8.4.X.1에 명시된 블록에 대한 크기 유형 도출 프로세스는, 루마 샘플들에서 현재 코딩 블록 폭 cbWidth와 루마 샘플들에서 현재 코딩 블록의 높이 cbHeight를 입력으로서 취하여 기동되고, 출력은 변수 sizeId에 할당된다.
- intra_lwip_flag[ xNbX ][ yNbX ]가 1이면, 조항 8.4.X.1에 명시된 블록에 대한 크기 유형 도출 프로세스는, 루마 샘플들에서 이웃 코딩 블록의 폭 nbWidthX와 루마 샘플들에서 이웃 코딩 블록의 높이 nbHeightX를 입력으로서 취하여 기동되고, 출력은 변수 sizeIdX에 할당된다.
- sizeId가 sizeIdX이면 , candLwipModeX는 IntraPredModeY[ xNbX ][ yNbX ]와 동일하게 설정된다.
- 그렇지 않으면,
candLwipModeX가
-1과 동일하게 설정된다.
- 그렇지 않으면, 표 8-X1에 명시된 대로 IntraPredModeY[ xNbX ][ yNbX ] 및 sizeId를 이용하여 candLwipModeX가 도출된다.
3. x=0..2인 candLwipModeList[ x ]는, 표 8-X2에 명시된 대로 lwipMpmCand[ sizeId ]를 이용하여 다음과 같이 도출된다:
- candLwipModeA 및 candLwipModeB 양쪽 모두가 -1이라면, 다음이 적용된다:
candLwipModeList[ 0 ] = lwipMpmCand[ sizeId ][ 0 ]
(8-X1)
candLwipModeList[ 1 ] = lwipMpmCand[ sizeId ][ 1 ]
(8-X2)
candLwipModeList[ 2 ] = lwipMpmCand[ sizeId ][ 2 ]
(8-X3)
- 그렇지 않으면, 다음이 적용된다:
- candLwipModeA가 candLwipModeB이거나 candLwipModeA 또는 candLwipModeB가 -1이라면, 다음이 적용된다:
candLwipModeList[ 0 ] = ( candLwipModeA != -1 ) ? candLwipModeA : candLwipModeB
(8-X4)
- candLwipModeList[ 0 ]가 lwipMpmCand[ sizeId ][ 0 ]이면, 다음이 적용된다:
candLwipModeList[ 1 ] = lwipMpmCand[ sizeId ][ 1 ]
(8-X5)
candLwipModeList[ 2 ] = lwipMpmCand[ sizeId ][ 2 ]
(8-X6)
- 그렇지 않으면, 다음이 적용된다:
candLwipModeList[ 1 ] = lwipMpmCand[ sizeId ][ 0 ]
(8-X7)
candLwipModeList[ 2 ]=( candLwipModeList[ 0 ] != lwipMpmCand[ sizeId ][ 1 ] ) ?
lwipMpmCand[ sizeId ][ 1 ] : lwipMpmCand[ sizeId ][ 2 ]
(8-X8)
- 그렇지 않으면, 다음이 적용된다:
candLwipModeList[ 0 ] = candLwipModeA
(8-X9)
candLwipModeList[ 1 ] = candLwipModeB
(8-X10)
- candLwipModeA 및 candLwipModeB 양쪽 모두가 lwipMpmCand[ sizeId ][ 0 ]이 아니면, 다음이 적용된다:
candLwipModeList[ 2 ] = lwipMpmCand[ sizeId ][ 0 ]
(8-X11)
- 그렇지 않으면, 다음이 적용된다:
- candLwipModeA 및 candLwipModeB 양쪽 모두가 lwipMpmCand[ sizeId ][ 1 ]이 아니면, 다음이 적용된다:
candLwipModeList[ 2 ] = lwipMpmCand[ sizeId ][ 1 ]
(8-X12)
- 그렇지 않으면, 다음이 적용된다:
candLwipModeList[ 2 ] = lwipMpmCand[ sizeId ][ 2 ]
(8-X13)
4. IntraPredModeY[ xCb ][ yCb ]는 다음 절차를 적용하여 도출된다:
-
intra
_
lwip
_
mpm
_flag[
xCb
][
yCb
]가 1이면,
IntraPredModeY[ xCb ]
[ yCb ]가
candLwipModeList
[
intra
_
lwip
_
mpm
_
idx[ xCb ][ yCb ]]와
동일하게 설정된다.
- 그렇지 않으면, IntraPredModeY[ xCb ][ yCb ]는 다음과 같은 순서화된 단계들을 적용하여 도출된다:
1. i = 0..1이고 각각의 i, j =( i + 1 )..2에 대해 candLwipModeList[ i ]가 candLwipModeList[ j ]보다 크면, 양쪽 값들은 다음과 같이 스왑된다:
( candLwipModeList[ i ], candLwipModeList[ j ] ) = Swap( candLwipModeList[ i ], candLwipModeList[ j ] )
(8-X14)
2. IntraPredModeY[ xCb ]
[
yCb
]는 다음과 같은 순서화된 단계들에 의해 도출된다:
i. IntraPredModeY[ xCb ][ yCb ]는 intra_lwip_mpm_remainder[ xCb ][ yCb ]와 동일하게 설정된다.
ii. i가 0 내지 2인 경우, IntraPredModeY[ xCb ][ yCb ]가 candLwipModeList[ i ]보다 크거나 같다면, IntraPredModeY[ xCb ][ yCb ]값이 1씩 증가된다.
x = xCb..xCb + cbWidth-1 및 y = yCb..yCb + cbHeight-1인 변수 IntraPredModeY[ x ][ y ]는 IntraPredModeY[ xCb ][ yCb ]와 동일하게 설정된다.
8.4.X.1 예측 블록 크기 유형에 대한 도출 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight.
이 프로세스의 출력은 변수 sizeId이다.
변수 sizeId는 다음과 같이 도출된다:
-
cbWidth와
cbHeight
양쪽 모두가 4이면,
sizeId는
0과 동일하게 설정된다.
- 그렇지 않고 cbWidth와 cbHeight 양쪽 모두가 8보다 작거나 같으면 sizeId는 1로 설정된다.
- 그렇지 않으면,
sizeId는
2와 동일하게 설정된다.
표 8-X1 ―
인트라
예측과
어파인
선형 가중된
인트라
예측
모드들
사이의 매핑 명세
표 8-X2 ―
어파인
선형 가중된
인트라
예측 후보
모드들의
명세
<end>
8.4.2.
루마 인트라 예측 모드의 도출 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 루마 코딩 블록의 상단 좌측 샘플을 명시하는 루마 위치 (xCb, yCb),
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight.
이 프로세스에서, 루마 인트라 예측 모드 IntraPredModeY[ xCb ][ yCb ]가 도출된다.
표 8-1은 인트라 예측 모드 IntraPredModeY[ xCb ][ yCb ]에 대한 값 및 연관된 이름들을 명시한다.
표 8-1 ―
인트라
예측
모드
및 연관된 이름들의 명세
유의사항 ―:
인트라
예측
모드들
INTRA
_
LT
_
CCLM
,
INTRA
_L_
CCLM
및 INTRA_T_CCLM은
크로마
성분들에만
적용가능하다
.
IntraPredModeY[ xCb ]
[
yCb
]는 다음과 같은 순서화된 단계들에 의해 도출된다:
1. 이웃 위치들 ( xNbA, yNbA ) 및 ( xNbB, yNbB )는 각각 ( xCb-1, yCb + cbHeight-1 ) 및( xCb + cbWidth-1, yCb-1 )와 동일하게 설정된다.
2. X가 A 또는 B로 대체되는 경우, 변수 candIntraPredModeX는 다음과 같이 도출된다:
- 조항 < begin> 6.4.X [Ed. (BB): 이웃 블록 가용성 체킹 프로세스 tbd] <end> 에 명시된 블록에 대한 가용성 도출 프로세스는, ( xCb , yCb )와 동일하게 설정된 위치( xCurr , yCurr )와 (xNbX, yNbX)와 동일하게 설정된 이웃 위치 ( xNbY , yNbY )를 입력들로서 취하여 기동되고 , 출력은 availableX에 할당된다.
- 후보 인트라 예측 모드 candIntraPredModeX는 다음과 같이 도출된다:
- 다음과 같은 조건들 중 하나 이상이 참이라면, candIntraPredModeX는 INTRA_PLANAR와 동일하게 설정된다.
- 변수 availableX는 FALSE이다.
- CuPredMode[ xNbX ][ yNbX ]는 MODE_INTRA가 아니고 ciip_flag[ xNbX ][ yNbX ]는 1이 아니다.
- pcm_flag[ xNbX ][ yNbX ]는 1이다.
- X는 B이고 yCb-1은 (( yCb >> CtbLog2SizeY ) << CtbLog2SizeY )보다 작다.
- 그렇지 않으면 candIntraPredModeX는 다음과 같이 도출된다:
- intra_lwip_flag[ xCb ][ yCb ]가 1이면, candIntraPredModeX는 다음과 같은 순서화된 단계들에 의해 도출된다:
i. 조항 8.4.X.1에 명시된 블록에 대한 크기 유형 도출 프로세스는, 루마 샘플들에서 현재 코딩 블록 폭 cbWidth와 루마 샘플들에서 현재 코딩 블록의 높이 cbHeight를 입력으로서 취하여 기동되고, 출력은 변수 sizeId에 할당된다.
ii. candIntraPredModeX는 표 8-X3에 명시된 IntraPredModeY[ xNbX ][ yNbX ] 및 sizeId를 이용하여 도출된다.
- 그렇지 않으면 candIntraPredModeX는 IntraPredModeY[ xNbX ][ yNbX ]와 동일하게 설정된다 .
3. 변수들 ispDefaultMode1 및 ispDefaultMode2는 다음과 같이 정의된다:
- IntraSubPartitionsSplitType이
ISP
_
HOR
_
SPLIT이면
,
ispDefaultMode1은
INTRA_ANGULAR18과 동일하게 설정되고
ispDefaultMode2는
INTRA
_
ANGULAR5와
동일하게 설정된다.
- 그렇지 않으면 ispDefaultMode1은 INTRA_ANGULAR50로 설정되고 ispDefaultMode2는 INTRA_ANGULAR63과 동일하게 설정된다.
…
표 8-X3 ―
어파인
선형 가중된
인트라
예측 및
인트라
예측
모드들
사이의 매핑 명세
8.4.3
크로마
인트라
예측
모드를
위한 도출 프로세스
이
프로세스에 대한 입력은 다음과
같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 크로마 코딩 블록의 상단 좌측 샘플을 명시하는 루마 위치 (xCb, yCb),
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight.
이 프로세스에서 크로마 인트라 예측 모드 IntraPredModeC[ xCb ][ yCb ]가 도출된다.
대응하는 루마 인트라 예측 모드 lumaIntraPredMode는 다음과 같이 도출된다:
- intra_lwip_flag[ xCb ][ yCb ]가 1이면, lumaIntraPredMode는 다음과 같은 순서화된 단계들에 의해 도출된다:
i. 조항 8.4.X.1에 명시된 블록에 대한 크기 유형 도출 프로세스는, 루마 샘플들에서 현재 코딩 블록 폭 cbWidth와 루마 샘플들에서 현재 코딩 블록의 높이 cbHeight를 입력으로서 취하여 기동되고, 출력은 변수 sizeId에 할당된다.
ii. 루마 인트라 예측 모드는 IntraPredModeY[ xCb + cbWidth/2 ][ yCb + cbHeight/2 ] 및 표 8-X3에 명시된 sizeId를 이용하여 도출되고 candIntraPredModeX 값을 lumaIntraPredMode에 할당한다.
- 그렇지 않으면, lumaIntraPredMode는 IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ]와 동일하게 설정된다.
크로마 인트라 예측 모드 IntraPredModeC[ xCb ][ yCb ]는 intra_chroma_pred_mode[ xCb ][ yCb ] 및 표 8-2 및 표 8-3에 명시된 lumaIntraPredMode를 이용하여 도출된다.
…
xxx. 인트라 샘플 예측
<begin>
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 상단 좌측 샘플에 관해 현재 변환 블록의 상단 좌측 샘플을 명시하는 샘플 위치 (xTbCmp, yTbCmp),
- 인트라 예측 모드를 명시하는 변수 predModeIntra,
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH,
- 코딩 블록 폭을 명시하는 변수 nCbW,
- 코딩 블록 높이를 명시하는 변수 nCbH,
- 현재 블록의 색상 성분을 명시하는 변수 cIdx.
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
예측된 샘플 predSamples[ x ][ y ]는 다음과 같이 도출된다:
- intra_lwip_flag[ xTbCmp ][ yTbCmp ]가 1이고 cIdx가 0이면, 조항 8.4.4.2.X1에 명시된 어파인 선형 가중된 인트라 샘플 예측 프로세스가, 위치( xTbCmp, yTbCmp ), 인트라 예측 모드 predModeIntra, 변환 블록 폭 nTbW 및 높이 nTbH를 입력들로서 취하여 기동되고, 출력은 predSamples이다.
- 그렇지 않은 경우, 조항 8.4.4.2.X1절에 명시된 일반 인트라 샘플 예측 프로세스가, 위치 (xTbCmp, yTbCmp), 인트라 예측 모드 predModeIntra, 변환 블록 폭 nTbW 및 높이 nTbH, 코딩 블록 폭 nCbW 및 높이 nCbH, 변수 cIdx를 입력들서 취하여 기동되고, 출력은 predSamples이다.
8.4.4.2.X1 어파인 선형 가중된 인트라 샘플 예측
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 상단 좌측 샘플에 관해 현재 변환 블록의 상단 좌측 샘플을 명시하는 샘플 위치 (xTbCmp, yTbCmp),
- 인트라 예측 모드를 명시하는 변수 predModeIntra,
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH.
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
조항 8.4.X.1에 명시된 블록에 대한 크기 유형 도출 프로세스는, 변환 블록 폭 nTbW 및 변환 블록 높이 nTbH를 입력으로서 취하여 기동되고, 출력은 변수 sizeId에 할당된다.
변수들 numModes, boundarySize, predW, predH 및 predC는 표 8-X4에 명시된 sizeId를 이용하여 도출된다.
표 8-X4 -
sizeId에
의존하는
모드
수, 경계 샘플 크기 및 예측 크기들의 명세
플래그 isTransposed는 다음과 같이 도출된다:
isTransposed = ( predModeIntra > ( numModes / 2 ) ) ? 1: 0
(8-X15)
플래그들 needUpsBdryHor 및 needUpsBdryVer는 다음과 같이 도출된다:
needUpsBdryHor = ( nTbW > predW ) ? TRUE: FALSE
(8-X16)
needUpsBdryVer = ( nTbH > predH ) ? TRUE: FALSE
(8-X17)
변수들 upsBdryW 및 upsBdryH는 다음과 같이 도출된다:
upsBdryW = ( nTbH > nTbW ) ? nTbW: predW
(8-X18)
upsBdryH = ( nTbH > nTbW ) ? predH: nTbH
(8-X19)
변수들 lwipW 및 lwipH는 다음과 같이 도출된다:
lwipW = ( isTransposed = = 1) ? predH: predW
(8-X20)
lwipH = ( isTransposed = = 1) ? predW: predH
(8-X21)
x = 0..nTbW-1인 기준 샘플들 refT[ x ] 및 y = 0..nTbH-1인 refL[ y ]의 생성의 경우, 조항 8.4.4.2.X2에 명시된 기준 샘플 도출 프로세스는, 샘플 위치(xTbCmp, yTbCmp), 변환 블록 폭 nTbW, 변환 블록 높이 nTbH를 입력들로서 취하여
기동되고
, 상단 및 좌측 기준 샘플들 x=
0..nTbW
-1인
refT
[x] 및 y =
0..nTbH
- 1인 refL[ y ]를 각각 출력들로서 취한다.
x = 0..2 * boundarySize-1인 경계 샘플들 p[ x ]의 생성의 경우, 다음이 적용된다.:
- 조항 8.4.4.2.X3에 명시된 경계 감축 프로세스는, 상단 기준 샘플들에 대해, 블록 크기 nTbW, 기준 샘플들 refT, 경계 크기 boundarySize, 업샘플링 경계 플래그 needUpsBdryVer, 및 업샘플링 경계 크기 upsBdryW를 입력으로서 취하여 기동되고, x = 0..boundarySize-1인 감축된 경계 샘플들 redT[ x ]와 x = 0..upsBdryW - 1인 업샘플링 경계 샘플들 upsBdryT[ x ]을 출력들로서 취한다.
- 조항 8.4.4.2.X3에 명시된 경계 감축 프로세스는, 좌측 기준 샘플들에 대해, 블록 크기 nTbH, 기준 샘플들 refL, 경계 크기 boundarySize, 업샘플링 경계 플래그 needUpsBdryHor, 및 업샘플링 경계 크기 upsBdryH를 입력들로서 취하여 기동되고, x= 0..boundarySize-1인 감축된 경계 샘플들 redL[ x ] 및 x = 0..upsBdryH-1인 업샘플링 경계 샘플들 upsBdryL[ x ]를 출력들로서 취한다.
- 감축된 상단 및 좌측 경계 샘플들 redT 및 redL은 다음과 같이 경계 샘플 어레이 p에 할당된다:
-
isTransposed가
1이라면, p[ x ]는 x =
0..boundarySize
-1인
redL[ x ]와
동일하게 설정되고, p[ x +
boundarySize
]는 x =
0..boundarySize
- 1인
redT[
x ]와 동일하게 설정된다.
- 그렇지 않으면, p[ x ]는 x = 0..boundarySize-1인 redT[ x ]로 설정되고 p[ x +
boundarySize
]는 x =
0..boundarySize
-1인
redL[ x ]와
동일하게 설정된다.
predModeIntra에 따른 인트라 샘플 예측 프로세스의 경우, 다음과 같은 순서화된 단계들이 적용된다:
1. 어파인 선형 가중된 샘플들, x = 0..lwipW-1, y = 0..lwipH-1인 predLwip[ x ][ y ]는 다음과 같이 도출된다:
- 변수 modeId는 다음과 같이 도출된다:
modeId = predModeIntra - ( isTransposed = = 1) ? ( numModes / 2 ): 0
(8-X22)
- 가중치 행렬인, x = 0..2 * boundarySize - 1, y = 0..predC * predC - 1인 mWeight[ x ][ y ]는 표 8-XX[TBD: 가중치 행렬들 추가]에 명시된 sizeId 및 modeId를 이용하여 도출된다.
- y = 0..predC * predC-1인 편향 벡터 vBias[ y ]는 표 8-XX[TBD: 편향 벡터들 추가]에 명시된 sizeId 및 modeId를 이용하여 도출된다.
- 변수 sW는 표 8-X5에 명시된 sizeId 및 modeId를 이용하여 도출된다.
- 어파인 선형 가중된 샘플들, x = 0..lwipW-1, y = 0..lwipH-1인 predLwip[ x ][ y ]는 다음과 같이 도출된다:
oW = 1 << ( sW - 1 )
(8-X23)
sB = BitDepth
Y
- 1
(8-X24)
incW = ( predC > lwipW ) ? 2: 1
(8-X25)
incH
= (
predC
>
lwipH
) ?
2: 1
(
8-X26)
2. x
=
0..nTbW
-1, y =
0..nTbH
-1인 예측된 샘플들
predSamples
[ x ][ y ]는 다음과 같이 도출된다:
- isTransposed가 1일 때, x = 0..predW-1, y = 0..predH-1인 predLwip[ x ][ y ]는 predLwip[ y ][ x ]와 동일하게 설정된다.
- needUpsBdryVer가 TRUE이거나 needUpsBdryHor가 TRUE이면, 조항 8.4.4.2.X4에 명시된 예측 업샘플링 프로세스는, 입력 블록 폭 predW, 입력 블록 높이 predH, 어파인 선형 가중된 샘플 predLwip, 변환 블록 폭 nTbW, 변환 블록 높이 nTbH, 업샘플링 경계 폭 upsBdryW, 업샘플링 경계 높이 upsBdryH, 상단 업샘플링 경계 샘플들 upsBdryT, 및 좌측 업샘플링 경계 샘플들 upsBdryL을 입력들로서 취하여 기동되고, 출력은 예측된 샘플 어레이 predSamples이다.
- 그렇지 않으면, x = 0..nTbW-1, y = 0..nTbH-1인 predSamples[ x ][ y ]는 predLwip[ x ][ y ]와 동일하게 설정된다.
표 8-X5 -
sizeId
및
modeId에
의존하는 가중치
시프트
sW의 명세
8.4.4.2.X2 기준 샘플 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 변환 블록의 상단 좌측 루마 샘플을 명시하는 샘플 위치 (xTbY, yTbY),
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH.
이 프로세스의 출력들은 각각 x= 0..nTbW-1인 상단 및 좌측 기준 샘플 refT[ x ] 및 y = 0..nTbH-1인 refL[ y ]이다.
x = 0..nTbW-1인 이웃 샘플들 refT[ x ] 및 y = 0..nTbH-1인 refL[ y ]는 인루프 필터 프로세스 이전에 구성된 샘플들이며 다음과 같이 도출된다:
- 상단 및 좌측 이웃 루마 위치들 ( xNbT, yNbT ) 및 ( xNbL, yNbL )는 다음과 같이 명시된다:
( xNbT, yNbT ) = ( xTbY + x, yTbY - 1 )
(8-X28)
( xNbL, yNbL ) = ( xTbY - 1, yTbY + y )
(8-X29)
- 조항
6.4.X
[Ed. (BB): 이웃 블록 가용성
체킹
프로세스 tbd]에 명시된 블록에 대한 가용성 도출 프로세스는, (
xTbY
,
yTbY
)와 동일하게 설정된 현재
루마
위치(
xCurr
,
yCurr
)와 상단 이웃
루마
위치 (
xNbT
,
yNbT
)를 입력들로서 취하여 기동되고, 출력은 x = 0..nTbW - 1인 availTop[ x ]에 할당된다.
- 조항
6.4.X
[Ed. (BB): 이웃 블록 가용성
체킹
프로세스 tbd]에 명시된 블록에 대한 가용성 도출 프로세스는, (
xTbY
,
yTbY
)와 동일하게 설정된 현재
루마
위치 ( xCurr, yCurr ) 와 좌측 이웃
루마
위치 (
xNbL
,
yNbL
)를 입력들로서 취하여 기동되고, 출력은 y = 0..nTbH - 1인 availLeft[ y ]에 할당된다.
- x =
0..nTbW
- 1인 상단 기준
샘플들 refT[ x ]은
다음과 같이 도출된다:
- x =
0..nTbW
-1인 모든
availTop[ x ]가
TRUE이면
, 위치 (
xNbT
,
yNbT
)의 샘플은 x =
0..nTbW
-1인
refT[ x ]에
할당된다.
- 그렇지 않고,
availTop[ 0 ]이
FALSE이면
, x =
0..nTbW
-1인 모든
refT[ x ]가
1 << (
BitDepth
Y
- 1 )로 설정된다.
- 그렇지 않으면, x =
0..nTbW
-1인 기준 샘플들
refT[ x ]는
다음과 같은 순서화된 단계들에 따라 도출된다:
1. 변수
lastT는
,
FALSE인
x =
1..nTbW
-1인
시퀀스
availTop
[ x ] 내의 첫 번째 요소의 위치 x로 설정된다.
2. 모든 x = 0..lastT - 1에 대해, 위치 ( xNbT, yNbT )의 샘플은 refT[ x ]에 할당된다.
3. 모든 x = lastT..nTbW - 1에 대해, refT[ x ]는 refT[ lastT - 1 ]로 설정된다.
- x = 0..nTbH-1인 좌측 기준 샘플들 refL[ y ]는 다음과 같이 도출된다:
- y = 0..nTbH-1인 모든 availLeft[ y ]가 TRUE이면, 위치 ( xNbL, yNbL )의 샘플은 y = 0..nTbH-1인 refL[ y ]에 할당된다.
- 그렇지 않고, availLeft[ 0 ]이 FALSE이면, y = 0..nTbH - 1인 모든 refL[ y ]는 1 << ( BitDepth
Y
- 1 )로 설정된다.
- 그렇지 않으면, y = 0..nTbH - 1인 기준 샘플들 refL[ y ]는 다음과 같은 순서화된 단계들에 따라 도출된다:
1. 변수 lastL은 FALSE와 동일한 y = 1..nTbH - 1인 시퀀스 availLeft[ y ]에서 첫 번째 요소의 위치 y로 설정된다.
2. 모든 y = 0..lastL-1에 대해, 위치 (xNbL, yNbL )의 샘플은 refL[ y ]에 할당된다.
3. 모든
y =
lastL..nTbH
-1에 대해,
refL[ y ]는
refL[ lastL-1 ]와 동일하게 설정된다
.
경계 감축 프로세스의 명세
이 프로세스에 대한 입력들은 다음과 같다:
- 변환 블록 크기를 명시하는 변수
nTbX
,
- x = 0..nTbX-1인 기준 샘플들 refX[ x ],
- 다운샘플링된 경계 크기를 명시하는 변수 boundarySize,
-
업샘플링에
대해 중간 경계 샘플들이 요구되는지를 명시하는 플래그 needUpsBdryX,
- 업샘플링에 대한 경계 크기를 명시하는 변수 upsBdrySize.
이 프로세스의 출력들은 x = 0..boundarySize-1인 감축된 경계 샘플들 redX[ x ] 및 x = 0..upsBdrySize-1인 업샘플링 경계 샘플들 upsBdryX[ x ]이다.
x = 0..upsBdrySize-1인 업샘플링 경계 샘플들 upsBdryX[ x ]는 다음과 같이 도출된다:
- needUpsBdryX가 TRUE이고 upsBdrySize가 nTbX보다 작다면, 다음이 적용된다:
uDwn = nTbX / upsBdrySize
(8-X30)
- 그렇지 않으면(upsBdrySize가 nTbX와 같음), upsBdryX[ x ]는 refX[ x ]로 설정된다.
x = 0..boundarySize-1인 감축된 경계 샘플들 redX[ x ]는 다음과 같이 도출된다:
- boundarySize가 upsBdrySize보다 작다면, 다음이 적용된다:
bDwn = upsBdrySize / boundarySize
(8-X32)
- 그렇지 않으면 (boundarySize가 upsBdrySize와 같음), redX[ x ]는 upsBdryX[ x ]로 설정된다.
8.4.
4.2.X4
예측
업샘플링
프로세스의 명세
이 프로세스에 대한 입력들은 다음과 같다:
- 입력 블록 폭을 명시하는 변수 predW,
- 입력 블록 높이를 명시하는 변수 predH,
- x = 0..predW-1, y = 0..predH-1인 어파인 선형 가중된 샘플들 predLwip[ x ][ y ],
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH,
- 업샘플링 경계 폭을 명시하는 변수 upsBdryW,
- 업샘플링 경계 높이를 명시하는 변수 upsBdryH,
- x =
0..upsBdryW
- 1인 상단
업샘플링
경계 샘플들
upsBdryT
[ x ],
- x = 0..upsBdryH-1인 좌측 업샘플링 경계 샘플들 upsBdryL[ x ].
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
저밀도 예측된 샘플들 predSamples[ m ][ n ]는 다음과 같이 x = 0..predW-1, y = 0..predH-1인 predLwip[ x ][ y ]로부터 도출된다:
upHor = nTbW / predW
(8-X34)
upVer = nTbH / predH
(8-X35)
x = 0..upsBdryW-1인 상단 경계 샘플들 upsBdryT[ x ]는 다음과 같이 predSamples[ m ][ -1 ]에 할당된다:
y = 0..upsBdryH-1인 좌측 경계 샘플들 upsBdryL[ y ]은 다음과 같이 predSamples[ -1 ][ n ]에 할당된다:
x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 도출된다:
- nTbH가 nTbW보다 크다면, 다음과 같은 순서화된 단계들이 적용된다:
1. upHor가 1보다 크면, m = 0..predW-1, n = 1..predH인 모든 저밀도 위치들 ( xHor, yHor ) = ( m * upHor - 1, n * upVer - 1 )에 대한 수평 업샘플링이 다음과 같이
dX
=
1..upHor
-
1와
함께 적용된다:
2. m = 0..nTbW-1, n = 0..predH-1인 모든 저밀도 위치들 ( xVer, yVer ) = ( m, n * upVer-1 )에 대한 수직 업샘플링은 다음과 같이 dY = 1..upVer-1과 함께 적용된다:
- 그렇지 않으면, 다음과 같은 순서화된 단계들이 적용된다:
1. upVer가 1보다 크면, m = 1..predW, n = 0..predH-1인 모든 저밀도 위치들 ( xVer, yVer ) = ( m * upHor - 1, n * upVer - 1 )에 대한 수직 업샘플링이 (8-X40)에 명시된 대로 dY = 1..upVer-1과 함께 적용된다.
2. m = 0..predW-1, n = 0..nTbH-1인 모든 저밀도 위치들 ( xHor, yHor ) = ( m * upHor-1, n )에 대한 수평 업샘플링은 (8-X39)에 명시된 대로 dX = 1..upHor-1과 함께 적용된다.
<end>
표 9-9 -
신택스
요소들 및 연관된 2진화들
표 9-15 - 콘텍스트 코딩된 빈들을 신택스 요소들로의 ctxInc의 할당
표 9-16 - 좌측 및 위쪽 신택스 요소들을 이용한 ctxInc의 명세
<end>
ALWIP의 요약
폭
및 높이
의 직사각형 블록의 샘플을 예측하기 위해, 어파인 선형 가중된 인트라 예측(ALWIP)은 블록 좌측의 H개의 복원된 이웃 경계 샘플들의 한 라인과 블록 위의
복원된 이웃 경계 샘플들의 한 라인을 입력으로서 취한다. 복원된 샘플들이 이용가능하지 않다면, 이들은 종래의 인트라 예측에서와 같이 생성된다. ALWIP는 루마 인트라 블록에만 적용된다. 크로마 인트라 블록의 경우, 종래의 인트라 코딩 모드들이 적용된다.
예측 신호의 생성은 다음과 같은 3개 단계에 기초한다:
1. 경계 샘플들로부터, W=H=4인 경우 4개의 샘플, 그 외의 경우 8개의 샘플이 평균화함으로써 추출된다.
2. 오프셋의 추가가 뒤따르는 행렬 벡터 곱셈은 평균된 샘플들을 입력으로서 이용하여 실행된다. 결과는 원래 블록의 서브샘플링된 샘플 세트에 관한 감축된 예측 신호이다.
3. 나머지 위치들에서의 예측 신호는, 각각의 방향에서의 단일 단계 선형 보간인 선형 보간에 의해 서브샘플링된 세트에 관한 예측 신호로부터 생성된다.
ALWIP 모드가 적용되는 경우, ALWIP 모드의 인덱스
는 3 MPMS를 갖는 MPM-목록을 이용하여 시그널링된다. 여기서, MPM들의 도출은 위쪽과 좌측 PU의 인트라 모드들을 이용하여 다음과 같이 수행된다. 각각의 종래의 인트라 예측 모드
에 ALWIP 모드를 할당하는 3개의 고정 테이블
이 있다.
폭
및 높이
의 각각의 PU에 대해, 인덱스를 정의한다
이 인덱스는 ALWIP 파라미터들이 3개 세트 중 어느 것으로부터 선택되는지를 나타낸다.
위쪽 예측 유닛
이 이용가능하고 현재 PU와 동일한 CTU에 속하고 인트라 모드에 있는 경우,
이고 ALWIP가 ALWIP-모드
와 함께
에 적용되면, 다음과 같이 둘 수 있다
위쪽 PU가 이용가능하고 현재 PU와 동일한 CTU에 속하며, 인트라 모드에 있고 종래의 인트라 예측 모드
가 위쪽 PU에 적용되는 경우, 다음과 같이 둘 수 있다
다른 모든 경우에는, 다음과 같이 둘 수 있다
이것은 이 모드가 이용가능하지 않음을 의미한다. 동일한 방식으로 그러나 좌측 PU가 현재 PU와 동일한 CTU에 속할 필요가 있다는 제한없이, 모드
를 도출한다.
마지막으로, 3개의 고정된 디폴트 목록
이 제공되며, 각각의 목록은 3개의 구별되는 ALWIP 모드를 포함한다. 디폴트 목록
과 모드들
및
으로부터, -1을 디폴트 값들로 대체하고 반복을 제거함으로써 3개의 구별되는 MPM을 구성한다.
루마 MPM 목록 도출의 경우, ALWIP 모드
를 이용하는 이웃 루마 블록과 조우할 때마다, 이 블록은 종래의 인트라 예측 모드
를 이용하는 것처럼 취급된다.
3 VVC에서의 변환
3.1 복수의 변환 선택 (
MTS
)
HEVC에서 이용된 DCT-II에 추가하여, MTS(Multiple Transform Selection) 방식은 인터 및 인트라 코딩된 블록들 양쪽 모두의 잔차 코딩에 이용된다. 이것은 DCT8/DST7로부터 선택된 복수의 변환을 이용한다. 새로 도입된 변환 행렬들은 DST-VII 및 DCT-VIII이다.
3.2
JVET
-N0193에서 제안된 감축된 2차 변환(
RST
)
감축된 2차 변환(reduced secondary transform)(RST)은, 4x4 및 8x8 블록들에 대해 각각 16x16 및 16x64 비분리 변환을 적용한다. 1차 순방향 및 역변환들은 여전히 2개의 1-D 수평/수직 변환 패스들과 동일한 방식으로 수행된다. 2차 순방향 및 역변환들은 1차 변환들과는 별개의 프로세스 단계이다. 인코더의 경우, 1차 순방향 변환이 먼저 수행된 다음, 2차 순방향 변환 및 양자화, CABAC 비트 인코딩이 뒤따른다. 디코더, CABAC 비트 디코딩 및 역양자화의 경우, 2차 역변환이 먼저 수행된 다음, 1차 역변환이 뒤따른다. RST는 인트라 슬라이스와 인터 슬라이스들 양쪽 모두에서 인트라 코딩된 TU들에만 적용된다.
3.3 JVET-N0185의 인트라 모드 코딩을 위한 단일화된 MPM 목록
MRL(Multiple Reference Line) 및 ISP(Intra sub-partition) 코딩 툴들이 적용되는지의 여부와 관계없이 인트라 블록들에 대해 단일화된 6-MPM 목록이 제안된다. MPM 목록은 VTM4.0에서와 같이 좌측과 위쪽 이웃 블록들의 인트라 모드들에 기초하여 구성된다. 좌측의 모드를 Left, 위쪽 블록의 모드를 Above라고 가정하면, 단일화된 MPM 목록은 다음과 같이 구성된다:
● 이웃 블록이 이용가능하지 않으면, 그 인트라 모드는 디폴트로 Planar로 설정된다.
● 양쪽 모드들 Left 및 Above가 비-각도 모드들인 경우:
a. MPM 목록 → {Planar, DC, V, H, V-4, V+4}
● Left 및 Above 모드들 중 하나가 각도 모드이고, 다른 하나가 비각도형인 경우:
a. 모드 Max를 Left 및 Above 중 더 큰 모드로서 설정
b. MPM 목록 → {Planar, Max, DC, Max -1, Max +1, Max -2}
● Left 및 Above 양쪽 모두가 각도형이고, 이들이 상이한 경우:
a. 모드 Max를 Left 및 Above 중 더 큰 모드로서 설정
b. Left와 Above 모드의 차이가 2 내지 62(양쪽 끝값 포함) 범위에 있는 경우
i. MPM 목록 → {Planar, Left, Above, DC, Max -1, Max +1}
c. 그렇지 않으면
i. MPM 목록 → {Planar, Left, Above, DC, Max -2, Max +2}
● Left 및 Above 양쪽 모두가 각도형이고, 이들이 동일한 경우:
a. MPM 목록 → {Planar, Left, Left -1, Left +1, DC, Left -2}
게다가, MPM 인덱스 코드워드의 첫 번째 빈(bin)은 CABAC 콘텍스트 코딩된다. 현재 인트라 블록이 MRL 인에이블, ISP 인에이블, 또는 일반 인트라 블록인지에 대응하여, 총 3개의 콘텍스트가 이용된다.
단일화된 MPM 목록 구성에서 이용되는 좌측 이웃 블록 및 위쪽 이웃 블록은 도 10에 도시된 바와 같이 A2 및 B2이다.
하나의 MPM 플래그가 먼저 코딩된다. 블록이 MPM 목록 내의 모드 중 하나로 코딩되면, MPM 인덱스가 추가로 코딩된다. 그렇지 않으면, (MPM들을 제외한) 나머지 모드들에 대한 인덱스가 코딩된다.
VVC에서의 LFNST의 시그널링
JVET-P2001-v9에 명시된 바와 같은 LFNST의 시그널링은 아래와 같다.
7.3.9.5 코딩 유닛 신택스
4 기존 구현들의 단점들의 예들
JVET-N0217에서의 ALWIP의 설계는 다음과 같은 문제점들을 갖는다:
1) 2019년 3월 JVET 회의에서, MRL 모드, ISP 모드 및 일반 인트라 모드에 대해 단일화된 6-MPM 목록 생성이 채택되었다. 그러나, 어파인 선형 가중된 예측 모드는 MPM 목록 구성을 복잡하게 만드는 상이한 3-MPM 목록 구성을 이용한다. 복잡한 MPM 목록 구성은, 특히 4x4 샘플 등의 작은 블록들의 경우, 디코더의 처리량을 손상시킬 수 있다.
2) ALWIP는 블록의 루마 성분에만 적용된다. ALWP 코딩된 블록의 크로마 성분의 경우, 크로마 모드 인덱스가 코딩되어 디코더로 전송되므로, 불필요한 시그널링이 초래할 수 있다.
3) 다른 코딩 툴들과 ALWIP의 상호작용들이 고려되어야 한다.
4)
에서 upsBdryX를 계산할 때, Log2 ( uDwn )-1이 -1인 반면, -1과의 좌측 시프트는 미정의되는 것이 가능하다.
5) 예측 샘플들을 업샘플링할 때, 어떠한 반올림도 적용되지 않는다.
6) 디블록킹 프로세스에서, ALWIP 코딩된 블록들은 일반 인트라 블록들로서 취급된다.
7) ALWIP 플래그 (예를 들어, intra_lwip_flag)를 코딩하는데 있어서 너무 많은 콘텍스트(예를 들어, 4)가 이용된다.
8) 수직 업샘플링과 수평 업샘플링이 양쪽 모두가 요구될 때, 업샘플링 순서는 블록 형상에 의존한다. 이것은 하드웨어 친화적이지 않다.
9) 업샘플링에 대해 선형 보간 필터가 이용되므로, 비효율적일 수 있다.
ALWIP에서 활용되는 2-스테이지 다운샘플링 방법은 불필요한 계산 복잡도를 야기할 수 있다. 추가적으로, 다운샘플링된 참조 샘플들을 사용하여 업샘플링된 예측 블록을 생성하는 것은 부정확할 수 있다.
MIP는 루마 성분에만 적용된 반면 LFNST는 이중 트리 경우에 변환 행렬 인덱스의 별도의 시그널링을 사용하여 루마 성분 및 크로마 성분 양쪽 모두에 적용될 수 있었다. 그렇지만, 이중 트리 크로마의 경우에 크로마 성분에 대한 신택스 요소들을 파싱할 때, 이는 MIP가 루마 블록에 적용되는지 여부(즉, intra_mip_flag[ x0 ][ y0 ]가 0과 동일한지 여부)에 의존할 수 있다. 상이한 색상 성분 간의 그러한 의존성은 바람직하지 않다.
5 행렬 기반 인트라 코딩을 위한 예시적인 방법들
현재 개시된 기술의 실시예들은 기존 구현들의 단점들을 극복함으로써, 더 높은 코딩 효율을 갖지만 더 낮은 계산 복잡도를 갖는 비디오 코딩을 제공한다. 본 문서에서 설명된 바와 같이, 비디오 코딩을 위한 행렬 기반 인트라 예측 방법들은, 기존의 및 미래의 비디오 코딩 표준들 양쪽 모두를 향상시킬 수 있고, 다양한 구현들에 대해 설명된 다음과 같은 예들에서 명료화된다. 아래에 제공된 개시된 기술의 예들은 일반적인 개념을 설명하는 것이고, 제한하는 것으로서 해석될 것을 의미하지 않는다. 한 예에서, 반대로 명시적으로 나타내지 않는 한, 이들 예에서 설명된 다양한 피처들은 결합될 수 있다.
이하의 논의에서, 인트라 예측 모드란, (DC, 평면, CCLM 및 기타 가능한 인트라 예측 모드를 포함한) 각도 인트라 예측 모드를 지칭한다; 반면, 인트라 모드란 일반 인트라 모드 또는 MRL, ISP 또는 ALWIP를 지칭한다.
이하의 논의에서, "다른 인트라 모드들"이란, ALWIP를 제외한, 일반 인트라 모드, MRL 또는 ISP 등의, 하나 또는 복수의 인트라 모드를 지칭할 수 있다.
이하의 논의에서, SatShift(x, n)는 다음과 같이 정의된다
Shift(x, n)는 Shift(x, n) = (x+ offset0)>>n으로서 정의된다.
한 예에서, offset0 및/또는 offset1은 (1<<n)>>1 또는 (1<< (n-1))로 설정된다. 또 다른 예에서, offset0 및/또는 offset1은 0으로 설정된다.
또 다른 예에서, offset0=offset1= ( (1<<n)>>1)-1 또는 ( (1<< (n-1)))-1이다.
Clip3(min, max, x)는 다음과 같이 정의된다
ALWIP에 대한 MPM 목록 구성
1. ALWIP에 대한 MPM 목록의 전체 또는 일부는, (일반 인트라 모드, MRL 또는 ISP 등의) 비-ALWIP 인트라 모드에 대한 MPM 목록을 구성하는 전체 또는 부분적 절차에 따라 구성될 수 있다는 것이 제안된다.
a. 한 예에서, ALWIP에 대한 MPM 목록의 크기는, 비-ALWIP 인트라 모드에 대한 MPM 목록의 크기와 동일할 수 있다.
i. 예를 들어, MPM 목록의 크기는, ALWIP 및 비-ALWIP 인트라 모드들 양쪽 모두에 대해 6이다.
b. 한 예에서, ALWIP에 대한 MPM 목록은 비-ALWIP 인트라 모드에 대한 MPM 목록으로부터 도출될 수 있다.
i. 한 예에서, 비-ALWIP 인트라 모드에 대한 MPM 목록이 먼저 구성될 수 있다. 그 후, 이들의 일부 또는 전부는, ALWIP 코딩된 블록들에 대한 MPM 목록에 추가로 더해질 수 있는 MPM들로 변환될 수 있다.
1) 대안으로서, 또한, 변환된 MPM을 ALWIP 코딩된 블록들에 대한 MPM 목록에 추가할 때, 프루닝(pruning)이 적용될 수 있다.
2) 디폴트 모드들은 ALWIP 코딩된 블록들에 대한 MPM 목록에 추가될 수 있다.
a. 한 예에서, 디폴트 모드들은 비-ALWIP 인트라 모드의 MPM 목록으로부터 변환된 것들 이전에 추가될 수 있다.
b. 대안으로서, 비-ALWIP 인트라 모드의 MPM 목록으로부터 변환된 것들 이후에 디폴트 모드들이 추가될 수 있다.
c. 대안으로서, 비-ALWIP 인트라 모드의 MPM 목록으로부터 변환된 것들과 인터리빙된 방식으로 디폴트 모드들이 추가될 수 있다.
d. 한 예에서, 디폴트 모드들은 모든 종류의 블록들에 대해 동일하도록 고정될 수 있다.
e. 대안으로서, 디폴트 모드들은, 이웃 블록들의 가용성, 이웃 블록들의 모드 정보, 블록 치수 등의, 코딩된 정보에 따라 결정될 수 있다.
ii. 한 예에서, 비-ALWIP 인트라 모드에 대한 MPM 목록 내의 하나의 인트라 예측 모드는, ALWIP에 대한 MPM 목록 내에 놓여질 , 그 대응하는 ALWIP 인트라 예측 모드로 변환될 수 있다.
1) 대안으로서, 비-ALWIP 인트라 모드들에 대한 MPM 목록 내의 모든 인트라 예측 모드들은, ALWIP에 대한 MPM 목록을 구성하는데 이용되기 이전에 대응하는 ALWIP 인트라 예측 모드들로 변환될 수 있다.
2) 대안으로서, (이웃 블록들로부터의 인트라 예측 모드들 및 Planar 및 DC 등의 디폴트 인트라 예측 모드들을 포함할 수 있는) 모든 후보 인트라 예측 모드들은, 비-ALWIP 인트라 모드들에 대한 MPM 목록이 ALWIP에 대한 MPM 목록을 도출하는데 추가로 이용될 수 있는 경우, 비-ALWIP 인트라 모드들에 대한 MPM 목록을 구성하는데 이용되기 전에, 대응하는 ALWIP 인트라 예측 모드들로 변환될 수 있다.
3) 한 예에서, 2개의 변환된 ALWIP 인트라 예측 모드가 비교될 수 있다.
a. 한 예에서, 이들이 동일하다면, 이들 중 하나만이 ALWIP에 대한 MPM 목록 내에 둘 수 있다.
b. 한 예에서, 이들이 동일하다면, 이들 중 하나만이 비-ALWIP 인트라 모드들에 대한 MPM 목록 내에 둘 수 있다.
iii. 한 예에서, 비-ALWIP 인트라 모드에 대한 MPM 목록 내의 S개의 인트라 예측 모드들 중 K개는 ALWIP 모드에 대한 MPM 목록으로서 선택될 수 있다. 예를 들어, K는 3이고 S는 6이다.
1) 한 예에서, 비-ALWIP 인트라 모드들에 대한 MPM 목록 내의 처음 K개의 인트라 예측 모드가 ALWIP 모드에 대한 MPM 목록으로서 선택될 수 있다.
2. ALWIP에 대한 MPM 목록을 도출하는데 이용되는 하나 또는 복수의 이웃 블록은, (일반 인트라 모드, MRL 또는 ISP 등의) 비-ALWIP 인트라 모드들에 대한 MPM 목록을 도출하는데에도 이용될 수 있다는 것이 제안된다.
a. 한 예에서, ALWIP에 대한 MPM 목록을 도출하는데 이용되는 현재 블록 좌측의 이웃 블록은 비-ALWIP 인트라 모드들에 대한 MPM 목록을 도출하는데 이용되는 것과 동일해야 한다.
i. 현재 블록의 상단 좌측 코너가 (xCb, yCb)이고 현재 블록의 폭과 높이가 W 및 H라고 가정하면, 한 예에서, ALWIP 및 비-ALWIP 인트라 모드들 양쪽 모두에 대한 MPM 목록을 도출하는데 이용되는 좌측 이웃 블록은 위치 (xCb-1, yCb)를 커버할 수 있다. 한 대안적인 예에서, ALWIP 및 비-ALWIP 인트라 모드들 양쪽 모두에 대한 MPM 목록을 도출하는데 이용되는 좌측 이웃 블록은 위치 (xCb-1, yCb+H-1)를 커버할 수 있다.
ii. 예를 들어, 단일화된 MPM 목록 구성에 이용되는 좌측 이웃 블록과 위쪽 이웃 블록은 도 10에 도시된 바와 같이 A2 및 B2이다.
b. 한 예에서, ALWIP에 대한 MPM 목록을 도출하는데 이용되는 현재 블록 위쪽의 이웃 블록은 비-ALWIP 인트라 모드들에 대한 MPM 목록을 도출하는데 이용되는 것과 동일해야 한다.
i. 현재 블록의 상단 좌측 코너가 (xCb, yCb)이고 현재 블록의 폭과 높이가 W 및 H라고 가정하면, 한 예에서, ALWIP 및 비-ALWIP 인트라 모드들 양쪽 모두에 대한 MPM 목록을 도출하는데 이용되는 위쪽 이웃 블록은 위치 (xCb, yCb-1)를 커버할 수 있다. 한 대안적인 예에서, ALWIP 및 비-ALWIP 인트라 모드들 양쪽 모두에 대한 MPM 목록을 도출하는데 이용되는 위쪽 이웃 블록은 위치 (xCb+W-1, yCb-1)를 커버할 수 있다.
ii. 예를 들어, 단일화된 MPM 목록 구성에 이용되는 좌측 이웃 블록과 위쪽 이웃 블록은 도 10에 도시된 바와 같이 A1 및 B1이다.
3. ALWIP에 대한 MPM 목록이 현재 블록의 폭 및/또는 높이에 따라 상이한 방식들로 구성될 수 있다는 것이 제안된다.
a. 한 예에서, 상이한 블록 치수들에 대해 상이한 이웃 블록들이 액세스될 수 있다.
4. ALWIP에 대한 MPM 목록과 비-ALWIP 인트라 모드들에 대한 MPM 목록은 동일한 절차로 그러나 상이한 파라미터들로 구성될 수 있다는 것이 제안된다.
a. 한 예에서, 비-ALWIP 인트라 모드들의 MPM 목록 구성 절차에서 S개의 인트라 예측 모드 중 K개가 ALWIP 모드에서 이용되는 MPM 목록에 대해 도출될 수 있다. 예를 들어, K는 3이고 S는 6이다.
i. 한 예에서, MPM 목록 구성 절차에서 처음 K개의 인트라 예측 모드는 ALWIP 모드에서 이용되는 MPM 목록에 대해 도출될 수 있다.
b. 한 예에서, MPM 목록 내의 제1 모드는 상이할 수 있다.
i. 예를 들어, 비-ALWIP 인트라 모드들에 대한 MPM 목록 내의 제1 모드는 Planar일 수 있지만, ALWIP에 대해서는 MPM 목록 내의 모드 X0일 수 있다.
1) 한 예에서, X0은 Planar로부터 변환된 ALWIP 인트라 예측 모드일 수 있다.
c. 한 예에서, MPM 목록 내의 스터핑 모드(stuffing mode)들은 상이할 수 있다.
i. 예를 들어, 비-ALWIP 인트라 모드들에 대한 MPM 목록의 처음 3개의 스터핑 모드는, DC, Vertical 및 Horizontal일 수 있지만, ALWIP에 대해서는 MPM 목록의 모드 내의 X1, X2, X3일 수 있다.
1) 한 예에서, X1, X2, X3은 상이한 sizeId에 대해 상이할 수 있다.
ii. 한 예에서, 스터핑 모드의 수는 상이할 수 있다.
d. 한 예에서, MPM 목록 내의 이웃 모드들은 상이할 수 있다.
i. 예를 들어, 이웃 블록들의 일반 인트라 예측 모드들은 비-ALWIP 인트라 모드들에 대한 MPM 목록을 구성하는데 이용된다. 그리고 이들은 ALWIP 모드에 대한 MPM 목록을 구성하기 위해 ALWIP 인트라 예측 모드들로 변환된다.
e. 한 예에서, MPM 목록 내의 시프트된 모드들은 상이할 수 있다.
i. 예를 들어, X가 일반 인트라 예측 모드고 K0이 정수인 X+K0이 비-ALWIP 인트라 모드에 대한 MPM 목록에 포함될 수 있다. 그리고 Y가 ALWIP 인트라 예측 모드이고 K1이 정수인 Y+K1이 ALWIP에 대한 MPM 목록에 포함될 수 있고, 여기서 K0은 K1과는 상이할 수 있다.
1) 한 예에서, K1은 폭과 높이에 의존할 수 있다.
5. 비-ALWIP 인트라 모드들로 현재 블록에 대한 MPM 목록을 구성할 때 이웃 블록은 ALWIP로 코딩된 경우 이용불가능한 것으로 취급되는 것이 제안된다.
a. 대안으로서, 비-ALWIP 인트라 모드들로 현재 블록에 대한 MPM 목록을 구성할 때 이웃 블록은 ALWIP로 코딩된 경우 (Planar 등의) 미리정의된 인트라 예측 모드로 코딩된 것으로 취급된다.
6. ALWIP 모드로 현재 블록에 대한 MPM 목록을 구성할 때 이웃 블록은 비-ALWIP 인트라 모드로 코딩된 경우 이용불가능한 것으로 취급되는 것이 제안한다.
a. 대안으로서, ALWIP 모드로 현재 블록에 대한 MPM 목록을 구성할 때 이웃 블록은 비-ALWIP 인트라 모드들로 코딩된 경우 미리정의된 ALWIP 인트라 예측 모드 X로 코딩된 것으로 취급된다.
i. 한 예에서, X는 폭 및/또는 높이 등의 블록 치수들에 의존할 수 있다.
7. 라인 버퍼로부터 ALWIP 플래그의 저장을 제거하는 것이 제안된다.
a. 한 예에서, 액세스될 2번째 블록이 현재 블록과 비교하여 상이한 LCU/CTU 행/영역에 위치해 있을 때, 2번째 블록이 ALWIP로 코딩되어 있는지에 대한 조건부 체크는 스킵된다.
b. 한 예에서, 액세스할 2번째 블록이 현재 블록과 비교하여 상이한 LCU/CTU 행/영역에 위치하는 경우, 2번째 블록은, 일반 인트라 코딩된 블록으로서 취급되는 등의, 비-ALWIP 모드와 동일한 방식으로 취급된다.
8. ALWIP 플래그를 인코딩할 때, K개(K >= 0)보다 많지 않은 콘텍스트들만 이용될 수 있다.
a. 한 예에서, K = 1이다.
9. ALWIP 모드와 연관된 모드 인덱스를 직접 저장하는 것 대신에 ALWIP 코딩된 블록들의 변환된 인트라 예측 모드를 저장하는 것이 제안된다.
a. 한 예에서, 하나의 ALWIP 코딩된 블록과 연관된 디코딩된 모드 인덱스는, 예를 들어 섹션 2.5.7에 설명된 바와 같은
에 따르는 등에 의해, 일반 인트라 모드에 매핑된다.
b. 대안으로서, 또한, ALWIP 플래그의 저장이 완전히 제거된다.
c. 대안으로서, 또한, ALWIP 모드의 저장이 완전히 제거된다.
d. 대안으로서, 또한, 하나의 이웃/현재 블록이 ALWIP 플래그로 코딩되어 있는지에 대한 조건 체크는 스킵될 수 있다.
e. 대안으로서, 또한, ALWIP 코딩된 블록들에 대해 할당된 모드들의 변환 및 하나의 액세스된 블록과 연관된 일반 인트라 예측은 스킵될 수 있다.
상이한 색상 성분들에 관한 ALWIP
10. 대응하는 루마 블록이 ALWIP 모드로 코딩된 경우 추론된 크로마 인트라 모드 (예를 들어, DM 모드)가 항상 적용될 수 있다는 것이 제안된다.
a. 한 예에서, 대응하는 루마 블록이 ALWIP 모드로 코딩된 경우 시그널링 없이 크로마 인트라 모드는 DM 모드인 것으로 추론된다.
b. 한 예에서, 대응하는 루마 블록은 주어진 위치(예를 들어, 현재 크로마 블록의 상단 좌측, 현재 크로마 블록의 중심)에 위치한 크로마 샘플의 대응하는 샘플을 커버하는 것일 수 있다.
c. 한 예에서, DM 모드는, (ALWIP) 모드를 일반 인트라 모드 중 하나로 매핑하는 등을 통해, 대응하는 루마 블록의 인트라 예측 모드에 따라 도출될 수 있다.
11. 크로마 블록의 대응하는 루마 블록이 ALWIP 모드로 코딩될 때, 수개의 DM 모드가 도출될 수 있다.
12. 크로마 모드 결정 프로세스 (예를 들어, 직접 모드/도출 모드)에서, ALWIP 코딩되어 있는지 및/또는 그 ALWIP 모드를 결정하는데 이용되는 대응하는 루마 블록은, 코딩된 크로마 블록(들)의 치수들 및/또는 색상 포맷과 함께 상단 좌측 위치에 따라 결정될 수 있다.
a. 코딩된 크로마 블록(들)의 상단 좌측 위치가 (xCb, yCb)이고, 코딩된 크로마 블록(들)의 폭과 높이가 각각 CbWidth 및 CbHeight라고 가정하고, 여기서 모든 위치와 길이는 루마 샘플 유닛 내에 있다.
b. 한 예에서, 대응하는 루마 블록은 offsetX 및 offsetY 양쪽 모두가 0인 것이 불허되는 위치 (xCb+offsetY, yCb+offsetY)를 커버하는 루마 블록 (예를 들어, 코딩 블록)으로서 선택될 수 있다.
i. 한 예에서 offsetX = (CbWidth/2) 또는 (CbWidth/2-1) 또는 (CbWidth/2 + 1)
ii. 한 예에서, offsetY = (CbHeight/2)) 또는 (CbHeight/2 -1) 또는 (CbHeight/2+1).
13. 하나의 대응하는 루마 블록이 ALWIP 모드로 코딩된 경우 특별 모드가 크로마 블록에 할당되는 것이 제안된다.
a. 한 예에서, 특별 모드는 ALWIP 코딩된 블록들과 연관된 인트라 예측 모드에 관계없이 주어진 일반 인트라 예측 모드인 것으로 정의된다.
b. 한 예에서, 인트라 예측의 상이한 방식들이 이 특별 모드에 할당될 수 있다.
c. 대안으로서, 루마 블록이 ALWIP 모드로 코딩되면, 크로마 DM 모드에 대한 연관된 일반 인트라 모드는 식별된 특별 모드인 것으로 항상 추론될 수 있다.
d. 대안으로서, 또한, 크로마 모드들의 시그널링은 스킵될 수 있다.
e. 대안으로서, 크로마 블록(들)의 대응하는 루마 블록이 ALWIP 모드로 코딩되고 크로마 블록(들)에 대해 DM 모드가 시그널링될 때, 미리정의된 인트라 예측 모드가 크로마 블록(들)에 대해 적용된다.
i. 예를 들어, 미리정의된 인트라 예측 모드는 Planar 모드일 수 있다.
ii. 예를 들어, 미리정의된 인트라 예측 모드는 스크린 콘텐츠의 표시 등의 코딩된 정보에 의존할 수 있다.
1) 한 예에서, 스크린 콘텐츠의 표시가 콘텐츠가 카메라 캡처 콘텐츠임을 나타내는 경우, Planar 모드로 설정될 수 있다.
2) 한 예에서, 스크린 콘텐츠의 표시가 콘텐츠가 스크린 콘텐츠임을 나타내는 경우, 수평 예측 모드로 설정될 수 있다.
f. 한 예에서, 크로마 블록(들)의 대응하는 루마 블록이 ALWIP 모드로 코딩될 때, DM 모드는 크로마 블록(들)에 대해 절대 이용되지 않을 수 있다.
i. 예를 들어, DM 모드 관련 신택스는 시그널링되지 않을 수 있다.
1) 한 예에서, 대응하는 루마 블록이 ALWIP 모드이고 sps_cclm_enabled_flag가 거짓인 경우, 4개의 크로마 모드가 크로마 블록에 대해 시그널링되는 것이 허용될 수 있다.
a. 예를 들어, 이 경우, 인트라 크로마 모드들의 2진화를 위해 최대 2개의 빈이 요구될 수 있다.
2) 한 예에서, 대응하는 루마 블록이 ALWIP 모드이고 sps_cclm_enabled_flag가 참인 경우, 7개의 크로마 모드가 크로마 블록에 대해 시그널링되는 것이 허용될 수 있다.
a. 예를 들어, 이 경우, 인트라 크로마 모드들의 2진화를 위해 최대 4개의 빈이 요구될 수 있다.
14. ALWIP는 또한, 크로마 성분에도 적용될 수 있다고 제안된다.
a. 한 예에서, 행렬 및/또는 편향 벡터는 상이한 색상 성분들에 대해 상이할 수 있다.
b. 한 예에서, 행렬 및/또는 편향 벡터는 Cb 및 Cr에 대해 공동으로 미리정의될 수 있다
i. 한 예에서, Cb 및 Cr 성분은 연결될 수 있다.
ii. 한 예에서, Cb 및 Cr 성분은 인터리빙될 수 있다.
c. 한 예에서, 크로마 성분은 대응하는 루마 블록과 동일한 ALWIP 인트라 예측 모드를 공유할 수 있다.
i. 한 예에서, 대응하는 루마 블록이 ALWIP 모드를 적용하고 크로마 블록이 DM 모드로 코딩된 경우 동일한 ALWIP 인트라 예측 모드가 크로마 성분에 적용된다.
ii. 한 예에서, 동일한 ALWIP 인트라 예측 모드가 크로마 성분에 적용되고 그 후의 선형 보간은 스킵될 수 있다.
iii. 한 예에서, 동일한 ALWIP 인트라 예측 모드가 서브샘플링된 행렬 및/또는 편향 벡터와 함께 크로마 성분에 적용된다.
d. 한 예에서, 상이한 성분에 대한 ALWIP 인트라 예측 모드의 수는 상이할 수 있다.
i. 예를 들어, 크로마 성분들에 대한 ALWIP 인트라 예측 모드의 수는 동일한 블록 폭 및 높이에 대한 루마 성분에 대한 것보다 작을 수 있다.
ALWIP의
적용가능성
15. ALWIP가 적용가능한지가 시그널링할 수 있다는 것이 제안된다.
a. 예를 들어, 이것은, (예를 들어, SPS에서) 시퀀스 레벨, (예를 들어, PPS 또는 픽처 헤더에서) 픽처 레벨, (예를 들어, 슬라이스 헤더에서) 슬라이스 레벨, (예를 들어, 타일 그룹 헤더에서) 타일 그룹 레벨, 타일 레벨, CTU 행 레벨 또는 CTU 레벨에서 시그널링될 수 있다.
b. 예를 들어, intra_lwip_flag는 시그널링되지 않고 ALWIP가 적용될 수 없다면 0으로 추론될 수도 있다.
16. ALWIP가 적용가능한지는 블록 폭 (W) 및/또는 높이 (H)에 따라 달라질 수 있다는 것이 제안된다.
c. 예를 들어, W>=T1 (또는 W>T1) 및 H>=T2 (또는 H> T2)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T1=T2=32;
i. 예를 들어, W<=T1 (또는 W<T1) 및 H<=T2 (또는 H< T2)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T1=T2=32;
d. 예를 들어, W>=T1 (또는 W>T1) 또는 H>=T2 (또는 H>T2)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T1=T2=32;
i. 예를 들어, W<=T1 (또는 W<T1) 또는 H<=T2 (또는 H< T2)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T1=T2=32;
e. 예를 들어, W + H>=T (또는 W * H> T)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T = 256;
i. 예를 들어 W + H<=T (또는 W + H< T)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T = 256;
f. 예를 들어 W * H>=T (또는 W * H> T)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T = 256;
i. 예를 들어 W * H<=T (또는 W * H< T)인 경우 ALWIP가 적용되지 않을 수 있다. 예를 들어 T = 256;
g. 예를 들어, intra_lwip_flag는 시그널링되지 않고 ALWIP가 적용될 수 없다면 0으로 추론될 수 있다.
ALWIP의 계산 문제들
17. ALWIP에 수반된 임의의 시프트 동작은 S만큼 숫자를 좌측으로 시프트하거나 우측으로 시프트할 수 있다는 것이 제안된다, 여기서 S는 0보다 크거나 같아야 한다.
a. 한 예에서, 우측 시프트 동작은 S가 0과 같거나 0보다 클 때 상이할 수 있다.
i. 한 예에서 upsBdryX[ x ]는 다음과 같이 계산되어야 한다
uDwn>1일 때는
, uDwn = 1일 때는
.
b. 한 예에서 upsBdryX[ x ]는 다음과 같이 계산되어야 한다
18. ALWIP의 업샘플링 프로세스에서 결과들을 0에 가깝게 또는 0에서 멀리 반올림해야 한다고 제안된다.
a. 한 예에서,
및
여기서 offsetHor 및 offsetVer는 정수들이다. 예를 들어, offsetHor = upHor/2 및 offsetVer=upVer/2이다.
다른 코딩 툴들과의 상호작용
19. CIIP-코딩된 블록에 대해 ALWIP가 이용될 수 있다는 것이 제안된다.
a. 한 예에서, CIIP-코딩된 블록에서, ALWIP 인트라 예측 모드 또는 Planar 등의 일반 인트라 예측 모드가 인트라 예측 신호를 생성하는데 이용되는지가 명시적으로 시그널링될 수 있다.
b. 한 예에서, ALWIP 인트라 예측 모드 또는 Planar 등의 일반 인트라 예측 모드가 인트라 예측 신호를 생성하는데 이용될 수 있는지가 묵시적으로 추론될 수 있다.
i. 한 예에서, ALWIP 인트라 예측 모드는 CIIP 코딩된 블록에서 결코 이용되지 않을 수 있다.
1) 대안으로서, CIIP 코딩된 블록에서 일반 인트라 예측은 절대 이용되지 않을 수 있다.
ii. 한 예에서, 이웃 블록들의 정보로부터, 인트라 예측 신호를 생성하기 위해 ALWIP 인트라 예측 모드 또는 Planar 등의 일반 인트라 예측 모드가 이용되는지가 추론될 수 있다.
20. CCLM 모드에서 이웃 루마 샘플들을 다운샘플링하는데 이용되는 절차의 전체 또는 일부가 ALWIP 모드에서 이웃 샘플들을 다운샘플링하는데 이용될 수 있다는 것이 제안된다.
a. 대안으로서, ALWIP 모드에서 이웃 루마 샘플들을 다운샘플링하는데 이용되는 절차의 전체 또는 일부는 CCLM 모드에서 이웃 샘플들을 다운샘플링하는데 이용될 수 있다.
b. 다운샘플링 절차는 CCLM 프로세스 및 ALWIP 프로세스에서 이용될 때 상이한 파라미터들/인수들과 함께 기동될 수 있다.
c. 한 예에서, CCLM 프로세스의 (이웃 루마 위치들의 선택, 다운샘플링 필터들 등의) 다운샘플링 방법은 ALWIP 프로세스에서 이용될 수 있다.
d. 이웃 루마 샘플들을 다운샘플링하는데 이용되는 절차는, 적어도 다운샘플링된 위치들의 선택, 다운샘플링 필터들, 반올림 및 클리핑 동작들을 포함한다.
21. ALWIP 모드로 코딩된 블록은 RST 또는/및 2차 변환 또는/및 회전 변환 또는/및 비분리형 2차 변환 (NSST)을 적용할 수 없다는 것이 제안된다.
a. 한 예에서, 이러한 제약이 적용될 수 있는지의 여부는 블록들의 치수 정보에 의존할 수 있으며, 예를 들어 (15)에 설명된 조건과 동일하다.
b. 대안으로서, RST 또는/및 2차 변환 또는/및 회전 변환 또는/및 NSST가 적용될 때 ALWIP 모드는 불허될 수 있다.
c. 대안으로서, ALWIP 모드로 코딩된 블록은 RST 또는/및 2차 변환 또는/및 회전 변환 또는/및 비분리 2차 변환 (NSST)을 적용할 수 있다.
i. 한 예에서, 변환 행렬의 선택은 ALWIP 인트라 예측 모드에 의존할 수 있다.
ii. 한 예에서, 변환 행렬의 선택은 ALWIP 인트라 예측 모드로부터 변환되는 일반 인트라 예측 모드에 의존할 수 있다.
iii. 한 예에서, 변환 행렬의 선택은 ALWIP 인트라 예측 모드로부터 변환되는 일반 인트라 예측 모드에 따른 분류에 의존할 수 있다.
22. ALWIP 모드로 코딩된 블록은 BDPCM(Block-based DPCM) 또는 Residue RDPCM을 적용할 수 없음이 제안된다.
a. 대안으로서, BDPCM 또는 RDPCM이 적용되는 경우 ALWIP 모드가 불허될 수 있다.
23. ALWIP 모드로 코딩된 블록은 변환으로서 DCT-II만 이용할 수 있다는 것이 제안된다.
a. 한 예에서, 변환 행렬 인덱스들의 시그널링은 항상 스킵된다.
b. 대안으로서, ALWIP 모드로 코딩된 블록에 이용되는 변환이 명시적으로 시그널링되는 대신 묵시적으로 도출될 수 있다는 것이 제안된다. 예를 들어, 변환은 JVET-M0303에서 제안된 방식에 따라 선택될 수 있다.
c. 대안으로서, ALWIP 모드로 코딩된 블록은 변환 스킵만을 이용할 수 있다는 것이 제안된다.
i. 대안으로서, 또한 ALWIP가 이용될 , 변환 스킵 이용 표시의 시그널링이 스킵된다.
d. 한 예에서, (인에이블됨/디스에이블됨, 예측 모드 인덱스 등의) ALWIP 모드 정보는 변환 행렬의 표시들 후에 조건부로 시그널링될 수 있다.
i. 한 예에서, (변환 스킵 또는 DCT-II 등의) 주어진 변환 행렬에 대해, ALWIP 모드 정보의 표시들이 시그널링될 수 있다.
ii. 대안으로서, 또한, ALWIP 모드 정보의 표시들은 일부 미리정의된 변환 행렬들에 대해 스킵될 수 있다.
24. ALWIP 모드로 코딩된 블록은, 선택된 변환이 모드-의존적일 때 ALWIP 인트라 예측 모드로부터 변환된 일반 인트라 예측으로 코딩된 것으로 간주되는 것이 제안된다.
25. ALWIP 모드는 변환 스킵을 이용하지 않을 수 있다.
a. 예를 들어, 이 경우 변환 스킵 이용의 표시를 추가로 시그널링할 필요가 없다.
b. 대안으로서, 변환 스킵이 적용될 때 ALWIP 모드가 불허될 수 있다.
i. 예를 들어, 이 경우 변환 스킵이 적용될 때 ALWIP 모드 정보를 시그널링할 필요가 없다.
26. 디블록킹 필터, SAO(sample adaptive offset), ALF(adaptive loop filter) 등의 필터링 프로세스에서, 필터들을 선택하는 방법 및/또는 샘플들을 필터링할지는 ALWIP를 이용하여 결정될 수 있다.
27. 필터링되지 않은 이웃 샘플들은 ALWIP 모드에서 이용될 수 있다.
a. 대안으로서, 필터링된 이웃 샘플들은 ALWIP 모드에서 이용될 수 있다.
b. 한 예에서, 필터링된 이웃 샘플들은 다운샘플링을 위해 이용될 수 있고 필터링되지 않은 이웃 샘플들은 업샘플링을 위해 이용될 수 있다.
c. 한 예에서, 필터링되지 않은 이웃 샘플들은 다운샘플링을 위해 이용될 수 있고 필터링된 이웃 샘플들은 업샘플링을 위해 이용될 수 있다.
d. 한 예에서, 필터링된 좌측 이웃 샘플들은 업샘플링에서 이용될 수 있고 필터링되지 않은 위쪽 이웃 샘플들은 업샘플링에서 이용될 수 있다.
e. 한 예에서, 필터링되지 않은 좌측 이웃 샘플들은 업샘플링에서 이용될 수 있고 필터링된 위쪽 이웃 샘플들은 업샘플링에서 이용될 수 있다.
f. 한 예에서, 필터링된 또는 필터링되지 않은 이웃 샘플들이 이용되는지는 ALWIP 모드에 의존할 수 있다.
i. 한 예에서, ALWIP 모드는 전통적인 인트라 예측 모드로 변환될 수 있고, 필터링된 또는 필터링되지 않은 이웃 샘플들이 이용되는지는 변환된 전통적인 인트라 예측 모드에 의존할 수 있다. 예를 들어, 이러한 결정은 종래의 인트라 예측 모드들과 동일하다.
ii. 대안으로서, 필터링된 또는 필터링되지 않은 이웃 샘플들이 ALWIP 모드에 이용되는지는 시그널링될 수 있다.
g. 한 예에서, 필터링된 샘플들은 전통적인 인트라 예측 모드들과 동일하게 생성될 수 있다.
28. 어떤 행렬들 또는/및 오프셋 벡터들이 이용되는지는 재성형 (일명 LMCS, 크로마 스케일링이 있는 루마 매핑) 정보에 의존할 수 있다.
a. 한 예에서, 재성형이 온 및 오프일 때 상이한 행렬들 또는/및 오프셋 벡터들이 이용될 수 있다.
b. 한 예에서, 상이한 재성성 파라미터들에 대해 상이한 행렬들 또는/및 오프셋 벡터들이 이용될 수 있다.
c. 한 예에서, ALWIP는 항상 원래 도메인에서 수행될 수 있다.
i. 예를 들어, 이웃 샘플들은 ALWIP에서 이용되기 전에 원래 도메인(재성형이 적용된 경우)에 매핑된다.
29. 재성형이 적용될 때 ALWIP가 디스에이블될 수 있다.
a. 대안으로서, ALWIP가 인에이블된 경우 재성형이 디스에이블될 수 있다.
b. 한 예에서, 재성형이 적용될 때 HDR (높은 동적 범위) 콘텐츠에 대해 ALWIP는 디스에이블될 수 있다.
30. ALWIP에서 이용되는 행렬들은 샘플 비트 깊이에 의존할 수 있다.
a. 대안으로서, 또한, ALWIP에서 이용되는 오프셋 값들은 샘플 비트 깊이에 의존할 수 있다.
b. 대안으로서, 행렬 파라미터들 및 오프셋 값들은 N비트 샘플들 (M<=N)에 대해 M비트 정밀도로 저장될 수 있다, 예를 들어, 행렬 파라미터들 및 오프셋 값들은 10비트 샘플에 대해 8비트 정밀도로 저장될 수 있다.
c. 샘플 비트 깊이는 루마 등의 색상 성분에 대한 입력 어레이의 비트 깊이일 수 있다.
d. 샘플 비트 깊이는 루마 등의 색상 성분에 대한 내부 어레이/복원된 샘플의 비트 깊이일 수 있다.
31. 명시된 블록 크기에 대한 행렬 파라미터들 및/또는 오프셋 값들은 다른 블록 크기들에 대한 행렬 파라미터들 및/또는 오프셋 값들로부터 도출될 수 있다.
32. 한 예에서, 8x8 블록의 16x8 행렬은 4x4 블록의 16x4 행렬로부터 도출될 수 있다.
33. ALWIP에 의해 생성된 예측은, 추가로 이용될 예측 신호를 획득하기 위해 처리될 중간 신호로서 취급될 수 있는 것이 제안된다.
a. 한 예에서, 위치 의존적 인트라 예측 결합(Position Dependent Intra Prediction Combination)(PDPC)은 추가로 이용될 예측 신호를 생성하기 위해 ALWIP에 의해 생성된 예측에 적용될 수 있다.
i. 한 예에서, PDPC는, 블록이 Planar 또는 DC 등의 특정한 일반 인트라 예측 모드로 코딩되는 것과 동일한 방식으로, ALWIP 코딩된 블록에 관해 이루어진다.
ii. 한 예에서, PDPC는, ALWIP 인트라 예측 모드로부터 변환되는 일반 인트라 예측 모드로 코딩된 블록과 동일한 방식으로 ALWIP 코딩된 블록에 관해 이루어진다.
iii. 한 예에서, PDPC는 ALWIP 코딩된 블록에 관해 조건부로 적용된다.
1) 예를 들어, ALWIP 인트라 예측 모드로부터 변환되는 일반 인트라 예측 모드에 관해 PDPC가 적용되는 경우에만 ALWIP 코딩된 블록에 PDPC가 적용된다.
b. 한 예에서, ALWIP에 의해 생성된 경계 샘플들 예측은, 추가로 이용될 예측 신호를 생성하기 위해 이웃 샘플들로 필터링될 수 있다.
i. 한 예에서, 경계 샘플들에 관한 필터링은, 블록이 Planar 또는 DC 등의 특정한 일반 인트라 예측 모드로 코딩되는 것과 동일한 방식으로 ALWIP 코딩된 블록에 관해 이루어진다.
ii. 한 예에서, 경계 샘플들에 관한 필터링은, ALWIP 인트라 예측 모드로부터 변환되는 일반 인트라 예측 모드로 코딩된 블록과 동일한 방식으로 ALWIP 코딩된 블록에 관해 이루어진다.
iii. 한 예에서, 경계 샘플에 관한 필터링은 ALWIP 코딩된 블록에 관해 조건부로 적용된다.
1) 예를 들어, 경계 샘플들에 관한 필터링은, ALWIP 인트라 예측 모드로부터 변환되는 일반 인트라 예측 모드에서 경계 샘플들에 대한 필터링이 적용되는 경우에만 ALWIP 코딩된 블록에 관해 적용된다.
34. ALWIP의 업샘플링 프로세스에서 쌍선형 보간 필터 이외의 보간 필터가 이용될 수 있다는 것이 제안된다.
a. 한 예에서, 4-탭 보간 필터들은 ALWIP의 업샘플링 프로세스에서 이용될 수 있다.
i. 예를 들어, 크로마 성분들에 대한 모션 보상을 수행하는데 이용되는 VVC에서의 4-탭 보간 필터들은 ALWIP의 업샘플링 프로세스에서 이용될 수 있다.
ii. 예를 들어, 각도 인트라 예측을 수행하는데 이용되는 VVC에서의 4-탭 보간 필터들은 ALWIP의 업샘플링 프로세스에서 이용될 수 있다.
iii. 예를 들어, 루마 성분에 대한 모션 보상을 수행하는데 이용되는 VVC에서의 8-탭 보간 필터들은 ALWIP의 업샘플링 프로세스에서 이용될 수 있다.
35. ALWIP 모드로 코딩된 블록 내의 샘플들은 상이한 방식들로 예측될 수 있다.
a. 한 예에서, W*H 블록에 대해, sW*sH ALWIP를 적용함으로써 블록 내의 sW*sH 서브블록의 예측이 생성될 수 있다.
i. 한 예에서, W*H 블록에 대해, W/2*H/2 ALWIP를 적용함으로써 그 상단 좌측 W/2*H/2 블록의 예측이 생성될 수 있다.
ii. 한 예에서, W*H 블록에 대해, W/2*H ALWIP를 적용함으로써 그 좌측 W/2*H 블록의 예측이 생성될 수 있다.
iii. 한 예에서, W*H 블록에 대해, W*H/2 ALWIP를 적용함으로써 그 상단 W*H/2 블록의 예측이 생성될 수 있다.
iv. 한 예에서, sW*sH 서브블록은 이용가능한 좌측 또는/및 위쪽 이웃 샘플들을 가질 수 있다.
b. 한 예에서, 서브블록의 위치를 결정하는 방법은 블록들의 치수에 의존할 수 있다.
i. 예를 들어, W >= H인 경우, W/2*H ALWIP를 적용함으로써 그 좌측 W/2*H 블록의 예측이 생성될 수 있다.
ii. 예를 들어, H >= W인 경우, W*H/2 ALWIP를 적용함으로써 그 상단 W*H/2 블록의 예측이 생성될 수 있다.
iii. 예를 들어, W가 H와 같을 때, W/2*H/2 ALWIP를 적용함으로써 그 상단 좌측 W/2*H/2 블록의 예측이 생성될 수 있다.
c. 한 예에서, 또한, W*H ALWIP를 적용함으로써 나머지 샘플들 (예를 들어, 샘플들은 sW*sH 서브블록에 속하지 않음)의 예측이 생성될 수 있다.
i. 대안으로서, (예를 들어, 변환된 인트라 예측 모드를 인트라 모드로서 이용한) 종래의 인트라 예측을 적용함으로써 나머지 샘플들의 예측이 생성될 수 있다.
ii. 또한, sW*sH 서브블록 내의 샘플들에 대해서는 계산이 스킵될 수 있다.
36. ALWIP 모드에서 코딩된 블록 내의 샘플들은 (예를 들어, 크기 sW*sH를 갖는) 서브블록 레벨에서 예측될 수 있다.
a. 한 예에서, sW*sH ALWIP는, (예를 들어, 경계 서브블록에 대해) 이웃 복원된 샘플들 또는/및 (예를 들어, 내부 서브블록들에 대해) 이웃 예측된 샘플들을 이용하여 각각의 서브블록에 적용될 수 있다.
b. 한 예에서, 서브블록들은 래스터-스캔 순서로 예측될 수 있다.
c. 한 예에서, 서브블록들은 지그재그 순서로 예측될 수 있다.
d. 한 예에서, 서브블록의 폭 (높이)는 sWMax (sHMax)보다 크지 않을 수 있다.
e. 한 예에서, 폭 또는 높이, 또는 폭과 높이 양쪽 모두를 갖는 블록이 양쪽 모두 임계값 L보다 크거나 (또는 동일할 때), 블록은 복수의 서브블록으로 분할될 수 있다.
f. 임계값 L은 미리정의되거나 SPS/PPS/픽처/슬라이스/타일 그룹/타일 레벨에서 시그널링될 수 있다.
i. 대안으로서, 임계값들은, 블록 크기, 픽처 유형, 시간 계층 인덱스 등의, 소정의 코딩된 정보에 의존할 수 있다.
37. (인접한 또는 인접하지 않은) 이웃 샘플들은 ALWIP에서 이용되기 전에 필터링된다는 것이 제안된다.
a. 대안으로서, 이웃 샘플들은 ALWIP에서 이용되기 전에 필터링되지 않는다.
b. 대안으로서, 이웃 샘플들은 ALWIP에서 이용되기 전에 조건부로 필터링된다.
i. 예를 들어, 이웃 샘플들은, ALWIP 인트라 예측 모드가 하나 또는 일부 특정한 값들과 동일한 경우에만 ALWIP에서 이용되기 전에 필터링된다.
38. ALWIP 플래그를 코딩할 때, 산술 코딩에서 ALWIP 플래그에 대한 콘텍스트를 도출하는 방법은 현재 블록의 모든 치수에 대해 동일하다는 것이 제안된다.
a. 한 예에서, 산술 코딩에서 ALWIP 플래그에 대한 콘텍스트를 도출하는 방법은, (Abs ( Log2 (cbWidth) - Log2 (cbHeight) )가 1보다 크거나 작을 때 동일하고, 여기서 CbWidth 및 CbHeight는 각각 현재 블록의 폭과 높이이다.
b. 한 예에서, 산술 코딩에서 ALWIP 플래그에 대한 콘텍스트의 도출은 이웃 블록들의 ALWIP 정보 및/또는 이웃 블록들의 가용성에만 의존한다.
i. 한 예에서, 복수의 이웃 블록 ALWIP 정보 (예를 들어, intra_lwip_flag) 및/또는 이웃 블록들의 가용성이 직접 이용된다. 예를 들어, 좌측 및 위쪽 이웃 블록들의 ALWIP 플래그들 및/또는 좌측 및 이웃 블록들의 가용성은 산술 코딩에서 ALWIP 플래그에 대한 콘텍스트를 도출하는데 이용된다. 한 예가 표 5에 도시되어 있다. 대안으로서, 또한, 콘텍스트 인덱스 오프셋 ctxInc = ( condL && availableL ) + ( condA && availableA ) + ctxSetIdx * 3이다.
표-5 ― 좌측 및 위쪽
신택스
요소들을 이용한
ctxInc의
명세
ii. 한 예에서, 이웃 블록의 ALWIP 정보 중 하나(예를 들어, intra_lwip_flag)는 산술 코딩에서 ALWIP 플래그에 대한 콘텍스트를 도출하는데 이용되고, 이웃 블록은 좌측 이웃 블록일 수 있다. 한 예가 표 6에 도시되어 있다. 대안으로서, 또한, 콘텍스트 인덱스 오프셋 ctxInc = ( condL && availableL ) + ctxSetIdx * 3이다.
표-6 ― 좌측 및 위쪽
신택스
요소들을 이용한
ctxInc의
명세
iii. 한 예에서, 이웃 블록의 ALWIP 플래그 정보 중 하나(예를 들어, intra_lwip_flag)는 산술 코딩에서 ALWIP 플래그에 대한 콘텍스트를 도출하는데 이용되고, 이웃 블록은 위쪽 이웃 블록일 수 있다. 한 예가 표 7에 도시되어 있다. 대안으로서, 또한, 콘텍스트 인덱스 오프셋 ctxInc = ( condA && availableA ) + ctxSetIdx * 3이다.
표-7 - 좌측 및 위쪽 신택스 요소들을 이용한 ctxInc의 명세
c. 한 예에서, 산술 코딩에서 ALWIP 플래그를 코딩하기 위해 하나의 고정 콘텍스트가 이용된다.
d. 한 예에서, ALWIP 플래그는 산술 코딩에서 바이패스 코딩된다.
e. 대안으로서, K개 콘텍스트들이 산술 코딩에서 ALWIP 플래그를 코딩하는데 이용될 수 있다. 이용되는 콘텍스트는 블록의 치수 (예를 들어, W로 표시된 폭 및 H로 표시된 높이)에 의존할 수 있다.
i. 한 예에서 K는 2와 같다. W > N * H 또는 H > N * W (예를 들어, N = 2)일 때, 첫 번째 콘텍스트가 이용되며, 그렇지 않으면 2번째 콘텍스트가 이용된다.
39. N개 (N >= 0) 콘텍스트들은 산술 코딩에서 ALWIP 플래그 (예를 들어, intra_lwip_flag)를 코딩하는데 이용될 수 있다는 것이 제안된다.
a. 한 예에서, N은 3과 같다. ALWIP 플래그 및/또는 2개의 이웃하는/하거나 이웃하지 않는 블록들의 가용성은, 산술 코딩에서 ALWIP 플래그에 대해 이용된 콘텍스트를 도출하는데 이용될 수 있다.
i. 한 예에서, 2개의 이웃 블록은 위쪽 (예를 들어, 도 10에서 B1) 블록 및 좌측 (예를 들어, 도 10에서 A1) 블록을 포함할 수 있다.
ii. 한 예에서, 2개의 이웃 블록은 위쪽 블록 및 좌측 아래 (예를 들어, 도 10의 A2) 블록을 포함할 수 있다.
iii. 한 예에서, 2개의 이웃 블록은 위쪽 블록 및 위쪽-우측 (예를 들어, 도 10의 B2) 블록을 포함할 수 있다.
iv. 한 예에서, 2개의 이웃 블록은 위쪽-우측 (예를 들어, 도 10의 B2) 블록 및 좌측 (예를 들어, 도 10의 A1) 블록을 포함할 수 있다.
v. 한 예에서, 2개의 이웃 블록은 우측 위쪽(예를 들어, 도 10에서 B2) 블록 및 좌측 아래 (예를 들어, 도 10에서 A2) 블록을 포함할 수 있다.
vi. 한 예에서, 2개의 이웃 블록은 좌측 블록 (예를 들어, 도 10에서 A1) 및 좌측 아래 (예를 들어, 도 10에서 A2) 블록을 포함할 수 있다.
vii. 한 예에서, 이웃 블록은 도 10과 상이하게 정의될 수 있다. 한 예가 도 16에 설명되어 있다. 2개의 이웃 블록은 {우측-위쪽, 위쪽, 좌측-위쪽, 좌측, 좌측-아래} 블록들 중 임의의 2개를 포함할 수 있다. 예를 들어, 2개의 이웃 블록은 {B0, B1, B2, A0, A1}의 블록들 중 임의의 2개를 포함할 수 있다.
b. 한 예에서 N은 2와 같다. ALWIP 플래그 및/또는 1개의 이웃하는/하거나 이웃하지 않는 블록의 가용성은, 산술 코딩에서 ALWIP 플래그에 대해 이용된 콘텍스트를 도출하는데 이용될 수 있다.
i. 한 예에서, 이웃 블록은 {우측-위쪽, 위쪽, 좌측-위쪽, 좌측, 좌측-아래} 중 어느 하나일 수 있다. 이웃 블록의 한 예가 도 10에 설명되어 있다.
ii. 한 예에서, 이웃 블록은 {우측-위쪽, 위쪽, 좌측-위쪽, 좌측, 좌측-아래} 블록 중 어느 하나일 수 있다. 이웃 블록의 한 예가 도 16에 설명되어 있다.
c. 한 예에서, 산술 코딩에서 ALWIP 플래그를 코딩하기 위해 하나의 고정된 콘텍스트가 이용될 수 있다.
d. 한 예에서, ALWIP 플래그는 산술 코딩에서 바이패스 코딩될 수 있다. 도 16은 이웃 블록들의 한 예를 도시한다.
40. 업샘플링 경계 샘플들을 계산하지 않고 감축된 경계 샘플들이 생성될 수 있다는 것이 제안된다.
a. 한 예에서, 업샘플링 경계 샘플 위치들에 위치한 기준 샘플들은 예측 업샘플링 프로세스에 직접 이용된다.
i. 한 예에서, 업샘플링 경계 샘플들은 복수의 이웃한 기준 샘플들을 평균화함으로써 계산되지 않을 수 있다.
b. 한 예에서, 감축된 경계 샘플들은 기준 샘플 및 다운스케일링 인자로부터 직접 계산될 수 있다.
i. 한 예에서, 다운스케일링 인자는 변환 블록 크기 및 다운샘플링된 경계 크기에 의해 계산될 수 있다.
41. 행렬 곱셈에 이용되는 감축된 경계 샘플들은 한 스테이지에서 생성될 수 있다는 것이 제안된다.
a. 한 예에서, 이들은 한 스테이지에서 원래의 복원된 이웃 샘플들로부터 직접 생성될 수 있다 (VVC WD5는 섹션 2.2.1.5.4.4에 설명된 바와 같이 ALWIP 감축된 경계 샘플들을 생성하기 위해 2-스테이지 다운샘플링을 이용한다는 점에 유의한다), 여기서, 원래의 복원된 이웃 샘플들은 추가 처리없이 이웃 샘플들을 디코딩할 수 있다. 예를 들어, 원래의 복원된 이웃 샘플들은 각도 인터 예측 샘플들을 생성하는데 이용될 수 있다.
b. 한 예에서, 감축된 경계 샘플들은 현재 블록의 상단 이웃 행들 및/또는 좌측 이웃 열들에 위치한 원래의 복원된 샘플들로부터 생성될 수 있다.
i. 예를 들어, N개의 감축된 경계 샘플이 현재 블록에 (주어진 순서로) 이웃한 M개의 원래의 복원된 샘플로부터 생성될 필요가 있다고 가정하면, 각각의 K개의 연속적인 원래의 복원된 이웃 샘플들이 하나의 출력 감축된 경계 샘플을 얻는데 이용될 수 있다.
1) 한 예에서, K = M/N.
a. 대안으로서, K= (M+N/2)/N.
2) 한 예에서, 하나의 출력 감축된 경계 샘플은 K개의 연속적인 원래의 복원된 이웃 샘플들의 평균으로서 도출될 수 있다.
3) 한 예에서, 하나의 출력 감축된 경계 샘플은 K개의 연속적인 원래의 복원된 이웃 샘플들의 가중 평균으로서 도출될 수 있다.
c. 한 예에서, 좌측 감축된 경계 샘플들은 현재 블록의 좌측 이웃 열들에 위치한 원래의 복원된 샘플들로부터 생성될 수 있는 반면, 상단 감축된 샘플들은 현재 블록의 상단 이웃 행들에 위치한 원래의 복원된 샘플들로부터 생성될 수 있다.
i. 예를 들어, 도 17에 도시된 바와 같이, 각각 boundaryleft 및 boundarytop으로 표시된 좌측 경계 및 상단 경계의 4개의 감축된 경계 샘플들은, 현재 16x16 ALWIP 블록의 좌측/상단 원래의 이웃 복원된 샘플(도면에서 16x16 블록에 이웃하는 회색 격자들로 마킹됨)에 의해 생성된다.
d. 감축된 경계 샘플들을 생성하는 방법은 블록 치수들/코딩된 정보(예를 들어, 인트라 예측 모드, 변환 유형 등)에 의존할 수 있다.
e. 한 예에서, 앞서 언급된 방법은 감축된 경계 샘플들을 생성할 것을 요구하는 모든 크기의 ALWIP 블록(예를 들어, 4x4 ALWIP 블록들로부터 64x64 ALWIP 블록들까지)에 적용될 수 있다
f. 한 예에서, 현재 블록의 좌측 이웃 열들 및 현재 블록의 상단 이웃 행들에 대한 감축된 경계 샘플들을 위한 생성 프로세스는 상이한 방식들로 수행될 수 있다.
i. 예를 들어, 8x4 ALWIP 블록의 경우, 미리정의된 감축된 경계 샘플들의 수는, 상단에 4개, 좌측에 4개이며, 8x4 ALWIP 블록의 상단 행에 위치한 8개의 이웃 샘플들을 이용하여 상단에 4개의 감축된 경계 샘플들을 생성하는 반면, 8x4 ALWIP 블록의 좌측 열에 위치한 4개의 이웃 샘플들은 좌측의 4개의 감축된 경계 샘플들로서 직접 복사된다.
42. 감축된 예측 블록으로부터 최종 예측 블록을 생성하기 위해 업샘플링 프로세스에서 (현재 블록에 이웃하거나 이웃하지 않는) 원래의 복원된 이웃 샘플들의 전부 또는 일부를 이용하는 것이 제안된다.
a. 한 예에서, 원래의 복원된 이웃 샘플들은 현재 블록의 상단 이웃 행들 및/또는 좌측 이웃 열들에 위치할 수 있다. 한 예가 도 18에 도시되어 있으며, 여기서 64x64 최종 예측 블록은, 8x8 감축된 예측 블록 + 64x64 블록의 원래의 복원된 이웃 샘플들로부터 업샘플링함으로써 생성된다.
i. 대안으로서, 더욱이, 감축된 경계 샘플은 감축된 예측 블록을 획득하기 위한 행렬 곱셈에만 이용될 수 있지만, 최종 예측 블록을 생성하기 위한 업샘플링 프로세스에서는 이용되지 않을 수 있다. 예를 들어, K개의 감축된 경계 샘플은 MxN 감축된 예측 블록을 생성하기 위해 ALWIP의 행렬 곱셈에 입력될 수 있지만, 업샘플링 프로세스에서 최종 예측 블록을 생성하는데 이용되지 않을 수 있다. 예를 들어 K=8이고 MxN은 8x8이다.
b. 한 예에서, 선택된 원래의 복원된 이웃 샘플들은 감축된 예측 블록으로부터 최종 예측 블록을 생성하기 위해 업샘플링 프로세스에서 이용될 수 있다.
i. 예를 들어, 현재 블록 좌측의 모든 원래의 복원된 이웃 샘플들이 선택될 수 있다.
ii. 예를 들어, 현재 블록 위의 모든 원래의 복원된 이웃 샘플들이 선택될 수 있다.
iii. 예를 들어, 현재 블록 좌측의 각각의 M개의 연속적인 원래의 복원된 이웃 샘플들 중 K개가 선택될 수 있다, 예를 들어 K = 1, M = 2/4/8.
1) 예를 들어, 각각의 M개의 연속적인 이웃들 중 마지막 K개의 원래의 복원된 이웃 샘플들이 선택될 수 있다.
2) 예를 들어, 각각의 M개의 연속적인 이웃들 중 처음 K개의 원래의 복원된 이웃 샘플들이 선택될 수 있다.
iv. 예를 들어, 현재 블록 위쪽의 각각의 M개의 연속적인 원래의 복원된 이웃 샘플들 중 K개가 선택될 수 있다, 예를 들어 K = 1, M = 2/4/8.
1) 예를 들어, 각각의 M개의 연속적인 이웃들 중 마지막 K개의 원래의 복원된 이웃 샘플들이 선택될 수 있다.
2) 예를 들어, 각각의 M개의 연속적인 이웃들 중 처음 K개의 원래의 복원된 이웃 샘플들이 선택될 수 있다.
v. 예를 들어, 선택은 블록 폭 및 높이에 의존할 수 있다. blkW 및 blkH가 각각 ALWIP 블록의 폭과 높이를 나타낸다고 가정한다. 그리고 (blkX, blkY)는 블록의 상단 좌측 위치를 나타낸다.
1) 예를 들어, blkW가 blkH보다 크거나 같으면, 현재 블록 좌측의 모든 원래의 복원된 이웃 샘플들이 선택될 수 있거나, 및/또는 M으로 표시된, 현재 블록 위쪽의 선택된 원래의 복원된 이웃 샘플들의 수는 blkW에 의존할 수 있다.
a. 한 예에서, 현재 블록 위쪽의 k번째 선택된 샘플들은 위치(blkX+(k+1)*blkW/M-1, blkY-1)에 있을 수 있고, 여기서, k는 0에서 M-1이다.
b. 예를 들어, blkW <= 8이면, M = 4이다.
c. 예를 들어, blkW > 8이면, M = 8이다.
d. 대안으로서, blkW와 blkH 사이의 관계에 상관없이, 현재 블록 좌측의 모든 원래의 복원된 이웃 샘플이 선택될 수 있거나, 및/또는 현재 블록 위쪽의 M개의 원래의 복원된 이웃 샘플들이 선택될 수 있고, 여기서 M은 상기 규칙들에 의해 결정된다.
2) 예를 들어, blkW가 blkH보다 작은 경우, 현재 블록 위쪽의 모든 원래의 복원된 이웃 샘플들이 선택될 수 있거나, 및/또는 M으로 표시된, 현재 블록 좌측의 선택된 원래의 복원된 이웃 샘플들의 수는 blkH에 의존할 수 있다.
a. 한 예에서, 현재 블록 좌측의 k번째 선택된 샘플들은 위치 (blkX-1, blkY+(k+1)*blkH/M-1)에 있을 수 있고, 여기서 k는 0에서 M-1이다.
b. 예를 들어, blkH <=8이면 M = 4이다.
c. 예를 들어, blkH > 8이면 M = 8이다.
d. 대안으로서, blkW와 blkH 사이의 관계에 상관없이, 현재 블록 위쪽의 모든 원래의 복원된 이웃 샘플이 선택될 수 있거나, 및/또는 현재 블록 좌측의 M개의 원래의 복원된 이웃 샘플들이 선택될 수 있고, 여기서 M은 상기 규칙들에 의해 결정된다.
c. 한 예에서, ALWIP 업샘플링에 이용되는 이웃 샘플들은 최종 예측 블록을 생성하는데 이용되기 전에 추가로 수정될 수 있다(예를 들어, 필터링될 수 있다, 여기서 필터는 N=2 또는 3 등의 N-탭 필터일 수 있음).
i. 한 예에서, 이웃 샘플들 필터링 프로세스는 ALWIP 모드에 따라 적응적으로 적용될 수 있다.
d. 최종 예측 블록을 생성하는 방법(예를 들어, 선형 보간)은 블록 치수/코딩된 정보(예를 들어, 인트라 예측 방향, 변환 유형 등)에 의존할 수 있다.
43. 한 예에서, 샘플들은 ALWIP의 업샘플링 프로세스의 상이한 필터링 스테이지들에서 상이한 정밀도들을 가질 수 있다. "샘플들"은 업샘플링 프로세스 전후의 예측 샘플들 또는 임의의 중간 샘플들을 지칭할 수 있다.
a. 한 예에서, 샘플들은 제1 필터링 스테이지에서 수평으로 제1 치수를 따라 업샘플링되고; 그 다음, 샘플들은 ALWIP의 업샘플링 프로세스의 제2 필터링 스테이지에서 수직으로 제2 치수를 따라 업샘플링된다.
i. 대안으로서, 샘플들은 제1 필터링 스테이지에서 수직으로 제1 치수를 따라 업샘플링되고; 그 다음, 샘플들은 ALWIP의 업샘플링 프로세스의 제2 필터링 스테이지에서 제2 치수를 따라 수평으로 업샘플링된다.
b. 한 예에서, 제1 필터링 스테이지에서 우측 시프팅 또는 분할이 없는 출력 업샘플링 결과들은 제2 필터링 스테이지에 대한 입력 샘플로서 이용될 수 있다.
i. 한 예에서, 제2 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 Shift1만큼 우측 시프트되거나 Dem1로 나누어질 수 있다.
ii. 한 예에서, 제1 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 Shift2만큼 우측 시프트되거나 Dem2로 나누어질 수 있다.
1) 한 예에서, Shift1=2 ×Shift2; Dem1 = Dem2 × Dem2.
iii. 한 예에서, 제2 필터링 스테이지에 입력되지만 제1 필터링 스테이지에서 출력된 업샘플링 결과들이 아닌 샘플들은, 제2 필터링 스테이지에 입력되기 전에 Shift3만큼 좌측 시프트되거나 Dem3으로 곱해질 수 있다.
1) 한 예에서, Shift3 = Shift1; Dem3 = Dem2.
c. 한 예에서, 제1 필터링 스테이지의 출력 업샘플링 결과들은 제2 필터링 스테이지에 대한 입력 샘플들로서 이용되기 전에 Shift1만큼 우측 시프트되거나 Dem1로 나누어질 수 있다.
i. 한 예에서, 제2 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 Shift2만큼 우측으로 시프트되거나 Dem2로 나누어질 수 있고, 여기서 Shift2는 Shift1과 같지 않을 수 있다, 예를 들어 Shift2 > Shift1; Dem2는 Dem1과 같지 않을 수 있다, 예를 들어, Dem2 > Dem1.
ii. 한 예에서, 제1 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 Shift3만큼 우측으로 시프트되거나 Dem3으로 나누어질 수 있고, 여기서 Shift3은 Shift1과 같을 수 있다; Dem3은 Dem1과 같지 않을 수 있다.
1) 한 예에서, Shift3=Shift1+Shift2.
iii. 한 예에서, 제2 필터링 스테이지에 입력되지만 제1 필터링 스테이지에서 출력된 업샘플링 결과들이 아닌 샘플들은 제2 필터링 스테이지에 입력되기 전에 좌측 시프트되거나 인자에 의해 곱해질 수 있다.
d. 한 예에서, 제1 필터링 스테이지의 출력 업샘플링 결과들은 제2 필터링 스테이지에 대한 입력 샘플들로서 이용되기 전에 Shift1만큼 좌측 시프트되거나 Dem1에 의해 곱해질 수 있다.
i. 한 예에서, 제2 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 우측 시프트되거나 인자에 의해 나누어질 수 있다.
ii. 한 예에서, 제1 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 우측 시프트되거나 인자에 의해 나누어질 수 있다.
iii. 한 예에서, 제2 필터링 스테이지에 입력되지만 제1 필터링 스테이지에서 출력된 업샘플링 결과들이 아닌 샘플들은 제2 필터링 스테이지에 입력되기 전에 Shift2만큼 좌측 시프트되거나 Dem2에 의해 곱해질 수 있고, 여기서 Shift2는 Shift1과 같지 않을 수 있다, 예를 들어, Shift2 > Shift1; Dem1은 Dem2와 같지 않을 수 있다, 예를 들어, Dem2 > Dem1.
e. 한 예에서, 제1 필터링 스테이지에 입력되된 샘플들은 제1 필터링 스테이지에 대한 입력 샘플들로서 이용되기 전에 Shift1만큼 좌측 시프트되거나 Dem1에 의해 곱해질 수 있다.
i. 한 예에서, 제2 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 우측 시프트되거나 인자에 의해 나누어질 수 있다.
ii. 한 예에서, 제1 필터링 스테이지의 출력 업샘플링 필터링 결과들은 최종 업샘플링된 결과들을 도출하기 위해 우측 시프트되거나 인자에 의해 나누어질 수 있다.
iii. 한 예에서, 제2 필터링 스테이지에 입력되지만 제1 필터링 스테이지에서 출력된 업샘플링 결과들이 아닌 샘플들은 제2 필터링 스테이지에 입력되기 전에 Shift2만큼 좌측 시프트되거나 Dem2에 의해 곱해질 수 있고, 여기서 Shift2는 Shift1과 같지 않을 수 있다, 예를 들어, Shift2 > Shift1; Dem2는 Dem1과 같지 않을 수 있다, 예를 들어, Dem2 > Dem1.
44. ALWIP에서의 업샘플링은 수직 업샘플링과 수평 업샘플링이 양쪽 모두가 요구되는 경우 고정된 순서로 수행될 수 있다는 것이 제안된다.
a. 한 예에서, 수평 업샘플링이 먼저 수행되고, 수직 업샘플링이 2번째로 수행될 수 있다.
b. 한 예에서, 수직 업샘플링이 먼저 수행되고, 수평 업샘플링이 2번째로 수행될 수 있다.
45. 한 예에서, 업샘플링 전의 ALWIP에서의 예측 샘플들은 블록 치수들에 따라 전치될 수 있다.
a. 한 예에서, W*H 블록이 먼저 H*W 블록으로 전치될 수 있고, 그 다음 업샘플링이 적용될 수 있다.
b. 대안으로서, 또한, 업샘플링 프로세스 후, 업샘플링된 샘플들은 역전된 방식으로 전치될 수 있다.
46. ALWIP에서 업샘플링을 위해 쌍선형 필터 대신에 대안적인 보간 필터들이 이용될 수 있다는 것이 제안된다.
a. 한 예에서, (4-tap, 6-tap, 8-tap 등) 가우시안 필터가 이용될 수 있다.
b. 한 예에서, (4-tap, 6-tap, 8-tap 등) 큐빅 필터가 이용될 수 있다.
c. 한 예에서, 크로마 샘플들에 대한 모션 보상에 이용되는 보간 필터들이 이용될 수 있다.
d. 한 예에서, 루마 샘플들에 대한 모션 보상에 이용되는 보간 필터들(6-탭, 8-탭 등)이 이용될 수 있다.
e. 어떤 보간 필터가 이용되는지는 블록 치수에 의존할 수 있다.
f. 어떤 보간 필터가 이용되는지는 업샘플링 비율에 의존할 수 있다.
g. 어떤 보간 필터가 이용되는지는 ALWIP의 예측 모드에 의존할 수 있다.
h. 어떤 보간 필터가 이용되는지는 얼마나 많은 샘플이 업샘플링에 이용가능한지에 의존할 수 있다.
i. 예를 들어, 하나의 행(또는 열)에 4개의 가용 샘플이 있는 경우(이웃 기준 샘플들은 제외), 4탭 보간 필터가 이용될 수 있다.
ii. 예를 들어, 하나의 행(또는 열)에 8개의 가용 샘플이 있는 경우(이웃 기준 샘플들은 제외), 4탭 또는 8탭 보간 필터가 이용될 수 있다.
47. ALWIP 모드로 코딩된 블록에 대한 MPM들은 이웃 블록들과는 독립적으로 구성될 수 있는 것이 제안된다.
a. 한 예에서, ALWIP 모드로 코딩된 블록에 대한 MPM은 미리정의된다.
i. 예를 들어, 미리정의된 MPM들은 모든 블록 치수에 대해 {M0, M1, M2}이다. 예를 들어, M0=0, M1=1 및 M2=2.
ii. 예를 들어, ALWIP 모드로 코딩된 블록에 대해 미리정의된 MPM들은 블록 치수들에 의존할 수 있다. 예를 들어, ALWIP 모드로 코딩된 블록에 대해 미리정의된 MPM들은 섹션 2.2.1.5에 정의된 sizeId에 의존할 수 있다.
1) 예를 들어, sizeId가 0일 때 MPM들은 순서대로 {17, 34, 5}이다.
2) 예를 들어, sizeId가 1일 때 MPM들은 순서대로 {0, 7, 16}이다.
3) 예를 들어, sizeId가 2일 때 MPM들은 순서대로 {1, 4, 6}이다.
iii. 예를 들어, ALWIP 모드로 코딩된 블록에 대해 미리정의된 MPM들은 처음 K개 행렬들과 연관되도록 고정된다.
1) 한 예에서, K = 3이다.
2) 한 예에서, K는 블록 치수들에 의존할 수 있다.
b. 일 예에서, 모든 종류들의 폭들 및 높이들을 갖는 블록들에 대해 고정된 수(예를 들면, 11 개)의 MIP 모드들이 있지만, MPM들이 상이한 sizeID를 갖는 블록들에 대해 상이할 수 있다.
i. 예를 들어, sizeId가 0과 동일할 때 MPM들은 순서대로 {10, 5, 1}이다.
ii. 예를 들어, sizeId가 1과 동일할 때 MPM들은 순서대로 {9, 7, 1}이다.
iii. 예를 들어, sizeId가 2과 동일할 때 MPM들은 순서대로 {6, 1, 8}이다.
c. 일 예에서, 모든 종류들의 폭들 및 높이들을 갖는 블록들에 대해 고정된 수(예를 들어, 11 개)의 MIP 모드들이 있으며, MPM들이 모든 종류들의 폭들 및 높이들을 갖는 블록에 대해 동일하다.
48. 블록 치수들에 관계없이 ALWIP에 이용되는 행렬들의 수를 단일화할 것이 제안된다.
a. 한 예에서, S개의 행렬이 모든 블록 치수에 대해 저장될 수 있다. 예를 들어, S=11, S=19, 또는 S=35.
b. 한 예에서, ALWIP 모드 시그널링은 모든 블록 치수에 대해 동일한 방식으로 이루어진다.
c. 대안으로서, 또한, 행렬들은 상이한 블록 치수에 대해 상이할 수 있다.
49. 크로마 블록의 2차 변환(예를 들면, LFNST)의 코딩/파싱 부가 정보가 대응하는 루마 MIP 정보와 분리될 수 있는 것이 제안된다. 즉, 대응하는 루마 블록이 MIP 모드를 사용하여 코딩되더라도, 부가 정보가 여전히 시그널링/파싱될 수 있다.
a. 대안적으로, 게다가, 크로마 블록에 대해 2차 변환을 적용할지 여부는 대응하는 루마 MIP 정보와 분리될 수 있다.
i. 일 예에서, 대응하는 루마 블록이 MIP 모드를 사용하여 코딩되더라도, 2차 변환이 여전히 적용될 수 있다.
b. 일 예에서, 크로마 블록은 이중 트리 또는 로컬 이중 트리 구조 내에 있을 수 있다.
c. 일 예에서, 이중 트리 크로마의 경우에, LFNST를 적용할지 여부는 대응하는 루마 블록이 MIP 코딩되어 있는지 여부와 분리될 수 있다.
i. 대안적으로, 게다가, 이중 트리 크로마의 경우에, LFNST를 적용할지 여부는 블록이 MxN(예컨대, M=N=16)보다 작지 않은지 여부와 분리될 수 있다.
d. 일 예에서, 이중 트리 크로마의 경우에, LFNST를 적용할지 여부는 현재 크로마 블록이 MIP에 의해 코딩되어 있는지 여부와 분리될 수 있다.
i. 대안적으로, 게다가, MIP는 크로마 블록에 대해 항상 디스에이블될 수 있다.
ii. 대안적으로, 이중 트리 크로마의 경우에, LFNST를 적용할지 여부는 현재 크로마 블록이 MIP에 의해 코딩되어 있는지 여부와 분리될 수 있다.
e. 일 예에서, 이중 트리 크로마의 경우에, LFNST 인덱스(예컨대, lfnst_idx)의 시그널링은 MIP 플래그(예를 들면, intra_mip_flag)와 분리될 수 있다. 대안적으로, 단일 트리 또는 이중 트리 루마의 경우에, LFNST를 적용할지 여부는 대응하는 루마 블록이 MIP에 의해 코딩되어 있는지 여부를 조건으로 할 수 있다.
i. 일 예에서, 단일 트리 또는 이중 트리 루마(예를 들면, treeType이 DUAL_TREE_CHROMA와 동일하지 않음)의 경우에, LFNST 인덱스(예컨대, lfnst_idx)의 시그널링은 대응하는 MIP 코딩된 루마 블록의 치수들을 조건으로 할 수 있다.
1) 예를 들어, treeType이 DUAL_TREE_CHROMA와 동일하지 않고, 대응하는 루마 블록이 MIP 모드에 의해 코딩되어 있으며(intra_mip_flag가 참이며), 대응하는 루마 블록의 min(width, height)가 16보다 크거나 같은 경우에만, LFNST 인덱스(예컨대, lfnst_idx)가 시그널링될 수 있다.
50. 트리 유형의 조건 검사에 따라 2차 변환의 부가 정보(예를 들면, lfnst_idx)를 시그널링하는 것이 제안된다.
a. 일 예에서, 부가 정보를 시그널링할지 여부는 트리 유형이 크로마 로컬 이중 트리 경우를 포함할 수 있는 크로마 이중 트리인지(예를 들면, treeType = = DUAL_TREE_CHROMA) 여부에 의존할 수 있다.
i. 대안적으로, 부가 정보를 시그널링할지 여부는 트리 유형이 크로마 로컬 이중 트리 경우를 제외한 크로마 이중 트리인지 여부에 의존할 수 있다.
b. 조건 A는 "MIP가 적용되지 않고, LFNST에 의해 고려되는 블록 폭 및 블록 높이 양쪽 모두가 16과 같은 정수 N보다 작지 않다"로서 정의된다. 예를 들어, 조건 A는 JVET-P2001-v9에서 ( !intra_mip_flag[ x0 ][ y0 ] | | Min( lfnstWidth, lfnstHeight ) >= 16 )으로서 기술될 수 있다. 조건 B는 "현재 블록이 이중 트리(또는 로컬 이중 트리) 구조 내의 크로마 블록이다"로서 정의된다. 예를 들어, 조건 B는 ( treeType = = DUAL_TREE_CHROMA )로서 기술될 수 있다. 조건 C는 "현재 블록이 이중 트리(또는 로컬 이중 트리) 구조 내의 루마 블록이다"로서 정의된다. 예를 들어, 조건 C는 ( treeType = = DUAL_TREE_LUMA )로서 기술될 수 있다.
i. LFNST가 사용될 수 있는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 B에 의존할 수 있는 것이 제안된다.
1) 예를 들어, 조건 B가 TRUE일 때, 조건 A는 무시된다. 그렇지 않은 경우(조건 B가 FALSE인 경우), 조건 A가 FALSE이면 LFNST는 사용되지 않는다.
ii. LFNST에 관한 모든 또는 부분 정보가 시그널링될 수 있는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 B에 의존할 수 있는 것이 제안된다.
1) 예를 들어, 조건 B가 TRUE일 때, 조건 A는 무시된다. 그렇지 않은 경우(조건 B가 FALSE인 경우), 조건 A가 FALSE이면 LFNST에 관한 모든 또는 부분 정보가 시그널링되지 않는다.
iii. LFNST가 사용될 수 있는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 C에 의존할 수 있는 것이 제안된다.
1) 예를 들어, 조건 C가 FALSE일 때, 조건 A는 무시된다. 그렇지 않은 경우(조건 B가 FALSE인 경우), 조건 A가 FALSE이면 LFNST는 사용되지 않는다.
iv. LFNST에 관한 모든 또는 부분 정보가 시그널링될 수 있는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 C에 의존할 수 있는 것이 제안된다.
1) 예를 들어, 조건 C가 FALSE일 때, 조건 A는 무시된다. 그렇지 않은 경우(조건 B가 FALSE인 경우), 조건 A가 FALSE이면 LFNST에 관한 모든 또는 부분 정보가 시그널링되지 않는다.
v. 일 예에서, 단일 트리 경우에, 조건 A는 루마 성분에 LFNST를 적용할지 여부만을 제어할 수 있다.
1) 일 예에서, 크로마 성분(들)에 LFNST를 적용하기 위한 조건들이 충족되지만 조건 A가 FALSE인 경우, LFNST가 루마 성분에는 적용되지 않지만 크로마 성분(들)에는 적용될 수 있다.
a. 이 경우에, 크로마 성분(들)에 LFNST를 적용할지 여부 및/또는 어떻게 적용할지를 제어하기 위해 LFNST에 관한 모든 또는 부분 정보가 시그널링된다.
51. 2차 변환의 부가 정보(예를 들면, lfnst_idx)의 시그널링/파싱은 색상 성분들에 따라 카테고리화될 수 있다.
a. 일 예에서, 2차 변환의 부가 정보(예를 들면, lfnst_idx)의 개별 부분이 각각의 색상 성분들(예컨대, Y, Cb Cr)에 대해 시그널링/파싱될 수 있다. 예를 들어, lfnst_idx[cIdx]는 상이한 cIdx에 대해 상이할 수 있으며, 여기서 cIdx는 색상 성분 Y, Cb 및 Cr에 대해, 제각기, 0, 1 및 2일 수 있다.
i. 일 예에서, 크로마 성분들(예컨대, Cb 및 Cr)은 2차 변환의 동일한 부가 정보를 공유할 수 있다.
b. 일 예에서, 2차 변환의 부가 정보(예를 들면, lfnst_idx)의 개별 부분이 루마 및 크로마 성분들에 대해 시그널링/파싱될 수 있다. 예를 들어, lfnst_idx[cIdx]는 상이한 cIdx에 대해 상이할 수 있고, 여기서 cIdx는 루마 및 크로마 성분들에 대해, 제각기, 0 및 1일 수 있다.
52. MIP의 부가 정보(예를 들면, intra_mip_flag)의 시그널링/파싱은 색상 성분들에 따라 카테고리화될 수 있다.
a. 일 예에서, MIP의 부가 정보(예를 들면, intra_mip_flag)의 개별 부분이 각각의 색상 성분들(예컨대, Y, Cb 및 Cr)에 대해 시그널링/파싱될 수 있다. 예를 들어, intra_mip_flag[cIdx]는 상이한 cIdx에 대해 상이할 수 있으며, 여기서 cIdx는 색상 성분 Y, Cb 및 Cr에 대해, 제각기, 0, 1 및 2일 수 있다.
i. 일 예에서, 크로마 성분들(예컨대, Cb 및 Cr)은 MIP의 동일한 부가 정보를 공유할 수 있다.
b. 일 예에서, MIP의 부가 정보(예를 들면, intra_mip_flag)의 개별 부분이 루마 및 크로마 성분들에 대해 시그널링/파싱될 수 있다. 예를 들어, intra_mip_flag[cIdx]는 상이한 cIdx에 대해 상이할 수 있고, 여기서 cIdx는 루마 및 크로마 성분들에 대해, 제각기, 0 및 1일 수 있다.
5. 실시예들
새로 추가된 부분들은 굵은 기울임꼴 로 강조 표시되고, 삭제된 부분들은 도면들에서 취소선 으로 또는 이 특허 문서에서 굵은 밑줄친 텍스트 로 강조 표시되어 있다.
5.1 한 예
ALWIP 플래그를 코딩하는 데 세 가지 콘텍스트가 사용된다. 도 25는 콘텍스트 코딩된 빈들을 이용한 신택스 요소들에 대한 ctxInc의 할당을 포함하는 업데이트된 테이블을 도시한다.
5.2 한 예
ALWIP 플래그를 코딩하는 데 하나의 고정된 콘텍스트가 사용된다. 도 26은 콘텍스트 코딩된 빈들을 이용한 신택스 요소들에 대한 ctxInc의 할당을 포함하는 다른 업데이트된 테이블을 도시한다.
5.3 한 예
경계 감축 프로세스를 한-단계로 수행한다.
아래 실시예들은 채택된 JVET-N0220-proposal-test-CE3-4.1_v2에 기초한다.
8.4.4.2.X1 어파인 선형 가중된 인트라 샘플 예측
8.4.4.2.X3 경계 감축 프로세스의 명세
이 프로세스에 대한 입력들은 다음과 같다:
- 변환 블록 크기를 명시하는 변수 nTbX,
- x = 0..nTbX-1인 기준 샘플들 refX[ x ],
- 다운샘플링된 경계 크기를 명시하는 변수 boundarySize,
- 업샘플링에 대해 중간 경계 샘플들이 요구되는지를 명시하는 플래그 needUpsBdryX,
- 업샘플링에 대한 경계 크기를 명시하는 변수 upsBdrySize.
이 프로세스의 출력들은 x = 0..boundarySize-1인 감축된 경계 샘플들 redX[ x ] 및 x = 0..upsBdrySize-1인 업샘플링 경계 샘플들 upsBdryX[ x ]이다.
x = 0..upsBdrySize-1인 업샘플링 경계 샘플들 upsBdryX[ x ]는 다음과 같이 도출된다:
- needUpsBdryX가 TRUE이고 upsBdrySize가 nTbX보다 작다면, 다음이 적용된다:
uDwn = nTbX / upsBdrySize
(8-X30)
- 그렇지 않으면(upsBdrySize가 nTbX와 같음), upsBdryX[ x ]는 refX[ x ]로 설정된다.
x = 0..boundarySize-1인 감축된 경계 샘플들 redX[ x ]는 다음과 같이 도출된다:
- boundarySize가 upsBdrySize nTbX보다 작다면, 다음이 적용된다:
방정식 8-X33에서 이중 대괄호들 안에 표시된 용어 "upsBdryX"가 삭제된다.
- 그렇지 않으면(boundarySize가
upsBdrySize nTbX와 동일) redX[ x ]가
로 설정된다.
5.4 한 예
ALWIP의 업샘플링 프로세스에서 상이한 필터링 스테이지들에서 상이한 정밀도들로 예측 샘플들을 도출한다.
아래 실시예들은 채택된 JVET-N0217-proposal-test-CE3-4.1_v2에 기초한다.
8.4.4.2.X4 예측 업샘플링 프로세스의 명세
이 프로세스에 대한 입력들은 다음과 같다:
- 입력 블록 폭을 명시하는 변수 predW,
- 입력 블록 높이를 명시하는 변수 predH,
- x = 0..predW-1, y = 0..predH-1인 어파인 선형 가중된 샘플들 predLwip[ x ][ y ],
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH,
- 업샘플링 경계 폭을 명시하는 변수 upsBdryW,
- 업샘플링 경계 높이를 명시하는 변수 upsBdryH,
- x = 0..upsBdryW - 1인 상단 업샘플링 경계 샘플들 upsBdryT[ x ],
- x = 0..upsBdryH-1인 좌측 업샘플링 경계 샘플 upsBdryL[ x ].
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
저밀도 예측된 샘플들 predSamples[ m ][ n ]는 다음과 같이 x = 0..predW-1, y = 0..predH-1인 predLwip[ x ][ y ]로부터 도출된다:
upHor = nTbW / predW
(8-X34)
upVer = nTbH / predH
(8-X35)
x = 0..upsBdryW-1인 상단 경계 샘플들 upsBdryT[ x ]는 다음과 같이 predSamples[ m ][ -1 ]에 할당된다:
y = 0..upsBdryH-1인 좌측 경계 샘플들 upsBdryL[ y ]은 다음과 같이 predSamples[ -1 ][ n ]에 할당된다:
x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 도출된다:
- nTbH가 nTbW보다 크다면, 다음과 같은 순서화된 단계들이 적용된다:
1. upHor가 1보다 크면, m = 0..predW-1, n = 1..predH인 모든 저밀도 위치들 ( xHor, yHor ) = ( m * upHor - 1, n * upVer - 1 )에 대한 수평 업샘플링이 다음과 같이 dX = 1..upHor-1와 함께 적용된다:
2. m = 0..nTbW-1, n = 0..predH-1인 모든 저밀도 위치들 ( xVer, yVer ) = ( m, n * upVer-1 )에 대한 수직 업샘플링은 다음과 같이 dY = 1..upVer-1과 함께 적용된다:
yVer가 -1이면 predSamples[ xVer ][ yVer ]= predSamples[ xVer ][ yVer ]<< log2(upHor)
- 그렇지 않으면, 다음과 같은 순서화된 단계들이 적용된다:
1. upVer가 1보다 크면, m = 1..predW, n = 0..predH-1인 모든 저밀도 위치들 ( xVer, yVer ) = ( m * upHor - 1, n * upVer - 1 )에 대한 수직 업샘플링이 (8-X40) (8-X41)에 명시된 대로 dY = 1..upVer-1과 함께 적용된다.
2. m = 0..predW-1, n = 0..nTbH-1인 모든 저밀도 위치들 ( xHor, yHor ) = ( m * upHor-1, n )에 대한 수평 업샘플링은 (8-X39)에 명시된 대로 dX = 1..upHor-1과 함께 다음과 같이 적용된다.
5.5 글머리 기호 40에 대응하는 예들
블록 치수들이 W×H라고 가정한다. x= Sx, Sx+Kx, Sx+2Kx, Sx+3Kx, …, y=Sy, Sy+Ky, Sy+2Ky, Sy+3Ky…인 샘플들 P(x, y)가 업샘플링 프로세스에 입력되어 x=0, 1, 2… W-1, y=0, 1, 2, … H-1인 업샘플링된 샘플들 S(x, y)를 도출한다. Kx 및 Ky는 각각 수평 및 수직 방향을 따른 단계 크기들이다. (Sx, Sy)는 시작 위치이다.
제1 스테이지에서 1-D 업샘플링이 수평으로 수행되고 제2 스테이지에서 1-D 업샘플링이 수직으로 수행된다고 가정한다.
한 예에서, 우측 시프팅이 없는 제1 스테이지의 출력 결과들은 다음과 같이 도출될 수 있다
S’( Sx+Kx-1, Sy) = F1*P(Sx, Sy)+F2*P(Sx+Kx, Sy).
S’( Sx+Kx-1, Sy+Ky) = F1*P(Sx, Sy+Ky)+F2*P(Sx+Kx, Sy+Ky).
F1, F2는 2-탭 필터에 대한 계수들이고 F1+F2 = 2N이다.
그 다음 제2 스테이지에서의 출력 결과는 다음과 같이 도출될 수 있다
S’( Sx+Kx-1, Sy+1) = F3* S’( Sx+Kx-1, Sy)+F4* S’( Sx+Kx-1, Sy+Ky).
F3, F4는 2탭 필터에 대한 계수들이며 F3+F4 = 2N이다.
그 다음, 최종 업샘플링된 샘플 값은 다음과 같이 도출될 수 있다:
S( Sx+Kx-1, Sy+1) = Shift( S’( Sx+Kx-1, Sy+1), 2N);
S( Sx+Kx-1, Sy) = Shift(S’( Sx+Kx-1, Sy), N);
S( Sx+Kx-1, Sy+Ky) = Shift(S’( Sx+Kx-1, Sy+Ky), N);
5.6 한 예
한 스테이지에서 감축된 경계 샘플들을 도출하고 업샘플링을 위한 기준 버퍼를 생성한다.
아래 실시예들은 채택된 JVET-N0217-proposal-test-CE3-4.1_v2에 기초한다.
8.4.4.2.X1 어파인 선형 가중된 인트라 샘플 예측
8.4.
4.2.X3
경계 감축 프로세스의 명세
…
x = 0..upsBdrySize-1인 업샘플링 경계 샘플들 upsBdryX[ x ]는 다음과 같이 도출된다:
- needUpsBdryX가 TRUE이고 upsBdrySize가 nTbX보다 작다면, 다음이 적용된다:
uDwn = nTbX / upsBdrySize
(8-X30)
(8-X31)
- 그렇지 않으면(upsBdrySize가 nTbX와 같음), upsBdryX[ x ]는 refX[ x ]로 설정된다.
x = 0..boundarySize-1인 감축된 경계 샘플들 redX[ x ]는 다음과 같이 도출된다:
- boundarySize가 upsBdrySize nTbX보다 작다면, 다음이 적용된다:
bDwn = upsBdrySize nTbX / boundarySize (8-X32)
방정식 8-X33에서 이중 대괄호들 안에 표시된 용어 "upsBdryX"가 삭제된다.
- 그렇지 않으면(boundarySize가
와 같음) redX[ x ]가
로 설정된다.
5.7 한 예
ALWIP(일명, 행렬 기반 인트라 예측 또는 MIP)의 고정 차수 업샘플링에 대한 예들이 여기에 제시된다. 텍스트는 JVET-N1001-v6에 기초한다.
5.7.1 먼저 수평
업샘플링
, 그 다음, 수직
업샘플링
8.4.5.2.1 행렬 기반
인트라
샘플 예측
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 상단 좌측 샘플에 관해 현재 변환 블록의 상단 좌측 샘플을 명시하는 샘플 위치 (xTbCmp, yTbCmp),
- 인트라 예측 모드를 명시하는 변수 predModeIntra,
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH.
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
변수들 numModes, boundarySize, predW, predH 및 predC는 표 8-7에 명시된 MipSizeId[ xTbCmp ][ yTbCmp ]를 이용하여 도출된다.
표 8-7 ― 예측
모드들
numModes
, 경계 크기
boundarySize
, 및
MipSizeId를
이용한 예측 크기들
predW
,
predH
및
predC의
수의 명세
플래그 isTransposed는 다음과 같이 도출된다:
isTransposed = ( predModeIntra > ( numModes / 2 ) ) ? TRUE : FALSE
(8-56)
플래그들 needUpsBdryHor 및 needUpsBdryVer는 다음과 같이 도출된다:
needUpsBdryHor = ( nTbW > predW ) ? TRUE : FALSE
(8-57)
needUpsBdryVer = ( nTbH > predH ) ? TRUE : FALSE
(8-58)
변수들 upsBdryW 및 upsBdryH는 다음과 같이 도출된다:
upsBdryW
= (
nTbH
>
nTbW
) ?
nTbW
:
predW (
8-59)
upsBdryH
= (
nTbH
>
nTbW
) ?
predH
:
nTbH (
8-60)
upsBdryW
=
nTbW
(
8-59)
upsBdryH
=
predH
(
8-60)
변수들 mipW 및 mipH는 다음과 같이 도출된다:
mipW = isTransposed ? predH : predW
(8-61)
mipH = isTransposed ? predW : predH
(8-62)
x = 0..nTbW-1인 기준 샘플들 refT[ x ] 및 y = 0..nTbH-1인 refL[ y ]의 생성의 경우, 조항 8.4.5.2.2에 명시된 MIP 기준 샘플 도출 프로세스는, 샘플 위치(xTbCmp, yTbCmp), 변환 블록 폭 nTbW, 변환 블록 높이 nTbH를 입력들로서 취하여 기동되고, 상단 및 좌측 기준 샘플들 x = 0..nTbW - 1인 refT[x] 및 y = 0..nTbH - 1인 refL[ y ]를 각각 출력들로서 취한다.
x = 0..2 * boundarySize-1인 경계 샘플들 p[ x ]의 생성의 경우, 다음이 적용된다:
- 조항 8.4.5.2.3에 명시된 MIP 경계 다운샘플링 프로세스는, 상단 기준 샘플들에 대해, 블록 크기 nTbW, x = 0..nTbW - 1인 기준 샘플들 refT[ x ], 경계 크기 boundarySize, 업샘플링 경계 플래그 needUpsBdryHor, 및 업샘플링 경계 크기 upsBdryW를 입력들로서 취하여 기동되고, x = 0..boundarySize-1인 감축된 경계 샘플들 redT[ x ]와 x = 0..upsBdryW - 1인 업샘플링 경계 샘플들 upsBdryT[ x ]을 출력들로서 취한다.
- 조항 8.4.5.2.3에 명시된 MIP 경계 다운샘플링 프로세스는, 좌측 기준 샘플들에 대해, 블록 크기 nTbH, y = 0..nTbH - 1인 기준 샘플들 refL[ y ], 경계 크기 boundarySize, 업샘플링 경계 플래그 needUpsBdryVer, 및 업샘플링 경계 크기 upsBdryH를 입력들로서 취하여 기동되고, x= 0..boundarySize-1인 감축된 경계 샘플들 redL[ x ] 및 x = 0..upsBdryH-1인 업샘플링 경계 샘플들 upsBdryL[ x ]를 출력들로서 취한다.
- 감축된 상단 및 좌측 경계 샘플들 redT 및 redL은 다음과 같이 경계 샘플 어레이 p에 할당된다:
- isTransposed가 1이라면, p[ x ]는 x = 0..boundarySize-1인 redL[ x ]로 설정되고, p[ x + boundarySize ]는 x = 0..boundarySize - 1인 redT[ x ]로 설정된다.
- 그렇지 않으면, p[ x ]는 x = 0..boundarySize-1인 redT[ x ]로 설정되고 p[ x + boundarySize ]는 x = 0..boundarySize-1인 redL[ x ]로 설정된다.
predModeIntra에 따른 인트라 샘플 예측 프로세스의 경우, 다음과 같은 순서화된 단계들이 적용된다:
3. x = 0..mipW-1, y = 0..mipH-1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ]는 다음과 같이 도출된다:
- 변수 modeId는 다음과 같이 도출된다:
modeId = predModeIntra - ( isTransposed ? numModes / 2 : 0 )
(8-63)
- x = 0..2 * boundarySize-1, y = 0..predC * predC-1인 가중치 행렬 mWeight[ x ][ y ]는 표 8-XX에 명시된 MipSizeId[ xTbCmp ][ yTbCmp ] 및 modeId를 이용하여 도출된다[Ed. (BB): 10비트가 아닌 가중치 솔루션이 채택되면 가중치 행렬들을 추가]
- y=0..predC * predC-1인 편향 벡터 vBias[ y ]는 표 8-XX에 명시된 sizeId 및 modeId를 이용하여 도출된다[Ed. (BB): 10비트가 아닌 가중치 솔루션이 채택되면 편향 벡터들을 추가].
- 변수 sW는 표 8-8에 명시된 대로 MipSizeId[ xTbCmp ][ yTbCmp ] 및 modeId를 이용하여 도출된다.
- x = 0..mipW-1, y = 0..mipH-1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ]는 다음과 같이 도출된다:
oW = 1 << ( sW - 1 )
(8-64)
sB = BitDepthY - 1
(8-65)
incW = ( predC > mipW ) ? 2 : 1
(8-66)
incH = ( predC > mipH ) ? 2 : 1
(8-67)
4. isTransposed가 TRUE이면, x = 0..predH-1, y = 0..predW-1인 predH x predW 어레이 predMip[ x ][ y ]가 다음과 같이 전치된다:
predTemp[ y ][ x ] = predMip[ x ][ y ]
(8-69)
predMip =predTemp
(8-70)
5. x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 도출된다:
- needUpsBdryVer가 TRUE이거나 needUpsBdryHor가 TRUE이면, 조항 8.4.5.2.4에 명시된 MIP 예측 업샘플링 프로세스는, 입력 블록 폭 predW, 입력 블록 높이 predH, x = 0..predW - 1, y = 0..predH - 1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ], 변환 블록 폭 nTbW, 변환 블록 높이 nTbH, 업샘플링 경계 폭 upsBdryW, 업샘플링 경계 높이 upsBdryH, 상단 업샘플링 경계 샘플들 upsBdryT, 및 좌측 업샘플링 경계 샘플들 upsBdryL을 입력들로서 취하여 기동되고, 출력은 예측된 샘플 어레이 predSamples이다.
- 그렇지 않으면, x = 0..nTbW - 1, y = 0..nTbH - 1인 predSamples[ x ][ y ]는 predMip[ x ][ y ]로 설정된다.
6. x = 0..nTbW-1 = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 클리핑된다:
predSamples[ x ][ y ] = Clip1Y( predSamples[ x ][ y ] )
(8-71)
표 8-8 ―
MipSizeId
및
modeId에
의존하는 가중치
시프트
Sw 명세
8.4.5.2.4
MIP
예측
업샘플링
프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 입력 블록 폭을 명시하는 변수 predW,
- 입력 블록 높이를 명시하는 변수 predH,
-x = 0..predW - 1, y = 0..predH - 1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ],
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH,
- 업샘플링 경계 폭을 명시하는 변수 upsBdryW,
- 업샘플링 경계 높이를 명시하는 변수 upsBdryH,
- x = 0..upsBdryW - 1인 상단 업샘플링 경계 샘플들 upsBdryT[ x ],
- x = 0..upsBdryH-1인 좌측 업샘플링 경계 샘플들 upsBdryL[ x ].
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
저밀도 예측된 샘플들 predSamples[ m ][ n ]는 다음과 같이 x = 0..predW-1, y = 0..predH-1인 predMip[ x ][ y ]로부터 도출된다:
upHor = nTbW / predW
(8-78)
upVer = nTbH / predH
(8-79)
x = 0..upsBdryW-1인 상단 경계 샘플들 upsBdryT[ x ]는 다음과 같이 predSamples[ m ][ -1 ]에 할당된다:
y = 0..upsBdryH-1인 좌측 경계 샘플들 upsBdryL[ y ]은 다음과 같이 predSamples[ -1 ][ n ]에 할당된다:
x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 도출된다:
-
nTbH가
nTbW보다
크다면
, 다음과 같은 순서화된 단계들이 적용된다:
1. upHor가 1보다 크면, m = 0..predW-1, n = 1..predH인 모든 저밀도 위치들 ( xHor, yHor ) = ( m * upHor - 1, n * upVer - 1 )에 대한 수평 업샘플링이 다음과 같이 dX = 1..upHor-1와 함께 적용된다:
2. m = 0..nTbW-1, n = 0..predH-1인 모든 저밀도 위치들 ( xVer, yVer ) = ( m, n * upVer-1 )에 대한 수직 업샘플링은 다음과 같이 dY = 1..upVer-1과 함께 적용된다:
-
그렇지 않으면, 다음과 같은 순서화된 단계들이 적용된다:
1.
upVer가
1보다 크면, m =
1..predW
, n =
0..predH
-1인 모든 저밀도 위치들 (
xVer
,
yVer
) = ( m *
upHor
- 1, n *
upVer
-
1 )에 대한 수직
업샘플링이
다음과 같이
dY
=
1..upVer
-1과 함께 적용된다:
2.
m
=
0..predW
-1, n =
0..nTbH
-1인 모든 저밀도 위치들 (
xHor
,
yHor
) = ( m *
upHor
-1, n )에 대한 수평
업샘플링은
다음과 같이
dX
=
1..upHor
-1과 함께 적용된다:
5.7.2 먼저 수직
업샘플링
, 그 다음 수평
업샘플링
8.4.5.2.1 행렬 기반
인트라
샘플 예측
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 상단 좌측 샘플에 관해 현재 변환 블록의 상단 좌측 샘플을 명시하는 샘플 위치 (xTbCmp, yTbCmp),
- 인트라 예측 모드를 명시하는 변수 predModeIntra,
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH.
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
변수들 numModes, boundarySize, predW, predH 및 predC는 표 8-7에 명시된 MipSizeId[ xTbCmp ][ yTbCmp ]를 이용하여 도출된다.
표 8-7 ― 예측
모드들
numModes
, 경계 크기
boundarySize
, 및
MipSizeId를
이용한 예측 크기들
predW
,
predH
및
predC의
수의 명세
플래그 isTransposed는 다음과 같이 도출된다:
isTransposed = ( predModeIntra > ( numModes / 2 ) ) ? TRUE : FALSE
(8-56)
플래그들 needUpsBdryHor 및 needUpsBdryVer는 다음과 같이 도출된다:
needUpsBdryHor = ( nTbW > predW ) ? TRUE : FALSE
(8-57)
needUpsBdryVer = ( nTbH > predH ) ? TRUE : FALSE
(8-58)
변수들 upsBdryW 및 upsBdryH는 다음과 같이 도출된다:
upsBdryW
= (
nTbH
>
nTbW
) ?
nTbW
:
predW
(8-59)
upsBdryH
= (
nTbH
>
nTbW
) ?
predH
:
nTbH
(8-60)
upsBdryW = predW
(8-59)
upsBdryH = nTbH
(8-60)
변수들 mipW 및 mipH는 다음과 같이 도출된다:
mipW = isTransposed ? predH : predW
(8-61)
mipH = isTransposed ? predW : predH
(8-62)
x = 0..nTbW-1인 기준 샘플들 refT[ x ] 및 y = 0..nTbH-1인 refL[ y ]의 생성의 경우, 조항 8.4.5.2.2에 명시된 MIP 기준 샘플 도출 프로세스는, 샘플 위치(xTbCmp, yTbCmp), 변환 블록 폭 nTbW, 변환 블록 높이 nTbH를 입력들로서 취하여 기동되고, 상단 및 좌측 기준 샘플들 x = 0..nTbW - 1인 refT[x] 및 y = 0..nTbH - 1인 refL[ y ]를 각각 출력들로서 취한다.
x = 0..2 * boundarySize-1인 경계 샘플들 p[ x ]의 생성의 경우, 다음이 적용된다:
- 조항 8.4.5.2.3에 명시된 MIP 경계 다운샘플링 프로세스는, 상단 기준 샘플들에 대해, 블록 크기 nTbW, x = 0..nTbW - 1인 기준 샘플들 refT[ x ], 경계 크기 boundarySize, 업샘플링 경계 플래그 needUpsBdryHor, 및 업샘플링 경계 크기 upsBdryW를 입력들로서 취하여 기동되고, x = 0..boundarySize-1인 감축된 경계 샘플들 redT[ x ]와 x = 0..upsBdryW - 1인 업샘플링 경계 샘플들 upsBdryT[ x ]을 출력들로서 취한다.
- 조항 8.4.5.2.3에 명시된 MIP 경계 다운샘플링 프로세스는, 좌측 기준 샘플들에 대해, 블록 크기 nTbH, y = 0..nTbH - 1인 기준 샘플들 refL[ y ], 경계 크기 boundarySize, 업샘플링 경계 플래그 needUpsBdryVer, 및 업샘플링 경계 크기 upsBdryH를 입력들로서 취하여 기동되고, x= 0..boundarySize-1인 감축된 경계 샘플들 redL[ x ] 및 x = 0..upsBdryH-1인 업샘플링 경계 샘플들 upsBdryL[ x ]를 출력들로서 취한다.
- 감축된 상단 및 좌측 경계 샘플들 redT 및 redL은 다음과 같이 경계 샘플 어레이 p에 할당된다:
- isTransposed가 1이라면, p[ x ]는 x = 0..boundarySize-1인 redL[ x ]로 설정되고, p[ x + boundarySize ]는 x = 0..boundarySize - 1인 redT[ x ]로 설정된다.
- 그렇지 않으면, p[ x ]는 x = 0..boundarySize-1인 redT[ x ]로 설정되고 p[ x + boundarySize ]는 x = 0..boundarySize-1인 redL[ x ]로 설정된다.
predModeIntra에 따른 인트라 샘플 예측 프로세스의 경우, 다음과 같은 순서화된 단계들이 적용된다:
7. x = 0..mipW-1, y = 0..mipH-1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ]는 다음과 같이 도출된다:
- 변수 modeId는 다음과 같이 도출된다:
modeId = predModeIntra - ( isTransposed ? numModes / 2 : 0 )
(8-63)
- x = 0..2 * boundarySize-1, y = 0..predC * predC-1인 가중치 행렬 mWeight[ x ][ y ]는 표 8-XX에 명시된 MipSizeId[ xTbCmp ][ yTbCmp ] 및 modeId를 이용하여 도출된다[Ed. (BB): 10비트가 아닌 가중치 솔루션이 채택되면 가중치 행렬들을 추가]
- y=0..predC * predC-1인 편향 벡터 vBias[ y ]는 표 8-XX에 명시된 sizeId 및 modeId를 이용하여 도출된다[Ed. (BB): 10비트가 아닌 가중치 솔루션이 채택되면 편향 벡터들을 추가].
- 변수 sW는 표 8-8에 명시된 대로 MipSizeId[ xTbCmp ][ yTbCmp ] 및 modeId를 이용하여 도출된다.
- x = 0..mipW-1, y = 0..mipH-1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ]는 다음과 같이 도출된다:
oW = 1 << ( sW - 1 )
(8-64)
sB = BitDepthY - 1
(8-65)
incW = ( predC > mipW ) ? 2 : 1
(8-66)
incH = ( predC > mipH ) ? 2 : 1
(8-67)
8. isTransposed가 TRUE이면, x = 0..predH-1, y = 0..predW-1인 predH x predW 어레이 predMip[ x ][ y ]가 다음과 같이 전치된다:
predTemp[ y ][ x ] = predMip[ x ][ y ] (8-69)
predMip =predTemp (8-70)
9. x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 도출된다:
- needUpsBdryVer가 TRUE이거나 needUpsBdryHor가 TRUE이면, 조항 8.4.5.2.4에 명시된 MIP 예측 업샘플링 프로세스는, 입력 블록 폭 predW, 입력 블록 높이 predH, x = 0..predW - 1, y = 0..predH - 1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ], 변환 블록 폭 nTbW, 변환 블록 높이 nTbH, 업샘플링 경계 폭 upsBdryW, 업샘플링 경계 높이 upsBdryH, 상단 업샘플링 경계 샘플들 upsBdryT, 및 좌측 업샘플링 경계 샘플들 upsBdryL을 입력들로서 취하여 기동되고, 출력은 예측된 샘플 어레이 predSamples이다.
- 그렇지 않으면, x = 0..nTbW - 1, y = 0..nTbH - 1인 predSamples[ x ][ y ]는 predMip[ x ][ y ]로 설정된다.
10. x = 0..nTbW-1 = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 클리핑된다:
predSamples[ x ][ y ] = Clip1Y( predSamples[ x ][ y ] )
(8-71)
표 8-8 -
MipSizeId
및
modeId에
의존하는 가중치
시프트
sW 명세
8.4.5.2.4
MIP
예측
업샘플링
프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 입력 블록 폭을 명시하는 변수 predW,
- 입력 블록 높이를 명시하는 변수 predH,
- x = 0..predW - 1, y = 0..predH - 1인 행렬 기반 인트라 예측 샘플들 predMip[ x ][ y ] ,
- 변환 블록 폭을 명시하는 변수 nTbW,
- 변환 블록 높이를 명시하는 변수 nTbH,
- 업샘플링 경계 폭을 명시하는 변수 upsBdryW,
- 업샘플링 경계 높이를 명시하는 변수 upsBdryH,
- x = 0..upsBdryW - 1인 상단 업샘플링 경계 샘플들 upsBdryT[ x ],
- x = 0..upsBdryH-1인 좌측 업샘플링 경계 샘플들 upsBdryL[ x ].
이 프로세스의 출력들은 x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]이다.
저밀도 예측된 샘플들 predSamples[ m ][ n ]는 다음과 같이 x = 0..predW-1, y = 0..predH-1인 predMip[ x ][ y ]로부터 도출된다:
upHor = nTbW / predW
(8-78)
upVer = nTbH / predH
(8-79)
x = 0..upsBdryW-1인 상단 경계 샘플들 upsBdryT[ x ]는 다음과 같이 predSamples[ m ][ -1 ]에 할당된다:
y = 0..upsBdryH-1인 좌측 경계 샘플들 upsBdryL[ y ]은 다음과 같이 predSamples[ -1 ][ n ]에 할당된다:
x = 0..nTbW-1, y = 0..nTbH-1인 예측된 샘플들 predSamples[ x ][ y ]는 다음과 같이 도출된다:
-
nTbH가
nTbW보다
크다면
, 다음과 같은 순서화된 단계들이 적용된다:
1.
upHor가
1보다 크면, m =
0..predW
-1, n =
1..predH인
모든 저밀도 위치들 (
xHor
,
yHor
) = ( m *
upHor
- 1, n *
upVer
- 1 )에 대한 수평
업샘플링
이 다음과 같이 dX = 1..upHor-1와 함께 적용된다:
2. m
=
0..nTbW
-1, n =
0..predH
-1인 모든 저밀도 위치들 (
xVer
,
yVer
) = ( m, n *
upVer
-1 )에 대한 수직
업샘플링은
다음과 같이
dY
=
1..upVer
-1과 함께 적용된다:
-
그렇지 않으면
, 다음과 같은 순서화된 단계들이 적용된다:
1. upVer가 1보다 크면, m = 1..predW, n = 0..predH-1인 모든 저밀도 위치들 ( xVer, yVer ) = ( m * upHor - 1, n * upVer - 1 )에 대한 수직 업샘플링이 다음과 같이 dY = 1..upVer-1과 함께 적용된다:
2. m = 0..predW-1, n = 0..nTbH-1인 모든 저밀도 위치들 ( xHor, yHor ) = ( m * upHor-1, n )에 대한 수평 업샘플링은 다음과 같이 dX = 1..upHor-1과 함께 적용된다:
5.8
MPM
코딩을 위한
JVET
-N1001-v7에 기초한 예시적인 연구 초안
8.4.2 MIP 모드에 대한 도출 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 루마 코딩 블록의 상단 좌측 샘플을 명시하는 루마 위치 (xCb, yCb),
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight.
이 프로세스에서, 행렬 기반 인트라 예측 모드 IntraPredModeY[ xCb ][ yCb ]가 도출된다. IntraPredModeY[ xCb ][ yCb ]는 다음과 같은 순서화된 단계들에 의해 도출된다:
5.
이웃
위치들 (
xNbA
,
yNbA
) 및 (
xNbB
,
yNbB
)은 각각 (
xCb
-1,
yCb
) 및( xCb, yCb-1)와 동일하게 설정된다.
6.
X가
A 또는 B로 대체되는 경우, 변수
candMipModeX는
다음과 같이 도출된다:
-
조항
6.4.X
[Ed. (BB): 이웃 블록 가용성
체킹
프로세스 tbd]에 명시된 블록에 대한 가용성 도출 프로세스는, (
xCb
,
yCb
)와 동일하게 설정된 위치(
xCurr
, yCurr)와 (
xNbX
,
yNbX
)와 동일하게 설정된 이웃 위치(
xNbY
,
yNbY
)를 입력으로서 취하여
기동되고
, 출력은
availableX에
할당된다.
- 후보 MIP 모드 candMipModeX는 다음과 같이 도출된다:
-
다음과 같은 조건들 중 하나 이상이 참이라면, candMipModeX는 -1로 설정된다.
- 변수 availableX는
FALSE이다.
- CuPredMode[ xNbX ][ yNbX ]는 MODE_INTRA가 아니고 ciip_flag[ xNbX ][ yNbX ]는 1이 아니다.
-
pcm_flag[ xNbX ][ yNbX ]는 1이다.
- X는 B이고
yCb-1은 (( yCb >> CtbLog2SizeY ) << CtbLog2SizeY )보다 작다.
- 그렇지 않으면
, 다음이 적용된다:
- intra_mip_flag[ xNbX ][ yNbX ]가
1이면, 다음이 적용된다:
.
MipSizeId[ xCb ][ yCb ] 가 MipSizeId[ xNbX ][ yNbX ]이면, candMipModeX는 IntraPredModeY[ xNbX ][ yNbX ]와 동일하게 설정된다.
-
그렇지 않으면,
candMipModeX가
-1과 동일하게 설정된다.
-
그렇지 않으면, 표 8-4에 명시된 대로
IntraPredModeY
[
xNbX
][
yNbX
] 및 MipSizeId[ xCb ][ yCb ]를 이용하여
candMipModeX가
도출된다.
7. x = 0..2인 candMipModeList[ x ]는 표 8-2에 명시된 대로 mipMpmCand[ sizeId ]를 이용하여 다음과 같이 도출된다:
-
candMipModeA
및
candMipModeB
양쪽 모두가 -1이라면, 다음이 적용된다:
candMipModeList[ 0 ] = mipMpmCand[ sizeId ][ 0 ]
(8-10)
candMipModeList[ 1 ] = mipMpmCand[ sizeId ][ 1 ]
(8-11)
candMipModeList[ 2 ] = mipMpmCand[ sizeId ][ 2 ]
(8-12)
-
그렇지 않으면, 다음이 적용된다:
-
candMipModeA가 candMipModeB이거나 candMipModeA 또는 candMipModeB가 -1이라면, 다음이 적용된다:
-
candMipModeList[ 0 ]가
mipMpmCand[ sizeId ][ 0 ]
이면, 다음이 적용된다:
candMipModeList[ 1 ] = mipMpmCand[ sizeId ][ 1 ]
(8-14)
candMipModeList[ 2 ] = mipMpmCand[ sizeId ][ 2 ]
(8-15)
-
그렇지 않으면, 다음이 적용된다:
candMipModeList
[ 1 ] =
mipMpmCand
[
sizeId
][ 0 ]
(8-16)
- 그렇지 않으면
, 다음이 적용된다:
candMipModeList[ 0 ] = candMipModeA
(8-18)
candMipModeList
[ 1 ] =
candMipModeB
(8-19)
-
candMipModeA 및 candMipModeB 양쪽 모두가 mipMpmCand[ sizeId ][ 0 ]이 아니면, 다음이 적용된다:
candMipModeList[ 2 ] = mipMpmCand[ sizeId ][ 0 ]
(8-20)
- 그렇지 않으면
, 다음이 적용된다:
-
candMipModeA 및 candMipModeB 양쪽 모두가 mipMpmCand[ sizeId ][ 1 ]이 아니면, 다음이 적용된다:
candMipModeList[ 2 ] = mipMpmCand[ sizeId ][ 1 ]
(8-21)
- 그렇지 않으면
, 다음이 적용된다:
candMipModeList
[ 2 ] =
mipMpmCand
[
sizeId
][ 2 ]
(8-22)
8. IntraPredModeY[ xCb ][ yCb ]는 다음 절차를 적용하여 도출된다:
- intra_mip_mpm_flag[ xCb ][ yCb ]가 1이면, IntraPredModeY[ xCb ][ yCb ]가 candMipModeList[ intra_mip_mpm_idx[ xCb ][ yCb ]와 동일하게 설정된다.
- 그렇지 않으면, IntraPredModeY[ xCb ][ yCb ]는 다음과 같은 순서화된 단계들을 적용하여 도출된다:
3. i = 0..1이고 각각의 i, j =( i + 1 )..2에 대해 candMipModeList[ i ]가 candMipModeList[ j ]보다 크면, 양쪽 값들은 다음과 같이 스왑된다:
4. IntraPredModeY[ xCb ][ yCb ]는 다음과 같은 순서화된 단계들에 의해 도출된다:
i. IntraPredModeY[ xCb ][ yCb ]는 intra_mip_mpm_remainder[ xCb ][ yCb ]와 동일하게 설정된다.
ii. i가 0 내지 2인 경우, IntraPredModeY[ xCb ][ yCb ]가 candMipModeList[ i ]보다 크거나 같다면, IntraPredModeY[ xCb ][ yCb ]값이 1씩 증가된다.
x = xCb..xCb + cbWidth-1 및 y = yCb..yCb + cbHeight-1인 변수 IntraPredModeY[ x ][ y ]는 IntraPredModeY[ xCb ][ yCb ]와 동일하도록 설정된다.
도 27은 인트라 예측 모드와 MIP 모드 간의 매핑의 명세에 대한 업데이트된 테이블을 도시한다.
표 8-2 -
MIP
후보
모드들
mipMpmCand[ sizeId ][ x ]의
명세
i. 루마 인트라 예측 모드의 도출 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 루마 코딩 블록의 상단 좌측 샘플을 명시하는 루마 위치 (xCb, yCb),
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight.
이 프로세스에서, 루마 인트라 예측 모드 IntraPredModeY[ xCb ][ yCb ]가 도출된다.
표 8-3은 인트라 예측 모드 IntraPredModeY[ xCb ][ yCb ]에 대한 값 및 연관된 이름들을 명시한다.
표 8-3 ― 인트라 예측 모드 및 연관된 이름들의 명세
유의사항 ―: 인트라 예측 모드들 INTRA_LT_CCLM, INTRA_L_CCLM 및 INTRA_T_CCLM은 크로마 성분들에만 적용가능하다.
IntraPredModeY[ xCb ][ yCb ]는 다음과 같이 도출된다:
- BdpcmFlag[ xCb ][ yCb ]가 1이거나 intra_luma_not_planar_flag[ xCb ][ yCb ]가 0이면, IntraPredModeY[ xCb ][ yCb ]가 INTRA_PLANAR와 동일하게 설정된다.
- 그렇지 않으면(intra_luma_not_planar_flag[ xCb ][ yCb ]가 1임), 다음과 같은 순서화된 단계들이 적용된다:
9. 이웃 위치들 ( xNbA, yNbA ) 및 ( xNbB, yNbB )는 각각 ( xCb-1, yCb + cbHeight-1 ) 및( xCb + cbWidth-1, yCb-1 )와 동일하게 설정된다.
10. X가 A 또는 B로 대체되는 경우, 변수 candIntraPredModeX는 다음과 같이 도출된다:
- 조항 6.4.X [Ed. (BB): 이웃 블록 가용성 체킹 프로세스 tbd]에 명시된 블록에 대한 가용성 도출 프로세스는, (xCb, yCb)와 동일하게 설정된 위치(xCurr, yCurr)와 (xNbX, yNbX)와 동일하게 설정된 이웃 위치(xNbY, yNbY)를 입력으로서 취하여 기동되고, 출력은 availableX에 할당된다.
- 후보 인트라 예측 모드 candIntraPredModeX는 다음과 같이 도출된다:
- 다음과 같은 조건들 중 하나 이상이 참이라면, candIntraPredModeX는 INTRA_PLANAR로 설정된다.
- 변수 availableX는 FALSE이다.
- CuPredMode[ xNbX ][ yNbX ]는 MODE_INTRA가 아니고 ciip_flag[ xNbX ][ yNbX ]는 1이 아니다.
- pcm_flag[ xNbX ][ yNbX ]는 1이다.
- X는 B이고 yCb-1은 (( yCb >> CtbLog2SizeY ) << CtbLog2SizeY )보다 작다.
- intra_mip_flag[ xCb ][ yCb ] 1이다.
- 그렇지 않으면 candIntraPredModeX는 다음과 같이 도출된다:
-
intra_mip_flag[ xCb ][ yCb ]가 1인 경우, candIntraPredModeX는 표 8-4에 명시된 IntraPredModeY[ xNbX ][ yNbX ] 및 MipSizeId[ xCb ][ yCb ]를 이용하여 도출된다.
- 그렇지 않으면, candIntraPredModeX는 IntraPredModeY[ xNbX ] [ yNbX ]와 동일하게 설정된다.
11. x = 0..4인 candModeList[ x ]는 다음과 같이 도출된다:
- candIntraPredModeB가 candIntraPredModeA와 같고 candIntraPredModeA가 INTRA_DC보다 크다면, x=0..4인 candModeList[x]는 다음과 같이 도출된다:
candModeList[ 0 ] = candIntraPredModeA
(8-24)
candModeList[ 1 ] = 2 + ( ( candIntraPredModeA + 61 ) % 64 )
(8-25)
candModeList[ 2 ] = 2 + ( ( candIntraPredModeA - 1 ) % 64 )
(8-26)
candModeList[ 3 ] = INTRA_DC
(8-27)
candModeList[ 4 ] = 2 + ( ( candIntraPredModeA + 60 ) % 64 )
(8-28)
- 그렇지 않고 candIntraPredModeB가 candIntraPredModeA와 같지 않고 candIntraPredModeA 또는 candIntraPredModeB가 INTRA_DC보다 크다면, 다음이 적용된다:
- 변수들 minAB 및 maxAB는 다음과 같이 도출된다:
minAB = Min( candIntraPredModeA, candIntraPredModeB )
(8-29)
maxAB = Max( candIntraPredModeA, candIntraPredModeB )
(8-30)
- candIntraPredModeA와 candIntraPredModeB 양쪽 모두가 INTRA_DC보다 큰 경우, x = 0..4인 candModeList[ x ]는 다음과 같이 도출된다:
candModeList[ 0 ] = candIntraPredModeA
(8-31)
candModeList[ 1 ] = candIntraPredModeB
(8-32)
candModeList[ 2 ] = INTRA_DC
(8-33)
- maxAB - minAB가 2 내지 62(양쪽 끝값 포함) 범위이면, 다음이 적용된다:
candModeList[ 3 ] = 2 + ( ( maxAB + 61 ) % 64 )
(8-34)
candModeList[ 4 ] = 2 + ( ( maxAB - 1 ) % 64 )
(8-35)
- 그렇지 않으면, 다음이 적용된다:
candModeList[ 3 ] = 2 + ( ( maxAB + 60 ) % 64 )
(8-36)
candModeList[ 4 ] = 2 + ( ( maxAB ) % 64 )
(8-37)
- 그렇지 않으면(candIntraPredModeA 또는 candIntraPredModeB가 INTRA_DC보다 큼), x = 0..4인 candModeList[ x ]는 다음과 같이 도출된다:
candModeList[ 0 ] = maxAB
(8-38)
candModeList[ 1 ] = INTRA_DC
(8-39)
candModeList[ 2 ] = 2 + ( ( maxAB + 61 ) % 64 )
(8-40)
candModeList[ 3 ] = 2 + ( ( maxAB - 1 ) % 64 )
(8-41)
candModeList[ 4 ] = 2 + ( ( maxAB + 60 ) % 64 )
(8-42)
- 그렇지 않으면, 다음이 적용된다:
candModeList[ 0 ] = INTRA_DC
(8-43)
candModeList[ 1 ] = INTRA_ANGULAR50
(8-44)
candModeList[ 2 ] = INTRA_ANGULAR18
(8-45)
candModeList[ 3 ] = INTRA_ANGULAR46
(8-46)
candModeList[ 4 ] = INTRA_ANGULAR54
(8-47)
12. IntraPredModeY[ xCb ][ yCb ]는 다음 절차를 적용하여 도출된다:
- intra_luma_mpm_flag[ xCb ][ yCb ]가 1이면, IntraPredModeY[ xCb ][ yCb ]가 candModeList[ intra_luma_mpm_idx[ xCb ][ yCb ]]와 동일하게 설정된다.
- 그렇지 않으면, IntraPredModeY[ xCb ][ yCb ]는 다음과 같은 순서화된 단계들을 적용하여 도출된다:
5. candModeList[ i ]가, i = 0..3 및 각각의 i, j =( i + 1 )..4에 대해 candModeList[ j ]보다 크면, 양쪽 값들은 다음과 같이 교환된다:
6. IntraPredModeY[ xCb ][ yCb ]는 다음과 같은 순서화된 단계들에 의해 도출된다:
i. IntraPredModeY[ xCb ][ yCb ]는 intra_luma_mpm_remainder[ xCb ][ yCb ]와 동일하게 설정된다.
ii. IntraPredModeY[ xCb ][ yCb ]값이 1씩 증가한다.
iii. i가 0 내지 4인 경우, IntraPredModeY[ xCb ][ yCb ]가 candModeList[ i ]보다 크거나 같다면, IntraPredModeY[ xCb ][ yCb ]값이 1씩 증가된다.
x = xCb..xCb + cbWidth-1 및 y = yCb..yCb + cbHeight-1인 변수 IntraPredModeY[ x ][ y ]는 IntraPredModeY[ xCb ][ yCb ]와 동일하게 설정된다.
도 28은 MIP 모드와 인트라 예측 모드 간의 매핑의 명세에 대한 업데이트된 테이블을 도시한다.
8.4.4
크로마
인트라
예측
모드를
위한 도출 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 상단 좌측 루마 샘플에 관해 현재 크로마 코딩 블록의 상단 좌측 샘플을 명시하는 루마 위치 (xCb, yCb),
- 루마 샘플들에서 현재 코딩 블록의 폭을 명시하는 변수 cbWidth,
- 루마 샘플들에서 현재 코딩 블록의 높이를 명시하는 변수 cbHeight.
이 프로세스에서 크로마 인트라 예측 모드 IntraPredModeC[ xCb ][ yCb ]가 도출된다.
대응하는 루마 인트라 예측 모드 lumaIntraPredMode는 다음과 같이 도출된다:
- intra_mip_flag[ xCb+ cbWidth / 2 ][ yCb+ cbHeight / 2 ]가 1이라면, lumaIntraPredMode는 INTRA _PLANAR와 동일하게 설정된다. 표 8-4에 명시된 IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] 및 sizeId를 이용하 여 도출되고 candIntraPredModeX 값을 lumaIntraPredMode에 할당.
- 그렇지 않으면,
lumaIntraPredMode는
IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ]와 동일하게 설정된다.
크로마 인트라 예측 모드 IntraPredModeC[ xCb ][ yCb ]는 intra_chroma_pred_mode[ xCb ][ yCb ] 및 표 8-5 및 표 8-6에 명시된 lumaIntraPredMode를 이용하여 도출된다.
5.9 이중 트리 크로마일 때 lfnst_idx의 시그널링에 대한 실시예
아래의 수정 사항들은 JVET_P2001_v9를 기반으로 한다. 수정 사항들은 굵은 기울임꼴을 사용하여 텍스트를 강조 표시하는 것에 의해 표시되어 있다.
7.3.9.5 코딩 유닛 신택스
7.4.10.5 코딩 유닛 시맨틱스
...
intra_mip_flag[ x0 ][ y0 ]이 1과 동일한 것은 루마 샘플들에 대한 인트라 예측 유형이 행렬 기반 인트라 예측이라는 것을 지정한다. intra_mip_flag[ x0 ][ y0 ]이 0과 동일한 것은 루마 샘플들에 대한 인트라 예측 유형이 행렬 기반 인트라 예측이 아니라는 것을 지정한다.
intra_mip_flag[ x0 ][ y0 ]이 SINGLE_TREE 또는 DUAL_TREE_LUMA 경우에 존재하지 않을 때 , 이는 0과 동일한 것으로 추론된다.
위에서 설명된 예들은 아래에서 설명되는 방법들, 예를 들면, 비디오 인코더 및/또는 디코더에서 구현될 수 있는 방법들(1100, 1200, 1300, 1400, 2300 및/또는 2400)과 관련하여 통합될 수 있다.
도 11은 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 방법(1100)은, 단계 1110에서, 현재 비디오 블록이 어파인 선형 가중된 인트라 예측(ALWIP) 모드를 이용하여 코딩되어 있다고 결정하는 단계를 포함한다.
방법(1100)은, 단계 1120에서, 이 결정에 기초하여, 비-ALWIP 인트라 모드에 대한 MPM 목록의 적어도 일부에 기초하여 ALWIP 모드에 대한 MPM(most probable mode) 목록의 적어도 일부를 구성하는 단계를 포함한다.
방법(1100)은, 단계 1130에서, ALWIP 모드에 대한 MPM 목록에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
일부 실시예에서, ALWIP 모드의 MPM 목록의 크기는 비-ALWIP 인트라 모드에 대한 MPM 목록의 크기와 동일하다. 한 예에서, ALWIP 모드의 MPM 목록 크기는 6이다.
일부 실시예에서, 방법(1100)은 ALWIP 모드에 대한 MPM 목록에 디폴트 모드들을 삽입하는 단계를 더 포함한다. 한 예에서, 디폴트 모드들은 비-ALWIP 인트라 모드에 대한 MPM 목록에 기초하는 ALWIP 모드에 대한 MPM 목록 부분 앞에 삽입된다. 또 다른 예에서, 디폴트 모드들은 비-ALWIP 인트라 모드에 대한 MPM 목록에 기초하는 ALWIP 모드에 대한 MPM 목록 부분에 이어 삽입된다. 역시 또 다른 예에서, 디폴트 모드들은 비-ALWIP 인트라 모드에 대한 MPM 목록에 기초하는 ALWIP 모드에 대한 MPM 목록 부분과 인터리빙된 방식으로 삽입된다.
일부 실시예에서, ALWIP 모드에 대한 MPM 목록 및 비-ALWIP 인트라 모드에 대한 MPM 목록을 구성하는 것은 하나 이상의 이웃 블록에 기초한다.
일부 실시예에서, ALWIP 모드에 대한 MPM 목록 및 비-ALWIP 인트라 모드에 대한 MPM 목록을 구성하는 것은 현재 비디오 블록의 높이 또는 폭에 기초한다.
일부 실시예에서, ALWIP 모드에 대한 MPM 목록을 구성하는 것은, 비-ALWIP 인트라 모드에 대한 MPM 목록을 구성하는데 이용되는 제2 세트의 파라미터들과는 상이한 제1 세트의 파라미터들에 기초한다.
일부 실시예에서, 방법(1100)은, 현재 비디오 블록의 이웃 블록이 ALWIP 모드로 코딩되었다고 결정하는 단계, 및 비-ALWIP 인트라 모드에 대한 MPM 목록을 구성하는데 있어서, 이웃 블록을 이용가능하지 않은 것으로 지정하는 단계를 더 포함한다.
일부 실시예에서, 방법(1100)은, 현재 비디오 블록의 이웃 블록이 비-ALWIP 인트라 모드로 코딩되었다고 결정하는 단계, 및 ALWIP 모드에 대한 MPM 목록을 구성하는데 있어서, 이웃 블록을 이용가능하지 않은 것으로 지정하는 단계를 더 포함한다.
일부 실시예에서, 비-ALWIP 인트라 모드는, 일반 인트라 모드, 복수의 기준 라인(MRL) 인트라 예측 모드 또는 인트라 서브파티션(ISP) 툴에 기초한다.
도 12는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 방법(1200)은, 단계 1210에서, 현재 비디오 블록의 루마 성분이 어파인 선형 가중된 인트라 예측(ALWIP) 모드를 이용하여 코딩되어 있다고 결정하는 단계를 포함한다.
방법(1200)은, 단계 1220에서, 이 결정에 기초하여 크로마 인트라 모드를 추론하는 단계를 포함한다.
방법(1200)은, 단계 1230에서, 크로마 인트라 모드에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
일부 실시예에서, 루마 성분은 크로마 성분의 미리결정된 크로마 샘플을 커버한다. 한 예에서, 미리결정된 크로마 샘플은 크로마 성분의 상단 좌측 샘플 또는 중앙 샘플이다.
일부 실시예에서, 추론된 크로마 인트라 모드는 DM 모드이다.
일부 실시예에서, 추론된 크로마 인트라 모드는 ALWIP 모드이다.
일부 실시예에서, ALWIP 모드는 현재 비디오 블록의 하나 이상의 크로마 성분에 적용된다.
일부 실시예에서, ALWIP 모드의 상이한 행렬 또는 편향 벡터들은 현재 비디오 블록의 상이한 색상 성분들에 적용된다. 한 예에서, 상이한 행렬 또는 편향 벡터들은 Cb 및 Cr 성분들에 대해 공동으로 미리정의된다. 또 다른 예에서, Cb 및 Cr 성분들은 연결된다. 또 다른 예에서, Cb 및 Cr 성분은 인터리빙된다.
도 13은 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 방법(1300)은, 단계 1310에서, 현재 비디오 블록이 어파인 선형 가중된 인트라 예측(ALWIP) 모드를 이용하여 코딩되어 있다고 결정하는 단계를 포함한다.
방법(1300)은, 단계 1320에서, 이 결정에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
일부 실시예에서, 이 결정은, 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더, 타일 그룹 헤더, 타일 헤더, 코딩 트리 유닛(CTU) 행 또는 CTU 영역에서의 시그널링에 기초한다.
일부 실시예에서, 결정은 현재 비디오 블록의 높이(H) 또는 폭(W)에 기초한다. 한 예에서, W > T1 또는 H > T2이다. 또 다른 예에서, W ≥ T1 또는 H ≥ T2이다. 역시 또 다른 예에서, W < T1 또는 H < T2이다. 역시 또 다른 예에서, W ≤ T1 또는 H ≤ T2이다. 역시 또 다른 예에서, T1 = 32 및 T2 = 32이다.
일부 실시예에서, 결정은 현재 비디오 블록의 높이(H) 또는 폭(W)에 기초한다. 한 예에서, W + H ≤ T이다. 또 다른 예에서, W + H ≥ T이다. 역시 또 다른 예에서, W × H ≤ T이다. 역시 또 다른 예에서, W × H ≥ T이다. 역시 또 다른 예에서, T = 256이다.
도 14는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 방법(1400)은, 단계 1410에서, 현재 비디오 블록이 어파인 선형 가중된 인트라 예측(ALWIP) 모드와는 상이한 코딩 모드를 이용하여 코딩되어 있다고 결정하는 단계를 포함한다.
방법(1400)은, 단계 1420에서, 이 결정에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
일부 실시예에서, 코딩 모드는 조합된 인트라 및 인터 예측(CIIP) 모드이고, 방법(1400)은 ALWIP 모드와 일반 인트라 예측 모드 사이의 선택을 수행하는 단계를 더 포함한다. 한 예에서, 선택을 수행하는 단계는, 현재 비디오 블록의 비트스트림 표현에서의 명시적 시그널링에 기초한다. 또 다른 예에서, 선택을 수행하는 단계는 미리결정된 규칙에 기초한다. 역시 또 다른 예에서, 미리결정된 규칙은 현재 비디오 블록이 CIIP 모드를 이용하여 코딩되어 있을 때 항상 ALWIP 모드를 선택한다. 역시 또 다른 예에서, 미리결정된 규칙은 현재 비디오 블록이 CIIP 모드를 이용하여 코딩되어 있을 때 항상 일반 인트라 예측 모드를 선택한다.
일부 실시예에서, 코딩 모드는 교차-성분 선형 모델(cross-component linear model)(CCLM) 예측 모드이다. 한 예에서, ALWIP 모드에 대한 다운샘플링 절차는 CCLM 예측 모드에 대한 다운샘플링 절차에 기초한다. 또 다른 예에서, ALWIP 모드에 대한 다운샘플링 절차는 제1 세트의 파라미터들에 기초하고, CCLM 예측 모드에 대한 다운샘플링 절차는 제1 세트의 파라미터들과는 상이한 제2 세트의 파라미터들에 기초한다. 또 다른 예에서, ALWIP 모드 또는 CCLM 예측 모드에 대한 다운샘플링 절차는, 다운샘플링된 위치들의 선택, 다운샘플링 필터들의 선택, 반올림 동작 또는 클리핑 동작 중 적어도 하나를 포함한다.
일부 실시예에서, 방법(1400)은, 감축된 2차 변환(RST), 2차 변환, 회전 변환 또는 비분 2차 변환(Non-Separable Secondary Transform)(NSST) 중 하나 이상을 적용하는 단계를 더 포함한다.
일부 실시예에서, 방법(1400)은 블록 기반의 차분 펄스 코딩 변조(differential pulse coded modulation)(DPCM) 또는 잔차 DPCM을 적용하는 단계를 더 포함한다.
일부 실시예에서, 비디오 처리 방법은, 현재 비디오 블록에 대한 규칙에 기초하여, 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안 어파인 선형 가중된 인트라 예측(ALWIP) 모드의 이용을 나타내는 플래그의 콘텍스트를 결정하는 단계; ALWIP 모드에 기초하여, 상기 현재 비디오 블록의 복수의 서브블록을 예측하는 단계; 및 상기 예측에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다. 규칙은 선험적 기술을 이용하여 묵시적으로 명시될 수 있거나 코딩된 비트스트림에서 시그널링될 수 있다. 이 방법의 다른 예들과 양태들은 섹션 4의 항목 37 및 38에 추가로 설명되어 있다.
일부 실시예에서, 비디오 처리 방법은, 현재 비디오 블록이 어파인 선형 가중된 인트라 예측(ALWIP) 모드를 이용하여 코딩되어 있다고 결정하는 단계; 및 상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안, 상기 ALWIP 모드와 연관된 업샘플링 프로세스에서 현재 비디오 블록의 샘플들에 관해 적어도 2개의 필터링 스테이지를 수행하는 단계를 포함하고, 상기 적어도 2개의 필터링 스테이지 중 제1 필터링 스테이지에서의 샘플들의 제1 정밀도는 상기 적어도 2개의 필터링 스테이지 중 제2 필터링 스테이지에서의 샘플들의 제2 정밀도와는 상이하다.
한 예에서, 현재 비디오 블록의 샘플들은, 예측 샘플들, 업샘플링 프로세스 이전의 중간 샘플들 또는 업샘플링 프로세스 이후의 중간 샘플들이다. 또 다른 예에서, 샘플들은 제1 필터링 스테이지에서 수평으로 제1 치수에서 업샘플링되고, 여기서 샘플들은 제2 필터링 스테이지에서 수직으로 제2 치수에서 업샘플링된다. 역시 또 다른 예에서, 샘플들은 제1 필터링 스테이지에서 수직으로 제1 치수에서 업샘플링되고, 여기서 샘플들은 제2 필터링 스테이지에서 수평으로 제2 치수에서 업샘플링된다.
한 예에서, 제1 필터링 스테이지의 출력은 우측 시프트되거나 나누어져 처리된 출력을 생성하고, 여기서, 처리된 출력은 제2 필터링 스테이지에 대한 입력이다. 또 다른 예에서, 제1 필터링 스테이지의 출력은 좌측 시프트되거나 곱해져 처리된 출력을 생성하고, 여기서 처리된 출력은 제2 필터링 스테이지에 대한 입력이다. 이 방법의 다른 예들과 양태들은 섹션 4의 항목 40에 추가로 설명되어 있다.
섹션 4의 항목 41 내지 항목 43에서 추가로 설명된 바와 같이, 비디오 처리 방법은, 현재 비디오 블록이 어파인 선형 가중된 인트라 예측(ALWIP) 모드를 이용하여 코딩되어 있다고 결정하는 단계, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안, ALWIP 모드와 연관된 업샘플링 프로세스에서의 현재 비디오 블록의 샘플들에 관해 적어도 2개의 필터링 스테이지를 수행하는 단계를 포함하고, 여기서, 업샘플링 프로세스는 수직 및 수평 업샘플링 양쪽 모두가 수행되는 경우에 대해 고정된 순서로 수행된다. 섹션 4의 항목 41 내지 43에서 추가로 설명된 바와 같이, 또 다른 방법은, 현재 비디오 블록이 어파인 선형 가중된 인트라 예측(ALWIP) 모드를 이용하여 코딩되어 있다고 결정하는 단계; 및 상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안, 상기 ALWIP 모드와 연관된 업샘플링 프로세스에서 현재 비디오 블록의 샘플들에 관해 적어도 2개의 필터링 스테이지를 수행하는 단계를 포함하고, 상기 변환은 상기 업샘플링 프로세스 이전에 전치 동작을 수행하는 단계를 포함한다.
전술된 방법들의 추가적인 피처들은 섹션 4의 항목 41 내지 43에 설명되어 있다.
일부 실시예들에서, 비디오 처리 방법은, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 비디오 블록이 조건을 충족시키는 것으로 인해 변환에서의 2차 변환의 사용의 시그널링이 루미넌스 행렬 기반 인트라 예측(MIP) 툴의 시그널링과 분리된다고 결정하는 단계 및 결정에 기초하여 변환을 수행하는 단계를 포함한다. 추가적인 예들 및 특징들은 이전 섹션의 항목 49에 설명되어 있다.
일부 실시예들에서, 비디오 처리 방법은, 비디오의 현재 비디오 블록과 연관된 코딩 조건에 기초하여, 2차 변환과 연관된 부가 정보가 비디오의 비트스트림 표현에 포함되는지 여부를 결정하는 단계 및 결정에 기초하여 현재 비디오 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다. 추가적인 특징들 및 예들은 이전 섹션에서의 항목 50 및 항목 51에 설명되어 있다.
6. 개시된
기술의 예시적인 구현들
도 15는 비디오 처리 장치(1500)의 블록도이다. 장치(1500)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(1500)는 스마트폰, 태블릿, 컴퓨터, IoT(Internet of Things) 수신기 등에 구체화될 수 있다. 장치(1500)는 하나 이상의 프로세서(1502), 하나 이상의 메모리(1504) 및 비디오 처리 하드웨어(1506)를 포함할 수 있다. 프로세서(들)(1502)는 본 문서에 설명된 하나 이상의 방법(방법들(1100, 1200, 1300 및 1400, 2300, 및/또는 2400)을 포함하지만 이에 제한되지 않음)을 구현하도록 구성될 수 있다. 메모리(메모리들)(1504)는 본 명세서에 설명된 방법들 및 기술들을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 처리 하드웨어(1506)는, 하드웨어 회로로, 본 문서에 설명된 일부 기술들을 구현하는 데 사용될 수 있다.
일부 실시예에서, 비디오 코딩 방법들은 도 15와 관련하여 설명된 바와 같이 하드웨어 플랫폼 상에서 구현되는 장치를 이용하여 구현될 수 있다.
개시된 기술의 일부 실시예는, 비디오 처리 툴 또는 모드를 가능케하기 위한 결정 또는 판정을 내리는 것을 포함한다. 한 예에서, 비디오 처리 툴 또는 모드가 인에이블되면, 인코더는 비디오 블록의 처리에서 툴 또는 모드를 이용하거나 구현하지만, 툴 또는 모드의 이용에 기초하여 결과 비트스트림을 반드시 수정할 필요는 없다. 즉, 비디오 블록으로부터 비디오의 비트스트림 표현으로의 변환은, 결정 또는 판정에 기초하여 인에이블될 때 비디오 처리 툴 또는 모드를 이용할 것이다. 또 다른 예에서, 비디오 처리 툴 또는 모드가 인에이블될 때, 디코더는 비디오 처리 툴 또는 모드에 기초하여 비트스트림이 수정되었다는 것을 알고 비트스트림을 처리할 것이다. 즉, 비디오의 비트스트림 표현으로부터 비디오 블록으로의 변환은, 결정 또는 판정에 기초하여 인에이블된 비디오 처리 툴 또는 모드를 이용하여 수행될 것이다.
개시된 기술의 일부 실시예는, 비디오 처리 툴 또는 모드를 디스에이블하기 위한 결정 또는 판정을 내리는 것을 포함한다. 한 예에서, 비디오 처리 툴 또는 모드가 디스에이블되면, 인코더는 비디오 블록을 비디오의 비트스트림 표현으로 변환하는데 있어서 툴 또는 모드를 이용하지 않을 것이다. 또 다른 예에서, 비디오 처리 툴 또는 모드가 디스에이블될 때, 디코더는 결정 또는 판정에 기초하여 디스에이블된 비디오 처리 툴 또는 모드를 이용하여 비트스트림이 수정되지 않았다는 것을 알고 비트스트림을 처리할 것이다.
도 21은 본 개시내용의 기술들을 이용할 수 있는 한 예시적인 비디오 코딩 시스템(100)을 나타내는 블록도이다. 도 21에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 디바이스(110) 및 목적지 디바이스(120)를 포함할 수 있다. 소스 디바이스(110)는 비디오 인코딩 디바이스라고 지칭될 수 있는 인코딩된 비디오 데이터를 생성한다. 목적지 디바이스(120)는 비디오 디코딩 디바이스라고 지칭될 수도 있는 소스 디바이스(110)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있다. 소스 디바이스(110)는, 비디오 소스(112), 비디오 인코더(114), 및 입력/출력(I/O) 인터페이스(116)를 포함할 수 있다.
비디오 소스(112)는, 비디오 캡처 디바이스 등의 소스, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하는 인터페이스, 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이러한 소스들의 조합을 포함할 수 있다. 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)로부터의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스를 포함할 수 있다. 비트스트림은 코딩된 픽처들 및 연관된 데이터를 포함할 수 있다. 코딩된 픽처는 픽처의 코딩된 표현이다. 연관된 데이터는, 시퀀스 파라미터 세트들, 픽처 파라미터 세트들, 및 기타의 신택스 구조들을 포함할 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 전송기를 포함할 수 있다. 인코딩된 비디오 데이터는 네트워크(130a)를 통해 I/O 인터페이스(116)를 이용하여 목적지 디바이스(120)에 직접 전송될 수 있다. 인코딩된 비디오 데이터는 또한, 목적지 디바이스(120)에 의한 액세스를 위해 저장 매체/서버(130b)에 저장될 수 있다.
목적지 디바이스(120)는, I/O 인터페이스(126), 비디오 디코더(124), 및 디스플레이 디바이스(122)를 포함할 수 있다.
I/O 인터페이스(126)는 수신기 및/또는 모뎀을 포함할 수 있다. I/O 인터페이스(126)는 소스 디바이스(110) 또는 저장 매체/서버(130b)로부터 인코딩된 비디오 데이터를 취득할 수 있다. 비디오 디코더(124)는 인코딩된 비디오 데이터를 디코딩할 수 있다. 디스플레이 디바이스(122)는 디코딩된 비디오 데이터를 사용자에게 디스플레이할 수 있다. 디스플레이 디바이스(122)는 목적지 디바이스(120)와 통합될 수 있거나, 외부 디스플레이 디바이스와 인터페이스하도록 구성된 목적지 디바이스(120)의 외부에 있을 수 있다.
비디오 인코더(114) 및 비디오 디코더(124)는, HEVC(High Efficiency Video Coding) 표준, VVM(Versatile Video Coding) 표준, 및 기타의 현재 및/또는 추가 표준 등의 비디오 압축 표준에 따라 동작할 수 있다.
도 22는 도 21에 나타낸 시스템(100)의 비디오 인코더(114)일 수 있는 비디오 인코더(200)의 한 예를 나타내는 블록도이다.
비디오 인코더(200) 는 본 개시내용의 기술들 중 임의의 것 또는 전부를 수행하도록 구성될 수 있다. 도 22의 예에서, 비디오 인코더(200)는 복수의 기능 컴포넌트를 포함한다. 본 개시내용서 설명된 기술들은 비디오 인코더(200)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예에서, 프로세서는 본 개시내용에서 설명된 기술들 중 임의의 것 또는 모든 기술들을 수행하도록 구성될 수도 있다.
비디오 인코더(200)의 기능 컴포넌트들은, 파티션 유닛(201), 모드 선택 유닛(203), 모션 추정 유닛(204), 모션 보상 유닛(205) 및 인트라 예측 유닛(206)을 포함할 수 있는 예측 유닛(202), 잔차 생성 유닛(207), 변환 유닛(208), 양자화 유닛(209), 역양자화 유닛(210), 역변환 유닛(211), 복원 유닛(212), 버퍼(213), 및 엔트로피 인코딩 유닛(214)을 포함할 수 있다.
다른 예들에서, 비디오 인코더(200)는, 더 많거나 더 적거나 또는 상이한 기능 컴포넌트들을 포함할 수 있다. 한 예에서, 예측 유닛(202)은 인트라 블록 복사(IBC) 유닛을 포함할 수 있다. IBC 유닛은 적어도 하나의 기준 픽처가 현재 비디오 블록이 위치해 있는 픽처인 IBC 모드에서 예측을 수행할 수 있다.
또한, 모션 추정 유닛(204) 및 모션 보상 유닛(205) 등의 일부 컴포넌트는 고도로 통합될 수 있지만, 설명의 목적을 위해 도 22의 예에서는 별개로 표시된다.
파티션 유닛(201)은 픽처를 하나 이상의 비디오 블록으로 파티셔닝할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300) 는 다양한 비디오 블록 크기를 지원할 수 있다.
모드 선택 유닛(203)은, 예를 들어, 에러 결과들에 기초하여, 코딩 모드들 중 하나, 즉, 인트라 또는 인터 코딩 모드를 선택할 수 있고, 결과적인 인트라-또는 인터-코딩된 블록을 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하고 복원 유닛(212)에 제공하여 기준 픽처로서 이용하기 위해 인코딩된 블록을 복원할 수 있다. 일부 예에서, 모드 선택 유닛(203)은 예측이 인터 예측 신호 및 인트라 예측 신호에 기초하는 CIIP(intra and inter predication) 모드의 조합을 선택할 수 있다. 모드 선택 유닛(203)은 또한, 인터 예측의 경우 블록에 대하여 모션 벡터에 대한 해상도(예를 들어, 서브픽셀 또는 정수 픽셀 정밀도)를 선택할 수 있다.
현재 비디오 블록에 관한 인터 예측을 수행하기 위해, 모션 추정 유닛(204)은, 버퍼(213)로부터의 하나 이상의 기준 프레임을 현재 비디오 블록과 비교함으로써 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)은, 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 픽처들의 모션 정보 및 디코딩된 샘플들에 기초하여 현재 비디오 블록에 대한 예측된 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)은, 예를 들어 현재 비디오 블록이, I 슬라이스, P 슬라이스, 또는 B 슬라이스에 있는지에 따라 현재 비디오 블록에 대해 상이한 동작들을 수행할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 일방 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 기준 비디오 블록에 대해 목록 0 또는 목록 1의 기준 픽처들을 검색할 수도 있다. 그 다음, 모션 추정 유닛(204)은, 기준 비디오 블록, 및 현재 비디오 블록과 기준 비디오 블록 사이의 공간적 변위를 나타내는 모션 벡터를 포함하는 목록 0 또는 목록 1의 기준 픽처를 나타내는 기준 인덱스를 생성할 수 있다. 모션 추정 유닛(204)은, 기준 인덱스, 예측 방향 표시자, 및 모션 벡터를, 현재 비디오 블록의 모션 정보로서 출력할 수 있다. 모션 보상 유닛(205)은, 현재 비디오 블록의 모션 정보가 나타내는 기준 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 양방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 기준 비디오 블록에 대해 목록 0에서 기준 픽처들을 검색할 수 있고, 또한, 현재 비디오 블록에 대한 또 다른 기준 비디오 블록에 대해 목록 1에서 기준 픽처들을 검색할 수도 있다. 그 다음, 모션 추정 유닛(204)은, 기준 비디오 블록들과 현재 비디오 블록 사이의 공간적 변위들을 나타내는 모션 벡터들 및 기준 비디오 블록들을 포함하는 목록 0 및 목록 1의 기준 픽처들을 나타내는 기준 인덱스들을 생성할 수 있다. 모션 추정 유닛(204)은, 현재 비디오 블록의 모션 정보로서 현재 비디오 블록의 기준 인덱스들 및 모션 벡터들을 출력할 수 있다. 모션 보상 유닛(205)은, 현재 비디오 블록의 모션 정보가 나타내는 기준 비디오 블록들에 기초하여 현재 비디오 블록의 예측된 비디오 블록을 생성할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 디코더의 디코딩 처리를 위한 모션 정보의 전체 세트를 출력할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 현재 비디오에 대한 모션 정보의 전체 세트를 출력하지 않을 수도 있다. 오히려, 모션 추정 유닛(204)은 또 다른 비디오 블록의 모션 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 모션 정보와 충분히 유사하다고 결정할 수 있다.
한 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에서, 현재 비디오 블록이 또 다른 비디오 블록과 동일한 모션 정보를 갖는다는 것을 비디오 디코더(300)에 나타내는 값을 표시할 수 있다.
또 다른 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에서, 또 다른 비디오 블록 및 모션 벡터 차이(MVD)를 식별할 수 있다. 모션 벡터 차이는, 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 사이의 차이를 나타낸다. 비디오 디코더(300)는 표시된 비디오 블록의 모션 벡터와 모션 벡터 차이를 이용하여 현재 비디오 블록의 모션 벡터를 결정할 수 있다.
위에서 논의된 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측 시그널링 기술들의 2개의 예는 AMVP(advanced motion vector predication) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 관해 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대해 인트라 예측을 수행할 때, 인트라 예측 유닛(206)은 동일한 픽처 내의 다른 비디오 블록들의 디코딩된 샘플들에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터는 예측된 비디오 블록 및 다양한 신택스 요소를 포함할 수 있다.
잔차 생성 유닛(207)은 현재 비디오 블록으로부터 현재 비디오 블록의 예측된 비디오 블록(들)을 차감(예를 들어, 빼기 부호로 표시)함으로써 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록 내의 샘플들의 상이한 샘플 성분들에 대응하는 잔차 비디오 블록들을 포함할 수 있다.
다른 예들에서, 현재 비디오 블록에 대한 잔차 데이터가 없을 수 있고, 예를 들어 스킵 모드에서, 잔차 생성 유닛(207)은 차감 동작을 수행하지 않을 수 있다.
변환 처리 유닛(208)은, 현재 비디오 블록과 연관된 잔차 비디오 블록에 하나 이상의 변환을 적용함으로써 현재 비디오 블록에 대한 하나 이상의 변환 계수 비디오 블록을 생성할 수 있다.
변환 처리 유닛(208)이 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 생성한 후, 양자화 유닛(209)은 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210) 및 역변환 유닛(211)은 변환 계수 비디오 블록에 역양자화 및 역변환을 각각 적용하여, 변환 계수 비디오 블록으로부터 잔차 비디오 블록을 복원할 수 있다. 복원 유닛(212)은, 버퍼(213)에 저장하기 위한 현재 블록과 연관된 복원된 비디오 블록을 생성하기 위해 예측 유닛(202)에 의해 생성된 하나 이상의 예측된 비디오 블록으로부터의 대응하는 샘플들에 복원된 잔차 비디오 블록을 추가할 수 있다.
복원 유닛(212)이 비디오 블록을 복원한 후, 루프 필터링 동작이 수행되어 비디오 블록에서 비디오 블록화 아티팩트들을 감소시킬 수 있다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 기능 컴포넌트들로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)이 데이터를 수신할 때, 엔트로피 인코딩 유닛(214)은 하나 이상의 엔트로피 인코딩 동작들 수행하여 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력할 수 있다.
도 19는 도 21에 나타낸 시스템(100)의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 한 예를 나타내는 블록도이다.
비디오 디코더(300)는 본 개시내용의 기술들 중 임의의 것 또는 전부를 수행하도록 구성될 수 있다. 도 19의 예에서, 비디오 디코더(300)는 복수의 기능 컴포넌트를 포함한다. 본 개시내용에서 설명된 기술들은 비디오 디코더(300)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예에서, 프로세서는 본 개시내용에서 설명된 기술들 중 임의의 것 또는 모든 기술들을 수행하도록 구성될 수도 있다.
도 19의 예에서, 비디오 디코더(300)는, 엔트로피 디코딩 유닛(301), 모션 보상 유닛(302), 인트라 예측 유닛(303), 역양자화 유닛(304), 역변환 유닛(305), 및 복원 유닛(306) 및 버퍼(307)를 포함한다. 비디오 디코더(300)는, 일부 예에서, 비디오 인코더(200)(도 22)에 관하여 설명된 인코딩 패스와는 대체로 역 관계를 이루는 디코딩 패스를 수행할 수 있다.
엔트로피 디코딩 유닛(301)은 인코딩된 비트스트림을 회수할 수 있다. 인코딩된 비트스트림은 엔트로피 코딩된 비디오 데이터(예를 들어, 비디오 데이터의 인코딩된 블록들)를 포함할 수 있다. 엔트로피 디코딩 유닛(301)은 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터, 모션 보상 유닛(302)은, 모션 벡터들, 모션 벡터 정밀도, 기준 픽처 목록 인덱스들, 및 기타의 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)은, 예를 들어, AMVP 및 병합 모드를 수행함으로써 이러한 정보를 결정할 수 있다.
모션 보상 유닛(302)은, 아마도 보간 필터들에 기초한 보간을 수행하여, 모션 보상된 블록들을 생성할 수 있다. 서브픽셀 정밀도로 이용될 보간 필터들에 대한 식별자들이 신택스 요소들에 포함될 수 있다.
모션 보상 유닛(302)은, 기준 블록의 정수이하 픽셀들에 대한 보간된 값들을 계산하기 위해 비디오 블록의 인코딩 동안에 비디오 인코더(20)에 의해 이용되는 보간 필터들을 이용할 수 있다. 모션 보상 유닛(302)은 수신된 신택스 정보에 따라 비디오 인코더(200)에 의해 이용되는 보간 필터들을 결정할 수 있고 보간 필터들을 이용하여 예측 블록들을 생성할 수 있다.
모션 보상 유닛(302)은, 인코딩된 비디오 시퀀스의 프레임(들) 및/또는 슬라이스(들)을 인코딩하는데 이용되는 블록들의 크기를 결정하기 위해 신택스 정보, 인코딩된 비디오 시퀀스의 픽처의 각각의 매크로블록이 어떻게 파티션화되어 있는지를 기술하는 파티션 정보, 각각의 파티션이 어떻게 인코딩되어 있는지를 나타내는 모드들, 각각의 인터-인코딩된 블록에 대한 하나 이상의 기준 프레임(및 기준 프레임 목록들), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 기타의 정보 중 일부를 이용한다.
인트라 예측 유닛(303)은 공간적으로 인접한 블록들로부터 예측 블록을 형성하기 위해 예를 들어 비트스트림에서 수신된 인트라 예측 모드들을 이용할 수 있다. 역양자화 유닛(303)은, 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에 의해 디코딩되는 양자화된 비디오 블록 계수들을 역양자화, 즉, 양자화해제한다. 역변환 유닛(303)은 역변환을 적용한다.
복원 유닛(306)은 디코딩된 블록들을 형성하기 위해 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성된 대응하는 예측 블록들과 잔차 블록들을 합산할 수 있다. 원한다면, 블록현상 아티팩트를 제거하기 위하여 디블록킹 필터도 역시 적용되어 디코딩된 블록들을 필터링한다. 그 다음, 디코딩된 비디오 블록들은 버퍼(307)에 저장되며, 버퍼(307)는 후속 모션 보상/인트라 예측을 위한 기준 블록들을 제공하고, 또한, 디스플레이 디바이스 상의 프리젠테이션을 위해 디코딩된 비디오를 생성한다.
도 20은 여기서 개시된 다양한 기술들이 구현될 수 있는 한 예시적인 비디오 처리 시스템(2000)을 보여주는 블록도이다. 다양한 구현은 시스템(2000)의 컴포넌트들 중 일부 또는 전부를 포함할 수 있다. 시스템(2000)은 비디오 콘텐츠를 수신하기 위한 입력(2002)을 포함할 수 있다. 비디오 콘텐츠는, 원시 또는 압축되지 않은 포맷, 예를 들어 8 또는 10비트 다중 컴포넌트 픽셀 값들로 수신될 수 있거나, 압축되거나 인코딩된 포맷일 수 있다. 입력(2002)은, 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예는, Ethernet, 수동 광 네트워크(passive optical network)(PON) 등의 유선 인터페이스들, 및 Wi-Fi 또는 셀룰러 인터페이스들 등의 무선 인터페이스들을 포함한다.
시스템(2000)은, 본 문서에서 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(2004)를 포함할 수 있다. 코딩 컴포넌트(2004)는, 비디오의 코딩된 표현을 생성하기 위해 입력(2002)으로부터 코딩 컴포넌트(2004)의 출력으로 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은, 때때로, 비디오 압축 또는 비디오 트랜스코딩 기술들이라고도 한다. 코딩 컴포넌트(2004)의 출력은, 컴포넌트(2006)에 의해 표현되는 바와 같이, 접속된 통신을 통해 저장되거나 전송될 수 있다. 입력(2002)에서 수신된 비디오의 저장되거나 전달된 비트스트림(또는 코딩된) 표현은, 디스플레이 인터페이스(2010)로 전송되는 픽셀 값들 또는 디스플레이가능한 비디오를 생성하기 위해 컴포넌트(2008)에 의해 이용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축해제라고도 불린다. 더욱이, 소정의 비디오 처리 동작들은 "코딩" 동작들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 동작들은 인코더에서 이용되고, 코딩의 결과들을 역전시키는 대응하는 디코딩 툴들 또는 동작들은 디코더에 의해 수행될 것이라는 것을 이해할 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예들은, USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 Displayport 등을 포함할 수 있다. 저장 인터페이스들의 예들은, SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명된 기술들은, 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 전화들, 랩탑들, 스마트폰들, 또는 기타의 디바이스들 등의 다양한 전자 디바이스에 구현될 수 있다.
일부 실시예에서, ALWIP 모드 또는 MIP 모드는, 비디오의 이전에 코딩된 샘플들에 관해, 경계 다운샘플링 동작(또는 평균화 동작)을 수행한 후, 행렬 벡터 곱셈 동작을 수행하고, 선택적으로(또는 선택사항으로서) 업샘플링 동작(또는 선형 보간 동작)을 수행함으로써, 현재 비디오 블록의 예측 블록을 계산하는데 이용된다. 일부 실시예에서, ALWIP 모드 또는 MIP 모드는, 비디오의 이전에 코딩된 샘플들에 관해, 경계 다운샘플링 동작(또는 평균화 동작)을 수행한 후, 행렬 벡터 곱셈 동작을 수행함으로써, 현재 비디오 블록의 예측 블록을 계산하는데 이용된다. 일부 실시예에서, ALWIP 모드 또는 MIP 모드는 또한, 행렬 벡터 곱셈 동작을 수행한 후에 업샘플링 동작(또는 선형 보간 동작)을 수행할 수 있다.
도 23은 개시된 기술에 따른, 행렬 기반 인트라 예측을 위한 또 다른 예시적인 방법(2300)의 예시적인 플로차트를 도시한다. 동작(2302)은, 다수의 비디오 블록들을 포함하는 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 기초하여 행렬 기반 인트라 예측(MIP) 툴에 대한 최대 가능성 모드(MPM) 목록을 생성하는 것을 포함하며, 여기서 MIP 툴은, 변환 동안, 비디오의 이전에 코딩된 샘플들에 대해, 경계 다운샘플링 동작을 수행하고 뒤이어서 행렬 벡터 곱셈 동작을 수행하며, 선택적으로 뒤이어서 업샘플링 동작을 수행하는 것에 의해 현재 비디오 블록의 예측 블록을 결정하는 것을 포함하고, 여기서 규칙은 MIP 모드들의 수와 다수의 비디오 블록들의 치수들 간의 매핑을 지정한다. 동작(2304)은 생성에 기초하여 변환을 수행하는 것을 포함한다.
방법(2300)의 일부 실시예들에서, 규칙은 MIP 모드들의 수가 상이한 치수들의 블록들에 대해 동일하다는 것을 지정한다. 방법(2300)의 일부 실시예들에서, MIP 모드들의 수는 11과 동일하다. 방법(2300)의 일부 실시예들에서, 규칙은 현재 비디오 블록의 치수의 식별자가 0과 동일한 것에 응답하여 MPM 목록이 {10, 5, 1}을 포함한다는 것을 지정한다. 방법(2300)의 일부 실시예들에서, 규칙은 현재 비디오 블록의 치수의 식별자가 1과 동일한 것에 응답하여 MPM 목록이 {9, 7, 1}을 포함한다는 것을 지정한다. 방법(2300)의 일부 실시예들에서, 규칙은 현재 비디오 블록의 치수의 식별자가 2와 동일한 것에 응답하여 MPM 목록이 {6, 1, 8}을 포함한다는 것을 지정한다. 방법(2300)의 일부 실시예들에서, 규칙은 현재 비디오 블록에 대한 MPM 목록이 이웃 비디오 블록에 대한 다른 MPM 목록과 동일하다는 것을 지정한다.
도 24는 개시된 기술에 따른, 행렬 기반 인트라 예측을 위한 또 다른 예시적인 방법(2400)의 예시적인 플로차트를 도시한다. 동작(2402)은 규칙에 기초하여 비디오의 크로마 비디오 블록에 적용되는 2차 변환 툴의 부가 정보를 사용하여 크로마 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 것을 포함하며, 여기서 2차 변환 툴은, 규칙에 기초하여 적용될 때, 인코딩 동안, 양자화 이전에 크로마 비디오 블록의 잔차에 적용되는 순방향 1차 변환의 출력에 순방향 2차 변환을 적용하는 것, 또는 디코딩 동안, 역방향 1차 변환을 적용하기 전에 크로마 비디오 블록의 역양자화의 출력에 역방향 2차 변환을 적용하는 것을 포함하고, 여기서 부가 정보가 비트스트림 표현에 코딩되는 방식은 대응하는 루마 비디오 블록의 코딩 모드에 의존하지 않는다.
방법(2400)의 일부 실시예들에서, 코딩 모드는 대응하는 루마 비디오 블록의 예측 블록이, 비디오의 이전에 코딩된 샘플들에 대해, 경계 다운샘플링 동작을 수행하고 뒤이어서 행렬 벡터 곱셈 동작을 수행하며, 선택적으로 뒤이어서 업샘플링 동작을 수행하는 것에 의해 결정되는 행렬 기반 인트라 예측 모드(MIP)를 포함한다. 방법(2400)의 일부 실시예들에서, 2차 변환 툴은 저주파 분리 불가능 변환(LFNST) 툴을 포함한다. 방법(2400)의 일부 실시예들에서, 규칙은 2차 변환 툴이 크로마 비디오 블록에 적용되는지 여부가 대응하는 루마 비디오 블록의 코딩 모드에 의존하지 않는다는 것을 지정한다. 방법(2400)의 일부 실시예들에서, 규칙은 대응하는 루마 비디오 블록이 코딩 모드를 사용하여 코딩될 때 2차 변환 툴이 크로마 비디오 블록에 적용된다는 것을 지정한다. 방법(2400)의 일부 실시예들에서, 크로마 비디오 블록은 이중 트리 구조 또는 로컬 이중 트리 구조 내에 있다.
방법(2400)의 일부 실시예들에서, 규칙은 크로마 비디오 블록이 이중 트리 구조 내에 있는 경우에 LFNST 툴이 크로마 비디오 블록에 적용되는지 여부가 대응하는 루마 비디오 블록이 행렬 기반 인트라 예측(MIP) 코딩 모드를 사용하여 코딩되는지 여부에 의존하지 않는다는 것을 지정한다. 방법(2400)의 일부 실시예들에서, 규칙은 LFNST 툴이 크로마 비디오 블록에 적용되는지 여부가 크로마 비디오 블록이 MxN(단, M 및 N은 정수들임)보다 작지 않은 치수를 갖는지 여부에 의존하지 않는다는 것을 지정한다. 방법(2400)의 일부 실시예들에서, M = 16이고 N = 16이다. 방법(2400)의 일부 실시예들에서, 크로마 비디오 블록은 이중 트리 구조 내에 있고, 규칙은 LFNST 툴이 크로마 비디오 블록에 적용되는지 여부가 크로마 비디오 블록이 코딩 모드를 사용하여 코딩되는지 여부에 의존하지 않는다는 것을 지정한다. 방법(2400)의 일부 실시예들에서, 코딩 모드는 크로마 비디오 블록에 대해 디스에이블된다.
방법(2400)의 일부 실시예들에서, 크로마 비디오 블록은 이중 트리 구조 내에 있고, 비트스트림 표현에서의 LFNST 툴의 인덱스의 시그널링은 대응하는 루마 비디오 블록이 코딩 모드를 사용하여 코딩되는지 여부를 나타내는 신택스 요소의 시그널링에 의존하지 않는다. 방법(2400)의 일부 실시예들에서, 대응하는 루마 비디오 블록은 단일 트리 구조 또는 이중 트리 구조 내에 있고, 규칙은 LFNST 툴이 크로마 비디오 블록에 적용되는지 여부가 대응하는 루마 비디오 블록이 코딩 모드를 사용하여 코딩되는지 여부에 의존한다는 것을 지정한다. 방법(2400)의 일부 실시예들에서, 비트스트림 표현에서의 LFNST 툴의 인덱스의 시그널링은 코딩 모드를 사용하여 코딩되는 대응하는 루마 비디오 블록의 치수들에 의존한다.
방법(2400)의 일부 실시예들에서, 크로마 비디오 블록이 이중 트리 구조 내에 있지 않고, 대응하는 루마 비디오 블록이 코딩 모드를 사용하여 코딩되며, 대응하는 루마 비디오 블록의 최소 폭 또는 최소 높이가 16 픽셀보다 크거나 같은 것에 응답하여 LFNST 툴의 인덱스가 비트스트림 표현에서 시그널링된다. 방법(2400)의 일부 실시예들에서, 비트스트림 표현이 부가 정보를 포함하는지 여부는 크로마 비디오 블록과 연관된 트리 유형에 기초한다. 방법(2400)의 일부 실시예들에서, 비트스트림 표현이 부가 정보를 포함하는지 여부는 크로마 비디오 블록이 이중 트리 구조 내에 있는 것에 기초한다. 방법(2400)의 일부 실시예들에서, 이중 트리 구조는 로컬 이중 트리 구조를 포함한다. 방법(2400)의 일부 실시예들에서, 이중 트리 구조는 로컬 이중 트리 구조를 제외한다.
방법(2400)의 일부 실시예들에서, 조건 A가 참인 것은 코딩 모드가 대응하는 루마 비디오 블록에 적용되지 않고 LFNST 툴에 의해 고려되는 크로마 비디오 블록의 폭 및 높이가 정수 N보다 크거나 같은 것으로서 정의되고, 조건 B가 참인 것은 현재 비디오 블록이 크로마 비디오 블록이고 크로마 비디오 블록이 이중 트리 구조 또는 로컬 이중 트리 구조 내에 있는 것으로서 정의되며, LFNST 툴이 크로마 비디오 블록에 적용되는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 B에 의존한다. 방법(2400)의 일부 실시예들에서, 조건 B가 참일 때, LFNST 툴이 크로마 비디오 블록에 적용되는지 여부를 결정하기 위해 조건 A가 사용되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 B가 참이 아닐 때, 조건 A가 참이 아닌 것에 응답하여 LFNST 툴이 크로마 비디오 블록에 적용되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 A가 참인 것은 코딩 모드가 대응하는 루마 비디오 블록에 적용되지 않고 LFNST 툴에 의해 고려되는 크로마 비디오 블록의 폭 및 높이가 정수 N보다 크거나 같은 것으로서 정의되고, 조건 B가 참인 것은 현재 비디오 블록이 크로마 비디오 블록이고 크로마 비디오 블록이 이중 트리 구조 또는 로컬 이중 트리 구조 내에 있는 것으로서 정의되며, LFNST 툴에 관한 정보의 전부 또는 일부가 비트스트림 표현에서 시그널링되는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 B에 의존한다.
방법(2400)의 일부 실시예들에서, 조건 B가 참일 때, LFNST 툴에 관한 정보의 전부 또는 일부가 비트스트림 표현에서 시그널링되는지 여부를 결정하기 위해 조건 A가 사용되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 B가 참이 아닐 때, 조건 A가 참이 아닌 것에 응답하여 LFNST 툴에 관한 정보의 전부 또는 일부가 비트스트림 표현에서 시그널링되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 A가 참인 것은 코딩 모드가 대응하는 루마 비디오 블록에 적용되지 않고 LFNST 툴에 의해 고려되는 크로마 비디오 블록의 폭 및 높이가 정수 N보다 크거나 같은 것으로서 정의되고, 조건 B가 참인 것은 현재 비디오 블록이 크로마 비디오 블록이고 크로마 비디오 블록이 이중 트리 구조 또는 로컬 이중 트리 구조 내에 있는 것으로서 정의되며, 조건 C가 참인 것은 현재 비디오 블록이 루마 비디오 블록이고 대응하는 루마 비디오 블록이 이중 트리 구조 또는 로컬 이중 트리 구조 내에 있는 것으로서 정의되고, LFNST 툴이 크로마 비디오 블록에 적용되는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 C에 의존한다.
방법(2400)의 일부 실시예들에서, 조건 C가 참이 아닐 때, LFNST 툴이 크로마 비디오 블록에 적용되는지 여부를 결정하기 위해 조건 A가 사용되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 B가 참이 아닐 때, 조건 A가 참이 아닌 것에 응답하여 LFNST 툴이 크로마 비디오 블록에 적용되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 A가 참인 것은 코딩 모드가 대응하는 루마 비디오 블록에 적용되지 않고 LFNST 툴에 의해 고려되는 크로마 비디오 블록의 폭 및 높이가 정수 N보다 크거나 같은 것으로서 정의되고, 조건 B가 참인 것은 현재 비디오 블록이 크로마 비디오 블록이고 크로마 비디오 블록이 이중 트리 구조 또는 로컬 이중 트리 구조 내에 있는 것으로서 정의되며, 조건 C가 참인 것은 현재 비디오 블록이 루마 비디오 블록이고 대응하는 루마 비디오 블록이 이중 트리 구조 또는 로컬 이중 트리 구조 내에 있는 것으로서 정의되고, LFNST 툴에 관한 정보의 전부 또는 일부가 비트스트림 표현에서 시그널링되는지 여부를 결정하기 위해 조건 A가 사용되는지 여부는 조건 C에 의존한다.
방법(2400)의 일부 실시예들에서, 조건 C가 참이 아닐 때, LFNST 툴에 관한 정보의 전부 또는 일부가 비트스트림 표현에서 시그널링되는지 여부를 결정하기 위해 조건 A가 사용되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 B가 참이 아닐 때, 조건 A가 참이 아닌 것에 응답하여 LFNST 툴에 관한 정보의 전부 또는 일부가 비트스트림 표현에서 시그널링되지 않는다. 방법(2400)의 일부 실시예들에서, 조건 A가 참인 것은 코딩 모드가 대응하는 루마 비디오 블록에 적용되지 않고 LFNST 툴에 의해 고려되는 크로마 비디오 블록의 폭 및 높이가 정수 N보다 크거나 같은 것으로서 정의되고, 여기서, 단일 트리 구조의 경우, 조건 A는 LFNST 툴이 대응하는 루마 비디오 블록에 적용되는지 여부를 결정하는 데만 사용된다.
방법(2400)의 일부 실시예들에서, 조건 A가 참이 아니고 LFNST 툴이 크로마 비디오 블록에 적용 가능한 것에 응답하여 LFNST 툴이 대응하는 루마 비디오 블록에 적용되지 않고 LFNST 툴이 크로마 비디오 블록에 적용된다. 방법(2400)의 일부 실시예들에서, LFNST 툴이 크로마 비디오 블록에 적용되는지 여부 및/또는 어떻게 적용되는지를 제어하기 위해 LFNST 툴에 관한 모든 또는 부분 정보가 비트스트림 표현에서 시그널링된다. 방법(2400)의 일부 실시예들에서, 2차 변환 툴의 부가 정보의 인코딩 또는 디코딩은 색상 성분들에 기초하여 카테고리화된다. 방법(2400)의 일부 실시예들에서, 부가 정보의 개별 부분이 각각의 색상 성분에 대해 인코딩 또는 디코딩된다. 방법(2400)의 일부 실시예들에서, 색상 성분들은 루마 성분, 청색 차이 크로마 성분, 및 적색 차이 크로마 성분을 포함한다. 방법(2400)의 일부 실시예들에서, 하나의 색상 성분에 대한 부가 정보의 개별 부분은 다른 색상 성분의 부가 정보의 개별 부분과 상이하다.
방법(2400)의 일부 실시예들에서, 청색 차이 크로마 성분과 적색 차이 크로마 성분은 코딩 모드의 동일한 다른 부가 정보를 공유한다. 방법(2400)의 일부 실시예들에서, 부가 정보의 제1 개별 부분은 루마 성분에 대해 인코딩 또는 디코딩되고, 여기서 부가 정보의 제2 개별 부분은 다수의 크로마 성분들에 대해 인코딩 또는 디코딩된다. 방법(2400)의 일부 실시예들에서, 루마 성분에 대한 부가 정보의 제1 개별 부분은 다수의 크로마 성분들의 부가 정보의 제2 개별 부분과 상이하다. 방법(2400)의 일부 실시예들에서, 변환을 수행하는 단계는 색상 성분들에 기초하여 카테고리화되는 코딩 모드의 다른 부가 정보의 인코딩 또는 디코딩을 더 포함한다. 방법(2400)의 일부 실시예들에서, 다른 부가 정보의 개별 부분은 각각의 색상 성분에 대해 인코딩 또는 디코딩된다. 방법(2400)의 일부 실시예들에서, 색상 성분들은 루마 성분, 청색 차이 크로마 성분, 및 적색 차이 크로마 성분을 포함한다. 방법(2400)의 일부 실시예들에서, 하나의 색상 성분에 대한 다른 부가 정보의 개별 부분은 다른 색상 성분의 다른 부가 정보의 개별 부분과 상이하다. 방법(2400)의 일부 실시예들에서, 청색 차이 크로마 성분과 적색 차이 크로마 성분은 코딩 모드의 동일한 다른 부가 정보를 공유한다.
방법(2400)의 일부 실시예들에서, 다른 부가 정보의 제1 개별 부분은 루마 성분에 대해 인코딩 또는 디코딩되고, 여기서 다른 부가 정보의 제2 개별 부분은 다수의 크로마 성분들에 대해 인코딩 또는 디코딩된다. 방법(2400)의 일부 실시예들에서, 루마 성분에 대한 부가 정보의 제1 개별 부분은 다수의 크로마 성분들의 부가 정보의 제2 개별 부분과 상이하다. 방법(2300) 및/또는 방법(2400)의 일부 실시예들에서, 변환은 비트스트림 표현을 디코딩하여 크로마 비디오 블록 또는 현재 비디오 블록을 생성하는 것을 포함한다. 방법(2300) 및/또는 방법(2400)의 일부 실시예들에서, 변환은 비디오를 인코딩하여 비트스트림 표현을 생성하는 것을 포함한다.
전술한 내용으로부터, 본 개시된 기술의 특정한 실시예들이 예시의 목적으로 여기서 설명되었지만, 본 발명의 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 본 개시된 기술은 첨부된 청구항들에 의한 경우를 제외하고는 제한되지 않는다.
본 특허 문서에서 설명된 주제와 기능적 동작들의 구현은, 본 명세서에서 개시된 구조들 및 그들의 구조적 균등물들을 포함한, 다양한 시스템들, 디지털 전자 회로, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에서 설명된 주제의 구현은, 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위한 유형의 및 비일시적인 컴퓨터 판독가능한 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독가능한 매체는, 머신 판독가능한 저장 디바이스, 머신 판독가능한 저장 기판, 메모리 디바이스, 머신 판독가능한 전파된 신호에 영향을 미치는 물질의 조성, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 처리 유닛 또는"데이터 처리 장치"는, 예로서 프로그램가능한 프로세서, 컴퓨터, 또는 복수의 프로세서나 컴퓨터를 포함한, 데이터를 처리하기 위한 모든 장치, 디바이스, 및 머신을 포괄한다. 장치는, 하드웨어 외에도, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합으로 구성된 코드를 포함할 수 있다.
(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려진) 컴퓨터 프로그램은, 컴파일형 또는 인터프리터형 언어를 포함한 임의의 형태의 프로그래밍 언어로 작성될 수 있고-, 단독형 프로그램이나, 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 이용하기에 적합한 기타의 유닛을 포함한, 임의 형태로 배치될 수 있다. 컴퓨터 프로그램은 반드시 파일 시스템 내의 파일에 대응할 필요는 없다. 프로그램은 다른 프로그램이나 데이터를 보유하고 있는 파일(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)의 일부로서, 해당 프로그램에 전용된 단일 파일에, 또는 복수의 조율된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램, 또는 코드의 부분들을 저장하고 있는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터에서, 또는 적어도 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐 분산되고 통신 네트워크를 통해 상호접속된 복수의 컴퓨터에서 실행되도록 배치될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은, 입력 데이터에 관해 동작하고 출력을 생성함으로써 하나 이상의 컴퓨터 프로그램을 실행하여 기능을 수행하는 하나 이상의 프로그램가능한 프로세서에 의해 수행될 수 있다. 프로세스들과 로직 흐름들은 또한, 특별 목적 로직 회로, 예를 들어, FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(application specific integrated circuit; 주문형 집적 회로)에 의해 수행될 수 있고, 또한 장치가 이들로서 구현될 수 있다.
컴퓨터 프로그램을 실행하기에 적합한 프로세서로는, 예로서, 범용 마이크로프로세서 및 특별 목적 마이크로프로세서 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서가 포함된다. 일반적으로, 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 양쪽 모두로부터 명령어와 데이터를 수신할 것이다. 컴퓨터의 본질적 요소들은, 명령어를 수행하기 위한 프로세서와, 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어, 자기, 광자기 디스크, 또는 광 디스크를 포함하거나, 이들로부터 데이터를 수신, 이들에게 데이터를 전송, 또는 양쪽 모두를 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 이러한 디바이스를 가질 필요는 없다. 컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독가능한 매체는, 예로서 반도체 메모리 디바이스들, 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스를 포함한, 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특별 목적 로직 회로에 의해 보충되거나, 이에 병합될 수 있다.
도면들과 함께, 본 명세서는, 단지 예시인 것으로 간주되어야 하며, 여기서, 예시란 예를 의미한다. 명세서에서 사용될 때 "또는"의 사용은, 문맥상 명시적으로 달리 나타내지 않는 한, "및/또는"을 포함하는 것을 의도한다.
본 특허 문서가 많은 특정한 사항들을 포함하지만, 이들은 본 발명의 범위의 또는 청구 범위에 관한 제한으로서 해석되어서는 안 되고, 특정한 발명의 특정한 실시예들 고유의 피처들의 설명으로서 해석되어야 한다. 별개의 실시예들의 정황에서 본 특허 문서에서 설명된 소정 피처들은 또한, 단일의 실시예에서 조합하여 구현될 수 있다. 역으로, 단일 실시예의 정황에서 설명된 다양한 피처들은 또한, 복수의 실시예에서 별개로 구현되거나 임의의 적절한 하위조합(subcombination)으로 구현될 수 있다. 게다가, 피처들이 상기에서 소정 조합으로 작용하는 것으로 설명되거나 심지어 그와 같이 처음 청구되더라도, 청구된 조합으로부터의 하나 이상의 피처들은 일부 경우에는 그 조합으로부터 삭제될 수도 있고, 청구된 조합은 하위조합이나 하위조합의 변형에 관한 것일 수도 있다.
유사하게, 동작들이 도면에서 특정 순서로 도시되더라도, 이것은, 바람직한 결과를 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적 순서로 수행될 것을 요구하거나, 도시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 또한, 본 특허 문헌에서 설명된 실시예들에서의 다양한 시스템 컴포넌트들의 분리는 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
단지 몇 개의 구현 및 예들만이 설명되었지만, 본 특허 문서에서 설명되고 예시된 내용에 기초하여 다른 구현, 개선 및 변형이 이루어질 수 있다.