KR102203111B1 - 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환 - Google Patents

컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환 Download PDF

Info

Publication number
KR102203111B1
KR102203111B1 KR1020167027275A KR20167027275A KR102203111B1 KR 102203111 B1 KR102203111 B1 KR 102203111B1 KR 1020167027275 A KR1020167027275 A KR 1020167027275A KR 20167027275 A KR20167027275 A KR 20167027275A KR 102203111 B1 KR102203111 B1 KR 102203111B1
Authority
KR
South Korea
Prior art keywords
color space
video
color
decoder
encoder
Prior art date
Application number
KR1020167027275A
Other languages
English (en)
Other versions
KR20160129067A (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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160129067A publication Critical patent/KR20160129067A/ko
Application granted granted Critical
Publication of KR102203111B1 publication Critical patent/KR102203111B1/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/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
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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/186Methods 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 colour or a chrominance component
    • 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/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • 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/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • 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
    • 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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks

Landscapes

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

Abstract

방법 또는 디바이스는, 비디오 시퀀스의 단위에 대한 적응적 인코딩 및 디코딩에 있어서, 코딩 효율성을 향상시킬 수 있다. 방법 또는 디바이스는, 비디오 시퀀스 내의 단위 사이에서 컬러 공간의 적응적 전환을 포함하는 인코딩/디코딩을 포함한다. 방법 또는 디바이스는, 비디오 시퀀스 내의 단위 사이에서 컬러 샘플링 레이트의 적응적 전환을 포함하는 인코딩/디코딩을 포함한다. 여전히, 방법 또는 디바이스는, 비디오 시퀀스 내의 단위 사이에서 비트 깊이의 적응적 전환을 포함하는 인코딩/디코딩을 포함한다.

Description

컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환{ADAPTIVE SWITCHING OF COLOR SPACES, COLOR SAMPLING RATES AND/OR BIT DEPTHS}
엔지니어는 디지털 비디오의 비트 레이트를 감소시키기 위해 압축(소스 코딩 또는 소스 인코딩으로도 또한 칭해짐)을 사용한다. 압축은 정보를 더 낮은 비트 레이트 형태로 변환하는 것에 의해 비디오 정보를 저장 및 송신하는 비용을 감소시킨다. 압축해제(decompression)(디코딩으로도 또한 칭해짐)는 압축된 형태로부터 원래의 정보의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
지난 이십 여년에 걸쳐, ITU-T H.261, H.262 (MPEG-2 또는 ISO/EC 13818-2), H.263 및 H.264 (MPEG-4 AVC 또는 ISO/IEC 14496-10) 표준, MPEG-1 (ISO/IEC 11172-2) 및 MPEG-4 비주얼(ISO/IEC 14496-2) 표준, 및 SMPTE 421M(VC-1) 표준을 비롯하여, 다양한 비디오 코덱 표준이 채택되었다. 보다 최근에는, H.265/HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 승인되었다. (예를 들면, 스케일러블 비디오 코딩/디코딩을 위한, 샘플 비트 깊이 또는 크로마 샘플링 레이트의 관점에서 충실도가 더 높은 비디오의 코딩/디코딩을 위한, 스크린 캡쳐 콘텐트를 위한, 또는 멀티뷰 코딩/디코딩을 위한) H.265/HEVC 표준에 대한 확장안이 현재 개발 중에 있다. 비디오 코덱 표준은 통상적으로, 인코딩 및 디코딩에서 특정 피쳐가 사용될 때 비트스트림에서 파라미터를 상세히 설명하는, 인코딩된 비디오 비트스트림의 신택스(syntax)에 대한 옵션을 정의한다. 많은 경우에서, 비디오 코덱 표준은 또한, 디코딩에서의 일치하는 결과를 달성하기 위해 디코더가 수행해야 하는 디코딩 동작에 관한 상세를 제공한다. 코덱 표준 외에, 다양한 독점적 코덱 포맷이 인코딩된 비디오 비트스트림의 신택스에 대한 다른 옵션 및 대응하는 디코딩 동작을 정의한다.
비디오 소스 예컨대 카메라, 애니메이션 출력, 스크린 캡쳐 모듈 등등은, 통상적으로, 특정한 컬러 공간에서, 특정한 컬러 샘플링 레이트에 따라 서브샘플링되는 비디오의 컬러 성분을 가지고, 또한 특정한 비트 깊이를 갖는 샘플 값을 가지고 비디오를 제공한다. 일반적으로, 컬러 공간(종종 컬러 모델로 칭해짐)은 물리적 위치마다 n(n≥1) 개의 값으로 컬러를 표현하기 위한 모델인데, 이 경우 n 개의 값의 각각은 그 위치에 대한 컬러 성분 값을 제공한다. 예를 들면, YUV 컬러 공간에서, 루마(또는 Y) 성분 값은 한 위치에서의 대략적인 휘도를 나타내고 다수의 크로마(또는 U 및 V) 성분 값은 그 위치에서의 컬러 차이를 나타낸다. 또는, RGB 컬러 공간에서, 레드(R) 성분 값은 한 위치에서의 레드 강도(intensity)를 나타내고, 그린(G) 성분 값은 한 위치에서의 그린 강도를 나타내고, 블루(B) 성분 값은 한 위치에서의 블루 강도를 나타낸다. 역사적으로, 상이한 컬러 공간은 디스플레이, 프린팅, 브로드캐스팅 및 인코딩/디코딩과 같은 상이한 애플리케이션에 대해 이점을 갖는다. 샘플 값은 컬러 공간 변환 동작을 사용하여 컬러 공간 사이에서 변환될 수 있다.
컬러 샘플링 레이트(종종 크로마 샘플링 레이트로 칭해짐)는 컬러 성분 사이의 상대적 공간 해상도를 가리킨다. 예를 들면, 4:4:4의 컬러 샘플링 레이트의 경우, 보조 성분(secondary component)(예를 들면, YUV의 경우 U 및 V)에 대한 정보는, 주 성분(primary component)(예를 들면, YUV의 경우 Y 성분)에 대한 정보와 동일한 공간 해상도를 갖는다. 4:2:2 또는 4:2:0의 컬러 샘플링 레이트의 경우, 보조 성분에 대한 정보는, 주 성분에 대한 정보에 비해 다운샘플링된다. YUV 4:2:0 포맷은 인코딩/디코딩에 대해 공통으로 사용된다. 설계 원칙으로서, 인코딩/디코딩에 대해 YUV 4:2:0 포맷을 사용하는 결정은, 대부분의 사용 사례의 경우, YUV 4:2:0 포맷으로 인코딩된/디코딩된 비디오와 YUV 4:4:4 포맷으로 인코딩된/디코딩된 비디오 사이의 많은 시각적 차이를 뷰어가 인식하지 못한다는 이해를 전제로 한다. 따라서, 프레임당 더 적은 샘플을 갖는 YUV 4:2:0 포맷에 대한 압축 이점은 매력적이다.
비트 깊이는 샘플 값당 비트의 수를 가리킨다. 일반적인 비트 깊이는 샘플당 8 비트, 샘플당 10 비트 그리고 샘플당 12 비트이다. 일반적으로, 샘플당 더 많은 비트를 갖는 것은, 비디오에 대한 컬러의 더 정확한 계조(gradation)를 허용하지만, 그러나 비디오에 대해 더 많은 스토리지를 사용한다. 샘플당 더 적은 비트를 갖는 것은, 통상적으로, 감소된 품질을 대가로 비트 레이트를 감소시킨다.
많은 상업적으로 이용가능한 비디오 인코더 및 디코더는 YUV 4:2:0 포맷만을 지원한다. (예를 들면, H.264/AVC 표준 또는 H.265/HEVC 표준에 대한) 다른 상업적으로 이용가능한 인코더 및 디코더는, 인코더가 주어진 시퀀스에 대해 컬러 공간, 컬러 샘플링 레이트 및 비트 깊이를 규정하는 것을 허용한다. 규정된 컬러 공간, 컬러 샘플링 레이트 및 비트 깊이는 전체 비디오 시퀀스에 대해 사용된다. 이들 방식은, 단일의 비디오 시퀀스 내에서 아주 상이한 종류의 비디오 콘텐트를 프로세싱할 수도 있는 범용 코덱 시스템에 대해 충분한 유연성을 제공하지 않는다.
요약하면, 상세한 설명은, 적응적 인코딩 및 디코딩의 분야에서 혁신안을 제시한다. 예를 들면, 혁신안 중 몇몇은, 인코딩 동안 비디오 시퀀스 내의 단위(unit) 사이에서 컬러 공간을 전환하는 인코더뿐만 아니라, 대응하는 디코더에 관한 것이다. 다른 혁신안은, 인코딩 동안 비디오 시퀀스 내의 단위 사이에서 컬러 샘플링 레이트를 전환하는 인코더뿐만 아니라, 대응하는 디코더에 관한 것이다. 또 다른 혁신안은, 인코딩 동안 비디오 시퀀스 내의 단위 사이에서 비트 깊이를 전환하는 인코더뿐만 아니라, 대응하는 디코더에 관한 것이다. 이들 혁신안은 많은 시나리오에서 코딩 효율성을 향상시킬 수 있다.
본원에서 설명되는 혁신안의 제1 양태에 따르면, 이미지 또는 비디오 인코더는 한 시퀀스에서의 비디오를 인코딩한다. 인코딩의 일부로서, 인코더는, 시퀀스 내의 비디오의 적어도 몇몇 단위(예를 들면, 시퀀스의 픽쳐, 시퀀스의 주어진 픽쳐의 슬라이스, 시퀀스의 주어진 픽쳐의 블록) 사이에서, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 공간적으로 및/또는 시간적으로 전환한다. 인코더는 인코딩된 데이터를 비트스트림에서 출력한다. 인코딩된 데이터는, 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이가 어떻게 전환하는지를 나타내는 하나 이상의 신호를 포함한다.
대응하는 디코더는 인코딩된 데이터를 비트스트림에서 수신한다. 인코딩된 데이터는, 시퀀스 내의 비디오의 적어도 몇몇 단위(예를 들면, 시퀀스의 픽쳐, 시퀀스의 주어진 픽쳐의 슬라이스, 시퀀스의 주어진 픽쳐의 블록) 사이에서, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이가 어떻게 전환하는지를 나타내는 하나 이상의 신호를 포함한다. 디코더는 인코딩된 데이터를 디코딩한다. 디코딩의 일부로서, 디코더는, 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 공간적으로 및/또는 시간적으로 전환한다.
예를 들면, 인코딩 또는 디코딩 동안, 전환은, 컬러 공간 변환 동작을 사용하여 컬러 공간 중 두 개의 컬러 공간 사이에서 변경하는 것 포함한다. 컬러 공간 변환 동작의 경우, 컬러 공간은 적어도 하나의 YUV 타입 컬러 공간 및 적어도 하나의 RGB 타입 컬러 공간을 포함할 수 있다.
또는, 다른 예로서, 인코딩 또는 디코딩 동안, 전환은, 컬러 공간 재정렬 동작(color space reordering operation)을 사용하여 컬러 공간 중 두 개의 컬러 공간 사이에서 변경하는 것을 포함한다. 컬러 공간 재정렬 동작의 경우, 컬러 공간은 다수의 RGB 타입 컬러 공간을 포함할 수 있다.
또는, 다른 예로서, 인코딩 또는 디코딩 동안, 전환은 컬러 샘플링 레이트 중 두 개의 컬러 샘플링 레이트 사이에서 변경하는 것을 포함한다. 컬러 샘플링 레이트는 4:4:4, 4:2:2, 4:2:0 및 4:0:0 중 두 개 이상을 포함할 수 있다.
또는, 다른 예로서, 인코딩 또는 디코딩 동안, 전환은 비트 깊이 중 두 개의 비트 깊이 사이에서 변경하는 것을 포함한다. 비트 깊이는 샘플당 12 비트, 샘플당 10 비트 그리고 샘플당 8 비트 중 두 개 이상을 포함할 수 있다. 또한, 비디오의 주어진 단위의 상이한 컬러 성분은 상이한 비트 깊이를 가질 수 있다.
컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이가 어떻게 전환하는지를 나타내는 신호(들)에 대한 신택스(syntax) 및 시맨틱스(semantics)는 구현예에 의존한다. 예를 들면, 신호(들)는 비디오의 주어진 단위에 대한 플래그 값을 포함한다. 플래그 값은, 컬러 공간, 컬러 샘플링 레이트 또는 비트 깊이에 대한 두 개의 옵션 사이에서의 선택을 나타낸다. 또는, 신호(들)는, 비디오의 주어진 단위에 대한 신택스 엘리먼트를 포함한다. 신택스 엘리먼트는, 컬러 공간, 컬러 샘플링 레이트, 또는 비트 깊이에 대한 세 개 이상의 옵션 사이에서의 선택을 나타낸다. 신호는 예측적으로 코딩될 수 있는데, 이 경우, 비디오의 주어진 단위에 대한 파라미터에 대한 델타 값은, 파라미터의 실제 값과 그 예측기(predictor) 사이의 차이를 나타낸다. 예측기는 시퀀스 레이어 파라미터일 수 있다. 또는, 예측기는, 비디오의 하나 이상의 이전 단위에 대한 파라미터의 하나 이상의 실제 값에 기초할 수 있다.
신호(들)에 추가하여, 인코딩된 데이터는, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 식별하거나 또는 정의하는 정보를 포함할 수 있다. 예를 들면, 그 정보는 컬러 공간 중 두 개의 컬러 공간 사이의 컬러 공간 변환 동작에 사용할 수 있는 값의 매트릭스를 포함할 수 있다.
인코딩 또는 디코딩은, 이전에 재구성된 콘텐트의 샘플 값의 세트에 적어도 부분적으로 기초한 현재 픽쳐에서의 현재 블록의 샘플 값의 예측을 포함할 수 있다. 인트라 픽쳐 예측의 경우, 이전에 재구성된 콘텐트의 샘플 값의 세트는 현재 픽쳐의 일부이다. 인터 픽쳐 예측의 경우, 이전에 재구성된 콘텐트의 샘플 값의 세트는 참조 픽쳐의 일부이다. 예측의 일부로서, 인코더 또는 디코더는 이전에 재구성된 콘텐트의 샘플 값의 세트 및 현재 블록의 샘플 값이 상이한 포맷인지의 여부를 평가할 수 있다.
몇몇 경우에서, 이전에 재구성된 콘텐트의 샘플 값의 세트는 제1 포맷으로 저장되고, 현재 블록의 샘플 값은 제1 포맷과는 상이한 제2 포맷으로 인코딩된다. 이 경우, 예측의 일부로서, 인코더 또는 디코더는, (a) 이전에 재구성된 콘텐트의 샘플 값의 세트를, 제1 포맷으로부터 제2 포맷으로 변환할 수 있고(예를 들면, 두 개의 컬러 공간 사이에서 변환하는 것, 두 개의 컬러 샘플링 레이트 사이에서 변환하는 것 및/또는 두 개의 비트 깊이 사이에서 변환하는 것), (b) 이전에 재구성된 콘텐트의 변환된 샘플 값의 세트를 사용하여 현재 블록의 샘플 값을 예측할 수 있고, (c) 현재 블록의 예측된 샘플 값에 적어도 부분적으로 기초하여 현재 블록의 샘플 값을 재구성할 수 있다. 또는, 예측의 일부로서, 인코더 또는 디코더는, (a) 이전에 재구성된 콘텐트의 샘플 값의 세트를 사용하여 현재 블록의 샘플 값을 예측할 수 있고, (b) 현재 블록의 예측된 샘플 값을 제1 포맷으로부터 제2 포맷으로 변환할 수 있고, (c) 현재 블록의 변환된 예측된 샘플 값에 적어도 부분적으로 기초하여 현재 블록의 샘플 값을 재구성할 수 있다. 예측 이후, 인코더 또는 디코더는, (d) 현재 블록의 재구성된 샘플 값을 제2 포맷으로부터 제1 포맷으로 변환할 수 있고, (e) 현재 블록의 변환된 재구성된 샘플 값을 이전에 재구성된 콘텐트의 일부로서 (제1 포맷으로) 저장할 수 있다.
인코딩 또는 디코딩은 또한, 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트를 디블록화(deblocking)하는 것을 포함할 수 있다. 예를 들면, 디블록화의 일부로서, 인코더 또는 디코더는, 두 개의 인접한 블록의 주 성분이 넌제로의 잔차 값(residual value)을 갖는지의 여부에 따라 디블록화 필터의 세기(strength)를 조정한다. 또는, 디블록화의 일부로서, 인코더 또는 디코더는, 두 개의 인접한 블록의 대응하는 성분이 넌제로의 잔차 값을 갖는지의 여부에 따라 디블록화 필터의 세기를 조정한다. 따라서, 규칙(들)은 두 개의 인접한 블록의 상이한 컬러 공간을 담당할 수 있다.
컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환에 대한 혁신안은, 방법의 일부로서, 그 방법을 수행하도록 적응된 컴퓨팅 디바이스의 일부로서 또는 컴퓨팅 디바이스로 하여금 그 방법을 수행하게 하기 위한 컴퓨터 실행가능 명령어를 저장하는 유형의(tangible) 컴퓨터 판독가능 매체의 일부로서 구현될 수 있다. 다양한 혁신안은 조합하여 또는 개별적으로 사용될 수 있다. 특히, 비디오 인코더 및 디코더는 비디오 시퀀스 내에서 (고정된 컬러 샘플링 레이트 및 고정된 비트 깊이를 가지고) 컬러 공간만을 적응적으로 전환할 수 있다. 또는, 비디오 인코더 및 디코더는 (고정된 컬러 공간 및 고정된 비트 깊이를 가지고) 비디오 시퀀스 내에서 컬러 샘플링 레이트만을 적응적으로 전환할 수 있다. 또는, 비디오 인코더 및 디코더는 (고정된 컬러 공간 및 고정된 컬러 샘플링 레이트를 가지고) 비디오 시퀀스 내에서 비트 깊이만을 적응적으로 전환할 수 있다. 또는, 비디오 인코더 및 디코더는, (1) 비디오 시퀀스 내에서, 비트 깊이를 제외하고, 컬러 공간 및 컬러 샘플링 레이트를 적응적으로 전환할 수 있거나, (2) 비디오 시퀀스 내에서, 비디오 시퀀스를 제외하고, 컬러 공간 및 비트 깊이를 적응적으로 전환할 수 있거나, 또는 (3) 비디오 시퀀스 내에서, 컬러 공간을 제외하고, 컬러 샘플링 레이트 및 비트 깊이를 적응적으로 전환할 수 있다. 또는, 비디오 인코더 및 디코더는 비디오 시퀀스 내에서 컬러 공간, 컬러 샘플링 레이트, 및 비트 깊이를 적응적으로 전환할 수 있다.
본 발명의 상기 및 다른 목적, 피쳐, 및 이점은, 첨부의 도면을 참조로 진행하는 하기의 상세한 설명으로부터 더욱 명확하게 될 것이다.
도 1은 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 컴퓨팅 시스템의 도면이다.
도 2a 및 도 2b는 몇몇 설명된 실시형태가 구현될 수 있는 예시적인 네트워크 환경의 도면이다.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 인코더 시스템의 도면이다.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 디코더 시스템의 도면이다.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 인코더를 예시하는 도면이다.
도 6은 몇몇 설명된 실시형태가 연계하여 구현될 수 있는 예시적인 비디오 디코더를 예시하는 도면이다.
도 7은 스크린 캡쳐에 대한 입력을 제공할 수도 있는 콘텐트를 갖는 컴퓨터 데스크탑 환경을 예시하는 도면이다.
도 8은 자연적 비디오 콘텐트(natural video content) 및 인공적 비디오 콘텐트(artificial video content)를 갖는 복합 비디오를 예시하는 도면이다.
도 9는, 시퀀스에서의 픽쳐에 대한 픽쳐 적응적 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 예시하는 도면이다.
도 10은, 시퀀스에서의 픽쳐의 슬라이스에 대한 슬라이스 적응적 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 예시하는 도면이다.
도 11은, 시퀀스에서의 픽쳐의 슬라이스의 블록에 대한 블록 적응적 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 예시하는 도면이다.
도 12는 인코딩 동안 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 적응적으로 전환하기 위한 일반화된 기술을 예시하는 플로우차트이고, 도 13은 인코딩 동안 단위 기반으로(on a unit-by-unit basis) 적응적으로 전환하기 위한 보다 상세한 예시적인 기술을 예시하는 플로우차트이다.
도 14는 디코딩 동안 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 적응적으로 전환하기 위한 일반화된 기술을 예시하는 플로우차트이고, 도 15는 디코딩 동안 단위 기반으로 적응적으로 전환하기 위한 보다 상세한 예시적인 기술을 예시하는 플로우차트이다.
도 16은, 한 포맷으로 인코딩된 블록의 샘플 값을, 상이한 포맷의 이전에 재구성된 콘텐트의 샘플 값의 세트로부터 예측하기 위한 기술을 예시하는 플로우차트이다.
상세한 설명은, 적응적 인코딩 및 디코딩의 분야에서 혁신안을 제시한다. 예를 들면, 혁신안 중 몇몇은, 인코딩 동안 비디오 시퀀스 내의 단위(unit) 사이에서 컬러 공간을 전환하는 인코더뿐만 아니라, 대응하는 디코더에 관한 것이다. 다른 혁신안은, 인코딩 동안 비디오 시퀀스 내의 단위 사이에서 컬러 샘플링 레이트를 전환하는 인코더뿐만 아니라, 대응하는 디코더에 관한 것이다. 또 다른 혁신안은, 인코딩 동안 비디오 시퀀스 내의 단위 사이에서 비트 깊이를 전환하는 인코더뿐만 아니라, 대응하는 디코더에 관한 것이다. 이들 혁신안은 많은 시나리오에서 코딩 효율성을 향상시킬 수 있다.
일반적으로, 컬러 공간(종종 컬러 모델로 칭해짐)은 물리적 위치마다 n(n≥1) 개의 값으로 컬러를 표현하기 위한 모델인데, 이 경우 n 개의 값의 각각은 그 위치에 대한 컬러 성분 값을 제공한다.
예를 들면, YUV 컬러 공간에서, 루마(또는 Y) 성분 값은 한 위치에서의 대략적인 휘도를 나타내고 다수의 크로마(또는 U 및 V) 성분 값은 그 위치에서의 컬러 차이를 나타낸다. 컬러 차이 값(및 RGB와 같은 다른 컬러 공간으로부터 YUV 컬러 공간으로의/YUV 컬러 공간으로부터 RGB와 같은 다른 컬러 공간으로의 변환 동작)의 정확한 정의는 구현예에 의존한다. 통상적으로, 인코딩 및 디코딩의 목적상, Y 성분은 주 성분이고 U 및 V 성분은 보조 성분이다. 일반적으로, 본원에서 사용되는 바와 같이, 용어 YUV 타입 컬러 공간은, 루마(또는 휘도) 성분 및 하나 이상의 크로마(또는 색차(chrominance)) 성분을 갖는 임의의 컬러 공간을 나타내는데, Y'UV, YIQ, Y'IQ 및 YDbDr뿐만 아니라 YCbCr 및 YCoCg와 같은 변형안을 포함한다.
사용되는 성분 신호 척도(component signal measure)는, 비선형 전달 특성 함수(non-linear transfer characteristics function)(일반적으로 "감마 사전 보상(gamma pre-compensation)"으로 알려져 있으며 종종 프라임 심볼의 사용에 의해 표기되지만, 프라임 심볼은 종종 인쇄상의 편의상 생략된다)의 적용을 통해 조정될 수도 있다. 또는, 성분 신호 척도는, 광 진폭과 선형 관계를 갖는 도메인에 있을 수도 있다. 루마 및 크로마 성분 신호는 인간 시각 시스템에 대한 휘도 및 컬러의 지각 작용과 잘 정렬될 수도 있거나, 또는 루마 및 크로마 성분 신호는 (예를 들면, 컬러 성분 값의 계산을 단순화하는 공식이 적용되는 YCoCg 변형안에서와 같이) 이러한 척도로부터 다소 벗어날 수도 있다.
다른 예로서, RGB 컬러 공간에서, 레드(R) 성분 값은 한 위치에서의 레드 강도를 나타내고, 그린(G) 성분 값은 한 위치에서의 그린 강도를 나타내고, 블루(B) 성분 값은 한 위치에서의 블루 강도를 나타낸다. 본원에서 사용되는 바와 같이, 용어 RGB 타입 컬러 공간은 R, G 및 B 컬러 성분을 임의의 순서로 갖는 컬러 공간을 나타낸다. 예는 RGB, BGR 및 GBR 컬러 공간을 포함하는데, 이들은 인코딩 및 디코딩의 목적을 위한 주 성분의 관점에서 상이하다. 주 성분은, 컬러 공간의 첫 번째 문자로 나타내어진다(예를 들면, RGB의 경우 R).
컬러 샘플링 레이트(종종 크로마 샘플링 레이트로 칭해짐)는 컬러 성분 사이의 상대적 공간 해상도를 가리킨다. 예를 들면, 4:4:4의 컬러 샘플링 레이트의 경우, 보조 성분(secondary component)(예를 들면, YUV의 경우 U 및 V)에 대한 정보는, 주 성분(primary component)(예를 들면, YUV의 경우 Y 성분)에 대한 정보와 동일한 공간 해상도를 갖는다. 4:2:2 또는 4:2:0의 컬러 샘플링 레이트의 경우, 보조 성분에 대한 정보는, 주 성분에 대한 정보에 비해 다운샘플링된다. YUV 4:2:0 포맷은, 크로마 해상도가 수평 및 수직 둘 다에서 루마 해상도의 절반의 해상도가 되도록, YUV 4:4:4 포맷과 비교하여 크로마 정보를 서브샘플링하는 포맷이다. YUV 4:2:2 포맷은, 크로마 해상도가 수평에서 루마 해상도의 절반의 해상도가 되도록, YUV 4:4:4 포맷과 비교하여 크로마 정보를 서브샘플링하는 포맷이다. 컬러 샘플링 레이트의 다른 예는 4:1:1(보조 성분이 수평에서 1/4 해상도를 갖는다) 및 4:0:0(보조 성분이 드랍된다)이다. 컬러 서브샘플링은, 통상적으로, YUV-타입 컬러 공간에 적용된다. RGB 타입 컬러 공간은, 일반적으로, 4:4:4의 컬러 샘플링 레이트를 가지지만, 그러나 어떤 보조 컬러 성분이 서브샘플링되는지에 따라 상이한 컬러 샘플링 레이트를 가질 수 있다.
종래에는 YUV 4:2:0 포맷이 비디오 인코딩 및 디코딩을 위해 사용되었지만, 비디오가 더 풍부한 컬러 정보를 갖는 사용 사례가 몇몇 존재하며, 더 높은 컬러 충실도의 구실이 될 수도 있다. 이러한 사용 사례에서, YUV 4:4:4 크로마 샘플링 포맷과 YUV 4:2:0 크로마 샘플링 포맷 사이의 차이는 뷰어에 의해 보다 쉽게 지각된다. 예를 들면, 컴퓨터 스크린 텍스트 콘텐트, 인공의 선명하게 된(hard-edged) 경계를 갖는 애니메이션화 비디오 콘텐트, 또는 보다 일반적으로는 비디오 콘텐트의 소정의 피쳐(예컨대 스크롤하는 타이틀 및 선명하게 된 그래픽, 또는 크로마 채널에 집중된 정보를 갖는 비디오)의 인코딩/디코딩의 경우, 4:4:4 포맷은 4:2:0 포맷보다 바람직할 수도 있다.
비트 깊이는 샘플 값당 비트의 수를 가리킨다. 일반적인 비트 깊이는 샘플당 8 비트, 샘플당 10 비트 그리고 샘플당 12 비트이다. 다른 가능한 비트 깊이는 샘플당 4 비트 및 샘플당 16 비트를 포함한다.
본원에서 설명되는 동작이 비디오 인코더 또는 비디오 디코더에 의해 수행되고 있는 것으로 여기저기에서 설명되지만, 많은 경우에서, 동작은 다른 타입의 미디어 프로세싱 툴(예를 들면, 이미지 인코더 또는 이미지 디코더)에 의해 수행될 수 있다. 예를 들면, 동작은, 스틸 이미지 코딩/디코딩, 의료적 스캔 콘텐트 코딩/디코딩, 멀티스펙트럼 영상 콘텐트(multispectral imagery content) 코딩/디코딩, 등등과 같은 애플리케이션에 대해 수행될 수 있다.
본원에서 설명되는 혁신안 중 몇몇은 H.265/HEVC 표준에 고유한 신택스 엘리먼트 및 동작을 참조로 예시된다. 예를 들면, H.265/HEVC 표준의 초안 버전(draft version) JCTVC-N1005 - 2014년 2월의 JCTVC-P1005_v1 "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6"에 대한 참조가 이루어진다. 본원에서 설명되는 혁신안은 또한, 다른 표준 또는 포맷에 대해 구현될 수 있다.
보다 일반적으로는, 본원에서 설명되는 예에 대한 다양한 대안예도 가능하다. 예를 들면, 본원에서 설명되는 방법 중 몇몇은, 설명되는 방법 액트(act)의 순서를 변경하는 것에 의해, 소정의 방법 액트를 분할, 반복, 또는 생략하는 것에 의해, 등등에 의해 변경될 수 있다. 개시된 기술의 다양한 양태는 조합하여 또는 개별적으로 사용될 수 있다. 상이한 실시형태는 설명된 혁신안 중 하나 이상을 사용한다. 본원에서 설명되는 혁신안 중 몇몇은 배경에서 언급된 문제점 중 하나 이상을 중점적으로 다룬다. 통상적으로는, 주어진 기술/툴은 이러한 문제점 모두를 해결하지는 않는다.
I. 예시적인 컴퓨팅 시스템.
도 1은, 설명된 혁신안 중 몇몇이 구현될 수도 있는 적절한 컴퓨팅 시스템(100)의 일반화된 예를 예시한다. 컴퓨팅 시스템(100)은, 혁신안이 다양한 범용의 또는 특수 목적의 컴퓨팅 시스템에서 구현될 수도 있기 때문에, 용도 또는 기능성의 범위에 관해 어떠한 제한도 제시하도록 의도되지는 않는다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 하나 이상의 프로세싱 유닛(110, 115) 및 메모리(120, 125)를 포함한다. 프로세싱 유닛(110, 115)은 컴퓨터 실행가능 명령어를 실행한다. 프로세싱 유닛은 범용 중앙 프로세싱 유닛(central processing unit; "CPU"), 주문형 반도체(application-specific integrated circuit; "ASIC")에서의 프로세서, 또는 임의의 다른 타입의 프로세서일 수 있다. 다중 프로세싱 시스템에서, 프로세싱 파워를 증가시키기 위해 다수의 프로세싱 유닛이 컴퓨터 실행가능 명령어를 실행한다. 예를 들면, 도 1은 중앙 프로세싱 유닛(110)뿐만 아니라 그래픽 프로세싱 유닛 또는 코프로세싱 유닛(co-processing unit)(115)을 도시한다. 유형의(tangible) 메모리(120, 125)는, 프로세싱 유닛(들)에 의해 액세스될 수 있는, 휘발성 메모리(예를 들면, 레지스터, 캐시, RAM), 불휘발성 메모리(예를 들면, ROM, EEPROM, 플래시 메모리 등등), 또는 이 둘의 몇몇 조합일 수도 있다. 메모리(120, 125)는, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환을 위한 하나 이상의 혁신안을 구현하는 소프트웨어(180)를, 프로세싱 유닛(들)에 의한 실행에 적합한 컴퓨터 실행가능 명령어의 형태로 저장한다.
컴퓨팅 시스템은 추가적인 피쳐를 구비할 수도 있다. 예를 들면, 컴퓨팅 시스템(100)은 스토리지(140), 하나 이상의 입력 디바이스(150), 하나 이상의 출력 디바이스(160), 및 하나 이상의 통신 연결부(170)를 포함한다. 인터커넥션 메커니즘(interconnection mechanism)(도시되지 않음), 예컨대 버스, 컨트롤러, 또는 네트워크는 컴퓨팅 시스템(100)의 컴포넌트를 인터커넥트한다. 통상적으로, 오퍼레이팅 시스템 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(100)에서 실행하는 다른 소프트웨어에 대한 동작 환경을 제공하고, 컴퓨팅 시스템(100)의 컴포넌트의 활동을 조화시킨다(coordinate).
유형의 스토리지(140)는 착탈식 또는 비착탈식일 수도 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 정보를 저장하기 위해 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 스토리지(140)는, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환을 위한 하나 이상의 혁신안을 구현하는 소프트웨어(180)에 대한 명령어를 저장한다.
입력 디바이스(들)(150)는 터치 입력 디바이스 예컨대 키보드, 마우스, 펜, 또는 트랙볼, 음성 입력 디바이스, 스캐닝 디바이스, 또는 컴퓨팅 시스템(100)으로 입력을 제공하는 다른 디바이스일 수도 있다. 비디오의 경우, 입력 디바이스(들)(150)는 카메라, 비디오 카드, TV 튜너 카드, 스크린 캡쳐 모듈, 또는 비디오 입력을 아날로그 또는 디지털 형태로 받아들이는 유사한 디바이스, 또는 비디오 입력을 컴퓨팅 시스템(100) 안으로 읽어들이는 CD-ROM 또는 CD-RW일 수도 있다. 출력 디바이스(들)(160)는 디스플레이, 프린터, 스피커, CD-라이터, 또는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 다른 디바이스일 수도 있다.
통신 연결부(들)(170)는 통신 매체를 통한 다른 통신 엔티티로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 변조된 데이터 신호에서의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는, 자신의 특성 중 하나 이상을, 신호에서 정보를 인코딩하는 것과 같은 방식으로 설정하거나 변경한 신호를 의미한다. 비제한적인 예로서, 통신 매체는 전기적 캐리어, 광학적 캐리어, RF 캐리어, 또는 다른 캐리어를 사용할 수 있다.
혁신안은 컴퓨터 판독가능 매체의 일반적 맥락에서 설명될 수 있다. 컴퓨터 판독가능 매체는, 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 유형의 매체이다. 비제한적인 예로서, 컴퓨팅 시스템(100)과 관련하여, 컴퓨터 판독가능 매체는 메모리(120, 125), 스토리지(140), 및 상기의 것 중 임의의 것의 조합을 포함한다.
혁신안은, 컴퓨팅 시스템에서 타겟인 실제 또는 가상의 프로세서 상에서 실행되고 있는, 프로그램 모듈에 포함되는 것과 같은 컴퓨터 실행가능 명령어의 일반적 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은, 특정한 태스크(task)를 수행하거나 또는 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 컴포넌트, 데이터 구조체 등등을 포함한다. 프로그램 모듈의 기능성은 다양한 실시형태에서 소망되는 바에 따라 프로그램 모듈 사이에서 분할되거나 또는 결합될 수도 있다. 프로그램 모듈에 대한 컴퓨터 실행가능 명령어는 로컬 컴퓨팅 시스템 또는 분산형 컴퓨팅 시스템 내에서 실행될 수도 있다.
용어 "시스템" 및 "디바이스"는 본원에서 상호교환적으로 사용된다. 문맥상 그렇지 않다고 명확하게 나타내지 않는 한, 어떠한 용어도 컴퓨팅 디바이스 또는 컴퓨팅 시스템의 타입에 대해 아무런 제한도 내포하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 또는 분산될 수도 있으며, 본원에서 설명되는 기능성을 구현하는 소프트웨어와의 특수 목적의 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시된 방법은 또한, 개시된 방법 중 임의의 것을 수행하도록 구성되는 특수한 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들면, 개시된 방법은, 개시된 방법 중 임의의 것을 구현하도록 특별하게 설계되거나 구성되는 집적 회로(예를 들면, ASIC(예컨대 ASIC 디지털 신호 프로세서(digital signal processor; "DSP"), 그래픽 프로세싱 유닛(graphics processing unit; "GPU"), 또는 프로그래머블 로직 디바이스(programmable logic device; "PLD"), 예컨대 필드 프로그래머블 게이트 어레이(field programmable gate array; "FPGA"))에 의해 구현될 수 있다.
표현 때문에, 상세한 설명은, 컴퓨팅 시스템에서의 컴퓨터 동작을 설명하기 위해, "결정한다" 및 "사용한다"와 같은 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행되는 동작에 대한 하이 레벨의 추상 개념이며 사람에 의해 수행되는 행위와 혼돈되어선 안된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현예에 따라 달라진다.
II. 예시적인 네트워크 환경.
도 2a 및 도 2b는 비디오 인코더(220) 및 비디오 디코더(270)를 포함하는 예시적인 네트워크 환경(201, 202)을 도시한다. 인코더(220) 및 디코더(270)는 적절한 통신 프로토콜을 사용하여 네트워크(250)를 통해 연결된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에서 도시되는 네트워크 환경(201)에서, 각각의 실시간 통신(real-time communication; "RTC") 툴(210)은 양방향 통신을 위해 인코더(220) 및 디코더(270) 둘 다를 포함한다. 주어진 인코더(220)는, H.265/HEVC 표준, SMPTE 421M 표준, ISO-IEC 14496-10 표준(H.264 또는 AVC로 또한 알려짐), 다른 표준, 또는 독점적 포맷의 변형안 또는 확장안을 따르는 출력을 생성할 수 있는데, 대응하는 디코더(270)가 인코더(220)로부터 인코딩된 데이터를 받아들이게 된다. 양방향 통신은 화상 회의, 영상 전화, 또는 다른 양자간 또는 다자간 통신 시나리오의 일부일 수 있다. 도 2a의 네트워크 환경(201)이 두 개의 실시간 통신 툴(210)을 포함하지만, 네트워크 환경(201)은, 대신, 다자간 통신(multiparty communication)에 참여하는 세 개 이상의 실시간 통신 툴(210)을 포함할 수 있다.
실시간 통신 툴(210)은 인코더(220)에 의한 인코딩을 관리한다. 도 3은 실시간 통신 툴(210)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 인코더 시스템을 사용한다. 실시간 통신 툴(210)은 또한 디코더(270)에 의한 디코딩을 관리한다. 도 4는 실시간 통신 툴(210)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 디코더 시스템을 사용한다.
도 2b에서 도시되는 네트워크 환경(202)에서, 인코딩 툴(212)은, 디코더(270)를 포함하는 다수의 재생 툴(214)로 전달하기 위해 비디오를 인코딩하는 인코더(220)를 포함한다. 단방향 통신은, 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 스크린 캡쳐 모듈, 원격 데스크탑 회의 프리젠테이션 또는 비디오가 인코딩되어 한 장소에서 하나 이상의 다른 장소로 전송되는 다른 시나리오에 대해 제공될 수 있다. 도 2b의 네트워크 환경(202)이 두 개의 재생 툴(214)을 포함하지만, 네트워크 환경(202)은 더 많은 또는 더 적은 재생 툴(214)을 포함할 수 있다. 일반적으로, 재생 툴(214)은, 재생 툴(214)이 수신할 비디오의 스트림을 결정하기 위해 인코딩 툴(212)과 통신한다. 재생 툴(214)은 스트림을 수신하고, 수신된 인코딩된 데이터를 적절한 기간 동안 버퍼링하고, 디코딩 및 재생을 시작한다.
도 3은 인코딩 툴(212)에 포함될 수 있는 예시적인 인코더 시스템(300)을 도시한다. 대안적으로, 인코딩 툴(212)은 다른 인코더 시스템을 사용한다. 인코딩 툴(212)은 또한, 하나 이상의 재생 툴(214)과의 연결을 관리하기 위한 서버측 컨트롤러 로직을 포함할 수 있다. 도 4는, 재생 툴(214)에 포함될 수 있는 예시적인 디코더 시스템(400)을 도시한다. 대안적으로, 재생 툴(214)은 다른 디코더 시스템을 사용한다. 재생 툴(214)은 또한, 인코딩 툴(212)과의 연결을 관리하기 위한 클라이언트측 컨트롤러 로직을 포함할 수 있다.
III. 예시적인 인코더 시스템.
도 3은 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 인코더 시스템(300)의 블록도이다. 인코더 시스템(300)은, 다수의 인코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시(low-latency) 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터 재생용 미디어를 생성하기 위한 더 높은 레이턴시의 인코딩 모드 중 임의의 것에서 동작할 수 있는 범용 인코딩 툴일 수 있거나, 또는 인코더 시스템(300)은 하나의 이러한 인코딩 모드에 대해 적응되는 특수 목적의 인코딩 툴일 수 있다. 인코더 시스템(300)은 특정한 타입의 콘텐트(예를 들면, 스크린 캡쳐 콘텐트)의 인코딩을 위해 적응될 수 있거나, 또는 인코더 시스템(300)은 여러 상이한 타입의 콘텐트(예를 들면, 스크린 캡쳐 콘텐트 및 자연적 비디오) 중 임의의 것의 인코딩을 위해 적응될 수 있다. 인코더 시스템(300)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임(311)의 시퀀스를 수신하고 인코딩된 데이터를 채널(390)로의 출력으로서 생성한다. 채널로 출력되는 인코딩된 데이터는, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환으로 인코딩된 콘텐트를 포함할 수 있다.
비디오 소스(310)는 카메라, 튜너 카드, 저장 매체, 스크린 캡쳐 모듈, 또는 다른 디지털 비디오 소스일 수 있다. 비디오 소스(310)는, 예를 들면, 초당 30프레임의 프레임 레이트에서 비디오 프레임의 시퀀스를 생성한다. 본원에서 사용되는 바와 같이, 용어 "프레임"은 일반적으로, 소스, 코딩된 또는 재구성된 이미지 데이터를 지칭한다. 순차 주사 비디오(progressive-scan video)의 경우, 프레임은 순차 주사 비디오 프레임이다. 인터레이스 방식의 비디오(interlaced video)의 경우, 예시적인 실시형태에서, 인터레이스 방식의 비디오 프레임은 인코딩 이전에 디인터레이스된다(de-interlaced).
대안적으로, 두 개의 상보적 인터레이스 방식의 비디오 필드가 단일의 비디오 프레임으로서 함께 인코딩되거나 또는 두 개의 별개로 인코딩된 필드로서 인코딩된다. 순차 주사 비디오 프레임 또는 인터레이스 방식 주사 비디오 프레임을 나타내는 것 외에, 용어 "프레임" 또는 "픽쳐"는 단일의 짝을 이루지 않는 비디오 필드(single non-paired video field), 비디오 필드의 상보적 쌍, 주어진 시간에서의 비디오 오브젝트를 나타내는 비디오 오브젝트 플레인, 또는 더 큰 이미지에서의 주목(of interest) 영역을 나타낼 수 있다. 비디오 오브젝트 플레인 또는 영역은, 한 장면의 다수의 오브젝트 또는 영역을 포함하는 더 큰 이미지의 일부일 수 있다.
도달하는 소스 프레임(311)은, 다수의 프레임 버퍼 저장 영역(321, 322, …, 32n)을 포함하는 소스 프레임 임시 메모리 저장 영역(320)에 저장된다. 프레임 버퍼(321, 322 등등)는 소스 프레임 저장 영역(320)에 하나의 소스 프레임을 유지한다. 소스 프레임(311) 중 하나 이상이 프레임 버퍼(321, 322, 등등)에 저장된 이후, 프레임 선택기(330)는 소스 프레임 저장 영역(320)으로부터 개개의 소스 프레임을 선택한다. 인코더(340)로의 입력을 위해 프레임 선택기(330)에 의해 프레임이 선택되는 순서는, 비디오 소스(310)에 의해 프레임이 생성되는 순서와는 상이할 수도 있다, 예를 들면, 몇몇 나중의 프레임이 먼저 인코딩되는 것을 허용하기 위해 따라서 시간적으로 역방향의 예측(temporally backward prediction)을 용이하게 하기 위해, 몇몇 프레임의 인코딩은 순서에서 지연될 수도 있다. 인코더(340) 이전에, 인코더 시스템(300)은, 인코딩 이전에, 선택된 프레임(331)의 전처리(pre-processing)(예를 들면, 필터링)를 수행하는 전처리기(pre-processor)(도시되지 않음)를 포함할 수 있다.
인코더(340)는, 코딩된 프레임(341)을 생성하기 위해, 선택된 프레임(331)을 인코딩하고 또한 메모리 관리 제어 동작(memory management control operation; "MMCO") 신호(342) 또는 참조 픽쳐 세트(reference picture set; "RPS") 정보를 생성한다. RPS는, 현재 프레임 또는 임의의 후속하는 프레임에 대한 모션 보상에서 참조를 위해 사용될 수도 있는 프레임의 세트이다. 현재 프레임이 인코딩된 첫 번째 프레임이 아니고, 자신의 인코딩 프로세스를 수행하고 있는 경우, 인코더(340)는, 디코딩된 프레임 임시 메모리 저장 영역(360)에 저장되어 있는 하나 이상의 이전에 인코딩된/디코딩된 프레임(369)을 사용할 수도 있다. 이렇게 저장된 디코딩된 프레임(369)은 현재 소스 프레임(331)의 콘텐트의 인터 프레임 예측(inter-frame prediction)을 위한 참조 프레임으로서 사용된다. MMCO/RPS 정보(342)는 디코더에게, 어떤 재구성된 프레임이 참조 프레임으로서 사용될 수도 있는지를 나타내며, 따라서 프레임 저장 영역에 저장되어야 한다.
인코더(340)는, 특정한 컬러 샘플링 레이트(예를 들면, 4:4:4) 및 샘플당 특정한 수의 비트(예를 들면, 샘플당 12 비트)를 가지고 특정한 컬러 공간(예를 들면, YUV 타입 컬러 공간, RGB 타입 컬러 공간)에서 비디오를 받아 들인다. 인코딩 동안, 상이한 픽쳐, 슬라이스, 블록 또는 비디오의 다른 단위에 대해, 인코더(340)는, YUV 타입 컬러 공간과 RGB 타입 컬러 공간 사이에서 변환하기 위해, 또는 몇몇 다른 컬러 공간으로/으로부터 변환하기 위해, 컬러 공간 변환을 수행할 수 있다. 인코더(340)는, 컬러 성분을 재정렬하기 위해, 어떤 컬러 성분이 주 성분인지를 변경하는(예를 들면, RGB, BGR 및 GBR 포맷 사이에서 변환하는) 컬러 공간 변환을 또한 수행할 수 있다. 인코딩 동안, 인코더(340)는 또한, 상이한 픽쳐, 슬라이스, 블록 또는 비디오의 다른 단위에 대한 컬러 샘플링 레이트를 (예를 들면, 4:4:4, 4:2:2 및 4:2:0 포맷 사이에서) 변경하기 위해 재샘플링 프로세싱(resampling processing)을 수행할 수 있다. 인코더(340)는 또한, 상이한 픽쳐, 슬라이스, 블록 또는 비디오의 다른 단위에 대한 인코딩 동안, 비트 깊이를 (예를 들면, 샘플당 12 비트, 샘플당 10 비트 및 샘플당 8 비트 사이에서) 변경할 수 있다. 몇몇 예시적인 구현예에서, 인코더(340)는 인코딩 동안 픽쳐 단위 기반으로 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환할 수 있다.
일반적으로, 인코더(340)는, 타일로의 구획화, 컬러 공간의 적응, 컬러 샘플링 레이트 및/또는 비트 깊이, 인트라 예측 추정 및 예측, 모션 추정 및 보상, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 태스크를 수행하는 다수의 인코딩 모듈을 포함한다. 인코더(340)에 의해 수행되는 정확한 동작은 압축 포맷에 의존하여 변할 수 있다. 출력된 인코딩된 데이터의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
인코더(340)는 프레임을 동일한 사이즈의 또는 상이한 사이즈의 다수의 타일로 구획할 수 있다. 예를 들면, 인코더(340)는, 프레임 경계와 함께, 프레임 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행(row) 및 타일 열(column)을 따라 프레임을 분할하는데, 이 경우 각각의 타일은 직사각형 영역이다. 타일은 종종 병렬 프로세싱을 위한 옵션을 제공하기 위해 사용된다. 프레임은 또한 하나 이상의 슬라이스로서 편제될(organized) 수 있는데, 이 경우 슬라이스는 전체 프레임 또는 프레임의 영역일 수 있다. 슬라이스는 프레임에서의 다른 슬라이스와는 무관하게 디코딩될 수 있는데, 슬라이스가 프레임의 다른 슬라이스와는 무관하게 디코딩되는 것은 에러 복원성(error resilience)을 향상시킨다. 슬라이스 또는 타일의 콘텐트는 인코딩 및 디코딩의 목적을 위해 블록 또는 샘플 값의 다른 세트로 더 구획된다. 몇몇 예시적인 구현예에서, 인코더(340)는 인코딩 동안 슬라이스 단위 기반으로 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환할 수 있다.
H.265/HEVC 표준에 따른 신택스의 경우, 인코더는 프레임(또는 슬라이스 또는 타일)의 콘텐트를 코딩 트리 단위로 분할한다. 코딩 트리 단위(coding tree unit; "CTU")는 루마 코딩 트리 블록(luma coding tree block; "CTB")으로 편제되는 루마 샘플 값 및 두 개의 크로마 CTB로 편제되는 대응하는 크로마 샘플 값을 포함한다. CTU(및 CTU의 CTB)의 사이즈는 인코더에 의해 선택되며, 예를 들면, 64×64, 32×32 또는 16x16 샘플 값일 수 있다. CTU는 하나 이상의 코딩 단위를 포함한다. 코딩 단위(coding unit; "CU")는 루마 코딩 블록(coding block; "CB") 및 두 개의 대응하는 크로마 CB를 구비한다. 예를 들면, 64×64 루마 CTB 및 두 개의 64×64 크로마 CTB를 갖는 CTU(YUV 4:4:4 포맷)는 네 개의 CU로 분할될 수 있는데, 각각의 CU는 32×32 루마 CB 및 두 개의 32×32 크로마 CB를 포함하고, 그리고 각각의 CU는 어쩌면 더 작은 CU로 더 분할된다. 또는, 다른 예로서, 64×64 루마 CTB 및 두 개의 32×32 크로마 CTB를 갖는 CTU(YUV 4:2:0 포맷)는 네 개의 CU로 분할될 수 있는데, 각각의 CU는 32×32 루마 CB 및 두 개의 16×16 크로마 CB를 포함하고, 그리고 각각의 CU는 어쩌면 더 작은 CU로 더 분할된다. CU의 가장 작은 허용가능한 사이즈(예를 들면, 8×8, 16×16)는 비트스트림에서 시그널링될 수 있다.
일반적으로, CU는 인터 또는 인트라와 같은 예측 모드를 갖는다. CU는 예측 정보(예컨대 예측 모드 상세, 변위 값 등등) 및/또는 예측 프로세싱을 시그널링하는 목적을 위한 하나 이상의 예측 단위를 포함한다. 예측 단위(prediction unit; "PU")는 루마 예측 블록(prediction block; "PB") 및 두 개의 크로마 PB를 구비한다. 인트라 예측된 CU의 경우, CU가 최소 사이즈(예를 들면, 8×8)를 갖지 않는 한, PU는 CU와 동일한 사이즈를 갖는다. 그 경우, CU는 네 개의 더 작은 PU(예를 들면, 최소 CU 사이즈가 8×8이면 각각 4×4)로 분할될 수 있거나 또는 PU는, CU에 대한 신택스 엘리먼트에 의해 나타내어지는 바와 같이, 최소 CU 사이즈를 가질 수 있다. CU는 또한 잔차 코딩/디코딩의 목적을 위해 하나 이상의 변환 단위를 갖는데, 이 경우 변환 단위(transform unit; "TU")는 변환 블록(transform block; "TB") 및 두 개의 크로마 TB를 갖는다. 인트라 예측된 CU에서의 PU는 단일의 TU(사이즈에서 PU와 동일) 또는 다수의 TU를 포함할 수도 있다. 인코더는 비디오를 CTU, CU, PU, TU 등등으로 구획하는 방법을 결정한다.
H.265/HEVC 구현예에서, 슬라이스는 단일의 슬라이스 세그먼트(독립 슬라이스 세그먼트)를 포함할 수 있거나 또는 다수의 슬라이스 세그먼트(독립 슬라이스 세그먼트 및 하나 이상의 종속 슬라이스 세그먼트)로 분할될 수 있다. 슬라이스 세그먼트는, 단일의 네트워크 추상화 레이어(network abstraction layer; "NAL") 단위에 포함되는, 타일 주사에서 연속적으로 순서가 정해지는 정수 개수의 CTU이다. 독립 슬라이스 세그먼트의 경우, 슬라이스 세그먼트 헤더는 독립 슬라이스 세그먼트에 적용되는 신택스 엘리먼트의 값을 포함한다. 종속 슬라이스 세그먼트의 경우, 잘려진 슬라이스 세그먼트 헤더는 그 종속 슬라이스 세그먼트에 적용되는 신택스 엘리먼트의 몇몇 값을 포함하고, 종속 슬라이스 세그먼트에 대한 다른 신택스 엘리먼트의 값은 디코딩 순서에서 선행하는 독립 슬라이스 세그먼트에 대한 값으로부터 추론된다.
본원에서 사용되는 바와 같이, 용어 "블록"은, 상황에 따라, 매크로블록, 예측 단위, 잔차 데이터 단위, 또는 CB, PB 또는 TB, 또는 샘플 값의 몇몇 다른 세트를 나타낼 수 있다. 몇몇 예시적인 구현예에서, 인코더(340)는 인코딩 동안 블록 단위 기반으로 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환할 수 있다.
도 3을 참조하면, 인코더는 소스 프레임(331)의 인트라 코딩된 블록을, 프레임(331)에서의 다른 이전에 재구성된 샘플 값으로부터의 예측의 관점에서 나타낸다. 인트라 블록 카피(block copy; "BC") 예측의 경우, 인트라 픽쳐 추정기(intra-picture estimator)는, 다른 이전에 재구성된 샘플 값에 대한 한 블록의 변위를 추정한다. 인트라 예측 참조 영역은, 블록에 대한 BC 예측 값을 생성하기 위해 사용되는, 프레임에서의 샘플 값의 영역이다. 인트라 프레임 예측 영역은 블록 벡터(block vector; "BV") 값(BV 추정에서 결정됨)으로 나타내어질 수 있다. 블록에 대한 인트라 공간 예측의 경우, 인트라 픽쳐 추정기는, 이웃하는 재구성된 샘플 값의 블록으로의 외삽(extrapolation)을 추정한다. 인트라 픽쳐 추정기는 예측 정보(예컨대 인트라 BC 예측을 위한 BV 값, 또는 인트라 공간 예측을 위한 예측 모드(방향))를 출력할 수 있는데, 예측 정보는 엔트로피 코딩된다. 인트라 프레임 예측 예측기(intra-frame prediction predictor)는 인트라 예측 값을 결정하기 위해 예측 정보를 적용한다.
인코더(340)는, 소스 프레임(331)의 인터 프레임 코딩되고 예측된 블록을, 참조 프레임으로부터의 예측의 관점에서 나타낸다. 모션 추정기는 하나 이상의 참조 프레임(369)에 대한 블록의 모션을 추정한다. 다수의 참조 프레임이 사용되는 경우, 다수의 참조 프레임은 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 보상된 예측 참조 영역은, 현재 프레임의 샘플 값의 블록에 대한 모션 보상된 예측 값을 생성하기 위해 사용되는, 참조 프레임(들)에서의 샘플 값의 영역이다. 모션 추정기는 모션 벡터("MV") 정보와 같은 모션 정보를 출력하는데, 모션 정보는 엔트로피 코딩된다. 모션 보상기는 참조 프레임(369)에 MV를 적용하여 인터 프레임 예측을 위한 모션 보상된 예측 값을 결정한다.
인코더는 블록의 예측 값(인트라 또는 인터)과 대응하는 원래의 값 사이의 차이를 (만약 존재한다면) 결정할 수 있다. 이들 예측 잔차 값은 또한, 주파수 변환, 양자화 및 엔트로피 인코딩을 사용하여 인코딩된다. 예를 들면, 인코더(340)는, 비디오의 픽쳐, 타일, 슬라이스 및/또는 다른 일부에 대한 양자화 파라미터(quantization parameter; "QP")에 대한 값을 설정하고, 상응하여 변환 계수를 양자화한다. 인코더(340)의 엔트로피 코더는 양자화된 변환 계수 값뿐만 아니라 소정의 부가 정보(side information)(예를 들면, MV 정보, BV 예측기(predictor)에 대한 인덱스 값, BV 차분, QP 값, 모드 결정, 파라미터 선택)를 압축한다. 통상적인 엔트로피 코딩 기술은, 지수 골룸 코딩(Exponential-Golomb coding), 골룸 라이스 코딩(Golomb-Rice coding), 산술 코딩(arithmetic coding), 차분 코딩(differential coding), 허프만 코딩(Huffman coding), 런 길이 코딩(run length coding), 가변 길이 대 가변 길이(variable-length-to-variable-length; "V2V") 코딩, 가변 길이 대 고정 길이(variable-length-to-fixed-length; "V2F") 코딩, 렘펠 지브(Lempel-Ziv; "LZ") 코딩, 딕셔너리 코딩(dictionary coding), 확률 구간 구획화 엔트로피 코딩(probability interval partitioning entropy coding; "PIPE"), 및 상기의 조합을 포함한다. 엔트로피 코더는 상이한 종류의 정보에 대해 상이한 코딩 기술을 사용할 수 있고, 다수의 기술을 (예를 들면, 골룸 라이스 코딩 및 후속하여 산술 코딩을 적용하는 것에 의한) 조합하여 적용할 수 있고, 특정한 코딩 기술 내에서의 다수의 코드 테이블 중에서 선택할 수 있다.
디코딩된 프레임에서 블록 경계 행 및/또는 열에 걸친 불연속부를 평활화하기 위해, 인코더(340)의 모션 보상 루프 내에 적응적 디블록화 필터(adaptive deblocking filter)가 포함된다. 루프 내 필터링 동작(in-loop filtering operation)으로서, 다른 필터링(예컨대 디링잉 필터링(de-ringing filtering), 적응적 루프 필터링(adaptive loop filtering; "ALF"), 또는 샘플 적응 오프셋(sample-adaptive offset; "SAO") 필터링; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다.
인코더(340)에 의해 생성되는 인코딩된 데이터는 비트스트림 신택스의 다양한 레이어에 대한 신택스 엘리먼트를 포함한다. H.265/HEVC 표준에 따른 신택스의 경우, 예를 들면, 픽쳐 파라미터 세트(picture parameter set; "PPS")는, 픽쳐와 관련될 수도 있는 신택스 엘리먼트를 포함하는 신택스 구조체이다. 몇몇 예시적인 구현예에서, PPS는, 픽쳐(또는 PPS를 사용하는 다수의 픽쳐)에 적용되는 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는 하나 이상의 신호뿐만 아니라, 이용가능한 컬러 공간, 이용가능한 컬러 샘플링 레이트 및/또는 이용가능한 비트 깊이를 식별하는 또는 정의하는 다른 정보를 포함할 수 있다. PPS는 단일의 픽쳐에 대해 사용될 수 있거나, 또는 PPS는 한 시퀀스에서의 다수의 픽쳐에 대해 재사용될 수 있다. PPS는 통상적으로 픽쳐에 대한 인코딩된 데이터와는 별개로 시그널링된다(예를 들면, PPS에 대한 하나의 NAL 단위, 및 픽쳐에 대한 인코딩된 데이터에 대한 하나 이상의 다른 NAL 단위). 픽쳐에 대한 인코딩된 데이터 내에서, 신택스 엘리먼트는 픽쳐에 대해 어떤 PPS를 사용할지를 나타낸다. 마찬가지로, H.265/HEVC 표준에 따른 신택스의 경우, 시퀀스 파라미터 세트(sequence parameter set; "SPS")는, 픽쳐의 시퀀스와 관련될 수도 있는 신택스 엘리먼트를 포함하는 신택스 구조체이다. 비트스트림은 단일의 SPS 또는 다수의 SPS를 포함할 수 있다. SPS는 통상적으로 시퀀스에 대한 다른 데이터와는 별개로 시그널링되고, 다른 데이터의 신택스 엘리먼트는 어떤 SPS를 사용할지를 나타낸다. 몇몇 예시적인 구현예에서, 시퀀스에 대한 SPS는, 이용가능한 컬러 공간, 이용가능한 컬러 샘플링 레이트 및/또는 이용가능한 비트 깊이를 식별하는 또는 정의하는 정보를 포함할 수 있는데, 이 정보는 시퀀스 내에서 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환할 때 참조된다.
슬라이스 레이어의 경우, 슬라이스 헤더(예를 들면, 슬라이스 세그먼트 헤더)가 슬라이스(예를 들면, 독립적인 슬라이스 세그먼트 및 후속하는 임의의 종속적인 슬라이스 세그먼트)에 적용되는 신택스 엘리먼트의 값을 포함한다. 몇몇 예시적인 구현예에서, 슬라이스 헤더는, 슬라이스에 적용되는 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는 하나 이상의 신호를 포함할 수 있다. 몇몇 예시적인 구현예에서, 슬라이스 헤더는, 이용가능한 컬러 공간, 이용가능한 컬러 샘플링 레이트 및/또는 이용가능한 비트 깊이를 식별하는 또는 정의하는 정보를 포함할 수 있는데, 이 정보는 슬라이스 내에서 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환할 때 참조된다. 블록 레이어의 경우(예를 들면, CTU의 경우), 신택스 구조체가 블록에 적용되는 신택스 엘리먼트의 값을 포함한다. 몇몇 예시적인 구현예에서, 블록에 대한 신택스 구조체는, 블록에 적용되는 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는 하나 이상의 신호를 포함할 수 있다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)(또는, 프레임에 대한 종속성(dependency) 및 순서 구조(ordering structure)가 인코더(340)에서 이미 알려진 이후, MMCO/RPS 정보(342) 정보와 등가의 정보)는 디코딩 프로세스 에뮬레이터(350)에 의해 프로세싱된다. 디코딩 프로세스 에뮬레이터(350)는 디코더의 기능성 중 몇몇, 예를 들면, 참조 프레임을 재구성하는 디코딩 태스크를 구현한다. MMCO/RPS 정보(342)와 부합하는 방식에서, 디코딩 프로세스 에뮬레이터(350)는, 인코딩될 후속 프레임의 인터 프레임 예측에서의 참조 프레임으로서의 사용을 위해, 주어진 코딩된 프레임(341)이 재구성되고 저장될 필요가 있는지의 여부를 결정한다. 코딩된 프레임(341)이 저장될 필요가 있다면, 디코딩 프로세스 에뮬레이터(350)는, 코딩된 프레임(341)을 수신하는 그리고 대응하는 디코딩된 프레임(351)을 생성하는 디코더에 의해 행해질 디코딩 프로세스를 모델링한다. 이렇게 함에 있어서, 디코딩된 프레임 저장 영역(360)에 저장되어 있던 디코딩된 프레임(들)(369)을 인코더(340)가 사용한 경우, 디코딩 프로세스 에뮬레이터(350)는 또한, 디코딩 프로세스의 일부로서, 저장 영역(360)으로부터의 디코딩된 프레임(들)(369)을 사용한다.
디코딩된 프레임 임시 메모리 저장 영역(360)은 다수의 프레임 버퍼 저장 영역(361, 362, …, 36n)을 포함한다. MMCO/RPS 정보(342)와 부합하는 방식에서, 디코딩 프로세스 에뮬레이터(350)는, 참조 프레임으로서의 사용을 위해 인코더(340)에 의해 더 이상 필요로 되지 않는 프레임을 갖는 임의의 프레임 버퍼(361, 362, 등등)를 식별하기 위해, 저장 영역(360)의 콘텐트를 관리한다. 디코딩 프로세스를 모델링한 이후, 디코딩 프로세스 에뮬레이터(350)는 이 방식으로 식별된 프레임 버퍼(361, 362 등등)에 새롭게 디코딩된 프레임(351)을 저장한다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)는 임시적인 코딩된 데이터 영역(temporary coded data area; 370)에 버퍼링된다. 코딩된 데이터 영역(370)에 집성되는 코딩된 데이터는, 기본 코딩된 비디오 비트스트림의 신택스의 일부로서, 하나 이상의 픽쳐에 대한 인코딩된 데이터를 포함한다. 코딩된 데이터 영역(370)에 집성되는 코딩된 데이터는 또한, 코딩된 비디오 데이터에 관련이 있는 미디어 메타데이터를 (예를 들면, 하나 이상의 보충적인 향상 정보(supplemental enhancement information; "SEI") 메시지 또는 비디오 사용가능성 정보(video usability information; "VUI") 메시지에서의 하나 이상의 파라미터로서) 포함할 수 있다.
임시적인 코딩된 데이터 영역(370)으로부터의 집성된 데이터(371)는 채널 인코더(380)에 의해 프로세싱된다. 채널 인코더(380)는, 미디어 스트림으로서의 송신 또는 저장을 위해 집성된 데이터를 (예를 들면, ITU-T H.222.0|ISO/IEC 13818-1와 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 패킷화할 수 있고/있거나 멀티플렉싱할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 미디어 송신 스트림의 신택스의 일부로서 추가할 수 있다. 또는, 채널 인코더(380)는, 파일로서의 저장을 위해, 집성된 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 편제할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 미디어 저장 파일의 신택스의 일부로서 추가할 수 있다. 또는, 보다 일반적으로는, 채널 인코더(380)는 하나 이상의 미디어 시스템 멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 인코더(380)는 신택스 엘리먼트를 프로토콜(들)의 신택스의 일부로서 추가할 수 있다. 채널 인코더(380)는 채널(390)로 출력을 제공하는데, 채널(390)은 출력에 대한 저장, 통신 연결, 또는 다른 채널을 나타낸다. 채널 인코더(380) 또는 채널(390)은 또한, 예를 들면, 순방향 에러 정정(forward-error correction; "FEC") 인코딩 및 아날로그 신호 변조를 위해, 다른 엘리먼트(도시되지 않음)를 포함할 수도 있다.
IV. 예시적인 디코더 시스템.
도 4는 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 예시적인 디코더 시스템(400)의 블록도이다. 디코더 시스템(400)은, 다수의 디코딩 모드 예컨대 실시간 통신을 위한 로우 레이턴시 디코딩 모드 및 파일 또는 스트림으로부터의 미디어 재생을 위한 더 높은 레이턴시의 디코딩 모드 중 임의의 것에서 동작할 수 있는 범용 디코딩 툴일 수 있거나, 또는 그것은 하나의 이러한 디코딩 모드에 대해 적응되는 특수 목적의 디코딩 툴일 수 있다. 디코더 시스템(400)은 특정한 타입의 콘텐트(예를 들면, 스크린 캡쳐 콘텐트)의 디코딩을 위해 적응될 수 있거나, 또는 디코더 시스템(400)은 여러 상이한 타입의 콘텐트(예를 들면, 스크린 캡쳐 콘텐트 및 자연적 비디오) 중 임의의 것의 디코딩을 위해 적응될 수 있다. 디코더 시스템(400)은 오퍼레이팅 시스템 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 종합하면, 디코더 시스템(400)은 채널(410)로부터 코딩된 데이터를 수신하고 출력 목적지(490)에 대한 출력으로서 재구성된 프레임을 생성한다. 코딩된 데이터는, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환으로 인코딩된 콘텐트를 포함할 수 있다.
디코더 시스템(400)은 채널(410)을 포함하는데, 채널(410)은 코딩된 데이터에 대한 저장, 통신 연결, 또는 다른 채널을 입력으로서 나타낼 수 있다. 채널(410)은 채널 코딩된 코딩 데이터를 생성한다. 채널 디코더(420)는 코딩된 데이터를 프로세싱할 수 있다. 예를 들면, 채널 디코더(420)는, 미디어 스트림으로서의 송신 또는 저장을 위해 집성된 데이터를 (예를 들면, ITU-T H.222.0 | ISO/IEC 13818-1와 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 패킷화해제하고/패킷화해제하거나 디멀티플렉싱하는데, 이 경우, 채널 디코더(420)는 미디어 송신 스트림의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 또는, 채널 디코더(420)는, 파일로서의 저장을 위해 집성되었던 코딩된 비디오 데이터를 (예를 들면, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 분리하는데, 이 경우, 채널 디코더(420)는 미디어 저장 파일의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 또는, 보다 일반적으로는, 채널 디코더(420)는 하나 이상의 미디어 시스템 디멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있는데, 이 경우, 채널 디코더(420)는 프로토콜(들)의 신택스의 일부로서 추가된 신택스 엘리먼트를 파싱할 수 있다. 채널(410) 또는 채널 디코더(420)는 또한, 예를 들면, FEC 디코딩 및 아날로그 신호 변조를 위해, 다른 엘리먼트(도시되지 않음)를 포함할 수도 있다.
채널 디코더(420)로부터 출력되는 코딩된 데이터(421)는, 충분한 양의 이러한 데이터가 수신될 때까지 임시적인 코딩된 데이터 영역(430)에 저장된다. 코딩된 데이터(421)는 코딩된 프레임(431) 및 MMCO/RPS 정보(432)를 포함한다. 코딩된 데이터 영역(430)에서의 코딩된 데이터(421)는, 기본 코딩된 비디오 비트스트림의 신택스의 일부로서, 하나 이상의 픽쳐에 대한 코딩된 데이터를 포함한다. 코딩된 데이터 영역(430)의 코딩된 데이터(421)는 또한, 인코딩된 비디오 데이터에 관련이 있는 미디어 메타데이터를 (예를 들면, 하나 이상의 SEI 메시지 또는 VUI 메시지에서의 하나 이상의 파라미터로서) 포함할 수 있다.
일반적으로, 코딩된 데이터 영역(430)은, 이러한 코딩된 데이터(421)가 디코더(450)에 의해 사용될 때까지, 코딩된 데이터(421)를 일시적으로 저장한다. 그때, MMCO/RPS 정보(432) 및 코딩된 프레임(431)에 대한 코딩된 데이터는 코딩된 데이터 영역(430)으로부터 디코더(450)로 전송된다. 디코딩이 진행함에 따라, 새로 코딩된 데이터가 코딩된 데이터 영역(430)에 추가되고 코딩된 데이터 영역(430)에 남아 있는 가장 오래된 코딩된 데이터는 디코더(450)로 전송된다.
디코더(450)는 대응하는 디코딩된 프레임(451)을 생성하기 위해 코딩된 프레임(431)을 디코딩한다. 적절하다면, 자신의 디코딩 프로세스를 수행하고 있을 때, 디코더(450)는 하나 이상의 이전에 디코딩된 프레임(469)을, 인터 프레임 예측을 위한 참조 프레임으로서 사용할 수도 있다. 디코더(450)는 이러한 이전에 디코딩된 프레임(469)을 디코딩된 프레임 임시 메모리 저장 영역(460)으로부터 판독한다.
디코딩 동안, 상이한 픽쳐, 슬라이스, 블록 또는 비디오의 다른 단위에 대해, 디코더(450)는, YUV 타입 컬러 공간과 RGB 타입 컬러 공간 사이에서 변환하기 위해, 또는 몇몇 다른 컬러 공간으로/으로부터 변환하기 위해, 컬러 공간 변환을 수행할 수 있다. 디코더(450)는 또한, 상이한 픽쳐, 슬라이스, 블록 또는 비디오의 다른 유닛에 대한 컬러 성분을 재정렬하기 위해, 어떤 컬러 성분이 주 성분인지를 변경하는(예를 들면, RGB, BGR 및 GBR 포맷 사이에서 변환하는) 컬러 공간 변환을 수행할 수 있다. 디코딩 동안, 디코더(450)는 또한, 컬러 샘플링 레이트를 변경하기 위해 및/또는 상이한 픽쳐, 슬라이스, 블록 또는 비디오의 다른 유닛에 대한 비트 깊이를 변경하기 위해 재샘플링 프로세싱을 수행할 수 있다. 몇몇 예시적인 구현예에서, 디코더(450)는 디코딩 동안 픽쳐 단위 기반으로 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환할 수 있다. 대안적으로, 디코더(450)는, 디코딩 동안 슬라이스 단위 기반으로 또는 블록 단위 기반으로 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환할 수 있다.
일반적으로, 디코더(450)는, 타일의 엔트로피 디코딩, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응, 인트라 프레임 예측, 모션 보상된 인터 프레임 예측, 역 양자화, 역 주파수 변환, 및 병합과 같은 디코딩 태스크를 수행하는 다수의 디코딩 모듈을 포함한다. 디코더(450)에 의해 수행되는 정확한 동작은 압축 포맷에 의존하여 변할 수 있다.
예를 들면, 디코더(450)는 압축된 프레임 또는 프레임의 시퀀스에 대한 인코딩된 데이터를 수신하고 디코딩된 프레임(451)을 포함하는 출력을 생성한다. 디코더(450)에서, 버퍼는 압축된 프레임에 대한 인코딩된 데이터를 수신하고, 적절한 시간에, 수신된 인코딩된 데이터를 엔트로피 디코더가 이용가능하게 만든다. 엔트로피 디코더는, 엔트로피 코딩된 양자화된 데이터뿐만 아니라 엔트로피 코딩된 부가 정보를 엔트로피 디코딩하는데, 통상적으로는, 인코더에서 수행된 엔트로피 인코딩의 역을 적용한다. 모션 보상기는 하나 이상의 참조 프레임에 대해 모션 정보를 적용하여, 재구성되고 있는 프레임의 임의의 인터 코딩된 블록에 대한 모션 보상된 예측 값을 형성한다. 인트라 프레임 예측 모듈은, 이웃하는 이전에 재구성된 샘플 값으로부터 현재 블록의 샘플 값을 공간적으로 예측할 수 있거나, 또는 인트라 BC 예측의 경우, 프레임의 인트라 프레임 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측할 수 있다. 참조 영역은 BV 값으로 나타내어질 수 있다. 디코더(450)는 또한 예측 잔차 값을 재구성한다. 역 양자화기는 엔트로피 디코딩된 데이터를 역 양자화한다. 예를 들면, 디코더(450)는, 비트스트림에서의 신택스 엘리먼트에 기초하여 비디오의 픽쳐, 타일, 슬라이스 및/또는 다른 일부에 대한 QP에 대한 값을 설정하고, 그에 따라 변환 계수를 역 양자화한다. 역 주파수 변환기는 양자화된 주파수 도메인 데이터를 공간 도메인 데이터로 변환한다. 인터 프레임 예측된 블록의 경우, 디코더(450)는 재구성된 예측 잔차 값을 모션 보상된 예측 값과 결합한다. 마찬가지로, 디코더(450)는 예측 잔차 값을 인트라 예측으로부터의 예측 값과 결합할 수 있다. 디코딩된 프레임(451)에서 블록 경계 행 및/또는 열에 걸친 불연속부를 평활화하기 위해, 비디오 디코더(450)의 모션 보상 루프 내에 적응적 디블록화 필터가 포함된다. 루프 내 필터링 동작으로서, 다른 필터링(예컨대 디링잉 필터링, ALF, 또는 SAO 필터링; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다.
디코딩된 프레임 임시 메모리 저장 영역(460)은 다수의 프레임 버퍼 저장 영역(461, 462, …, 46n)을 포함한다. 디코딩된 프레임 저장 영역(460)은 디코딩된 픽쳐 버퍼의 예이다. 디코더(450)는, 디코딩된 프레임(451)을 내부에 저장할 수 있는 프레임 버퍼(461, 462 등등)를 식별하기 위해 MMCO/RPS 정보(432)를 사용한다. 디코더(450)는 그 프레임 버퍼에 디코딩된 프레임(451)을 저장한다.
출력 시퀀서(output sequencer; 480)는, 출력 순서에서 생성될 다음 프레임이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때를 식별한다. 출력 순서에서 생성될 다음 프레임(481)이 디코딩된 프레임 저장 영역(460)에서 이용가능할 때, 다음 프레임(481)은 출력 시퀀서(480)에 의해 판독되고 출력 목적지(490)(예를 들면, 디스플레이)로 출력된다. 일반적으로, 디코딩된 프레임 저장 영역(460)으로부터 출력 시퀀서(480)에 의해 프레임이 출력되는 순서는, 프레임이 디코더(450)에 의해 디코딩되는 순서와는 상이할 수도 있다.
V. 예시적인 비디오 인코더.
도 5a 및 도 5b는 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 일반화된 비디오 인코더(500)의 블록도이다. 인코더(500)는 현재 픽쳐를 입력 비디오 신호(505)로서 포함하는 비디오 픽쳐의 시퀀스를 수신하고 인코딩된 데이터를 코딩된 비디오 비트스트림(595)에서 출력으로서 생성한다.
인코더(500)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 스테이지에서, 예를 들면, 예측, 주파수 변환 및/또는 엔트로피 인코딩 스테이지에서, 추가로 세분될(sub-divided) 수도 있다. 예를 들면, 픽쳐는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이들은 종국에는 코딩 및 디코딩을 위해 샘플 값의 더 작은 블록으로 분할될 수 있다. H.265/HEVC 표준에 대한 인코딩의 구현예에서, 인코더는 픽쳐를 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획한다.
인코더(500)는 인트라 픽쳐 코딩 및/또는 인터 픽쳐 코딩을 사용하여 픽쳐를 압축한다. 인코더(500)의 컴포넌트 중 많은 것은 인트라 픽쳐 코딩 및 인터 픽쳐 코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축되고 있는 정보의 타입에 의존하여 변할 수 있다.
타일화 모듈(tiling module; 510)은, 옵션적으로, 픽쳐를, 동일한 사이즈의 또는 상이한 사이즈의 다수의 타일로 구획한다. 예를 들면, 타일화 모듈(510)은, 픽쳐 경계와 함께, 픽쳐 내에서의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 픽쳐를 분할하는데, 이 경우 각각의 타일은 직사각형 영역이다. H.265/HEVC 구현예에서, 인코더(500)는 픽쳐를 하나 이상의 슬라이스로 구획하는데, 이 경우 각각의 슬라이스는 하나 이상의 슬라이스 세그먼트를 포함한다.
일반적인 인코딩 제어부(520)는 입력 비디오 신호(505)에 대한 픽쳐뿐만 아니라 인코더(500)의 다양한 모듈로부터 피드백(도시되지 않음)을 수신한다. 종합하면, 일반적인 인코딩 제어부(520)는, 인코딩 동안 코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대 타일화 모듈(510), 변환기/스케일러/양자화기(530), 스케일러/역 변환기(535), 인트라 픽쳐 추정기(540), 모션 추정기(550) 및 인트라/인터 스위치)로 제공한다. 특히, 일반적인 인코딩 제어부(520)는, 인코딩 동안 픽쳐 단위 기반으로, 슬라이스 단위 기반으로, 블록 단위 기반으로 또는 몇몇 다른 기반으로, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 어떻게 적응적으로 전환할지를 결정할 수 있다. 일반적인 인코딩 제어부(520)는 또한 인코딩 동안 중간 결과를 평가할 수 있다. 일반적인 인코딩 제어부(520)는, 인코딩 동안 만들어진 결정을 나타내는 일반적인 제어 데이터(522)를 생성하고, 그 결과, 대응하는 디코더는 일관된 결정을 행할 수 있다. 일반적인 제어 데이터(522)는 헤더 포맷터(header formatter)/엔트로피 코더(590)로 제공된다.
현재 픽쳐가 인터 픽쳐 예측을 사용하여 예측되면, 모션 추정기(550)는, 하나 이상의 참조 픽쳐를 기준으로, 입력 비디오 신호(505)의 현재 픽쳐에서의 샘플 값의 블록의 모션을 추정한다. 디코딩된 픽쳐 버퍼(570)는, 참조 픽쳐로서의 사용을 위해 하나 이상의 재구성된 이전에 코딩된 픽쳐를 버퍼링한다. 다수의 참조 픽쳐가 사용되는 경우, 다수의 참조 픽쳐는 상이한 시간적 방향 또는 동일한 시간적 방향으로부터 유래할 수 있다. 모션 추정기(550)는, MV 데이터와 같은 모션 데이터(552), 병합 모드 인덱스 값, 및 참조 픽쳐 선택 데이터를 부가 정보로서 생성한다. 모션 데이터(552)는 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 모션 보상기(555)로 제공된다.
모션 보상기(555)는 MV를, 디코딩된 픽쳐 버퍼(570)로부터의 재구성된 참조 픽쳐(들)에 적용한다. 모션 보상기(555)는 현재 픽쳐에 대한 모션 보상된 예측치를 생성한다. 픽쳐에 대한 보조 성분이 주 성분과 동일한 해상도를 갖는 경우(즉, 포맷이 YUV 4:4:4 포맷이거나 또는 RGB 4:4:4 포맷인 경우), 보조 성분 블록에 적용되는 MV 값은, 대응하는 주 성분 블록에 적용되는 MV 값과 동일할 수도 있다. 한편, 픽쳐에 대한 보조 성분이 주 성분에 비해 감소된 해상도를 갖는 경우(예를 들면, 포맷이 YUV 4:2:0 포맷인 경우), 보조 성분 블록에 적용되는 MV 값은, 해상도에서의 차이를 조정하기 위해 (예를 들면, MV 값의 수직 및 수평 성분을 2로 나누고 나머지를 버리거나 그들을 정수 값으로 반올림하는 것에 의해) 축소될 수도 있고 어쩌면 반올림될 수도 있다.
인코더(500) 내에서의 별개의 경로에서, 인트라 픽쳐 추정기(540)는, 입력 비디오 신호(505)의 현재 픽쳐의 샘플 값의 블록에 대한 인트라 픽쳐 예측을 수행하는 방법을 결정한다. 현재 픽쳐는 인트라 픽쳐 코딩을 사용하여 전적으로 또는 부분적으로 코딩될 수 있다. 현재 픽쳐의 재구성(538)의 값을 사용한 인트라 공간 예측의 경우, 인트라 픽쳐 추정기(540)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐의 현재 블록의 샘플 값을 공간적으로 예측하는 방법을 결정한다. 또는, BV 값을 사용한 인트라 BC 예측의 경우, 인트라 픽쳐 추정기(540)는, 현재 픽쳐 내에서의 상이한 후보 참조 영역까지의, 현재 블록의 샘플 값의 변위를 추정한다. 도 5b에서, 후보 참조 영역은 재구성된 샘플 값을 포함한다. 대안적으로, BV 추정의 목적을 위해, 후보 참조 영역은 입력 샘플 값을 포함할 수 있다.
인트라 픽쳐 추정기(540)는 부가 정보로서 인트라 예측 데이터(542), 예컨대 인트라 예측이 공간 예측을 사용하는지 또는 인트라 BC 예측을 사용하는지의 여부를 나타내는 정보(예를 들면, 인트라 블록당 플래그 값), (인트라 공간 예측을 위한) 예측 모드 방향, 및 (인트라 BC 예측을 위한) BV 값을 생성한다. 인트라 예측 데이터(542)는, 헤더 포맷터/엔트로피 코더(590)뿐만 아니라 인트라 픽쳐 예측기(545)에도 제공된다.
인트라 예측 데이터(542)에 따르면, 인트라 픽쳐 예측기(545)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(545)는, 현재 블록에 대한 BV 값에 의해 나타내어지는 인트라 픽쳐 예측 참조 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다. 몇몇 경우에서, BV 값은 BV 예측기(예측된 BV 값)일 수 있다. 다른 경우에서, BV 값은 자신의 예측된 BV 값과는 상이할 수 있는데, 이 경우 BV 차분은 예측된 BV 값과 BV 값 사이의 차이를 나타낸다. 픽쳐에 대한 보조 성분이 주 성분과 동일한 해상도를 갖는 경우(예를 들면, 포맷이 YUV 4:4:4 포맷이거나 또는 RGB 4:4:4 포맷인 경우), 보조 성분 블록에 적용되는 BV 값은, 대응하는 주 성분 블록에 적용되는 BV 값과 동일할 수도 있다. 한편, 픽쳐에 대한 보조 성분이 주 성분에 비해 감소된 해상도를 갖는 경우(예를 들면, 포맷이 YUV 4:2:0 포맷인 경우), 보조 성분 블록에 대해 적용되는 BV 값은, 해상도에서의 차이를 조정하기 위해, (예를 들면, BV 값의 수직 및 수평 성분을 2로 나누고 나머지를 버리거나 그들을 정수 값으로 반올림하는 것에 의해) 축소될 수도 있고 어쩌면 반올림될 수도 있다.
인트라/인터 스위치는, 주어진 블록에 대한 예측(558)이 모션 보상된 예측일 것인지 또는 인트라 픽쳐 예측일 것인지의 여부를 선택한다. 예측(558)의 블록과 입력 비디오 신호(505)의 원래의 현재 블록의 대응하는 부분 사이의 차이는 (만약 있다면) 비스킵 모드 블록에 대한 잔차(518)의 값을 제공한다. 현재 픽쳐의 재구성 동안, 비스킵 모드 블록의 경우, 재구성된 잔차 값은 예측치(558)와 결합되어 비디오 신호(505)로부터의 원래의 콘텐트의 근사하는 또는 정확한 재구성치(538)를 생성한다. (손실성 압축에서, 몇몇 정보는 여전히 비디오 신호(505)로부터 상실된다.)
변환기/스케일러/양자화기(530)에서, 주파수 변환기는 공간 도메인 비디오 정보를 주파수 도메인(즉, 스펙트럼, 변환) 데이터로 변환한다. 블록 기반의 비디오 코딩의 경우, 주파수 변환기는, 예측 잔차 데이터(또는 예측(558)이 널(null)인 경우 샘플 값 데이터)의 블록에 대해, 이산 코사인 변환(discrete cosine transform; "DCT"), 그 정수 근사, 또는 다른 타입의 순방향 블록 변환(forward block transform)(예를 들면, 이산 사인 변환 또는 그 정수 근사)을 적용하여, 주파수 변환 계수의 블록을 생성하게 된다. 인코더(500)는 또한, 이러한 변환 단계가 스킵되는 것을 나타낼 수 있을 수도 있다. 스케일러/양자화기는 변환 계수를 스케일링하고 양자화한다. 예를 들면, 양자화기는, 픽쳐 단위 기반으로, 타일 단위 기반으로, 슬라이스 단위 기반으로, 블록 단위 기반으로, 주파수별 기반으로 또는 다른 기반으로 변하는 양자화 스텝 사이즈를 가지고 주파수 도메인 데이터에 데드 존 스칼라 양자화(dead-zone scalar quantization)를 적용할 수 있다. 양자화된 변환 계수 데이터(532)는 헤더 포맷터/엔트로피 코더(590)에 제공된다.
스케일러/역 변환기(535)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 값 또는 샘플 값의 블록을 생성한다. 비스킵 모드 블록의 경우, 인코더(500)는 재구성된 잔차 값을 예측(558)의 값(예를 들면, 모션 보상된 예측 값, 인트라 픽쳐 예측 값)과 결합하여 재구성치(538)를 형성한다. 스킵 모드 블록의 경우, 인코더(500)는 재구성치(538)로서 예측(558)의 값을 사용한다.
인트라 픽쳐 예측의 경우, 재구성(538)의 값은 인트라 픽쳐 추정기(540) 및 인트라 픽쳐 예측기(545)로 다시 공급될 수 있다. 또한, 재구성(538)의 값은 후속하는 픽쳐의 모션 보상된 예측에 대해 사용될 수 있다. 재구성(538)의 값은 추가로 필터링될 수 있다. 필터링 제어부(560)는, 비디오 신호(505)의 주어진 픽쳐에 대해, 재구성(538)의 값에 관한 디블록 필터링 및 SAO 필터링을 수행하는 방법을 결정한다. 필터링 제어부(560)는 필터 제어 데이터(562)를 생성하는데, 필터 제어 데이터(562)는 헤더 포맷터/엔트로피 코더(590) 및 병합기/필터(들)(565)로 제공된다.
병합기/필터(들)(565)에서, 인코더(500)는 상이한 타일로부터의 콘텐트를 픽쳐의 재구성된 버전으로 병합한다. 인코더(500)는, 프레임에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(562)에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 다른 필터링(예컨대 디링잉 필터링 또는 ALF; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다. 타일 경계는, 인코더(500)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수 있고, 인코더(500)는 이러한 필터링이 적용되었는지 또는 그렇지 않은지의 여부를 나타내기 위해 코딩된 비트스트림 내에 신택스를 제공할 수도 있다. 디코딩된 픽쳐 버퍼(570)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽쳐를 버퍼링한다.
헤더 포맷터/엔트로피 코더(590)는, 일반적인 제어 데이터(522), 양자화된 변환 계수 데이터(532), 인트라 예측 데이터(542), 모션 데이터(552), 및 필터 제어 데이터(562)를 포맷하고 및/또는 엔트로피 코딩한다. 일반적인 제어 데이터(522)는, 픽쳐, 슬라이스, 블록, 또는 비디오의 다른 단위에 대한 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는 신호를 포함한다. 이러한 신호는, 예를 들면, PPS, 슬라이스 헤더, 블록 신택스 구조체 또는 다른 신택스 구조체에 포함될 수 있고, 엔트로피 코딩될 수 있거나 또는 고정된 길이 값으로서 시그널링될 수 있다. 헤더 포맷터/엔트로피 코더(590)는, 적응적 전환 동안 디코더에 의해 사용가능한, 이용가능한 컬러 공간을 식별하는 또는 정의하는 정보(예를 들면, 미리 정의된 컬러 공간, 컬러 공간 변환 동작을 위한 커스텀 매트릭스의 리스트), 이용가능한 컬러 샘플링 레이트를 식별하는 또는 정의하는 정보(예를 들면, 미리 정의된 컬러 샘플링 레이트, 다른 컬러 샘플링 레이트, 또는 다운샘플링 및 업샘플링을 위한 동작의 식별자(identification)의 리스트) 및/또는 이용가능한 비트 깊이를 식별하는 또는 정의하는 정보(예를 들면, 미리 정의된 비트 깊이, 다른 비트 깊이, 또는 비트 깊이 변환을 위한 동작의 식별자의 리스트)를 포맷할 수 있고 및/또는 엔트로피 코딩할 수 있다.
헤더 포맷터/엔트로피 코더(590)는 코딩된 비디오 비트스트림(595)에서 인코딩된 데이터를 제공한다. 코딩된 비디오 비트스트림(595)의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
소망되는 압축의 타입 및 구현예에 따라서, 인코더(500)의 모듈은 추가될 수 있고, 생략될 수 있고, 다수의 모듈로 분할될 수 있고, 다른 모듈과 결합될 수 있고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 인코더는 설명된 기술 중 하나 이상을 수행한다. 인코더의 특정 실시형태는, 통상적으로, 인코더(500)의 변형예 또는 보충된 버전을 사용한다. 인코더(500) 내에서의 모듈 사이에 도시되는 관계는, 인코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VI. 예시적인 비디오 디코더.
도 6은 몇몇 설명된 실시형태가 연계하여 구현될 수도 있는 일반화된 디코더(600)의 블록도이다. 디코더(600)는 인코딩된 데이터를 코딩된 비디오 비트스트림(605)에서 수신하고 재구성된 비디오(695)에 대한 픽쳐를 포함하는 출력을 생성한다. 코딩된 비디오 비트스트림(605)의 포맷은, H.265/HEVC 포맷, 윈도우 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형안 또는 확장안일 수 있다.
디코더(600)는 블록 기반이며 구현예에 의존하는 블록 포맷을 사용한다. 블록은 상이한 스테이지에서 더 세분될 수도 있다. 예를 들면, 픽쳐는 64×64 블록, 32×32 블록 또는 16×16 블록으로 분할될 수 있는데, 이들은 종국에는 샘플 값의 더 작은 블록으로 분할될 수 있다. H.265/HEVC 표준에 대한 디코딩의 구현예에서, 픽쳐는 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 구획된다.
디코더(600)는 인트라 픽쳐 디코딩 및/또는 인터 픽쳐 디코딩을 사용하여 픽쳐를 압축해제한다. 디코더(600)의 컴포넌트 중 많은 것은 인트라 픽쳐 디코딩 및 인터 픽쳐 디코딩 둘 다에 대해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은, 압축해제되고 있는 정보의 타입에 의존하여 변할 수 있다.
버퍼는 인코딩된 데이터를 코딩된 비디오 비트스트림(605)에서 수신하고 수신된 인코딩된 데이터를 파서/엔트로피 디코더(610)가 이용가능하게 만든다. 파서/엔트로피 디코더(610)는 엔트로피 코딩된 데이터를 엔트로피 디코딩하는데, 통상적으로는 인코더(500)에서 수행된 엔트로피 코딩의 역(예를 들면, 콘텍스트 적응 이진 산술 디코딩)을 적용한다. 파싱 및 엔트로피 디코딩의 결과로서, 파서/엔트로피 디코더(610)는, 일반적인 제어 데이터(622), 양자화된 변환 계수 데이터(632), 인트라 예측 데이터(642), 모션 데이터(652) 및 필터 제어 데이터(662)를 생성한다. 일반적인 제어 데이터(622)는, 픽쳐, 슬라이스, 블록, 또는 비디오의 다른 단위에 대한 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는 신호를 포함한다. 이러한 신호는, 예를 들면, PPS, 슬라이스 헤더, 블록 신택스 구조체 또는 다른 신택스 구조체에 포함될 수 있고, 엔트로피 코딩될 수 있거나 또는 고정된 길이 값으로서 시그널링될 수 있다. 파서/엔트로피 디코더(610)는, 적응적 전환 동안 디코더(600)에 의해 사용가능한, 이용가능한 컬러 공간을 식별하는 또는 정의하는 정보(예를 들면, 미리 정의된 컬러 공간, 컬러 공간 변환 동작을 위한 커스텀 매트릭스의 리스트), 이용가능한 컬러 샘플링 레이트를 식별하는 또는 정의하는 정보(예를 들면, 미리 정의된 컬러 샘플링 레이트, 다른 컬러 샘플링 레이트, 또는 다운샘플링 및 업샘플링을 위한 동작의 식별자(identification)의 리스트) 및/또는 이용가능한 비트 깊이를 식별하는 또는 정의하는 정보(예를 들면, 미리 정의된 비트 깊이, 다른 비트 깊이, 또는 비트 깊이 변환을 위한 동작의 식별자의 리스트)를 파싱할 수 있고 및/또는 엔트로피 디코딩할 수 있다.
일반적인 디코딩 제어부(620)는 일반적인 제어 데이터(622)를 수신하고, 디코딩 동안 디코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(예컨대, 스케일러/역 변환기(635), 인트라 픽쳐 예측기(645), 모션 보상기(655) 및 인트라/인터 스위치)로 제공한다. 특히, 일반적인 디코딩 제어부(620)는, 디코더(600)로 하여금, 디코딩 동안 픽쳐 단위 기반으로, 슬라이스 단위 기반으로, 블록 단위 기반으로 또는 몇몇 다른 기반으로, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환하게 할 수 있다.
현재 픽쳐가 인터 픽쳐 예측을 사용하여 예측되면, 모션 보상기(655)는 모션 데이터(652), 예컨대 MV 데이터, 참조 픽쳐 선택 데이터 및 병합 모드 인덱스 값을 수신한다. 모션 보상기(655)는 MV를, 디코딩된 픽쳐 버퍼(670)로부터의 재구성된 참조 픽쳐(들)에 적용한다. 모션 보상기(655)는 현재 픽쳐의 인터 코딩된 블록에 대한 모션 보상된 예측치를 생성한다. 디코딩된 픽쳐 버퍼(670)는 참조 픽쳐로서의 사용을 위해 하나 이상의 이전에 재구성된 픽쳐를 저장한다.
디코더(600) 내의 별개의 경로에서, 인트라 예측 예측기(645)는, 인트라 예측 데이터(642), 예컨대 인트라 예측이 공간적 예측을 사용하는지 또는 BC 예측을 사용하는지의 여부를 나타내는 정보(예를 들면, 인트라 블록마다의 플래그 값), (인트라 공간 예측을 위한) 예측 모드 방향 및 (인트라 BC 예측을 위한) BV 값을 수신한다. 인트라 공간 예측의 경우, 현재 픽쳐의 재구성(638)의 값을 사용하여, 예측 모드 데이터에 따라, 인트라 픽쳐 예측기(645)는, 현재 픽쳐의 이웃하는 이전에 재구성된 샘플 값으로부터, 현재 픽쳐에서의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는, BV 값을 사용하는 인트라 BC 예측의 경우, 인트라 픽쳐 예측기(645)는, 현재 블록에 대한 BV 값에 의해 나타내어지는 인트라 프레임 예측 참조 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다.
인트라/인터 스위치는, 주어진 블록에 대한 예측(658)이 모션 보상된 예측인지 또는 인트라 픽쳐 예측인지의 여부를 선택한다. 예를 들면, H.265/HEVC 신택스가 후속되면, 인트라/인터 스위치는, 인트라 예측된 CU 및 인터 예측된 CU를 포함할 수 있는 픽쳐의 CU에 대해 인코딩되는 하나 이상의 신택스 엘리먼트에 기초하여 제어될 수 있다. 비스킵 모드 블록의 경우, 디코더(600)는 예측치(658)를 재구성된 잔차 값과 결합하여 비디오 신호로부터의 콘텐트의 재구성치(638)를 생성한다. 스킵 모드 블록의 경우, 디코더(600)는 재구성치(638)로서 예측(658)의 값을 사용한다.
비스킵 모드 블록에 대한 잔차를 재구성하기 위해, 스케일러/역변환기(635)는 양자화된 변환 계수 데이터(632)를 수신하여 프로세싱한다. 스케일러/역 변환기(635)에서, 스케일러/역 양자화기는, 양자화된 변환 계수에 관해 역 스케일링 및 역 양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 값 또는 샘플 값의 블록을 생성한다. 예를 들면, 역 주파수 변환기는 주파수 변환 계수에 대해 역 블록 변환을 적용하여, 샘플 값 데이터 또는 예측 잔차 데이터를 생성한다. 역 주파수 변환은 역 DCT, 역 DCT의 정수 근사, 또는 다른 타입의 역 주파수 변환(예를 들면, 역 이산 사인 변환 또는 역 이산 사인 변환의 정수 근사)일 수 있다.
인트라 픽쳐 예측의 경우, 재구성(638)의 값은 인트라 픽쳐 예측기(645)로 다시 공급될 수 있다. 인터 픽쳐 예측의 경우, 재구성(638)의 값은 추가로 필터링될 수 있다. 병합기/필터(들)(665)에서, 디코더(600)는 상이한 타일로부터의 콘텐트를 픽쳐의 재구성된 버전으로 병합한다. 디코더(600)는, 픽쳐에서의 경계에 걸친 불연속부를 적응적으로 평활화하기 위해, 필터 제어 데이터(662) 및 필터 적응을 위한 규칙에 따라 디블록 필터링 및 SAO 필터링을 선택적으로 수행한다. 다른 필터링(예컨대 디링잉 필터링 또는 ALF; 도시되지 않음)이 대안적으로 또는 추가적으로 적용될 수 있다. 타일 경계는, 인코딩된 비트스트림 데이터 내에서의 신택스 표시(syntax indication) 또는 디코더(600)의 설정에 의존하여, 선택적으로 필터링될 수 있거나 또는 전혀 필터링되지 않을 수 있다. 디코딩된 픽쳐 버퍼(670)는, 후속하는 모션 보상된 예측에서의 사용을 위해 재구성된 현재 픽쳐를 버퍼링한다.
디코더(600)는 또한 후처리 필터(post-processing filter)를 포함할 수 있다. 후처리 필터(608)는, 디링잉 필터링, 적응적 위이너 필터링(adaptive Wiener filtering), 필름 그레인 재현 필터링(film-grain reproduction filtering), SAO 필터링 또는 다른 종류의 필터링을 포함할 수 있다.
소망되는 압축해제의 타입 및 구현예에 따라서, 디코더(600)의 모듈은 추가될 수 있고, 생략될 수 있고, 다수의 모듈로 분할될 수 있고, 다른 모듈과 결합될 수 있고 및/또는 유사한 모듈로 대체될 수 있다. 대안적인 실시형태에서, 상이한 모듈 및/또는 모듈의 다른 구성을 갖는 디코더는 설명된 기술 중 하나 이상을 수행한다. 디코더의 특정 실시형태는, 통상적으로, 디코더(600)의 변형예 또는 보충된 버전을 사용한다. 디코더(600) 내에서 모듈 사이에 도시되는 관계는, 디코더에서의 정보의 일반적인 흐름을 나타내며; 다른 관계는 간략화를 위해 도시되지 않는다.
VII. 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환.
인코딩 동안, 인코더는 다양한 측면(예를 들면, 코딩 모드에 대한 더 많은 옵션, 잠재적으로 더 낮은 양자화 단계 사이즈)에서 주 컬러 성분을 보조 컬러 성분보다 더 조심스럽게 취급할 수도 있다. 또한, 보조 컬러 성분을 서브샘플링하는 것에 의해, 인코더는 상대적으로 더 많은 비트(및 그러므로 품질)를 주 컬러 성분에 할당할 수 있다.
비디오 시퀀스의 상이한 픽쳐, 슬라이스 또는 블록의 샘플 값은 상이한 통계적 특성을 가질 수도 있다. 이들 상이한 통계적 특성은 인코딩의 효율성에 영향을 끼칠 수도 있는데, 인코딩의 효율성은, 레이트-왜곡 성능(주어진 비트 레이트에 대한 더 낮은 또는 더 높은 품질; 또는 주어진 품질에 대한 더 낮은 또는 더 높은 비트 레이트)의 관점에서 측정될 수 있다.
이 섹션은 비디오 시퀀스의 단위에 대한 적응적 인코딩 및 디코딩의 다양한 피쳐를 제시한다. 단위는 픽쳐, 슬라이스, 블록 또는 비디오 시퀀스의 다른 일부일 수 있다. 예를 들면, 피쳐 중 몇몇은, 비디오 시퀀스 내에서의 단위 사이의 컬러 공간의 적응적 전환을 포함하는 인코딩/디코딩에 관한 것이다. 다른 피쳐는, 비디오 시퀀스 내에서의 단위 사이의 컬러 샘플링 레이트의 적응적 전환을 포함하는 인코딩/디코딩에 관한 것이다. 또 다른 피쳐는, 비디오 시퀀스 내에서의 단위 사이의 비트 깊이의 적응적 전환을 포함하는 인코딩/디코딩에 관한 것이다. 이들 피쳐는 많은 시나리오에서 코딩 효율성을 향상시킬 수 있고, 결합하여 또는 개별적으로 사용될 수 있다.
특히, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환은, 스크린 캡쳐 콘텐트와 같은 소정의 "인공적으로" 작성된 비디오 콘텐트를 인코딩할 때, 또는 자연적 비디오와 인공적으로 작성된 비디오 콘텐트의 혼합 콘텐트를 인코딩할 때, 레이트-왜곡 성능을 향상시킬 수 있다. 스크린 캡쳐 콘텐트의 인코딩/디코딩을 위한 공통 시나리오는, 원격 데스크탑 회의 및 미가공 비디오(natural video) 또는 다른 "혼합된 콘텐트" 비디오 상의 그래픽 오버레이의 인코딩/디코딩을 포함한다.
A. 비디오의 타입.
일반적으로, 스크린 캡쳐 비디오는 컴퓨터 스크린 또는 다른 디스플레이의 출력을 나타낸다. 도 7은 스크린 캡쳐에 대한 입력을 제공할 수도 있는 콘텐트를 갖는 컴퓨터 데스크탑 환경(710)을 예시하는 도면이다. 예를 들면, 스크린 캡쳐 비디오는 전체 컴퓨터 데스크탑(711)의 일련의 이미지를 나타낼 수 있다. 또는, 스크린 캡쳐 비디오는, 게임 콘텐트를 포함하는 앱 윈도우(713), 웹 페이지 콘텐트를 갖는 브라우저 윈도우(712) 또는 워드 프로세서 콘텐트를 갖는 윈도우(714)와 같은, 컴퓨터 데스크탑 환경의 윈도우 중 하나에 대한 일련의 이미지를 나타낼 수 있다.
컴퓨터가 생성하는 인공적으로 작성된 비디오 콘텐트로서, 스크린 캡쳐 콘텐트는, 비디오 카메라를 사용하여 캡쳐되는 자연적 비디오 콘텐트에 비해, 상대적으로 적은 별개의 샘플 값을 갖는 경향이 있다. 예를 들면, 스크린 캡쳐 콘텐트의 한 영역은, 종종, 단일의 균일한 컬러를 포함하지만, 반면 자연적 비디오 콘텐트에서의 한 영역은 점진적으로 변하는 컬러를 포함할 가능성이 더 높다. 또한, 스크린 캡쳐 콘텐트는, 콘텐트가 (예를 들면, 스크롤링으로 인해) 공간적으로 변위될 수도 있는 경우에도, 통상적으로, 프레임마다 정확히 반복되는 별개의 구조체(예를 들면, 그래픽, 텍스트 문자)를 포함한다. 스크린 캡쳐 콘텐트는, 종종, 높은 크로마 샘플링 해상도를 갖는 포맷(예를 들면, YUV 4:4:4 또는 RGB 4:4:4)으로 인코딩되지만, 스크린 캡쳐 콘텐트는 또한 더 낮은 크로마 샘플링 해상도(예를 들면, YUV 4:2:0, YUV 4:2:2)를 갖는 포맷으로 인코딩될 수도 있다.
도 8은 자연적 비디오(821) 및 인공적으로 작성된 비디오 콘텐트를 포함하는 복합 비디오(820)를 도시한다. 인공적으로 작성된 비디오 콘텐트는, 자연적 비디오(821) 옆의 그래픽(822) 및 자연적 비디오(821) 아래에서 실행하는 티커(ticker)(823)를 포함한다. 도 7에서 도시되는 스크린 캡쳐 콘텐트와 같이, 도 8에서 도시되는 인공적으로 작성된 비디오 콘텐트는 상대적으로 적은 별개의 샘플 값을 갖는 경향이 있다. 그것은 또한, (예를 들면, 스크롤링으로 인해) 프레임마다 정확히 반복되는 별개의 구조체(예를 들면, 그래픽, 텍스트 문자)를 갖는 경향이 있다.
B. 적응적 전환의 예
컬러 공간의 적응적 전환을 위해, 시퀀스에서의 비디오의 상이한 단위는 상이한 컬러 공간에서 인코딩된다. 예를 들면, 단위 중 몇몇은 YUV 타입 컬러 공간(예를 들면, YCbCr, YCoCg)에서 인코딩되고, 다른 단위는 RGB 타입 컬러 공간(예를 들면, RGB, BGR, GBR)에서 인코딩된다. 이 경우, 인코더 또는 디코더는, 적절하다면, YUV 타입 컬러 공간과 RGB 타입 컬러 공간 사이에서의 전환을 위해, 샘플 값에 관해 컬러 공간 변환 동작을 수행할 수 있다. 통상적으로, 컬러 공간 변환 동작은 위치 기반으로 수행되는 매트릭스 곱 연산에 표현될 수 있는데, 이 경우, 한 위치에 대한 제1 컬러 공간에서의 n 개의 샘플 값은 n×n 매트릭스에 의해 승산되어 그 위치에 대한 제2 컬러 공간에서의 n 개의 샘플 값을 생성하게 된다. 실제, 컬러 공간 변환 동작은 다른 계산을 사용하여 구현될 수 있다.
컬러 공간의 적응적 전환의 다른 예로서, 상이한 단위는 상이한 RGB 타입 컬러 공간에서 인코딩될 수 있는데, 상이한 RGB 타입 컬러 공간은 그들의 주 성분 및 (예를 들면, 잔차 데이터에 대한) 컴포넌트가 시그널링되는 순서의 관점에서 상이하다. 이 경우, 인코더 또는 디코더는, 적절하다면, 어떤 컬러 성분이 주 컬러 성분인지를 변경하기 위해 샘플 값의 블록 또는 플레인에 관해 컬러 공간 재정렬 동작을 수행한다.
몇몇 예시적인 구현예에서, 손실성 코딩의 경우, 인코더는 상이한 컬러 공간 중 임의의 것 사이에서 전환할 수 있다. 그러나, 손실성 코딩의 경우, 인코더는 비가역적 컬러 공간 변환(예를 들면, RGB, BGR 및 GBR 컬러 공간 사이에서 컬러 성분을 재정렬하는 것, 또는, 몇몇 구현예에서, 증가된 중간 비트 깊이를 사용하여 YCoCg로의/로부터의 변환)만을 수행한다.
컬러 샘플링 레이트의 적응적 전환을 위해, 시퀀스에서의 비디오의 상이한 단위는 상이한 컬러 샘플링 레이트로 인코딩된다. 예를 들면, 단위 중 몇몇은 4:2:2 또는 4:2:0 포맷(예컨대 YUV 4:2:2 또는 YUV 4:2:0)으로 인코딩되고, 한편 다른 단위는 4:4:4 포맷(예컨대 YUV 4:4:4)으로 인코딩된다. RGB 타입 컬러 공간은, 일반적으로, 4:4:4의 컬러 샘플링 레이트를 가지지만, 그러나 컬러 성분은, 대신, 4:2:2 또는 4:2:0의 컬러 샘플링 레이트에 따라 서브샘플링될 수 있다.
보조 성분에 대한 샘플 값을 수평으로 또는 수직으로 다운샘플링할 때, 인코더 또는 디코더는, 간단한 서브 샘플링, 서브샘플링을 추가한 저역 통과(low-pass) 필터링, 또는 서브샘플링을 추가한 다른 필터링을 수행할 수 있다. 보조 성분의 샘플 값의 대응하는 업샘플링을 위해, 인코더 또는 디코더는, 예를 들면, 샘플 값 반복 및/또는 필터링을 사용하여, 서브샘플링을 반전시킨다(reverse).
비트 깊이의 적응적 전환을 위해, 시퀀스에서의 비디오의 상이한 단위는 상이한 비트 깊이로 인코딩된다. 예를 들면, 단위 중 몇몇은 12 비트 샘플 값으로 인코딩되고, 한편 다른 단위는 10 비트 샘플 값 또는 8 비트 샘플 값으로 인코딩된다. 비트 깊이 사이에서 변환할 때, 인코더 또는 디코더는 (반올림 인자를 갖는 또는 반올림 인자를 갖지 않는) 상위 비트 깊이 샘플 값을 잘라내어, 하위 비트 깊이 샘플 값을 생성하거나, 또는 하위 비트 깊이 샘플 값을 스케일링하여 상위 비트 깊이 샘플 값을 생성할 수 있다.
인코더는, 통상적으로, 12 비트의 샘플 값을 갖는 RGB 4:4:4와 같은 주어진 포맷에서 입력 비디오를 수신한다. 인코더는, 비디오의 주어진 단위에 대해 입력 포맷과 (상이한 컬러 공간, 상이한 컬러 샘플링 레이트 및/또는 상이한 비트 깊이를 갖는) 다른 포맷 사이에서 변환할 수 있다. 컬러 공간 적응은, 픽쳐 레벨에서, 슬라이스 레벨에서, 블록 레벨에서 또는 몇몇 다른 레벨에서, 홀로 또는 컬러 샘플링 레이트 적응 및/또는 비트 깊이 적응과 결합하여 수행될 수 있다. 마찬가지로, 컬러 샘플링 레이트 적응은, 픽쳐 레벨에서, 슬라이스 레벨에서, 블록 레벨에서 또는 몇몇 다른 레벨에서, 홀로 또는 컬러 공간 적응 및/또는 비트 깊이 적응과 결합하여 수행될 수 있다. 비트 깊이 적응은, 픽쳐 레벨에서, 슬라이스 레벨에서, 블록 레벨에서 또는 몇몇 다른 레벨에서, 홀로 또는 컬러 공간 적응 및/또는 컬러 샘플링 레이트 적응과 결합하여 수행될 수 있다.
도 9는, 시퀀스(900)에서의 픽쳐에 대한 픽쳐 적응적 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 도시한다. 시퀀스(900)는 일련의 픽쳐를 포함한다. 필요시, 인코더는 입력 비디오를 입력 비디오 포맷으로부터 주어진 픽쳐에 대해 선택되는 포맷으로 변환한다. 픽쳐 1의 포맷은 8 비트 샘플 값을 갖는 YCbCr 4:2:0이고, 픽쳐 2의 포맷은 8 비트 샘플 값을 갖는 RGB 4:4:4이다. 픽쳐 3 및 픽쳐 4는 BGR 4:4:4 비디오이지만, 그들의 샘플 값은 상이한 비트 깊이를 갖는다.
도 10은, 시퀀스에서의 픽쳐(1000)의 슬라이스에 대한 슬라이스 적응적 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 예시하는 도면이다. 픽쳐(1000)는 다섯 개의 슬라이스를 포함하는데, 그 경계는 점선으로 도시되어 있다. 예를 들면, 슬라이스 0, 슬라이스 1, 슬라이스 3 및 슬라이스 4는 스크린 캡쳐 콘텐트 또는 다른 인공적으로 작성된 비디오 콘텐트와 관련될 수 있을 것이고, 한편 슬라이스 2는 자연적 비디오 콘텐트와 관련된다. 슬라이스 0 및 슬라이스 3의 포맷은 10 비트의 샘플 값을 갖는 BGR 4:4:4이다. 슬라이스 1은 GBR 4:4:4 비디오의 12 비트 샘플 값을 포함한다. 슬라이스 2의 포맷은 8 비트 샘플 값을 갖는 YCbCr 4:2:0이고, 슬라이스 4의 포맷은 8 비트 샘플 값을 갖는 RGB 4:4:4이다.
도 11은, 시퀀스에서의 픽쳐의 슬라이스(1100)의 블록에 대한 블록 적응적 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 도시한다. 슬라이스(1100)는 세 개의 상이한 블록 사이즈를 갖는 16 개의 블록을 포함한다. 처음 두 개의 블록의 포맷은 8 비트의 샘플 값을 갖는 YCbCr 4:2:0이고, 마지막 블록의 포맷은 10 비트의 샘플 값을 갖는 YCbCr 4:2:0이다. 블록 2 내지 블록 15는 4:4:4의 샘플링 레이트를 갖는 RGB 타입 컬러 공간에서 12 비트의 샘플 값을 포함한다. 블록 2 내지 블록 15에 대한 컬러 공간은 RGB, BGR 및 GBR 사이에서 변한다.
C. 인코딩 동안의 적응적 전환의 예
도 12는, 인코딩 동안, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 적응적으로 전환하기 위한 일반화된 기술(1200)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1200)을 수행할 수 있다.
인코더는 시퀀스에서의 비디오를 인코딩한다(1210). 인코딩의 일부로서, 인코더는, 인코딩 동안 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환한다. 인코더는 픽쳐 내에서 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 공간적으로 전환할 수 있다. 인코더는 픽쳐 단위로 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 시간적으로 전환할 수 있다. 적응적 전환의 목적을 위해, 비디오의 단위는 시퀀스의 픽쳐, 시퀀스의 주어진 픽쳐의 슬라이스, 시퀀스의 주어진 픽쳐의 블록, 또는 비디오 시퀀스의 다른 일부일 수 있다.
예를 들면, 전환은, 컬러 공간 변환 동작을 사용하여 컬러 공간 중 두 개의 컬러 공간 사이에서 변경하는 것을 포함할 수 있다. 컬러 공간 변환 동작의 경우, 컬러 공간은 적어도 하나의 YUV 타입 컬러 공간 및 적어도 하나의 RGB 타입 컬러 공간을 포함할 수 있다. 또는 다른 예로서, 전환은, 컬러 공간 재정렬 동작을 사용하여 컬러 공간 중 두 개의 컬러 공간 사이에서 변경하는 것을 포함할 수 있다. 컬러 공간 재정렬 동작의 경우, 컬러 공간은 다수의 RGB 타입 컬러 공간을 포함할 수 있다. 대안적으로, 컬러 공간은 다른 및/또는 추가적인 컬러 공간을 포함한다.
또는, 다른 예로서, 전환은 컬러 샘플링 레이트 중 두 개의 컬러 샘플링 레이트 사이에서 변경하는 것을 포함할 수 있다. 컬러 샘플링 레이트는 4:4:4, 4:2:2, 4:2:0 및 4:0:0 중 두 개 이상을 포함할 수 있다. 대안적으로, 컬러 샘플링 레이트는 다른 및/또는 추가적인 컬러 샘플링 레이트를 포함한다.
또는, 다른 예로서, 전환은 비트 깊이 중 두 개의 비트 깊이 사이에서 변경하는 것을 포함할 수 있다. 비트 깊이는 샘플당 12 비트, 샘플당 10 비트 그리고 샘플당 8 비트 중 두 개 이상을 포함할 수 있다. 비디오의 주어진 단위의 상이한 컬러 컴포넌트는 동일한 비트 깊이 또는 상이한 비트 깊이를 가질 수 있다. 대안적으로, 비트 깊이는 다른 및/또는 추가적인 비트 깊이를 포함한다.
인코딩 동안, 인코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트에 적어도 부분적으로 기초하여 현재 픽쳐에서의 현재 블록의 샘플 값을 예측할 수 있다. 인트라 픽쳐 예측의 경우, 샘플 값의 세트는 현재 픽쳐의 일부이다. 인터 픽쳐 예측의 경우, 샘플 값의 세트는 참조 픽쳐의 일부이다. 현재 블록의 샘플 값 및 이전에 재구성된 콘텐트의 샘플 값의 세트이 상이한 포맷인 경우, 인코더는 예측을 용이하게 하기 위해 변환 동작을 수행할 수 있다. 이러한 변환 동작의 예는 섹션 VII.E에서 설명된다.
인코딩 동안, 인코더는 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트에 대해 적응적 루프내 디블록화(adaptive in-loop deblocking)를 또한 수행할 수 있다. 규칙(들)은, 이전에 재구성된 콘텐트 내에서의 두 개의 인접한 블록의 상이한 컬러 공간을 담당할 수 있다. 적응적 디블록화를 위한 규칙의 예는 섹션 VII.F에서 설명된다.
인코더는 인코딩된 데이터를 비트스트림에서 출력한다(1220). 인코딩된 데이터는, 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이가 어떻게 전환하는지를 나타내는 하나 이상의 신호를 포함한다.
하나 이상의 신호에 대한 신택스 엘리먼트의 예는 섹션 VII.D에서 설명된다.
도 13은, 인코딩 동안 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 적응적으로 전환하기 위한 보다 상세한 기술(1300)을 도시한다. 도 3 또는 도 5a 및 도 5b를 참조로 설명된 바와 같은 이미지 인코더 또는 비디오 인코더가 기술(1300)을 수행할 수 있다. 특히, 도 13은 인코더에 의해 행해지는 단위마다의 결정을 도시하지만, 그러나, 다른 점에서는, 인코딩을 위한 옵션은 도 12를 참조로 설명된 바와 같다.
인코더는 다음 단위(예를 들면, 픽쳐, 슬라이스, 블록)를 획득하고(1310) 그 단위에 대한 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 설정한다(1320). 필요시, 인코더는 샘플 값을, 그 단위에 대해 설정된 다른 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이로 변환하고, 그 다음 그 단위를 인코딩한다(1330). 인코더는, 그 단위에 대한 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는 하나 이상의 신호를 비롯하여, 그 단위에 대한 인코딩된 데이터를 출력한다(1340). 인코더는, 다음 단위를 계속할지의 여부를 체크하고(1350), 다음 단위를 계속한다면, 다음 단위를 획득한다(1310).
C. 디코딩 동안의 적응적 전환의 예
도 14는, 디코딩 동안, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 적응적으로 전환하기 위한 일반화된 기술(1400)을 도시한다. 도 4 또는 도 6을 참조로 설명된 것과 같은 이미지 디코더 또는 비디오 디코더가 기술(1400)을 수행할 수 있다.
디코더는 인코딩된 데이터를 비트스트림에서 수신한다(1410). 인코딩된 데이터는, 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이가 어떻게 전환하는지를 나타내는 하나 이상의 신호를 포함한다. 하나 이상의 신호에 대한 신택스 엘리먼트의 예는 섹션 VII.D에서 설명된다.
디코더는 시퀀스에서의 비디오를 디코딩한다(1420) 디코딩의 일부로서, 디코더는, 디코딩 동안 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 전환한다. 디코더는 픽쳐 내에서 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 공간적으로 전환할 수 있다. 디코더는 픽쳐 단위로 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 시간적으로 전환할 수 있다. 적응적 전환의 목적을 위해, 비디오의 단위는 시퀀스의 픽쳐, 시퀀스의 주어진 픽쳐의 슬라이스, 시퀀스의 주어진 픽쳐의 블록, 또는 비디오 시퀀스의 다른 일부일 수 있다.
예를 들면, 전환은, 컬러 공간 변환 동작을 사용하여 컬러 공간 중 두 개의 컬러 공간 사이에서 변경하는 것을 포함할 수 있다. 컬러 공간 변환 동작의 경우, 컬러 공간은 적어도 하나의 YUV 타입 컬러 공간 및 적어도 하나의 RGB 타입 컬러 공간을 포함할 수 있다. 또는 다른 예로서, 전환은, 컬러 공간 재정렬 동작을 사용하여 컬러 공간 중 두 개의 컬러 공간 사이에서 변경하는 것을 포함할 수 있다. 컬러 공간 재정렬 동작의 경우, 컬러 공간은 다수의 RGB 타입 컬러 공간을 포함할 수 있다. 대안적으로, 컬러 공간은 다른 및/또는 추가적인 컬러 공간을 포함한다.
또는, 다른 예로서, 전환은 컬러 샘플링 레이트 중 두 개의 컬러 샘플링 레이트 사이에서 변경하는 것을 포함할 수 있다. 컬러 샘플링 레이트는 4:4:4, 4:2:2, 4:2:0 및 4:0:0 중 두 개 이상을 포함할 수 있다. 대안적으로, 컬러 샘플링 레이트는 다른 및/또는 추가적인 컬러 샘플링 레이트를 포함한다.
또는, 다른 예로서, 전환은 비트 깊이 중 두 개의 비트 깊이 사이에서 변경하는 것을 포함할 수 있다. 비트 깊이는 샘플당 12 비트, 샘플당 10 비트 그리고 샘플당 8 비트 중 두 개 이상을 포함할 수 있다. 비디오의 주어진 단위의 상이한 컬러 컴포넌트는 동일한 비트 깊이 또는 상이한 비트 깊이를 가질 수 있다. 대안적으로, 비트 깊이는 다른 및/또는 추가적인 비트 깊이를 포함한다.
디코딩 동안, 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트에 적어도 부분적으로 기초하여 현재 픽쳐에서의 현재 블록의 샘플 값을 예측할 수 있다. 인트라 픽쳐 예측의 경우, 샘플 값의 세트는 현재 픽쳐의 일부이다. 인터 픽쳐 예측의 경우, 샘플 값의 세트는 참조 픽쳐의 일부이다. 현재 블록의 샘플 값 및 이전에 재구성된 콘텐트의 샘플 값의 세트가 상이한 포맷인 경우, 디코더는 예측을 용이하게 하기 위해 변환 동작을 수행할 수 있다. 이러한 변환 동작의 예는 섹션 VII.E에서 설명된다.
디코딩 동안, 디코더는 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트에 대해 적응적 루프내 디블록화를 또한 수행할 수 있다. 규칙(들)은, 이전에 재구성된 콘텐트 내에서의 두 개의 인접한 블록의 상이한 컬러 공간을 담당할 수 있다. 적응적 디블록화를 위한 규칙의 예는 섹션 VII.F에서 설명된다.
도 15는, 디코딩 동안 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 적응적으로 전환하기 위한 보다 상세한 기술(1500)을 도시한다. 도 4 또는 도 6을 참조로 설명된 것과 같은 이미지 디코더 또는 비디오 디코더가 기술(1500)을 수행할 수 있다. 특히, 도 15는 디코더에 의해 행해지는 단위마다의 결정을 도시하지만, 그러나, 다른 점에서는, 디코딩을 위한 옵션은 도 14를 참조로 설명된 바와 같다.
디코더는 다음 단위(예를 들면, 픽쳐, 슬라이스, 블록)에 대한 인코딩된 데이터를 획득한다(1510). 인코딩된 데이터는, 그 단위에 대한 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는 하나 이상의 신호를 포함한다. 디코더는 그 단위에 대한 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 결정한다(1520). 디코더는 그 단위를 디코딩하여(1530), 샘플링 값을, 필요시, 그 단위에 대해 설정된 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이로부터 변환한다. 디코더는, 다음 단위로 계속할지의 여부를 체크하고(1540), 다음 단위로 계속한다면, 다음 단위에 대한 인코딩된 데이터를 획득한다(1510).
D. 적응적 전환 정보의 시그널링의 예
이 섹션은, 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서, 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이가 어떻게 전환하는지를 나타내는 신호의 예를 설명한다. 일반적으로, 비트스트림의 신호는 어떤 단위를 인코딩/디코딩하기 위한 두 개 이상의 옵션 사이에서의 선택을 나타낸다. 컬러 공간 적응의 경우, 신호는 어떤 단위를 인코딩/디코딩할 때 사용되는 두 개 이상의 컬러 공간 사이에서의 선택을 나타낸다. 컬러 샘플링 레이트 적응의 경우, 신호는 어떤 단위를 인코딩/디코딩할 때 사용되는 두 개 이상의 컬러 샘플링 레이트 사이에서의 선택을 나타낸다. 비트 깊이 적응의 경우, 신호는 어떤 단위를 인코딩/디코딩할 때 사용되는 두 개 이상의 비트 깊이 사이에서의 선택을 나타낸다. 어떤 단위의 상이한 컬러 성분에 대해 상이한 비트 깊이가 시그널링될 수 있다.
신호는, 주어진 단위를 인코딩/디코딩하기 위한 컬러 공간(또는 컬러 샘플링 레이트, 또는 비트 깊이)에 대한 두 개의 옵션 사이에서의 선택을 나타내는, 주어진 단위에 대한 플래그 값일 수 있다. 또는, 신호는, 주어진 단위를 인코딩/디코딩하기 위한 컬러 공간(또는 컬러 샘플링 레이트, 또는 비트 깊이)에 대한 세 개 이상의 옵션 사이에서의 선택을 나타내는, 주어진 단위에 대한 몇몇 다른 신택스 엘리먼트(또는 주어진 단위에 대한 다수의 플래그)일 수 있다.
주어진 단위에 대한 신호는 비트스트림 신택스의 임의의 다양한 레벨에서 존재할 수 있다. 픽쳐 단위의 적응의 경우, 예를 들면, 컬러 공간(또는 컬러 샘플링 레이트, 또는 비트 깊이)의 선택을 나타내는 신택스 엘리먼트는 PPS의 일부일 수 있다. 또는, 슬라이스 기반의 적응의 경우, 컬러 공간(또는 컬러 샘플링 레이트, 또는 비트 깊이)의 선택을 나타내는 신택스 엘리먼트는 슬라이스 헤더의 일부일 수 있다. 또는, 블록 단위의 적응의 경우, 컬러 공간(또는 컬러 샘플링 레이트, 또는 비트 깊이)의 선택을 나타내는 신택스 엘리먼트는 블록에 대한 신택스 구조체의 일부(예를 들면, CU 신택스 구조체)일 수 있다. 일반적으로, 픽쳐 단위 적응은, 슬라이스 단위 적응 또는 블록 단위 적응보다 덜 유연하지만, 그러나 더 적은 시그널링 비트를 사용한다. 블록 단위 적응은 슬라이스 단위 적응보다 더 많은 시그널링 비트를 사용하지만, 그러나 더 유연하다.
주어진 단위에 대한 신호는, 예를 들면, CABAC를 사용하여 엔트로피 코딩될 수도 있거나, 또는 고정된 길이 값으로서 포맷될 수 있다. 주어진 단위에 대한 신호는 예측적으로 코딩될 수 있다. 이 경우, 주어진 단위에 대한 파라미터에 대한 델타 값은, 파라미터의 실제 값과 그 예측기 사이의 차이를 나타낸다. 예측기는 상위 신택스 레벨에서 (예를 들면, SPS의 일부로서 또는 다른 시퀀스 레이어 파라미터로서) 시그널링되는 파라미터의 값일 수 있다. 예를 들면, 현재 블록 또는 슬라이스에 대한 비트 깊이 값은 SPS 특정 비트 깊이에 대한 델타 값으로서 시그널링될 수 있다. 또는, 예측기는 비디오의 하나 이상의 이전 단위에 대한 파라미터의 하나 이상의 실제 값(예를 들면, 최종 코딩된 단위에 대한 파라미터의 실제 값, 또는 주어진 단위 근처의 이웃에서의 파라미터의 실제 값의 평균에 기초할 수 있다. 예를 들면, 현재 블록에 대한 비트 깊이는 이전 코딩된 블록의 비트 깊이에 대한 델타 값으로서 시그널링될 수 있다.
인코딩된 데이터는 또한, 이용가능한 컬러 공간을 식별하는 또는 정의하는 정보, 이용가능한 컬러 샘플링 레이트를 식별하는 또는 정의하는 정보, 및/또는 이용가능한 비트 깊이를 식별하는 또는 정의하는 정보를 포함할 수 있다. 이러한 정보는 SPS, PPS, 슬라이스 헤더 또는 비트스트림 신택스의 다른 구조체의 일부로서 시그널링될 수 있다. 이용가능한 컬러 공간, 컬러 샘플링 레이트 또는 비트 깊이는, 인코더 및 디코더에게 알려진 미리 정의된 옵션 중에서 선택될 수 있다. 또는, 인코더는 인코더 및 디코더에 의한 사용을 위한 커스텀 컬러 공간(또는 컬러 샘플링 레이트, 또는 비트 깊이)을 인코딩된 데이터에서 명시할 수 있다. 예를 들면, 그 정보는 컬러 공간 중 두 개의 컬러 공간 사이의 컬러 공간 변환 동작에 사용할 수 있는 값의 매트릭스를 포함할 수 있다. 커스텀 옵션을 명시하는 것은 더 많은 비트를 사용하지만, 미리 정의된 옵션의 세트를 식별하는 것보다 더 많이 유연하다. 다른 가능성은, SPS, PPS, 슬라이스 헤더, 등등의 일부로서 시그널링되는 정보를 전혀 식별하지 않고, 인코더 및 디코더에게 알려진 미리 정의된 옵션을 사용하는 것이다. 이것은 여분의 정보에 대해 어떠한 비트도 사용하지 않지만, 그러나 시퀀스에 대한 인코딩 동안 옵션 중 많은 것이 전혀 사용되지 않을 때 신호의 덜 효율적인 코딩으로 이어질 수도 있다.
이용가능한 컬러 공간(또는 컬러 샘플링 레이트, 또는 비트 레이트)를 식별하는 또는 정의하는 정보는, 비디오의 단위에 대한 옵션의 선택을 나타내는 신호와 연계하여 사용된다. 예를 들면, SPS는 이용가능한 컬러 공간 및 시퀀스에 대해 어떤 컬러 공간 변환이 허용되는지를 식별하는 정보를 포함할 수 있고, PPS(또는 슬라이스 헤더, 또는 블록 신택스 구조체)마다의 신택스 엘리먼트는, 이용가능한 컬러 공간의 특정된 명부(roster)로부터의 선택을 나타낸다. 또는, 슬라이스 헤더는, 이용가능한 컬러 샘플링 레이트를 식별하는 정보를 포함할 수 있고, 블록 신택스 구조체마다의 신택스 엘리먼트는 이용가능한 컬러 샘플링 레이트의 특정된 명부로부터의 선택을 나타낸다. 또는 선행하는 변형안의 몇몇 조합이 사용될 수 있다. 예를 들면, PPS 또는 슬라이스 헤더가 미리 정의된 컬러 공간 중 하나의 선택을 포함하거나 또는 커스텀 컬러 공간의 정보를 포함한 상태에서, SPS가 미리 정의된 컬러 공간의 명부를 나타낼 수 있다.
몇몇 예시적인 구현예에서, 컬러 공간 표시기(color space indicator)의 CU 레벨 시그널링에 대해 추가적인 규칙이 적용된다. 현재 CU가 인트라 공간 예측된 CU이면, 컬러 공간 표시기는 CU 신택스 구조체의 일부로서 시그널링될 수 있다. 현재 CU가 인트라 BC 예측된 CU이거나 또는 인터 픽쳐 예측된 CU이면, 컬러 공간 표시기는 잔차가 존재할 때 CU 신택스 구조체의 일부로서 시그널링될 수 있지만, 그러나 (예를 들면, RGB, BGR 및 GBR 사이에서) 재정렬만을 수반하는 컬러 공간 변환은 허용되지 않는다. 이 상황에서, 이러한 컬러 공간 변환은 성능을 향상시키지 않으며, 컬러 성분을 어떻게 재정렬하는지를 시그널링하는 데 소비되는 비트는 낭비될 것이다.
E. 예측을 위한 변환 동작의 예.
인코딩 또는 디코딩 동안, 인코더 또는 디코더는 이전에 재구성된 콘텐트의 샘플 값의 세트에 적어도 부분적으로 기초하여 현재 픽쳐에서의 현재 블록의 샘플 값을 예측할 수도 있다. 인트라 픽쳐 예측의 경우, 샘플 값의 세트는 현재 픽쳐의 일부(예를 들면, 인트라 공간 예측을 위한 공간적으로 인접한 위치에 있는 샘플 값, 또는 인트라 BC 예측을 위한 이전 블록의 재구성된 샘플 값)이다. 인터 픽쳐 예측의 경우, 샘플 값의 세트는 참조 픽쳐의 일부이다. 현재 블록의 샘플 값 및 이전에 재구성된 콘텐트의 샘플 값의 세트가 상이한 포맷이면, 인코더 또는 디코더는 현재 블록의 샘플 값의 예측을 용이하게 하기 위해 변환 동작을 수행한다.
예를 들면, 이전에 재구성된 콘텐트의 샘플 값의 세트가 GBR 컬러 공간에 있고, 현재 블록이 YCbCr 컬러 공간에서 인코딩되면, 인코더 또는 디코더는, 변환된 샘플 값의 세트를 사용한 인트라 픽쳐 예측 또는 인터 픽쳐 예측 이전에, 이전에 재구성된 콘텐트의 샘플 값의 세트를 YCbCr 컬러 공간으로 변환할 수 있다.
구현예를 간단히 하기 위해, 인코더 및 디코더는 이전에 재구성된 콘텐트의 샘플 값을 "메인" 포맷으로 저장할 수 있다. 메인 포맷은, 특정한 비트 깊이를 가지는 샘플 값 및 특정한 컬러 샘플링 레이트를 갖는, 특정한 컬러 공간에서의 재구성된 콘텐트에 대한 일반적인 표현을 제공한다. 구현예에 따라서, 메인 포맷은 12 비트의 샘플 값을 갖는 GBR 4:4:4, 12 비트의 샘플 값을 갖는 YUV 4:4:4, 또는 컬러 공간, 컬러 샘플링 레이트 및 비트 깊이의 몇몇 다른 조합일 수 있다. 메인 포맷은 인코더 및 디코더에 대해 미리 정의된다. 대안적으로, 메인 포맷은, 재구성된 콘텐트의 저장을 위한 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이를 나타내는, 비트스트림에서의 신호에 의해 특정될 수 있다. 메인 포맷은, 예를 들면, 많은 경우에서의 변환 동작을 방지하기 위해, 비디오 시퀀스의 단위에 대한 가장 일반적인 인코딩 포맷이 되도록 선택될 수 있다. 12 비트의 샘플 값을 갖는 GBR 4:4:4를 메인 포맷으로 사용하는 것은, 컬러 공간 전환이 일반적이지만 컬러 샘플링 레이트 전환이 드문 경우에 스크린 캡쳐 콘텐트에 대해 효율적일 수 있다. 12 비트의 샘플 값을 갖는 YUV 4:4:4를 메인 포맷으로 사용하는 것은, 컬러 공간 전환 및 컬러 샘플링 레이트 전환이 둘 다 공통일 때 효율적일 수 있다.
도 16은, 한 포맷으로 인코딩된 블록의 샘플 값을, 상이한 포맷의 이전에 재구성된 콘텐트의 샘플 값의 세트로부터 예측하기 위한 기술(1600)을 도시한다. 인코더 또는 디코더는 인코딩 또는 디코딩 동안 기술(1600)을 수행할 수 있다.
시작하면, 인코더 또는 디코더는, 현재 픽쳐의 현재 블록의 샘플 값의 예측을 위해 사용될 이전에 재구성된 콘텐트의 샘플 값의 세트를 획득한다(1610). 샘플 값의 세트는, 예측의 타입에 따라, 현재 픽쳐 또는 참조 픽쳐의 일부일 수 있다.
이전에 재구성된 콘텐트의 샘플 값은 제1 포맷(예를 들면, 메인 포맷)으로 저장된다. 인코더 또는 디코더는, 현재 블록이 제1 포맷으로 인코딩되는지의 여부를 체크한다(1620). 보다 일반적으로는, 인코더 또는 디코더는 이전에 재구성된 콘텐트의 샘플 값의 세트 및 현재 블록의 샘플 값이 상이한 포맷인지의 여부를 평가한다.
현재 블록이 제1 포맷(예를 들면, 메인 포맷)으로 인코딩되면, 인코더 또는 디코더는 예측 이전에 변환 동작을 수행할 필요가 없다. 인코더 또는 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트를 사용하여 현재 블록의 샘플 값을 예측한다(1640). 그 다음, 인코딩 동안, 인코더는 잔차 값을 생성할 수도 있고, 인코딩할 수도 있고 재구성할 수도 있다(1650). 디코딩 동안, 디코더는 잔차 값을 재구성할 수도 있다(1650). 그 다음, 인코더 또는 디코더는, 예측된 샘플 값에 적어도 부분적으로 기초하여 현재 블록의 샘플 값을 재구성한다(1660). 스킵되지 않은 블록의 경우, 인코더 또는 디코더는, 예측된 샘플 값을, 재구성된 잔차 값과 결합하여, 재구성된 샘플 값을 생성할 수 있다. 그 다음, 인코더 또는 디코더는 현재 블록의 재구성된 샘플 값을, 이전에 재구성된 콘텐트의 일부로서 저장한다(1670). 현재 블록이 제1 포맷(예를 들면, 메인 포맷)으로 인코딩되기 때문에, 인코더 또는 디코더는 예측 이후에 변환 동작을 수행할 필요가 없다.
한편, 현재 블록이 제1 포맷으로 인코딩되지 않으면, 인코더 또는 디코더는 이전에 재구성된 콘텐트의 샘플 값의 세트를, 제1 포맷으로부터, 현재 블록이 인코딩되는 제2 포맷으로 변환한다(1632). 예를 들면, 제1 및 제2 포맷이 상이한 컬러 공간을 가지면, 인코더 또는 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트의 컬러 공간을 제2 포맷으로 변경하기 위해, 컬러 공간 변환 동작 및/또는 컬러 공간 재정렬 동작을 수행한다. 예를 들면, 인코더 또는 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트(P)를, RGB 컬러 공간으로부터 YCoCg 컬러 공간으로 다음과 같이 변환할 수 있다.
RGB 컬러 공간에서의 한 위치에 대한 샘플 값이, 각각, PsR, PsG 및 PsB이고, 현재 비트 깊이가 bit_depthcurrent인 것으로 가정한다. 최소 샘플 값은 0이고, 최대 샘플 값은 (1 << bit_depthcurrent) - 1(예를 들면, 8 비트 샘플 값의 경우 255)이다. Co 및 Cg의 다이나믹 레인지를 조정하기 위해, 항 add_value는 1 << (bit_depthcurrent - 1)(예를 들면, 8 비트 샘플 값의 경우 128)로서 정의된다. YCoCg 컬러 공간에서의 그 위치에 대한 샘플 값 PsY, PsCo, 및 PsCg는 다음에 의해 계산될 수 있다:
Figure 112016095207059-pct00001
샘플 값 PsY, PsCo, 및 PsCg는, 최소 샘플 값과 최대 샘플 값에 의해 정의되는 범위에서 클립된다.
보다 일반적으로는, 제1 컬러 공간으로부터 제2 컬러 공간으로의 변환을 위한 컬러 변환 매트릭스 CC_matrix1 _to_2는 다음과 같이 정의될 수 있다:
Figure 112016095207059-pct00002
출력의 다이나믹 레이지를 조정하기 위해, 오프셋 CC_offsets1 _to_2의 매트릭스가 사용될 수 있다. 오프셋 CC_offsets1 _to_2는 다음과 같이 정의될 수 있다:
Figure 112016095207059-pct00003
제1 컬러 공간에서의 한 위치에 대한 샘플 값이
Figure 112016095207059-pct00004
인 것으로 가정한다. 제2 컬러 공간에서의 그 위치에 대한 샘플 값 PsCC2는 다음과 같이 계산될 수 있다:
Figure 112016095207059-pct00005
샘플 값 PsCC2는 적절한 범위로 클립된다.
이전에 재구성된 콘텐트의 샘플 값의 세트(P)에 대한 컬러 공간 재정렬 동작은, 주 컬러 성분 및 보조 컬러 성분의 순서를 변경하기 위해, 샘플 값의 블록 또는 플레인의 컬러 성분을 재정렬하는 것에 의해 구현될 수 있다.
제1 및 제2 포맷이 상이한 컬러 샘플링 레이트를 가지면, 인코더 또는 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트의 컬러 샘플링 레이트를 제2 포맷으로 변경하기 위해, (필터링을 갖는 또는 필터링이 없는) 다운샘플링 또는 업샘플링을 수행한다. 예를 들면, 인코더 또는 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트(P)를 4:4:4 컬러 샘플링 레이트로부터 4:2:0 컬러 샘플링 레이트로 다음과 같이 변환할 수 있다.
이전에 재구성된 콘텐트의 샘플 값이 YUV 4:4:4 샘플 값인 것으로 가정한다. YUV 4:4:4 비디오의 공간 해상도는 모든 컬러 성분에 대한 폭×높이이다. 컬러 샘플링 레이트 변환 이후, YUV 4:2:0 비디오의 공간 해상도는, Y 성분에 대한 폭×높이 및 U 및 V 성분에 대한 (폭/2)×(높이/2)이다. 각각의 위치 (i,j)(0 ≤ i < 폭, 및 0 ≤ j < 높이)에 대해, 인코더 또는 디코더는 YUV 4:2:0 비디오에 대한 샘플 값을 다음과 같이 계산할 수 있다.
Figure 112016095207059-pct00006
이 방식에서, U 및 V 성분의 샘플 값은 필터링 없이 결정된다. 대안적으로, 인코더 또는 디코더는, 다운샘플링된 U 및 V 성분을 획득할 때 필터링을 사용할 수 있다.
제1 및 제2 포맷이 상이한 비트 깊이를 가지면, 인코더 또는 디코더는 이전에 재구성된 콘텐트의 샘플 값의 세트(P)를, 비트 깊이 bit_depthref로부터 현재 블록의 샘플 값의 비트 깊이 bit_depthcurrent로 다음과 같이 변경한다.
Figure 112016095207059-pct00007
예를 들면, 제1 포맷의 비트 깊이가 샘플당 10 비트이고, 제2 포맷의 비트 깊이가 샘플당 8 비트이고, 현재 블록이 인트라 공간 예측을 사용한다고 가정한다. 인코더 또는 디코더는, 인트라 공간 예측에서 사용되는 이웃 위치의 10 비트 샘플 값을 획득한다. 10 비트 샘플 값은 8 비트 샘플 값으로 변환되는데, 그 다음, 8 비트 샘플 값은 현재 블록에 대한 8 비트의 예측된 샘플 값을 생성하기 위해 사용된다.
변환 인후(1632), 인코더 또는 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트를 사용하여 현재 블록의 샘플 값을 예측한다(1642). 그 다음, 인코딩 동안, 인코더는 잔차 값을 생성할 수도 있고, 인코딩할 수도 있고 재구성할 수도 있다(1652). 디코딩 동안, 디코더는 잔차 값을 재구성할 수도 있다(1652). 그 다음, 인코더 또는 디코더는, 예측된 샘플 값에 적어도 부분적으로 기초하여 현재 블록의 샘플 값을 재구성한다(1662). 스킵되지 않은 블록의 경우, 인코더 또는 디코더는, 예측된 샘플 값을, 재구성된 잔차 값과 결합하여, 재구성된 샘플 값을 생성할 수 있다.
이 때, 현재 블록의 재구성된 샘플 값은 제2 포맷이다. 현재 블록의 재구성된 샘플 값은, 재구성된 콘텐트의 일부로서의 저장 이전에 제1 포맷으로 변환된다. 인코더 또는 디코더는, 현재 블록의 재구성된 샘플 값을 제2 포맷으로부터 제1 포맷으로 변환하고(1672) 현재 블록의 변환된 재구성된 샘플 값을, 이전에 재구성된 콘텐트의 일부로서, 이제 제1 포맷(예를 들면, 메인 포맷)에서 저장한다(1670).
예를 들면, 제1 및 제2 포맷이 상이한 컬러 공간을 가지면, 인코더 또는 디코더는, 현재 블록의 재구성된 샘플 값의 컬러 공간을 제1 포맷으로 변경하기 위해, 컬러 공간 변환 동작 및/또는 컬러 공간 재정렬 동작을 수행한다. (제2 포맷으로부터 제1 포맷으로의 컬러 공간 변환 동작은, 일반적으로, 제1 포맷으로부터 제2 포맷으로의 이전의 컬러 공간 변환 동작을 미러링한다.) 예를 들면, 인코더 또는 디코더는, 현재 블록의 재구성된 샘플 값(R)을 YCoCg 컬러 공간으로부터 RGB 컬러 공간으로 다음과 같이 변환할 수 있다.
YCoCg 컬러 공간에서의 한 위치에 대한 샘플 값이, 각각, RsY, RsCo 및 RsCg이고, 현재의 비트 깊이가 bit_depthcurrent라고 가정한다. 다이나믹 레인지를 조정하기 위해, 항 add_value는 1 << (bit_depthcurrent - 1)(예를 들면, 8 비트 샘플 값의 경우 128)로서 정의된다. RGB 컬러 공간에서의 그 위치의 샘플 값 RsR, RsG, 및 RsB는 다음에 의해 계산될 수 있다:
Figure 112016095207059-pct00008
샘플 값 RsR, RsG, 및 RsB는, 최소 샘플 값과 최대 샘플 값에 의해 정의되는 범위에서 클립된다.
보다 일반적으로는, 제2 컬러 공간으로부터 제1 컬러 공간으로의 역 변환을 위한 컬러 변환 매트릭스 CC_matrix2 _to_1은 다음과 같이 정의될 수 있다:
Figure 112016095207059-pct00009
출력의 다이나믹 레이지를 조정하기 위해, 오프셋 CC_offsets2 _to_1의 매트릭스가 사용될 수 있다. 오프셋 CC_offsetS2 _to_1은 다음과 같이 정의될 수 있다:
Figure 112016095207059-pct00010
제2 컬러 공간에서의 한 위치에 대한 샘플 값이
Figure 112016095207059-pct00011
인 것으로 가정한다. 제1 컬러 공간에서의 그 위치에 대한 샘플 값 RsCC1은 다음과 같이 계산될 수 있다:
Figure 112016095207059-pct00012
샘플 값 RsCC1은 적절한 범위로 클립된다.
재구성된 샘플 값(R)에 대한 컬러 공간 재정렬 동작은, 주 컬러 성분 및 보조 컬러 성분의 순서를 변경하기 위해, 샘플 값의 블록 또는 플레인의 컬러 성분을 재정렬하는 것에 의해 구현될 수 있다.
제1 및 제2 포맷이 상이한 컬러 샘플링 레이트를 가지면, 인코더 또는 디코더는, 현재 블록의 재구성된 샘플 값의 컬러 샘플링 레이트를 제1 포맷으로 변경하기 위해, (필터링을 갖는 또는 필터링이 없는) 다운샘플링 또는 업샘플링을 수행한다. (제2 포맷으로부터 제1 포맷으로의 컬러 샘플링 레이트 변환 동작은, 일반적으로, 제1 포맷으로부터 제2 포맷으로의 이전 컬러 샘플링 레이트 변환 동작을 미러링한다). 예를 들면, 인코더 또는 디코더는, 다운샘플링된 컬러 성분을 업샘플링하는 것에 의해, 현재 블록의 재구성된 샘플 값(R)을 4:2:0 컬러 샘플링 레이트로부터 4:4:4 컬러 샘플링 레이트로 변환할 수 있다.
제1 및 제2 포맷이 상이한 비트 깊이를 가지면, 인코더 또는 디코더는 현재 블록의 재구성된 샘플 값(R)을, 비트 깊이 bit_depthcurrent로부터 재구성된 콘텐트의 샘플 값의 비트 깊이 bit_depthref로 다음과 같이 변경한다.
Figure 112016095207059-pct00013
인코더 또는 디코더는 슬라이스 또는 픽쳐의 다른 블록에 대해 기술(1600)을 반복할 수 있다.
도 16에서, 변환(1632)은 예측(1642) 이전에 발생한다. 대안적으로, 몇몇 타입의 예측(예를 들면, 인트라 공간 예측, 인트라 BC 예측)의 경우, 변환은 예측에 후속할 수 있다. 이 경우, 인코더 또는 디코더는, 이전에 재구성된 콘텐트의 샘플 값의 세트를 사용하여 현재 블록의 샘플 값을 예측하고, 그 다음, 현재 블록의 예측된 샘플 값을 제1 포맷으로부터 제2 포맷으로 변환한다. 인코더 또는 디코더는, 현재 블록의 변환된 예측된 샘플 값에 적어도 부분적으로 기초하여 현재 블록의 샘플 값을 재구성한다.
예를 들면, 제1 포맷의 비트 깊이가 샘플당 10 비트이고, 제2 포맷의 비트 깊이가 샘플당 8 비트이고, 현재 블록은 인트라 공간 예측을 사용한다고 가정한다. 인코더 또는 디코더는, 인트라 공간 예측에서 사용되는 이웃 위치의 10 비트 샘플 값을 획득한다. 10 비트의 샘플 값은 10 비트의 예측된 샘플 값을 생성하기 위해 사용되는데, 10 비트의 예측된 샘플 값은, 그 다음, 8 비트의 샘플 값으로 변환된다.
대안적으로, 재구성된 콘텐트의 단위의 샘플 값은, 단위가 인코딩되는 포맷으로 저장될 수 있다. 각각의 단위에 대한 인코딩 포맷의 몇몇 표시도 또한 저장된다. 재구성된 콘텐트의 샘플 값은, 필요시, 예측을 위해 다른 포맷으로 변환된다.
F. 디블록화 동작의 예.
인코딩 또는 디코딩 동안, 인코더 또는 디코더는 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트에 대해 적응적 루프내 디블록화를 수행할 수도 있다. 몇몇 경우에서, 디블록화는 상이한 컬러 공간으로 인코딩된 두 개의 블록 사이의 경계에 걸쳐 적용될 수도 있다.
예를 들면, 적응적 디블록화의 몇몇 구현예에서, 두 블록 사이의 경계에 대한 디블록화 필터의 세기는, 인접한 블록 중 어느 하나가 넌제로의 잔차 값을 갖는지의 여부에 적어도 부분적으로 기초한다. 두 개의 인접한 블록이 상이한 컬러 공간을 갖는 경우, 블록 사이의 경계에 대한 디블록화 필터의 세기는, 두 개의 인접한 블록의 주 성분이 넌제로의 잔차 값을 갖는지의 여부에 의존할 수 있다. 예를 들면, 두 블록에 대해 컬러 공간이 상이하더라도, 제1 인접한 블록의 주 성분이 평가되고, 제2 인접한 블록의 주 성분이 평가된다. 제1 세기는, 블록에 대한 어느 하나의 주 성분이 넌제로의 잔차 값을 갖는지의 여부에 의존한다.
대안적으로, 규칙(들)은 두 개의 인접한 블록의 상이한 컬러 공간을 담당할 수 있다. 이 경우, 두 개의 인접한 블록이 상이한 컬러 공간을 갖는 경우, 블록 사이의 경계에 대한 디블록화 필터의 세기는, 두 개의 인접한 블록의 대응하는 성분이 넌제로의 잔차 값을 갖는지의 여부에 의존한다. 예를 들면, 하나의 블록의 컬러 공간이 GBR이고, 다른 인접한 블록의 컬러 공간이 RGB라고 가정한다. 양자의 컬러 공간은 RGB 타입 컬러 공간이다. G 성분에 대한 필터 세기를 결정할 때, 인코더 또는 디코더는 제1 블록의 제1 성분(G)의 잔차 값 및 제2 블록의 제2 성분(G)의 잔차 값을 고려한다. 적응적 디블록화의 이 변형안은 상이한 RGB 타입 컬러 공간을 갖는 블록에 대해 사용될 수 있다.
개시된 발명의 원칙이 적용될 수도 있는 많은 가능한 실시형태의 관점에서, 예시된 실시형태는 단지 본 발명의 바람직한 예에 불과하며 본 발명의 범위를 제한하는 것으로 간주되어선 안된다는 것이 인식되어야 한다. 대신, 본 발명의 범위는 하기의 청구범위에 의해 정의된다. 따라서, 이들 청구범위의 취지와 범위 내에 있는 모든 것을 본 발명으로서 주장한다.

Claims (34)

  1. 컴퓨팅 디바이스로서,
    비디오를 시퀀스로 저장하도록 구성된 하나 이상의 버퍼; 및
    비디오 인코더 또는 이미지 인코더
    를 포함하고,
    상기 비디오 인코더 또는 상기 이미지 인코더는,
    상기 시퀀스 내의 비디오를 인코딩하는 동작; 및
    인코딩된 데이터를 비트스트림에서 출력하는 동작
    을 수행하도록 구성되고,
    상기 시퀀스 내의 비디오를 인코딩하는 동작은,
    상기 인코딩 중에 상기 시퀀스 내의 비디오의 적어도 몇몇 단위(unit) 사이에서, 컬러 공간, 컬러 샘플링 레이트, 및 비트 깊이 중 적어도 하나를 공간적으로, 시간적으로, 또는 시공간적으로 전환하는 동작, 및
    2개의 인접한 블록의 주 성분이 넌제로의 잔차 값(residual value)을 갖는지의 여부에 따라 디블록화 필터링(deblock filtering)의 세기(strength)를 조정하는 것을 포함하여, 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트의 디블록화 필터링을 선택적으로 수행하는 동작
    을 포함하고,
    상기 컬러 공간은 RGB 타입 컬러 공간 및 YCoCg 컬러 공간을 포함하고,
    상기 인코더는,
    손실성 코딩에 대하여, 상기 RGB 타입 컬러 공간과 상기 YCoCg 컬러 공간 사이에서 전환하기 위한 컬러 공간 변환(color space conversion) 동작을 사용하는 것, 및
    무손실성 코딩에 대하여, 상기 RGB 타입 컬러 공간과 상기 YCoCg 컬러 공간 사이에서 전환하기 위한 가역적 컬러 공간 변환 동작을 사용하는 것
    사이에서 선택하도록 구성되고,
    상기 인코딩된 데이터는, 상기 컬러 공간, 상기 컬러 샘플링 레이트, 및 상기 비트 깊이 중 적어도 하나가 상기 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서 어떻게 전환하는지를 나타내는 하나 이상의 신호를 포함하는 것인, 컴퓨팅 디바이스.
  2. 제1항에 있어서,
    상기 비디오의 상기 단위는 상기 시퀀스의 주어진(given) 픽쳐의 변환 블록(transform block)인 것인, 컴퓨팅 디바이스.
  3. 제1항에 있어서,
    상기 인코딩된 데이터는 상기 컬러 공간을 식별하거나 정의하는 정보를 더 포함하는 것인, 컴퓨팅 디바이스.
  4. 제1항에 있어서,
    상기 비디오의 상기 단위 중 주어진 단위의 상이한 컬러 성분들은 상이한 비트 깊이들을 갖는 것인, 컴퓨팅 디바이스.
  5. 제1항에 있어서,
    상기 하나 이상의 신호는 상기 비디오의 상기 단위 중 주어진 단위에 대한 플래그 값을 포함하고, 상기 플래그 값은, 상기 컬러 공간에 대한 두 개의 옵션 사이에서의 선택을 나타내고, 상기 인코딩은 콘텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding)을 사용하여 상기 플래그 값을 엔트로피 코딩하는 것을 포함하는 것인, 컴퓨팅 디바이스.
  6. 제5항에 있어서,
    상기 플래그 값은, 상기 주어진 단위에 대한 잔차 값이 있을 때, 상기 주어진 단위에 대한 블록 신택스 구조체의 일부로서 시그널링되는 것인, 컴퓨팅 디바이스.
  7. 비디오 디코더 또는 이미지 디코더를 가진 컴퓨팅 디바이스에서의 방법으로서,
    비트스트림에서 인코딩된 데이터를 수신하는 단계; 및
    상기 인코딩된 데이터를 디코딩하는 단계
    를 포함하고,
    상기 인코딩된 데이터는, 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서 컬러 공간, 컬러 샘플링 레이트, 및 비트 깊이 중 적어도 하나가 어떻게 전환되는지를 나타내는 하나 이상의 신호를 포함하고, 상기 컬러 공간은 RGB 타입 컬러 공간 및 YCoCg 컬러 공간을 포함하고, 상기 하나 이상의 신호는 상기 비디오의 상기 단위 중 주어진 단위에 대한 플래그 값을 포함하고, 상기 플래그 값은 콘텍스트 적응 이진 산술 코딩을 사용하여 엔트로피 코딩된 것이고, 상기 플래그 값은 상기 주어진 단위에 대한 상기 RGB 타입 컬러 공간 및 상기 YCoCg 컬러 공간 사이에서의 선택을 나타내고,
    상기 인코딩된 데이터를 디코딩하는 단계는,
    상기 플래그 값을 엔트로피 디코딩하는 단계;
    상기 디코딩 중에 상기 시퀀스 내의 상기 비디오의 적어도 몇몇 단위 사이에서, 상기 컬러 공간, 상기 컬러 샘플링 레이트, 및 상기 비트 깊이 중 적어도 하나를 공간적으로, 시간적으로, 또는 시공간적으로 전환하는 단계; 및
    2개의 인접한 블록의 주 성분이 넌제로의 잔차 값을 갖는지의 여부에 따라 디블록화 필터링의 세기를 조정하는 것을 포함하여, 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트의 디블록화 필터링을 선택적으로 수행하는 단계
    를 포함하는 것인, 비디오 디코더 또는 이미지 디코더를 가진 컴퓨팅 디바이스에서의 방법.
  8. 제7항에 있어서,
    상기 인코딩된 데이터 중 적어도 일부는, 상기 RGB 타입 컬러 공간 및 상기 YCoCg 컬러 공간 사이에서 전환하기 위한 가역적 컬러 공간 변환 동작을 사용하는 무손실성 코딩으로 인코딩된 것인, 비디오 디코더 또는 이미지 디코더를 가진 컴퓨팅 디바이스에서의 방법.
  9. 제7항에 있어서,
    상기 비디오의 상기 단위는 상기 시퀀스의 주어진 픽쳐의 변환 블록인 것인, 비디오 디코더 또는 이미지 디코더를 가진 컴퓨팅 디바이스에서의 방법.
  10. 제7항에 있어서,
    상기 인코딩된 데이터는 상기 컬러 공간을 식별하거나 정의하는 정보를 더 포함하는 것인, 비디오 디코더 또는 이미지 디코더를 가진 컴퓨팅 디바이스에서의 방법.
  11. 제7항에 있어서,
    상기 주어진 단위의 상이한 컬러 성분들은 상이한 비트 깊이들을 갖는 것인, 비디오 디코더 또는 이미지 디코더를 가진 컴퓨팅 디바이스에서의 방법.
  12. 제7항에 있어서,
    상기 플래그 값은 상기 주어진 단위에 대한 잔차 값이 있을 때 상기 주어진 단위에 대한 블록 신택스 구조체의 일부로서 시그널링되는 것인, 비디오 디코더 또는 이미지 디코더를 가진 컴퓨팅 디바이스에서의 방법.
  13. 프로그래밍될 때, 컴퓨팅 디바이스로 하여금, 동작을 수행하도록 하는 컴퓨터 실행가능 명령어를 저장한 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 동작은,
    시퀀스 내의 비디오를 인코딩하는 동작; 및
    인코딩된 데이터를 비트스트림에서 출력하는 동작
    을 포함하고,
    상기 시퀀스 내의 비디오를 인코딩하는 동작은,
    상기 인코딩 중에 상기 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서, 컬러 공간, 컬러 샘플링 레이트, 및 비트 깊이 중 적어도 하나를 공간적으로, 시간적으로, 또는 시공간적으로 전환하는 동작, 및
    2개의 인접한 블록의 주 성분이 넌제로의 잔차 값을 갖는지의 여부에 따라 디블록화 필터링의 세기를 조정하는 것을 포함하여, 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트의 디블록화 필터링을 선택적으로 수행하는 동작
    을 포함하고,
    상기 컬러 공간은 RGB 타입 컬러 공간 및 YCoCg 컬러 공간을 포함하고,
    상기 인코딩은,
    손실성 코딩에 대하여, 상기 RGB 타입 컬러 공간과 상기 YCoCg 컬러 공간 사이에서 전환하기 위한 컬러 공간 변환 동작을 사용하는 것, 및
    무손실성 코딩에 대하여, 상기 RGB 타입 컬러 공간과 상기 YCoCg 컬러 공간 사이에서 전환하기 위한 가역적 컬러 공간 변환 동작을 사용하는 것
    사이에서 선택하는 것을 포함하고,
    상기 인코딩된 데이터는, 상기 컬러 공간, 상기 컬러 샘플링 레이트, 및 상기 비트 깊이 중 적어도 하나가 상기 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서 어떻게 전환하는지를 나타내는 하나 이상의 신호를 포함하는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 하나 이상의 신호는 상기 비디오의 상기 단위 중 주어진 단위에 대한 플래그 값을 포함하고, 상기 플래그 값은, 상기 컬러 공간에 대한 두 개의 옵션 사이에서의 선택을 나타내고, 상기 인코딩은 콘텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding)을 사용하여 상기 플래그 값을 엔트로피 코딩하는 것을 포함하는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 플래그 값은, 상기 주어진 단위에 대한 잔차 값이 있을 때, 상기 주어진 단위에 대한 블록 신택스 구조체의 일부로서 시그널링되는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  16. 컴퓨팅 디바이스로서,
    비트스트림 내에 인코딩된 데이터를 저장하도록 구성된 버퍼; 및
    비디오 디코더 또는 이미지 디코더
    를 포함하고,
    상기 비디오 디코더 또는 상기 이미지 디코더는,
    상기 비트스트림에서 상기 인코딩된 데이터를 수신하는 동작; 및
    상기 인코딩된 데이터를 디코딩하는 동작
    을 수행하도록 구성되고,
    상기 인코딩된 데이터는, 시퀀스 내의 비디오의 적어도 몇몇 단위 사이에서 컬러 공간, 컬러 샘플링 레이트, 및 비트 깊이 중 적어도 하나가 어떻게 전환되는지를 나타내는 하나 이상의 신호를 포함하고, 상기 컬러 공간은 RGB 타입 컬러 공간 및 YCoCg 컬러 공간을 포함하고, 상기 하나 이상의 신호는 상기 비디오의 상기 단위 중 주어진 단위에 대한 플래그 값을 포함하고, 상기 플래그 값은 콘텍스트 적응 이진 산술 코딩을 사용하여 엔트로피 코딩된 것이고, 상기 플래그 값은 상기 주어진 단위에 대한 상기 RGB 타입 컬러 공간 및 상기 YCoCg 컬러 공간 사이에서의 선택을 나타내고,
    상기 인코딩된 데이터를 디코딩하는 동작은,
    상기 플래그 값을 엔트로피 디코딩하는 동작;
    상기 디코딩 중에 상기 시퀀스 내의 상기 비디오의 적어도 몇몇 단위 사이에서, 상기 컬러 공간, 상기 컬러 샘플링 레이트, 및 상기 비트 깊이 중 적어도 하나를 공간적으로, 시간적으로, 또는 시공간적으로 전환하는 동작; 및
    2개의 인접한 블록의 주 성분이 넌제로의 잔차 값을 갖는지의 여부에 따라 디블록화 필터링의 세기를 조정하는 것을 포함하여, 하나 이상의 규칙에 따라 이전에 재구성된 콘텐트의 디블록화 필터링을 선택적으로 수행하는 동작
    을 포함하는 것인, 컴퓨팅 디바이스.
  17. 제16항에 있어서,
    상기 인코딩된 데이터 중 적어도 일부는 상기 RGB 타입 컬러 공간 및 상기 YCoCg 컬러 공간 사이에서 전환하기 위한 가역적 컬러 공간 변환 동작을 사용하는 무손실성 코딩으로 인코딩된 것인, 컴퓨팅 디바이스.
  18. 제16항에 있어서,
    상기 비디오의 상기 단위는 상기 시퀀스의 주어진 픽쳐의 변환 블록인 것인, 컴퓨팅 디바이스.
  19. 제16항에 있어서,
    상기 인코딩된 데이터는 상기 컬러 공간을 식별하거나 정의하는 정보를 더 포함하는 것인, 컴퓨팅 디바이스.
  20. 제16항에 있어서,
    상기 주어진 단위의 상이한 컬러 성분들은 상이한 비트 깊이들을 갖는 것인, 컴퓨팅 디바이스.
  21. 제16항에 있어서,
    상기 플래그 값은 상기 주어진 단위에 대한 잔차 값이 있을 때 상기 주어진 단위에 대한 블록 신택스 구조체의 일부로서 시그널링되는 것인, 컴퓨팅 디바이스.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020167027275A 2014-03-04 2014-03-04 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환 KR102203111B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/072847 WO2015131328A1 (en) 2014-03-04 2014-03-04 Adaptive switching of color spaces, color sampling rates and/or bit depths

Publications (2)

Publication Number Publication Date
KR20160129067A KR20160129067A (ko) 2016-11-08
KR102203111B1 true KR102203111B1 (ko) 2021-01-13

Family

ID=54054341

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027275A KR102203111B1 (ko) 2014-03-04 2014-03-04 컬러 공간, 컬러 샘플링 레이트 및/또는 비트 깊이의 적응적 전환

Country Status (16)

Country Link
US (5) US10171833B2 (ko)
EP (2) EP3114843B1 (ko)
JP (1) JP6340083B2 (ko)
KR (1) KR102203111B1 (ko)
CN (3) CN110049325B (ko)
AU (1) AU2014385774B2 (ko)
BR (3) BR122022001646B1 (ko)
CA (1) CA2939434C (ko)
CL (1) CL2016002184A1 (ko)
IL (1) IL247232B (ko)
MX (1) MX365498B (ko)
MY (1) MY189001A (ko)
PH (1) PH12016501641A1 (ko)
RU (1) RU2653295C2 (ko)
SG (1) SG11201607282YA (ko)
WO (1) WO2015131328A1 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110049325B (zh) 2014-03-04 2022-07-05 微软技术许可有限责任公司 色彩空间、色彩采样率和/或比特深度的自适应切换
CN105264888B (zh) 2014-03-04 2018-09-14 微软技术许可有限责任公司 用于对色彩空间、色彩采样率和/或比特深度自适应切换的编码策略
JP6367359B2 (ja) 2014-03-27 2018-08-01 マイクロソフト テクノロジー ライセンシング,エルエルシー 色空間を切り替えるときの量子化/スケーリング及び逆量子化/スケーリングの調整
CN105960802B (zh) 2014-10-08 2018-02-06 微软技术许可有限责任公司 切换色彩空间时对编码和解码的调整
WO2016145243A1 (en) * 2015-03-10 2016-09-15 Apple Inc. Adaptive chroma downsampling and color space conversion techniques
KR101770300B1 (ko) * 2015-06-09 2017-08-22 삼성전자주식회사 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
WO2017052250A1 (ko) * 2015-09-23 2017-03-30 엘지전자(주) 영상의 부호화/복호화 방법 및 이를 위한 장치
US20170105012A1 (en) * 2015-10-08 2017-04-13 Mediatek Inc. Method and Apparatus for Cross Color Space Mode Decision
US20170310969A1 (en) * 2016-04-20 2017-10-26 Mediatek Inc. Image encoding method and apparatus with color space transform performed upon predictor and associated image decoding method and apparatus
US10244200B2 (en) * 2016-11-29 2019-03-26 Microsoft Technology Licensing, Llc View-dependent operations during playback of panoramic video
US10244215B2 (en) * 2016-11-29 2019-03-26 Microsoft Technology Licensing, Llc Re-projecting flat projections of pictures of panoramic video for rendering by application
US10242714B2 (en) 2016-12-19 2019-03-26 Microsoft Technology Licensing, Llc Interface for application-specified playback of panoramic video
CN109565604A (zh) * 2016-12-30 2019-04-02 华为技术有限公司 图像滤波方法、装置以及设备
CN108989820B (zh) * 2017-06-03 2022-07-05 上海天荷电子信息有限公司 各阶段采用各自相应色度采样格式的数据压缩方法和装置
GB2564466B (en) * 2017-07-13 2020-01-08 Advanced Risc Mach Ltd Storing YUV texture data in a cache in a graphics processing system
CN109274969B (zh) * 2017-07-17 2020-12-22 华为技术有限公司 色度预测的方法和设备
CN109076224B (zh) * 2017-12-29 2021-05-07 深圳市大疆创新科技有限公司 视频解码器及其制造方法,数据处理电路、***和方法
KR20190107944A (ko) * 2018-03-13 2019-09-23 삼성전자주식회사 복원 영상에 대한 필터링을 수행하는 영상 처리 장치 및 이의 필터링 방법
EP3780602A4 (en) * 2018-03-29 2021-05-26 Sony Corporation IMAGE PROCESSING DEVICE AND IMAGE PROCESSING METHOD
US10666863B2 (en) 2018-05-25 2020-05-26 Microsoft Technology Licensing, Llc Adaptive panoramic video streaming using overlapping partitioned sections
US10764494B2 (en) 2018-05-25 2020-09-01 Microsoft Technology Licensing, Llc Adaptive panoramic video streaming using composite pictures
WO2020156545A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Prediction using intra-buffer samples for intra block copy in video coding
US10939116B2 (en) 2019-02-26 2021-03-02 Raritan Americas, Inc. Adaptive variation of chroma subsampling in image compression
JP7405861B2 (ja) * 2019-03-01 2023-12-26 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのための方向に基づく予測
EP3915252A4 (en) 2019-03-04 2022-03-23 Beijing Bytedance Network Technology Co., Ltd. IMPLEMENTATION OF ASPECTS IN AN INTRA BLOCK COPY IN VIDEO ENCODING
US10742992B1 (en) 2019-03-26 2020-08-11 Electronic Arts Inc. Video compression for video games
WO2020228834A1 (en) * 2019-05-16 2020-11-19 Beijing Bytedance Network Technology Co., Ltd. Adaptive bit-depth conversion in video coding
CN114745544B (zh) 2019-05-28 2024-05-28 杜比实验室特许公司 用信号发送量化参数的方法和计算机可读记录介质
WO2020253861A1 (en) 2019-06-21 2020-12-24 Beijing Bytedance Network Technology Co., Ltd. Adaptive in-loop color-space transform for video coding
MX2022000102A (es) 2019-07-06 2022-02-03 Beijing Bytedance Network Tech Co Ltd Bufer de prediccion virtual para la copia intra-bloque en codificacion de video.
JP7359934B2 (ja) 2019-07-10 2023-10-11 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのサンプル識別
CN117579816A (zh) * 2019-07-11 2024-02-20 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的比特流一致性约束
WO2021051044A1 (en) 2019-09-14 2021-03-18 Bytedance Inc. Quantization parameter offset for chroma deblocking filtering
WO2021072177A1 (en) 2019-10-09 2021-04-15 Bytedance Inc. Cross-component adaptive loop filtering in video coding
US11412235B2 (en) 2019-10-10 2022-08-09 Tencent America LLC Color transform for video coding
JP2022552338A (ja) 2019-10-14 2022-12-15 バイトダンス インコーポレイテッド クロマ残差の共同コーディング及びビデオ処理におけるフィルタリング
WO2021086024A1 (ko) * 2019-10-28 2021-05-06 엘지전자 주식회사 적응적 색공간 변환을 이용하여 레지듀얼 처리를 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2021088951A1 (en) 2019-11-07 2021-05-14 Beijing Bytedance Network Technology Co., Ltd. Quantization properties of adaptive in-loop color-space transform for video coding
WO2021101317A1 (ko) * 2019-11-22 2021-05-27 엘지전자 주식회사 무손실 색상 변환을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
EP4055827A4 (en) * 2019-12-09 2023-01-18 ByteDance Inc. USING QUANTIFICATION GROUPS IN VIDEO CODING
CN114731438A (zh) * 2019-12-27 2022-07-08 富士通株式会社 自适应颜色变换的编解码方法、装置以及视频编解码设备
CN114902657A (zh) 2019-12-31 2022-08-12 字节跳动有限公司 视频编解码中的自适应颜色变换
JP7500981B2 (ja) 2020-02-05 2024-06-18 富士通株式会社 画像符号化装置、画像復号装置、及び画像処理システム
US12034910B2 (en) * 2020-06-18 2024-07-09 Lg Electronics Inc. Image encoding/decoding method and apparatus for signaling high level information for tool control based on color representation format, and computer-readable recording medium storing bitstream
KR20220037382A (ko) 2020-09-17 2022-03-24 레몬 인크. 디코더 구성 레코드에서의 픽처 치수 표시
US11563964B2 (en) 2020-11-12 2023-01-24 Tencent America LLC Method and apparatus for video coding
US11689743B2 (en) * 2020-11-12 2023-06-27 Tencent America LLC Method and apparatus for video coding
US11838551B2 (en) * 2020-12-30 2023-12-05 Ofinno, Llc Adaptive block level bit-depth prediction
US12041248B2 (en) * 2021-08-02 2024-07-16 Mediatek Singapore Pte. Ltd. Color component processing in down-sample video coding

Family Cites Families (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3238704A (en) 1963-03-07 1966-03-08 Engelhard Ind Inc Diffusion purification of gases
US5386496A (en) 1991-02-15 1995-01-31 Toyo Ink Mfg. Co., Ltd. Method and device for nonlinear transformation of colour information by neural network
EP0579873B1 (en) 1992-07-20 1999-05-06 Océ-Technologies B.V. Method of reproducing text on a raster output device
JP3284829B2 (ja) 1995-06-15 2002-05-20 ミノルタ株式会社 画像処理装置
US5805228A (en) 1996-08-09 1998-09-08 U.S. Robotics Access Corp. Video encoder/decoder system
US6319306B1 (en) 2000-03-23 2001-11-20 Idatech, Llc Hydrogen-selective metal membrane modules and method of forming the same
JPH1155538A (ja) 1997-08-01 1999-02-26 Fujitsu Ltd カラー画像情報処理システム、カラー画像情報入力装置及びカラー画像出力装置
JPH11164152A (ja) 1997-11-26 1999-06-18 Ricoh Co Ltd カラー画像データ圧縮装置
US6262812B1 (en) 1998-04-30 2001-07-17 Xerox Corporation Method and apparatus for object-oriented adjustment of color attributes in a perceptually uniform manner
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
JP3725454B2 (ja) 2001-01-17 2005-12-14 セイコーエプソン株式会社 画像ファイルの出力画像調整
US8374237B2 (en) 2001-03-02 2013-02-12 Dolby Laboratories Licensing Corporation High precision encoding and decoding of video images
US6975680B2 (en) 2001-07-12 2005-12-13 Dolby Laboratories, Inc. Macroblock mode decision biasing for video compression systems
JP3902968B2 (ja) 2002-03-26 2007-04-11 キヤノン株式会社 画像処理装置及びその制御方法及びコンピュータプログラム及び記憶媒体
US7155065B1 (en) * 2002-03-27 2006-12-26 Microsoft Corporation System and method for progressively transforming and coding digital data
US6961736B1 (en) 2002-05-31 2005-11-01 Adobe Systems Incorporated Compact color feature vector representation
JP4617644B2 (ja) 2003-07-18 2011-01-26 ソニー株式会社 符号化装置及び方法
US20070206682A1 (en) 2003-09-29 2007-09-06 Eric Hamilton Method And Apparatus For Coding Information
US7308135B2 (en) 2004-01-14 2007-12-11 Eastman Kodak Company Constructing extended color gamut digital images from limited color gamut digital images
US7428332B2 (en) 2004-01-14 2008-09-23 Spaulding Kevin E Applying an adjusted image enhancement algorithm to a digital image
KR100518849B1 (ko) * 2004-03-02 2005-09-30 엘지전자 주식회사 영상 압축 및 복원 방법
US7209145B2 (en) 2004-04-02 2007-04-24 Xerox Corporation Color device profile having a buffered look-up table
US7689051B2 (en) * 2004-04-15 2010-03-30 Microsoft Corporation Predictive lossless coding of images and video
US20050259730A1 (en) 2004-05-18 2005-11-24 Sharp Laboratories Of America, Inc. Video coding with residual color conversion using reversible YCoCg
KR100601867B1 (ko) 2004-06-11 2006-07-19 삼성전자주식회사 벡터 스트레칭을 이용한 색역 매핑 장치 및 방법
US7454055B1 (en) 2004-11-12 2008-11-18 Payton Paul M Enhanced image compression utilizing Hilbert curve scanning of quantized discrete cosine transform coefficients
TWI257074B (en) 2005-02-22 2006-06-21 Sunplus Technology Co Ltd Motion estimation method and system using colors information
KR100723403B1 (ko) 2005-02-28 2007-05-30 삼성전자주식회사 컬러 성분간 단일 부호화 모드를 이용한 예측영상 생성 방법 및 장치와, 그를 이용한 영상 및 비디오 부호화/복호화방법 및 장치
KR100763178B1 (ko) 2005-03-04 2007-10-04 삼성전자주식회사 색 공간 스케일러블 비디오 코딩 및 디코딩 방법, 이를위한 장치
US7792370B2 (en) * 2005-03-18 2010-09-07 Sharp Laboratories Of America, Inc. Residual color transform for 4:2:0 RGB format
US20060210156A1 (en) * 2005-03-18 2006-09-21 Sharp Laboratories Of America, Inc. Video compression for raw rgb format using residual color transform
KR101246915B1 (ko) * 2005-04-18 2013-03-25 삼성전자주식회사 동영상 부호화 또는 복호화 방법 및 장치
JP2006340012A (ja) 2005-06-01 2006-12-14 Konica Minolta Medical & Graphic Inc 色調整方法
US7706607B2 (en) 2005-06-23 2010-04-27 Microsoft Corporation Optimized color image encoding and decoding using color space parameter data
KR101204801B1 (ko) 2005-07-15 2012-11-26 삼성전자주식회사 색상계에 적응적인 화소값 보정 방법 및 장치, 그를 이용항영상 부호화/복호화 방법 및 장치
CN100425066C (zh) * 2005-09-23 2008-10-08 逐点半导体(上海)有限公司 图像压缩的方法
EP1964389A2 (en) 2005-12-21 2008-09-03 Thomson Licensing Constrained color palette in a color space
WO2007079781A1 (en) 2006-01-13 2007-07-19 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Picture coding using adaptive colour space transformation
EP1977602B1 (en) * 2006-01-13 2013-03-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Picture coding using adaptive colour space transformation
EP1989882B1 (en) 2006-01-23 2015-11-11 Max-Planck-Gesellschaft zur Förderung der Wissenschaften e.V. High dynamic range codecs
US8243340B2 (en) 2006-02-23 2012-08-14 Microsoft Corporation Pre-processing of image data for enhanced compression
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
CN101110963B (zh) 2006-07-21 2010-05-12 帆宣***科技股份有限公司 图像调整装置
CN100502507C (zh) * 2006-09-14 2009-06-17 浙江大学 视频数据压缩编码方法
BRPI0622046B1 (pt) 2006-09-30 2020-01-21 Interdigital Vc Holdings Inc método e dispositivo para codificar e decodificar camada de aprimoramento de cor para vídeo
KR100843095B1 (ko) 2006-12-13 2008-07-03 삼성전자주식회사 선호색 재현 장치 및 방법
US8055070B2 (en) * 2007-01-05 2011-11-08 Geo Semiconductor Inc. Color and geometry distortion correction system and method
KR20080067226A (ko) 2007-01-15 2008-07-18 주식회사 대우일렉트로닉스 칼라 스페이스 컨버터의 rgb 출력 편차 제거 방법
WO2008127072A1 (en) 2007-04-16 2008-10-23 Electronics And Telecommunications Research Institute Color video scalability encoding and decoding method and device thereof
TW200845723A (en) 2007-04-23 2008-11-16 Thomson Licensing Method and apparatus for encoding video data, method and apparatus for decoding encoded video data and encoded video signal
CN101076125B (zh) * 2007-06-18 2010-07-28 山东经济学院 图像压缩中RGB与YCbCr转换计算的方法
US8422803B2 (en) 2007-06-28 2013-04-16 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method and image decoding method
US8538197B2 (en) * 2007-08-02 2013-09-17 Sony Corporation Image processing apparatus
US8189243B1 (en) 2007-11-13 2012-05-29 Adobe Systems Incorporated Color calibration for digital imaging devices
CN101163252B (zh) 2007-11-27 2011-10-26 中国科学院计算技术研究所 一种多媒体视频图像的缩放方法
KR101213704B1 (ko) 2007-12-05 2012-12-18 삼성전자주식회사 가변 컬러 포맷 기반 동영상 부호화 방법 및 장치, 그복호화 방법 및 장치
US8750390B2 (en) 2008-01-10 2014-06-10 Microsoft Corporation Filtering and dithering as pre-processing before encoding
US8369638B2 (en) 2008-05-27 2013-02-05 Microsoft Corporation Reducing DC leakage in HD photo transform
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
EP2144432A1 (en) 2008-07-08 2010-01-13 Panasonic Corporation Adaptive color format conversion and deconversion
US20100027973A1 (en) 2008-07-29 2010-02-04 Chia-Yun Cheng Image processing circuit and method capable of performing online color space conversion
US9232226B2 (en) * 2008-08-19 2016-01-05 Marvell World Trade Ltd. Systems and methods for perceptually lossless video compression
US8279924B2 (en) 2008-10-03 2012-10-02 Qualcomm Incorporated Quantization parameter selections for encoding of chroma and luma video blocks
US8451896B2 (en) 2009-10-19 2013-05-28 Hong Kong Applied Science and Technology Research Institute Company Limited Method and apparatus for adaptive quantization in digital video coding
JP5227987B2 (ja) 2010-03-10 2013-07-03 日本放送協会 符号化装置、復号装置及びプログラム
CN102223525B (zh) * 2010-04-13 2014-02-19 富士通株式会社 视频解码方法和***
JP5073004B2 (ja) * 2010-04-23 2012-11-14 株式会社東芝 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US9872019B2 (en) * 2010-07-20 2018-01-16 Sk Telecom Co., Ltd. Method and device for deblocking-filtering, and method and device for encoding and decoding using same
US20120026394A1 (en) * 2010-07-30 2012-02-02 Emi Maruyama Video Decoder, Decoding Method, and Video Encoder
US8860785B2 (en) 2010-12-17 2014-10-14 Microsoft Corporation Stereo 3D video support in computing devices
WO2012122426A1 (en) 2011-03-10 2012-09-13 Dolby Laboratories Licensing Corporation Reference processing for bitdepth and color format scalable video coding
US20140003527A1 (en) 2011-03-10 2014-01-02 Dolby Laboratories Licensing Corporation Bitdepth and Color Scalable Video Coding
JP2012217137A (ja) * 2011-03-31 2012-11-08 Sony Corp 画像処理装置、画像処理方法、画像処理プログラム
JP6094973B2 (ja) 2011-05-20 2017-03-15 サン パテント トラスト 色平面内予測を用いて映像を符号化および復号する方法および装置
US9185424B2 (en) * 2011-07-05 2015-11-10 Qualcomm Incorporated Image data compression
US8724711B2 (en) 2011-07-12 2014-05-13 Intel Corporation Luma-based chroma intra prediction
US9769472B2 (en) 2011-08-17 2017-09-19 Mediatek Singapore Pte. Ltd. Method and apparatus for Intra prediction using non-square blocks
US8804816B2 (en) * 2011-08-30 2014-08-12 Microsoft Corporation Video encoding enhancements
US20130083855A1 (en) * 2011-09-30 2013-04-04 Dane P. Kottke Adaptive color space selection for high quality video compression
US9807403B2 (en) 2011-10-21 2017-10-31 Qualcomm Incorporated Adaptive loop filtering for chroma components
EP2777250B1 (en) 2011-11-07 2017-05-31 Intel Corporation Cross-channel residual prediction
KR20130058524A (ko) 2011-11-25 2013-06-04 오수미 색차 인트라 예측 블록 생성 방법
CN106937113B (zh) 2011-12-05 2020-06-02 同济大学 基于混合色度采样率的图像压缩方法和装置
WO2013106190A1 (en) * 2012-01-09 2013-07-18 Dolby Laboratories Licensing Corporation Hybrid reference picture reconstruction method for single and multiple layered video coding systems
US9438904B2 (en) 2012-01-19 2016-09-06 Futurewei Technologies, Inc. Reduced look-up table for LM mode calculation
CN106162185B (zh) 2012-01-20 2019-10-18 维洛媒体国际有限公司 色度量化参数扩展
JP5901362B2 (ja) 2012-03-08 2016-04-06 日本放送協会 色変換装置、カラーサブサンプリング装置およびこれらのプログラム
JP5624576B2 (ja) 2012-03-14 2014-11-12 株式会社東芝 画像圧縮コントローラ及び画像圧縮装置
US9451258B2 (en) 2012-04-03 2016-09-20 Qualcomm Incorporated Chroma slice-level QP offset and deblocking
US9270986B2 (en) 2012-04-13 2016-02-23 Qualcomm Incorporated Level decision in rate distortion optimized quantization
JP5909149B2 (ja) 2012-05-15 2016-04-26 日本放送協会 色変換装置、符号化器および復号器ならびにそれらのプログラム
GB2503875B (en) * 2012-06-29 2015-06-10 Canon Kk Method and device for encoding or decoding an image
US9414054B2 (en) 2012-07-02 2016-08-09 Microsoft Technology Licensing, Llc Control and use of chroma quantization parameter values
US8897580B2 (en) * 2012-07-30 2014-11-25 Apple Inc. Error diffusion with color conversion and encoding
US11240515B2 (en) * 2012-09-10 2022-02-01 Apple Inc. Video display preference filtering
WO2014045506A1 (en) 2012-09-24 2014-03-27 Sharp Kabushiki Kaisha Video compression with color space scalability
US9451250B2 (en) * 2012-10-03 2016-09-20 Broadcom Corporation Bounded rate compression with rate control for slices
CN104937935A (zh) 2012-11-16 2015-09-23 Vid拓展公司 用于视觉条件意识视频编码的感知预处理滤波器
EP2941238B1 (en) 2012-12-21 2019-10-16 L'Oréal Cosmetic composition
CN103096092B (zh) 2013-02-07 2015-12-02 上海国茂数字技术有限公司 基于颜色空间变换进行编解码误差修正的方法和***
JP6033725B2 (ja) 2013-03-28 2016-11-30 Kddi株式会社 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、およびプログラム
WO2014162736A1 (en) * 2013-04-05 2014-10-09 Sharp Kabushiki Kaisha Video compression with color bit depth scaling
US9225991B2 (en) 2013-05-30 2015-12-29 Apple Inc. Adaptive color space transform coding
US9225988B2 (en) * 2013-05-30 2015-12-29 Apple Inc. Adaptive color space transform coding
US9300967B2 (en) 2013-06-19 2016-03-29 Apple Inc. Sample adaptive offset control
US20140376611A1 (en) * 2013-06-21 2014-12-25 Qualcomm Incorporated Adaptive color transforms for video coding
US9294766B2 (en) 2013-09-09 2016-03-22 Apple Inc. Chroma quantization in video coding
EP2887672A1 (en) 2013-12-17 2015-06-24 Thomson Licensing Method for coding a sequence of pictures and method for decoding a bitstream and corresponding devices
CN110049325B (zh) 2014-03-04 2022-07-05 微软技术许可有限责任公司 色彩空间、色彩采样率和/或比特深度的自适应切换
CN105264888B (zh) 2014-03-04 2018-09-14 微软技术许可有限责任公司 用于对色彩空间、色彩采样率和/或比特深度自适应切换的编码策略
US11070810B2 (en) * 2014-03-14 2021-07-20 Qualcomm Incorporated Modifying bit depths in color-space transform coding
JP6367359B2 (ja) 2014-03-27 2018-08-01 マイクロソフト テクノロジー ライセンシング,エルエルシー 色空間を切り替えるときの量子化/スケーリング及び逆量子化/スケーリングの調整
US10142642B2 (en) * 2014-06-04 2018-11-27 Qualcomm Incorporated Block adaptive color-space conversion coding
US9924175B2 (en) 2014-06-11 2018-03-20 Qualcomm Incorporated Determining application of deblocking filtering to palette coded blocks in video coding
US20150373327A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Block adaptive color-space conversion coding
CN105960802B (zh) 2014-10-08 2018-02-06 微软技术许可有限责任公司 切换色彩空间时对编码和解码的调整
US10290119B2 (en) 2016-09-15 2019-05-14 Sportsmedia Technology Corporation Multi view camera registration

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
D. Marpe, et al. Macroblock-Adaptive Residual Color Space Transforms for 4:4:4 Video Coding. 2006 International Conf. on Image Processing. Oct. 2006, pp.3157-3160
W-S. Kim, et al. Color Format Extension. JVT of ISO/IEC MPEG & ITU-T VCEG. JVT-H018. May. 20, 2003, pp.1-17

Also Published As

Publication number Publication date
AU2014385774A1 (en) 2016-09-01
CN105230023A (zh) 2016-01-06
RU2653295C2 (ru) 2018-05-07
WO2015131328A1 (en) 2015-09-11
SG11201607282YA (en) 2016-09-29
MY189001A (en) 2022-01-17
RU2016135630A (ru) 2018-03-07
CN110519593B (zh) 2021-08-31
RU2016135630A3 (ko) 2018-03-07
BR122022001594B1 (pt) 2023-03-07
MX2016011297A (es) 2016-11-08
JP2017512439A (ja) 2017-05-18
US20220046276A1 (en) 2022-02-10
EP3114843B1 (en) 2019-08-07
MX365498B (es) 2019-06-05
CA2939434A1 (en) 2015-09-11
US20190098335A1 (en) 2019-03-28
US11184637B2 (en) 2021-11-23
BR122022001646B1 (pt) 2023-03-07
US10171833B2 (en) 2019-01-01
US10666972B2 (en) 2020-05-26
CN110049325A (zh) 2019-07-23
US20160261884A1 (en) 2016-09-08
NZ723358A (en) 2020-09-25
BR112016019297B1 (pt) 2023-02-23
CN110519593A (zh) 2019-11-29
US20230269396A1 (en) 2023-08-24
CA2939434C (en) 2021-02-16
CN110049325B (zh) 2022-07-05
BR112016019297A2 (ko) 2017-08-15
PH12016501641A1 (en) 2016-10-03
EP3114843A4 (en) 2017-03-01
EP3565251A1 (en) 2019-11-06
US11683522B2 (en) 2023-06-20
EP3565251B1 (en) 2020-09-16
CN105230023B (zh) 2019-10-18
IL247232B (en) 2019-03-31
US20200244991A1 (en) 2020-07-30
KR20160129067A (ko) 2016-11-08
JP6340083B2 (ja) 2018-06-06
CL2016002184A1 (es) 2017-02-03
AU2014385774B2 (en) 2019-01-17
EP3114843A1 (en) 2017-01-11

Similar Documents

Publication Publication Date Title
US11184637B2 (en) Encoding/decoding with flags to indicate switching of color spaces, color sampling rates and/or bit depths
US11632569B2 (en) Encoding strategies for adaptive switching of color spaces, color sampling rates and/or bit depths
US11451778B2 (en) Adjusting quantization/scaling and inverse quantization/scaling when switching color spaces
NZ723358B2 (en) Adaptive switching of color spaces, color sampling rates and/or bit depths

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant