KR102401946B1 - 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 - Google Patents
인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 Download PDFInfo
- Publication number
- KR102401946B1 KR102401946B1 KR1020217015749A KR20217015749A KR102401946B1 KR 102401946 B1 KR102401946 B1 KR 102401946B1 KR 1020217015749 A KR1020217015749 A KR 1020217015749A KR 20217015749 A KR20217015749 A KR 20217015749A KR 102401946 B1 KR102401946 B1 KR 102401946B1
- Authority
- KR
- South Korea
- Prior art keywords
- intra
- block
- prediction
- picture
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 62
- 238000000638 solvent extraction Methods 0.000 claims description 35
- 238000006073 displacement reaction Methods 0.000 claims description 21
- 230000011664 signaling Effects 0.000 abstract description 22
- 238000001914 filtration Methods 0.000 description 28
- 238000004891 communication Methods 0.000 description 26
- 239000000872 buffer Substances 0.000 description 22
- 238000012545 processing Methods 0.000 description 18
- 241000023320 Luma <angiosperm> Species 0.000 description 15
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000003044 adaptive effect Effects 0.000 description 9
- 230000015654 memory Effects 0.000 description 8
- 238000013139 quantization Methods 0.000 description 8
- 230000001419 dependent effect Effects 0.000 description 7
- 238000005192 partition Methods 0.000 description 7
- 208000034188 Stiff person spectrum disease Diseases 0.000 description 6
- 229920010524 Syndiotactic polystyrene Polymers 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 208000012112 ischiocoxopodopatellar syndrome Diseases 0.000 description 6
- 238000002490 spark plasma sintering Methods 0.000 description 6
- 230000005055 memory storage Effects 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 4
- 101150114515 CTBS gene Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241000170567 Gollum Species 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013213 extrapolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/115—Selection of the code volume for a coding unit prior to coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
인트라 블록 카피 예측을 사용한 블록의 인코딩 또는 디코딩 분야에서의 혁신안은, 많은 상황에서 인트라 BC 예측된 블록에 대한 코딩 효율성을 향상시킨다. 예를 들면, 혁신안 중 몇몇은, 인트라 BC 예측된 블록이 참조 영역에 대하여 플립핑되는 블록 플립핑에 관련되는데, 참조 영역은 블록 벡터 값에 의해 나타내어질 수 있다. 다른 혁신안은, 현재의 인트라 BC 예측된 블록이 시그널링된 BV 차분을 사용하지만 잔차 데이터가 없는 스킵 모드의 시그널링에 관련된다.
Description
엔지니어는 디지털 비디오의 비트 레이트를 감소시키기 위해 압축(소스 코딩 또는 소스 인코딩이라고도 칭해짐)을 사용한다. 압축은 정보를 더 낮은 비트 레이트 형태로 변환하는 것에 의해 비디오 정보를 저장 및 송신하는 비용을 감소시킨다. 압축해제(decompression)(디코딩이라고도 칭해짐)는 압축된 형태로부터 원래의 정보의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
지난 이십 여년에 걸쳐, ITU-T H.261, H.262 (MPEG-2 또는 ISO/EC 13818-2), H.263 및 H.264 (MPEG-4 AVC 또는 ISO/IEC 14496-10) 표준, MPEG-1 (ISO/IEC 11172-2) 및 MPEG-4 비주얼(ISO/IEC 14496-2) 표준, 및 SMPTE 421M(VC-1) 표준을 비롯하여, 다양한 비디오 코덱 표준이 채택되었다. 보다 최근에는, H.265/HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 승인되었다. (예를 들면, 스케일러블 비디오 코딩/디코딩을 위한, 샘플 비트 깊이 또는 크로마 샘플링 레이트의 관점에서 충실도가 더 높은 비디오의 코딩/디코딩을 위한, 스크린 캡쳐 컨텐츠를 위한, 또는 멀티뷰 코딩/디코딩을 위한) H.265/HEVC 표준에 대한 확장안이 현재 개발 중에 있다. 비디오 코덱 표준은 통상적으로, 인코딩 및 디코딩에서 특정 피쳐가 사용될 때 비트스트림에서 파라미터를 상세히 설명하는, 인코딩된 비디오 비트스트림의 신택스(syntax)에 대한 옵션을 정의한다. 많은 경우에서, 비디오 코덱 표준은 또한, 디코딩에서의 일치하는 결과를 달성하기 위해 디코더가 수행해야 하는 디코딩 동작에 관한 상세를 제공한다. 코덱 표준 외에, 다양한 독점적 코덱 포맷이 인코딩된 비디오 비트스트림의 신택스에 대한 다른 옵션 및 대응하는 디코딩 동작을 정의한다.
인트라 블록 카피(block copy; "BC")는 H.265/HEVC 확장안에 대해 개발 중에 있는 예측 모드이다. 인트라 BC 예측 모드의 경우, 픽쳐(picture)에서의 현재 블록의 샘플 값은, 동일 픽쳐에서 이전에 재구성된 샘플 값을 사용하여 예측된다. 블록 벡터(block vector; "BV")는, 현재 블록으로부터, 예측을 위해 사용되는 이전에 재구성된 샘플 값을 포함하는 픽쳐에서의 한 영역까지의 변위를 나타낸다. BV는 비트스트림에서 시그널링된다. 인트라 BC 예측은 인트라 픽쳐 예측의 형태이다 - 픽쳐에서의 한 블록에 대한 인트라 BC 예측은 동일 픽쳐에서의 샘플 값 외에는 어떠한 샘플 값도 사용하지 않는다.
H.265/HEVC 표준에서 현재 규정되고 H.265/HEVC 표준에 대한 몇몇 참조 소프트웨어(reference software)에서 구현되는 바와 같이, 인트라 BC 예측 모드는 여러 문제점을 갖는다. 특히, 예측가능한 BC 변위를 갖는 블록의 코딩은 효율적으로 핸들링되지 않으며, 반전된 패턴을 갖는 컨텐츠에 대한 인트라 BC 예측은 효율적으로 핸들링되지 않는다.
요약하면, 상세한 설명은, 인트라 블록 카피(block copy; "BC") 예측을 사용하여 블록의 인코딩 또는 디코딩의 분야에서 혁신안을 제시한다. 예를 들면, 혁신안 중 몇몇은, 인트라 BC 예측된 블록(intra-BC-predicted block)이 참조 영역(reference region)에 대하여 플립핑되는 블록 플립핑(block flipping)에 관련되는데, 참조 영역은 블록 벡터(block vector; "BV") 값에 의해 나타내어질 수 있다. 다른 혁신안은, 현재의 인트라 BC 예측된 블록이 시그널링된 BV 차분(signaled BV differential)을 사용하지만 잔차 데이터(residual data)가 없는 스킵 모드의 시그널링에 관련된다. 많은 상황에서, 혁신안은 인트라 BC 예측된 블록에 대한 코딩 효율성을 향상시킨다.
본원에서 설명되는 혁신안의 제1 양태에 따르면, 이미지 또는 비디오 인코더는, 픽쳐에서의 참조 영역에 기초하여 픽쳐에서의 현재 블록(예를 들면, 코딩 단위, 예측 단위)에 대한 인트라 BC 예측 영역을 결정한다. 인트라 BC 예측 영역은 참조 영역에 대하여 플립핑된다. 예를 들면, 인트라 BC 예측 영역은 참조 영역에 대하여 수평으로 플립핑되거나, 참조 영역에 대하여 수직으로 플립핑되거나, 또는 참조 영역에 대하여 수평 및 수직 둘 다로 플립핑된다.
인코더는 인트라 BC 예측 영역을 사용하여 현재 블록을 인코딩하고, 인코딩된 데이터를 비트스트림에서 출력한다. 인코딩된 데이터는, 인트라 BC 예측 영역이 참조 영역에 대하여 플립핑되는지의 여부의 표시(indication)를 포함한다. 예를 들면, 표시는 비트스트림에서의 하나 이상의 신택스 엘리먼트(syntax element)인데, 신택스 엘리먼트는 현재 블록에 대해 또는 현재 블록을 포함하는 더 큰 블록에 대해 시그널링될 수 있다. 신택스 엘리먼트(들)는 플래그일 수 있는데, 각각의 플래그는 플립핑의 방향에 대한 결정을 나타낸다. 신택스 엘리먼트(들)는 다른 신택스 엘리먼트와 결합하여 코딩될 수 있거나 또는 비트스트림에서 별개로 시그널링될 수 있다.
대응하는 디코더는 인코딩된 데이터를 비트스트림에서 수신한다. 인코딩된 데이터는, 픽쳐에서의 현재 블록(예를 들면, 코딩 단위, 예측 단위)에 대한 인트라 BC 예측 영역이 그 픽쳐에서의 참조 영역에 대하여 플립핑되는지의 여부의 표시를 포함한다. 예를 들면, 표시는 비트스트림에서의 하나 이상의 신택스 엘리먼트(syntax element)인데, 신택스 엘리먼트는 현재 블록에 대해 또는 현재 블록을 포함하는 더 큰 블록에 대해 시그널링될 수 있다. 신택스 엘리먼트(들)는 플래그일 수 있는데, 각각의 플래그는 플립핑의 방향에 대한 결정을 나타낸다. 신택스 엘리먼트(들)는 다른 신택스 엘리먼트와 결합하여 코딩될 수 있거나 또는 비트스트림에서 별개로 시그널링될 수 있다.
디코더는, 픽쳐에서의 참조 영역에 기초하여 현재 블록에 대한 인트라 BC 예측 영역을 결정한다. 인트라 BC 예측 영역은 참조 영역에 대하여 (예를 들면, 수평으로 및/또는 수직으로) 플립핑된다. 디코더는 인트라 BC 예측 영역을 사용하여 현재 블록을 디코딩한다.
자신의 참조 영역에 대하여 플립핑되는 인트라 BC 예측 영역을 인코더 또는 디코더가 결정할 때, 인코더 또는 디코더는 (a) 참조 영역을 결정할 수 있고, (b) 참조 영역을 플립핑할 수 있고, 그 다음 (c) 플립핑된 참조 영역의 위치에서의 샘플 값을, 인트라 BC 예측 영역의 위치에서의 샘플 값에 할당할 수 있다. 또한, 인코더 또는 디코더는 (a) 참조 영역을 결정할 수 있고, (b) 참조 영역의 위치에서의 샘플 값을, 인트라 BC 예측 영역의 위치에서의 샘플 값에 할당할 수 있고, 그 다음 (c) 인트라 BC 예측 영역을 플립핑할 수 있다. 또는, 인코더 또는 디코더는 (a) 참조 영역을 결정할 수 있고, 그 다음 (b) 참조 영역의 위치에서의 샘플 값을, 인트라 BC 예측 영역의 대응하는 위치에서의 샘플 값에 할당할 수 있는데, 이 경우 대응하는 위치는 플립핑을 담당한다.
몇몇 예시적인 구현예에서, 인코딩된 데이터는 현재 블록에 대한 BV 값을 포함한다. BV 값은 픽쳐에서의 참조 영역까지의 변위를 나타낸다. 인코딩 동안, BV 값은 예측된 BV 값일 수 있거나, 또는 BV 값은 BV 추정에서 식별될 수 있고 예측된 BV 값에 대한 BV 차분을 가지고 시그널링될 수 있다. 디코딩 동안, BV 값은 예측된 BV 값일 수 있거나, 또는 BV 값은 예측된 BV 값에 BV 차분을 가산하는 것에 의해 재구성될 수 있다.
본원에서 설명되는 혁신안의 다른 양태에 따르면, 이미지 또는 비디오 인코더는 픽쳐에서의 현재 블록(예를 들면, 코딩 단위, 예측 단위)에 대한 BV 값을 결정한다. BV 값은 픽쳐에서의 참조 영역까지의 변위를 나타낸다. 인코더는, 현재 블록에 대한 BV 예측자(predictor)(예측된 BV 값) 및 BV 값을 사용하여 현재 블록에 대한 BV 차분을 결정한다. 비트스트림은, 다수의 BV 예측자 후보의 세트로부터의, BV 예측자로서 사용할 BV 예측자 후보의 선택을 나타내는 인덱스 값을 포함할 수 있다. 또는, BV 예측자는 몇몇 다른 방식으로 선택될 수 있다. 인코더는 BV 값을 가지고 인트라 BC 예측을 사용하여 현재 블록을 인코딩한다. 인코더는, 현재 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는 것을 나타내는 플래그를 포함하는 인코딩된 데이터를 비트스트림에서 출력한다. 현재 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되기 때문에, 비트스트림은 현재 블록에 대한 BV 차분을 포함하지만 그러나 현재 블록에 대한 잔차 데이터가 없다.
몇몇 예시적인 구현예에서, 주어진 블록(예를 들면, 현재 블록, 후속 블록)이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되지 않으면, 주어진 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지 또는 그렇지 않은지의 여부를 다른 플래그가 나타낼 수 있다. 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되지 않으면, 하나 이상의 다른 신택스 엘리먼트로 나타내어지는 바와 같이, 주어진 블록은 인트라 공간 예측 모드 또는 인터 픽쳐 모드와 같은 다른 모드에서 인코딩될 수도 있다.
몇몇 예시적인 구현예에서, 스킵 모드에서 인트라 BC 예측되는 주어진 블록(예를 들면, 현재 블록, 후속 블록)은 구획화 모드(partitioning mode)에 대한 정의된 값을 갖는다. 이것은 구획화 모드에 대한 신택스 엘리먼트의 시그널링에 영향을 준다. 주어진 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 비트스트림은 주어진 블록에 대한 구획화 모드를 나타내는 신택스 엘리먼트를 포함한다. 그러나, 주어진 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 비트스트림은 주어진 블록에 대한 구획화 모드를 나타내는 신택스 엘리먼트가 없고, 주어진 블록에 대한 구획화 모드는 정의된 값을 갖는다.
몇몇 예시적인 구현예에서, 스킵 모드에서 인트라 BC 예측되는 주어진 블록(예를 들면, 현재 블록, 후속 블록)은, 그 주어진 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그가 없다. 주어진 블록에 대한 잔차 데이터는 비트스트림에서 없는 것으로 가정된다. 또한, 주어진 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고, 주어진 블록에 대한 구획화 모드가 정의된 값을 가지면, 비트스트림은, 주어진 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그가 없다. 이 경우, 주어진 블록에 대한 잔차 데이터는 비트스트림에 존재하는 것으로 가정된다. 그렇지 않고, 주어진 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고, 주어진 블록에 대한 구획화 모드가 정의된 값을 가지지 않으면, 비트스트림은, 주어진 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그를 포함한다.
대응하는 디코더는 비트스트림으로부터, 픽쳐에서의 현재 블록(예를 들면, 코딩 단위, 예측 단위)이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩된다는 것을 나타내는 플래그를 포함하는 인코딩된 데이터를 수신한다. 현재 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되기 때문에, 비트스트림은 현재 블록에 대한 BV 차분을 포함하지만 그러나 현재 블록에 대한 잔차 데이터가 없다. 디코더는 현재 블록에 대한 BV 예측자(예측된 BV 값) 및 BV 차분을 사용하여 현재 블록에 대한 BV 값을 결정한다. 비트스트림은, 다수의 BV 예측자 후보의 세트로부터의, BV 예측자로서 사용할 BV 예측자 후보의 선택을 나타내는 인덱스 값을 포함할 수 있다. 또는, BV 예측자는 몇몇 다른 방식으로 선택될 수 있다. BV 값은 픽쳐에서의 참조 영역까지의 변위를 나타낸다. 디코더는 BV 값을 가지고 인트라 BC 예측을 사용하여 현재 블록을 디코딩한다.
현재 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩될 때, 현재 블록에 대한 인트라 BC 예측 영역은 자신의 참조 영역에 대하여 플립핑될 수 있다. 플립핑 동작, 플립핑의 방향, 및 플립핑이 사용되는지의 여부의 시그널링의 예는 상기에서 요약되어 있다.
인트라 BC 예측에 대한 혁신안은, 한 방법의 일부로서, 그 방법을 수행하도록 적응되는 컴퓨팅 디바이스의 일부로서 또는 컴퓨팅 디바이스로 하여금 그 방법을 수행하게 하기 위한 컴퓨터 실행가능 명령어를 저장하는 유형적인 컴퓨터 판독가능 매체의 일부로서 구현될 수 있다. 다양한 혁신안은 조합하여 또는 개별적으로 사용될 수 있다. 특히, 인트라 BC 예측에서의 블록 플립핑은 인트라 BC 예측된 블록에 대한 스킵 모드와 연계하여 사용될 수 있다.
본 발명의 상기 및 다른 목적, 피쳐, 및 이점은, 첨부의 도면을 참조로 진행하는 하기의 상세한 설명으로부터 더욱 명확하게 될 것이다.
도 1은 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 컴퓨팅 시스템의 도면이다.
도 2a 및 도 2b는 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 네트워크 환경의 도면이다.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 인코더 시스템의 도면이다.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 디코더 시스템의 도면이다.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 인코더를 예시하는 도면이다.
도 6은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 디코더를 예시하는 도면이다.
도 7a 및 도 7b는, 각각, 픽쳐에서의 블록에 대한 인트라 BC 예측 및 블록에 대한 BV 예측을 예시하는 도면이다.
도 8a 내지 도 8d, 도 9a 내지 도 9c 및 도 10a 내지 도 10c는, 블록에 대한 참조 영역의 플립핑을 예시하는 도면이다.
도 11 및 도 12는, 각각, 인트라 BC 예측 영역이 참조 영역에 대하여 플립핑되는 경우에서의 인코딩 및 디코딩을 위한 기술을 예시하는 플로우차트이다.
도 13 및 도 14는 인트라 BC 예측된 블록에 대한 스킵 모드를 포함하는 인코딩을 위한 기술을 예시하는 플로우차트이다.
도 15 및 도 16은 인트라 BC 예측된 블록에 대한 스킵 모드를 포함하는 디코딩을 위한 기술을 예시하는 플로우차트이다.
도 17a 및 도 17b는, 이전 방식에 따른 코딩 단위에 대한 신택스 구조를 나타내는 테이블이다.
도 18은, 스킵 모드에서 인트라 BC 예측된 블록으로 인코딩될 수 있는 코딩 단위에 대한 신규의 신택스 구조를 나타내는 테이블이다.
도 2a 및 도 2b는 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 네트워크 환경의 도면이다.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 인코더 시스템의 도면이다.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 디코더 시스템의 도면이다.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 인코더를 예시하는 도면이다.
도 6은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 디코더를 예시하는 도면이다.
도 7a 및 도 7b는, 각각, 픽쳐에서의 블록에 대한 인트라 BC 예측 및 블록에 대한 BV 예측을 예시하는 도면이다.
도 8a 내지 도 8d, 도 9a 내지 도 9c 및 도 10a 내지 도 10c는, 블록에 대한 참조 영역의 플립핑을 예시하는 도면이다.
도 11 및 도 12는, 각각, 인트라 BC 예측 영역이 참조 영역에 대하여 플립핑되는 경우에서의 인코딩 및 디코딩을 위한 기술을 예시하는 플로우차트이다.
도 13 및 도 14는 인트라 BC 예측된 블록에 대한 스킵 모드를 포함하는 인코딩을 위한 기술을 예시하는 플로우차트이다.
도 15 및 도 16은 인트라 BC 예측된 블록에 대한 스킵 모드를 포함하는 디코딩을 위한 기술을 예시하는 플로우차트이다.
도 17a 및 도 17b는, 이전 방식에 따른 코딩 단위에 대한 신택스 구조를 나타내는 테이블이다.
도 18은, 스킵 모드에서 인트라 BC 예측된 블록으로 인코딩될 수 있는 코딩 단위에 대한 신규의 신택스 구조를 나타내는 테이블이다.
상세한 설명은, 인트라 블록 카피(block copy; "BC") 예측을 사용한 블록의 인코딩 또는 디코딩의 분야에서 혁신안을 제시한다. 예를 들면, 혁신안 중 몇몇은, 인트라 BC 예측된 블록(intra-BC-predicted block)이 참조 영역(reference region)에 대하여 플립핑되는 블록 플립핑(block flipping)에 관련되는데, 참조 영역은 블록 벡터(block vector; "BV") 값에 의해 나타내어질 수 있다. 다른 혁신안은, 현재의 인트라 BC 예측된 블록이 시그널링된 BV 차분을 사용하지만 잔차 데이터가 없는 스킵 모드의 시그널링에 관련된다. 많은 상황에서, 혁신안은 인트라 BC 예측된 블록에 대한 코딩 효율성을 향상시킨다.
본원에서 설명되는 동작이 비디오 인코더 또는 비디오 디코더에 의해 수행되고 있는 것으로 여기저기에서 설명되지만, 많은 경우에서, 동작은 다른 타입의 미디어 프로세싱 툴(예를 들면, 이미지 인코더, 이미지 디코더)에 의해 수행될 수 있다.
본원에서 설명되는 혁신안 중 몇몇은 H.265/HEVC 표준에 고유한 신택스 엘리먼트 및 동작을 참조로 예시된다. 예를 들면, H.265/HEVC 표준의 초안 버전(draft version) JCTVC-N1005 - 2014년 2월의 JCTVC-P1005_v1 "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6"에 대한 참조가 이루어진다. 본원에서 설명되는 혁신안은 또한, 다른 표준 또는 포맷에 대해 구현될 수 있다.
본원에서 설명되는 혁신안 중 몇몇(예를 들면, 블록 플립핑)은 인트라 BC 예측을 참조로 설명된다. 혁신안은 다른 상황(예를 들면, 모션 보상에서의 참조 영역에 대한 블록 플립핑)에서 또한 적용될 수 있다.
보다 일반적으로는, 본원에서 설명되는 예에 대한 다양한 대안예도 가능하다. 예를 들면, 본원에서 설명되는 방법 중 몇몇은, 설명되는 방법 액트(act)의 순서를 변경하는 것에 의해, 소정의 방법 액트를 분할, 반복, 또는 생략하는 것에 의해, 등등에 의해 변경될 수 있다. 개시된 기술의 다양한 양태는 조합하여 또는 개별적으로 사용될 수 있다. 상이한 실시형태는 설명된 혁신안 중 하나 이상을 사용한다. 본원에서 설명되는 혁신안 중 몇몇은 배경에서 언급된 문제점 중 하나 이상을 중점적으로 다룬다. 통상적으로는, 주어진 기술/툴은 이러한 문제점 모두를 해결하지는 않는다.
I. 예시적인 컴퓨팅 시스템.
도 1은, 설명된 혁신안 중 몇몇이 구현될 수도 있는 적절한 컴퓨팅 시스템(100)의 일반화된 예를 예시한다. 컴퓨팅 시스템(100)은, 혁신안이 다양한 범용의 또는 특수 목적의 컴퓨팅 시스템에서 구현될 수도 있기 때문에, 용도 또는 기능성의 범위에 관해 어떠한 제한도 제시하도록 의도되지는 않는다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 하나 이상의 프로세싱 유닛(110, 115) 및 메모리(120, 125)를 포함한다. 프로세싱 유닛(110, 115)은 컴퓨터 실행가능 명령어를 실행한다. 프로세싱 유닛은 범용 중앙 프로세싱 유닛(central processing unit; "CPU"), 주문형 반도체(application-specific integrated circuit; "ASIC")에서의 프로세서, 또는 임의의 다른 타입의 프로세서일 수 있다. 다중 프로세싱 시스템에서, 프로세싱 파워를 증가시키기 위해 다수의 프로세싱 유닛이 컴퓨터 실행가능 명령어를 실행한다. 예를 들면, 도 1은 중앙 프로세싱 유닛(110)뿐만 아니라 그래픽 프로세싱 유닛 또는 코프로세싱 유닛(co-processing unit)(115)을 도시한다. 유형적인 메모리(120, 125)는, 프로세싱 유닛(들)에 의해 액세스될 수 있는, 휘발성 메모리(예를 들면, 레지스터, 캐시, RAM), 불휘발성 메모리(예를 들면, ROM, EEPROM, 플래시 메모리 등등), 또는 이 둘의 어떤 조합일 수도 있다. 메모리(120, 125)는, 인트라 BC 예측에서의 스킵 모드 및/또는 블록 플립핑에 대한 하나 이상의 혁신안을 구현하는 소프트웨어(180)를, 프로세싱 유닛(들)에 의한 실행에 적합한 컴퓨터 실행가능 명령어의 형태로 저장한다.
컴퓨팅 시스템은 추가적인 피쳐를 구비할 수도 있다. 예를 들면, 컴퓨팅 시스템(100)은 스토리지(140), 하나 이상의 입력 디바이스(150), 하나 이상의 출력 디바이스(160), 및 하나 이상의 통신 연결부(170)를 포함한다. 인터커넥션 메커니즘(interconnection mechanism)(도시되지 않음), 예컨대 버스, 컨트롤러, 또는 네트워크는 컴퓨팅 시스템(100)의 컴포넌트를 인터커넥트한다. 통상적으로, 오퍼레이팅 시스템 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(100)에서 실행하는 다른 소프트웨어에 대한 동작 환경을 제공하고, 컴퓨팅 시스템(100)의 컴포넌트의 활동을 조화시킨다(coordinate).
유형적인 스토리지(140)는 착탈식 또는 비착탈식일 수도 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 정보를 저장하기 위해 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 스토리지(140)는, 인트라 BC 예측에서의 스킵 모드 및/또는 블록 플립핑에 대한 하나 이상의 혁신안을 구현하는 소프트웨어(180)에 대한 명령어를 저장한다.
입력 디바이스(들)(150)는 터치 입력 디바이스 예컨대 키보드, 마우스, 펜, 또는 트랙볼, 음성 입력 디바이스, 스캐닝 디바이스, 또는 컴퓨팅 시스템(100)으로 입력을 제공하는 다른 디바이스일 수도 있다. 비디오의 경우, 입력 디바이스(들)(150)는 카메라, 비디오 카드, TV 튜너 카드, 스크린 캡쳐 모듈, 또는 비디오 입력을 아날로그 또는 디지털 형태로 받아들이는 유사한 디바이스, 또는 비디오 입력을 컴퓨팅 시스템(100) 안으로 읽어들이는 CD-ROM 또는 CD-RW일 수도 있다. 출력 디바이스(들)(160)는 디스플레이, 프린터, 스피커, CD-라이터, 또는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 다른 디바이스일 수도 있다.
통신 연결부(들)(170)는 통신 매체를 통한 다른 통신 엔티티로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 변조된 데이터 신호에서의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는, 자신의 특성 중 하나 이상을, 신호에서 정보를 인코딩하는 것과 같은 방식으로 설정하거나 변경한 신호를 의미한다. 비제한적인 예로서, 통신 매체는 전기적 캐리어, 광학적 캐리어, RF 캐리어, 또는 다른 캐리어를 사용할 수 있다.
혁신안은 컴퓨터 판독가능 매체의 일반적 맥락에서 설명될 수 있다. 컴퓨터 판독가능 매체는, 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 유형적인 매체이다. 비제한적인 예로서, 컴퓨팅 시스템(100)과 관련하여, 컴퓨터 판독가능 매체는 메모리(120, 125), 스토리지(140), 및 상기의 것 중 임의의 것의 조합을 포함한다.
혁신안은, 컴퓨팅 시스템에서 타겟인 실제 또는 가상의 프로세서 상에서 실행되고 있는, 프로그램 모듈에 포함되는 것과 같은 컴퓨터 실행가능 명령어의 일반적 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은, 특정한 태스크를 수행하거나 또는 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 컴포넌트, 데이터 구조 등등을 포함한다. 프로그램 모듈의 기능성은 다양한 실시형태에서 소망되는 바에 따라 프로그램 모듈 사이에서 분할되거나 또는 결합될 수도 있다. 프로그램 모듈에 대한 컴퓨터 실행가능 명령어는 로컬 컴퓨팅 시스템 또는 분산형 컴퓨팅 시스템 내에서 실행될 수도 있다.
용어 "시스템" 및 "디바이스"는 본원에서 상호교환적으로 사용된다. 문맥상 그렇지 않다고 명확하게 나타내지 않는 한, 어떠한 용어도 컴퓨팅 디바이스 또는 컴퓨팅 시스템의 타입에 대해 아무런 제한도 내포하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 또는 분산될 수도 있으며, 본원에서 설명되는 기능성을 구현하는 소프트웨어와의 특수 목적의 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시된 방법은 또한, 개시된 방법 중 임의의 것을 수행하도록 구성되는 특수한 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들면, 개시된 방법은, 개시된 방법 중 임의의 것을 구현하도록 특별하게 설계되거나 구성되는 집적 회로(예를 들면, ASIC(예컨대 ASIC 디지털 신호 프로서(digital signal processor; "DSP"), 그래픽 프로세싱 유닛(graphics processing unit; "GPU"), 또는 프로그래머블 로직 디바이스(programmable logic device; "PLD"), 예컨대 필드 프로그래머블 게이트 어레이(field programmable gate array; "FPGA"))에 의해 구현될 수 있다.
표현 때문에, 상세한 설명은, 컴퓨팅 시스템에서의 컴퓨터 동작을 설명하기 위해, "결정한다" 및 "사용한다"와 같은 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행되는 동작에 대한 하이 레벨의 추상개념이며 사람에 의해 수행되는 행위와 혼돈되어선 안된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현예에 따라 달라진다.
II. 예시적인 네트워크 환경.
도 2a 및 도 2b는 비디오 인코더(220) 및 비디오 디코더(270)를 포함하는 예시적인 네트워크 환경(201, 202)을 도시한다. 인코더(220) 및 디코더(270)는 적절한 통신 프로토콜을 사용하여 네트워크(250)를 통해 연결된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에서 도시되는 네트워크 환경(201)에서, 각각의 실시간 통신(real-time communication; "RTC") 툴(210)은 양방향 통신을 위해 인코더(220) 및 디코더(270) 둘 다를 포함한다. 주어진 인코더(220)는, H.265/HEVC 표준, SMPTE 421M 표준, ISO-IEC 14496-10 표준(H.264 또는 AVC로 또한 알려짐), 다른 표준, 또는 독점적 포맷의 변형안 또는 확장안을 따르는 출력을 생성할 수 있는데, 대응하는 디코더(270)가 인코더(220)로부터 인코딩된 데이터를 받아들이게 된다. 양방향 통신은 화상 회의, 영상 전화, 또는 다른 양자간 또는 다자간 통신 시나리오의 일부일 수 있다. 도 2a의 네트워크 환경(201)이 두 개의 실시간 통신 툴(210)을 포함하지만, 네트워크 환경(201)은, 대신, 다자간 통신(multiparty communication)에 참여하는 세 개 이상의 실시간 통신 툴(210)을 포함할 수 있다.
실시간 통신 툴(210)은 인코더(220)에 의한 인코딩을 관리한다. 도 3은 실시간 통신 툴(210)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 인코더 시스템을 사용한다. 실시간 통신 툴(210)은 또한 디코더(270)에 의한 디코딩을 관리한다. 도 4는 실시간 통신 툴(210)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 디코더 시스템을 사용한다.
도 2b에서 도시되는 네트워크 환경(202)에서, 인코딩 툴(212)은, 디코더(270)를 포함하는 다수의 재생 툴(214)로 전달하기 위해 비디오를 인코딩하는 인코더(220)를 포함한다. 단방향 통신은, 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 스크린 캡쳐 모듈, 원격 데스크탑 회의 프리젠테이션 또는 비디오가 인코딩되어 한 장소에서 하나 이상의 다른 장소로 전송되는 다른 시나리오에 대해 제공될 수 있다. 도 2b의 네트워크 환경(202)이 두 개의 재생 툴(214)을 포함하지만, 네트워크 환경(202)은 더 많은 또는 더 적은 재생 툴(214)을 포함할 수 있다. 일반적으로, 재생 툴(214)은, 재생 툴(214)이 수신할 비디오의 스트림을 결정하기 위해 인코딩 툴(212)과 통신한다. 재생 툴(214)은 스트림을 수신하고, 수신된 인코딩된 데이터를 적절한 기간 동안 버퍼링하고, 디코딩 및 재생을 시작한다.
도 3은 인코딩 툴(212)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 인코딩 툴(212)은 다른 인코더 시스템을 사용한다. 인코딩 툴(212)은 또한, 하나 이상의 재생 툴(214)과의 연결을 관리하기 위한 서버측 컨트롤러 로직을 포함할 수 있다. 도 4는, 재생 툴(214)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 재생 툴(214)은 다른 디코더 시스템을 사용한다. 재생 툴(214)은 또한, 인코딩 툴(212)과의 연결을 관리하기 위한 클라이언트측 컨트롤러 로직을 포함할 수 있다.
III. 예시적인 인코더 시스템.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 인코더 시스템(300)의 블록도이다. 인코더 시스템(300)은, 다수의 인코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시(low-latency) 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터 재생용 미디어를 생성하기 위한 더 높은 레이턴시의 인코딩 모드 중 임의의 것에서 동작할 수 있는 범용 인코딩 툴일 수 있거나, 또는 인코더 시스템(300)은 하나의 이러한 인코딩 모드에 대해 적응되는 특수 목적의 인코딩 툴일 수 있다. 인코더 시스템(300)은 특정한 타입의 컨텐츠(예를 들면, 스크린 캡쳐 컨텐츠)의 인코딩을 위해 적응될 수 있다. 인코더 시스템(300)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임(311)의 시퀀스를 수신하고 인코딩된 데이터를 채널(390)로의 출력으로서 생성한다. 채널로 출력되는 인코딩된 데이터는, 본원에서 설명되는 바와 같이, 인트라 BC 예측에서 스킵 모드 및/또는 블록 플립핑을 사용하여 인코딩된 컨텐츠를 포함할 수 있다.
비디오 소스(310)는 카메라, 튜너 카드, 저장 매체, 스크린 캡쳐 모듈, 또는 다른 디지털 비디오 소스일 수 있다. 비디오 소스(310)는, 예를 들면, 초당 30프레임의 프레임 레이트에서 비디오 프레임의 시퀀스를 생성한다. 본원에서 사용되는 바와 같이, 용어 "프레임"은 일반적으로, 소스, 코딩된 또는 재구성된 이미지 데이터를 지칭한다. 순차 주사 비디오(progressive-scan video)의 경우, 프레임은 순차 주사 비디오 프레임이다. 인터레이스 방식의 비디오(interlaced video)의 경우, 예시적인 실시형태에서, 인터레이스 방식의 비디오 프레임은 인코딩 이전에 디인터레이스된다(de-interlaced). 대안적으로, 두 개의 상보적 인터레이스 방식의 비디오 필드가 단일의 비디오 프레임으로서 함께 인코딩되거나 또는 두 개의 별개로 인코딩된 필드로서 인코딩된다. 순차 주사 비디오 프레임 또는 인터레이스 방식 주사 비디오 프레임을 나타내는 것 외에, 용어 "프레임" 또는 "픽쳐"는 단일의 짝을 이루지 않는 비디오 필드(single non-paired video field), 비디오 필드의 상보적 쌍, 주어진 시간에서의 비디오 오브젝트를 나타내는 비디오 오브젝트 플레인, 또는 더 큰 이미지에서의 관심대상 영역을 나타낼 수 있다. 비디오 오브젝트 플레인 또는 영역은, 한 장면의 다수의 오브젝트 또는 영역을 포함하는 더 큰 이미지의 일부일 수 있다.
도달하는 소스 프레임(311)은, 다수의 프레임 버퍼 저장 영역(321, 322, …, 32n)을 포함하는 소스 프레임 임시 메모리 저장 영역(320)에 저장된다. 프레임 버퍼(321, 322 등등)는 소스 프레임 저장 영역(320)에 하나의 소스 프레임을 유지한다. 소스 프레임(311) 중 하나 이상이 프레임 버퍼(321, 322, 등등)에 저장된 이후, 프레임 선택기(330)는 소스 프레임 저장 영역(320)으로부터 개개의 소스 프레임을 선택한다. 인코더(340)로의 입력을 위해 프레임 선택기(330)에 의해 프레임이 선택되는 순서는, 비디오 소스(310)에 의해 프레임이 생성되는 순서와는 상이할 수도 있다, 예를 들면, 몇몇 나중의 프레임이 먼저 인코딩되는 것을 허용하기 위해 따라서 시간적으로 역방향의 예측(temporally backward prediction)을 용이하게 하기 위해, 몇몇 프레임의 인코딩은 순서에서 지연될 수도 있다. 인코더(340) 이전에, 인코더 시스템(300)은, 인코딩 이전에, 선택된 프레임(331)의 전처리(pre-processing)(예를 들면, 필터링)를 수행하는 전처리기(pre-processor)(도시되지 않음)를 포함할 수 있다. 전처리는, 주 성분(예를 들면, 루마)과 부 성분(예를 들면, 레드쪽으로의 그리고 블루쪽으로의 크로마 차이)으로의 컬러 공간 변환 및 인코딩을 위한 (예를 들면, 크로마 성분의 공간 해상도를 감소시키는) 재샘플링 프로세싱을 포함할 수 있다. 통상적으로는, 인코딩 이전에, 비디오는 YUV와 같은 컬러 공간으로 변환되었는데, 이 경우 루마(Y) 성분의 샘플 값은 휘도 또는 강도(intensity) 값을 나타내고, 크로마(U, V) 성분의 샘플 값은 컬러 차이 값을 나타낸다. 컬러 차이 값(및 RGB와 같은 다른 컬러 공간으로부터 YUV 컬러 공간으로의/YUV 컬러 공간으로부터 RGB와 같은 다른 컬러 공간으로의 변환 동작)의 정확한 정의는 구현예에 의존한다. 일반적으로, 본원에서 사용되는 바와 같이, 용어 YUV는, 루마(또는 휘도) 성분 및 하나 이상의 크로마(또는 색차(chrominance)) 성분을 갖는 임의의 컬러 공간을 나타내는데, Y'UV, YIQ, Y'IQ 및 YDbDr뿐만 아니라 YCbCr 및 YCoCg와 같은 변형예를 포함한다. 크로마 샘플 값은 (예를 들면, YUV 4:2:0 포맷에 대해) 더 낮은 크로마 샘플링 레이트로 서브샘플링될 수도 있거나, 또는 크로마 샘플 값은 (예를 들면, YUV 4:4:4 포맷에 대해) 루마 샘플 값과 동일한 해상도를 가질 수도 있다. 또는, 비디오는 다른 포맷(예를 들면, RGB 4:4:4 포맷)으로 인코딩될 수 있다.
인코더(340)는, 코딩된 프레임(341)을 생성하기 위해, 선택된 프레임(331)을 인코딩하고 또한 메모리 관리 제어 동작(memory management control operation; "MMCO") 신호(342) 또는 참조 픽쳐 세트(reference picture set; "RPS") 정보를 생성한다. RPS는, 현재 프레임 또는 임의의 후속하는 프레임에 대한 모션 보상에서 참조를 위해 사용될 수도 있는 프레임의 세트이다. 현재 프레임이 인코딩된 첫 번째 프레임이 아니고, 자신의 인코딩 프로세스를 수행하고 있는 경우, 인코더(340)는, 디코딩된 프레임 임시 메모리 저장 영역(360)에 저장되어 있는 하나 이상의 이전에 인코딩된/디코딩된 프레임(369)을 사용할 수도 있다. 이렇게 저장된 디코딩된 프레임(369)은 현재 소스 프레임(331)의 컨텐츠의 인터 프레임 예측(inter-frame prediction)을 위한 참조 프레임으로서 사용된다. MMCO/RPS 정보(342)는 디코더에게, 어떤 재구성된 프레임이 참조 프레임으로서 사용될 수도 있는지를 나타내며, 따라서 프레임 저장 영역에 저장되어야 한다.
일반적으로, 인코더(340)는, 타일로의 구획화, 인트라 예측 추정 및 예측, 모션 추정 및 보상, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 태스크를 수행하는 다수의 인코딩 모듈을 포함한다. 인코더(340)에 의해 수행되는 정확한 동작은 압축 포맷에 의존하여 변할 수 있다. 출력된 인코딩된 데이터의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
인코더(340)는 프레임을 동일한 사이즈의 또는 상이한 사이즈의 다수의 타일로 구획할 수 있다. 예를 들면, 인코더(340)는, 프레임 경계와 함께, 프레임 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행(row) 및 타일 열(column)을 따라 프레임을 분할하는데, 이 경우 각각의 타일은 직사각형 영역이다. 타일은 종종 병렬 프로세싱을 위한 옵션을 제공하기 위해 사용된다. 프레임은 또한 하나 이상의 슬라이스로서 편제될(organized) 수 있는데, 이 경우 슬라이스는 전체 프레임 또는 프레임의 영역일 수 있다. 슬라이스는 프레임에서의 다른 슬라이스와는 무관하게 디코딩될 수 있는데, 슬라이스가 프레임의 다른 슬라이스와는 무관하게 디코딩되는 것은 에러 복원성(error resilience)을 향상시킨다. 슬라이스 또는 타일의 컨텐츠는 인코딩 및 디코딩의 목적을 위해 블록 또는 샘플 값의 다른 세트로 더 구획된다.
H.265/HEVC 표준에 따른 신택스의 경우, 인코더는 프레임(또는 슬라이스 또는 타일)의 컨텐츠를 코딩 트리 단위로 분할한다. 코딩 트리 단위(coding tree unit; "CTU")는 루마 코딩 트리 블록(luma coding tree block; "CTB")으로 편제되는 루마 샘플 값 및 두 개의 크로마 CTB로 편제되는 대응하는 크로마 샘플 값을 포함한다. CTU(및 CTU의 CTB)의 사이즈는 인코더에 의해 선택되며, 예를 들면, 64×64, 32×32 또는 16×16 샘플 값일 수 있다. CTU는 하나 이상의 코딩 단위를 포함한다. 코딩 단위(coding unit; "CU")는 루마 코딩 블록(coding block; "CB") 및 두 개의 대응하는 크로마 CB를 구비한다. 예를 들면, 64×64 루마 CTB 및 두 개의 64×64 크로마 CTB를 갖는 CTU(YUV 4:4:4 포맷)는 네 개의 CU로 분할될 수 있는데, 각각의 CU는 32×32 루마 CB 및 두 개의 32×32 크로마 CB를 포함하고, 그리고 각각의 CU는 어쩌면 더 작은 CU로 더 분할된다. 또는, 다른 예로서, 64×64 루마 CTB 및 두 개의 32×32 크로마 CTB를 갖는 CTU(YUV 4:2:0 포맷)는 네 개의 CU로 분할될 수 있는데, 각각의 CU는 32×32 루마 CB 및 두 개의 16×16 크로마 CB를 포함하고, 그리고 각각의 CU는 어쩌면 더 작은 CU로 더 분할된다. CU의 가장 작은 허용가능한 사이즈(예를 들면, 8×8, 16×16)는 비트스트림에서 시그널링될 수 있다.
일반적으로, CU는 인터 또는 인트라와 같은 예측 모드를 갖는다. CU는 예측 정보(예컨대 예측 모드 상세, 변위 값 등등) 및/또는 예측 프로세싱을 시그널링하는 목적을 위한 하나 이상의 예측 단위를 포함한다. 예측 단위(prediction unit; "PU")는 루마 예측 블록(prediction block; "PB") 및 두 개의 크로마 PB를 구비한다. 인트라 예측된 CU의 경우, CU가 최소 사이즈(예를 들면, 8×8)를 갖지 않는 한, PU는 CU와 동일한 사이즈를 갖는다. 그 경우, CU는 네 개의 더 작은 PU(예를 들면, 최소 CU 사이즈가 8×8이면 각각 4×4)로 분할될 수 있거나 또는 PU는, CU에 대한 신택스 엘리먼트에 의해 나타내어지는 바와 같이, 최소 CU 사이즈를 가질 수 있다. CU는 또한 잔차 코딩/디코딩의 목적을 위해 하나 이상의 변환 단위를 갖는데, 이 경우 변환 단위(transform unit; "TU")는 변환 블록(transform block; "TB") 및 두 개의 크로마 TB를 갖는다. 인트라 예측된 CU에서의 PU는 단일의 TU(사이즈에서 PU와 동일) 또는 다수의 TU를 포함할 수도 있다. 인코더는 비디오를 CTU, CU, PU, TU 등등으로 구획하는 방법을 결정한다.
H.265/HEVC 구현예에서, 슬라이스는 단일의 슬라이스 세그먼트(독립 슬라이스 세그먼트)를 포함할 수 있거나 또는 다수의 슬라이스 세그먼트(독립 슬라이스 세그먼트 및 하나 이상의 종속 슬라이스 세그먼트)로 분할될 수 있다. 슬라이스 세그먼트는, 단일의 네트워크 추상화 레이어(network abstraction layer; "NAL") 단위에 포함되는, 타일 주사에서 연속적으로 순서가 정해지는 정수 개수의 CTU이다. 독립 슬라이스 세그먼트의 경우, 슬라이스 세그먼트 헤더는 독립 슬라이스 세그먼트에 적용되는 신택스 엘리먼트의 값을 포함한다. 종속 슬라이스 세그먼트의 경우, 잘려진 슬라이스 세그먼트 헤더는 그 종속 슬라이스 세그먼트에 적용되는 신택스 엘리먼트의 몇몇 값을 포함하고, 종속 슬라이스 세그먼트에 대한 다른 신택스 엘리먼트의 값은 디코딩 순서에서 선행하는 독립 슬라이스 세그먼트에 대한 값으로부터 추론된다.
본원에서 사용되는 바와 같이, 용어 "블록"은, 상황에 따라, 매크로블록, 예측 단위, 잔차 데이터 단위, 또는 CB, PB 또는 TB, 또는 샘플 값의 몇몇 다른 세트를 나타낼 수 있다.
도 3을 참조하면, 인코더는 소스 프레임(331)의 인트라 코딩된 블록을, 프레임(331)에서의 다른 이전에 재구성된 샘플 값으로부터의 예측의 관점에서 나타낸다. 인트라 BC 예측의 경우, 인트라 픽쳐 추정기(intra-picture estimator)는, 다른 이전에 재구성된 샘플 값에 대한(또는, 몇몇 구현예에서는, 프레임(331)에서의 원래의 샘플 값에 대한) 어떤 블록의 변위를 추정한다. 인트라 프레임 예측 참조 영역은, 블록에 대한 BC 예측 값을 생성하기 위해 사용되는, 프레임에서의 샘플의 영역이다. 참조 영역은 블록 벡터("BV") 값(BV 추정에서 결정됨)으로 나타내어질 수 있다. 참조 영역은, 본원에서 설명되는 바와 같이, 블록에 대한 예측 영역에 대하여 플립핑될 수 있다. 블록에 대한 인트라 공간 예측의 경우, 인트라 픽쳐 추정기는, 이웃하는 재구성된 샘플 값의 블록으로의 외삽(extrapolation)을 추정한다. 인트라 픽쳐 추정기는 예측 정보(예컨대 인트라 BC 예측을 위한 BV 값, 또는 인트라 공간 예측을 위한 예측 모드(방향))를 출력할 수 있는데, 예측 정보는 엔트로피 코딩된다. 인트라 프레임 예측 예측기(intra-frame prediction predictor)는 인트라 예측 값을 결정하기 위해 예측 정보를 적용한다.
인코더(340)는, 소스 프레임(331)의 인터 프레임 코딩되고 예측된 블록을, 참조 프레임으로부터의 예측의 관점에서 나타낸다. 모션 추정기는 하나 이상의 참조 프레임(369)에 대한 블록의 모션을 추정한다. 다수의 참조 프레임이 사용되는 경우, 다수의 참조 프레임은 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 보상된 예측 참조 영역은, 현재 프레임에서의 샘플의 블록에 대한 모션 보상된 예측 값을 생성하기 위해 사용되는, 참조 프레임(들)에서의 샘플의 영역이다. 참조 영역은, 본원에서 설명되는 바와 같이, 블록에 대한 예측 영역에 대하여 플립핑될 수 있다. 모션 추정기는 모션 벡터("MV") 정보와 같은 모션 정보를 출력하는데, 모션 정보는 엔트로피 코딩된다. 모션 보상기는 참조 프레임(369)에 MV를 적용하여 인터 프레임 예측을 위한 모션 보상된 예측 값을 결정한다.
인코더는 블록의 예측 값(인트라 또는 인터)과 대응하는 원래의 값 사이의 차이를 (만약 존재한다면) 결정할 수 있다. 이들 예측 잔차 값은 또한, 주파수 변환, 양자화 및 엔트로피 인코딩을 사용하여 인코딩된다. 예를 들면, 인코더(340)는, 비디오의 픽쳐, 타일, 슬라이스 및/또는 다른 부분에 대한 양자화 파라미터(quantization parameter; "QP")에 대한 값을 설정하고, 상응하여 변환 계수를 양자화한다. 인코더(340)의 엔트로피 코더는 양자화된 변환 계수 값뿐만 아니라 소정의 부가 정보(side information)(예를 들면, MV 정보, BV 예측자(predictor)에 대한 인덱스 값, BV 차분, QP 값, 모드 결정, 파라미터 선택)를 압축한다. 통상적인 엔트로피 코딩 기술은, 지수 골룸 코딩(Exp-Golomb coding), 골룸 라이스 코딩(Golomb-Rice coding), 산술 코딩(arithmetic coding), 차분 코딩(differential coding), 허프만 코딩(Huffman coding), 런 길이 코딩(run length coding), 가변 길이 대 가변 길이(variable-length-to-variable-length; "V2V") 코딩, 가변 길이 대 고정 길이(variable-length-to-fixed-length; "V2F") 코딩, 렘펠 지브(Lempel-Ziv; "LZ") 코딩, 딕셔너리 코딩(dictionary coding), 확률 구간 구획화 엔트로피 코딩(probability interval partitioning entropy coding; "PIPE"), 및 상기의 조합을 포함한다. 엔트로피 코더는 상이한 종류의 정보에 대해 상이한 코딩 기술을 사용할 수 있고, 다수의 기술을 (예를 들면, 골룸 라이스 코딩 및 후속하여 산술 코딩을 적용하는 것에 의한) 조합하여 적용할 수 있고, 특정한 코딩 기술 내에서의 다수의 코드 테이블 중에서 선택할 수 있다.
디코딩된 프레임(451)에서 블록 경계 행 및/또는 열에 걸친 불연속부를 평활화하기 위해, 인코더(340)의 모션 보상 루프 내에 적응적 디블로킹 필터(adaptive deblocking filter)가 포함된다. 루프 내 필터링 동작(in-loop filtering operation)으로서, 다른 필터링(예컨대 디링잉 필터링(de-ringing filtering), 적응적 루프 필터링(adaptive loop filtering; "ALF"), 또는 샘플 적응 오프셋(sample-adaptive offset; "SAO") 필터링; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다.
인코더(340)에 의해 생성되는 인코딩된 데이터는 비트스트림 신택스의 다양한 레이어에 대한 신택스 엘리먼트를 포함한다. H.265/HEVC 표준에 따른 신택스의 경우, 예를 들면, 픽쳐 파라미터 세트(picture parameter set; "PPS")는, 픽쳐와 관련될 수도 있는 신택스 엘리먼트를 포함하는 신택스 구조이다. PPS는 단일의 픽쳐에 대해 사용될 수 있거나, 또는 PPS는 한 시퀀스의 다수의 픽쳐에 대해 재사용될 수 있다. PPS는 통상적으로 픽쳐에 대한 인코딩된 데이터와는 별개로 시그널링된다(예를 들면, PPS에 대한 하나의 NAL 단위, 및 픽쳐에 대한 인코딩된 데이터에 대한 하나 이상의 다른 NAL 단위). 픽쳐에 대한 인코딩된 데이터 내에서, 신택스 엘리먼트는 픽쳐에 대해 어떤 PPS를 사용할지를 나타낸다. 마찬가지로, H.265/HEVC 표준에 따른 신택스의 경우, 시퀀스 파라미터 세트(sequence parameter set; "SPS")는, 픽쳐의 시퀀스와 관련될 수도 있는 신택스 엘리먼트를 포함하는 신택스 구조이다. 비트스트림은 단일의 SPS 또는 다수의 SPS를 포함할 수 있다. SPS는 통상적으로 시퀀스에 대한 다른 데이터와는 별개로 시그널링되고, 다른 데이터의 신택스 엘리먼트는 어떤 SPS를 사용할지를 나타낸다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)(또는, 프레임에 대한 종속성(dependency) 및 순서 구조(ordering structure)가 인코더(340)에서 이미 알려진 이후, MMCO/RPS 정보(342) 정보와 등가의 정보)는 디코딩 프로세스 에뮬레이터(350)에 의해 프로세싱된다. 디코딩 프로세스 에뮬레이터(350)는 디코더의 기능성 중 몇몇, 예를 들면, 참조 프레임을 재구성하는 디코딩 태스크를 구현한다. MMCO/RPS 정보(342)와 부합하는 방식에서, 디코딩 프로세스 에뮬레이터(350)는, 인코딩될 후속 프레임의 인터 프레임 예측에서의 참조 프레임으로서의 사용을 위해, 주어진 코딩된 프레임(341)이 재구성되고 저장될 필요가 있는지의 여부를 결정한다. 코딩된 프레임(341)이 저장될 필요가 있다면, 디코딩 프로세스 에뮬레이터(350)는, 코딩된 프레임(341)을 수신하는 그리고 대응하는 디코딩된 프레임(351)을 생성하는 디코더에 의해 행해질 디코딩 프로세스를 모델링한다. 이렇게 함에 있어서, 디코딩된 프레임 저장 영역(360)에 저장되어 있던 디코딩된 프레임(들)(369)을 인코더(340)가 사용한 경우, 디코딩 프로세스 에뮬레이터(350)는 또한, 디코딩 프로세스의 일부로서, 저장 영역(360)으로부터의 디코딩된 프레임(들)(369)을 사용한다.
디코딩된 프레임 임시 메모리 저장 영역(360)은 다수의 프레임 버퍼 저장 영역(361, 362, …, 36n)을 포함한다. MMCO/RPS 정보(342)와 부합하는 방식에서, 디코딩 프로세스 에뮬레이터(350)는, 참조 프레임으로서의 사용을 위해 인코더(340)에 의해 더 이상 필요로 되지 않는 프레임을 갖는 임의의 프레임 버퍼(361, 362, 등등)를 식별하기 위해, 저장 영역(360)의 컨텐츠를 관리한다. 디코딩 프로세스를 모델링한 이후, 디코딩 프로세스 에뮬레이터(350)는 이 방식으로 식별된 프레임 버퍼(361, 362 등등)에 새롭게 디코딩된 프레임(351)을 저장한다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)는 임시적인 코딩된 데이터 영역(temporary coded data area; 370)에 버퍼링된다. 코딩된 데이터 영역(370)에 집성되는 코딩된 데이터는, 기본 코딩된 비디오 비트스트림의 신택스의 일부로서, 하나 이상의 픽쳐에 대한 인코딩된 데이터를 포함한다. 코딩된 데이터 영역(370)에 집성되는 코딩된 데이터는 또한, 코딩된 비디오 데이터에 관련이 있는 미디어 메타데이터를 (예를 들면, 하나 이상의 보충적인 향상 정보(supplemental enhancement information; "SEI") 메시지 또는 비디오 사용가능성 정보(video usability information; "VUI") 메시지에서의 하나 이상의 파라미터로서) 포함할 수 있다.
임시적인 코딩된 데이터 영역(370)으로부터의 집성된 데이터(371)는 채널 인코더(380)에 의해 프로세싱된다. 채널 인코더(380)는, 미디어 스트림으로서의 송신 또는 저장을 위해 집성된 데이터를 (예를 들면, ITU-T H.222.0|ISO/IEC 13818-1와 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 패킷화할 수 있고/있거나 멀티플렉싱할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 미디어 송신 스트림의 신택스의 일부로서 추가할 수 있다. 또는, 채널 인코더(380)는, 파일로서의 저장을 위해, 집성된 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 편제할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 미디어 저장 파일의 신택스의 일부로서 추가할 수 있다. 또는, 보다 일반적으로는, 채널 인코더(380)는 하나 이상의 미디어 시스템 멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 프로토콜(들)의 신택스의 일부로서 추가할 수 있다. 채널 인코더(380)는 채널(390)로 출력을 제공하는데, 채널(390)은 출력에 대한 저장, 통신 연결, 또는 다른 채널을 나타낸다. 채널 인코더(380) 또는 채널(390)은 또한, 예를 들면, 순방향 에러 정정(forward-error correction; "FEC") 인코딩 및 아날로그 신호 변조를 위해, 다른 엘리먼트(도시되지 않음)를 포함할 수도 있다.
IV. 예시적인 디코더 시스템.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 디코더 시스템(400)의 블록도이다. 디코더 시스템(400)은, 다수의 디코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시 디코딩 모드 및 파일 또는 스트림으로부터의 미디어 재생을 위한 더 높은 레이턴시의 디코딩 모드 중 임의의 것에서 동작할 수 있는 범용 디코딩 툴일 수 있거나, 또는 그것은 하나의 이러한 디코딩 모드에 대해 적응되는 특수 목적의 디코딩 툴일 수 있다. 디코더 시스템(400)은 특정한 타입의 컨텐츠(예를 들면, 스크린 캡쳐 컨텐츠)의 디코딩을 위해 적응될 수 있다. 디코더 시스템(400)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 디코더 시스템(400)은 채널(410)로부터 코딩된 데이터를 수신하고 출력 목적지(490)에 대한 출력으로서 재구성된 프레임을 생성한다. 코딩된 데이터는, 본원에서 설명되는 바와 같이, 인트라 BC 예측에서 스킵 모드 및/또는 블록 플립핑을 사용하여 인코딩된 컨텐츠를 포함할 수 있다.
디코더 시스템(400)은 채널(410)을 포함하는데, 채널(410)은 코딩된 데이터에 대한 저장, 통신 연결, 또는 다른 채널을 입력으로서 나타낼 수 있다. 채널(410)은 채널 코딩된 코딩 데이터를 생성한다. 채널 디코더(420)는 코딩된 데이터를 프로세싱할 수 있다. 예를 들면, 채널 디코더(420)는, 미디어 스트림으로서의 송신 또는 저장을 위해 집성된 데이터를 (예를 들면, ITU-T H.222.0 | ISO/IEC 13818-1와 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 패킷화해제하고/패킷화해제하거나 디멀티플렉싱하는데, 이 경우, 채널 디코더(420)는 미디어 송신 스트림의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 또는, 채널 디코더(420)는, 파일로서의 저장을 위해 집성되었던 코딩된 비디오 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 분리하는데, 이 경우, 채널 디코더(420)는 미디어 저장 파일의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 또는, 보다 일반적으로는, 채널 디코더(420)는 하나 이상의 미디어 시스템 디멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 디코더(420)는 프로토콜(들)의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 채널(410) 또는 채널 디코더(420)는 또한, 예를 들면, FEC 디코딩 및 아날로그 신호 변조를 위해, 다른 엘리먼트(도시되지 않음)를 포함할 수도 있다.
채널 디코더(420)로부터 출력되는 코딩된 데이터(421)는, 충분한 양의 이러한 데이터가 수신될 때까지 임시적인 코딩된 데이터 영역(430)에 저장된다. 코딩된 데이터(421)는 코딩된 프레임(431) 및 MMCO/RPS 정보(432)를 포함한다. 코딩된 데이터 영역(430)에서의 코딩된 데이터(421)는, 기본 코딩된 비디오 비트스트림의 신택스의 일부로서, 하나 이상의 픽쳐에 대한 코딩된 데이터를 포함한다. 코딩된 데이터 영역(430)의 코딩된 데이터(421)는 또한, 인코딩된 비디오 데이터에 관련이 있는 미디어 메타데이터를 (예를 들면, 하나 이상의 SEI 메시지 또는 VUI 메시지에서의 하나 이상의 파라미터로서) 포함할 수 있다.
일반적으로, 코딩된 데이터 영역(430)은, 이러한 코딩된 데이터(421)가 디코더(450)에 의해 사용될 때까지, 코딩된 데이터(421)를 일시적으로 저장한다. 그때, MMCO/RPS 정보(432) 및 코딩된 프레임(431)에 대한 코딩된 데이터는 코딩된 데이터 영역(430)으로부터 디코더(450)로 전송된다. 디코딩이 진행함에 따라, 새로 코딩된 데이터가 코딩된 데이터 영역(430)에 추가되고 코딩된 데이터 영역(430)에 남아 있는 가장 오래된 코딩된 데이터는 디코더(450)로 전송된다.
디코더(450)는 대응하는 디코딩된 프레임(451)을 생성하기 위해 코딩된 프레임(431)을 디코딩한다. 적절하다면, 자신의 디코딩 프로세스를 수행하고 있을 때, 디코더(450)는 하나 이상의 이전에 디코딩된 프레임(469)을, 인터 프레임 예측을 위한 참조 프레임으로서 사용할 수도 있다. 디코더(450)는 이러한 이전에 디코딩된 프레임(469)을 디코딩된 프레임 임시 메모리 저장 영역(460)으로부터 판독한다. 일반적으로, 디코더(450)는, 타일의 엔트로피 디코딩, 인트라 프레임 예측, 모션 보상된 인터 프레임 예측, 역 양자화, 역 주파수 변환, 및 병합과 같은 디코딩 태스크를 수행하는 다수의 디코딩 모듈을 포함한다. 디코더(450)에 의해 수행되는 정확한 동작은 압축 포맷에 의존하여 변할 수 있다.
예를 들면, 디코더(450)는 압축된 프레임 또는 프레임의 시퀀스에 대한 인코딩된 데이터를 수신하고 디코딩된 프레임(451)을 포함하는 출력을 생성한다. 디코더(450)에서, 버퍼는 압축된 프레임에 대한 인코딩된 데이터를 수신하고, 적절한 시간에, 수신된 인코딩된 데이터를 엔트로피 디코더가 이용가능하게 만든다. 엔트로피 디코더는, 엔트로피 코딩된 양자화된 데이터뿐만 아니라 엔트로피 코딩된 부가 정보를 엔트로피 디코딩하는데, 통상적으로는, 인코더에서 수행된 엔트로피 인코딩의 역을 적용한다. 모션 보상기는 하나 이상의 참조 프레임에 대해 모션 정보를 적용하여, 재구성되고 있는 프레임의 임의의 인터 코딩된 블록에 대한 모션 보상된 예측 값을 형성한다. 인터 프레임 참조 영역은, 본원에서 설명되는 바와 같이, 블록에 대한 예측 영역에 대하여 플립핑될 수 있다. 인트라 프레임 예측 모듈은, 이웃하는 이전에 재구성된 샘플 값으로부터 현재 블록의 샘플 값을 공간적으로 예측할 수 있거나, 또는 인트라 BC 예측의 경우, 프레임의 인트라 프레임 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측할 수 있다. 인트라 프레임 참조 영역은 BV 값으로 나타내어질 수 있다. 참조 영역은, 본원에서 설명되는 바와 같이, 블록에 대한 예측 영역에 대하여 플립핑될 수 있다. 디코더(450)는 또한 예측 잔차 값을 재구성한다. 역 양자화기는 엔트로피 디코딩된 데이터를 역 양자화한다. 예를 들면, 디코더(450)는, 비트 스트림의 신택스 엘리먼트에 기초하여 비디오의 픽쳐, 타일, 슬라이스 및/또는 다른 부분에 대한 QP에 대한 값을 설정하고, 그에 따라 변환 계수를 역 양자화한다. 역 주파수 변환기는 양자화된 주파수 도메인 데이터를 공간 도메인 데이터로 변환한다. 인터 프레임 예측된 블록의 경우, 디코더(450)는 재구성된 예측 잔차 값을 모션 보상된 예측 값과 결합한다. 마찬가지로, 디코더(450)는 예측 잔차 값을 인트라 예측으로부터의 예측 값과 결합할 수 있다. 디코딩된 프레임(451)에서 블록 경계 행 및/또는 열에 걸친 불연속부를 평활화하기 위해, 비디오 디코더(450)의 모션 보상 루프 내에 적응적 디블로킹 필터가 포함된다. 루프 내 필터링 동작으로서, 다른 필터링(예컨대 디링잉 필터링, ALF, 또는 SAO 필터링; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다.
디코딩된 프레임 임시 메모리 저장 영역(460)은 다수의 프레임 버퍼 저장 영역(461, 462, …, 46n)을 포함한다. 디코딩된 프레임 저장 영역(460)은 디코딩된 픽쳐 버퍼의 예이다. 디코더(450)는, 디코딩된 프레임(451)을 내부에 저장할 수 있는 프레임 버퍼(461, 462 등등)를 식별하기 위해 MMCO/RPS 정보(432)를 사용한다. 디코더(450)는 그 프레임 버퍼에 디코딩된 프레임(451)을 저장한다.
출력 시퀀서(output sequencer; 480)는, 출력 순서에서 생성될 다음 프레임이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때를 식별한다. 출력 순서에서 생성될 다음 프레임(481)이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때, 다음 프레임(481)은 출력 시퀀서(480)에 의해 판독되고 출력 목적지(490)(예를 들면, 디스플레이)로 출력된다. 일반적으로, 디코딩된 프레임 저장 영역(460)으로부터 출력 시퀀서(480)에 의해 프레임이 출력되는 순서는, 프레임이 디코더(450)에 의해 디코딩되는 순서와는 상이할 수도 있다.
V. 예시적인 비디오 인코더.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 일반화된 비디오 인코더(500)의 블록도이다. 인코더(500)는 현재 픽쳐를 입력 비디오 신호(505)로서 포함하는 비디오 픽쳐의 시퀀스를 수신하고 인코딩된 데이터를 코딩된 비디오 비트스트림(595)에서 출력으로서 생성한다.
인코더(500)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 스테이지에서, 예를 들면, 예측, 주파수 변환 및/또는 엔트로피 인코딩 스테이지에서, 추가로 세분될(sub-divided) 수도 있다. 예를 들면, 픽쳐는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이들은 종국에는 코딩 및 디코딩을 위해 샘플 값의 더 작은 블록으로 분할될 수 있다. H.265/HEVC 표준에 대한 인코딩의 구현예에서, 인코더는 픽쳐를 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획한다.
인코더(500)는 인트라 픽쳐 코딩 및/또는 인터 픽쳐 코딩을 사용하여 픽쳐를 압축한다. 인코더(500)의 컴포넌트 중 많은 것은 인트라 픽쳐 코딩 및 인터 픽쳐 코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축되고 있는 정보의 타입에 의존하여 변할 수 있다.
타일화 모듈(tiling module; 510)은, 옵션적으로, 픽쳐를, 동일한 사이즈의 또는 상이한 사이즈의 다수의 타일로 구획한다. 예를 들면, 타일화 모듈(510)은, 픽쳐 경계와 함께, 픽쳐 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 픽쳐를 분할하는데, 이 경우 각각의 타일은 직사각형 영역이다. H.265/HEVC 구현예에서, 인코더(500)는 픽쳐를 하나 이상의 슬라이스로 구획하는데, 이 경우 각각의 슬라이스는 하나 이상의 슬라이스 세그먼트를 포함한다.
일반적인 인코딩 제어부(520)는 입력 비디오 신호(505)에 대한 픽쳐뿐만 아니라 인코더(500)의 다양한 모듈로부터 피드백(도시되지 않음)을 수신한다. 종합하면, 일반적인 인코딩 제어부(520)는, 인코딩 동안 코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대 타일화 모듈(510), 변환기/스케일러/양자화기(530), 스케일러/역변환기(535), 인트라 픽쳐 추정기(540), 모션 추정기(550) 및 인트라/인터 스위치)로 제공한다. 특히, 일반적인 인코딩 제어부(520)는, 인코딩 동안 인트라 BC 예측의 양태(예를 들면, 스킵 모드, 블록 플립핑)를 사용할지의 여부 및 그 사용 방법을 결정할 수 있다. 일반적인 인코딩 제어부(520)는 또한, 인코딩 동안, 예를 들면, 레이트 왜곡 분석을 수행하는 동안 중간 결과를 평가할 수 있다. 일반적인 인코딩 제어부(520)는, 인코딩 동안 만들어진 결정을 나타내는 일반적인 제어 데이터(522)를 생성하고, 그 결과, 대응하는 디코더는 일관된 결정을 행할 수 있다. 일반적인 제어 데이터(522)는 헤더 포맷터(header formatter)/엔트로피 코더(590)로 제공된다.
현재 픽쳐가 인터 픽쳐 예측을 사용하여 예측되면, 모션 추정기(550)는, 하나 이상의 참조 픽쳐를 기준으로, 입력 비디오 신호(505)의 현재 픽쳐에서의 샘플 값의 블록의 모션을 추정한다. 모션 추정기(550)는, 하기에서 설명되는 바와 같이, 인터 픽쳐 코딩된 블록에 대한 주어진 참조 영역을 플립핑하기 위한 동작을 평가할 수 있다. 디코딩된 픽쳐 버퍼(570)는, 참조 픽쳐로서의 사용을 위해 하나 이상의 재구성된 이전에 코딩된 픽쳐를 버퍼링한다. 다수의 참조 픽쳐가 사용되는 경우, 다수의 참조 픽쳐는 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 추정기(550)는, MV 데이터와 같은 모션 데이터(552), 병합 모드 인덱스 값, 참조 픽쳐 선택 데이터 및 블록 플립핑이 사용되는지의 여부를 부가 정보로서 생성한다. 모션 데이터(552)는 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 모션 보상기(555)로 제공된다.
모션 보상기(555)는 MV를, 디코딩된 픽쳐 버퍼(570)로부터의 재구성된 참조 픽쳐(들)에 적용한다. 모션 보상기(555)는 현재 픽쳐에 대한 모션 보상된 예측치를 생성한다. 블록 플립핑이 사용되는 경우, 모션 보상기(555)는, 하기에서 설명되는 바와 같이, 자신의 참조 영역을 기준으로 하는 (현재 블록에 대한) 예측 영역에 대한 플립핑을 담당할 수 있다.
인코더(500) 내에서의 별개의 경로에서, 인트라 픽쳐 추정기(540)는, 입력 비디오 신호(505)의 현재 픽쳐의 샘플 값의 블록에 대한 인트라 픽쳐 예측을 수행하는 방법을 결정한다. 현재 픽쳐는 인트라 픽쳐 코딩을 사용하여 전적으로 또는 부분적으로 코딩될 수 있다. 현재 픽쳐의 재구성(538)의 값을 사용한 인트라 공간 예측의 경우, 인트라 픽쳐 추정기(540)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐에서의 현재 블록의 샘플 값을 공간적으로 예측하는 방법을 결정한다. 또는, BV 값을 사용한 인트라 BC 예측의 경우, 인트라 픽쳐 추정기(540)는, 현재 픽쳐 내에서의 상이한 후보 참조 영역까지의, 현재 블록의 샘플 값의 변위를 추정한다. 후보 참조 영역은 재구성된 샘플 값을 포함할 수 있거나, 또는, 몇몇 구현예에서 BV 추정의 목적을 위해, 입력 비디오로부터의 원래의 샘플 값을 포함할 수 있다. 인트라 픽쳐 추정기(540)는, 하기에서 설명되는 바와 같이, 각각의 후보 참조 영역을 기준으로 하는 (현재 블록에 대한) 인트라 BC 예측 영역에 대한 플립핑에 대한 상이한 옵션을 평가할 수 있다.
인트라 픽쳐 추정기(540)는, 인트라 예측이 공간 예측을 사용하는지 또는 인트라 BC 예측을 사용하는지의 여부, (인트라 공간 예측을 위한) 예측 모드 방향, (인트라 BC 예측을 위한) BV 값 및 (인트라 BC 예측을 위해) 블록 플립핑이 사용되는지의 여부를 나타내는 정보와 같은 부가 정보로서 인트라 예측 데이터(542)를 생성한다. 인트라 예측 데이터(542)는, 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 인트라 픽쳐 예측기(545)에도 제공된다.
인트라 예측 데이터(542)에 따르면, 인트라 픽쳐 예측기(545)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐에서의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(545)는, 현재 블록에 대한 BV 값에 의해 나타내어지는 인트라 프레임 예측 참조 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(545)는, 하기에서 설명되는 바와 같이, 자신의 참조 영역을 기준으로 하는 (현재 블록에 대한) 인트라 BC 예측 영역에 대한 플립핑을 담당할 수 있다. 몇몇 경우에서, BV 값은 BV 예측자(예측된 BV 값)일 수 있다. 다른 경우에서, BV 값은 자신의 예측된 BV 값과는 상이할 수 있다. 픽쳐에 대한 크로마 데이터가 루마 데이터와 동일한 해상도를 갖는 경우(예를 들면, 포맷이 YUV 4:4:4 포맷이거나 또는 RGB 4:4:4 포맷인 경우), 크로마 블록에 대해 적용되는 BV 값은 루마 블록에 대해 적용되는 BV 값과 동일할 수도 있다. 한편, 픽쳐에 대한 크로마 데이터가 루마 데이터에 비해 감소된 해상도를 갖는 경우(예를 들면, 포맷이 YUV 4:2:0 포맷인 경우), 크로마 블록에 대해 적용되는 BV 값은 크로마 해상도에서의 차이를 조정하기 위해 (예를 들면, BV 값의 수직 및 수평 성분을 2로 나누고 나머지를 버리거나 그들을 정수 값으로 반올림하는 것에 의해) 축소될 수도 있고 어쩌면 반올림될 수도 있다.
인트라/인터 스위치는, 주어진 블록에 대한 예측(558)이 모션 보상된 예측일 것인지 또는 인트라 픽쳐 예측일 것인지의 여부를 선택한다. 예측(558)의 블록과 입력 비디오 신호(505)의 원래의 현재 블록의 대응하는 부분 사이의 차이는 (만약 있다면) 비스킵 모드 블록에 대한 잔차(518)의 값을 제공한다. 현재 픽쳐의 재구성 동안, 비스킵 모드 블록의 경우, 재구성된 잔차 값은 예측치(558)와 결합되어 비디오 신호(505)로부터의 원래의 컨텐츠의 근사하는 또는 정확한 재구성치(538)를 생성한다. (손실성 압축에서, 몇몇 정보는 여전히 비디오 신호(505)로부터 상실된다.)
변환기/스케일러/양자화기(530)에서, 주파수 변환기는 공간 도메인 비디오 정보를 주파수 도메인(즉, 스펙트럼, 변환) 데이터로 변환한다. 블록 기반의 비디오 코딩의 경우, 주파수 변환기는, 예측 잔차 데이터(또는 예측(558)이 널(null)인 경우 샘플 값 데이터)의 블록에 대해, 이산 코사인 변환(discrete cosine transform; "DCT"), 그 정수 근사, 또는 다른 타입의 순방향 블록 변환(forward block transform)(예를 들면, 이산 사인 변환 또는 그 정수 근사)을 적용하여, 주파수 변환 계수의 블록을 생성하게 된다. 인코더(500)는 또한, 이러한 변환 단계가 스킵되는 것을 나타낼 수 있을 수도 있다. 스케일러/양자화기는 변환 계수를 스케일링하고 양자화한다. 예를 들면, 양자화기는, 프레임 단위 기반으로, 타일 단위 기반으로, 슬라이스 단위 기반으로, 블록 단위 기반으로, 주파수별 기반으로 또는 다른 기반으로 변하는 양자화 스텝 사이즈를 가지고 주파수 도메인 데이터에 데드 존 스칼라 양자화(dead-zone scalar quantization)를 적용할 수 있다. 양자화된 변환 계수 데이터(532)는 헤더 포맷터/엔트로피 코더(590)에 제공된다.
스케일러/역 변환기(535)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 값 또는 샘플 값의 블록을 생성한다. 비스킵 모드 블록의 경우, 인코더(500)는 재구성된 잔차 값을 예측(558)의 값(예를 들면, 모션 보상된 예측 값, 인트라 픽쳐 예측 값)과 결합하여 재구성치(538)를 형성한다. 스킵 모드 블록의 경우, 인코더(500)는 재구성치(538)로서 예측(558)의 값을 사용한다.
인트라 픽쳐 예측의 경우, 재구성(538)의 값은 인트라 픽쳐 추정기(540) 및 인트라 픽쳐 예측기(545)로 다시 공급될 수 있다. 또한, 재구성(538)의 값은 후속하는 픽쳐의 모션 보상된 예측에 대해 사용될 수 있다. 재구성(538)의 값은 추가로 필터링될 수 있다. 필터링 제어부(560)는, 비디오 신호(505)의 주어진 픽쳐에 대해, 재구성(538)의 값에 관한 디블록 필터링 및 SAO 필터링을 수행하는 방법을 결정한다. 필터링 제어부(560)는 필터 제어 데이터(562)를 생성하는데, 필터 제어 데이터(562)는 헤더 포맷터/엔트로피 코더(590) 및 병합기/필터(들)(565)로 제공된다.
병합기/필터(들)(565)에서, 인코더(500)는 상이한 타일로부터의 컨텐츠를 픽쳐의 재구성된 버전으로 병합한다. 인코더(500)는, 프레임에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(562)에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 다른 필터링(예컨대 디링잉 필터링 또는 ALF; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다. 타일 경계는, 인코더(500)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수 있고, 인코더(500)는 이러한 필터링이 적용되었는지 또는 그렇지 않은지의 여부를 나타내기 위해 코딩된 비트스트림 내에 신택스를 제공할 수도 있다. 디코딩된 픽쳐 버퍼(570)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽쳐를 버퍼링한다.
헤더 포맷터/엔트로피 코더(590)는, 일반적인 제어 데이터(522), 양자화된 변환 계수 데이터(532), 인트라 예측 데이터(542), 모션 데이터(552), 및 필터 제어 데이터(562)를 포맷하고 및/또는 엔트로피 코딩한다. 인트라 예측 데이터(542)의 경우, 헤더 포맷터/엔트로피 코더(590)는 (인트라 BC 예측을 위한) BV 예측자 인덱스 값을 선택하여 엔트로피 코딩할 수 있다. 헤더 포맷터/엔트로피 코더(590)는 또한, 인트라 BC 예측(또는 모션 보상)을 위해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트를 엔트로피 코딩할 수 있다. 몇몇 경우에서, 헤더 포맷터/엔트로피 코더(590)는 또한, (BV 값에 대한 BV 예측자를 기준으로 하는) BV 값에 대한 BV 차분을 결정하고, 그 BV 차분을, 예를 들면, 콘텍스트 적응 이진 산술 코딩을 사용하여 엔트로피 코딩한다. 특히, 스킵 모드 인트라 BC 예측된 블록의 경우, BV 차분이 시그널링된다.
헤더 포맷터/엔트로피 코더(590)는 코딩된 비트 스트림(595)에서 인코딩된 데이터를 제공한다. 코딩된 비디오 비트스트림(595)의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
소망되는 압축의 타입 및 구현예에 따라서, 인코더(500)의 모듈은 추가될 수 있고, 생략될 수 있고, 다수의 모듈로 분할될 수 있고, 다른 모듈과 결합될 수 있고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 인코더는 설명된 기술 중 하나 이상을 수행한다. 인코더의 특정 실시형태는, 통상적으로, 인코더(500)의 변형예 또는 보충된 버전을 사용한다. 인코더(500) 내에서의 모듈 사이에 도시되는 관계는, 인코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VI. 예시적인 비디오 디코더.
도 6은 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 일반화된 디코더(600)의 블록도이다. 디코더(600)는 인코딩된 데이터를 코딩된 비트 스트림(605)에서 수신하고 재구성된 비디오(695)에 대한 픽쳐를 포함하는 출력을 생성한다. 코딩된 비디오 비트스트림(605)의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
디코더(600)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 스테이지에서 더 세분될 수도 있다. 예를 들면, 픽쳐는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이들은 종국에는 샘플 값의 더 작은 블록으로 분할될 수 있다. H.265/HEVC 표준에 대한 디코딩의 구현예에서, 픽쳐는 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획된다.
디코더(600)는 인트라 픽쳐 디코딩 및/또는 인터 픽쳐 디코딩을 사용하여 픽쳐를 압축해제한다. 디코더(600)의 컴포넌트 중 많은 것은 인트라 픽쳐 디코딩 및 인터 픽쳐 디코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축해제되고 있는 정보의 타입에 의존하여 변할 수 있다.
버퍼는 인코딩된 데이터를 코딩된 비디오 비트스트림(605)에서 수신하고 수신된 인코딩된 데이터를 파서/엔트로피 디코더(610)가 이용가능하게 만든다. 파서/엔트로피 디코더(610)는 엔트로피 코딩된 데이터를 엔트로피 디코딩하는데, 통상적으로는 인코더(500)에서 수행된 엔트로피 코딩의 역(예를 들면, 콘텍스트 적응 이진 산술 디코딩)을 적용한다. 파싱 및 엔트로피 디코딩의 결과로서, 파서/엔트로피 디코더(610)는, 일반적인 제어 데이터(622), 양자화된 변환 계수 데이터(632), 인트라 예측 데이터(642), 모션 데이터(652) 및 필터 제어 데이터(662)를 생성한다. 인트라 예측 데이터(642)의 경우, 파서/엔트로피 디코더(610)는 (인트라 BC 예측을 위한) BV 예측자 인덱스 값을 엔트로피 디코딩한다. 파서/엔트로피 디코더(610)는 또한, 인트라 BC 예측(또는 모션 보상)을 위해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트를 엔트로피 디코딩한다. 몇몇 경우에서, 파서/엔트로피 디코더(610)는 또한 (예를 들면, 콘텍스트 적응 이진 산술 디코딩을 사용하여) BV 값에 대한 BV 차분을 엔트로피 디코딩하고, 그 다음, 그 BV 차분을, 대응하는 BV 예측자와 결합하여 BV 값을 재구성한다. 특히, 스킵 모드 인트라 BC 예측된 블록의 경우, BV 차분이 비트스트림으로부터 파싱되고 (예를 들면, BV 예측자 인덱스 값으로 나타내어지는) BV 예측자와 결합되어 BV 값을 재구성한다.
일반적인 디코딩 제어부(620)는 일반적인 제어 데이터(622)를 수신하고, 디코딩 동안 디코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대, 스케일러/역 변환기(635), 인트라 픽쳐 예측기(645), 모션 보상기(655) 및 인트라/인터 스위치)로 제공한다.
현재 픽쳐가 인터 픽쳐 예측을 사용하여 예측되면, 모션 보상기(655)는 모션 데이터(652), 예컨대 MV 데이터, 참조 픽쳐 선택 데이터, 병합 모드 인덱스 값 및 (모션 보상을 위해) 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트를 수신한다. 모션 보상기(655)는 MV를, 디코딩된 픽쳐 버퍼(670)로부터의 재구성된 참조 픽쳐(들)에 적용한다. 블록 플립핑이 사용되는 경우, 모션 보상기(655)는, 하기에서 설명되는 바와 같이, 자신의 참조 영역을 기준으로 하는 (현재 블록에 대한) 예측 영역의 플립핑을 담당할 수 있다. 모션 보상기(655)는 현재 픽쳐에서의 인터 코딩된 블록에 대한 모션 보상된 예측치를 생성한다. 디코딩된 픽쳐 버퍼(670)는 참조 픽쳐로서의 사용을 위해 하나 이상의 이전에 재구성된 픽쳐를 저장한다.
디코더(600) 내의 별개의 경로에서, 인트라 프레임 예측 추정기(645)는, 인트라 예측이 공간 예측을 사용하는지 또는 인트라 BC 예측을 사용하는지의 여부, (인트라 공간 예측을 위한) 예측 모드 방향, (인트라 BC 예측을 위한) BV 값 및 (인트라 BC 예측을 위해) 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트를 나타내는 정보와 같은 인트라 예측 데이터(642)를 수신한다. 인트라 공간 예측의 경우, 현재 픽쳐의 재구성(638)의 값을 사용하여, 예측 모드 데이터에 따라, 인트라 픽쳐 예측기(645)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐에서의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, BV 값을 사용하는 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(645)는, 현재 블록에 대한 BV 값에 의해 나타내어지는 인트라 프레임 예측 참조 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(645)는, 하기에서 설명되는 바와 같이, 자신의 참조 영역을 기준으로 하는 (현재 블록에 대한) 인트라 BC 예측 영역에 대한 플립핑을 담당할 수 있다.
인트라/인터 스위치는, 주어진 블록에 대한 예측(658)이 모션 보상된 예측인지 또는 인트라 픽쳐 예측인지의 여부를 선택한다. 예를 들면, H.265/HEVC 신택스가 후속되면, 인트라/인터 스위치는, 인트라 예측된 CU 및 인터 예측된 CU를 포함할 수 있는 픽쳐에서의 CU에 대해 인코딩되는 하나 이상의 신택스 엘리먼트에 기초하여 제어될 수 있다. 비스킵 모드 블록의 경우, 디코더(600)는 예측치(658)를 재구성된 잔차 값과 결합하여 비디오 신호로부터의 컨텐츠의 재구성치(638)를 생성한다. 스킵 모드 블록의 경우, 디코더(600)는 재구성치(638)로서 예측(658)의 값을 사용한다.
비스킵 모드 블록에 대한 잔차를 재구성하기 위해, 스케일러/역변환기(635)는 양자화된 변환 계수 데이터(632)를 수신하여 프로세싱한다. 스케일러/역 변환기(635)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 값 또는 샘플 값의 블록을 생성한다. 예를 들면, 역 주파수 변환기는 주파수 변환 계수에 대해 역 블록 변환을 적용하여, 샘플 값 데이터 또는 예측 잔차 데이터를 생성한다. 역 주파수 변환은 역 DCT, 역 DCT의 정수 근사, 또는 다른 타입의 역 주파수 변환(예를 들면, 역 이산 사인 변환 또는 역 이산 사인 변환의 정수 근사)일 수 있다.
인트라 픽쳐 예측의 경우, 재구성(638)의 값은 인트라 픽쳐 예측기(645)로 다시 공급될 수 있다. 인터 픽쳐 예측의 경우, 재구성(638)의 값은 추가로 필터링될 수 있다. 병합기/필터(들)(665)에서, 디코더(600)는 상이한 타일로부터의 컨텐츠를 픽쳐의 재구성된 버전으로 병합한다. 디코더(600)는, 프레임에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(662) 및 필터 적응을 위한 규칙에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 다른 필터링(예컨대 디링잉 필터링 또는 ALF; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다. 타일 경계는, 인코딩된 비트 스트림 데이터 내에서의 신택스 표시(syntax indication) 또는 디코더(600)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수 있다. 디코딩된 픽쳐 버퍼(670)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽쳐를 버퍼링한다.
디코더(600)는 또한 후처리 필터(post-processing deblock filter)를 포함할 수 있다. 후처리 필터(608)는, 디링잉 필터링, 적응적 위이너 필터링(adaptive Wiener filtering), 필름 그레인 재현 필터링(film-grain reproduction filtering), SAO 필터링 또는 다른 종류의 필터링을 포함할 수 있다.
소망되는 압축해제의 타입 및 구현예에 따라서, 디코더의 모듈은 추가될 수 있고, 생략될 수 있고, 다수의 모듈로 분할될 수 있고, 다른 모듈과 결합될 수 있고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 디코더는 설명된 기술 중 하나 이상을 수행한다. 디코더의 특정 실시형태는, 통상적으로, 디코더(600)의 변형예 또는 보충된 버전을 사용한다. 디코더(600) 내에서 모듈 사이에 도시되는 관계는, 디코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VII. 인트라 블록 카피 예측에서의 혁신안.
이 섹션은 인트라 블록 카피("BC") 예측의 피쳐를 제시한다. 예를 들면, 피쳐 중 몇몇은, 인트라 BC 예측 영역이 참조 영역(reference region)에 대하여 플립핑되는 블록 플립핑(block flipping)에 관련되는데, 참조 영역은 블록 벡터(block vector; "BV") 값에 의해 나타내어질 수 있다. 다른 피쳐는, 현재의 인트라 BC 예측된 블록이 시그널링된 BV 차분을 사용하지만 잔차 데이터가 없는 스킵 모드의 시그널링에 관련된다. 많은 상황에서, 이들 피쳐는 인트라 BC 예측된 블록에 대한 코딩 효율성을 향상시킨다.
특히, 설명된 혁신안은, 스크린 캡쳐 컨텐츠와 같은 소정의 "인공적으로" 생성된 비디오 컨텐츠를 인코딩할 때 레이트-왜곡 성능을 향상시킬 수 있다. 스크린 캡쳐 컨텐츠는 통상적으로 반복된 구조(예를 들면, 그래픽, 텍스트 문자)를 포함하는데, 이들 반복된 구조는 인트라 BC 예측이 성능을 향상시킬 기회를 제공한다. 스크린 캡쳐 컨텐츠는, 일반적으로, 높은 크로마 샘플링 해상도를 갖는 포맷(예를 들면, YUV 4:4:4 또는 RGB 4:4:4)으로 인코딩되지만, 스크린 캡쳐 컨텐츠는 또한 더 낮은 크로마 샘플링 해상도(예를 들면, YUV 4:2:0)를 갖는 포맷으로 인코딩될 수도 있다. 스크린 캡쳐 컨텐츠의 인코딩/디코딩을 위한 공통 시나리오는, 원격 데스크탑 회의 및 미가공 비디오(natural video) 또는 다른 "혼합된 컨텐츠" 비디오 상의 그래픽 오버레이의 인코딩/디코딩을 포함한다.
A. 인트라 BC 예측 모드, BV 값 및 BV 예측 - 서론
인트라 BC 예측의 경우, 픽쳐에서의 현재 블록의 샘플 값은, 동일 픽쳐에서의 샘플 값을 사용하여 예측된다. BV 값은, 예측을 위해 사용되는 샘플 값을 포함하는 픽쳐에서의 한 영역("참조 영역")까지의 현재 블록으로부터의 변위를 나타낸다. 참조 영역은 현재 블록에 대한 예측된 값("인트라 BC 예측 영역")을 제공한다. 예측을 위해 사용되는 샘플 값은 미리 재구성된 샘플 값인데, 그러므로, 미리 재구성된 샘플 값은 인코딩 동안 인코더에서 그리고 디코딩 동안 디코더에서 이용가능하다. BV 값은 비트스트림에서 시그널링될 수 있고, 디코더는 예측을 위해 사용할 픽쳐에서의 참조 영역(이것은 디코더에서 재구성되었음)을 결정하기 위해 BV 값을 사용할 수 있다. 인트라 BC 예측은 인트라 픽쳐 예측의 형태이다 - 픽쳐에서의 한 블록에 대한 인트라 BC 예측은 동일 픽쳐에서의 샘플 값 외에는 어떠한 샘플 값도 사용하지 않는다.
도 7a는 현재 프레임(710)에서의 현재 블록(760)에 대한 인트라 BC 예측을 예시한다. 현재 블록은 코딩 단위("CU")의 코딩 블록("CB"), 예측 단위("PU")의 예측 블록("PB"), 변환 단위("TU")의 변환 블록("TB") 또는 다른 블록일 수 있다. 현재 블록의 사이즈는 64×64, 32×32, 16×16, 8×8 또는 어떤 다른 사이즈일 수 있다. 보다 일반적으로는, 현재 블록의 사이즈는 m×n인데, 여기서 m 및 n의 각각은 0을 포함한 자연수(whole number)이고, m 및 n은 서로 동일할 수 있거나 또는 상이한 값을 가질 수 있다. 대안적으로, 현재 블록은 몇몇 다른 형태(예를 들면, 비직사각형 형상을 갖는 코딩된 비디오 오브젝트의 영역)를 가질 수 있다.
BV(761)는, 예측을 위해 사용되는 샘플 값을 포함하는 픽쳐에서의 참조 영역(780)까지의 현재 블록(760)으로부터의 변위(또는 오프셋)를 나타낸다. BV(761)에 의해 나타내어지는 참조 영역(780)은 현재 블록(760)에 대한 "매칭 블록"으로 종종 칭해진다. 매칭 블록은 현재 블록(760)과 동일할 수 있거나, 또는 매칭 블록은 현재 블록(760)의 근사치일 수 있다. 현재 블록의 좌상(top-left) 위치가 현재 프레임에서 위치 (x0, y0)에 있다고 가정하고, 참조 영역의 좌상 위치가 현재 프레임에서 위치 (x1, y1)에 있다고 가정한다. BV는 변위 (x1-x0, y1-y0)을 나타낸다. 예를 들면, 현재 블록의 좌상 위치가 위치 (256, 128)에 있고, 참조 영역의 좌상 위치가 위치 (176, 104)에 있으면, BV 값은 (-80, -24)이다. 이 예에서, 음의 수평 변위는, 현재 블록의 좌측에 있는 위치를 나타내고, 음의 수직 변위는 현재 블록 위의 위치를 나타낸다.
인트라 BC 예측은, BC 동작을 사용하여 중복성(redundancy)(예컨대 프레임 내부에서의 반복된 패턴)을 활용하는 것에 의해 코딩 효율성을 향상시킬 수 있다. 현재 블록의 샘플 값은, 현재 블록의 샘플 값을 바로 인코딩하는 대신 BV 값을 사용하여 표현된다. 현재 블록의 샘플 값이 BV 값으로 나타내어지는 참조 영역의 샘플 값과 정확하게 매칭하지 않더라도, 차이는 무시될 수도 있다(지각적으로 현저하지 않을 수도 있다). 또는, 차이가 유의하면(significant), 차이는, 현재 블록에 대한 원래의 샘플 값보다 더 효율적으로 압축될 수 있는 잔차 값으로 인코딩될 수도 있다.
총괄하여, 인트라 BC 예측을 사용하여 인코딩된 블록에 대한 BV 값은 상당한 수의 비트를 소비할 수 있다. BV 값은 비트 레이트를 감소시키기 위해 엔트로피 인코딩될 수 있다. BV 값에 대한 비트 레이트를 더 감소시키기 위해, 인코더는 BV 값에 대한 예측치를 사용할 수 있다. BV 값은 종종 중복성을 나타낸다 - 주어진 블록에 대한 BV 값은 종종 픽쳐에서의 이전 블록의 BV 값과 유사하거나, 또는 심지어 동일하다. BV 예측을 위해, 주어진 블록에 대한 BV 값은 BV 예측자를 사용하여 예측된다. 그 다음, 주어진 블록에 대한 BV 값과 BV 예측자 사이의 차이(또는 BV 차분)는 엔트로피 코딩된다. 통상적으로, BV 차분은 BV 예측자 및 BV 값의 수평 및 수직 성분에 대해 계산된다. BV 예측이 잘 들어 맞으면, BV 차분은 효율적인 엔트로피 코딩을 지원하는 확률 분포를 갖는다. H.265/HEVC 표준의 하나의 초안 버전(JCTVC-P1005)에서, BV 예측자는 현재 CTU 내에서의 최종 코딩된 CU의 BV 값(즉, 현재 CTU 내에서의 이전 인트라 BC 예측된 블록의 BV 값)이다. 대안적으로, BV 예측자는 (예를 들면, 현재 블록 주위의 이웃에서의) 다수의 이용가능한 BV 값 중에서 선택된다.
도 7b는 프레임에서의 현재 블록(760)의 BV(761)뿐만 아니라 프레임(710)에서의 이전 블록(750)의 BV(751)를 도시한다. 이전 블록(750)의 BV(751)는 현재 블록(760)의 BV(761)에 대한 BV 예측자로서 사용된다. 예를 들면, BV 값이 (-80, -24)이고 BV 예측자가 (-80, -32)이면, (0, 8)의 BV 차분이 엔트로피 인코딩된다.
디코더는 BV 값에 대한 엔트로피 코딩된 BV 차분을 수신하여 엔트로피 디코딩한다. 디코더는 또한 BV 값에 대한 BV 예측자를 결정한다. 디코더에 의해 결정되는 BV 예측자는 인코더에 의해 결정되는 BV 예측자와 동일하다. 디코더는 BV 예측자 및 디코딩된 BV 차분을 결합하여 BV 값을 재구성한다.
B. 인트라 BC 예측에서의 블록 플립핑.
인트라 BC 예측을 위한 이전 방식에서, BV 값에 의해 나타내어지는 참조 영역은 현재 블록에 대한 인트라 BC 예측 영역을 제공한다. 즉, 참조 영역의 샘플 값은 현재 블록에 대한 인트라 BC 예측된 값이다.
본원에서 설명되는 혁신안의 하나의 양태에 따르면, 현재 블록에 대한 인트라 BC 예측 영역은 참조 영역에 대하여 플립핑된다. 현재 블록에 대한 BV 값은 참조 영역을 나타낼 수 있다. 현재 블록에 대한 인트라 BC 예측 영역으로서 참조 영역을 직접적으로 사용하는 대신, 참조 영역은 수평으로 및/또는 수직으로 플립핑될 수 있다. 특히, 블록 플립핑은, 스크린 캡쳐 컨텐츠의 텍스트 문자의 코딩 효율성을 향상시킬 수 있다.
1. 블록 플립핑의 예.
도 8a 내지 도 8d, 도 9a 내지 도 9c 및 도 10a 내지 도 10c는 인트라 BC 예측에서의 블록 플립핑의 예를 예시한다.
도 8a는 현재 픽쳐(810)에서의 현재 블록(860)을 나타낸다. 현재 블록(860)은, 도 8b에서 상세히 설명되는 바와 같이, 텍스트 문자 p를 포함한다. 현재 블록(860)에 대한 BV(861)는, 현재 픽쳐(810)에서의 참조 영역(880)까지의 변위를 나타낸다. 참조 영역(880)은, 도 8c에서 상세히 설명되는 바와 같이, 텍스트 문자 d를 포함한다. 플립핑이 없으면, 참조 영역(880)은 현재 블록(860)에 대한 불량한(poor) 예측기이다. (현재 블록(860)과 참조 영역(880) 사이의 샘플 단위의 차이는 유의하다.)
인코더 및 디코더는 코딩 효율성을 향상시키기 위해 인트라 BC 예측에서 블록 플립핑을 사용할 수 있다. 예를 들면, 참조 영역(880)은, 도 8d의 플립핑된 참조 영역(881)에서 나타내어지는 바와 같이, 수평으로 그리고 수직으로 플립핑될 수 있다. 이 예에서, 참조 영역(880)이 수평으로 그리고 수직으로 플립핑되면, 플립핑된 참조 영역(881)은 현재 블록(860)과 정확하게 매치한다. (즉, 인트라 BC 예측 영역은 현재 블록(880)에 대해 완전히 일치하고, 잔차는 제로 값의 샘플만을 포함한다).
마찬가지로, 참조 영역(880)은 수평으로 플립핑될 수 있다. 예를 들면, 주어진 블록이 텍스트 문자 b를 포함하면, 참조 영역(880)의 수평 플립핑은, 주어진 블록과 완전히 일치하는 플립핑된 참조 영역을 산출할 수 있을 것이다. 또는, 참조 영역(880)은 수직으로 플립핑될 수 있다. 예를 들면, 주어진 블록이 텍스트 문자 q를 포함하면, 참조 영역(880)의 수직 플립핑은, 주어진 블록과 완전히 일치하는 플립핑된 참조 영역을 산출할 수 있을 것이다.
블록 플립핑을 통해, 많은 폰트의 경우, 텍스트 문자의 세트(예를 들면, 세트 b, d, p 및 q, 또는 세트 u 및 n)에 있는 텍스트 문자를 포함하는 블록은, 텍스트 문자의 동일한 세트에 있는 다른 텍스트 문자를 포함하는 참조 영역으로부터 정확히 예측될 수 있다. 다른 폰트의 경우, 텍스트 문자의 세트에 있는 텍스트 문자를 포함하는 블록은, 텍스트 문자의 동일한 세트에 있는 다른 텍스트 문자를 포함하는 참조 영역으로부터 대략적으로 예측될 수 있다. 더 일반적으로는, 블록 플립핑은, 텍스트 문자의 다양한 알파벳 또는 스크린 컨텐츠에서의 다른 패턴에 대한 코딩 효율성을 향상시킬 수 있다.
따라서, 블록 플립핑을 통해, 텍스트 문자(또는 다른 패턴)를 포함하는 블록은, 그 텍스트 문자(또는 다른 패턴)가 픽쳐에서 이전에 나타나지 않았더라도, 인트라 BC 예측될 수 있는데, 이것은 블록을 인코딩하는 다른 방법과 비교하여 코딩 효율성을 향상시킬 수도 있다. 또는, 텍스트 문자(또는 다른 패턴)가 픽쳐에서 이미 나타났더라도, 인트라 BC 예측은, 동일한 텍스트 문자(또는 다른 패턴)를 갖는 참조 영역보다 그 블록에 더 가까운 플립핑된 참조 영역을 사용할 수 있다. 더 가까운 플립핑된 영역에 대한 BV 값은, 더 먼 참조 영역에 대한 BV 값보다 훨씬 더 효율적으로 인코딩될 수도 있을 것이다. 예를 들면, 텍스트 문자 q를 포함하는 현재 블록의 경우, 동일한 문자 q를 포함하는 제1 후보 참조 영역이 BV 값 (-280, -24)를 가지고 나타내어질 수 있고, 한편 상이한 문자 p를 포함하는 제2 후보 참조 영역이 BV 값 (-32, 0)을 가지고 나타내어질 수 있다고 가정한다. 제2 후보 참조 영역은 수평으로 플립핑되어 현재 블록과 정확히 매치할 수 있다. 제2 후보 참조 영역에 대한 BV 값은, 블록 플립핑을 나타내기 위한 신택스 엘리먼트의 시그널링을 고려하더라도, 제1 후보 참조 영역에 대한 BV 값보다 더 효율적으로(더 적은 비트로) 인코딩될 수 있다.
도 9a 내지 도 9c에서 도시되는 바와 같이, 블록 및 참조 영역은 다수의 텍스트 문자를 포함할 수 있다. 도 9a는 텍스트 문자 dl을 포함하는 현재 블록(960)을 도시한다. 현재 블록(960)에 대한 BV 값은 동일 픽쳐에서의 참조 영역(980)까지의 변위를 나타낸다. 참조 영역(980)은, 도 9b에서 상세히 설명되는 바와 같이, 텍스트 문자 lb를 포함한다. 플립핑이 없으면, 참조 영역(980)은 현재 블록(960)에 대한 불량한 예측기이다. 이 예에서, 참조 영역(980)이 수평으로 그리고 수직으로 플립핑되면, 플립핑된 참조 영역(981)은 현재 블록(960)과 정확하게 매치한다.
앞선 예에서, 블록 및 참조 영역은 전체 텍스트 문자를 포함한다. 도 10a 내지 도 10c에서 도시되는 바와 같이, 블록 및 참조 영역은, 대신, 텍스트 문자, 심볼 또는 패턴 중 하나 이상의 부분을 포함할 수 있다. 도 10a는, 텍스트 문자 L의 일부를 포함하는 현재 블록(1060)을 도시한다. 현재 블록(1060)에 대한 BV 값은, 동일 픽쳐에서의 참조 영역(1080)까지의 변위를 나타낸다. 참조 영역(1080)은, 도 10b에서 상세히 설명되는 바와 같이, 텍스트 문자 F의 일부를 포함한다. 플립핑이 없으면, 참조 영역(1080)은 현재 블록(1060)에 대한 불량한 예측기이다. 그러나, 참조 영역(1080)이 수직으로 플립핑되면, 플립핑된 참조 영역(1081)은 현재 블록(1060)과 정확하게 매치한다.
2. 예시적인 플립핑 동작.
인트라 BC 예측에서 블록 플립핑이 사용되는 경우, 블록에 대한 인트라 BC 예측 영역은 그 블록에 대한 참조 영역에 대하여 플립핑된다. 블록 플립핑 동작은, 구현예에 따라, 다양한 방식으로 구현될 수 있다.
블록 플립핑 동작을 수행하는 하나의 방식에 따르면, 현재 블록에 대한 인트라 BC 예측 영역을 결정할 때, 인코더 또는 디코더는, (a) 참조 영역을 결정하고, (b) 참조 영역을 플립핑하고, 그 다음 (c) 플립핑된 참조 영역의 각각의 위치에서의 샘플 값을, 인트라 BC 예측 영역의 각각의 위치에서의 샘플 값에 할당한다. 예를 들면, 16×16 블록의 경우, 인코더 또는 디코더는 블록에 대한 BV 값에 의해 나타내어지는 16×16 참조 영역을 결정하고, 그 다음 16×16 참조 영역을 수평으로 및/또는 수직으로 플립핑한다. 이것은, 16×16 참조 영역의 사본을 생성하는 것을 수반하는데, 그 사본은 플립핑되어 있다. 그 다음, 플립핑된 참조 영역의 위치에서의 샘플 값은, 인트라 BC 예측 영역의 동일한 위치에서의 샘플 값에 할당된다(예를 들면, 플립핑된 참조 영역의 위치 (0, 0)에서의 샘플 값은, 인트라 BC 예측 영역의 위치 (0, 0)에서의 샘플 값에 할당되고, 플립핑된 참조 영역의 위치 (0, 1)에서의 샘플 값은, 인트라 BC 예측 영역의 위치 (0, 1)에서의 샘플 값에 할당되고, 계속 그런 식이다).
블록 플립핑 동작을 수행하는 다른 방식에 따르면, 현재 블록에 대한 인트라 BC 예측 영역을 결정할 때, 인코더 또는 디코더는, (a) 참조 영역을 결정하고, (b) 참조 영역의 각각의 위치에서의 샘플 값을, 인트라 BC 예측 영역의 각각의 위치에서의 샘플 값에 할당하고, 그 다음 (c) 인트라 BC 예측 영역을 플립핑한다. 예를 들면, 16×16 블록의 경우, 인코더 또는 디코더는 블록에 대한 BV 값에 의해 나타내어지는 16×16 참조 영역을 결정한다. 참조 영역의 위치에서의 샘플 값은, 인트라 BC 예측 영역의 동일한 위치에서의 샘플 값에 할당된다(예를 들면, 참조 영역의 위치 (0, 0)에서의 샘플 값은, 인트라 BC 예측 영역의 위치 (0, 0)에서의 샘플 값에 할당되고, 참조 영역의 위치 (0, 1)에서의 샘플 값은, 인트라 BC 예측 영역의 위치 (0, 1)에서의 샘플 값에 할당되고, 계속 그런 식이다). 그 다음, 인코더 또는 디코더는 16×16 인트라 BC 예측을 수평으로 및/또는 수직으로 플립핑한다. 이것은, 16×16 인트라 BC 예측의 사본을 생성하는 것을 수반하는데, 그 사본은 플립핑되어 있다.
블록 플립핑 동작을 수행하는 제3 방식에 따르면, 인코더 및 디코더는, 참조 영역 또는 인트라 BC 예측 영역의 중간 사본을 생성하는 것을 방지한다. 현재 블록에 대한 인트라 BC 예측 영역을 결정할 때, 인코더 또는 디코더는, (a) 참조 영역을 결정하고, 그 다음 (b) 참조 영역의 각각의 위치에서의 샘플 값을, 인트라 BC 예측 영역의 대응하는 위치에서의 샘플 값에 할당하는데, 이 경우 대응하는 위치는 블록 플립핑을 담당한다. 수평 플립핑이 사용되는 경우, 참조 영역의 제1 칼럼(column)은 인트라 BC 예측 영역의 최종 칼럼을 제공하고, 참조 영역의 제2 칼럼은 인트라 BC 예측 영역의 마지막에서 두 번째 칼럼을 제공하고, 계속 그런 식이다. 수직 플립핑이 사용되는 경우, 참조 영역의 제1 로우(row)는 인트라 BC 예측 영역의 최종 로우를 제공하고, 참조 영역의 제2 로우는 인트라 BC 예측 영역의 마지막에서 두 번째 로우를 제공하고, 계속 그런 식이다. 수평 및 수직 플립핑이 함께 사용되는 경우, 참조 영역의 위치는, 샘플 값을 인트라 BC 예측 영역의 위치에 할당할 때 수평으로 그리고 수직으로 역 순서로 횡단될 수 있다. 예를 들면, 16×16 블록의 경우, 인코더 또는 디코더는 블록에 대한 BV 값에 의해 나타내어지는 16×16 참조 영역을 결정한다. 참조 영역의 위치에서의 샘플 값은, 인트라 BC 예측 영역의 대응하는 위치에서의 샘플 값에 할당된다(예를 들면, 참조 영역의 위치 (0, 0)에서의 샘플 값은, 인트라 BC 예측 영역의 위치 (15, 15)에서의 샘플 값에 할당되고, 참조 영역의 위치 (0, 1)에서의 샘플 값은, 인트라 BC 예측 영역의 위치 (15, 14)에서의 샘플 값에 할당되고, 계속 그런 식이다).
3. 블록 플립핑에 대한 예시적인 시그널링.
인트라 BC 예측에 대해 블록 플립핑이 인에이블되는 경우, 블록 플립핑을 사용할지 또는 사용하지 않을지의 결정은, 구현예에 따라, 다양한 방식으로 시그널링될 수 있다.
블록 플립핑은, 비디오의 시퀀스, 픽쳐 또는 다른 단위에 대해 인에이블될 수 있다. (예를 들면, SPS에서의) 시퀀스 레이어 신택스 엘리먼트, (예를 들면, PPS에서의) 픽쳐 레이어 신택스 엘리먼트 또는 (예를 들면, 슬라이스 세그먼트 헤더에서의) 슬라이스 헤더 레이어 신택스 엘리먼트는, 블록 플립핑이 인에이블되는지 또는 디스에이블되는지의 여부를 나타낼 수 있다. 또는, 블록 플립핑은 인코딩 및 디코딩의 몇몇 프로파일 또는 레벨에 대해 인에이블될 수 있다. 블록 플립핑을 인에이블하는 결정은, 방향 단위 기반으로 행해질 수 있다(예를 들면, 수평 블록 플립핑만, 수직 블록 플립핑만, 또는 수평 및 수직 블록 플립핑 둘 다) 블록 플립핑이 인에이블되면, 블록 플립핑이 사용되는 때 및 블록 플립핑이 어떻게 사용되는지를 추가적인 신택스 엘리먼트가 시그널링한다.
수직 플립핑만이 인에이블되는 경우, 인트라 BC 예측 동안 수직 플립핑이 사용되는지 또는 그렇지 않은지의 여부를 플래그 값이 나타낼 수 있다. 수평 플립핑만이 인에이블되는 경우, 인트라 BC 예측 동안 수평 플립핑이 사용되는지 또는 그렇지 않은지의 여부를 플래그 값이 나타낼 수 있다. 수직 플립핑 및 수평 플립핑 둘 다가 인에이블되는 경우, 인트라 BC 예측 동안 수평 및 수직 플립핑에 대한 플립핑이 사용되는지 또는 그렇지 않은지의 여부를 두 개의 플래그 값이 나타낼 수 있는데, 각각의 플래그는 플립핑의 방향에 대한 결정을 나타낸다. 또는, 다수의 값을 갖는(예를 들면, 수직 플립핑만, 수평 플립핑만, 수평 및 수직 플립핑 둘 다, 또는 플립핑 없음을 나타내는 가능한 값을 갖는) 단일의 신택스 엘리먼트가 사용될 수 있다.
현재 블록에 대해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트(예를 들면, 플래그 값)는, 현재 블록에 대한 다른 신택스 엘리먼트와 함께 비트스트림에서 시그널링될 수 있다. 예를 들면, PU에 대한 블록 플립핑에 관한 신택스 엘리먼트(들)는 PU에 대해 시그널링된다. 또는, 현재 블록에 대해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트는, 현재 블록을 포함하는 더 큰 블록에 대한 비트스트림에서 시그널링될 수 있다. 예를 들면, 하나 이상의 PU에 대한 블록 플립핑에 관한 신택스 엘리먼트(들)는, PU(들)를 포함하는 CU에 대해 시그널링된다. 대안적으로, 현재 블록에 대해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트는, 비트스트림의 몇몇 다른 레벨에서 시그널링된다.
현재 블록에 대해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트는, 엔트로피 코딩될 수 있다. 예를 들면, 현재 블록에 대한 플래그 값은, 컨텍스트 적응 이진 산술 코딩을 사용하여 인코딩되고 컨텍스트 적응 이진 산술 디코딩을 사용하여 디코딩된다. 대안적으로, 엔트로피 코딩의 상이한 형태가 사용될 수 있거나, 또는 신택스 엘리먼트는 고정된 길이의 값으로서 시그널링될 수 있다.
현재 블록에 대해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트(들)는, 비트스트림에서 개별적으로 그리고 조건부적으로 시그널링될 수 있다. 예를 들면, 현재 블록이 인트라 BC 예측되면 블록 플립핑이 사용되는지 또는 그렇지 않은지의 여부를 나타내는 플래그 값이 시그널링될 수 있지만, 현재 블록이 인트라 BC 예측되지 않으면 시그널링되지 않는다. 또는, 현재 블록에 대해 블록 플립핑이 사용되는지의 여부를 나타내는 신택스 엘리먼트(들)는, 비트스트림에서 다른 신택스 엘리먼트와 함께 코딩될 수 있다. 예를 들면, 블록 플립핑이 사용되는지 또는 그렇지 않은지의 여부를 나타내는 플래그 값은, 현재 블록이 인트라 BC 예측되는지의 여부를 나타내는 플래그 값과 함께 코딩될 수 있다.
4. 인트라 BC 예측에서의 블록 플립핑을 이용한 예시적인 인코딩.
도 11은 인코딩 동안 인트라 BC 예측에서의 블록 플립핑을 위한 예시적인 기술(1100)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1100)을 수행할 수 있다.
인코더는, 픽쳐에서의 참조 영역에 기초하여 픽쳐에서의 현재 블록에 대한 인트라 BC 예측 영역을 결정한다(1110). 현재 블록은 PU, CU, 또는 다른 블록일 수 있다. BV 추정에서 식별되는, 현재 블록에 대한 BV 값은, 픽쳐에서의 참조 영역까지의 변위를 나타낼 수 있다. 인트라 BC 예측 영역은 참조 영역에 대하여 플립핑된다. 예를 들면, 인트라 BC 예측 영역은 참조 영역에 대하여 수평으로 및/또는 수직으로 플립핑된다. 블록 플립핑 동작을 수행하는 방식의 예는 상기에서 설명되어 있다(섹션 VII.B.2 참조).
인코더는 인트라 BC 예측 영역을 사용하여 현재 블록을 인코딩하고(1120), 인코딩된 데이터를 비트스트림에서 출력한다(1130). 인코딩된 데이터는, 인트라 BC 예측 영역이 참조 영역에 대하여 플립핑되는지의 여부의 표시(indication)를 포함한다. 예를 들면, 그 표시는 비트스트림에서 하나 이상의 신택스 엘리먼트이다. 블록 플립핑이 사용되는지의 여부를 시그널링하는 방식의 예는 상기에서 설명되어 있다(섹션 VII.B.3 참조).
인코더는, 슬라이스, 타일 또는 픽쳐에 대해, 블록 플립핑을 가지고 또는 블록 플립핑 없이, 블록 단위 기반으로 다른 인트라 BC 예측된 블록을 마찬가지로 인코딩할 수 있다.
5. 인트라 BC 예측에서의 블록 플립핑을 이용한 예시적인 디코딩.
도 12는 디코딩 동안 인트라 BC 예측에서의 블록 플립핑을 위한 예시적인 기술(1200)을 도시한다. 도 4 또는 도 6을 참조로 설명된 바와 같은 이미지 디코더 또는 비디오 디코더가 기술(1200)을 수행할 수 있다.
디코더는 인코딩된 데이터를 비트스트림에서 수신한다(1210). 인코딩된 데이터는, 픽쳐에서의 현재 블록에 대한 인트라 BC 예측 영역이 픽쳐에서의 참조 영역에 대하여 플립핑되는지의 여부의 표시를 포함한다. 현재 블록은 PU, CU, 또는 다른 블록일 수 있다. 예를 들면, 그 표시는 비트스트림에서 하나 이상의 신택스 엘리먼트이다. 블록 플립핑이 사용되는지의 여부를 시그널링하는 방식의 예는 상기에서 설명되어 있다(섹션 VII.B.3 참조).
디코더는, 픽쳐에서의 참조 영역에 기초하여 픽쳐에서의 현재 블록에 대한 인트라 BC 예측 영역을 결정한다(1220). 현재 블록에 대한 BV 값은 참조 영역까지의 변위를 나타낼 수 있다. 인트라 BC 예측 영역은 참조 영역에 대하여 플립핑된다. 예를 들면, 인트라 BC 예측 영역은 참조 영역에 대하여 수평으로 및/또는 수직으로 플립핑된다. 블록 플립핑 동작을 수행하는 방식의 예는 상기에서 설명되어 있다(섹션 VII.B.2 참조). 디코더는 인트라 BC 예측 영역을 사용하여 현재 블록을 디코딩한다(1230).
디코더는, 슬라이스, 타일 또는 픽쳐에 대해, 블록 플립핑을 가지고 또는 블록 플립핑 없이, 블록 단위 기반으로 다른 인트라 BC 예측된 블록을 마찬가지로 디코딩할 수 있다.
C. 인트라 BC 예측을 위한 스킵 모드.
인트라 BC 예측에 대한 몇몇 이전의 방식에서, CU가 인트라 BC 예측 모드에서 코딩되는지의 여부를, 현재 CU에 대한 플래그가 나타낸다. 만약 그렇다면, CU가 잔차 데이터를 갖는지의 여부를, 현재 CU에 대한 제2 플래그가 나타낸다. 잔차 데이터가 없는 인트라 BC 예측된 블록을 시그널링하는 이 방식은, 많은 스크린 컨텐츠 코딩/디코딩 시나리오에서 불충분하다.
본원에서 설명되는 혁신안의 다른 양태에 따르면, 인코더 및 디코더는 잔차 데이터가 없는 인트라 BC 예측된 블록을 시그널링하기 위해 플래그를 사용한다. 스킵 모드에서, 인트라 BC 예측된 블록은, 비트스트림에서 시그널링되는 BV 차분과 함께, BV 값을 사용하고, 비트스트림에서 잔차 데이터를 갖지 않는다. 특히, 스크린 캡쳐 컨텐츠의 경우, 잔차 데이터가 없는 인트라 BC 예측된 블록이 일반적이다. 잔차 데이터가 없는 인트라 BC 예측된 블록을 시그널링하기 위해 (다수의 플래그와는 대조적으로) 단일의 플래그를 사용하는 것은, 이러한 시나리오에서 효율적이다.
1. 인트라 BC 예측 스킵 모드에 대한 예시적인 시그널링.
예시적인 구현예에서, 현재 블록이 스킵 모드에서 인트라 BC 예측된 블록인지 또는 그렇지 않은지의 여부를, 비트스트림에서의 단일의 플래그가 나타낸다. 현재 블록이 스킵 모드에서 인트라 BC 예측된 블록이 아니면, 현재 블록이 인트라 BC 예측된 블록인지 또는 그렇지 않은지의 여부를(스킵 모드에서가 아님), 비트스트림에서의 제2 플래그가 나타낸다. 현재 블록이 인트라 BC 예측된 블록이 아니면, 비트스트림에서의 하나 이상의 다른 신택스 엘리먼트가 현재 블록의 모드를 나타낸다(예를 들면, 시간 스킵 모드인지 또는 아닌지에 대한 플래그, 인트라 공간 예측 모드인지 또는 아닌지에 대한 플래그, 인터 픽쳐 모드인지 또는 아닌지에 대한 플래그, 인트라 공간 예측 모드 또는 인터 픽쳐 모드에 대한 플래그). 현재 블록이 스킵 모드에서 인트라 BC 예측된 블록이면, 제2 플래그 및 다른 신택스 엘리먼트가 현재 블록에 대한 비트스트림에서 존재하지 않는다.
현재 블록이 스킵 모드에서 인트라 BC 예측된 블록인지의 여부를 나타내는 플래그는 블록 레벨에서 시그널링된다. 현재 블록은 사이즈 2N×2N의 CU일 수 있다. 예를 들면, 16×16 CU의 경우, N은 8이다. 대안적으로, 현재 블록은 PU 또는 다른 타입의 블록일 수 있다. 현재 블록의 모드를 나타내는 다른 플래그 및 신택스 엘리먼트는 또한, 비트스트림에서 블록 레벨에서 시그널링될 수도 있다.
몇몇 예시적인 구현예에서, 스킵 모드에서 인트라 BC 예측된 블록은 잔차 데이터가 없지만 그러나 비트스트림에서 BV 차분을 포함한다. 대안적으로, 스킵 모드에서 인트라 BC 예측된 블록은 예측된 BV 값을 사용할 수 있다(그러므로, 비트스트림에서 BV 차분이 없을 수 있다).
2. 인트라 BC 예측 스킵 모드를 이용한 예시적인 인코딩.
도 13은, 스킵 모드에서 인트라 BC 예측된 블록을 인코딩하기 위한 예시적인 기술(1300)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1300)을 수행할 수 있다.
인코더는, 예를 들면, BV 추정을 사용하여, 픽쳐에서의 현재 블록(예를 들면, CU, PU)에 대한 BV 값을 결정한다(1310). 현재 블록에 대한 BV 값은 동일 픽쳐에서의 참조 영역까지의 변위를 나타낸다. 그 다음, 인코더는, 현재 블록에 대한 BV 예측자 및 현재 블록에 대한 BV 값을 사용하여 현재 블록에 대한 BV 차분을 결정한다(1320). BV 예측자는, 규칙에 의해 선택될 수 있거나, 또는 인코더는 다수의 BV 예측자 후보 중에서부터 BV 예측자를 선택할 수 있다.
인코더는 BV 값을 가지고 인트라 BC 예측을 사용하여 현재 블록을 인코딩한다(1330). 예시적인 구현예에서, 인트라 BC 예측은 참조 영역을 사용하여 현재 블록에 대한 인트라 BC 예측 영역을 결정하는 것을 포함할 수 있는데, 이 경우 인트라 BC 예측 영역은 참조 영역에 대하여 플립핑된다. 인트라 BC 예측 영역은 참조 영역에 대하여 수평으로 및/또는 수직으로 플립핑될 수 있다. 블록 플립핑 동작을 수행하기 위한 그리고 블록 플립핑의 사용을 시그널링하기 위한 옵션은 상기에서 설명되어 있다. 대안적으로, 인코더는 인트라 BC 예측에서 블록 플립핑을 사용하지 않는다.
인코더는 인코딩된 데이터를 비트스트림에서 출력한다(1340). 인코딩된 데이터는, 현재 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩된다는 것을 나타내는 플래그를 포함한다. 현재 블록이 스킵 모드에서 인트라 BC 예측된 블록이기 때문에, 비트스트림은 현재 블록에 대한 BV 차분을 포함하지만 그러나 현재 블록에 대한 잔차 데이터가 없다. 인코더가 다수의 BV 예측자 후보 중에서부터 BV 예측자를 선택한 경우, 비트스트림은, 선택된 BV 예측자 후보를 현재 블록에 대한 BV 예측자로서 사용할 것을 나타내는 인덱스 값을 포함한다.
도 14는, 스킵 모드 및/또는 다른 모드에서 인트라 BC 예측을 사용하여 픽쳐에서의 블록을 인코딩하기 위한 예시적인 기술(1400)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1400)을 수행할 수 있다.
시작하면, 인코더는 다음 블록을 얻고(1410) 스킵 모드에서 인트라 BC 예측을 사용하여 그 블록을 인코딩할지의 여부를 결정한다(1420). 예를 들면, 인코더는, 인트라 BC 예측이 블록에 대해 충분한 코딩 효율성을 제공하는지의 여부를 평가하고 잔차 데이터가 임의의 유의한 값을 포함하는지의 여부를 평가한다. 대안적으로, 인코더는 다른 기준을 고려한다.
인코더는, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지 또는 그렇지 않은지의 여부를 나타내는 플래그를 비트스트림에서 시그널링할 수 있다. 스킵 모드에서 인트라 BC 예측된 블록의 경우, 인코더는, 도 13의 스테이지 (1310) 내지 (1330)에서 도시되는 동작을 사용하여 또는 다른 방식을 사용하여 스킵 모드에서 인트라 BC 예측을 이용하여 블록을 인코딩한다(1430). 스킵 모드에서 인트라 BC 예측된 블록으로서, 블록은 비트스트림에서 BV 차분을 가지지만 비트스트림에서 잔차 데이터는 없다.
그렇지 않다면(블록이 스킵 모드에서 인트라 BC 예측된 블록이 아니면), 인코더는 다른 모드에서 블록을 인코딩한다(1440). 다른 모드는 인트라 BC 예측 비스킵 모드, 인트라 공간 예측 모드, 인터 픽쳐 모드 또는 다른 모드일 수 있다. 이 경우, 하나 이상의 다른 신택스 엘리먼트는 블록의 모드를 나타낼 수 있다. 예를 들면, 블록이 (스테이지 (1420)에서의 결정에 따라) 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지 또는 그렇지 않은지의 여부를 제1 플래그가 나타낸 이후, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되지 않은 경우, 볼록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지 또는 그렇지 않은지의 여부를 제2 플래그가 나타낸다. 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되지 않으면, 하나 이상의 다른 신택스 엘리먼트가 블록에 대한 코딩 모드를 나타낸다. 예를 들면, 블록의 예측 모드가 인트라 공간 예측인지 또는 인터 픽쳐 예측인지의 여부를 플래그가 나타낸다.
몇몇 예시적인 구현예에서, 블록이 스킵 모드에서 인트라 BC 예측되어 있는지 또는 그렇지 않은지의 여부를 나타내는 플래그를 사용하는 것에 대해서는, 추가적인 이점이 존재한다. 몇몇 경우에서, 인트라 BC 예측된 블록에 대한 구획화 모드(예를 들면, 2N×2N, 2N×N, N×2N 또는 N×N)를 나타내는 신택스 엘리먼트의 시그널링이 방지될 수 있다. 예를 들면, 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 인코더는 그 블록에 대한 구획화 모드를 나타내는 신택스 엘리먼트를 비트스트림에서 시그널링한다. 한편, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 인코더는, 블록에 대한 구획화 모드를 나타내는 신택스 엘리먼트의 비트스트림에서의 시그널링을 스킵하고, 블록에 대한 구획화 모드는, 대신, 정의된 값(예를 들면, 2N×2N)을 갖는 것으로 가정된다. 따라서, 이들 경우에, 블록을 스킵 모드에서 인트라 BC 예측된 것으로 마킹하는 더 이전의 플래그는 또한, 블록에 대한 구획화 모드가 정의된 값을 갖는다는 것을 시그널링한다.
또한, 많은 경우에서, 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그의 시그널링은 방지될 수 있다. 물론, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 인코더는 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그의 비트스트림에서의 시그널링을 스킵한다. (블록을 스킵 모드에서 인트라 BC 예측된 것으로 마킹하는 더 이전의 플래그는 이미 이러한 정보를 시그널링한다.) 블록에 대한 잔차 데이터는 비트스트림에서 없는 것으로 가정된다.
잔차 데이터의 존재 또는 부재를 나타내는 플래그의 시그널링은 다른 경우에서 또한 방지될 수 있다. 구체적으로는, 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고 블록에 대한 구획화 모드가 정의된 값(예를 들면, 2N×2N)을 가지면, 인코더는, 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그를 비트스트림에서 시그널링하는 것을 스킵한다. 이 경우, 블록에 대한 잔차 데이터는 비트스트림에 존재하는 것으로 가정된다. (블록의 구획화 모드가 정의된 값이고 블록이 잔차 데이터가 없으면, 블록은 스킵 모드에서 인트라 BC 예측된 블록일 것인데, 이것은 더 이전의 플래그에 의해 나타내어졌을 것이다.) 마지막으로, 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고, 블록에 대한 구획화 모드가 정의된 값을 가지지 않으면, 인코더는, 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그를 비트스트림에서 시그널링한다.
인코더는, 픽쳐에서의 다음 블록을 가지고 계속 진행할지의 여부를 결정한다(1450). 만약 그렇다면, 인코더는 다음 블록을 얻고(1410) 인코딩을 계속한다.
인코더는 기술(1400)을 픽쳐 단위 기반으로, 타일 단위 기반으로, 슬라이스 단위 기반으로 또는 어떤 다른 기반으로 반복할 수 있다.
3. 인트라 BC 예측 스킵 모드를 갖는 예시적인 인코딩.
도 15는, 스킵 모드에서 인트라 BC 예측된 블록을 디코딩하기 위한 예시적인 기술(1500)을 도시한다. 도 4 또는 도 6을 참조로 설명된 바와 같은 이미지 디코더 또는 비디오 디코더가 기술(1500)을 수행할 수 있다.
디코더는 인코딩된 데이터를 비트스트림에서 수신한다(1510). 인코딩된 데이터는, 픽쳐에서의 현재 블록(예를 들면, CU, PU)이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지를 나타내는 플래그를 포함한다. 현재 블록이 스킵 모드에서 인트라 BC 예측된 블록이기 때문에, 비트스트림은 현재 블록에 대한 BV 차분을 포함하지만 그러나 현재 블록에 대한 잔차 데이터가 없다.
디코더는, 현재 블록에 대한 BV 예측자 및 현재 블록에 대한 BV 차분을 사용하여 현재 블록에 대한 BV 값을 결정한다(1520). 현재 블록에 대한 BV 값은 동일 픽쳐에서의 참조 영역까지의 변위를 나타낸다. BV 예측자는 규칙에 의해 선택될 수 있다. 또는, 디코더는, 현재 블록에 대한 BV 예측자로서 BV 예측자 후보 중 어떤 것을 사용할지를 선택할 비트스트림에서의 인덱스 값을 사용하여, 다수의 BV 예측자 후보 중에서부터 BV 예측자를 선택할 수 있다.
디코더는 BV 값을 가지고 인트라 BC 예측을 사용하여 현재 블록을 디코딩한다(1530). 예시적인 구현예에서, 인트라 BC 예측은 참조 영역을 사용하여 현재 블록에 대한 인트라 BC 예측 영역을 결정하는 것을 포함할 수 있는데, 이 경우 인트라 BC 예측 영역은 참조 영역에 대하여 플립핑된다. 인트라 BC 예측 영역은 참조 영역에 대하여 수평으로 및/또는 수직으로 플립핑될 수 있다. 블록 플립핑 동작을 수행하기 위한 그리고 블록 플립핑의 사용을 시그널링하기 위한 옵션은 상기에서 설명되어 있다. 대안적으로, 디코더는 인트라 BC 예측에서 블록 플립핑을 사용하지 않는다.
도 16은, 스킵 모드 및/또는 다른 모드에서 인트라 BC 예측을 사용하여 픽쳐에서의 블록을 디코딩하기 위한 예시적인 기술(1600)을 도시한다. 도 4 또는 도 6을 참조로 설명된 바와 같은 이미지 디코더 또는 비디오 디코더가 기술(1600)을 수행할 수 있다.
시작하면, 디코더는 다음 블록에 대한 인코딩된 데이터를 얻고(1610) 스킵 모드에서 인트라 BC 예측을 사용하여 블록을 디코딩할지의 여부를 결정한다(1620). 예를 들면, 디코더는, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되었는지 또는 그렇지 않은지의 여부를 나타내는 플래그를 비트스트림에서 수신하여 파싱한다.
스킵 모드에서 인트라 BC 예측된 블록의 경우, 디코더는, 도 15의 스테이지 (1520) 내지 (1530)에서 도시되는 동작을 사용하여 또는 다른 방식을 사용하여 스킵 모드에서 인트라 BC 예측을 이용하여 블록을 디코딩한다(1630). 스킵 모드에서 인트라 BC 예측된 블록으로서, 블록은 비트스트림에서 BV 차분을 가지지만 비트스트림에서 잔차 데이터는 없다.
그렇지 않다면(블록이 스킵 모드에서 인트라 BC 예측된 블록이 아니면), 디코더는 다른 모드에서 블록을 디코딩한다(1640). 다른 모드는 인트라 BC 예측 비스킵 모드, 인트라 공간 예측 모드, 인터 픽쳐 모드 또는 다른 모드일 수 있다. 이 경우, 하나 이상의 다른 신택스 엘리먼트는 블록의 모드를 나타낼 수 있다. 예를 들면, 블록이 (스테이지 (1620)에서의 결정에 따라) 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지 또는 그렇지 않은지의 여부를 제1 플래그가 나타낸 이후, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되지 않은 경우, 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지 또는 그렇지 않은지의 여부를 제2 플래그가 나타낸다. 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되지 않으면, 하나 이상의 다른 신택스 엘리먼트가 블록에 대한 코딩 모드를 나타낸다. 예를 들면, 블록의 예측 모드가 인트라 공간 예측인지 또는 인터 픽쳐 예측인지의 여부를 플래그가 나타낸다.
이전 섹션에서 언급된 바와 같이, 몇몇 예시적인 구현예에서, 블록이 스킵 모드에서 인트라 BC 예측되는지의 여부를 나타내는 플래그를 사용하는 것에 대해서는, 추가적인 이점이 존재한다 예를 들면, 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 비트스트림은 그 블록에 대한 구획화 모드를 나타내는 신택스 엘리먼트를 포함한다. 한편, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 비트스트림은 그 블록에 대한 구획화 모드를 나타내는 신택스 엘리먼트가 없다. 디코더는, 블록에 대한 구획화 모드가 정의된 값(예를 들면, 2N×2N)이다는 것을 추론한다.
또한, 많은 경우에서, 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그의 시그널링은 방지될 수 있다. 물론, 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 비트스트림은, 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그가 없다. 대신, 블록을 스킵 모드에서 인트라 BC 예측된 것으로 마킹하는 더 이전의 플래그로부터, 디코더는, 블록에 대한 잔차 데이터가 비트스트림에서 존재하지 않는다는 것을 추론한다.
잔차 데이터의 존재 또는 부재를 나타내는 플래그의 시그널링은 다른 경우에서 또한 방지될 수 있다. 구체적으로는, 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고, 블록에 대한 구획화 모드가 정의된 값(예를 들면, 2N×2N)을 가지면, 비트스트림은, 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그가 없다. 이 경우, 디코더는, 블록에 대한 잔차 데이터가 비트스트림에 존재한다는 것을 추론한다. 마지막으로, 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고, 블록에 대한 구획화 모드가 정의된 값을 가지지 않으면, 비트스트림은, 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그를 포함한다.
디코더는, 픽쳐에서의 다음 블록을 가지고 계속 진행할지의 여부를 결정한다(1650). 만약 그렇다면, 디코더는 다음 블록에 대한 인코딩된 데이터를 얻고(1610) 디코딩을 계속한다.
디코더는 기술(1600)을 픽쳐 단위 기반으로, 타일 단위 기반으로, 슬라이스 단위 기반으로 또는 어떤 다른 기반으로 반복할 수 있다.
4. 코딩 단위에 대한 예시적인 신택스.
도 17a 및 도 17b는, 이전 방식에 따른 코딩 단위("CU")에 대한 신택스 구조(1700)를 도시한다. 신택스 구조(1700)에서 도시되는 신택스 엘리먼트는 JCTVC-P1005에서 정의된다. 선택된 신택스 엘리먼트는 여기에서 요약된다.
신택스 엘리먼트 intra_bc_flag는, (intra_block_copy_enabled_flag로 나타내어지는 바와 같이) 인트라 BC 예측이 인에이블될 때 CU에 대해 시그널링될 수 있다. 신택스 엘리먼트 intra_bc_flag는, CU가 인트라 BC 예측 모드에서 인코딩되는지 또는 그렇지 않은지의 여부를 명시한다. 그 값이 1이면, CU는 인트라 BC 예측 모드에서 인코딩된다. 그 값이 0이면, CU는 인트라 BC 예측 모드에서 인코딩되지 않는다. 이 경우(intra_bc_flag가 0인 경우), 신택스 엘리먼트 pred_mode_flag가 존재하고 CU가 인터 예측 모드에서 인코딩되는지 또는 인트라 공간 예측 모드에서 인코딩되는지의 여부를 나타낸다.
블록이 인트라 BC 예측되면(그리고 몇몇 다른 경우에), 비트스트림은 CU에 대한 part_mode 신택스 엘리먼트를 포함한다. part_mode 신택스 엘리먼트는, CU에 대한 구획화 모드(예를 들면, 2N×2N, 2N×N, N×2N, N×N)를 나타낸다.
그러면, CU 신택스 구조(1700)는 (CU가 인트라 BC 예측되면) 구획에 대한 BV 값을, (CU가 인트라 공간 예측되면) 인트라 예측 방향 정보를 또는 (CU가 인터 예측되면) 예측 단위 정보를 포함한다. 이때, CU 신택스 구조(1700)는 몇몇 경우에 rqt_root_cbf 신택스 엘리먼트를 포함한다. 특히, rqt_root_cbf 신택스 엘리먼트는, CU가 인트라 BC 예측되면 존재한다. rqt_root_cbf 신택스 엘리먼트는, CU에 대해 transform_tree() 신택스 구조가 존재하는지의 여부를 나타낸다. transform_tree() 신택스 구조는 CU에 대한 잔차 데이터에 대한 것이다. rqt_root_cbf가 1이면, transform_tree() 신택스 구조는 CU에 대해 존재한다. rqt_root_cbf가 0이면, transform_tree() 신택스 구조는 CU에 대해 존재하지 않는다. rqt_root_cbf가 존재하지 않는 경우, 그 값은 1인 것으로 추론된다. 따라서, 앞서 언급된 바와 같이, 이 방식에서, 두 개의 플래그(intra_bc_flag 및 rqt_root_cbf)는 스킵 모드에서 인트라 BC 예측된 블록을 나타내기 위해 사용된다.
도 18은, 스킵 모드에서 인트라 BC 예측된 블록으로서 인코딩될 수 있는 코딩 단위에 대한 신규의 신택스 구조(1800)를 나타내는 테이블이다. 도 17a 및 도 17b에서 도시되는 신택스 구조(1700)에 대한 변경이 도 18에서 하일라이트된다.
intra_bc_skip_flag는, (intra_block_copy_enabled_flag로 나타내어진 바와 같이) 인트라 BC 예측이 인에이블될 때 CU에 대해 시그널링될 수 있다. 신택스 엘리먼트 intra_bc_skip_flag는, CU가 스킵 모드에서 인트라 BC 예측된 블록인지 또는 그렇지 않은지의 여부를 나타낸다. CU가 스킵 모드에서 인트라 BC 예측되면(intra_bc_skip_flag이 1과 동일하면), 신택스 엘리먼트 rqt_root_cbf와 같이, 신택스 엘리먼트 intra_bc_flag 및 pred_mode_flag는 스킵된다. 또한, CU에 대한 구획화 모드는 이 경우 정의된 값 2N×2N을 갖는다.
한편, CU가 스킵 모드에서 인트라 BC 에측되지 않는다는 것을 신택스 엘리먼트 intra_bc_skip_flag가 나타내면(intra_bc_skip_flag가 0과 동일하면), 신택스 엘리먼트 intra_bc_flag가 존재한다. 신택스 엘리먼트 intra_bc_flag는, 도 17a 및 도 17b를 참조로 설명된 바와 같이, CU가 인트라 BC 예측 모드에서 인코딩되는지 또는 그렇지 않은지의 여부를 명시한다. 또한, intra_bc_flag가 0이면, 신택스 엘리먼트 pred_mode_flag는 존재하고, 도 17a 및 도 17b를 참조로 설명된 바와 같이, CU가 인터 예측 모드에서 인코딩되는지 또는 인트라 공간 예측 모드에서 인코딩되는지의 여부를 나타낸다.
블록이 비스킵 모드에서 인트라 BC 예측되면(즉, intra_bc_flag가 1이고 intra_bc_skip_flag가 0이면), 비트스트림은 CU에 대한 part_mode 신택스 엘리먼트를 포함한다. part_mode 신택스 엘리먼트는, CU에 대한 구획화 모드(즉, 2N×2N, 2N×N, N×2N, N×N)를 나타낸다. 한편, 블록이 스킵 모드에서 인트라 BC 예측되면, part_mode 신택스 엘리먼트는 CU에 대한 비트스트림에서 시그널링되지 않는다. 대신, 구획화 모드는 2N×2N의 정의된 값을 갖는 것으로 추론된다. 따라서, 이러한 블록의 경우, intra_bc_skip_flag는, CU에 대한 구획화 모드가 2N×2N의 정의된 값을 갖는다는 것을 시그널링하고, part_mode 신택스 엘리먼트의 별개의 시그널링이 방지된다.
도 18에서 생략된 섹션에서, 그러면, CU 신택스 구조(1800)는 (CU가 인트라 BC 예측되면) 구획에 대한 BV 값을, (CU가 인트라 공간 예측되면) 인트라 예측 방향 정보를 또는 (CU가 인터 예측되면) 예측 단위 정보를 포함한다.
마지막으로, CU 신택스 구조(1800)는 몇몇 경우에 rqt_root_cbf 신택스 엘리먼트를 포함한다. 특히, CU의 구획화 모드가 2N×2N의 정의된 값이 아닌 한, CU가 비스킵 모드에서 인트라 BC 예측되면 rqt_root_cbf 신택스 엘리먼트는 존재한다. 존재하는 경우, rqt_root_cbf 신택스 엘리먼트의 값은, 도 17a 및 도 17b를 참조로 설명된 바와 같이, CU에 대해 transform_tree() 신택스 구조가 존재하는지의 여부를 나타낸다. 한편, (1) CU가 스킵 모드에서 인트라 BC 예측되면 또는 (2) CU가 인트라 BC 예측되고 CU에 대한 구획화 모드가 2N×2N의 정의된 값이면, rqt_root_cbf 신택스 엘리먼트는 존재하지 않는다. CU가 스킵 모드에서 인트라 BC 예측되면, rqt_root_cbf의 값은 0(CU에 대해 잔차 데이터가 존재하지 않음)인 것으로 추론된다. 그렇지 않고, CU가 인트라 BC 예측되고 CU에 대한 구획화 모드가 2N×2N의 정의된 값이면, rqt_root_cbf의 값은 1(CU에 대해 잔차 데이터가 존재함)인 것으로 추론된다.
개시된 발명의 원칙이 적용될 수도 있는 많은 가능한 실시형태의 관점에서, 예시된 실시형태는 단지 본 발명의 바람직한 예에 불과하며 본 발명의 범위를 제한하는 것으로 간주되어선 안된다는 것이 인식되어야 한다. 대신, 본 발명의 범위는 하기의 특허청구범위에 의해 정의된다. 따라서, 이들 특허청구범위의 취지와 범위 내에 있는 모든 것을 본 발명으로서 주장한다.
Claims (10)
- 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법에 있어서,
비트스트림으로부터, 픽쳐(picture) 내의 현재 블록이 스킵 모드에서 인트라 블록 카피(block copy; "BC") 예측을 사용하여 인코딩된 것을 나타내는 플래그를 포함하는 인코딩된 데이터를 수신하는 단계 - 상기 비트스트림은 상기 현재 블록에 대한 블록 벡터(block vector; "BV) 차분(differential)을 포함하지만 상기 현재 블록에 대한 잔차 데이터(residual data)는 없음 - ;
상기 현재 블록에 대한 BV 차분 및 상기 현재 블록에 대한 BV 예측자(predictor)를 사용하여 상기 현재 블록에 대한 BV 값을 결정하는 단계 - 상기 현재 블록에 대한 BV 값은 상기 픽쳐 내의 참조 영역까지의 변위를 나타냄 - ; 및
상기 BV 값을 이용하고 인트라 BC 예측을 사용하여 상기 현재 블록을 디코딩하는 단계
를 포함하는 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법. - 제1항에 있어서,
상기 비트스트림은 또한, 다수의 BV 예측자 후보들의 세트로부터의, 상기 현재 블록에 대한 상기 BV 예측자로서 사용할 BV 예측자 후보의 선택을 나타내는 인덱스 값을 포함하는 것인, 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법. - 제1항에 있어서,
상기 픽쳐 내의 후속 블록에 대해, 제1 플래그가 상기 후속 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되는지 여부를 나타내고, 상기 후속 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되지 않으면, 제2 플래그가 상기 후속 블록이 비스킵 모드(non-skip mode)에서 인트라 BC 예측을 사용하여 인코딩되는지 여부를 나타내는 것인, 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법. - 제1항에 있어서,
상기 픽쳐 내의 후속 블록에 대해, 상기 후속 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 상기 비트스트림은 상기 후속 블록에 대한 구획화 모드(partitioning mode)를 나타내는 신택스 엘리먼트를 포함하고,
상기 후속 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 상기 비트스트림은 상기 후속 블록에 대한 구획화 모드를 나타내는 상기 신택스 엘리먼트가 없고, 상기 후속 블록에 대한 구획화 모드는 정의된 값을 갖는 것인, 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법. - 제1항에 있어서, 상기 픽쳐 내의 후속 블록에 대해, 상기 후속 블록이 스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되면, 상기 비트스트림은 상기 후속 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그가 없고, 상기 후속 블록에 대한 잔차 데이터는 상기 비트스트림에 없는 것으로 가정되는 것인, 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법.
- 제5항에 있어서, 상기 픽쳐 내의 후속 블록에 대해,
상기 후속 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고, 상기 후속 블록에 대한 구획화 모드가 정의된 값을 가지면, 상기 비트스트림은 상기 후속 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그가 없고, 상기 후속 블록에 대한 잔차 데이터는 비트스트림에 존재하는 것으로 가정되고,
상기 후속 블록이 비스킵 모드에서 인트라 BC 예측을 사용하여 인코딩되고, 상기 후속 블록에 대한 구획화 모드가 정의된 값을 가지지 않으면, 상기 비트스트림은 상기 후속 블록에 대한 잔차 데이터의 존재 또는 부재를 나타내는 플래그를 포함하는 것인, 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법. - 제1항에 있어서, 상기 인트라 BC 예측은, 상기 참조 영역을 사용하여 상기 현재 블록에 대한 인트라 BC 예측 영역을 결정하는 것을 포함하고, 상기 인트라 BC 예측 영역은 상기 참조 영역에 대하여 플립핑되는 것인, 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법.
- 제7항에 있어서, 상기 인트라 BC 예측 영역은 상기 참조 영역에 대하여 수평으로 및 수직으로 중 적어도 하나로 플립핑되는 것인, 비디오 디코더 또는 이미지 디코더를 갖는 컴퓨팅 디바이스에서의 방법.
- 제1항 내지 제8항 중 어느 한 항의 방법을 수행하도록 구성된 컴퓨팅 디바이스.
- 컴퓨팅 디바이스가 제1항 내지 제8항 중 어느 한 항의 방법을 수행하게 하는 프로그램을 저장한 비일시적 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020167027339A KR20160129075A (ko) | 2014-03-04 | 2014-03-04 | 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 |
PCT/CN2014/072824 WO2015131323A1 (en) | 2014-03-04 | 2014-03-04 | Block flipping and skip mode in intra block copy prediction |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167027339A Division KR20160129075A (ko) | 2014-03-04 | 2014-03-04 | 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210063485A KR20210063485A (ko) | 2021-06-01 |
KR102401946B1 true KR102401946B1 (ko) | 2022-05-24 |
Family
ID=54054337
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167027339A KR20160129075A (ko) | 2014-03-04 | 2014-03-04 | 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 |
KR1020217015749A KR102401946B1 (ko) | 2014-03-04 | 2014-03-04 | 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167027339A KR20160129075A (ko) | 2014-03-04 | 2014-03-04 | 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 |
Country Status (11)
Country | Link |
---|---|
US (1) | US10368091B2 (ko) |
EP (2) | EP3114842A4 (ko) |
JP (1) | JP2017512026A (ko) |
KR (2) | KR20160129075A (ko) |
CN (1) | CN105247871B (ko) |
AU (1) | AU2014385769B2 (ko) |
BR (1) | BR112016018814A8 (ko) |
CA (1) | CA2939431C (ko) |
MX (1) | MX361228B (ko) |
RU (1) | RU2657210C2 (ko) |
WO (1) | WO2015131323A1 (ko) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102257269B1 (ko) | 2013-10-14 | 2021-05-26 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐 |
KR102275639B1 (ko) | 2013-10-14 | 2021-07-08 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징 |
CN105659602B (zh) | 2013-10-14 | 2019-10-08 | 微软技术许可有限责任公司 | 用于视频和图像编码的帧内块复制预测模式的编码器侧选项 |
US10469863B2 (en) | 2014-01-03 | 2019-11-05 | Microsoft Technology Licensing, Llc | Block vector prediction in video and image coding/decoding |
US10390034B2 (en) | 2014-01-03 | 2019-08-20 | Microsoft Technology Licensing, Llc | Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area |
US11284103B2 (en) | 2014-01-17 | 2022-03-22 | Microsoft Technology Licensing, Llc | Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning |
US10542274B2 (en) | 2014-02-21 | 2020-01-21 | Microsoft Technology Licensing, Llc | Dictionary encoding and decoding of screen content |
US9860559B2 (en) * | 2014-03-17 | 2018-01-02 | Mediatek Singapore Pte. Ltd. | Method of video coding using symmetric intra block copy |
KR102319384B1 (ko) * | 2014-03-31 | 2021-10-29 | 인텔렉추얼디스커버리 주식회사 | 템플릿 매칭 기반의 화면 내 픽쳐 부호화 및 복호화 방법 및 장치 |
US20170195677A1 (en) * | 2014-05-22 | 2017-07-06 | Mediatek Inc. | Method of Intra Block Copy with Flipping for Image and Video Coding |
US10136141B2 (en) * | 2014-06-11 | 2018-11-20 | Qualcomm Incorporated | Determining quantization parameter (QP) values and delta QP values for palette coded blocks in video coding |
WO2015192353A1 (en) | 2014-06-19 | 2015-12-23 | Microsoft Technology Licensing, Llc | Unified intra block copy and inter prediction modes |
EP3202150B1 (en) | 2014-09-30 | 2021-07-21 | Microsoft Technology Licensing, LLC | Rules for intra-picture prediction modes when wavefront parallel processing is enabled |
US10212445B2 (en) * | 2014-10-09 | 2019-02-19 | Qualcomm Incorporated | Intra block copy prediction restrictions for parallel processing |
CN106664405B (zh) | 2015-06-09 | 2020-06-09 | 微软技术许可有限责任公司 | 用调色板模式对经逸出编码的像素的稳健编码/解码 |
CN105681926B (zh) * | 2016-01-18 | 2019-03-22 | 四川长虹电器股份有限公司 | 一种带运动补偿功能液晶电视的画质提升系统及方法 |
EP3300362A1 (en) * | 2016-09-27 | 2018-03-28 | Thomson Licensing | Method for improved intra prediction when reference samples are missing |
EP3591973A4 (en) | 2017-03-22 | 2020-03-18 | Huawei Technologies Co., Ltd. | METHOD AND APPARATUS FOR DECODING VIDEO DATA AND METHOD AND APPARATUS FOR ENCODING VIDEO DATA |
WO2018171890A1 (en) * | 2017-03-23 | 2018-09-27 | Huawei Technologies Co., Ltd. | Devices and methods for video coding |
US10115012B1 (en) * | 2017-04-07 | 2018-10-30 | Box, Inc. | Capture object boundary jitter reduction |
FR3068557A1 (fr) * | 2017-07-05 | 2019-01-04 | Orange | Procede de codage et decodage d'images,dispositif de codage et decodage et programmes d'ordinateur correspondants |
US10674159B2 (en) | 2017-07-28 | 2020-06-02 | Microsoft Technology Licensing, Llc | Effective intra encoding for screen data |
US10986349B2 (en) | 2017-12-29 | 2021-04-20 | Microsoft Technology Licensing, Llc | Constraints on locations of reference blocks for intra block copy prediction |
CN111971959B (zh) * | 2018-02-09 | 2024-06-14 | 弗劳恩霍夫应用研究促进协会 | 基于分区的帧内编码概念 |
WO2020044196A1 (en) | 2018-08-26 | 2020-03-05 | Beijing Bytedance Network Technology Co., Ltd. | Combined history-based motion vector predictor and multi-motion model decoding |
CN110933411B (zh) | 2018-09-19 | 2023-12-12 | 北京字节跳动网络技术有限公司 | 用于帧内编码的邻近的相邻块的选择 |
CN118741097A (zh) | 2018-12-12 | 2024-10-01 | 数码士有限公司 | 使用当前图片参考的视频信号处理方法和设备 |
WO2020156541A1 (en) | 2019-02-02 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Data storage in buffers for intra block copy in video coding |
CN113366853B (zh) | 2019-02-02 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的缓冲区初始化 |
US20200252608A1 (en) * | 2019-02-05 | 2020-08-06 | Qualcomm Incorporated | Sub-partition intra prediction |
WO2020171681A1 (ko) * | 2019-02-19 | 2020-08-27 | 주식회사 윌러스표준기술연구소 | 인트라 예측 기반 비디오 신호 처리 방법 및 장치 |
CN113545068B (zh) | 2019-03-01 | 2023-09-15 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的基于顺序的更新 |
EP3915265A4 (en) | 2019-03-01 | 2022-06-22 | Beijing Bytedance Network Technology Co., Ltd. | DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING |
EP3915252A4 (en) | 2019-03-04 | 2022-03-23 | Beijing Bytedance Network Technology Co., Ltd. | IMPLEMENTATION OF ASPECTS IN AN INTRA BLOCK COPY IN VIDEO ENCODING |
WO2020244659A1 (en) | 2019-06-06 | 2020-12-10 | Beijing Bytedance Network Technology Co., Ltd. | Interactions between sub-block based intra block copy and different coding tools |
CN113966612A (zh) | 2019-06-16 | 2022-01-21 | 北京字节跳动网络技术有限公司 | 屏幕内容编解码根据与运动信息之间的相互作用 |
EP4300964A3 (en) * | 2019-06-21 | 2024-03-13 | VID SCALE, Inc. | Precision refinement for motion compensation with optical flow |
WO2020259426A1 (en) | 2019-06-22 | 2020-12-30 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidate list construction for intra block copy mode |
KR102677020B1 (ko) | 2019-07-06 | 2024-06-19 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 카피를 위한 가상 예측 버퍼 |
JP7359934B2 (ja) | 2019-07-10 | 2023-10-11 | 北京字節跳動網絡技術有限公司 | 映像符号化におけるイントラブロックコピーのためのサンプル識別 |
KR102695788B1 (ko) | 2019-07-11 | 2024-08-14 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 복사를 위한 비트스트림 적합 제약 |
CN118764614A (zh) | 2019-09-07 | 2024-10-11 | 北京达佳互联信息技术有限公司 | 视频编解码中的预测模式信令 |
EP4011076A4 (en) | 2019-09-09 | 2022-11-02 | Beijing Bytedance Network Technology Co., Ltd. | INTRA-BLOCK COPY ENCODING AND DECODING |
JP7448641B2 (ja) * | 2019-09-27 | 2024-03-12 | オッポ広東移動通信有限公司 | 現在のブロックの予測方法及び予測装置、デバイス、記憶媒体 |
EP4085621A4 (en) * | 2020-01-03 | 2024-02-14 | Intel Corporation | VIDEO CODING WITH MULTIPLE INTRABLOCK COPY MODES |
US11930208B2 (en) | 2020-01-10 | 2024-03-12 | Tencent America LLC | Method and apparatus for signaling skip mode flag |
CN115633172A (zh) * | 2020-12-06 | 2023-01-20 | 浙江大华技术股份有限公司 | 基于ibc模式编码方法、电子设备及存储介质 |
US11503336B2 (en) * | 2020-12-07 | 2022-11-15 | Tencent America LLC | Method and apparatus for video coding |
WO2022206973A1 (en) * | 2021-04-02 | 2022-10-06 | Beijing Bytedance Network Technology Co., Ltd. | Method, device, and medium for video processing |
US20230135166A1 (en) * | 2021-10-28 | 2023-05-04 | Tencent America LLC | Intrabc using wedgelet partitioning |
US20240022710A1 (en) * | 2022-07-12 | 2024-01-18 | Tencent America LLC | Prediction of intrabc flip type |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011114572A (ja) | 2009-11-26 | 2011-06-09 | Jvc Kenwood Holdings Inc | 画像符号化装置、画像復号化装置、画像符号化方法、及び画像復号化方法 |
Family Cites Families (144)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000102016A (ja) | 1998-09-22 | 2000-04-07 | Victor Co Of Japan Ltd | 動き補償予測回路 |
JP2004007379A (ja) | 2002-04-10 | 2004-01-08 | Toshiba Corp | 動画像符号化方法及び動画像復号化方法 |
US7120196B2 (en) | 2002-04-29 | 2006-10-10 | Ess Technology, Inc. | Intra-prediction using intra-macroblock motion compensation |
RU2314656C2 (ru) * | 2002-06-11 | 2008-01-10 | Нокиа Корпорейшн | Внутреннее кодирование, основанное на пространственном прогнозировании |
EP1582061A4 (en) | 2003-01-10 | 2010-09-22 | Thomson Licensing | DECODER AND METHOD FOR SMOOTHING ARTIFACTS RESULTING FROM ERROR MASKING |
US7609763B2 (en) | 2003-07-18 | 2009-10-27 | Microsoft Corporation | Advanced bi-directional predictive coding of video frames |
BRPI0413988A (pt) | 2003-08-26 | 2006-11-07 | Thomson Licensing | método e aparelho para decodificar blocos intra-inter codificador hìbridos |
US7724827B2 (en) | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
US7317839B2 (en) | 2003-09-07 | 2008-01-08 | Microsoft Corporation | Chroma motion vector derivation for interlaced forward-predicted fields |
KR101044934B1 (ko) | 2003-12-18 | 2011-06-28 | 삼성전자주식회사 | 움직임 벡터 추정방법 및 부호화 모드 결정방법 |
US8116374B2 (en) | 2004-05-07 | 2012-02-14 | Broadcom Corporation | Method and system for generating a transform size syntax element for video decoding |
KR100907847B1 (ko) | 2004-07-20 | 2009-07-14 | 퀄컴 인코포레이티드 | 순간적 비디오 압축으로 이동 벡터 예측을 위한 방법 및장치 |
US20070003622A1 (en) * | 2004-12-16 | 2007-01-04 | Sovereign Pharmaceuticals, Ltd. | Diphenhydramine containing dosage form |
JP2006140683A (ja) | 2004-11-11 | 2006-06-01 | Canon Inc | 画像符号化装置 |
JP2006140758A (ja) | 2004-11-12 | 2006-06-01 | Toshiba Corp | 動画像符号化方法、動画像符号化装置および動画像符号化プログラム |
US7720154B2 (en) | 2004-11-12 | 2010-05-18 | Industrial Technology Research Institute | System and method for fast variable-size motion estimation |
KR100679035B1 (ko) | 2005-01-04 | 2007-02-06 | 삼성전자주식회사 | 인트라 bl 모드를 고려한 디블록 필터링 방법, 및 상기방법을 이용하는 다 계층 비디오 인코더/디코더 |
KR100716999B1 (ko) | 2005-06-03 | 2007-05-10 | 삼성전자주식회사 | 영상의 대칭성을 이용한 인트라 예측 방법, 이를 이용한영상의 복호화, 부호화 방법 및 장치 |
KR101211665B1 (ko) * | 2005-08-12 | 2012-12-12 | 삼성전자주식회사 | 영상의 인트라 예측 부호화, 복호화 방법 및 장치 |
JP2007053561A (ja) | 2005-08-17 | 2007-03-01 | Matsushita Electric Ind Co Ltd | 画像符号化装置および画像符号化方法 |
US7986844B2 (en) | 2005-11-22 | 2011-07-26 | Intel Corporation | Optimized video compression using hashing function |
AU2006320722B2 (en) * | 2005-11-28 | 2012-04-19 | Gala Industries, Inc. | Apparatus and method for controlled pelletization processing |
US8792555B2 (en) | 2006-01-31 | 2014-07-29 | Qualcomm Incorporated | Methods and systems for resizing multimedia content |
CN101026761B (zh) | 2006-02-17 | 2010-05-12 | 中国科学院自动化研究所 | 一种具有最小误差的快速变尺寸块匹配的运动估计方法 |
CN101422047B (zh) | 2006-04-14 | 2011-01-12 | Nxp股份有限公司 | 图像边界处的运动估计方法及显示设备 |
WO2008004940A1 (en) | 2006-07-07 | 2008-01-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Video data management |
DE102007035204A1 (de) | 2006-07-28 | 2008-02-07 | Mediatek Inc. | Videoverarbeitungs- und - betriebsvorrichtung |
US8472527B2 (en) | 2006-09-13 | 2013-06-25 | Texas Instruments Incorporated | Hierarchical motion estimation using original frame for sub-sampled reference |
FR2906433B1 (fr) | 2006-09-22 | 2009-02-27 | Canon Kk | Procedes et dispositifs de codage et de decodage d'images, programme d'ordinateur les mettant en oeuvre et support d'informaton permettant de les mettre en oeuvre |
US8218641B2 (en) | 2006-10-31 | 2012-07-10 | Sony Computer Entertainment Inc. | Picture encoding using same-picture reference for pixel reconstruction |
JP2008154015A (ja) | 2006-12-19 | 2008-07-03 | Hitachi Ltd | 復号化方法および符号化方法 |
CN100527842C (zh) | 2007-01-26 | 2009-08-12 | 清华大学 | 基于背景的运动估计编码方法 |
US8160150B2 (en) | 2007-04-10 | 2012-04-17 | Texas Instruments Incorporated | Method and system for rate distortion optimization |
JP2009147807A (ja) | 2007-12-17 | 2009-07-02 | Fujifilm Corp | 画像処理装置 |
CN101232619B (zh) | 2008-01-25 | 2011-05-11 | 浙江大学 | 嵌入帧内编码块的视频编码方法 |
TWI375472B (en) | 2008-02-04 | 2012-10-21 | Ind Tech Res Inst | Intra prediction method for luma block of video |
JP5413923B2 (ja) | 2008-04-11 | 2014-02-12 | トムソン ライセンシング | 変位イントラ予測およびテンプレート・マッチングのためのデブロッキング・フィルタリング |
JP2010035137A (ja) | 2008-07-01 | 2010-02-12 | Sony Corp | 画像処理装置および方法、並びにプログラム |
US8213503B2 (en) | 2008-09-05 | 2012-07-03 | Microsoft Corporation | Skip modes for inter-layer residual video coding and decoding |
US8385404B2 (en) * | 2008-09-11 | 2013-02-26 | Google Inc. | System and method for video encoding using constructed reference frame |
KR101306834B1 (ko) * | 2008-09-22 | 2013-09-10 | 에스케이텔레콤 주식회사 | 인트라 예측 모드의 예측 가능성을 이용한 영상 부호화/복호화 장치 및 방법 |
CA2750735C (en) | 2009-02-02 | 2018-09-18 | Calgary Scientific Inc. | Image data transmission |
RU2420021C2 (ru) | 2009-03-24 | 2011-05-27 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Способ сжатия изображений и видеопоследовательностей |
EP2249571A1 (en) | 2009-05-04 | 2010-11-10 | Thomson Licensing SA | Method and device for encoding an image frame comprising macroblocks |
JPWO2011004598A1 (ja) | 2009-07-10 | 2012-12-20 | パナソニック株式会社 | 動画像符号化方法、装置、プログラム、および集積回路 |
CN101626512A (zh) * | 2009-08-11 | 2010-01-13 | 北京交通大学 | 一种基于相关性优化准则的多描述视频编码方法及装置 |
TWI566586B (zh) | 2009-10-20 | 2017-01-11 | 湯姆生特許公司 | 一序列形象的現時區塊之寫碼方法和重建方法 |
US20120213288A1 (en) | 2009-10-20 | 2012-08-23 | Yoshihiro Kitaura | Video encoding device, video decoding device, and data structure |
KR101623124B1 (ko) | 2009-12-03 | 2016-05-24 | 에스케이 텔레콤주식회사 | 비디오 인코딩 장치 및 그 인코딩 방법, 비디오 디코딩 장치 및 그 디코딩 방법, 및 거기에 이용되는 방향적 인트라 예측방법 |
WO2011095260A1 (en) | 2010-02-05 | 2011-08-11 | Telefonaktiebolaget L M Ericsson (Publ) | Managing predicted motion vector candidates |
US20110194613A1 (en) | 2010-02-11 | 2011-08-11 | Qualcomm Incorporated | Video coding with large macroblocks |
JP5375676B2 (ja) * | 2010-03-04 | 2013-12-25 | 富士通株式会社 | 画像処理装置、画像処理方法、および画像処理プログラム |
EP2553927B1 (fr) | 2010-03-31 | 2018-11-28 | Orange | Procedes et dispositifs de codage et de decodage d'une sequence d'images mettant en oeuvre une prediction par compensation de mouvement avant, et programme d'ordinateur correspondant |
US8644375B2 (en) | 2010-04-09 | 2014-02-04 | Sharp Laboratories Of America, Inc. | Methods and systems for intra prediction |
KR101752418B1 (ko) | 2010-04-09 | 2017-06-29 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
US8619857B2 (en) | 2010-04-09 | 2013-12-31 | Sharp Laboratories Of America, Inc. | Methods and systems for intra prediction |
KR20110123651A (ko) | 2010-05-07 | 2011-11-15 | 한국전자통신연구원 | 생략 부호화를 이용한 영상 부호화 및 복호화 장치 및 그 방법 |
CN103141091A (zh) | 2010-06-21 | 2013-06-05 | 汤姆逊许可公司 | 图像数据编码/解码的方法及其设备 |
KR101484281B1 (ko) | 2010-07-09 | 2015-01-21 | 삼성전자주식회사 | 블록 병합을 이용한 비디오 부호화 방법 및 그 장치, 블록 병합을 이용한 비디오 복호화 방법 및 그 장치 |
HUE053802T2 (hu) | 2010-07-14 | 2021-07-28 | Ntt Docomo Inc | Kis komplexitású intra predikció videó kódoláshoz |
KR102126374B1 (ko) | 2010-11-04 | 2020-06-24 | 지이 비디오 컴프레션, 엘엘씨 | 블록 병합 및 스킵 모드를 지원하는 화상 코딩 |
KR101756442B1 (ko) | 2010-11-29 | 2017-07-11 | 에스케이텔레콤 주식회사 | 인트라예측모드의 중복성을 최소화하기 위한 영상 부호화/복호화 방법 및 장치 |
US20120163457A1 (en) | 2010-12-28 | 2012-06-28 | Viktor Wahadaniah | Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus |
KR101739579B1 (ko) | 2011-01-04 | 2017-05-24 | 에스케이 텔레콤주식회사 | 코딩 유닛 단위 병렬 인트라예측을 이용한 부호화/복호화 방법 및 장치 |
KR20120080122A (ko) | 2011-01-06 | 2012-07-16 | 삼성전자주식회사 | 경쟁 기반의 다시점 비디오 부호화/복호화 장치 및 방법 |
US8913662B2 (en) | 2011-01-06 | 2014-12-16 | Qualcomm Incorporated | Indicating intra-prediction mode selection for video coding using CABAC |
US8755437B2 (en) | 2011-03-17 | 2014-06-17 | Mediatek Inc. | Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate |
CN103329534B (zh) | 2011-01-19 | 2017-03-08 | 瑞萨电子株式会社 | 图像编码装置及图像解码装置 |
US9532066B2 (en) | 2011-01-21 | 2016-12-27 | Qualcomm Incorporated | Motion vector prediction |
US9319716B2 (en) | 2011-01-27 | 2016-04-19 | Qualcomm Incorporated | Performing motion vector prediction for video coding |
US9288501B2 (en) | 2011-03-08 | 2016-03-15 | Qualcomm Incorporated | Motion vector predictors (MVPs) for bi-predictive inter mode in video coding |
KR101532665B1 (ko) | 2011-03-14 | 2015-07-09 | 미디어텍 인크. | 시간적 움직임 백터 예측을 도출하기 위한 방법 및 장치 |
ES2900107T3 (es) | 2011-03-21 | 2022-03-15 | Lg Electronics Inc | Método para seleccionar un predictor de vector de movimiento |
US8693547B2 (en) | 2011-04-06 | 2014-04-08 | Google Inc. | Apparatus and method for coding using motion vector segmentation |
MY185091A (en) * | 2011-04-21 | 2021-04-30 | Samsung Electronics Co Ltd | Method of quantizing linear predictive coding coefficients, sound encoding method, method of de-quantizing linear predictive coding coefficients, sound decoding method, and recording medium |
US20120281760A1 (en) | 2011-05-04 | 2012-11-08 | Hyung Joon Kim | Iterative Grid-Pattern Motion Search |
CN102137263B (zh) | 2011-05-09 | 2013-07-03 | 松日数码发展(深圳)有限公司 | 基于cnm关键帧分类的分布式视频编码及解码方法 |
US20120294353A1 (en) | 2011-05-16 | 2012-11-22 | Mediatek Inc. | Apparatus and Method of Sample Adaptive Offset for Luma and Chroma Components |
CN102238391B (zh) | 2011-05-25 | 2016-12-07 | 深圳市云宙多媒体技术有限公司 | 一种预测编码方法、装置 |
JP5727873B2 (ja) | 2011-06-10 | 2015-06-03 | 日本放送協会 | 動きベクトル検出装置、符号化装置、及びこれらのプログラム |
CN103688533B (zh) | 2011-06-20 | 2015-12-23 | 联发科技(新加坡)私人有限公司 | 可减少行存储器的色度帧内预测方法及装置 |
WO2012174990A1 (en) | 2011-06-24 | 2012-12-27 | Mediatek Inc. | Method and apparatus for removing redundancy in motion vector predictors |
CA2842646C (en) | 2011-06-27 | 2018-09-04 | Panasonic Corporation | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
US9060173B2 (en) | 2011-06-30 | 2015-06-16 | Sharp Kabushiki Kaisha | Context initialization based on decoder picture buffer |
CN103650496B (zh) | 2011-07-12 | 2018-09-21 | 华为技术有限公司 | 用于在hevc中编码的基于像素的帧内预测 |
WO2013023518A1 (en) | 2011-08-17 | 2013-02-21 | Mediatek Singapore Pte. Ltd. | Method and apparatus for intra prediction using non-square blocks |
KR101492105B1 (ko) | 2011-08-29 | 2015-02-11 | 주식회사 아이벡스피티홀딩스 | Amvp 모드에서 영상 부호화 방법 |
US9578336B2 (en) | 2011-08-31 | 2017-02-21 | Texas Instruments Incorporated | Hybrid video and graphics system with automatic content detection process, and other circuits, processes, and systems |
WO2013057359A1 (en) | 2011-10-21 | 2013-04-25 | Nokia Corporation | Method for video coding and an apparatus |
GB2495990A (en) | 2011-10-28 | 2013-05-01 | Canon Kk | Motion compensated image coding with omission of coding mode cost calculation for a motion predictor in a set. |
US10390046B2 (en) | 2011-11-07 | 2019-08-20 | Qualcomm Incorporated | Coding significant coefficient information in transform skip mode |
BR112014011149A2 (pt) | 2011-11-08 | 2017-05-16 | Motorola Mobility Llc | dispositivos e métodos para codificação e / ou de sinalização de deslocamento adaptativo de amostra |
EP2777284B1 (en) | 2011-11-11 | 2018-09-05 | GE Video Compression, LLC | Effective wedgelet partition coding using spatial prediction |
US20130121417A1 (en) | 2011-11-16 | 2013-05-16 | Qualcomm Incorporated | Constrained reference picture sets in wave front parallel processing of video data |
EP2781091B1 (en) | 2011-11-18 | 2020-04-08 | GE Video Compression, LLC | Multi-view coding with efficient residual handling |
US9883203B2 (en) | 2011-11-18 | 2018-01-30 | Qualcomm Incorporated | Adaptive overlapped block motion compensation |
CN103621097B (zh) | 2011-11-25 | 2018-04-24 | 太阳专利托管公司 | 图像处理方法及图像处理装置 |
RU2493670C2 (ru) | 2011-12-15 | 2013-09-20 | Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" | Способ блочной межкадровой компенсации движения для видеокодеков |
EP2795901A1 (en) | 2011-12-20 | 2014-10-29 | Motorola Mobility LLC | Method and apparatus for efficient transform unit encoding |
US9762904B2 (en) | 2011-12-22 | 2017-09-12 | Qualcomm Incorporated | Performing motion vector prediction for video coding |
US20130163664A1 (en) | 2011-12-22 | 2013-06-27 | Qualcomm Incorporated | Unified partition mode table for intra-mode coding |
WO2013102293A1 (en) | 2012-01-04 | 2013-07-11 | Mediatek Singapore Pte. Ltd. | Improvements of luma-based chroma intra prediction |
US9451252B2 (en) | 2012-01-14 | 2016-09-20 | Qualcomm Incorporated | Coding parameter sets and NAL unit headers for video coding |
JP2013150173A (ja) | 2012-01-19 | 2013-08-01 | Sony Corp | 画像処理装置および方法 |
US20130188719A1 (en) | 2012-01-20 | 2013-07-25 | Qualcomm Incorporated | Motion prediction in svc using motion vector for intra-coded block |
JP2013150215A (ja) | 2012-01-20 | 2013-08-01 | Fujitsu Ltd | 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム |
CA3081964A1 (en) | 2012-01-20 | 2013-07-25 | Ge Video Compression, Llc | Coding concept allowing parallel processing, transport demultiplexer and video bitstream |
US9210438B2 (en) | 2012-01-20 | 2015-12-08 | Sony Corporation | Logical intra mode naming in HEVC video coding |
US10244246B2 (en) | 2012-02-02 | 2019-03-26 | Texas Instruments Incorporated | Sub-pictures for pixel rate balancing on multi-core platforms |
WO2013128010A2 (en) | 2012-03-02 | 2013-09-06 | Canon Kabushiki Kaisha | Method and devices for encoding a sequence of images into a scalable video bit-stream, and decoding a corresponding scalable video bit-stream |
US8737824B1 (en) | 2012-03-09 | 2014-05-27 | Google Inc. | Adaptively encoding a media stream with compound prediction |
US9503720B2 (en) | 2012-03-16 | 2016-11-22 | Qualcomm Incorporated | Motion vector coding and bi-prediction in HEVC and its extensions |
US20130258052A1 (en) | 2012-03-28 | 2013-10-03 | Qualcomm Incorporated | Inter-view residual prediction in 3d video coding |
US9838684B2 (en) | 2012-04-11 | 2017-12-05 | Qualcomm Incorporated | Wavefront parallel processing for video coding |
US20130272409A1 (en) | 2012-04-12 | 2013-10-17 | Qualcomm Incorporated | Bandwidth reduction in video coding through applying the same reference index |
US20150085932A1 (en) | 2012-04-24 | 2015-03-26 | Mediatek Inc. | Method and apparatus of motion vector derivation for 3d video coding |
GB2501535A (en) | 2012-04-26 | 2013-10-30 | Sony Corp | Chrominance Processing in High Efficiency Video Codecs |
US9762903B2 (en) | 2012-06-01 | 2017-09-12 | Qualcomm Incorporated | External pictures in video coding |
CN102752595B (zh) | 2012-06-29 | 2014-07-09 | 香港应用科技研究院有限公司 | 用于深度图编码和解码的混合型跳过模式 |
US9621905B2 (en) | 2012-06-29 | 2017-04-11 | Qualcomm Incorporated | Tiles and wavefront parallel processing |
US9264713B2 (en) * | 2012-07-11 | 2016-02-16 | Qualcomm Incorporated | Rotation of prediction residual blocks in video coding with transform skipping |
US9549182B2 (en) | 2012-07-11 | 2017-01-17 | Qualcomm Incorporated | Repositioning of prediction residual blocks in video coding |
US9467692B2 (en) | 2012-08-31 | 2016-10-11 | Qualcomm Incorporated | Intra prediction improvements for scalable video coding |
US20140071235A1 (en) | 2012-09-13 | 2014-03-13 | Qualcomm Incorporated | Inter-view motion prediction for 3d video |
US10904551B2 (en) | 2013-04-05 | 2021-01-26 | Texas Instruments Incorporated | Video coding using intra block copy |
CN103237226B (zh) * | 2013-04-07 | 2016-08-03 | 宁波大学 | 一种立体视频宏块丢失错误隐藏方法 |
US11323747B2 (en) | 2013-06-05 | 2022-05-03 | Qualcomm Incorporated | Residual differential pulse code modulation (DPCM) extensions and harmonization with transform skip, rotation, and scans |
US9300967B2 (en) | 2013-06-19 | 2016-03-29 | Apple Inc. | Sample adaptive offset control |
US10015515B2 (en) | 2013-06-21 | 2018-07-03 | Qualcomm Incorporated | Intra prediction from a predictive block |
US10529013B2 (en) * | 2013-07-01 | 2020-01-07 | Intuit Inc. | Identifying business type using public information |
US20150016516A1 (en) | 2013-07-15 | 2015-01-15 | Samsung Electronics Co., Ltd. | Method for intra prediction improvements for oblique modes in video coding |
WO2015010226A1 (en) | 2013-07-24 | 2015-01-29 | Qualcomm Incorporated | Simplified advanced motion prediction for 3d-hevc |
US9503715B2 (en) * | 2013-08-30 | 2016-11-22 | Qualcomm Incorporated | Constrained intra prediction in video coding |
US20150071357A1 (en) | 2013-09-12 | 2015-03-12 | Qualcomm Incorporated | Partial intra block copying for video coding |
AU2013228045A1 (en) | 2013-09-13 | 2015-04-02 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
US20150110181A1 (en) | 2013-10-18 | 2015-04-23 | Samsung Electronics Co., Ltd. | Methods for palette prediction and intra block copy padding |
US10321141B2 (en) | 2013-12-18 | 2019-06-11 | Hfi Innovation Inc. | Method and apparatus for palette initialization and management |
TWI536811B (zh) | 2013-12-27 | 2016-06-01 | 財團法人工業技術研究院 | 影像處理方法與系統、解碼方法、編碼器與解碼器 |
US9883197B2 (en) | 2014-01-09 | 2018-01-30 | Qualcomm Incorporated | Intra prediction of chroma blocks using the same vector |
US20150271515A1 (en) * | 2014-01-10 | 2015-09-24 | Qualcomm Incorporated | Block vector coding for intra block copy in video coding |
GB2522844A (en) | 2014-01-29 | 2015-08-12 | Sony Corp | Data encoding and decoding |
KR102185245B1 (ko) | 2014-03-04 | 2020-12-01 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 해시 기반 블록 매칭을 위한 해시 테이블 구성 및 이용가능성 검사 |
US11323733B2 (en) | 2014-05-23 | 2022-05-03 | Qualcomm Incorporated | Predictor palette initialization in palette-based video coding |
US9877043B2 (en) | 2014-06-19 | 2018-01-23 | Vid Scale Inc. | Methods and systems for intra block copy coding with block vector derivation |
-
2014
- 2014-03-04 US US15/029,469 patent/US10368091B2/en active Active
- 2014-03-04 EP EP14884614.0A patent/EP3114842A4/en not_active Withdrawn
- 2014-03-04 WO PCT/CN2014/072824 patent/WO2015131323A1/en active Application Filing
- 2014-03-04 CN CN201480029735.5A patent/CN105247871B/zh active Active
- 2014-03-04 AU AU2014385769A patent/AU2014385769B2/en active Active
- 2014-03-04 MX MX2016011296A patent/MX361228B/es active IP Right Grant
- 2014-03-04 RU RU2016135632A patent/RU2657210C2/ru active
- 2014-03-04 KR KR1020167027339A patent/KR20160129075A/ko active Application Filing
- 2014-03-04 EP EP17175228.0A patent/EP3253059A1/en not_active Ceased
- 2014-03-04 BR BR112016018814A patent/BR112016018814A8/pt not_active IP Right Cessation
- 2014-03-04 KR KR1020217015749A patent/KR102401946B1/ko active IP Right Grant
- 2014-03-04 CA CA2939431A patent/CA2939431C/en active Active
- 2014-03-04 JP JP2016555545A patent/JP2017512026A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011114572A (ja) | 2009-11-26 | 2011-06-09 | Jvc Kenwood Holdings Inc | 画像符号化装置、画像復号化装置、画像符号化方法、及び画像復号化方法 |
Non-Patent Citations (3)
Title |
---|
G. Laroche, et al. AHG5: Motion prediction for Intra Block Copy. JCT-VC of ITU-T and ISO/IEC. JCTVC-O0122 Ver.2, Oct. 23, 2013, pp.1-5 |
S-L. Yu, et al. New Intra Prediction using Intra-Macroblock Motion Compensation. JVT of ISO/IEC MPEG & ITU-T VCEG. JVT-C151r1.doc, Apr. 30, 2002, pp.1-4 |
Y. Dai, et al. Efficient block-based intra prediction for image coding with 2D geometrical manipulations. 15th IEEE International Conf. on Image Processing. Oct. 2008, pp.2916-2919 |
Also Published As
Publication number | Publication date |
---|---|
CN105247871A (zh) | 2016-01-13 |
US20170070748A1 (en) | 2017-03-09 |
US10368091B2 (en) | 2019-07-30 |
KR20210063485A (ko) | 2021-06-01 |
EP3253059A1 (en) | 2017-12-06 |
RU2016135632A3 (ko) | 2018-03-07 |
WO2015131323A1 (en) | 2015-09-11 |
MX361228B (es) | 2018-11-29 |
MX2016011296A (es) | 2016-11-08 |
AU2014385769B2 (en) | 2018-12-06 |
EP3114842A4 (en) | 2017-02-22 |
AU2014385769A1 (en) | 2016-09-01 |
KR20160129075A (ko) | 2016-11-08 |
CA2939431C (en) | 2020-09-22 |
CN105247871B (zh) | 2020-09-15 |
JP2017512026A (ja) | 2017-04-27 |
CA2939431A1 (en) | 2015-09-11 |
EP3114842A1 (en) | 2017-01-11 |
RU2657210C2 (ru) | 2018-06-08 |
RU2016135632A (ru) | 2018-03-07 |
BR112016018814A8 (pt) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11910005B2 (en) | Block vector prediction in video and image coding/decoding | |
US11539956B2 (en) | Robust encoding/decoding of escape-coded pixels in palette mode | |
KR102401946B1 (ko) | 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑 | |
US12096024B2 (en) | Features of base color index map mode for video and image coding and decoding | |
KR102330740B1 (ko) | 파면 병렬 프로세싱이 인에이블되는 경우의 인트라 픽쳐 예측 모드에 대한 규칙 | |
JP2018088715A (ja) | イントラブロックコピー予測におけるブロック反転及びスキップモード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |