KR20160070771A - 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징 - Google Patents

비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징 Download PDF

Info

Publication number
KR20160070771A
KR20160070771A KR1020167010998A KR20167010998A KR20160070771A KR 20160070771 A KR20160070771 A KR 20160070771A KR 1020167010998 A KR1020167010998 A KR 1020167010998A KR 20167010998 A KR20167010998 A KR 20167010998A KR 20160070771 A KR20160070771 A KR 20160070771A
Authority
KR
South Korea
Prior art keywords
index
packed
values
value
index value
Prior art date
Application number
KR1020167010998A
Other languages
English (en)
Other versions
KR102275639B1 (ko
Inventor
빈 리
펑 우
지젱 수
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority to KR1020217020291A priority Critical patent/KR102318785B1/ko
Publication of KR20160070771A publication Critical patent/KR20160070771A/ko
Application granted granted Critical
Publication of KR102275639B1 publication Critical patent/KR102275639B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/18Methods 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 a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)

Abstract

인코딩 및/또는 디코딩 동안 기본 색상 인덱스 맵(BCIM) 모드의 사용에서의 혁신들은 BCIM 모드를 지원하기 위해 그리고/또는 BCIM 모드의 코딩 효율을 향상시키기 위해 행해지는 수정들의 수를 감소시키는 것에 의해 구현을 단순화시킨다. 예를 들어, 혁신들 중 일부는 변환 계수들에 대해 구성되어 있는 구문 구조를 그 대신에 BCIM 모드에서 인덱스 맵의 요소들에 대한 데이터를 신호하는 데 재사용하는 것을 포함한다. 다른 혁신들은 BCIM 모드에서의 인덱스 값들의 매핑 또는 BCIM 모드에서의 인덱스 맵의 요소들의 예측에 관한 것이다. 또 다른 혁신들은 BCIM 모드에서의 예외 값들의 처리에 관한 것이다.

Description

비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징{FEATURES OF BASE COLOR INDEX MAP MODE FOR VIDEO AND IMAGE CODING AND DECODING}
엔지니어들은 디지털 비디오의 비트 레이트(bit rate)를 감소시키기 위해 압축(compression)(소스 코딩(source coding) 또는 소스 인코딩(source encoding)이라고도 함)을 사용한다. 압축은 비디오 정보를 보다 낮은 비트 레이트 형태로 변환하는 것에 의해 비디오 정보를 저장하고 전송하는 비용을 감소시킨다. 압축 해제(decompression)(디코딩(decoding)이라고도 함)는 압축된 형태로부터 원래 정보(original information)의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
지난 20년에 걸쳐, ITU-T H.261, H.262(MPEG-2 또는 ISO/IEC 13818-2), H.263 및 H.264(MPEG-4 AVC 또는 ISO/IEC 14496-10) 표준들, MPEG-1(ISO/IEC 11172-2) 및 MPEG-4 Visual(ISO/IEC 14496-2) 표준들, 및 SMPTE 421M 표준을 비롯한, 다양한 비디오 코덱 표준들이 채택되었다. 보다 최근에, HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 승인되었다. (예컨대, 스케일러블 비디오 코딩/디코딩에 대한, 샘플 비트 심도(sample bit depth) 또는 크로마 샘플링 레이트(chroma sampling rate)의 면에서 보다 높은 충실도(fidelity)를 갖는 비디오의 코딩/디코딩에 대한, 또는 멀티뷰 코딩/디코딩에 대한) HEVC 표준에 대한 확장들이 현재 개발 중이다. 비디오 코덱 표준은 전형적으로, 특정의 특징들이 인코딩 및 디코딩에서 사용될 때 비트스트림의 파라미터들을 상세히 기술하는, 인코딩된 비디오 비트스트림의 구문에 대한 옵션들을 정의한다. 많은 경우들에서, 비디오 코덱 표준은 또한 디코더가 디코딩에서 부합하는 결과들을 달성하기 위해 수행해야만 하는 디코딩 동작들에 관한 상세들을 제공한다. 코덱 표준들 이외에, 다양한 독점적 코덱 포맷들은 인코딩된 비디오 비트스트림의 구문에 대한 다른 옵션들 및 대응하는 디코딩 동작들을 정의한다.
BCIM(base color index map: 기본 색상 인덱스 맵) 모드에서, 비디오 인코더는 기본 색상들을 나타내는 인덱스 값들을 사용하여 샘플 값들을 인코딩한다. 인덱스 값들 각각은 샘플 값들 중의 상이한 값("기본 색상")과 연관되어 있다. 예를 들어, 8x8 블록이 블록의 64 개 샘플 값들 중 4 개의 상이한 값들을 가지는 경우, 인코더는 그 4 개의 기본 색상들에 대해 4 개의 상이한 인덱스 값들을 할당한다. 인코딩 동안, 샘플 값들이 대응하는 인덱스 값들로 대체된다. 인코더는 인덱스 값들과 기본 색상들 간의 매핑("기본 색상 테이블(base color table)")은 물론 샘플 값들을 나타내는 인덱스 값들의 배열에 대한 데이터("인덱스 맵(index map)")를 인코딩하고 신호한다. 디코더는 인덱스 값들과 기본 색상들 간의 매핑을 수신하고 디코딩한다. 그 매핑을 사용하여, 디코더는 인덱스 맵에서의 인덱스 값들을 원래의 샘플 값들에 대한 기본 색상들로 대체한다.
BCIM 모드는 화면 포착 콘텐츠와 같은 특정의 "인위적으로" 생성된 비디오 콘텐츠를 인코딩할 때 도움이 될 수 있다. 화면 포착 콘텐츠는 전형적으로, 자연스런 비디오와 비교하여, 독특한 샘플 값들을 거의 사용하지 않는 반복된 구조들(예컨대, 그래픽, 텍스트 문자)을 포함한다. 이것은 BCIM이 성능을 향상시킬 기회들을 제공한다.
HEVC 표준에 대한 일부 참조 소프트웨어(reference software)에서의 HEVC 표준 및 구현에 대한 BCIM 모드의 현재 설계는 몇 가지 문제점들을 가지고 있다. 예를 들어, BCIM은 기본 색상 매핑 및 인덱스 맵을 위한 많은 새로운 구문 요소(syntax element)들 및 구문 구조(syntax structure)들을 필요로 하고, 이는 구현을 복잡하게 한다. 또한, 기본 색상 매핑 및 인덱스 맵을 인코딩/디코딩하는 접근법은 HEVC 표준에 이미 포함된 것들과 다른 도구들을 사용하고, 이는 또다시 구현을 복잡하게 한다. 또한, 기본 색상 테이블 및 인덱스 맵의 인코딩이 비효율적이다.
요약하면, 발명을 실시하기 위한 구체적인 내용은 BCIM(base color index map) 모드에서의 혁신들을 제공한다. 예를 들어, 혁신들 중 일부는 비BCIM 모드(non-BCIM mode)에서 변환 계수(transform coefficient)들에 대해 그리고 BCIM 모드에서의 인덱스 맵의 요소들에 대해 구문 구조를 재사용하는 것에 관한 것이다. 이것은 BCIM 모드를 지원하기 위해 행해지는 수정들의 수를 감소시킬 수 있다. 다른 혁신들은 BCIM 모드의 코딩 효율을 향상시킬 수 있는, 인덱스 값들의 매핑 또는 인덱스 맵의 요소들의 예측에 대한 전략들에 관한 것이다. 또 다른 혁신들은 BCIM 모드에서의 예외 값들의 처리에 관한 것이다.
기본 색상 인덱스 맵 모드에 대한 혁신들은 방법의 일부로서, 방법을 수행하도록 구성된 컴퓨팅 디바이스의 일부로서, 또는 컴퓨팅 디바이스로 하여금 방법을 수행하게 하기 위한 컴퓨터 실행 가능 명령어들을 저장하는 유형적 컴퓨터 판독 가능 매체의 일부로서 구현될 수 있다. 다양한 혁신들이 결합하여 또는 개별적으로 사용될 수 있다.
본 발명의 앞서 말한 목적들, 특징들 및 장점들 그리고 다른 목적들, 특징들 및 장점들이 첨부 도면들을 참조하여 계속되는 이하의 발명을 실시하기 위한 구체적인 내용으로부터 보다 명백하게 될 것이다.
도 1은 일부 기술된 실시예들이 구현될 수 있는 예시적인 컴퓨팅 시스템을 나타낸 도면.
도 2a 및 도 2b는 일부 기술된 실시예들이 구현될 수 있는 예시적인 네트워크 환경들을 나타낸 도면.
도 3은 일부 기술된 실시예들이 구현될 수 있는 예시적인 인코더 시스템을 나타낸 도면.
도 4는 일부 기술된 실시예들이 구현될 수 있는 예시적인 디코더 시스템을 나타낸 도면.
도 5a 및 도 5b는 일부 기술된 실시예들이 구현될 수 있는 예시적인 비디오 인코더를 나타낸 도면.
도 6은 일부 기술된 실시예들이 구현될 수 있는 예시적인 비디오 디코더를 나타낸 도면.
도 7은 픽처의 블록에 대한 기본 색상 인덱스 맵 모드를 나타낸 차트.
도 8 및 도 9는 동일한 계수 코딩 구문 구조가 인덱스 맵의 요소들 또는 변환 계수들을 신호하는 데 사용될 수 있을 때, 각각, 인코딩 및 디코딩 동안의 예시적인 프로세스 흐름을 나타낸 도면.
도 10 및 도 11은 인덱스 맵의 요소들 또는 변환 계수들을 선택적으로 표현하는 계수 코딩 구문 구조를 사용하는, 각각, 인코딩 및 디코딩을 위한 일반화된 기법들을 나타낸 플로우차트.
도 12는 인덱스 맵의 요소들 또는 변환 계수들을 선택적으로 표현하는 계수 코딩 구문 구조를 사용하는 디코딩을 위한 예시적인 기법의 플로우차트.
도 13은 인덱스 값들을 패킹된 인덱스 값들에 매핑하는 것 및 패킹된 인덱스 값들을 다시 인덱스 값들에 매핑하는 것을 나타낸 차트.
도 14 및 도 15는, 각각, 인코딩 및 디코딩 동안 기본 색상들에 대한 인덱스 값들의 매핑을 위한 일반화된 기법들을 나타낸 플로우차트.
도 16 및 도 17은 인코딩 동안 뺄셈 연산을 그리고 디코딩 동안 덧셈 연산을 사용하는 인덱스 맵의 요소들의 예측을 나타낸 차트.
도 18은 인코딩 동안 XOR 연산을 사용하는 인덱스 맵의 요소의 예측, 및 디코딩 동안 XOR 연산을 사용하는 요소의 대응하는 재구성을 나타낸 차트.
도 19 및 도 20은, 각각, 인코딩 및 디코딩 동안 인덱스 맵의 요소들의 예측을 위한 일반화된 기법들을 나타낸 플로우차트.
도 21a 및 도 21b는, 각각, 인코딩 및 디코딩 동안 BCIM 모드에 대한 예외 값들 및 인덱스 값들의 처리를 나타낸 차트.
도 22 및 도 23은 BCIM 모드에서 인덱스 값들 및 예외 값들을 사용하는, 각각, 인코딩 및 디코딩을 위한 일반화된 기법들을 나타낸 플로우차트.
도 24는 BCIM 모드에서 인덱스 값들 및 예외 값들을 사용하기 위한 예시적인 기법을 나타낸 플로우차트.
발명을 실시하기 위한 구체적인 내용은 인코딩 및/또는 디코딩 동안 기본 색상 인덱스 맵(BCIM) 모드의 사용에서의 혁신들을 제시한다. 상세하게는, 발명을 실시하기 위한 구체적인 내용은 BCIM 모드에서 인덱스 맵의 요소들에 대한 데이터를 신호하고, BCIM 모드에서 인덱스 값들의 매핑, 인덱스 맵의 요소들의 예측 및 BCIM 모드에서 예외 값들의 처리를 위해 변환 계수들을 위해 구성되어 있는 구문 구조를 재사용하는 혁신들을 제시한다. 이 혁신들 중 일부는 BCIM 모드를 지원하기 위해 행해지는 수정들의 수를 감소시킴으로써 구현을 단순화시킨다. 다른 혁신들은 BCIM 모드의 코딩 효율을 개선시킨다.
본 명세서에 기술되는 동작들이 곳곳에서 비디오 인코더 또는 비디오 디코더에 의해 수행되는 것으로 기술되어 있지만, 많은 경우들에서, 동작들은 다른 유형의 미디어 처리 도구(예컨대, 영상 인코더, 영상 디코더)에 의해 수행될 수 있다.
본 명세서에 기술되는 혁신들 중 일부는 HEVC 표준에 특유한 구문 요소들 및 동작들을 참조하여 설명된다. 예를 들어, HEVC 표준의 초안 버전 JCTVC-N1005 - "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 4," JCTVC-N1005, July 2013이 참조된다. 본 명세서에 기술되는 혁신들은 또한 다른 표준들 또는 포맷들에 대해 구현될 수 있다.
보다 일반적으로, 본 명세서에 기술되는 예들에 대한 다양한 대안들이 가능하다. 예를 들어, 본 명세서에 기술되는 방법들 중 일부가 기술된 방법 동작들의 순서를 변경하는 것에 의해, 특정의 방법 동작들을 분할, 반복 또는 생략하는 것에 의해, 기타에 의해 변경될 수 있다. 개시되는 기술의 다양한 양태들이 결합하여 또는 개별적으로 사용될 수 있다. 상이한 실시예들이 기술되는 혁신들 중 하나 이상을 사용한다. 본 명세서에 기술되는 혁신들 중 일부는 배경 기술에서 살펴본 문제점들 중 하나 이상을 해결한다. 전형적으로, 주어진 기법/도구가 이러한 문제점들 모두를 해결하지는 않는다.
I. 예시적인 컴퓨팅 시스템
도 1은 기술되는 혁신들 중 몇몇이 구현될 수 있는 적당한 컴퓨팅 시스템(100)의 일반화된 예를 나타낸 것이다. 혁신들이 다양한 범용 또는 특수 목적 컴퓨팅 시스템들에서 구현될 수 있기 때문에, 컴퓨팅 시스템(100)은 용도 또는 기능의 범주에 관한 어떤 제한을 암시하기 위한 것이 아니다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 하나 이상의 처리 유닛들(110, 115) 및 메모리(120, 125)를 포함한다. 처리 유닛들(110, 115)은 컴퓨터 실행 가능 명령어들을 실행한다. 처리 유닛은 범용 CPU(central processing unit), ASIC(application-specific integrated circuit) 내의 프로세서, 또는 임의의 다른 유형의 프로세서일 수 있다. 다중 처리 시스템(multi-processing system)에서는, 처리 능력을 증가시키기 위해 다수의 처리 유닛들이 컴퓨터 실행 가능 명령어들을 실행한다. 예를 들어, 도 1은 중앙 처리 유닛(central processing unit)(110)은 물론, 그래픽 처리 유닛 또는 코프로세싱 유닛(coprocessing unit)(115)을 나타내고 있다. 유형적 메모리(tangible memory)(120, 125)는 처리 유닛(들)에 의해 액세스 가능한, 휘발성 메모리(예컨대, 레지스터, 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 어떤 조합일 수 있다. 메모리(120, 125)는 BCIM 모드에 대한 하나 이상의 혁신들을 구현하는, 처리 유닛(들)에 의한 실행에 적당한 컴퓨터 실행 가능 명령어들의 형태로 된 소프트웨어(180)를 저장한다.
컴퓨팅 시스템은 부가의 특징들을 가질 수 있다. 예를 들어, 컴퓨팅 시스템(100)은 저장소(140), 하나 이상의 입력 디바이스들(150), 하나 이상의 출력 디바이스들(160), 및 하나 이상의 통신 연결들(170)을 포함한다. 버스, 제어기 또는 네트워크와 같은 상호연결 메커니즘(도시 생략)은 컴퓨팅 시스템(100)의 구성요소들을 상호연결시킨다. 전형적으로, 운영 체제 소프트웨어(도시 생략)는 컴퓨팅 시스템(100)에서 실행 중인 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 시스템(100)의 구성요소들의 활동들을 조정한다.
유형적 저장소(140)는 이동식 또는 비이동식일 수 있고, 정보를 저장하는 데 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 임의의 다른 매체를 포함한다. 저장소(140)는 BCIM 모드에 대한 하나 이상의 혁신들을 구현하는 소프트웨어(180)에 대한 명령어들을 저장한다.
입력 디바이스(들)(150)는 컴퓨팅 시스템(100)에 입력을 제공하는 키보드, 마우스, 펜, 또는 트랙볼과 같은 터치 입력 디바이스, 음성 입력 디바이스, 스캐닝 디바이스, 또는 다른 디바이스일 수 있다. 비디오의 경우, 입력 디바이스(들)(150)는 아날로그 또는 디지털 형태로 비디오 입력을 받아들이는 카메라, 비디오 카드, TV 튜너 카드, 또는 유사한 디바이스, 또는 비디오 샘플들을 컴퓨팅 시스템(100) 내로 읽어들이는 CD-ROM 또는 CD-RW일 수 있다. 출력 디바이스(들)(160)는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 디스플레이, 프린터, 스피커, CD 라이터(CD-writer), 또는 다른 디바이스일 수 있다.
통신 연결(들)(170)은 통신 매체를 통한 다른 컴퓨팅 엔터티와의 통신을 가능하게 해준다. 통신 매체는 컴퓨터 실행 가능 명령어들, 오디오 또는 비디오 입력 또는 출력, 또는 다른 데이터와 같은 정보를 피변조 데이터 신호(modulated data signal)로 전달한다. 피변조 데이터 신호는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경된 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광, RF, 또는 다른 반송파를 사용할 수 있다.
혁신들이 일반적으로 컴퓨터 판독 가능 매체와 관련하여 기술되어 있을 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용 가능한 유형적 매체이다. 제한이 아닌 예로서, 컴퓨팅 시스템(100)에서, 컴퓨터 판독 가능 매체는 메모리(120, 125), 저장소(140), 및 상기한 것들 중 임의의 것의 조합들을 포함한다.
혁신들이 일반적으로 컴퓨팅 시스템에서 실제 또는 가상의 대상 프로세서 상에서 실행되는, 프로그램 모듈들에 포함된 것과 같은, 컴퓨터 실행 가능 명령어들과 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈들은 특정의 작업들을 수행하거나 특정의 추상 데이터 형식들을 구현하는 루틴들, 프로그램들, 라이브러리들, 객체들, 클래스들, 구성요소들, 데이터 구조들 등을 포함한다. 프로그램 모듈들의 기능이 다양한 실시예들에서 원하는 바에 따라 프로그램 모듈들 간에 결합되거나 분할되어 있을 수 있다. 프로그램 모듈들에 대한 컴퓨터 실행 가능 명령어들은 로컬 또는 분산 컴퓨팅 시스템 내에서 실행될 수 있다.
"시스템" 및 "디바이스"라는 용어들은 본 명세서에서 서로 바꾸어 사용될 수 있다. 문맥이 명백히 달리 나타내지 않는 한, 어느 용어도 컴퓨팅 시스템 또는 컴퓨팅 디바이스의 유형에 대한 어떤 제한을 암시하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 분산되어 있을 수 있고, 본 명세서에 기술되는 기능을 구현하는 소프트웨어를 갖는 특수 목적 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시되는 방법들이 또한 개시되는 방법들 중 임의의 것을 수행하도록 구성된 특수 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들어, 개시되는 방법들은 개시되는 방법들 중 임의의 것을 구현하도록 특수 설계되거나 구성된 집적 회로(예컨대, ASIC DSP(digital signal process unit)와 같은 ASIC, GPU(graphics processing unit), 또는 FPGA(field programmable gate array)와 같은 PLD(programmable logic device))에 의해 구현될 수 있다.
제시를 위해, 발명을 실시하기 위한 구체적인 내용은 컴퓨팅 시스템에서의 컴퓨터 동작들을 기술하기 위해 "결정한다" 및 "사용한다"와 같은 용어들을 사용한다. 이 용어들은 컴퓨터에 의해 수행되는 동작들에 대한 상위 레벨 추상화들이고, 사람에 의해 수행되는 동작들과 혼동되어서는 안 된다. 이 용어들에 대응하는 실제 컴퓨터 동작들은 구현에 따라 다르다.
II. 예시적인 네트워크 환경
도 2a 및 도 2b는 비디오 인코더들(220) 및 비디오 디코더들(270)을 포함하는 예시적인 네트워크 환경들(201, 202)을 나타낸 것이다. 인코더들(220) 및 디코더들(270)은 적절한 통신 프로토콜을 사용하여 네트워크(250)를 통해 연결된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에 도시된 네트워크 환경(201)에서, 각각의 RTC(real-time communication: 실시간 통신) 도구(210)는 양방향 통신을 위해 인코더(220) 및 디코더(270) 둘 다를 포함한다. 주어진 인코더(220)는 HEVC 표준, SMPTE 421M 표준, ISO-IEC 14496-10 표준(H.264 또는 AVC라고도 알려져 있음), 다른 표준, 또는 독점적 포맷의 변형 또는 확장과 호환되는 출력을 생성할 수 있고, 대응하는 디코더(270)는 인코더(220)부터 인코딩된 데이터를 받는다. 양방향 통신은 화상 회의, 화상 전화 통화, 또는 다른 양자간 통신 시나리오의 일부일 수 있다. 도 2a에서의 네트워크 환경(201)이 2 개의 실시간 통신 도구들(210)을 포함하지만, 네트워크 환경(201)은 그 대신에 다자간 통신에 참여하는 3 개 이상의 실시간 통신 도구들(210)을 포함할 수 있다.
실시간 통신 도구(210)는 인코더(220)에 의한 인코딩을 관리한다. 도 3은 실시간 통신 도구(210)에 포함될 수 있는 예시적인 인코더 시스템(300)을 나타낸 것이다. 대안적으로, 실시간 통신 도구(210)는 다른 인코더 시스템을 사용한다. 실시간 통신 도구(210)는 디코더(270)에 의한 디코딩도 관리한다. 도 4는 실시간 통신 도구(210)에 포함될 수 있는 예시적인 디코더 시스템(400)을 나타낸 것이다. 대안적으로, 실시간 통신 도구(210)는 다른 디코더 시스템을 사용한다.
도 2b에 도시된 네트워크 환경(202)에서, 인코딩 도구(212)는 디코더들(270)을 포함하는 다수의 재생 도구들(214)로 전달하기 위한 비디오를 인코딩하는 인코더(220)를 포함한다. 비디오가 인코딩되어 하나의 장소로부터 하나 이상의 다른 장소들로 송신되는 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 원격 데스크톱 회의 프레젠테이션 또는 다른 시나리오를 위해 단방향 통신이 제공될 수 있다. 도 2b에서의 네트워크 환경(202)이 2 개의 재생 도구들(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) 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터 미디어 재생을 위한 정규 인코딩 모드(regular encoding mode)와 같은 다수의 인코딩 모드들 중 임의의 것에서 동작할 수 있는 범용 인코딩 도구일 수 있거나, 하나의 이러한 인코딩 모드를 위해 구성된 특수 목적 인코딩 도구일 수 있다. 인코더 시스템(300)은 운영 체제 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 일반적으로, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임들(311)의 시퀀스를 수신하고 인코딩된 데이터를 채널(390)로의 출력으로서 생성한다. 채널로 출력되는 인코딩된 데이터는 BCIM 모드를 사용하여 인코딩된 콘텐츠를 포함할 수 있다.
비디오 소스(310)는 카메라, 튜너 카드, 저장 매체, 또는 다른 디지털 비디오 소스일 수 있다. 비디오 소스(310)는, 예를 들어, 초당 30 프레임의 프레임 레이트(frame rate)로 비디오 프레임들의 시퀀스를 생성한다. 본 명세서에서 사용되는 바와 같이, "프레임"이라는 용어는 일반적으로 소스, 코딩된 또는 재구성된 영상 데이터를 지칭한다. 프로그레시브 비디오(progressive video)의 경우, 프레임은 프로그레시브 비디오 프레임(progressive video frame)이다. 인터레이스 비디오(interlaced video)의 경우, 예시적인 실시예들에서, 인터레이스 비디오 프레임(interlaced video frame)은 인코딩 이전에 디인터레이스(de-interlace)된다. 대안적으로, 2 개의 상보적인 인터레이스 비디오 필드들이 인터레이스 비디오 프레임 또는 개별적인 필드들로서 인코딩된다. 프로그레시브 비디오 프레임을 나타내는 것 이외에, "프레임" 또는 "픽처"라는 용어는 단일의 쌍이 아닌 비디오 필드(single non-paired video field), 상보적인 비디오 필드들의 쌍, 주어진 때의 비디오 객체를 표현하는 비디오 객체 평면(video object plane), 또는 보다 큰 영상에서의 관심 영역을 나타낼 수 있다. 비디오 객체 평면 또는 영역은 장면의 다수의 객체들 또는 영역들을 포함하는 보다 큰 영상의 일부일 수 있다.
도착하는 소스 프레임(311)은 다수의 프레임 버퍼 저장 구역들(321, 322, ..., 32n)을 포함하는 소스 프레임 임시 메모리 저장 구역(320)에 저장된다. 프레임 버퍼(321, 322 등)는 소스 프레임 저장 구역(320)에 하나의 소스 프레임을 보유한다. 소스 프레임들(311) 중 하나 이상이 프레임 버퍼들(321, 322 등)에 저장된 후에, 프레임 선택기(frame selector)(330)는 소스 프레임 저장 구역(320)으로부터 개개의 소스 프레임을 주기적으로 선택한다. 프레임들이 인코더(340)에 입력하기 위해 프레임 선택기(330)에 의해 선택되는 순서는 프레임들이 비디오 소스(310)에 의해 생성되는 순서와 상이할 수 있다(예컨대, 시간상 역방향 예측(temporally backward prediction)을 용이하게 하기 위해, 프레임이 순서가 앞서 있을 수 있다). 인코더(340)보다 앞에, 인코더 시스템(300)은 인코딩 이전에 선택된 프레임(331)의 전처리(예컨대, 필터링)를 수행하는 전처리기(pre-processor)(도시 생략)를 포함할 수 있다. 전처리는 또한 인코딩을 위한 주 및 보조 성분들로의 색 공간 변환(color space conversion)을 포함할 수 있다. 전형적으로, 인코딩 이전에, 비디오는 YUV와 같은 색 공간으로 변환되었고, 여기서 루마(luma)(Y) 성분의 샘플 값들은 밝기 또는 휘도 값들을 나타내고, 크로마(chroma)(U, V) 성분들의 샘플 값들은 색차 값(color-difference value)들을 나타낸다. 크로마 샘플 값들은 (예컨대, YUV 4:2:0 포맷에 대해) 보다 낮은 크로마 샘플링 레이트로 서브샘플링될 수 있거나, 크로마 샘플 값들은 (예컨대, YUV 4:4:4 포맷에 대해) 루마 샘플 값들과 동일한 해상도를 가질 수 있다. 또는, 비디오가 다른 포맷(예컨대, RGB 4:4:4 포맷)으로 인코딩될 수 있다.
인코더(340)는, 코딩된 프레임(341)을 생성하기 위해, 선택된 프레임(331)을 인코딩하고, 또한 MMCO(memory management control operation: 메모리 관리 제어 동작) 신호들(342) 또는 RPS(reference picture set: 참조 픽처 세트) 정보를 생성한다. 현재 프레임이 인코딩된 첫 번째 프레임이 아닌 경우, 그의 인코딩 프로세스를 수행할 때, 인코더(340)는 디코딩된 프레임 임시 메모리 저장 구역(360)에 저장된 하나 이상의 이전에 인코딩된/디코딩된 프레임들(369)을 사용할 수 있다. 이러한 저장된 디코딩된 프레임들(369)은 현재 소스 프레임(331)의 콘텐츠의 인터 프레임 예측(inter-frame prediction)을 위한 참조 프레임(reference frame)들로서 사용된다. 일반적으로, 인코더(340)는 타일들로 분할하는 것, 인트라 예측 추정 및 예측, 움직임 추정 및 보상, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 작업들을 수행하는 다수의 인코딩 모듈들을 포함한다. 인코더(340)에 의해 수행되는 정확한 동작들은 압축 포맷(compression format)에 따라 변할 수 있다. 출력되는 인코딩된 데이터의 포맷은 HEVC 포맷, WMV(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)는 프레임을, 프레임 경계들과 함께, 프레임 내의 타일들의 수평 및 수직 경계들을 정의하는 타일 행들 및 타일 열들을 따라 분할하고, 여기서 각각의 타일은 직사각형 영역이다. 타일들은 종종 병렬 처리를 위한 옵션들을 개선시키기 위해 사용된다. 프레임은 또한 하나 이상의 슬라이스들로서 구성될 수 있고, 여기서 슬라이스는 프레임 전체 또는 프레임의 영역일 수 있다. 슬라이스는 프레임 내의 다른 슬라이스들과 독립적으로 디코딩될 수 있고, 이는 오류 내성(error resilience)을 개선시킨다. 슬라이스 또는 타일의 내용이 인코딩 및 디코딩의 목적들을 위해 블록들 또는 다른 샘플 세트들로 추가로 분할된다.
hEVC 표준에 따른 구문에 대해, 인코더는 프레임(또는 슬라이스 또는 타일)의 내용을 코딩 트리 단위(coding tree unit)들로 분할한다. 코딩 트리 단위(CTU)는 루마 코딩 트리 블록(coding tree block, CTB) 으로서 구성되는 루마 샘플 값들 및 2 개의 크로마 CTB들로서 구성되는 대응하는 크로마 샘플 값들을 포함한다. CTU(및 그의 CTB들)의 크기는 인코더에 의해 선택되고, 예를 들어, 64x64, 32x32 또는 16x16 샘플 값들일 수 있다. CTU는 하나 이상의 코딩 단위들을 포함한다. 코딩 단위(CU)는 루마 코딩 블록(coding block, CB) 및 2 개의 대응하는 크로마 CB들을 가진다. 예를 들어, 하나의 64x64 루마 CTB 및 2 개의 64x64 크로마 CTB들을 갖는 CTU(YUV 4:4:4 포맷)는 4 개의 CU들로 분할될 수 있고, 각각의 CU는 하나의 32x32 루마 CB 및 2 개의 32x32 크로마 CB들을 포함하고, 각각의 CU는 어쩌면 보다 작은 CU들로 추가로 분할된다. 또는, 다른 예로서, 하나의 64x64 루마 CTB 및 2 개의 32x32 크로마 CTB들을 갖는 CTU(YUV 4:2:0 포맷)는 4 개의 CU들로 분할될 수 있고, 각각의 CU는 하나의 32x32 루마 CB 및 2 개의 16x16 크로마 CB들을 포함하고, 각각의 CU는 어쩌면 보다 작은 CU들로 추가로 분할된다. CU의 가장 작은 허용 가능 크기(예컨대, 8x8, 16x16)는 비트스트림에서 신호될 수 있다.
일반적으로, CU는 인터(inter) 또는 인트라(intra)와 같은 예측 모드를 갖는다. CU는 예측 정보(예측 모드 상세, 기타 등등)를 신호하기 위한 그리고/또는 예측 처리를 위한 하나 이상의 예측 단위들을 포함한다. 예측 단위(prediction unit, PU)는 루마 예측 블록(prediction block, PB) 및 2 개의 크로마 PB들을 가진다. 인트라 예측된 CU에 대해, PU는, CU가 가장 작은 크기(예컨대, 8x8)를 갖지 않는 한, CU와 동일한 크기를 갖는다. 그 경우에, CU에 대한 구문 요소에 의해 나타내는 바와 같이, CU는 4 개의 보다 작은 PU들(예컨대, 가장 작은 CU 크기가 8x8인 경우 각각이 4x4임)로 분할될 수 있거나, PU가 가장 작은 CU 크기를 가질 수 있다. CU는 또한 잔차 코딩/디코딩을 위한 하나 이상의 변환 단위(transform unit)들을 가지며, 여기서 변환 단위(TU)는 하나의 변환 블록(transform block, TB) 및 2 개의 크로마 TB들을 갖는다. 인트라 예측된 CU에서의 PU는 단일의 TU(크기가 PU와 같음) 또는 다수의 TU들을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, "블록"이라는 용어는, 문맥에 따라, CB, PB, TB 또는 다른 샘플 값 세트를 나타낼 수 있다. 인코더는 비디오를 CTU들, CU들, PU들, TU들, 기타로 어떻게 분할할지를 결정한다.
도 3으로 돌아가서, 인코더는 소스 프레임(331) 내의 다른 이전에 재구성된 샘플 값들로부터의 예측의 면에서 소스 프레임(331)의 인트라 코딩된 블록을 표현한다. 블록에 대한 인트라 공간 예측(intra spatial prediction)에 대해, 인트라 픽처 추정기(intra-picture estimator)는 이웃하는 재구성된 샘플 값들의 블록 내로의 외삽(extrapolation)을 추정한다. 인트라 예측 추정기(intra-prediction estimator)는 (인트라 공간 예측을 위한 예측 모드(방향)와 같은) 예측 정보를 출력하고, 이 예측 정보는 엔트로피 코딩된다. 인트라 예측 예측기(intra-prediction predictor)는 인트라 예측 값들을 결정하기 위해 예측 정보를 적용한다. BCIM 모드에 대해, 인코더는, 인덱스 값들에 대한 기본 색상 테이블을 사용하여 그리고 인덱스 맵의 요소들을 사용하여, 블록의 샘플 값들 중의 기본 색상들에 대한 인덱스 값들을 사용해 인트라 코딩된 블록을 표현한다. 인코더는 또한 인덱스 값들을 사용함이 없이 BCIM 모드 블록 내의 예외 값들을 표현할 수 있고, 이에 대해서는 이하에서 기술한다.
인코더(340)는 참조 프레임들로부터의 예측의 면에서 소스 프레임(331)의 인터 코딩된, 예측된 블록을 나타낸다. 움직임 추정기(motion estimator)는 하나 이상의 참조 프레임들(369)에 대한 블록의 움직임을 추정한다. 다수의 참조 프레임들이 사용될 때, 다수의 참조 프레임들은 상이한 시간 방향들 또는 동일한 시간 방향으로부터의 것일 수 있다. 움직임 보상된 예측 참조 영역(motion-compensated prediction reference region)은 현재 프레임의 샘플들의 블록에 대한 움직임 보상된 예측 값들을 생성하는 데 사용되는 참조 프레임(들) 내의 샘플들의 영역이다. 움직임 추정기는 엔트로피 코딩되어 있는, 움직임 벡터 정보와 같은, 움직임 정보를 출력한다. 움직임 보상기(motion compensator)는 움직임 보상된 예측 값들을 결정하기 위해 참조 프레임들(369)에 움직임 벡터들을 적용한다.
비BCIM 모드들에서, 인코더는 블록의 예측 값들(인트라 또는 인터)과 대응하는 원래 값들 사이의 차이(있는 경우)를 결정한다. 이 예측 잔차 값(prediction residual value)들은 주파수 변환, 양자화 및 엔트로피 인코딩을 사용하여 추가로 인코딩된다. 예를 들어, 인코더(340)는 비디오의 픽처, 타일, 슬라이스 및/또는 다른 부분에 대해 QP(quantization parameter, 양자화 파라미터)에 대한 값들을 설정하고, 그에 따라 변환 계수들을 양자화한다. BCIM 모드에서, 인코더는, 예외 값들을 처리할 때의 특정 양자화 동작들을 제외한, 변환 및 양자화 동작들을 건너뛴다.
인코더(340)의 엔트로피 코더(entropy coder)는 양자화된 변환 계수 값들은 물론, 특정의 보조 정보(side information)(예컨대, 움직임 벡터 정보, QP 값, 모드 결정, 파라미터 선택)를 압축한다. 상세하게는, 엔트로피 코더는 계수 코딩 구문 구조를 사용하여 인덱스 맵의 요소들에 대한 데이터를 압축할 수 있다. 전형적인 엔트로피 코딩 기법들은 지수 골롬 코딩(Exp-Golomb coding), 산술 코딩(arithmetic coding), 차분 코딩(differential coding), 허프만 코딩(Huffman coding), 런 길이 코딩(run length coding), V2V(variable-length-to-variable-length) 코딩, V2F(variable-length-to-fixed-length) 코딩, LZ 코딩, 사전 코딩(dictionary coding), PIPE(probability interval partitioning entropy coding), 및 이들의 조합들을 포함한다. 엔트로피 코더는 상이한 종류의 정보에 대해 상이한 코딩 기법들을 사용할 수 있고, 특정의 코딩 기법 내에서 다수의 코드 테이블들 중에서 선택할 수 있다.
코딩된 프레임들(341) 및 MMCO/RPS 정보(342)는 디코딩 프로세스 에뮬레이터(350)에 의해 처리된다. 디코딩 프로세스 에뮬레이터(350)는 디코더의 기능 중 일부(예를 들어,참조 프레임들을 재구성하는 디코딩 작업들)를 구현한다. 디코딩 프로세스 에뮬레이터(350)는 주어진 코딩된 프레임(342)이 재구성되어 인코딩될 후속 프레임들의 인터 프레임 예측에서 참조 프레임으로서 사용하기 위해 저장될 필요가 있는지를 결정하기 위해 MMCO/RPS 정보(342)를 사용한다. MMCO/RPS 정보(342)가 코딩된 프레임(341)이 저장될 필요가 있다는 것을 나타내는 경우, 디코딩 프로세스 에뮬레이터(350)는 코딩된 프레임(341)을 수신하고 대응하는 디코딩된 프레임(351)을 생성하는 디코더에 의해 수행될 디코딩 프로세스를 모델링한다. 그렇게 함에 있어서, 인코더(340)가 디코딩된 프레임 저장 구역(360)에 저장된 디코딩된 프레임(들)(369)을 사용할 때, 디코딩 프로세스 에뮬레이터(350)는 또한 디코딩 프로세스의 일부로서 저장 구역(360)으로부터의 디코딩된 프레임(들)(369)을 사용한다.
디코딩된 프레임 임시 메모리 저장 구역(360)은 다수의 프레임 버퍼 저장 구역들(361, 362, ..., 36n)을 포함한다. 디코딩 프로세스 에뮬레이터(350)는 참조 프레임들로서 사용하기 위해 인코더(340)에 의해 더 이상 필요로 하지 않는 프레임들을 갖는 임의의 프레임 버퍼들(361, 362 등)을 식별하기 위해 저장 구역(360)의 콘텐츠를 관리하는 데 MMCO/RPS 정보(342)를 사용한다. 디코딩 프로세스를 모델링한 후에, 디코딩 프로세스 에뮬레이터(350)는 새로 디코딩된 프레임(351)을 이러한 방식으로 식별된 프레임 버퍼(361, 362 등)에 저장한다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)는 임시 코딩된 데이터 구역(temporary coded data area)(370)에 버퍼링된다. 코딩된 데이터 구역(370)에 집계되어 있는 코딩된 데이터는, 기본 코딩된 비디오 비트스트림(elementary coded video bitstream)의 구문의 일부로서, 하나 이상의 픽처들에 대한 인코딩된 데이터를 포함한다. 코딩된 데이터 구역(370)에 집계되어 있는 코딩된 데이터는 또한 (예컨대, 하나 이상의 SEI(supplemental enhancement information) 메시지들 또는 VUI(video usability information) 메시지들에서의 하나 이상의 파라미터들로서) 코딩된 비디오 데이터에 관한 미디어 메타데이터를 포함할 수 있다.
임시 코딩된 데이터 구역(370)으로부터의 집계된 데이터(371)는 채널 인코더(channel encoder)(380)에 의해 처리된다. 채널 인코더(380)는 (예컨대, ISO/IEC 13818-1와 같은 미디어 스트림 다중화 포맷(media stream multiplexing format)에 따라) 미디어 스트림으로서 전송하기 위해 집계된 데이터를 패킷화(packetize)할 수 있고, 이 경우에 채널 인코더(380)는 미디어 전송 스트림의 구문의 일부로서 구문 요소들을 추가할 수 있다. 또는, 채널 인코더(380)는 (예컨대, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷(media container format)에 따라) 파일로서 저장하기 위해 집계된 데이터를 구성(organize)할 수 있고, 이 경우에 채널 인코더(380)는 미디어 저장 파일의 구문의 일부로서 구문 요소들을 추가할 수 있다. 또는, 보다 일반적으로, 채널 인코더(380)는 하나 이상의 미디어 시스템 다중화 프로토콜들 또는 전송 프로토콜들을 구현할 수 있고, 이 경우에 채널 인코더(380)는 프로토콜(들)의 구문의 일부로서 구문 요소들을 추가할 수 있다. 채널 인코더(380)는 출력에 대한 저장소, 통신 연결, 또는 다른 채널을 나타내는 채널(390)에 출력을 제공한다.
IV. 예시적인 디코더 시스템
도 4는 일부 기술된 실시예들이 구현될 수 있는 예시적인 디코더 시스템(400)의 블록도이다. 디코더 시스템(400)은 실시간 통신을 위한 저 대기 시간 디코딩 모드 및 파일 또는 스트림으로부터 미디어 재생을 위한 정규 디코딩 모드(regular decoding mode)와 같은 다수의 디코딩 모드들 중 임의의 것에서 동작할 수 있는 범용 디코딩 도구일 수 있거나, 하나의 이러한 디코딩 모드를 위해 구성된 특수 목적 디코딩 도구일 수 있다. 디코더 시스템(400)은 운영 체제 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 일반적으로, 디코더 시스템(400)은 채널(410)로부터 코딩된 데이터를 수신하고 출력 목적지(490)에 대한 출력으로서 재구성된 프레임들을 생성한다. 코딩된 데이터는 BCIM 모드를 사용하여 인코딩된 콘텐츠를 포함할 수 있다.
디코더 시스템(400)은 입력으로서의 코딩된 데이터에 대한 저장소, 통신 연결, 또는 다른 채널을 나타낼 수 있는 채널(410)을 포함한다. 채널(410)은 채널 코딩되어 있는 코딩된 데이터를 생성한다. 채널 디코더(420)는 코딩된 데이터를 처리할 수 있다. 예를 들어, 채널 디코더(420)는 (예컨대, ISO/IEC 13818-1와 같은 미디어 스트림 다중화 포맷에 따라) 미디어 스트림으로서 전송하기 위해 집계된 데이터를 역패킷화(de-packetize)하고, 이 경우에 채널 디코더(420)는 미디어 전송 스트림의 구문의 일부로서 추가된 구문 요소들을 파싱할 수 있다. 또는, 채널 디코더(420)는 (예컨대, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 파일로서 저장하기 위해 집계되어 있는 코딩된 비디오 데이터를 분리시키고, 이 경우에 채널 디코더(420)는 미디어 저장 파일의 구문의 일부로서 추가된 구문 요소들을 파싱할 수 있다. 또는, 보다 일반적으로, 채널 디코더(420)는 하나 이상의 미디어 시스템 역다중화 프로토콜들 또는 전송 프로토콜들을 구현할 수 있고, 이 경우에 채널 디코더(420)는 프로토콜(들)의 구문의 일부로서 추가된 구문 요소들을 파싱할 수 있다.
채널 디코더(420)로부터 출력되는 코딩된 데이터(421)는, 충분한 양의 이러한 데이터가 수신될 때까지, 임시 코딩된 데이터 구역(430)에 저장된다. 코딩된 데이터(421)는 코딩된 프레임(431) 및 MMCO/RPS 정보(432)를 포함한다. 코딩된 데이터 구역(430) 내의 코딩된 데이터(421)는, 기본 코딩된 비디오 비트스트림의 구문의 일부로서, 하나 이상의 픽처들에 대한 코딩된 데이터를 포함한다. 코딩된 데이터 구역(430) 내의 코딩된 데이터(421)는 또한 (예컨대, 하나 이상의 SEI 메시지들 또는 VUI 메시지들에서의 하나 이상의 파라미터들로서) 인코딩된 비디오 데이터에 관련된 미디어 메타데이터를 포함할 수 있다.
일반적으로, 코딩된 데이터 구역(430)은 코딩된 데이터(421)가 디코더(450)에 의해 사용될 때까지 이러한 코딩된 데이터(421)를 일시적으로 저장한다. 그 시점에서, 코딩된 프레임(431) 및 MMCO/RPS 정보(432)에 대한 코딩된 데이터가 코딩된 데이터 구역(430)으로부터 디코더(450)로 전송된다. 디코딩이 계속됨에 따라, 새로운 코딩된 데이터가 코딩된 데이터 구역(430)에 추가되고, 코딩된 데이터 구역(430)에 남아 있는 가장 오래된 코딩된 데이터가 디코더(450)로 전송된다.
디코더(450)는 코딩된 프레임(431)을 주기적으로 디코딩하여 대응하는 디코딩된 프레임(451)을 생성한다. 적절한 경우, 그의 디코딩 프로세스를 수행할 때, 디코더(450)는 하나 이상의 이전에 디코딩된 프레임들(469)을 인터 프레임 예측을 위한 참조 프레임들로서 사용할 수 있다. 디코더(450)는 디코딩된 프레임 임시 메모리 저장 구역(460)으로부터 이러한 이전에 디코딩된 프레임들(469)을 읽는다. 일반적으로, 디코더(450)는, 엔트로피 디코딩, 역양자화, 역 주파수 변환, 인트라 예측, 움직임 보상 및 타일들의 병합과 같은, 디코딩 작업들을 수행하는 다수의 디코딩 모듈들을 포함한다. 디코더(450)에 의해 수행되는 정확한 동작들은 압축 포맷에 따라 변할 수 있다.
예를 들어, 디코더(450)는 압축된 프레임 또는 프레임들의 시퀀스에 대한 인코딩된 데이터를 수신하고, 디코딩된 프레임(451)을 포함하는 출력을 생성한다. 디코더(450)에서, 버퍼는 압축된 프레임에 대한 인코딩된 데이터를 수신하고, 적절한 때에, 수신된 인코딩된 데이터를 엔트로피 디코더가 이용 가능하게 만든다. 엔트로피 디코더는, 전형적으로 인코더에서 수행된 엔트로피 인코딩의 역을 적용하여, 엔트로피 코딩된 양자화된 데이터는 물론 엔트로피 코딩된 보조 정보를 엔트로피 디코딩한다. 움직임 보상기는 재구성되는 프레임의 인터 코딩된 블록들의 움직임 보상된 예측 값들을 형성하기 위해 움직임 정보를 하나 이상의 참조 프레임들에 적용한다. 인트라 예측 모듈(intra prediction module)은 이웃하는 이전에 재구성된 샘플 값들로부터 현재 블록의 샘플 값들을 공간적으로 예측할 수 있다. BCIM 모드에 대해, 디코더는, 인덱스 값들에 대한 기본 색상 테이블을 사용하여 그리고 인덱스 맵의 요소들을 사용하여, 블록의 샘플 값들 중의 기본 색상들에 대한 인덱스 값들을 사용해 인트라 코딩된 블록을 재구성한다.
비BCIM 모드에서, 디코더(450)는 또한 예측 잔차들을 재구성한다. 역양자화기는 엔트로피 디코딩된 데이터를 역양자화한다. 예를 들어, 디코더(450)는 비디오의 픽처, 타일, 슬라이스 및/또는 다른 부분에 대해 QP에 대한 값들을 비트스트림에서의 구문 요소들에 기초하여 설정하고, 그에 따라 변환 계수들을 역양자화한다. 역 주파수 변환기는 양자화된 주파수 영역 데이터를 공간 영역 정보로 변환한다. BCIM 모드에서, 디코더는, 예외 값들을 디코딩할 때의 특정 역양자화 동작들을 제외한, 역양자화 및 역 주파수 변환 동작들을 건너뛴다. 인터 예측된 블록에 대해, 디코더(450)는 재구성된 예측 잔차들을 움직임 보상된 예측들과 결합시킨다. 디코더(450)는 이와 유사하게 예측 잔차들을 인트라 예측으로부터의 예측들과 결합시킬 수 있다. 비디오 디코더(450)에서의 움직임 보상 루프는 디코딩된 프레임(451)에서의 블록 경계 행들 및/또는 열들에 걸친 불연속들을 평활화하기 위해 적응적 블록화 제거 필터(adaptive de-blocking filter)를 포함한다.
디코딩된 프레임 임시 메모리 저장 구역(460)은 다수의 프레임 버퍼 저장 구역들(461, 462, ..., 46n)을 포함한다. 디코딩된 프레임 저장 구역(460)은 디코딩된 픽처 버퍼(decoded picture buffer)의 일 예이다. 디코더(450)는 디코딩된 프레임(451)을 저장할 수 있는 프레임 버퍼(461, 462 등)를 식별하기 위해 MMCO/RPS 정보(432)를 사용한다. 디코더(450)는 디코딩된 프레임(451)을 그 프레임 버퍼에 저장한다.
출력 시퀀서(output sequencer)(480)는 MMCO/RPS 정보(432)를 사용하여, 출력 순서에서 생성될 다음 프레임이 디코딩된 프레임 저장 구역(460)에서 이용가능할 때를 식별한다. 출력 순서에서 생성될 다음 프레임(481)이 디코딩된 프레임 저장 구역(460)에서 이용가능할 때, 그것이 출력 시퀀서(480)에 의해 읽혀지고 출력 목적지(490)(예컨대, 디스플레이)로 출력된다. 일반적으로, 프레임들이 디코딩된 프레임 저장 구역(460)으로부터 출력 시퀀서(480)에 의해 출력되는 순서는 프레임들이 디코더(450)에 의해 디코딩되는 순서와 상이할 수 있다.
V. 예시적인 비디오 인코더
도 5a 및 도 5b는 일부 기술된 실시예들이 구현될 수 있는 일반화된 비디오 인코더(500)의 블록도이다. 인코더(500)는 현재 프레임(505)을 포함하는 비디오 픽처들의 시퀀스를 입력 비디오 신호(505)로서 수신하고, 코딩된 비디오 비트스트림(595)에서의 인코딩된 데이터를 출력으로서 생성한다.
인코더(500)는 블록 기반(block-based)이고, 구현에 의존하는 블록 포맷을 사용한다. 블록들이 상이한 스테이지들에서, 예컨대, 예측, 주파수 변환 및/또는 엔트로피 인코딩 스테이지들에서, 추가로 세분화될 수 있다. 예를 들어, 픽처가 64x64 블록들, 32x32 블록들 또는 16x16 블록들로 나누어질 수 있고, 이들이 차례로 코딩 및 디코딩을 위해 보다 작은 샘플 값 블록들로 나누어질 수 있다. HEVC 표준에 대한 인코딩의 구현들에서, 인코더는 픽처를 CTU들(CTB들), CU들(CB들), PU들(PB들) 및 TU(TB들)로 분할한다.
인코더(500)는 인트라 픽처 코딩(intra-picture coding) 및/또는 인터 픽처 코딩(inter-picture coding)을 사용하여 픽처들을 압축한다. 인코더(500)의 구성요소들 중 다수는 인트라 픽처 코딩 및 인터 픽처 코딩 둘 다를 위해 사용된다. 그 구성요소들에 의해 수행되는 정확한 동작들은 압축되는 정보의 유형에 따라 달라질 수 있다.
타일화 모듈(tiling module)(510)은, 선택적으로, 픽처를 동일한 크기 또는 상이한 크기들의 다수의 타일들로 분할한다. 예를 들어, 타일화 모듈(510)은 픽처를, 픽처 경계들과 함께, 픽처 내의 타일들의 수평 및 수직 경계들을 정의하는 타일 행들 및 타일 열들을 따라 분할하고, 여기서 각각의 타일은 직사각형 영역이다. 타일화 모듈(510)은 이어서 타일들을 하나 이상의 타일 세트들로 그룹화할 수 있고, 여기서 타일 세트는 타일들 중 하나 이상의 타일들의 그룹이다.
일반 인코딩 제어(520)는 입력 비디오 신호(505)에 대한 픽처들은 물론 인코더(500)의 다양한 모듈들로부터의 피드백(도시 생략)을 수신한다. 전체적으로, 일반 인코딩 제어(520)는, 인코딩 동안 코딩 파라미터들을 설정하고 변경하기 위해, 제어 신호들(도시 생략)을 다른 모듈들[타일화 모듈(510), 변환기/스케일러/양자화기(530), 스케일러/역변환기(535), 인트라 픽처 추정기(540), 움직임 추정기(550) 및 인트라/인터 스위치(intra/inter switch) 등]에 제공한다. 상세하게는, 일반 인코딩 제어(520)는 인코딩 동안 BCIM 모드를 사용할지 여부 및 어떻게 사용할지를 결정할 수 있다. 일반 인코딩 제어(520)는 또한 인코딩 동안 중간 결과들을 평가할 수 있다(예컨대, 레이트 왜곡 분석(rate-distortion analysis)을 수행함). 일반 인코딩 제어(520)는, 대응하는 디코더가 일관성 있는 결정들을 할 수 있도록, 인코딩 동안 행해진 결정들을 나타내는 일반 제어 데이터(522)를 생성한다. 일반 제어 데이터(522)는 헤더 포맷터/엔트로피 코더(header formatter/entropy coder)(590)에 제공된다.
현재 픽처가 인터 픽처 예측을 사용하여 예측되는 경우, 움직임 추정기(550)는 하나 이상의 참조 픽처들에 대한 입력 비디오 신호(505)의 현재 픽처의 샘플 값들의 블록들의 움직임을 추정한다. 디코딩된 픽처 버퍼(570)는 참조 픽처들로서 사용하기 위해 하나 이상의 재구성된 이전에 코딩된 픽처(reconstructed previously coded picture)들을 버퍼링한다. 다수의 참조 픽처들이 사용될 때, 다수의 참조 픽처들은 상이한 시간 방향들 또는 동일한 시간 방향으로부터의 것일 수 있다. 움직임 추정기(550)는 보조 정보로서 참조 픽처 선택 데이터 및 움직임 벡터 데이터와 같은 움직임 데이터(552)를 생성한다. 움직임 데이터(552)는 헤더 포맷터/엔트로피 코더(590)에는 물론 움직임 보상기(555)에 제공된다.
움직임 보상기(555)는 디코딩된 픽처 버퍼(570)로부터의 재구성된 참조 픽처(들)에 움직임 벡터들을 적용한다. 움직임 보상기(555)는 현재 픽처에 대한 움직임 보상된 예측들을 생성한다.
인코더(500) 내의 별도의 경로에서, 인트라 픽처 추정기(540)는 입력 비디오 신호(505)의 현재 픽처의 샘플 값들의 블록들에 대한 인트라 픽처 예측을 어떻게 수행할지를 결정한다. 현재 픽처는 전체 또는 일부가 인트라 픽처 코딩을 사용하여 코딩될 수 있다. 현재 픽처의 재구성(538)의 값들을 사용하여, 인트라 공간 예측에 대해, 인트라 픽처 추정기(540)는 현재 픽처의 이웃하는 이전에 재구성된 샘플 값들로부터 현재 픽처의 현재 블록의 샘플 값들을 어떻게 공간적으로 예측할지를 결정한다.
BCIM 모드에 대해, 인코더(500)는, 인덱스 값들에 대한 인덱스 맵을 사용하여 그리고 인덱스 맵의 요소들을 사용하여, 블록의 샘플 값들 중의 기본 색상들에 대한 인덱스 값들을 사용해 인트라 코딩된 블록을 표현한다.
인트라 예측 추정기(540)는, 인트라 예측이 공간 예측 또는 BCIM 모드를 사용하는지(예컨대, 인트라 블록마다 또는 특정 예측 모드 방향들의 인트라 블록마다의 플래그 값), (인트라 공간 예측에 대한) 예측 모드 방향을 나타내는 정보와 같은, 인트라 예측 데이터(542)를 보조 정보로서 생성한다. 인트라 예측 데이터(542)는 헤더 포맷터/엔트로피 코더(590)에는 물론 인트라 픽처 예측기(545)에 제공된다. 인트라 예측 데이터(542)에 따라, 인트라 픽처 예측기(545)는 현재 픽처의 이웃하는 이전에 재구성된 샘플 값들로부터 현재 픽처의 현재 블록의 샘플 값들을 공간적으로 예측하거나, BCM 모드 블록들의 샘플 값들을 재구성한다.
비BCM 모드들에서, 인트라/인터 스위치는 주어진 블록에 대한 예측(558)으로서 사용하기 위해 움직임 보상된 예측 또는 인트라 픽처 예측의 값들을 선택한다. 비BCIM 모드들에서, 예측(558)의 블록과 입력 비디오 신호(505)의 원래의 현재 픽처의 대응하는 부분 사이의 차이(있는 경우)는 잔차(518)의 값들을 제공한다. 현재 픽처의 재구성 동안, 재구성된 잔차 값들은 예측(558)과 결합되어, 비디오 신호(505)로부터의 원래 콘텐츠의 재구성(538)을 생성한다. 그렇지만, 손실 압축에서, 어떤 정보가 여전히 비디오 신호(505)로부터 손실되어 있다.
변환기/스케일러/양자화기(530)에서, 비BCIM 모드들에 대해, 주파수 변환기는 공간 영역 비디오 정보를 주파수 영역(즉, 스펙트럼, 변환) 데이터로 변환시킨다. 블록 기반 비디오 코딩의 경우, 주파수 변환기는 예측 잔차 데이터(또는 예측(558)이 널(null)인 경우, 샘플 값 데이터)의 블록들에 이산 코사인 변환(DCT), 그의 정수 근사화(integer approximation), 또는 다른 유형의 순방향 블록 변환(forward block transform)을 적용하여, 주파수 변환 계수들의 블록들을 생성한다. 인코더(500)는 또한 이러한 변환 단계가 생략된다는 것을 나타낼 수 있다. 스케일러/양자화기는 변환 계수들을 스케일링하고 양자화한다. 예를 들어, 양자화기는 프레임마다, 타일마다, 슬라이스마다, 블록마다 또는 다른 기준으로 변하는 계단 크기(step size)로 불균일 스칼라 양자화(non-uniform, scalar quantization)를 주파수 영역 데이터에 적용한다. 양자화된 변환 계수 데이터(532)는 헤더 포맷터/엔트로피 코더(590)에 제공된다.
스케일러/역변환기(535)에서, 비BCIM 모드들에 대해, 스케일러/역양자화기는 양자화된 변환 계수들에 대해 역스케일링 및 역양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차들 또는 샘플 값들의 블록들을 생성한다. 인코더(500)는 재구성된 잔차들을 예측(558)의 값들(예컨대, 움직임 보상된 예측 값들, 인트라 픽처 예측 값들)과 결합하여 재구성(538)을 형성한다.
인트라 픽처 예측의 경우, 재구성(538)의 값들은 인트라 픽처 추정기(540) 및 인트라 픽처 예측기(545)에 피드백될 수 있다. 또한, 재구성(538)의 값들이 후속 픽처들의 움직임 보상된 예측을 위해 사용될 수 있다. 재구성(538)의 값들이 추가로 필터링될 수 있다. 필터링 제어(560)는, 비디오 신호(505)의 주어진 픽처에 대해, 재구성(538)의 값들에 대해 블록화 제거 필터링 및 SAO(sample adaptive offset) 필터링을 어떻게 수행할지를 결정한다. 필터링 제어(560)는 헤더 포맷터/엔트로피 코더(590) 및 병합기/필터(들)(565)에 제공되는 필터 제어 데이터(562)를 생성한다.
병합기/필터(들)(565)에서, 인코더(500)는 상이한 타일들로부터의 콘텐츠를 픽처의 재구성된 버전으로 병합한다. 인코더(500)는, 프레임들에서의 경계들에 걸쳐 불연속들을 적응적으로 평활화하기 위해, 필터 제어 데이터(562)에 따라 블록화 제거 필터링 및 SAO 필터링을 선택적으로 수행한다. 인코더(500)의 설정에 따라, 타일 경계들이 선택적으로 필터링되거나 전혀 필터링되지 않을 수 있고, 인코더(500)는 이러한 필터링이 적용되었는지 여부를 나타내는 구문을 코딩된 비트스트림 내에 제공할 수 있다. 디코딩된 픽처 버퍼(570)는 후속하는 움직임 보상된 예측에서 사용하기 위해 재구성된 현재 픽처를 버퍼링한다.
헤더 포맷터/엔트로피 코더(590)는 일반 제어 데이터(522), 양자화된 변환 계수 데이터(532), 인트라 예측 데이터(542) 및 패킹된 인덱스 값들, 움직임 데이터(552) 및 필터 제어 데이터(562)를 포맷팅하고 그리고/또는 엔트로피 코딩한다. 예를 들어, 헤더 포맷터/엔트로피 코더(590)는 계수 코딩 구문 구조의 다양한 구문 요소들의 엔트로피 코딩을 위해 컨텍스트 적응적 이진 산술 코딩(context-adaptive binary arithmetic coding, CABAC)을 사용한다.
헤더 포맷터/엔트로피 코더(590)는 인코딩된 데이터를 코딩된 비디오 비트스트림(595)으로 제공한다. 코딩된 비디오 비트스트림(595)의 포맷은 HEVC 포맷, WMV(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예컨대, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예컨대, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형 또는 확장일 수 있다.
구현 및 원하는 압축 유형에 따라, 인코더의 모듈들이 추가되고, 생략되며, 다수의 모듈들로 분할되고, 다른 모듈들과 결합되며, 그리고/또는 유사한 모듈들로 대체될 수 있다. 대안의 실시예들에서, 상이한 모듈들 및/또는 모듈들의 다른 구성들을 갖는 인코더들은 기술되는 기법들 중 하나 이상을 수행한다. 인코더의 구체적인 실시예들은 전형적으로 인코더(500)의 변형 또는 보완된 버전을 사용한다. 인코더(500) 내의 모듈들 간의 도시된 관계들은 인코더에서의 정보의 일반적인 흐름들을 나타내고; 간단함을 위해, 다른 관계들은 도시되어 있지 않다.
VI. 예시적인 비디오 디코더
도 6은 일부 기술된 실시예들이 구현될 수 있는 일반화된 디코더(600)의 블록도이다. 디코더(600)는 인코딩된 데이터를 코딩된 비디오 비트스트림(605)으로 수신하고, 재구성된 비디오(695)에 대한 픽처들을 포함하는 출력을 생성한다. 코딩된 비디오 비트스트림(605)의 포맷은 HEVC 포맷, WMV(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예컨대, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예컨대, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형 또는 확장일 수 있다.
디코더(600)는 블록 기반이고, 구현에 의존하는 블록 포맷을 사용한다. 블록들이 상이한 스테이지들에서 추가로 세분될 수 있다. 예를 들어, 픽처가 64x64 블록들, 32x32 블록들 또는 16x16 블록들로 나누어질 수 있고, 이들이 차례로 보다 작은 샘플 값 블록들로 나누어질 수 있다. HEVC 표준에 대한 디코딩의 구현들에서, 픽처가 CTU들(CTB들), CU들(CB들), PU들(PB들) 및 TU(TB들)로 분할된다.
디코더(600)는 인트라 픽처 디코딩(intra-picture decoding) 및/또는 인터 픽처 디코딩(inter-picture decoding)을 사용하여 픽처들을 압축 해제한다. 디코더(600)의 구성요소들 중 다수는 인트라 픽처 디코딩 및 인터 픽처 디코딩 둘 다를 위해 사용된다. 그 구성요소들에 의해 수행되는 정확한 동작들은 압축 해제되는 정보의 유형에 따라 달라질 수 있다.
버퍼는 인코딩된 데이터를 코딩된 비디오 비트스트림(605)으로 수신하고 수신된 인코딩된 데이터를 파서/엔트로피 디코더(610)가 이용 가능하게 만든다. 파서/엔트로피 디코더(610)는, 전형적으로 인코더(500)에서 수행된 엔트로피 코딩의 역(예컨대, 컨텍스트 적응적 이진 산술 디코딩)을 적용하여, 엔트로피 코딩된 데이터를 엔트로피 디코딩한다. 예를 들어, 파서/엔트로피 디코더(610)는 계수 코딩 구문 구조의 다양한 구문 요소들의 엔트로피 디코딩을 위해 컨텍스트 적응적 이진 산술 디코딩(context-adaptive binary arithmetic decoding)을 사용한다. 파싱 및 엔트로피 디코딩의 결과로서, 파서/엔트로피 디코더(610)는 일반 제어 데이터(622), 양자화된 변환 계수 데이터(632), 인트라 예측 데이터(642) 및 패킹된 인덱스 값들, 움직임 데이터(652) 및 필터 제어 데이터(662)를 생성한다.
일반 디코딩 제어(620)는, 디코딩 동안 디코딩 파라미터들을 설정하고 변경하기 위해, 일반 제어 데이터(622)를 수신하고 제어 신호들을 다른 모듈들(도시 생략)[스케일러/역변환기(635), 인트라 픽처 예측기(645), 움직임 보상기(655) 및 인트라/인터 스위치 등]에 제공한다.
현재 픽처가 인터 픽처 예측을 사용하여 예측되는 경우, 움직임 보상기(655)는, 참조 픽처 선택 데이터 및 움직임 벡터 데이터와 같은, 움직임 데이터(652)를 수신한다. 움직임 보상기(655)는 디코딩된 픽처 버퍼(670)로부터의 재구성된 참조 픽처(들)에 움직임 벡터들을 적용한다. 움직임 보상기(655)는 현재 픽처의 인터 코딩된 블록들에 대한 움직임 보상된 예측들을 생성한다. 디코딩된 픽처 버퍼(670)는 참조 픽처들로서 사용하기 위해 하나 이상의 이전에 재구성된 픽처들을 저장한다.
디코더(600) 내의 별도의 경로에서, 인트라 예측 예측기(645)는, 인트라 예측이 공간 예측 또는 BCIM 모드를 사용하는지(예컨대, 인트라 블록마다 또는 특정 예측 모드 방향들의 인트라 블록마다의 플래그 값), (인트라 공간 예측에 대한) 예측 모드 방향을 나타내는 정보와 같은, 인트라 예측 데이터(642)를 수신한다. 인트라 공간 예측의 경우, 현재 픽처의 재구성(638)의 값들을 사용하여, 예측 모드 데이터에 따라, 인트라 픽처 예측기(645)는 현재 픽처의 이웃하는 이전에 재구성된 샘플 값들로부터 현재 픽처의 현재 블록의 샘플 값들을 공간적으로 예측한다. BCIM 모드에 대해, 디코더는, 인덱스 값들에 대한 기본 색상 테이블을 사용하여 그리고 인덱스 맵의 요소들을 사용하여, 블록의 샘플 값들 중의 기본 색상들에 대한 인덱스 값들을 사용해 인트라 코딩된 블록을 재구성한다.
비BCIM 모드들에서, 인트라/인터 스위치는 주어진 블록에 대한 예측(658)으로서 사용하기 위해 움직임 보상된 예측 또는 인트라 픽처 예측의 값들을 선택한다. 예를 들어, HEVC 구문을 따를 때, 인트라/인터 스위치는 인트라 예측된 CU들 및 인터 예측된 CU들을 포함할 수 있는 픽처의 CU에 대해 인코딩된 구문 요소에 기초하여 제어될 수 있다. 디코더(600)는 예측(658)을 재구성된 잔차 값들과 결합시켜 비디오 신호로부터의 콘텐츠의 재구성(638)을 생성한다.
잔차를 재구성하기 위해, 비BCIM 모드들에 대해, 스케일러/역변환기(635)는 양자화된 변환 계수 데이터(632)를 수신하고 처리한다. 스케일러/역변환기(635)에서, 스케일러/역양자화기는 양자화된 변환 계수들에 대해 역스케일링 및 역양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차들 또는 샘플 값들의 블록들을 생성한다. 예를 들어, 역 주파수 변환기는 주파수 변환 계수들에 역 블록 변환을 적용하여, 샘플 값 데이터 또는 예측 잔차 데이터를 생성한다. 역 주파수 변환은 역 DCT, 그의 정수 근사화, 또는 다른 유형의 역 주파수 변환일 수 있다.
인트라 픽처 예측의 경우, 재구성(638)의 값들은 인트라 픽처 예측기(645)에 피드백될 수 있다. 인터 픽처 예측의 경우, 재구성(638)의 값들이 추가로 필터링될 수 있다. 병합기/필터(들)(665)에서, 디코더(600)는 상이한 타일들로부터의 콘텐츠를 픽처의 재구성된 버전으로 병합한다. 디코더(600)는, 프레임들에서의 경계들에 걸쳐 불연속들을 적응적으로 평활화하기 위해, 필터 제어 데이터(662) 및 필터 적응에 대한 규칙들에 따라 블록화 제거 필터링 및 SAO 필터링을 선택적으로 수행한다. 디코더(600)의 설정 또는 인코딩된 비트스트림 내의 구문 표시에 따라, 타일 경계들이 선택적으로 필터링되거나 전혀 필터링되지 않을 수 있다. 디코딩된 픽처 버퍼(670)는 차후의 움직임 보상된 예측에서 사용하기 위해 재구성된 현재 픽처를 버퍼링한다.
디코더(600)는 또한 후처리 블록화 제거 필터(post-processing deblock filter)를 포함한다. 후처리 블록화 제거 필터는, 선택적으로, 재구성된 픽처들에서의 불연속들을 평활화한다. 다른 필터링[링잉 제거 필터링(de-ring filtering) 등]이 또한 후처리 필터링의 일부로서 적용될 수 있다.
구현 및 원하는 압축 해제 유형에 따라, 디코더의 모듈들이 추가되고, 생략되며, 다수의 모듈들로 분할되고, 다른 모듈들과 결합되며, 그리고/또는 유사한 모듈들로 대체될 수 있다. 대안의 실시예들에서, 상이한 모듈들 및/또는 모듈들의 다른 구성들을 갖는 디코더들은 기술된 기법들 중 하나 이상을 수행한다. 디코더의 구체적인 실시예들은 전형적으로 디코더(600)의 변형 또는 보완된 버전을 사용한다. 디코더(600) 내의 모듈들 간의 도시된 관계들은 디코더에서의 정보의 일반적인 흐름을 나타내고; 간단함을 위해, 다른 관계들은 도시되어 있지 않다.
VII. 기본 색상 인덱스 맵 모드에 대한 혁신
이 섹션은 기본 색상 인덱스 맵(BCIM) 모드에 대한 다양한 혁신들을 제시한다. 혁신들 중 일부는 BCIM 모드에서 변환 계수들 또는 인덱스 맵 데이터 중 어느 하나에 대한 계수 코딩 구문 구조의 재사용에 관한 것인 반면, 다른 혁신들은 BCIM 모드에서 인덱스 값들의 매핑 또는 예측에 관한 것이다. 또 다른 혁신들은 BCIM 모드에서의 예외 값들의 처리에 관한 것이다. 이 혁신들은 인코딩 및 디코딩의 레이트 왜곡 성능 및/또는 계산 효율의 면에서 보다 효과적인 BCIM 모드를 용이하게 할 수 있다. 상세하게는, BCIM 모드를 사용하는 것은 화면 포착 콘텐츠와 같은 특정의 "인위적으로" 생성된 비디오 콘텐츠를 인코딩할 때 레이트 왜곡 성능을 향상시킬 수 있다. 화면 포착 콘텐츠는 전형적으로 반복된 구조들(예컨대, 그래픽, 텍스트 문자)을 포함하며, 이는 인트라 BC 예측(intra BC prediction)이 성능을 향상시킬 기회들을 제공한다. 화면 포착 콘텐츠는 보통 높은 크로마 샘플링 분해능을 갖는 포맷(예컨대, YUV 4:4:4 또는 RGB 4:4:4)으로 인코딩되지만, 보다 낮은 크로마 샘플링 분해능을 갖는 포맷(예컨대, YUV 4:2:0)으로도 인코딩될 수 있다.
A. 기본 색상 인덱스 맵 모드 - 서론.
BCIM 모드에서, 비디오 인코더 또는 영상 인코더는 기본 색상들을 나타내는 인덱스 값들을 사용하여 샘플 값들을 인코딩한다. 인덱스 값들 각각은 샘플 값들 중의 상이한 값("기본 색상")과 연관되어 있다. 인코딩 동안, 샘플 값들이 대응하는 인덱스 값들로 대체된다. 인코더는 인덱스 값들 및 대응하는 기본 색상들의 테이블("기본 색상 테이블")은 물론 샘플 값들을 나타내는 인덱스 값들의 배열("인덱스 맵")을 인코딩하고 신호한다. 비디오 디코더 또는 영상 디코더는 인덱스 값들 및 기본 색상들의 테이블을 수신하고 디코딩한다. 그 기본 색상 테이블을 사용하여, 디코더는 인덱스 맵의 인덱스 값들을 원래의 샘플 값들에 대한 기본 색상들로 대체한다.
도 7은 샘플 값들(s)의 블록(710)을 차원 i, j(단, 0 ≤ i ≤ 7이고 0 ≤j ≤ 7임)를 갖는 2차원 배열로 나타내고 있다. 도 7에서, 샘플 값들(s)은 화면 포착 콘텐츠에 대한 세기 또는 밝기 값들을 나타낸다. 샘플 값들(s)은 균일한 값들 및 강한 패턴들의 섹션들을 포함한다. 블록(710)은 샘플 값들(26, 85, 41, 127, 168 및 200)을 포함한다.
인코더는 인덱스 값들을 대응하는 기본 색상들에 할당하는 기본 색상 테이블(720)을 생성한다. 도 7의 예에서, 인덱스 값 0은 샘플 값 200에 할당되고, 인덱스 값 1은 샘플 값 168에 할당되며, 기타 등등이다. 인코더는, 보다 흔한 샘플 값들은 보다 낮은 인덱스 값들을 갖고 덜 흔한 샘플 값들은 보다 높은 인덱스 값들을 갖도록, 픽처에서의 발생 가능성(likelihood of occurrence)에 따라 인덱스 값들을 기본 색상들에 할당할 수 있고, 이 결과 보다 낮은 인덱스 값들이 보다 적은 비트들로 표현된다면 보다 효율적인 코딩으로 되는 경향이 있다. 대안적으로, 인코더는, 인덱스 맵의 인덱스 값들 간의 중복성(redundancy)을 이용하기 위해 예측과 같은 나중의 프로세스들에 의존하여, 블록이 스캔될 때 출현의 순서에 따라 인덱스 값들을 기본 색상들에 할당할 수 있다. 기본 색상 테이블(720)은 룩업 테이블(look-up table) 또는 다른 데이터 구조로서 구현될 수 있다.
도 7은 샘플 값들(s)이 대응하는 인덱스 값들(n)로 대체되는 블록(730)을 나타내고 있다. 샘플 값들을 인덱스 값들로 대체하는 프로세스는 무손실(lossless)이다. 대안적으로, 손실 압축 변형에서는, 정확하게 일치하는 것이 없는 경우, 샘플 값이 샘플 값에 가장 가까운 기본 색상을 나타내는 인덱스 값으로 대체될 수 있다. 이것은 기본 색상 테이블(720)의 크기를 감소시킬 수 있지만, 또한 지각 가능한 왜곡을 유입시킬 수 있다. 인덱스 값들로 표현되지 않는 샘플 값들(소위 예외 값들)을 처리하는 다른 접근법이 이하에서 기술된다.
인코더는 기본 색상 테이블(720)은 물론, 인덱스 값들(n)의 블록(730)을 나타내는 요소들을 갖는 인덱스 맵을 인코딩하여 출력한다. 예를 들어, 인코더는, 이하에서 기술되는 바와 같이, 블록(730)의 요소들을 표현하는 계수 코딩 구문 구조를 사용한다. 인코딩의 일부로서, 블록(730)에 대한 인덱스 값들(n)이 추가의 매핑 동작들 및/또는 예측에 의해 처리될 수 있다.
디코딩 동안, 디코더는 기본 색상 테이블(720) 및 인덱스 맵에 대한 데이터를 수신하여 디코딩한다. 예를 들어, 디코더는, 이하에서 기술되는 바와 같이, 계수 코딩 구문 구조로부터 블록(730)의 요소들을 디코딩한다. 디코딩의 일부로서, 블록(730)에 대한 인덱스 값들(n)이 추가의 매핑 동작들 및/또는 예측에 의해 처리될 수 있다. 디코더는 이어서, 도 7에 예시된 바와 같이, 기본 색상 테이블(720)을 사용하여 매핑 프로세스의 역을 행한다.
도 7의 예에서, 인코더는 8x8 블록의 샘플 값들에 대한 기본 색상 테이블(720)을 생성한다. 대안적으로, 그 블록이 다른 크기(예컨대, 4x4, 16x16, 32x32 또는 64x64)를 갖는다. 보다 일반적으로, 그 블록이 m x n 블록이고, 여기서 m 및 n은 동일한 값을 갖거나 상이한 값들을 가질 수 있다. 또는, 인코더는 슬라이스, 타일, 픽처 전체, 일군의 픽처들, 또는 비디오 시퀀스의 샘플 값들에 대한 기본 색상 매핑을 생성할 수 있다.
B. 계수 코딩 구문 구조의 재사용.
일부 예시적인 구현들에서, 비디오 인코더 또는 영상 인코더는 변환 계수 정보를 신호하기 위해 통상적으로 사용되는 구문 구조를, 그 대신에 BCIM 모드 데이터를 신호하기 위해, 사용한다. 상세하게는, 인코더는 BCIM 모드에서 인덱스 맵 정보를 신호하기 위해 계수 코딩 구문 구조를 재사용한다.
도 8은 인코딩 동안 이 접근법의 프로세스 흐름(800)을 나타낸 것이다. 인코더는 공간 영역 값들의 블록(810)을 수신한다. 공간 영역 값들(810)은 샘플 값들일 수 있다. 또는, 공간 영역 값들(810)은 인터 픽처 예측 또는 인트라 픽처 예측 후의 예측 잔차들일 수 있다. 인코더는 BCIM 모드에서 인코딩 동작들을 적용하거나 비BCIM 모드에서 동작들을 적용할 수 있다(양 모드에서 동일한 계수 코딩 구문 구조를 사용함).
BCIM 모드의 경우, 인코더는 공간 영역 값들(810)(예컨대, 샘플 값들)을 인덱스 값들(830)에 매핑(812)하여, 공간 영역 값들(810)을 대응하는 인덱스 값들(830)로 대체한다. 인코더는 또한, 예를 들어, 다음 섹션에서 기술되는 바와 같이, 인덱스 값들을 인덱스 맵에 대한 패킹된 인덱스 값들(840)에 매핑(832)한다. BCIM 모드에서의 매핑 동작들(812, 832)은 (일부 구현들에서, 예외 값들의 인코딩을 제외하고) 양자화 또는 변환 동작들을 포함하지 않는다. 인코더는, 인덱스 맵의 패킹된 인덱스 값들(840)을 신호하는 데 계수 코딩 구문 구조(890)를 사용하여, 기본 색상 테이블 및 인덱스 맵의 요소들을 인코딩(842)한다.
비BCIM 모드의 경우, 인코더는 공간 영역 값들(810)(예컨대, 잔차 값들)에 주파수 변환을 적용(814)하여, 변환 계수들(860)을 생성하고, 인코더는 변환 계수들(860)을 양자화(862)한다. 대안적으로, 변환 및/또는 양자화가 생략된다. 양자화된 변환 계수들(870)은 이어서 계수 코딩 구문 구조(890)를 사용하여 인코딩된다.
HEVC 구문을 따르는 일부 예시적인 구현들에서, 계수 코딩 구문 구조는 residual_coding 구문 구조이다. 예컨대, JCTVC-N1005의 섹션 7.3.8.11 및 섹션 7.4.9.11을 참조하기 바란다. BCIM 모드에서, 인코더는 인덱스 맵의 요소들(예컨대, 이하에서 기술되는 바와 같은, 인덱스 값들, 패킹된 인덱스 값들, 인덱스 잔차 값들, 또는 패킹된 인덱스 잔차 값들)을, 이들이 양자화된 변환 계수들인 것처럼, 처리한다. 구체적으로는, 인코더는, 4 블록, 8x8 블록, 16x16 블록 또는 32x32 블록일 수 있는, 블록에서의 마지막 영이 아닌 계수의 위치를 신호한다. 블록 내의 각각의 4x4 값 그룹에 대해, 인코더는 4x4 그룹이 적어도 하나의 영이 아닌 계수를 갖는지를 나타내는 플래그를 신호한다. 적어도 하나의 영이 아닌 계수를 가지는 4x4 그룹에 대해, 인코더는 어느 계수들이 영이 아닌 값들을 갖는지를 나타내는 플래그들을 신호하고, 이어서 영이 아닌 값들을 갖는 계수들에 대한 레벨 정보 및 (대부분의 경우에) 부호 정보를 신호한다. 인코더는 잔차 코딩 구문 구조의 다양한 요소들을 인코딩하기 위해 CABAC를 사용한다. 대안적으로, 다른 계수 코딩 구문 구조가 사용된다. 예를 들어, H.264 표준, VC-1 표준 또는 다른 표준 또는 독점적 포맷의 구문을 따르는 계수 코딩 구문 구조가 사용될 수 있다.
도 9는 디코딩 동안 이 접근법의 프로세스 흐름(900)을 나타낸 것이다. 디코더는 계수 코딩 구문 구조(990)를 수신한다. 디코더는 BCIM 모드에서 동작들을 적용하거나 비BCIM 모드에서 동작들을 적용할 수 있다(양 모드에서 동일한 계수 코딩 구문 구조를 사용함).
BCIM 모드의 경우, 디코더는 기본 색상 테이블을 디코딩(942)하고, 계수 코딩 구문 구조(990)를 사용하여, 또한 인덱스 맵의 요소들을 디코딩(942)한다. 이것은 인덱스 맵에 대한 패킹된 인덱스 값들(940)을 생성한다. 디코더는, 예를 들어, 다음 섹션에서 기술되는 바와 같이, 패킹된 인덱스 값들(940)을 인덱스 맵에 대한 인덱스 값들(930)에 매핑(932)한다. 인코더는 이어서 인덱스 값들(930)을 블록에 대한 공간 영역 값들(910)(예컨대, 샘플 값들)에 매핑(912)한다. BCIM 모드에서의 매핑 동작들(912, 932)은 (일부 구현들에서, 예외 값들의 디코딩을 제외하고) 역양자화 또는 역변환 동작들을 포함하지 않는다.
비BCIM 모드의 경우, 디코더는 계수 코딩 구문 구조(990)를 사용하여 신호된, 양자화된 변환 계수들(970)을 디코딩(972)한다. 디코더는 양자화된 변환 계수들을 역양자화(962)하고, 이어서 공간 영역 값들(910)(예컨대, 예측 잔차들)을 재구성하기 위해 역 주파수 변환을 적용(914)할 수 있다. 대안적으로, 역양자화 및/또는 역변환이 생략된다. 디코더는 이어서 인터 픽처 예측 또는 인트라 픽처 예측(도시 생략)을 수행하고 재구성된 잔차 값들을 예측된 값들(도시 생략)과 결합시킬 수 있다.
도 10은 인덱스 맵의 요소들 또는 변환 계수들을 선택적으로 표현하는 계수 코딩 구문 구조를 사용하는 인코딩을 위한 일반화된 기법(1000)을 나타낸 것이다. 기법(1000)은 도 3 또는 도 5a 및 도 5b를 참조하여 기술된 바와 같은 인코더에 의해 또는 다른 인코더에 의해 수행될 수 있다.
인코더는, 블록에 대한 인덱스 맵의 요소들 또는 블록에 대한 변환 계수들을 선택적으로 표현하는 블록에 대한 계수 코딩 구문 구조를 사용하여, 데이터를 인코딩(1010)한다. 예를 들어, 계수 코딩 구조가 비BCIM 모드에서 변환 계수들에 대해 사용되는 경우, 인코더는 (a) 블록에 대한 잔차 값들을 계산하고, (b) 변환 계수들을 생성하기 위해 잔차 값들에 대해 주파수 변환을 수행하며, (c) 변환 계수들을 양자화하며, (d) 얻어진 값들을 계수 코딩 구문 구조로 인코딩한다. 또는, 계수 코딩 구조가 BCIM 모드에서 인덱스 맵에 대해 사용되는 경우, 인코더는 (a) 블록에 대한 샘플 값들을 인덱스 값들에 매핑하고 - 인덱스 값들 각각은 기본 색상을 나타냄 -, (b) 인덱스 값들을 패킹된 인덱스 값들 또는 패킹된 인덱스 잔차 값들에 매핑하며, (c) 얻어진 값들을 계수 코딩 구문 구조로 인코딩한다.
BCIM 모드의 경우, 인덱스 맵은 블록에 대한 패킹된 인덱스 값들을 포함할 수 있고, 여기서 패킹된 인덱스 값들 각각은 기본 색상을 나타내는 인덱스 값이고 계수 코딩 구문 구조 내에 패킹된다. 또는 인덱스 맵은 블록에 대한 패킹된 인덱스 잔차 값들을 포함할 수 있고, 여기서 패킹된 인덱스 잔차 값들 각각은 기본 색상을 나타내고 계수 코딩 구문 구조 내에 패킹된다. 패킹된 인덱스 잔차 값은 인덱스 값과 예측된 인덱스 값 사이의 차이에 기초한 인덱스 잔차 값일 수 있거나, 패킹된 인덱스 잔차 값은 패킹된 인덱스 값과 예측된 패킹된 인덱스 값 사이의 차이에 기초할 수 있다. 인덱스 맵은 또한 이하에서 기술되는 바와 같이 처리될 수 있는, 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 포함할 수 있다.
인코더는 인코딩된 데이터를 출력(1020)한다. 예를 들어, HEVC 구문을 따르는 구현들에 대해, 인코딩된 데이터는 인덱스 맵의 요소들 또는 변환 계수들에 대한 잔차 코딩 구문 구조를 포함할 수 있다. 대안적으로, 인코딩된 데이터가 어떤 다른 방식으로 포맷팅된다. 인코더는 다른 블록에 대해 기법(1000)을 반복할 수 있다.
도 11은 인덱스 맵의 요소들 또는 변환 계수들을 선택적으로 표현하는 계수 코딩 구문 구조를 사용하는 디코딩을 위한 일반화된 기법(1100)을 나타낸 것이다. 기법(1100)은 도 4 또는 도 6을 참조하여 기술된 바와 같은 디코더에 의해 또는 다른 디코더에 의해 수행될 수 있다.
디코더는 인코딩된 데이터를 수신(1110)한다. 예를 들어, HEVC 구문을 따르는 구현들에 대해, 인코딩된 데이터는 인덱스 맵의 요소들 또는 변환 계수들에 대한 잔차 코딩 구문 구조를 포함할 수 있다. 대안적으로, 인코딩된 데이터가 어떤 다른 방식으로 포맷팅된다.
디코더는, 블록에 대한 인덱스 맵의 요소들 또는 블록에 대한 변환 계수들을 선택적으로 표현하는 블록에 대한 계수 코딩 구문 구조를 사용하여, 인코딩된 데이터를 디코딩(1120)한다. 예를 들어, 계수 코딩 구조가 비BCIM 모드에서 계수들을 변환하는 데 사용되는 경우, 디코더는 (a) 계수 코딩 구문 구조로부터 변환 계수들에 대한 값들을 디코딩하고, (b) 변환 계수들을 역양자화하며, (c) 블록에 대한 잔차 값들을 생성하기 위해 변환 계수들에 대해 역 주파수 변환을 수행하고, (d) 블록에 대한 샘플 값들을 재구성하기 위해 잔차 값들을 예측 값들과 결합시킨다. 또는, 계수 코딩 구조가 BCIM 모드에서 인덱스 맵에 대해 사용되는 경우, 디코더는 (a) 계수 코딩 구문 구조로부터 인덱스 맵에 대한 값들을 디코딩하고, (a) 패킹된 인덱스 값들 또는 패킹된 인덱스 잔차 값들을 인덱스 값들에 매핑하며 - 인덱스 값들 각각은 기본 색상을 나타냄 -, (b) 인덱스 값들을 블록에 대한 샘플 값들에 매핑한다.
BCIM 모드의 경우, 인덱스 맵은 블록에 대한 패킹된 인덱스 값들을 포함할 수 있고, 여기서 패킹된 인덱스 값들 각각은 기본 색상을 나타내는 인덱스 값이고 계수 코딩 구문 구조 내에 패킹된다. 또는 인덱스 맵은 블록에 대한 패킹된 인덱스 잔차 값들을 포함할 수 있고, 여기서 패킹된 인덱스 잔차 값들 각각은 기본 색상을 나타내고 계수 코딩 구문 구조 내에 패킹된다. 패킹된 인덱스 잔차 값은 인덱스 값과 예측된 인덱스 값 사이의 차이에 기초한 인덱스 잔차 값일 수 있거나, 패킹된 인덱스 잔차 값은 패킹된 인덱스 값과 예측된 패킹된 인덱스 값 사이의 차이에 기초할 수 있다. 인덱스 맵은 또한 이하에서 기술되는 바와 같이 처리될 수 있는, 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 포함할 수 있다.
디코더는 다른 블록에 대해 기법(1100)을 반복할 수 있다.
도 12는 인덱스 맵의 요소들 또는 변환 계수들을 선택적으로 표현하는 계수 코딩 구문 구조를 사용하는 디코딩을 위한 보다 구체적인 예시적인 기법(1200)을 나타낸 것이다. 기법(1200)은 도 4 또는 도 6을 참조하여 기술된 바와 같은 디코더에 의해 또는 다른 디코더에 의해 수행될 수 있다.
디코더는 블록에 대한 계수 코딩 구문 구조를 수신(1210)한다. 예를 들어, HEVC 구문을 따르는 구현들에 대해, 계수 코딩 구문 구조는 residual_coding 구문 구조이다. 대안적으로, 계수 코딩 구문 구조가 어떤 다른 방식으로 구성된다.
디코더는 블록의 모드가 BCIM인지를 검사(1220)한다. 예를 들어, 디코더는 블록에 대한 하나 이상의 구문 요소들의 값을 검사한다. HEVC 구문을 따르는 구현들에 대해, PU에 대해 블록이 BCIM 모드 블록인지를 나타내는 구문 요소(들)가 신호될 수 있다. 대안적으로, CU, CB, PB, TU 또는 TB에 대해 구문 요소(들)이 신호된다.
블록이 BCIM 블록이면, 디코더는 블록에 대한 계수 코딩 구조로부터 인덱스 맵의 요소들을 디코딩(1240)한다. 그렇지 않은 경우, 디코더는 블록에 대한 계수 코딩 구문 구조로부터 변환 계수들을 디코딩(1230)한다. 예를 들어, 디코더는 도 9 또는 도 11을 참조하여 기술되는 바와 같은 동작들을 수행한다.
디코더는 다음 블록을 계속할지 여부를 검사(1250)한다. 예인 경우, 디코더는 다음 블록에 대한 계수 코딩 구문 구조를 수신(1210)한다.
C. 인덱스 값들과 패킹된 인덱스 값들 간의 매핑.
인덱스 값들을 마치 변환 계수들인 것처럼 신호하기 위해, 인코더는 인덱스 값들(n)을 패킹된 인덱스 값들(npacked)에 매핑한다. 디코딩 동안, 디코더는 패킹된 인덱스 값들(npacked)을 다시 인덱스 값들(n)에 매핑한다. 인코더 및 디코더는 인덱스 값들(n)과 패킹된 인덱스 값들(npacked) 간에 매핑할 때 다양한 전략들을 따를 수 있다.
예를 들어, 인코더는 단순히 인덱스 값을 패킹된 인덱스 값으로서 사용할 수 있다. 즉, 인코딩 동안 npacked = n이고, 디코딩 동안 n = npacked이다. 그의 간단함 이외에, 이 접근법의 하나의 장점은, 패킹된 인덱스 값들(npacked)이 항상 음이 아니기 때문에, 패킹된 인덱스 값들에 대한 부호 값들이 신호되는 인코딩된 데이터로부터 생략될 수 있다는 것이다.
제2 예시적인 접근법으로서, 인코더는 다음과 같이 인덱스 값(n)을 패킹된 인덱스 값(npacked)에 매핑할 수 있다.
n%2이 0인 경우, npacked = -(n/2)이고;
그렇지 않은 경우, npacked = (n+1)/2이다.
여기서 %는 MOD 연산자를 나타내며 따라서 x%y는 x를 y로 나눌 때 나머지이고, /는 결과를 0 쪽으로 잘라내기하는 나눗셈을 나타낸다. 디코더는, 다음과 같이, 패킹된 인덱스 값(npacked)을 다시 인덱스 값(n)에 매핑할 수 있다.
npacked이 0 이하인 경우, n =-2*npacked이고;
그렇지 않은 경우, n = 2*npacked-1이다.
도 13은, 이 접근법에 따른, 인덱스 값들을 패킹된 인덱스 값들에 매핑하는 것 및 패킹된 인덱스 값들을 다시 인덱스 값들에 매핑하는 것을 나타낸 것이다. 블록(1310)에서의 인덱스 값들(n)이 인코딩 동안 블록(1330)에서의 패킹된 인덱스 값들(npacked)에 매핑되고, 디코딩 동안 블록(1310)에서의 인덱스 값들(n)에 다시 매핑된다. 0부터 5까지의 범위에 있는 인덱스 값들이 -2부터 3까지의 범위에 있는 패킹된 인덱스 값들에 매핑되고, 그리고 그 반대로 매핑된다.
제2 예시적인 접근법의 변형에서, 인코더는 짝수 인덱스 값들을 음이 아닌 숫자들에 매핑하고, 홀수 숫자들을 음의 값들에 매핑할 수 있으며, 디코더는 그 매핑을 반대로 한다. 인코딩 동안의 매핑에 대해:
n%2이 0인 경우, npacked = (n/2)이고;
그렇지 않은 경우, npacked = -(n+1)/2이다.
디코딩에서:
npacked이 0 이상인 경우, n =2*npacked이고;
그렇지 않은 경우, n = -2*npacked-1이다.
제3 예시적인 접근법으로서, 상이한 컬러 성분들(예컨대, YUV 4:4:4 포맷에서 비디오에 대한 루마 및 크로마 성분들)에 대한 인덱스 값들이 픽셀에 대한 단일의 패킹된 인덱스 값에 매핑될 수 있다. 예를 들어, 루마 샘플은 루마 인덱스 값(ny)에 매핑되고, 2 개의 대응하는 크로마 샘플들은 2 개의 크로마 인덱스 값들(nu 및 nv)에 매핑된다. 인덱스 값들(ny, nu 및 nv)은 이어서 단일의 패킹된 인덱스 값에 매핑된다. 인덱스 값들(ny, nu 및 nv) 각각을 표현하는 데 사용되는 비트 수가 nbits인 경우, 단일의 패킹된 인덱스 값(npacked,combined)(3* nbits 비트를 가짐)이 다음과 같이 결정될 수 있다.
npacked,combined = ny << (2*nbits) + nu << nbits + nv.
여기서 <<는 왼쪽 비트 시프트 연산(left bit shift operation)을 나타낸다. 디코딩의 경우, 인덱스 값들(ny, nu 및 nv)은, 다음과 같이, 패킹된 인덱스 값(npacked,combined)의 해당 비트들의 값들을 식별하기 위해 비트 마스크 연산들 및 비트 시프트 연산들을 사용하여 재구성될 수 있다.
ny = npacked,combined >> (2*nbits)
nu = (npacked,combined >> nbits) & ((1 << nbits) - 1)
nv = npacked,combined & ((1 << nbits) - 1)
여기서 >>는 오른쪽 비트 시프트 연산(right bit shift operation)을 나타내고, &는 비트 단위 AND 연산(bitwise AND operation)을 나타낸다. 인덱스 값들(ny, nu 및 nv)의 순서가 인코딩 동안의 매핑 동작에서 변화될 수 있고, 디코딩 동안의 매핑 동작에 대해 그에 대응하는 변경들이 있을 수 있다. 또한, 인덱스 값들(ny, nu 및 nv)은 상이한 비트 수를 가질 수 있고, 인코딩 및 디코딩 동안의 매핑 동작들에 대해 대응하는 변경들이 있을 수 있다.
대안적으로, Y 성분에 대해 county 개의 기본 색상들이 있고, U 성분에 대해 countu 개의 기본 색상들이 있으며, V 성분에 대해 countv 개의 기본 색상들이 있는 경우, 다음과 같이 단일의 패킹된 인덱스 값이 결정될 수 있다.
npacked,combined = nv * (county * countu) + nu * county + ny.
디코딩의 경우, 인덱스 값들(ny, nu 및 nv)은 다음과 같이 재구성될 수 있다.
ny = npacked,combined % county
nu= (npacked,combined / county) % countu
nv = npacked,combined / (county * countu)
여기서 /는 결과를 0 쪽으로 잘라내기하는 나눗셈을 나타낸다. 다시 말하지만, 인덱스 값들(ny, nu 및 nv)의 순서가 변화될 수 있고, 어느 count 변수들이 사용되는지에 대해 대응하는 변경들이 있을 수 있다.
대안적으로, 인코더 및 디코더는 인덱스 값들(n)과 패킹된 인덱스 값들(npacked) 간에 매핑할 때 상이한 접근법을 사용한다.
도 14는 인코딩 동안의 기본 색상들에 대한 인덱스 값들의 매핑을 위한 기법(1400)을 나타낸 것이다. 기법(1400)은 도 3 또는 도 5a 및 도 5b를 참조하여 기술된 바와 같은 인코더에 의해 또는 다른 인코더에 의해 수행될 수 있다.
인코더는 샘플 값을 기본 색상에 대한 인덱스 값에 매핑(1410)한다. 예를 들어, 인코더는 루마 또는 크로마 샘플 값을 인덱스 값에 매핑하기 위해 앞서 기술된 바와 같은 기본 색상 테이블을 사용한다.
인코더는 이어서 인덱스 값을 계수 코딩 구문 구조에 대한 패킹된 인덱스 값의 적어도 일부에 매핑(1420)한다. 예를 들어, 인코더는, 예컨대, 앞서 기술된 제1 매핑 접근법에서와 같이, 패킹된 인덱스 값을 인덱스 값에 기초하여 설정한다. 또는, 다른 예로서, 인덱스 값이 짝수이면, 인코더는 패킹된 인덱스 값을 인덱스 값을 2로 나눈 것에 기초하여 설정하지만, 그렇지 않은 경우, 인코더는 (예컨대, 앞서 기술된 제2 매핑 접근법에서와 같이) 패킹된 인덱스 값을 인덱스 값에 1을 더하고 이어서 2로 나눈 것에 기초하여 설정한다. 또는, 다른 예로서, 인코더는, 예컨대, 앞서 기술된 제3 매핑 접근법에서와 같이, 패킹된 인덱스 값의 일부를 인덱스 값을 사용하여 설정하고, 여기서 패킹된 인덱스 값이 하나의 루마 인덱스 값 및 다수의 크로마 인덱스 값들에 기초하여 설정된다.
인코더는 이어서, 이하에서 기술되는 바와 같이, 패킹된 인덱스 잔차 값을 패킹된 인덱스 값 및 예측된 패킹된 인덱스 값에 기초하여 결정할 수 있다. 또는, 패킹된 인덱스 잔차 값들에 매핑되는 인덱스 값들이 인덱스 잔차 값들일 수 있다.
인코더는 다음 샘플 값을 계속할지 여부를 검사(1430)한다. 예인 경우, 인코더는 다음 샘플 값들을 다음 인덱스 값에 매핑(1410)한다. 인코더는 블록의 샘플 값들을 통해 래스터 스캔 패턴(raster scan pattern)으로 진행할 수 있다. 또는, 제3 접근법의 경우, 인코더는 루마 블록 및 크로마 블록들에서의 대응하는 위치들의 샘플 값들을 인덱스 값들에 매핑하고, 이어서 그 인덱스 값들을 패킹된 인덱스 값에 매핑할 수 있다.
도 15는 디코딩 동안 기본 색상들에 대한 인덱스 값들의 매핑을 위한 기법(1500)을 나타낸 것이다. 기법(1500)은 도 4 또는 도 6을 참조하여 기술된 바와 같은 디코더에 의해 또는 다른 디코더에 의해 수행될 수 있다.
디코더는 계수 코딩 구문 구조에 대한 패킹된 인덱스 값의 적어도 일부를 기본 색상에 대한 인덱스 값에 매핑(1510)한다. 예를 들어, 디코더는, 예컨대, 앞서 기술된 제1 매핑 접근법에서와 같이, 인덱스 값을 패킹된 인덱스 값에 기초하여 설정한다. 또는, 다른 예로서, 패킹된 인덱스 값이 0과 주어진 관계를 가지면, 디코더는 인덱스 값을 패킹된 인덱스 값 x 2에 기초하여 설정하지만, 그렇지 않은 경우, 디코더는 (예컨대, 앞서 기술된 제2 매핑 접근법에서와 같이) 인덱스 값을 패킹된 인덱스 값 x 2 -1에 기초하여 설정한다. 또는, 다른 예로서, 디코더는, 예컨대, 앞서 기술된 제3 매핑 접근법에서와 같이, 인덱스 값을 패킹된 인덱스 값의 일부를 사용하여 설정하고, 여기서 하나의 루마 인덱스 값 및 다수의 크로마 인덱스 값들이 패킹된 인덱스 값에 기초하여 설정된다.
디코더는 인덱스 값을 샘플 값에 매핑(1520)한다. 예를 들어, 디코더는 루마 또는 크로마 인덱스 값을 샘플 값에 매핑하기 위해 앞서 기술된 바와 같은 기본 색상 테이블을 사용한다.
매핑 동작들 이전에, 디코더는 주어진 패킹된 인덱스 값을 예측하고, 이어서 패킹된 인덱스 잔차 값을 예측된 패킹된 인덱스 값과 결합시켜 패킹된 인덱스 값을 재구성할 수 있다. 또는, 재구성되는 인덱스 값들이 인덱스 잔차 값들일 수 있다.
디코더는 다음 인덱스 값을 계속할지 여부를 검사(1530)한다. 예인 경우, 디코더는 계수 코딩 구문 구조에 대한 패킹된 인덱스 값의 적어도 일부를 기본 색상에 대한 다음 인덱스 값에 매핑(1510)한다. 디코더는 블록에 대한 인덱스 값들을 통해 래스터 스캔 패턴으로 진행할 수 있다. 또는, 제3 접근법의 경우, 디코더는 패킹된 인덱스 값을 루마 블록 및 크로마 블록들에서의 대응하는 위치들에 대한 다수의 인덱스 값들에 매핑하고, 이어서 그 인덱스 값들을 샘플 값들에 매핑할 수 있다.
D. 인덱스 맵의 요소들의 예측.
인코더 및 디코더는 또한 인덱스 맵의 요소들의 예측을 사용할 수 있다. 예측이 잘 동작할 때, 인덱스 잔차 값들(또는 패킹된 인덱스 잔차 값들) 중 다수가 0의 값을 갖는다. 0에 보다 가까운 값들이 보다 적은 비트들을 사용해 인코딩되기 때문에, 예측은 전형적인 엔트로피 코딩 방식들에서 코딩 효율을 향상시킨다.
도 16은 차원 i, j(단, 0 ≤ i ≤ 7이고 0 ≤ j ≤ 7임)를 갖는 인덱스 값들(n)의 블록(1610)을 나타내고 있다. 대안적으로, 예측이 다른 크기(예컨대, 4x4, 16x16 또는 32x32)의 블록에 적용된다. 인코딩 동안, 인코더는, 인덱스 값별로, 하나 이상의 이웃하는 인덱스 값들로부터 주어진 인덱스 값(n(i,j))을 예측한다. 예측의 방향이 수평, 수직, 오른쪽 아래 방향으로의 대각, 또는 어떤 다른 방향일 수 있다. 도 16에서, 예를 들어, 예측의 방향은 수직이고, 인덱스 잔차 값들(nresid)의 블록(1630)을 생성한다. 인덱스 값(n(i,j))은 동일한 열에 있는 이전의 인덱스 값(n(i,j-1))을 사용하여 예측된다. 인덱스 잔차 값은 단순히 2 개의 값들 사이의 차이이다. nresid(i,j) = n(i,j) - n(i,j-1)이다. 이와 유사하게, 수평 예측의 경우, 인덱스 잔차 값은 인덱스 값과 예측된 인덱스 값인 그의 왼쪽의 이웃하는 인덱스 값 사이의 차이이다: nresid(i,j) = n(i,j) - n(i-1,j). 45도 아래쪽 각도에서의 대각 예측의 경우, 인덱스 잔차 값이 nresid(i,j) = n(i,j) - (n(i,j-1)+ n(i-1,j)) >> 1로서 계산될 수 있거나, nresid(i,j) = n(i,j) - n(i-1,j-1)로서 계산될 수 있다. 다른 대각 방향들에서의 예측은 이와 유사하게, 예측의 각도에 따라, 이웃하는 인덱스 값들을 블렌딩(blend)할 수 있다. 블록의 에지에서의 예측의 경우(예컨대, i < 0 및/또는 j < 0), 이웃하는 인덱스 값은 0의 값을 갖거나 기본 값(예컨대, 인덱스 값들의 개수를 2로 나눈 것)을 부여받을 수 있다. 디코딩 동안, 디코더는 (예측의 방향에 따라) 동일한 예측된 인덱스 값을 결정하고 예측된 인덱스 값을 인덱스 잔차 값과 결합시킨다. 수직 예측의 경우, n(i,j) = nresid(i,j) + n(i,j-1)이다. 수평 예측의 경우, n(i,j) = nresid(i,j) + n(i-1,j)이다. 45도 아래쪽 각도에서의 대각 예측의 경우, n(i,j) = nresid(i,j) + (n(i,j-1)+ n(i-1,j)) >> 1이거나, n(i,j) = nresid(i,j) + n(i-1,j-1)이다. 다른 대각 방향들에서의 예측은 이와 유사하게, 예측의 각도에 따라, 이웃하는 인덱스 값들을 블렌딩할 수 있다.
도 16에서, 인덱스 값들이 패킹된 인덱스 값들에 매핑되기 전에 예측이 적용된다. 대안적으로, 인덱스 값들이 패킹된 인덱스 값들에 매핑된 후에 예측이 적용된다.
도 17은 차원 i, j(단, 0 ≤ i ≤ 7이고 0 ≤ j ≤ 7임)를 갖는 패킹된 인덱스 값들(npacked)의 블록(1710)을 나타내고 있다. 대안적으로, 예측이 다른 크기(예컨대, 4x4, 16x16 또는 32x32)의 블록에 적용된다. 인코딩 동안, 인코더는, 패킹된 인덱스 값별로, 하나 이상의 이웃하는 패킹된 인덱스 값들로부터 주어진 패킹된 인덱스 값(npacked(i,j))을 예측한다. 예측의 방향이 수평, 수직, 오른쪽 아래 방향으로의 대각, 또는 어떤 다른 방향일 수 있다. 도 17에서, 예를 들어, 예측의 방향은 수직이고, 패킹된 인덱스 잔차 값들(npacked,resid)의 블록(1730)을 생성한다. 패킹된 인덱스 값(npacked(i,j))은 동일한 열에 있는 이전의 패킹된 인덱스 값(npacked(i,j-1))을 사용하여 예측된다. 패킹된 인덱스 잔차 값은 단순히 2 개의 값들 사이의 차이이다. npacked,resid(i,j) = npacked(i,j) - npacked(i,j-1)이다. 이와 유사하게, 수평 예측의 경우, 패킹된 인덱스 잔차 값은 패킹된 인덱스 값과 예측된 인덱스 값인 그의 왼쪽의 이웃하는 패킹된 인덱스 값 사이의 차이이다: npacked,resid(i,j) = npacked(i,j) - npacked(i-1,j). 45도 아래쪽 각도에서의 대각 예측의 경우, 패킹된 인덱스 잔차 값이 npacked,resid(i,j) = npacked(i,j) - (npacked(i, j-1)+ npacked(i-1,j)) >>1로서 계산될 수 있거나, npacked,resid(i,j) = npacked(i,j) - npacked(i-1,j-1)로서 계산될 수 있다. 다른 대각 방향들에서의 예측은 이와 유사하게, 예측의 각도에 따라, 이웃하는 패킹된 인덱스 값들을 블렌딩할 수 있다. 블록의 에지에서의 예측의 경우(예컨대, i < 0 및/또는 j < 0), 이웃하는 패킹된 인덱스 값은 0의 값을 갖거나 기본 값을 부여받을 수 있다. 디코딩 동안, 디코더는 (예측의 방향에 따라) 동일한 예측된 패킹된 인덱스 값을 결정하고 예측된 패킹된 인덱스 값을 패킹된 인덱스 잔차 값과 결합시킨다. 수직 예측의 경우, npacked(i,j) = npacked,resid(i,j) + npacked(i,j-1)이다. 수평 예측의 경우, npacked(i,j) = npacked,resid(i,j) + npacked(i-1,j)이다. 45도 아래쪽 각도에서의 대각 예측의 경우, npacked(i,j) = npacked,resid(i,j) + (npacked(i,j-1) + npacked(i-1,j)) >> 1이거나, npacked(i,j) = npacked,resid(i,j) + npacked(i-l,j-1)이다. 다른 대각 방향들에서의 예측은 이와 유사하게, 예측의 각도에 따라, 이웃하는 패킹된 인덱스 값들을 블렌딩할 수 있다.
예측의 선행 예들에서, 인코딩 동안에는 뺄셈 연산들이 사용되고, 디코딩 동안에는 덧셈 연산들이 사용된다. 대안적으로, 인코더 및 디코더가 예측에서 비트 단위 배타적 OR(XOR) 연산들을 사용할 수 있다.
패킹된 인덱스 값들이 예측될 때, 인코더는 패킹된 인덱스 잔차 값을 패킹된 인덱스 값 XOR 그의 예측된 패킹된 인덱스 값으로서 결정한다. 인덱스 값들이 예측될 때, 인코더는 인덱스 잔차 값을 인덱스 값 XOR 그의 예측된 인덱스 값으로서 결정한다. 잔차 값이 디코더로 신호된다. 예측된 값은 예측의 방향(예컨대, 수평, 수직, 대각)에 의존할 수 있다.
패킹된 인덱스 값들이 예측될 때, 디코더는 패킹된 인덱스 값을 그의 패킹된 인덱스 잔차 값 XOR 예측된 패킹된 인덱스 값으로서 결정한다. 인덱스 값들이 예측될 때, 디코더는 인덱스 값을 그의 인덱스 잔차 값 XOR 그의 예측된 인덱스 값으로서 결정한다. 다시 말하지만, 예측된 값은 예측의 방향(예컨대, 수평, 수직, 대각)에 의존할 수 있다.
도 18은 인코딩 및 디코딩 동안 XOR 연산들을 사용하는 예측을 나타내고 있다. 패킹된 인덱스 값은 7이고, 예측된 패킹된 인덱스 값(하나 이상의 이웃하는 패킹된 인덱스 값들에 기초함)은 6이다. 인코딩 동안, 인코더는 패킹된 인덱스 잔차가 1인 것으로 결정한다: 00000001 = 00000111 XOR 00000110. 디코딩 동안, 디코더는 패킹된 인덱스 잔차 값 및 예측된 패킹된 인덱스 값으로부터 패킹된 인덱스 값 7을 재구성한다: 00000111 = 00000001 XOR 00000110.
값, 예측된 값 및 잔차 값의 모든 비트들에 적용되는 대신에, 예측 동작들(뺄셈, XOR 또는 기타 어느 것이든 관계 없음)이 비트들의 서브셋에 적용될 수 있다. 예를 들어, XOR 연산이 인덱스 값 및 그의 예측된 인덱스 값의 최하위 p 개의 비트들에 적용될 수 있다. pmask 가 (1<<p)-1라고 가정한다. 인코더는 인덱스 잔차 값 nresid(i,j) = (n(i,j)>>p<<p) + (npredicted(i,j) & pmask) XOR (n(i,j) & pmask)을 결정하고, 여기서 npredicted(i,j)는, 예측의 방향에 따라, n(i,j-1), 또는 n(i-1,j) 또는 어떤 다른 예측된 값일 수 있다. 잔차 값이 디코더로 신호된다. 디코더는 인덱스 값 n(i,j) = (nresid(i,j)>>p<<p) + (nresid(i,j) & pmask) XOR (npredicted(i,j) & pmask)를 결정한다. 동일한 동작들이 예측된 패킹된 인덱스 값들에 적용될 수 있다. 부분 비트들에 대한 동작들이 값들의 최하위 비트들, 최상위 비트들 또는 중간 비트들에 적용될 수 있다. 예측 동작들의 적용을 받는 비트들은 연속적이거나 연속적이지 않을 수 있다.
HEVC 구문을 따르는 구현들에서, 인코더 및 디코더는 잔차 값들을 예측하기 위해 통상적으로 사용되는 코딩 도구를 그 대신에 인덱스 맵의 요소들을 예측하는 데 재사용할 수 있다. 상세하게는, 잔차 값들에 어떤 변환도 적용되지 않을 때(그러나 양자화가 적용될 수 있거나 그렇지 않을 수 있을 때), 인코더 및 디코더는 이웃하는 잔차 값들로부터 잔차 값들을 예측하기 위해 그 도구를 사용할 수 있다. 코딩 도구 및 그의 사용을 신호하기 위한 구문이 또한 인덱스 맵의 요소들에 적용될 수 있다.
도 19는 인코딩 동안의 인덱스 맵의 요소들의 예측을 위한 기법(1900)을 나타낸 것이다. 기법(1900)은 도 3 또는 도 5a 및 도 5b를 참조하여 기술된 바와 같은 인코더에 의해 또는 다른 인코더에 의해 수행될 수 있다.
인코더는 데이터를 인코딩(1910)하고, 상세하게는, 예측을 사용하여 블록에 대한 인덱스 맵의 요소들을 인코딩한다. 예를 들어, 인덱스 맵이 인덱스 잔차 값들을 포함할 때, 인코더는 기본 색상을 나타내는 인덱스 값을 예측하고, 이어서 인덱스 잔차 값을 인덱스 값 및 예측된 인덱스 값에 기초하여 결정한다. 또는, 인덱스 맵이 패킹된 인덱스 잔차 값들을 포함할 때, 인코더는 패킹된 인덱스 값을 예측하고(여기서 패킹된 인덱스 값은 기본 색상을 나타내는 인덱스 값이고 계수 코딩 구문 구조에 패킹됨), 이어서 패킹된 인덱스 잔차 값을 패킹된 인덱스 값 및 예측된 패킹된 인덱스 값에 기초하여 결정한다. 예측을 사용한 인코딩은 값들의 모든 비트들에 대한 또는 값들의 부분 비트들에 대한 뺄셈 연산, XOR 연산 또는 다른 연산들을 포함할 수 있다.
인코더는 인코딩된 데이터를 출력(1920)한다. 인코더는 다음 블록을 계속할지 여부를 검사(1930)한다. 예인 경우, 인코더는 계속하여 다음 블록에 대한 인덱스 맵의 요소들을 인코딩(1910)한다.
도 20은 디코딩 동안의 인덱스 맵의 요소들의 예측을 위한 기법(2000)을 나타낸 것이다. 기법(2000)은 도 4 또는 도 6을 참조하여 기술된 바와 같은 디코더에 의해 또는 다른 디코더에 의해 수행될 수 있다.
디코더는 인코딩된 데이터를 수신(2010)하고 인코딩된 데이터를 디코딩(2020)한다. 상세하게는, 디코더는 예측을 사용하여 블록에 대한 인덱스 맵의 요소들을 디코딩한다. 예를 들어, 인덱스 맵이 인덱스 잔차 값들을 포함할 때, 디코더는 기본 색상을 나타내는 인덱스 값을 예측하고, 이어서 인덱스 잔차 값과 예측된 인덱스 값을 결합시킨다. 또는, 인덱스 맵이 패킹된 인덱스 잔차 값들을 포함할 때, 디코더는 패킹된 인덱스 값을 예측하고(여기서 패킹된 인덱스 값은 기본 색상을 나타내는 인덱스 값이고 계수 코딩 구문 구조에 패킹됨), 이어서 패킹된 인덱스 잔차 값과 예측된 패킹된 인덱스 값을 결합시킨다. 예측을 사용한 디코딩은 값들의 모든 비트들에 대한 또는 값들의 부분 비트들에 대한 덧셈 연산, XOR 연산 또는 다른 연산들을 포함할 수 있다.
디코더는 다음 블록을 계속할지 여부를 검사(2030)한다. 예인 경우, 디코더는 계속하여 다음 블록에 대한 인코딩된 데이터를 수신(2010)한다.
E. 예외 값들의 처리.
BCIM 모드가 사용될 때, 기본 색상 테이블에서, 인코더 및 디코더는 인덱스 값들을 블록에서 사용되는 모든 상이한 샘플 값에 할당할 수 있다. 어떤 경우에, 이 결과, 신호하는 데 비효율적 기본 색상 테이블이 얻어질 수 있고, 일부 인덱스 값들이 아주 가끔 사용될 때 특히 그렇다. 특정의 기본 색상이 블록에서 드물게 나타날 때, 인덱스 값을 그 기본 색상에 할당할 가치가 없을 수 있다.
일부 예시적인 구현들에서, 인코더 및 디코더는 블록에서 드물게 나타나는 기본 색상들을 처리하기 위해 몇 가지 접근법들 중 임의의 것을 사용할 수 있다. 이 드문 기본 색상들 중 하나를 갖는 "예외" 값은 인덱스 값을 사용하여 인코딩 또는 디코딩되지 않는다.
하나의 접근법에서, 인코더가 예외 값을 식별할 때, 인코더는 기본 색상 테이블 내의 인덱스 값으로 표현되는 가장 가까운 기본 색상을 결정한다. 인코더는 예외 값을 표현하기 위해 가장 가까운 기본 색상에 대한 인덱스 값을 사용한다. 디코더는 기본 색상 테이블 내의 인덱스 값과 연관된 샘플 값으로서 예외 값을 재구성한다. 이 접근법은 일종의 손실 압축이고, 어떤 경우에, 상당한 왜곡을 야기할 수 있다.
다른 접근법에서, 인코더는 예외 값들을 샘플 값들로서 직접 신호하고, 샘플 값들이 양자화될 수 있다. 예를 들어, 인코더는, 매핑을 위해 사용되는 접근법에 의존하는, 기본 색상 테이블에 대해 가능한 가장 높은 패킹된 인덱스 값(h)을 결정한다. npacked = n일 때, 값 h는 npacked의 가장 높은 값이다. n의 홀수 값들이 npacked = (n+1)/2에 따라 매핑될 때, 값 h는 또다시 npacked의 가장 높은 값이다.
인코더는 예외 값을 e = s/q+h+1로서 표현하고, 여기서 q는 양자화 파라미터이고, /는 0 쪽으로 잘라내기하는 나눗셈을 나타낸다. 양자화가 적용되지 않는 경우, q=1이고, 나눗셈 연산이 생략될 수 있다. 디코더측에서, 패킹된 인덱스 값(npacked)이 h 이하인 경우, 디코더는, 앞서 기술된 바와 같이, 매핑 동작들 및 기본 색상 테이블을 사용하여 패킹된 인덱스 값(npacked)으로부터 샘플 값(s)을 디코딩한다. 그렇지만, 패킹된 인덱스 값이 h 초과인 경우, 패킹된 인덱스 값이 실제로 예외 값(e)이고, 샘플 값이 s" = (e-h-1)*q로서 재구성된다.
도 21a 및 도 21b는, 각각, 인코딩 및 디코딩 동안 BCIM 모드에 대한 예외 값들 및 인덱스 값들의 처리(2100)를 나타낸 것이다. 도 21a에서, 샘플 값들(s)의 블록(2110)은 기본 색상들(85, 41, 200, 168, 127, 26)에 대한 인덱스 값들로 표현되는 어떤 샘플 값들을 포함한다. 이 값들은 도 21a에 도시된 기본 색상 테이블을 사용하여 BCIM 모드에서 인코딩된다.
블록(2110)은 또한 블록에서 가끔 나오는 2 개의 샘플 값들을 포함하고, 따라서 기본 색상들에 대한 인덱스 값들로 표현되지 않는다. 이 2 개의 예외 값들(179 및 29)은 양자화 파라미터(q)(도 21a 및 도 21b에서 q = 4임) 및 가장 높은 패킹된 인덱스 값(h)(도 21a 및 도 21b에서 h = 3임)을 사용하여 인코딩된다. h의 값은 인덱스 값들의 범위에 의존한다. q의 값은 블록마다, 슬라이스마다, 타일마다, 픽처마다, 기타로 변할 수 있다. 패킹된 인덱스 값들 및 예외 값들(e)의 블록(2130)에 나타낸 바와 같이, 샘플 값 179는 예외 값 49 = (181/4) + 3 + 1으로서 인코딩되고, 샘플 값 29는 예외 값 11 = (29/4) + 3 + 1로서 인코딩된다.
도 21b에 도시된 바와 같이, 디코딩 동안, 3 초과의 임의의 패킹된 인덱스 값은 예외 값으로서 처리된다. 예외 값 49는 샘플 값 180 = (49 - 3 - 1)*4로서 재구성되고, 예외 값 11은 샘플 값 28 = (11 - 3 - 1)*4로서 재구성된다. 블록(2150)에서의 대부분의 값들은 도 21b에 도시된 매핑 동작들 및 기본 색상 테이블을 사용하여 BCIM 모드에서 디코딩된다.
도 22는 BCIM 모드에서 인덱스 값들 및 예외 값들을 사용하여 인코딩하기 위한 일반화된 기법(2200)을 나타낸 것이다. 기법(2200)은 도 3 또는 도 5a 및 도 5b를 참조하여 기술된 바와 같은 인코더에 의해 또는 다른 인코더에 의해 수행될 수 있다.
인코더는 각각이 기본 색상을 나타내는 하나 이상의 인덱스 값들 및 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 사용하여 블록에 대한 데이터를 인코딩(2210)한다. 예를 들어, 인코더는, 앞서 기술된 바와 같이, 패킹된 인덱스 값들 또는 패킹된 인덱스 잔차 값들을 사용하여 블록의 샘플 값들 중 일부를 인코딩한다. 인코더는 또한 샘플 값들 중 일부를 예외 값들로서 인코딩한다. 예를 들어, 인코더는 양자화 파라미터 및 가장 높은 패킹된 인덱스 값을 사용하여 샘플 값을 예외 값으로 대체한다.
인코더는 인코딩된 데이터를 출력(2220)한다. 인코더는 다음 블록을 계속할지 여부를 검사(2230)한다. 예인 경우, 인코더는 계속하여 다음 블록에 대한 데이터를 인코딩(2210)한다.
도 23은 BCIM 모드에서 인덱스 값들 및 예외 값들을 사용하여 디코딩하기 위한 기법(2300)을 나타낸 것이다. 기법(2300)은 도 4 또는 도 6을 참조하여 기술된 바와 같은 디코더에 의해 또는 다른 디코더에 의해 수행될 수 있다.
디코더는 인코딩된 데이터를 수신(2310)하고 인코딩된 데이터를 디코딩(2320)한다. 상세하게는, 디코더는 각각이 기본 색상을 나타내는 하나 이상의 인덱스 값들을 디코딩한다. 하나 이상의 인덱스 값들은 패킹된 인덱스 값들 또는 패킹된 인덱스 잔차 값들일 수 있다. 디코더는 또한 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 디코딩한다. 예를 들어, 예외 값들 중 하나에 대해, 디코더는 예외 값, 양자화 파라미터 및 가장 높은 패킹된 인덱스 값을 사용하여 샘플 값을 재구성한다.
디코더는 다음 블록을 계속할지 여부를 검사(2330)한다. 예인 경우, 디코더는 계속하여 다음 블록에 대한 인코딩된 데이터를 수신(2310)한다.
도 24는 BCIM 모드 블록의 디코딩 동안 인덱스 값들 및 예외 값들을 사용하기 위한 보다 구체적인 기법(2400)을 나타낸 것이다. 기법(2400)은 도 4 또는 도 6을 참조하여 기술된 바와 같은 디코더에 의해 또는 다른 디코더에 의해 수행될 수 있다.
블록의 패킹된 인덱스 값에 대해, 디코더는 그 값이 문턱값을 초과하는지 여부를 검사(2520)한다. 예를 들어, 문턱값은 패킹된 인덱스 값에 대한 가능한 가장 높은 값이다. 패킹된 인덱스 값이 문턱값을 초과하는 경우, 디코더는 그 값을 예외 값으로서 처리(2540)한다. 그렇지 않은 경우, 디코더는 매핑 동작들 및 기본 색상 테이블을 사용하여 그 값을 처리(2530)한다. 디코더는 이어서 블록 내의 다른 값을 계속할지 여부를 검사(2550)한다. 예인 경우, 디코더는 다음 값을 어떻게 디코딩할지를 검사(2520)한다.
전술한 예들에서, 문턱값은 가장 높은 패킹된 인덱스 잔차에 기초한다. 대안적으로, 패킹된 인덱스 잔차 값들이 사용될 때, 문턱값은, 패킹된 인덱스 값과 그의 예측된 패킹된 인덱스 값 사이의 가능한 가장 큰 차이에 의존하는, 가능한 가장 높은 패킹된 인덱스 잔차 값에 기초한다.
개시된 발명의 원리들이 적용될 수 있는 많은 가능한 실시예들을 바탕으로, 예시된 실시예들이 본 발명의 바람직한 예들에 불과하고 본 발명의 범주를 제한하는 것으로서 해석되어서는 안 된다는 것을 잘 알 것이다. 오히려, 본 발명의 범주는 이하의 청구범위에 의해 한정된다. 따라서, 이 청구범위의 범주 및 사상 내에 속하는 모든 것을 본 발명으로서 청구한다.

Claims (42)

  1. 비디오 인코더 또는 영상 인코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    블록에 대한 인덱스 맵(index map)의 요소들 또는 상기 블록에 대한 변환 계수들을 선택적으로 표현하는 상기 블록에 대한 계수 코딩 구문 구조(coefficient coding syntax structure)를 사용하는 것을 포함하는, 픽처(picture)에 대한 데이터를 인코딩하는 단계; 및
    상기 픽처에 대한 상기 인코딩된 데이터를 출력하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 계수 코딩 구조가 상기 인덱스 맵에 대해 사용되는 경우, 상기 인코딩하는 단계는 (a) 상기 블록에 대한 샘플 값들을 인덱스 값들에 매핑하는 단계 - 상기 인덱스 값들 각각은 기본 색상(base color)을 나타냄 -, 및 (b) 상기 인덱스 값들을 패킹된 인덱스 값(packed index value)들 또는 패킹된 인덱스 잔차 값(packed index residual value)들에 매핑하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 계수 코딩 구조가 상기 변환 계수들에 대해 사용되는 경우, 상기 인코딩하는 단계는 (a) 상기 블록에 대한 잔차 값들을 계산하는 단계, (b) 상기 변환 계수들을 생성하기 위해 상기 잔차 값들에 대해 주파수 변환을 수행하는 단계, 및 (c) 상기 변환 계수들을 양자화하는 단계를 포함하는, 방법.
  4. 비디오 디코더 또는 영상 디코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    픽처에 대한 인코딩된 데이터를 수신하는 단계; 및
    블록에 대한 인덱스 맵의 요소들 또는 상기 블록에 대한 변환 계수들을 선택적으로 표현하는 상기 블록에 대한 계수 코딩 구문 구조를 사용하는 것을 포함하는, 상기 인코딩된 데이터를 디코딩하는 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 계수 코딩 구조가 상기 인덱스 맵에 대해 사용되는 경우, 상기 디코딩하는 단계는 (a) 패킹된 인덱스 값들 또는 패킹된 인덱스 잔차 값들을 인덱스 값들에 매핑하는 단계 - 상기 인덱스 값들 각각은 기본 색상을 나타냄 -, 및 (b) 상기 인덱스 값들을 상기 블록에 대한 샘플 값들에 매핑하는 단계를 포함하는, 방법.
  6. 제4항에 있어서, 상기 계수 코딩 구조가 상기 변환 계수들에 대해 사용되는 경우, 상기 디코딩하는 단계는 (a) 변환 계수들을 역양자화하는 단계, (b) 상기 블록에 대한 잔차 값들을 생성하기 위해 상기 변환 계수들에 대해 역 주파수 변환을 수행하는 단계, 및 (c) 상기 블록에 대한 샘플 값들을 재구성하기 위해 상기 잔차 값들을 예측 값들과 결합시키는 단계를 포함하는, 방법.
  7. 제1항 또는 제4항에 있어서, 상기 인덱스 맵은 상기 블록에 대한 패킹된 인덱스 값들을 포함하고, 상기 패킹된 인덱스 값들 각각은 기본 색상을 나타내는 인덱스 값이고 상기 계수 코딩 구문 구조 내에 패킹되는, 방법.
  8. 제7항에 있어서, 상기 인덱스 맵은 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 추가로 포함하는, 방법.
  9. 제1항 또는 제4항에 있어서, 상기 인덱스 맵은 상기 블록에 대한 패킹된 인덱스 잔차 값들을 포함하고, 상기 패킹된 인덱스 잔차 값들 각각은 기본 색상을 나타내고 상기 계수 코딩 구문 구조 내에 패킹되는, 방법.
  10. 제9항에 있어서, 상기 패킹된 인덱스 잔차 값은 인덱스 값과 예측된 인덱스 값 사이의 차이에 기초한 인덱스 잔차 값인, 방법.
  11. 제9항에 있어서, 상기 패킹된 인덱스 잔차 값은 패킹된 인덱스 값과 예측된 패킹된 인덱스 값 사이의 차이에 기초하는, 방법.
  12. 제9항에 있어서, 상기 인덱스 맵은 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 추가로 포함하는, 방법.
  13. 비디오 인코더 또는 영상 인코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    샘플 값들을 기본 색상들에 대한 인덱스 값들에 매핑하는 단계; 및
    상기 인덱스 값들을 계수 코딩 구문 구조에 대한 패킹된 인덱스 값들에 매핑하는 단계를 포함하는, 방법.
  14. 제13항에 있어서, 상기 인덱스 값들을 상기 패킹된 인덱스 값들에 매핑하는 단계는 주어진 패킹된 인덱스 값을 주어진 인덱스 값에 기초하여 설정하는 단계를 포함하는, 방법.
  15. 제13항에 있어서, 상기 인덱스 값들을 상기 패킹된 인덱스 값들에 매핑하는 단계는,
    주어진 인덱스 값이 짝수이면, 주어진 패킹된 인덱스 값을 상기 주어진 인덱스 값을 2로 나눈 것에 기초하여 설정하는 단계; 및
    상기 주어진 인덱스 값이 홀수이면, 상기 주어진 패킹된 인덱스 값을 상기 주어진 인덱스 값에 1을 더하고 이어서 2로 나눈 것에 기초하여 설정하는 단계를 포함하는, 방법.
  16. 제13항에 있어서, 상기 인덱스 값들을 상기 패킹된 인덱스 값들에 매핑하는 단계는,
    주어진 패킹된 인덱스 값을 하나의 루마 인덱스 값(luma index value) 및 다수의 크로마 인덱스 값(chroma index value)들에 기초하여 설정하는 단계를 포함하는, 방법.
  17. 제13항에 있어서,
    주어진 패킹된 인덱스 값을 예측하는 단계; 및
    패킹된 인덱스 잔차 값을 상기 주어진 패킹된 인덱스 값 및 상기 예측된 패킹된 인덱스 값에 기초하여 결정하는 단계를 추가로 포함하는, 방법.
  18. 비디오 디코더 또는 영상 디코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    계수 코딩 구문 구조에 대한 패킹된 인덱스 값들을 기본 색상들에 대한 인덱스 값들에 매핑하는 단계; 및
    상기 인덱스 값들을 샘플 값들에 매핑하는 단계를 포함하는, 방법.
  19. 제18항에 있어서, 상기 패킹된 인덱스 값들을 상기 인덱스 값들에 매핑하는 단계는 주어진 인덱스 값을 주어진 패킹된 인덱스 값에 기초하여 설정하는 단계를 포함하는, 방법.
  20. 제18항에 있어서, 상기 패킹된 인덱스 값들을 상기 인덱스 값들에 매핑하는 단계는,
    주어진 패킹된 인덱스 값이 0과 주어진 관계를 가지면, 주어진 인덱스 값을 상기 주어진 패킹된 인덱스 값 x 2에 기초하여 설정하는 단계; 및
    그렇지 않은 경우, 주어진 인덱스 값을 상기 주어진 패킹된 인덱스 값 x 2 - 1에 기초하여 설정하는 단계를 포함하는, 방법.
  21. 제18항에 있어서, 상기 패킹된 인덱스 값들을 상기 인덱스 값들에 매핑하는 단계는,
    하나의 루마 인덱스 값 및 다수의 크로마 인덱스 값들을 주어진 패킹된 인덱스 값에 기초하여 설정하는 단계를 포함하는, 방법.
  22. 제18항에 있어서,
    주어진 패킹된 인덱스 값을 예측하는 단계; 및
    상기 주어진 패킹된 인덱스 값을 결정하기 위해 패킹된 인덱스 잔차 값을 상기 예측된 패킹된 인덱스 값과 결합시키는 단계를 추가로 포함하는, 방법.
  23. 비디오 인코더 또는 영상 인코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    예측을 사용하여 블록에 대한 인덱스 맵의 요소들을 인코딩하는 것을 포함하는, 픽처에 대한 데이터를 인코딩하는 단계; 및
    상기 픽처에 대한 상기 인코딩된 데이터를 출력하는 단계를 포함하는, 방법.
  24. 제23항에 있어서, 상기 인덱스 맵의 상기 요소들을 인코딩하는 단계는,
    기본 색상을 나타내는 인덱스 값을 예측하는 단계; 및
    인덱스 잔차 값을 상기 인덱스 값 및 상기 예측된 인덱스 값에 기초하여 결정하는 단계를 포함하고, 상기 인덱스 맵은 상기 인덱스 잔차 값을 포함하는, 방법.
  25. 제23항에 있어서, 상기 인덱스 맵의 상기 요소들을 인코딩하는 단계는,
    패킹된 인덱스 값을 예측하는 단계 - 상기 패킹된 인덱스 값은 기본 색상을 나타내는 인덱스 값이고 계수 코딩 구문 구조 내에 패킹됨 -; 및
    패킹된 인덱스 잔차 값을 상기 패킹된 인덱스 값 및 상기 예측된 패킹된 인덱스 값에 기초하여 결정하는 단계를 포함하고, 상기 인덱스 맵은 상기 패킹된 인덱스 잔차 값을 포함하는, 방법.
  26. 제23항에 있어서, 상기 인덱스 맵의 상기 요소들을 인코딩하는 단계는 예측된 인덱스 값을 초기 인덱스 값으로부터 감산하는 단계 또는 예측된 패킹된 인덱스 값을 초기 패킹된 인덱스 값으로부터 감산하는 단계를 포함하는, 방법.
  27. 제23항에 있어서, 상기 인덱스 맵의 상기 요소들을 인코딩하는 단계는 예측된 인덱스 값 및 초기 인덱스 값의 적어도 일부 비트들의 XOR을 결정하는 단계 또는 예측된 패킹된 인덱스 값 및 초기 패킹된 인덱스 값의 적어도 일부 비트들의 XOR을 결정하는 단계를 포함하는, 방법.
  28. 제27항에 있어서, 상기 XOR은 상기 예측된 인덱스 값 및 상기 초기 인덱스 값의 모든 비트들에 대해 수행되거나, 상기 XOR은 상기 예측된 패킹된 인덱스 값 및 상기 초기 패킹된 인덱스 값의 모든 비트들에 대해 수행되는, 방법.
  29. 비디오 디코더 또는 영상 디코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    픽처에 대한 인코딩된 데이터를 수신하는 단계; 및
    예측을 사용하여 블록에 대한 인덱스 맵의 요소들을 디코딩하는 것을 포함하는, 상기 인코딩된 데이터를 디코딩하는 단계를 포함하는, 방법.
  30. 제29항에 있어서, 상기 인덱스 맵의 상기 요소들을 디코딩하는 단계는,
    기본 색상을 나타내는 인덱스 값을 예측하는 단계; 및
    인덱스 잔차 값과 상기 예측된 인덱스 값을 결합시키는 단계를 포함하고, 상기 인덱스 맵은 상기 인덱스 잔차 값을 포함하는, 방법.
  31. 제29항에 있어서, 상기 인덱스 맵의 상기 요소들을 디코딩하는 단계는,
    패킹된 인덱스 값을 예측하는 단계 - 상기 패킹된 인덱스 값은 기본 색상을 나타내는 인덱스 값이고 계수 코딩 구문 구조 내에 패킹됨 -; 및
    패킹된 인덱스 잔차 값과 상기 예측된 패킹된 인덱스 값을 결합시키는 단계를 포함하고, 상기 인덱스 맵은 상기 패킹된 인덱스 잔차 값을 포함하는, 방법.
  32. 제29항에 있어서, 상기 인덱스 맵의 상기 요소들을 디코딩하는 단계는 예측된 인덱스 값과 인덱스 잔차 값을 결합시키는 단계 또는 예측된 패킹된 인덱스 값과 패킹된 인덱스 잔차 값을 결합시키는 단계를 포함하는, 방법.
  33. 제29항에 있어서, 상기 인덱스 맵의 상기 요소들을 디코딩하는 단계는 예측된 인덱스 값 및 인덱스 잔차 값의 적어도 일부 비트들의 XOR을 결정하는 단계 또는 예측된 패킹된 인덱스 값 및 패킹된 인덱스 잔차 값의 적어도 일부 비트들의 XOR을 결정하는 단계를 포함하는, 방법.
  34. 제33항에 있어서, 상기 XOR은 상기 예측된 인덱스 값 및 상기 인덱스 잔차 값의 모든 비트들에 대해 수행되거나, 상기 XOR은 상기 예측된 패킹된 인덱스 값 및 상기 패킹된 인덱스 잔차 값의 모든 비트들에 대해 수행되는, 방법.
  35. 비디오 인코더 또는 영상 인코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    각각이 기본 색상을 나타내는 하나 이상의 인덱스 값들 및 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 사용하여 블록에 대한 데이터를 인코딩하는 단계; 및
    상기 인코딩된 데이터를 출력하는 단계를 포함하는, 방법.
  36. 제35항에 있어서, 상기 인코딩하는 단계는, 상기 하나 이상의 예외 값들 중 하나에 대해,
    양자화 파라미터 및 가장 높은 패킹된 인덱스 값을 사용하여 샘플 값을 상기 예외 값으로 대체하는 단계를 포함하는, 방법.
  37. 제35항에 있어서, 상기 인덱스 맵 내의 상기 하나 이상의 인덱스 값들은 패킹된 인덱스 값들 또는 패킹된 인덱스 잔차 값들인, 방법.
  38. 비디오 디코더 또는 영상 디코더를 갖는 컴퓨팅 디바이스에서, 방법에 있어서,
    블록에 대한 인코딩된 데이터를 수신하는 단계; 및
    각각이 기본 색상을 나타내는 하나 이상의 인덱스 값들 및 어떤 기본 색상도 나타내지 않는 하나 이상의 예외 값들을 디코딩하는 것을 포함하는, 상기 인코딩된 데이터를 디코딩하는 단계를 포함하는, 방법.
  39. 제38항에 있어서, 상기 디코딩하는 단계는, 상기 하나 이상의 예외 값들 중 하나에 대해,
    상기 예외 값, 양자화 파라미터 및 가장 높은 패킹된 인덱스 값을 사용하여 샘플 값을 재구성하는 단계를 포함하는, 방법.
  40. 제38항에 있어서, 상기 하나 이상의 인덱스 값들은 패킹된 인덱스 값들 또는 패킹된 인덱스 잔차 값들인, 방법.
  41. 제1항 내지 제40항 중 어느 한 항의 방법을 수행하도록 구성된 컴퓨팅 디바이스.
  42. 제1항 내지 제40항 중 어느 한 항의 방법을 수행하도록 컴퓨팅 디바이스를 프로그램하기 위한 컴퓨터 실행 가능 명령어들을 저장하는 하나 이상의 컴퓨터 판독 가능 매체.
KR1020167010998A 2013-10-14 2013-10-14 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징 KR102275639B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217020291A KR102318785B1 (ko) 2013-10-14 2013-10-14 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/085166 WO2015054812A1 (en) 2013-10-14 2013-10-14 Features of base color index map mode for video and image coding and decoding

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217020291A Division KR102318785B1 (ko) 2013-10-14 2013-10-14 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징

Publications (2)

Publication Number Publication Date
KR20160070771A true KR20160070771A (ko) 2016-06-20
KR102275639B1 KR102275639B1 (ko) 2021-07-08

Family

ID=52827519

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217020291A KR102318785B1 (ko) 2013-10-14 2013-10-14 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징
KR1020167010998A KR102275639B1 (ko) 2013-10-14 2013-10-14 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217020291A KR102318785B1 (ko) 2013-10-14 2013-10-14 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징

Country Status (11)

Country Link
US (4) US10506254B2 (ko)
EP (2) EP3720132A1 (ko)
JP (1) JP6336058B2 (ko)
KR (2) KR102318785B1 (ko)
CN (1) CN105659606B (ko)
AU (1) AU2013403225B2 (ko)
BR (1) BR112016008044A8 (ko)
CA (1) CA2925183C (ko)
MX (1) MX368934B (ko)
RU (1) RU2666635C2 (ko)
WO (1) WO2015054812A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3720132A1 (en) 2013-10-14 2020-10-07 Microsoft Technology Licensing LLC Features of color index map mode for video and image coding and decoding
KR102257269B1 (ko) 2013-10-14 2021-05-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
KR102353787B1 (ko) 2014-01-03 2022-01-19 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
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
EP3055830A4 (en) 2014-03-21 2017-02-22 Huawei Technologies Co., Ltd. Advanced screen content coding with improved color table and index map coding methods
CN105100814B (zh) * 2014-05-06 2020-07-14 同济大学 图像编码、解码方法及装置
US10091512B2 (en) 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US10785486B2 (en) 2014-06-19 2020-09-22 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
KR101943805B1 (ko) * 2014-06-20 2019-01-29 에이치에프아이 이노베이션 인크. 비디오 코딩에서의 신택스에 대한 이진화 및 컨텍스트 적응 코딩의 방법 및 장치
MX2017004211A (es) 2014-09-30 2017-11-15 Microsoft Technology Licensing Llc Reglas para modos de prediccion intra-imagen cuando se habilita el procesamiento paralelo de onda frontal.
WO2016197314A1 (en) 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10491897B2 (en) * 2018-04-13 2019-11-26 Google Llc Spatially adaptive quantization-aware deblocking filter
CN108632630B (zh) * 2018-05-28 2020-03-31 中国科学技术大学 一种结合位运算和概率预测的二值图像编码方法
KR20210089654A (ko) * 2018-10-01 2021-07-16 오피 솔루션즈, 엘엘씨 지수 파티셔닝의 방법들 및 시스템들
US20200367209A1 (en) * 2019-05-16 2020-11-19 Mediatek Singapore Pte. Ltd. HARQ Offset And Reduced Bi-Field Size In DAI Signaling For Compact DCI In Mobile Communications
CN112118449B (zh) * 2019-06-21 2022-03-25 腾讯科技(深圳)有限公司 一种图像压缩与解压缩的方法及装置
CN112969074B (zh) * 2021-02-01 2021-11-16 西南交通大学 一种应用于静态霍夫曼表的全并行频数排序生成方法

Family Cites Families (234)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2114404B (en) * 1982-01-28 1986-07-02 British Broadcasting Corp Generating a colour video signal representative of a stored picture
JPH087553B2 (ja) 1988-10-27 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 色画像量子化方法及び装置
US5706290A (en) 1994-12-15 1998-01-06 Shaw; Venson Method and apparatus including system architecture for multimedia communication
US8505108B2 (en) 1993-11-18 2013-08-06 Digimarc Corporation Authentication using a digital watermark
US5515296A (en) 1993-11-24 1996-05-07 Intel Corporation Scan path for encoding and decoding two-dimensional signals
US5999189A (en) 1995-08-04 1999-12-07 Microsoft Corporation Image compression to reduce pixel and texture memory requirements in a real-time image generator
US6389162B2 (en) 1996-02-15 2002-05-14 Canon Kabushiki Kaisha Image processing apparatus and method and medium
DE60000013T2 (de) 1999-04-02 2002-05-02 Matsushita Electric Ind Co Ltd Optische Platte, Aufzeichnungs- und Wiedergabeanordnung
JP2001251507A (ja) 2000-03-03 2001-09-14 Fujitsu Ltd 画像処理装置
US6701012B1 (en) 2000-07-24 2004-03-02 Sharp Laboratories Of America, Inc. Out-of-layer pixel generation for a decomposed-image layer
US6748116B1 (en) 2000-08-22 2004-06-08 Airzip, Inc. Apparatus and method for compressing and decompressing image files
DE10049571C1 (de) 2000-10-06 2002-06-13 Siemens Ag Verfahren und Anordnung zum Übertragen eines Vektors
US7023924B1 (en) 2000-12-28 2006-04-04 Emc Corporation Method of pausing an MPEG coded video stream
US6853755B2 (en) 2001-03-28 2005-02-08 Sharp Laboratories Of America, Inc. Method and apparatus for adaptive compression of scanned documents
WO2003023698A1 (en) 2001-09-12 2003-03-20 Idetic, Inc. Transformation to increase the lempel-ziv compressibility of images with minimal visual distortion
US7120196B2 (en) 2002-04-29 2006-10-10 Ess Technology, Inc. Intra-prediction using intra-macroblock motion compensation
JP4313757B2 (ja) 2002-05-02 2009-08-12 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン 画像および/またはビデオ符号器と復号器における変換係数を符号化するための方法と装置および対応するコンピュータプログラムと対応するコンピュータによる読み出し可能な記憶媒体
US7289674B2 (en) 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
US7085420B2 (en) 2002-06-28 2006-08-01 Microsoft Corporation Text detection in continuous tone image segments
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US7072512B2 (en) 2002-07-23 2006-07-04 Microsoft Corporation Segmentation of digital video and images into continuous tone and palettized regions
DE10301362B4 (de) 2003-01-16 2005-06-09 GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
US7373005B2 (en) 2003-04-10 2008-05-13 Micron Technology, Inc. Compression system for integrated sensor devices
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
US7519274B2 (en) 2003-12-08 2009-04-14 Divx, Inc. File format for multiple track digital data
US8472792B2 (en) 2003-12-08 2013-06-25 Divx, Llc Multimedia distribution system
KR101044934B1 (ko) 2003-12-18 2011-06-28 삼성전자주식회사 움직임 벡터 추정방법 및 부호화 모드 결정방법
US8036271B2 (en) * 2004-02-24 2011-10-11 Lsi Corporation Method and apparatus for determining a second picture for temporal direct-mode block prediction
JP4418762B2 (ja) 2004-05-07 2010-02-24 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
US8116374B2 (en) 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
AR049593A1 (es) 2004-07-20 2006-08-16 Qualcomm Inc Metodo y aparato para predecir el vector de movimiento en compresion de video temporal.
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
US20060282855A1 (en) 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
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 画像符号化装置および画像符号化方法
EP1924970B1 (en) 2005-08-19 2009-03-11 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Texture compression based on two hues with modified brightness
US7986844B2 (en) 2005-11-22 2011-07-26 Intel Corporation Optimized video compression using hashing function
US7956930B2 (en) 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
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 中国科学院自动化研究所 一种具有最小误差的快速变尺寸块匹配的运动估计方法
US7668382B2 (en) 2006-02-24 2010-02-23 Microsoft Corporation Block-based fast image compression
US7616816B2 (en) 2006-03-20 2009-11-10 Sarnoff Corporation System and method for mission-driven visual information retrieval and organization
JP4997281B2 (ja) 2006-04-14 2012-08-08 エヌエックスピー ビー ヴィ イメージ中の推定動きベクトルの決定方法、コンピュータプログラムおよびディスプレイ装置
US7965861B2 (en) 2006-04-26 2011-06-21 The Board Of Regents Of The University Of Texas System Methods and systems for digital image security
CA2655970A1 (en) 2006-07-07 2008-01-10 Telefonaktiebolaget L M Ericsson (Publ) Video data management
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
WO2008036112A1 (en) 2006-09-22 2008-03-27 Thomson Licensing Method and apparatus for multiple pass video coding and decoding
US20080084924A1 (en) 2006-10-05 2008-04-10 Donald Martin Monro Matching pursuits basis selection design
US8170101B2 (en) 2006-10-27 2012-05-01 Sharp Laboratories Of America, Inc. Methods and systems for low-complexity data compression
US8218641B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture encoding using same-picture reference for pixel reconstruction
US7907783B2 (en) 2007-01-24 2011-03-15 Samsung Electronics Co., Ltd. Apparatus and method of matching symbols in a text image coding and decoding system
CN100527842C (zh) 2007-01-26 2009-08-12 清华大学 基于背景的运动估计编码方法
US8031937B2 (en) 2007-04-04 2011-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Frame buffer compression and decompression method for graphics rendering
US7903873B2 (en) 2007-09-13 2011-03-08 Microsoft Corporation Textual image coding
CN101420606A (zh) 2007-10-23 2009-04-29 青岛海信电器股份有限公司 图像处理方法和装置
KR101365444B1 (ko) 2007-11-19 2014-02-21 삼성전자주식회사 영상의 해상도의 조정을 통하여 동영상을 효율적으로부호화/복호화하는 방법 및 장치
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
JP2009260473A (ja) 2008-04-14 2009-11-05 Canon Inc 色処理方法及び装置、プログラム、記録媒体
JP2010035137A (ja) 2008-07-01 2010-02-12 Sony Corp 画像処理装置および方法、並びにプログラム
CN102113326A (zh) 2008-08-04 2011-06-29 杜比实验室特许公司 重叠块差异估计和补偿体系结构
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
US8254704B2 (en) 2008-10-30 2012-08-28 Microsoft Corporation Remote computing platforms providing high-fidelity display and interactivity for clients
US8180165B2 (en) 2008-12-19 2012-05-15 Microsoft Corp. Accelerated screen codec
TW201028018A (en) 2009-01-07 2010-07-16 Ind Tech Res Inst Encoder, decoder, encoding method and decoding method
CA2750735C (en) 2009-02-02 2018-09-18 Calgary Scientific Inc. Image data transmission
RU2420021C2 (ru) 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
KR101719382B1 (ko) 2009-06-22 2017-03-23 톰슨 라이센싱 이미지 시퀀스에 대한 비디오 데이터의 일치 추적 기반 코딩을 위한 프로세스
CN101626512A (zh) 2009-08-11 2010-01-13 北京交通大学 一种基于相关性优化准则的多描述视频编码方法及装置
JP5321426B2 (ja) 2009-11-26 2013-10-23 株式会社Jvcケンウッド 画像符号化装置、画像復号化装置、画像符号化方法、及び画像復号化方法
KR101623124B1 (ko) 2009-12-03 2016-05-24 에스케이 텔레콤주식회사 비디오 인코딩 장치 및 그 인코딩 방법, 비디오 디코딩 장치 및 그 디코딩 방법, 및 거기에 이용되는 방향적 인트라 예측방법
US20110194613A1 (en) 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks
ES2713173T3 (es) 2010-03-31 2019-05-20 Orange Procedimientos y dispositivos de codificación y de decodificación de una secuencia de imágenes que implementan una predicción por compensación de movimiento anticipado, y programa de ordenador correspondiente
CN105611304B (zh) 2010-04-09 2019-06-11 Lg电子株式会社 处理视频数据的方法和装置
US8619857B2 (en) 2010-04-09 2013-12-31 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
US8644375B2 (en) 2010-04-09 2014-02-04 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
KR20110123651A (ko) 2010-05-07 2011-11-15 한국전자통신연구원 생략 부호화를 이용한 영상 부호화 및 복호화 장치 및 그 방법
KR101484281B1 (ko) 2010-07-09 2015-01-21 삼성전자주식회사 블록 병합을 이용한 비디오 부호화 방법 및 그 장치, 블록 병합을 이용한 비디오 복호화 방법 및 그 장치
MX344987B (es) 2010-07-14 2017-01-13 Ntt Docomo Inc Intraprediccion de baja complejidad para la codificacion de video.
CN107105303B (zh) 2010-11-04 2020-05-15 Ge视频压缩有限责任公司 解码装置和方法、编码装置和方法、存储和传输图像方法
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
US8767835B2 (en) 2010-12-28 2014-07-01 Mitsubishi Electric Research Laboratories, Inc. Method for coding videos using dictionaries
US8913662B2 (en) 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
KR20120080122A (ko) 2011-01-06 2012-07-16 삼성전자주식회사 경쟁 기반의 다시점 비디오 부호화/복호화 장치 및 방법
PL3349360T3 (pl) 2011-01-14 2020-03-31 Ge Video Compression, Llc Schemat kodowania i dekodowania entropijnego
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
CN103392340B (zh) 2011-03-14 2017-02-08 寰发股份有限公司 推导运动向量预测子的方法与装置
US8693547B2 (en) 2011-04-06 2014-04-08 Google Inc. Apparatus and method for coding using motion vector segmentation
US20140050414A1 (en) * 2011-04-29 2014-02-20 Telefonaktiebolaget L M Ericsson (Publ) Encoder, Decoder and Methods Thereof for Texture Compression
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 深圳市云宙多媒体技术有限公司 一种预测编码方法、装置
CN103688533B (zh) 2011-06-20 2015-12-23 联发科技(新加坡)私人有限公司 可减少行存储器的色度帧内预测方法及装置
CN105915914B (zh) 2011-06-24 2018-12-11 寰发股份有限公司 移除运动向量预测子中冗余的方法与装置
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
CN104041035B (zh) 2011-06-30 2017-06-27 华为技术有限公司 用于复合视频的无损编码及相关信号表示方法
WO2013009896A1 (en) 2011-07-12 2013-01-17 Huawei Technologies Co. Ltd. Pixel-based intra prediction for coding in hevc
CN102223541B (zh) * 2011-07-14 2013-07-03 北京工业大学 一种混合图像的编码方法
CN103748877B (zh) 2011-08-17 2017-05-10 联发科技(新加坡)私人有限公司 帧内预测方法和装置
CN107197272B (zh) 2011-08-29 2019-12-06 苗太平洋控股有限公司 以合并模式对图像编码的方法
US8804816B2 (en) * 2011-08-30 2014-08-12 Microsoft Corporation Video encoding enhancements
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
US9484952B2 (en) 2011-11-03 2016-11-01 Qualcomm Incorporated Context state and probability initialization for context adaptive entropy coding
US10390046B2 (en) 2011-11-07 2019-08-20 Qualcomm Incorporated Coding significant coefficient information in transform skip mode
KR101674777B1 (ko) 2011-11-08 2016-11-09 구글 테크놀로지 홀딩스 엘엘씨 샘플 적응 오프셋 코딩 및/또는 시그널링을 위한 장치들 및 방법들
US20130121417A1 (en) 2011-11-16 2013-05-16 Qualcomm Incorporated Constrained reference picture sets in wave front parallel processing of video data
US9883203B2 (en) 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
WO2013072484A1 (en) 2011-11-18 2013-05-23 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Multi-view coding with efficient residual handling
US9350996B2 (en) 2011-12-20 2016-05-24 Google Technology Holdings LLC Method and apparatus for last coefficient indexing for high efficiency video coding
US20130163664A1 (en) 2011-12-22 2013-06-27 Qualcomm Incorporated Unified partition mode table for intra-mode coding
US9762904B2 (en) 2011-12-22 2017-09-12 Qualcomm Incorporated Performing motion vector prediction for video coding
US9900615B2 (en) 2011-12-28 2018-02-20 Microsoft Technology Licensing, Llc Representative motion information for temporal motion prediction in video encoding and decoding
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
US9332259B2 (en) 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
JP2013150173A (ja) 2012-01-19 2013-08-01 Sony Corp 画像処理装置および方法
JP2013150215A (ja) 2012-01-20 2013-08-01 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
US20130188717A1 (en) 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc using partition mode without split flag
UA124569C2 (uk) 2012-01-20 2021-10-13 ДЖ.І. ВІДІЕУ КЕМПРЕШН, ЛЛСі Концепція кодування, яка дозволяє паралельну обробку даних, транспортний демультиплексор і відеобітовий потік
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
EP2815572A2 (en) 2012-03-26 2014-12-24 Euclid Discoveries, LLC Context based video encoding and decoding
US20130258052A1 (en) 2012-03-28 2013-10-03 Qualcomm Incorporated Inter-view residual prediction in 3d video coding
US10129540B2 (en) 2012-04-10 2018-11-13 Texas Instruments Incorporated Reduced complexity coefficient transmission for adaptive loop filtering (ALF) in 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
SG11201405038RA (en) 2012-04-24 2014-09-26 Mediatek Inc Method and apparatus of motion vector derivation for 3d video coding
US9521410B2 (en) 2012-04-26 2016-12-13 Qualcomm Incorporated Quantization parameter (QP) coding in video coding
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US20130294524A1 (en) 2012-05-04 2013-11-07 Qualcomm Incorporated Transform skipping and lossless coding unification
US9621905B2 (en) 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
CN102752595B (zh) 2012-06-29 2014-07-09 香港应用科技研究院有限公司 用于深度图编码和解码的混合型跳过模式
US9602827B2 (en) 2012-07-02 2017-03-21 Qualcomm Incorporated Video parameter set including an offset syntax element
US9414054B2 (en) 2012-07-02 2016-08-09 Microsoft Technology Licensing, Llc Control and use of chroma quantization parameter values
US9591302B2 (en) 2012-07-02 2017-03-07 Microsoft Technology Licensing, Llc Use of chroma quantization parameter offsets in deblocking
US9264713B2 (en) 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
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
EP3876538A1 (en) 2012-09-26 2021-09-08 Velos Media International Limited Image coding method and image coding device
WO2014053099A1 (en) 2012-10-03 2014-04-10 Mediatek Inc. Method and apparatus for motion information inheritance in three-dimensional video coding
US9615090B2 (en) 2012-12-28 2017-04-04 Qualcomm Incorporated Parsing syntax elements in three-dimensional video coding
US9826244B2 (en) 2013-01-08 2017-11-21 Qualcomm Incorporated Device and method for scalable coding of video information based on high efficiency video coding
US9762882B2 (en) 2013-01-11 2017-09-12 Hfi Innovation Inc. Method and apparatus for efficient coding of depth lookup table
US9800857B2 (en) 2013-03-08 2017-10-24 Qualcomm Incorporated Inter-view residual prediction in multi-view or 3-dimensional video coding
US9516306B2 (en) 2013-03-27 2016-12-06 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
US10904551B2 (en) 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
US9654777B2 (en) * 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
CN103237226B (zh) 2013-04-07 2016-08-03 宁波大学 一种立体视频宏块丢失错误隐藏方法
WO2014166104A1 (en) 2013-04-12 2014-10-16 Mediatek Singapore Pte. Ltd. Removal of parsing dependency for illumination compensation
US9609336B2 (en) 2013-04-16 2017-03-28 Fastvdo Llc Adaptive coding, transmission and efficient display of multimedia (acted)
CN103281538B (zh) 2013-06-06 2016-01-13 上海交通大学 基于滚动哈希和块级别帧内预测的帧内编码方法
US9787989B2 (en) 2013-06-11 2017-10-10 Blackberry Limited Intra-coding mode-dependent quantization tuning
CN111800640B (zh) 2013-06-13 2023-11-10 上海天荷电子信息有限公司 方向交替变换来回扫描串匹配的图像编码解码方法和装置
MY174134A (en) 2013-06-18 2020-03-10 Vid Scale Inc Inter-layer parameter set for hevc extensions
US10015515B2 (en) 2013-06-21 2018-07-03 Qualcomm Incorporated Intra prediction from a predictive block
US9128680B2 (en) * 2013-06-27 2015-09-08 Cal-Comp Electronics & Communications Company Limited Casing structure and electronic device using the same
GB2516422A (en) 2013-07-09 2015-01-28 Sony Corp Data encoding and decoding
US20150016533A1 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Intra motion compensation extensions
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US9756347B2 (en) * 2013-07-23 2017-09-05 Futurewei Technologies, Inc. Screen content coding systems and methods
CN112383781B (zh) 2013-08-16 2023-05-02 上海天荷电子信息有限公司 参考块的位置决定其重构阶段的块匹配编解码方法和装置
CN103428498A (zh) 2013-08-21 2013-12-04 江苏新瑞峰信息科技有限公司 一种无损图像压缩***
US10313682B2 (en) 2013-08-26 2019-06-04 Qualcomm Incorporated Determining regions when performing intra block copying
US20170155899A1 (en) 2013-09-07 2017-06-01 Tongji University Image compression method and apparatus using matching
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
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
KR102257269B1 (ko) 2013-10-14 2021-05-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
EP3720132A1 (en) 2013-10-14 2020-10-07 Microsoft Technology Licensing LLC Features of color index map mode for video and image coding and decoding
US20150110181A1 (en) 2013-10-18 2015-04-23 Samsung Electronics Co., Ltd. Methods for palette prediction and intra block copy padding
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
WO2015086718A2 (en) 2013-12-10 2015-06-18 Canon Kabushiki Kaisha Method and apparatus for encoding or decoding blocks of pixel
JP6537511B2 (ja) 2013-12-10 2019-07-03 キヤノン株式会社 Hevcにおける改良型パレットモード
CN110336999B (zh) 2013-12-18 2021-09-03 寰发股份有限公司 利用调色板编码的编码视频数据区块的方法和装置
US10972742B2 (en) 2013-12-19 2021-04-06 Canon Kabushiki Kaisha Encoding process using a palette mode
GB2521606A (en) 2013-12-20 2015-07-01 Canon Kk Method and apparatus for transition encoding in video coding and decoding
BR112016015109A2 (pt) 2013-12-30 2017-08-08 Qualcomm Inc Simplificação de codificação residual dc delta em codificação de vídeo 3d
WO2015103496A2 (en) 2014-01-02 2015-07-09 Vid Scale, Inc. Two-demensional palette coding for screen content coding
US9872040B2 (en) * 2014-01-02 2018-01-16 Qualcomm Incorporated Color index coding for palette-based video coding
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
KR102353787B1 (ko) 2014-01-03 2022-01-19 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
US9883197B2 (en) 2014-01-09 2018-01-30 Qualcomm Incorporated Intra prediction of chroma blocks using the same vector
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
GB2522844A (en) 2014-01-29 2015-08-12 Sony Corp Data encoding and decoding
US9699468B2 (en) 2014-02-10 2017-07-04 Microsoft Technology Licensing, Llc Adaptive screen and video coding scheme
US20150237356A1 (en) 2014-02-18 2015-08-20 Microsoft Corporation Host encoder for hardware-accelerated video encoding
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
RU2657210C2 (ru) 2014-03-04 2018-06-08 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Зеркальное отображение блоков и режим пропуска в интра-основанном на копии блока предсказании
US10567754B2 (en) 2014-03-04 2020-02-18 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
US20150262404A1 (en) 2014-03-13 2015-09-17 Huawei Technologies Co., Ltd. Screen Content And Mixed Content Coding
KR102494913B1 (ko) 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
US9788004B2 (en) 2014-03-14 2017-10-10 Hfi Innovation Inc. Method of color index coding with palette stuffing
CN106105227B (zh) 2014-03-16 2019-12-24 Vid拓展公司 用于无损视频译码的信令的方法和设备
US20150264348A1 (en) 2014-03-17 2015-09-17 Qualcomm Incorporated Dictionary coding of video content
CA2942737A1 (en) 2014-03-17 2015-09-24 Nokia Technologies Oy Method and technical equipment for video encoding and decoding
US10477232B2 (en) 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
US9654806B2 (en) 2014-03-26 2017-05-16 Qualcomm Incorporated Determining palette size, palette entries and filtering of palette coded blocks in video coding
CN103957412B (zh) 2014-05-06 2017-04-12 北京大学 一种针对屏幕视频帧间残差的基础色索引映射算法
CN106471805A (zh) 2014-05-09 2017-03-01 诺基亚技术有限公司 用于使用调色板编码进行视频编码和解码的方法和技术设备
US10264285B2 (en) 2014-05-22 2019-04-16 Qualcomm Incorporated Coding runs in palette-based video coding
US10038915B2 (en) 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
US10291940B2 (en) 2014-05-23 2019-05-14 Qualcomm Incorporated Coding runs with escape in palette-based video coding
US10382749B2 (en) 2014-05-23 2019-08-13 Qualcomm Incorporated Coding run values based on palette index in palette-based video coding
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization in palette-based video coding
AU2014202921B2 (en) 2014-05-29 2017-02-02 Canon Kabushiki Kaisha Method, apparatus and system for de-blocking a block of video samples
US9924175B2 (en) 2014-06-11 2018-03-20 Qualcomm Incorporated Determining application of deblocking filtering to palette coded blocks in 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
US10785486B2 (en) 2014-06-19 2020-09-22 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
US10477204B2 (en) 2014-06-20 2019-11-12 Sharp Kabushiki Kaisha Harmonized palette coding
US20150381994A1 (en) 2014-06-27 2015-12-31 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
AU2014216056A1 (en) 2014-08-25 2016-03-10 Canon Kabushiki Kaisha Method, apparatus and system for predicting a block of video samples
MX2017004211A (es) 2014-09-30 2017-11-15 Microsoft Technology Licensing Llc Reglas para modos de prediccion intra-imagen cuando se habilita el procesamiento paralelo de onda frontal.
US20160112713A1 (en) 2014-10-20 2016-04-21 Google Inc. Mapping spherical image to 2d representations
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
KR20180010183A (ko) 2015-04-21 2018-01-30 브이아이디 스케일, 인크. 예술적 의도 기반의 비디오 코딩
WO2016197314A1 (en) 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US9704270B1 (en) 2015-07-30 2017-07-11 Teradici Corporation Method and apparatus for rasterizing and encoding vector graphics

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Cuiling Lan et al., "Compress Compound Images in H.264/MPEG-4 AVC by Exploiting Spatial Correlation", IEEE Trans. on Image Processing, pp.946-957, 2009.4* *

Also Published As

Publication number Publication date
EP3058740A4 (en) 2017-05-17
WO2015054812A1 (en) 2015-04-23
MX368934B (es) 2019-10-22
US20160277760A1 (en) 2016-09-22
AU2013403225B2 (en) 2018-06-14
US20200228834A1 (en) 2020-07-16
RU2666635C2 (ru) 2018-09-11
CA2925183C (en) 2020-03-10
US20200084472A1 (en) 2020-03-12
JP6336058B2 (ja) 2018-06-06
KR20210083403A (ko) 2021-07-06
EP3720132A1 (en) 2020-10-07
CA2925183A1 (en) 2015-04-23
JP2016541144A (ja) 2016-12-28
US11252437B2 (en) 2022-02-15
CN105659606B (zh) 2019-06-18
CN105659606A (zh) 2016-06-08
MX2016004707A (es) 2016-07-18
US10506254B2 (en) 2019-12-10
US20220132163A1 (en) 2022-04-28
US10652576B2 (en) 2020-05-12
EP3058740B1 (en) 2020-06-03
BR112016008044A8 (pt) 2020-03-17
KR102318785B1 (ko) 2021-10-27
RU2016114272A (ru) 2017-10-18
KR102275639B1 (ko) 2021-07-08
EP3058740A1 (en) 2016-08-24
AU2013403225A1 (en) 2016-04-07

Similar Documents

Publication Publication Date Title
US11252437B2 (en) Features of base color index map mode for video and image coding and decoding
US11910005B2 (en) Block vector prediction in video and image coding/decoding
CN106664405B (zh) 用调色板模式对经逸出编码的像素的稳健编码/解码
KR102401946B1 (ko) 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑
US20170064330A1 (en) Dictionary encoding and decoding of screen content
KR20160072181A (ko) 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
CN107409212B (zh) 使用变换系数的逐渐更新进行编码和解码的方法及设备
KR20160129076A (ko) 스크린 컨텐츠의 딕셔너리 인코딩 및 디코딩
WO2015054816A1 (en) Encoder-side options for base color index map mode for video and image coding

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant