KR102179360B1 - 비디오 스플라이싱을 단순화시키기 위한 버퍼링 정보에 대한 구문 및 의미 - Google Patents

비디오 스플라이싱을 단순화시키기 위한 버퍼링 정보에 대한 구문 및 의미 Download PDF

Info

Publication number
KR102179360B1
KR102179360B1 KR1020157021477A KR20157021477A KR102179360B1 KR 102179360 B1 KR102179360 B1 KR 102179360B1 KR 1020157021477 A KR1020157021477 A KR 1020157021477A KR 20157021477 A KR20157021477 A KR 20157021477A KR 102179360 B1 KR102179360 B1 KR 102179360B1
Authority
KR
South Korea
Prior art keywords
value
picture
cpbrd
sei message
preceding picture
Prior art date
Application number
KR1020157021477A
Other languages
English (en)
Other versions
KR20150105431A (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 KR20150105431A publication Critical patent/KR20150105431A/ko
Application granted granted Critical
Publication of KR102179360B1 publication Critical patent/KR102179360B1/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/46Embedding additional information in the video signal during the compression process
    • 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
    • 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
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44016Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/58Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/141Systems for two-way working between two video terminals, e.g. videophone
    • H04N7/147Communication arrangements, e.g. identifying the communication as a video-communication, intermediate storage of the signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 값의 구문(syntax) 및 의미(semantics)에서의 혁신들은 스플라이싱 동작들을 어쩌면 단순화시킨다. 예를 들어, 비디오 인코더는, 디코딩 순서에서의 선행 픽처(preceding picture)가 버퍼링 기간 SEI 메시지(buffering period SEI message)를 갖는지에 관계없이, 선행 픽처의 공칭 코딩 픽처 버퍼(coded picture buffer, CPB) 제거 시간에 대한 증분 값을 나타내는 현재 픽처에 대한 CPBRD 값을 설정한다. 인코더는 플래그가 CPBRD 값을 어떻게 해석할지를 나타내는 단일 값 방식에 따라, 다른 CPBRD 값(상이한 해석을 가짐)이 또한 시그널링되는 두 값 방식(two-value approach)에 따라, 플래그 및 델타 값을 사용하는 두 값 방식에 따라 CPBRD 값을 시그널링할 수 있다. 대응하는 비디오 디코더는 현재 픽처에 대한 CPBRD 값을 수신하고 파싱한다. 스플라이싱 도구는 현재 픽처에 대한 CPBRD 값을 사용하여 비트스트림들을 스플라이싱하기 위해 간단한 연결 동작들을 수행할 수 있다.

Description

비디오 스플라이싱을 단순화시키기 위한 버퍼링 정보에 대한 구문 및 의미{SYNTAX AND SEMANTICS FOR BUFFERING INFORMATION TO SIMPLIFY VIDEO SPLICING}
본 발명은 비디오 스플라이싱을 단순화시키기 위한 버퍼링 정보에 대한 구문 및 의미에 관한 것이다.
엔지니어들은 디지털 비디오의 비트 전송률을 감소시키기 위해 압축(소스 코딩 또는 소스 인코딩이라고도 함)을 사용한다. 압축은 비디오 정보를 더 낮은 비트 전송률 형태로 변환하는 것에 의해 비디오 정보를 저장 및 전송하는 비용을 감소시킨다. 압축 해제(디코딩이라고도 함)는 압축된 형태로부터 원래 정보의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
최근 20년에 걸쳐, ITU-T H.261, H.262(MPEG-2 또는 ISO/IEC 13818-2), H.263 및 H.264(MPEG-4 AVC 또는 ISO/IEC 14496-10) 표준들 및 MPEG-1(ISO/IEC 11172-2), MPEG-4 Visual(ISO/IEC 14496-2) 및 SMPTE 421M (VC-1) 표준들을 비롯한 다양한 비디오 코덱 표준들이 채택되었다. 보다 최근에, HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 개발되었다. 비디오 코덱 표준은 전형적으로, 특정의 특징들이 인코딩 및 디코딩에서 사용될 때 비트스트림에서의 파라미터들을 상세히 설명하는, 인코딩된 비디오 비트스트림의 구문에 대한 옵션들을 규정한다. 많은 경우에, 비디오 코덱 표준은 또한 디코더가 디코딩에서 부합하는 결과들을 달성하기 위해 수행해야만 하는 디코딩 동작들에 관한 상세들을 제공한다. 코덱 표준들 이외에, 다양한 독점적 코덱 포맷들은 인코딩된 비디오 비트스트림의 구문에 대한 다른 옵션들 및 대응하는 디코딩 동작들을 규정한다.
인코딩된 비디오 비트스트림에서의 한 유형의 파라미터는 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD)이다. 일반적으로, 주어진 픽처(picture)에 대한 CPBRD 값은 픽처와 연관된 인코딩된 데이터가 디코더에서 버퍼로부터 제거되어야 하는 공칭 시간(nominal time)을 명시한다. 픽처에 대한 인코딩된 데이터가 정상 동작 모드에 따라 정확한 때에 제거될 때, 디코더 버퍼는 오버플로우(인코딩된 데이터의 손실을 야기할 수 있음) 또는 언더플로우[연속 재생의 "글리치(glitch)" 또는 기타 중단을 야기할 수 있음]하지 않는다. 저지연 모드(low-delay mode)에서는, 언더플로우가 어떤 상황에서 허용되지만, (전형적으로 방송을 위해 사용되는 것과 같은) 비저지연 모드(non-low-delay mode) 하에서는, 버퍼 언더플로우가 허용되지 않는다. 종래에 HRD(hypothetical reference decoder) 또는 VBV(video buffering verifier)라고 불리우는 버퍼 모델은, 비트스트림이 디코딩 시스템의 버퍼링 자원 내에서 디코딩될 수 있다는 것을 확인하기 위해 그리고 디코더가 그의 디코딩 프로세스의 동작에 대한 타이밍 및 단계들을 결정하는 것을 돕기 위해, CPBRD 값 그리고 전송률(rate) 값, 버퍼 크기(buffer size) 값 및 버퍼 사용률(buffer fullness) 값 또는 (재생이 시작되기 전의) 초기 버퍼링 지연(initial buffering delay) 값과 같은 기타 파라미터들을 사용한다.
많은 상황들에서, 상이한 비디오 시퀀스들에 대한 비트스트림들이 서로 스플라이싱(splicing)된다. 예를 들어, 이러한 스플라이싱은 광고 또는 일련의 광고들을 텔레비전 프로그램에 삽입하기 위해 또는 상이한 텔레비전 프로그램들 간에 전환하기 위해 사용될 수 있다. CPBRD 값을 시그널링하는 기존의 방식들은 스플라이싱을 고려하도록 CPBRD 값을 조절하기 위해 스플라이싱 동안 부담스럽고 어쩌면 어려운 동작들을 야기할 수 있다. 다른 문제점은, 두 개의 소스 스트림이 독립적으로 HRD 호환(HRD-compliant)일 수 있지만, 스플라이싱 후에, 얻어진 스플라이싱된 스트림이 HRD 호환이라고 보장되지 않는다는 것이다.
요약하면, 발명을 실시하기 위한 구체적인 내용은 스플라이싱 동작들을 단순화시키는 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 값의 구문(syntax) 및/또는 의미(semantics)에서의 혁신들을 제시한다. 상세하게는, 이 혁신들은 특정의 픽처에 대한 CPBRD 값을 시그널링하는 새로운 방식을 통해 스플라이싱 동작을 지원하고, 여기서 이러한 CPBRD 값은 하나의 비디오 시퀀스에 대한 비트스트림 또는 비트스트림의 일부가 다른 비디오 시퀀스에 대한 다른 비트스트림 또는 다른 비트스트림의 일부에 연결(concatenate)될 때 재사용될 수 있다.
본 명세서에 기술된 혁신들의 하나의 태양에 따르면, 비디오 인코더 또는 기타 도구가 비디오 시퀀스의 주어진 픽처에 대한 CPBRD 값을 설정한다. 주어진 픽처에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처(preceding picture)가 BP SEI(buffering period SEI) 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 코딩 픽처 버퍼(coded picture buffer, CPB) 제거 시간에 대한 증분 값을 나타낸다. 인코더 또는 기타 도구는 이어서 주어진 픽처에 대한 CPBRD 값을 시그널링한다. CPBRD 값은 플래그가 CPBRD 값을 어떻게 해석할지를 나타내는 단일 값 방식(single-value approach)에 따라, 다른 CPBRD 값(상이한 해석을 가짐)이 또한 시그널링되는 두 값 방식(two-value approach)에 따라, 플래그 및 델타 값을 사용하는 두 값 방식에 따라, 또는 다른 방식에 따라 시그널링될 수 있다.
본 명세서에 기술된 혁신들의 다른 태양에 따르면, 비디오 디코더 또는 기타 도구가 비디오 시퀀스의 주어진 픽처에 대한 CPBRD 값을 수신한다. 주어진 픽처에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 비디오 디코더 또는 기타 도구는 이어서 주어진 픽처에 대한 CPBRD 값을 파싱한다. CPBRD 값은 플래그가 CPBRD 값을 어떻게 해석할지를 나타내는 단일 값 방식에 따라, 다른 CPBRD 값(상이한 해석을 가짐)이 또한 시그널링되는 두 값 방식에 따라, 플래그 및 델타 값을 사용하는 두 값 방식에 따라, 또는 다른 방식에 따라 시그널링될 수 있다.
본 명세서에 기술된 혁신들의 다른 태양에 따르면, 스플라이싱 도구는 제1 비디오 시퀀스에 대한 제1 비트스트림의 적어도 일부를 수신하고, 또한 제2 비디오 시퀀스에 대한 제2 비트스트림의 적어도 일부를 수신한다. 제2 비디오 시퀀스의 주어진 픽처에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 스플라이싱 도구는 제2 비디오 시퀀스의 적어도 일부를 제1 비디오 시퀀스의 적어도 일부에 스플라이싱한다. 스플라이싱의 일부로서, 스플라이싱 도구는 주어진 픽처에서 시작하는 제2 비디오 시퀀스의 전부 또는 일부를 제1 비디오 시퀀스의 적어도 일부에 연결시킨다. CPBRD 값은 플래그가 CPBRD 값을 어떻게 해석할지를 나타내는 단일 값 방식에 따라, 다른 CPBRD 값(상이한 해석을 가짐)이 또한 시그널링되는 두 값 방식에 따라, 플래그 및 델타 값을 사용하는 두 값 방식에 따라, 또는 다른 방식에 따라 시그널링될 수 있다.
인코딩, 디코딩 또는 스플라이싱이 방법의 일부로서, 방법을 수행하도록 구성된 컴퓨팅 디바이스의 일부로서 또는 컴퓨팅 디바이스로 하여금 방법을 수행하게 하기 위한 컴퓨터 실행가능 명령어들을 저장하는 유형적 컴퓨터 판독가능 매체의 일부로서 구현될 수 있다.
본 발명의 이상의 목적들, 특징들 및 장점들과 기타 목적들, 특징들 및 장점들이 첨부 도면들을 참조하여 계속되는 이하의 상세한 설명으로부터 보다 명백하게 될 것이다.
도 1은 일부 기술된 실시예들이 구현될 수 있는 예시적인 컴퓨팅 시스템을 나타낸 도면.
도 2a 및 도 2b는 일부 기술된 실시예들이 구현될 수 있는 예시적인 네트워크 환경들을 나타낸 도면.
도 3은 일부 기술된 실시예들이 구현될 수 있는 예시적인 인코더 시스템을 나타낸 도면.
도 4는 일부 기술된 실시예들이 구현될 수 있는 예시적인 디코더 시스템을 나타낸 도면.
도 5는 일부 기술된 실시예들이 구현될 수 있는 예시적인 비디오 인코더를 나타낸 도면.
도 6은 일부 기술된 실시예들이 구현될 수 있는 예시적인 비디오 디코더를 나타낸 도면.
도 7은 CPBRD 값을 조절하는 종래의 방식들에 따른 스플라이싱 동작들을 나타낸 도면.
도 8 및 도 9는 CPBRD 값을 시그널링하는 단일 값 방식에 대한 구문을 나타낸 표.
도 10은 두 개의 비트스트림이 스플라이싱될 때 버퍼 사용률을 나타낸 차트.
도 11은 플래그 및 델타 값을 사용하는, CPBRD 값을 시그널링하는 두 값 방식에 대한 구문을 나타낸 표.
도 12는 비디오 스플라이싱을 단순화하기 위해 인코딩 동안 CPBRD 값을 설정하는 일반화된 기법을 나타낸 플로우차트.
도 13은 단일 값 방식에 따라 비디오 스플라이싱을 단순화하기 위해 인코딩 동안 CPBRD 값을 설정하는 예시적인 기법을 나타낸 플로우차트.
도 14는 디코딩 동안 CPBRD 값을 처리하는 일반화된 기법을 나타낸 플로우차트.
도 15는 단일 값 방식에 따라 디코딩 동안 CPBRD 값을 결정하는 예시적인 기법을 나타낸 플로우차트.
도 16은 비트스트림들을 스플라이싱하는 일반화된 기법을 나타낸 플로우차트.
도 17은 플래그 및 델타 값을 갖는 두 값 방식에 따라 비디오 스플라이싱을 단순화하기 위해 인코딩 동안 CPBRD 값을 설정하는 예시적인 기법을 나타낸 플로우차트.
도 18은 플래그 및 델타 값을 갖는 두 값 방식에 따라 디코딩 동안 CPBRD 값을 결정하는 예시적인 기법을 나타낸 플로우차트.
발명을 실시하기 위한 구체적인 내용은 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 값의 구문 및/또는 의미를 조절하는 것에 의해 스플라이싱 동작들의 지원을 개선시키는 다양한 방식들을 제시한다. 많은 경우에, 이들 방식은 종래의 방식들의 단점들을 완화시킨다. 상세하게는, 발명을 실시하기 위한 구체적인 내용은 HEVC 표준에서 또는 H.264/AVC 표준에서 여러 유형들의 SEI(supplemental enhancement information) 메시지들에서 시그널링되는 CPBRD 값의 구문 및 의미에 대한 혁신들을 제시한다. 다양한 예들에서, 스플라이싱 동작들을 용이하게 하기 위해 BP SEI(buffering period SEI) 메시지들 및/또는 PT SEI(picture timing SEI) 메시지들의 구문 및/또는 의미가 조절된다.
본 명세서에 기술된 동작들이 인코더(예컨대, 비디오 인코더), 디코더(예컨대, 비디오 디코더), 또는 스플라이싱 도구(예컨대, 비디오 스플라이싱 도구)에 의해 수행되는 것으로 여러 곳에서 기술되어 있지만, 많은 경우에, 동작들이 다른 대안으로서 다른 유형의 미디어 처리 도구에 의해 수행될 수 있다.
본 명세서에 기술된 혁신들 중 일부는 HEVC 표준에 관련된 구문 요소들 및 동작들을 참조하여 설명된다. 예를 들어, HEVC 표준의 초안 버전 JCTVC-K1003 - "High Efficiency Video Coding (HEVC) text specification draft 9", JCTVC-K1003_d13, 11th meeting, Shanghai, October 10-19, 2012 - 이 참조된다. 본 명세서에 기술된 혁신들이 또한 다른 표준들 또는 포맷들(예를 들어, H.264/AVC 표준)에 대해 구현될 수 있다.
보다 일반적으로, 본 명세서에 기술된 예들에 대한 다양한 대안들이 가능하다. 예를 들어, 본 명세서에 기술된 방법들 중 일부가 기술된 방법 동작들의 순서를 변경하는 것에 의해, 특정의 방법 동작들을 분할, 반복 또는 생략하는 것에 의해, 기타에 의해 수정될 수 있다. 개시된 기술의 다양한 태양들이 결합하여 또는 개별적으로 사용될 수 있다. 상이한 실시예들이 기술된 혁신들 중 하나 이상을 사용한다. 본 명세서에 기술된 혁신들 중 일부는 배경 기술에서 살펴본 문제점들 중 하나 이상을 해결한다. 전형적으로, 주어진 기법/도구가 이러한 문제점들 모두를 해결하지는 않는다.
I. 예시적인 컴퓨팅 시스템
도 1은 기술된 혁신들 중 일부가 구현될 수 있는 적당한 컴퓨팅 시스템(100)의 일반화된 예를 나타낸 것이다. 혁신들이 다양한 범용 또는 특수 목적 컴퓨팅 시스템들에서 구현될 수 있기 때문에, 컴퓨팅 시스템(100)은 용도 또는 기능의 범주에 관한 어떤 제한을 암시하기 위한 것이 아니다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 적어도 하나의 처리 유닛들(110, 115) 및 메모리(120, 125)를 포함한다. 처리 유닛들(110, 115)은 컴퓨터 실행가능 명령어들을 실행한다. 처리 유닛은 범용 CPU(central processing unit), ASIC(application-specific integrated circuit) 내의 프로세서, 또는 임의의 다른 유형의 프로세서일 수 있다. 다중 처리 시스템(multi-processing system)에서는, 처리 능력을 증가시키기 위해 다수의 처리 유닛들이 컴퓨터 실행가능 명령어들을 실행한다. 예를 들어, 도 1은 중앙 처리 유닛(110)은 물론, 그래픽 처리 유닛 또는 코프로세싱 유닛(coprocessing unit)(115)을 나타내고 있다. 유형적 메모리(tangible memory)(120, 125)는 처리 유닛(들)에 의해 액세스가능한, 휘발성 메모리(예컨대, 레지스터, 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 어떤 조합일 수 있다. 메모리(120, 125)는, 처리 유닛(들)에 의해 실행하기에 적당한 컴퓨터 실행가능 명령어들의 형태로, 비디오 스플라이싱을 단순화시키는 CPBRD 값들에 대한 구문 및 의미로 비디오의 인코딩, 디코딩 및/또는 스플라이싱을 위한 하나 이상의 혁신들을 구현하는 소프트웨어(180)를 저장한다.
컴퓨팅 시스템은 부가의 특징부들을 가질 수 있다. 예를 들어, 컴퓨팅 시스템(100)은 저장소(140), 하나 이상의 입력 디바이스들(150), 하나 이상의 출력 디바이스들(160), 및 하나 이상의 통신 연결들(170)을 포함한다. 버스, 제어기 또는 네트워크와 같은 상호연결 메커니즘(도시 생략)은 컴퓨팅 시스템(100)의 구성요소들을 상호연결시킨다. 통상적으로, 운영 체제 소프트웨어(도시 생략)는 컴퓨팅 시스템(100)에서 실행 중인 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 시스템(100)의 구성요소들의 활동들을 조정한다.
유형적 저장소(140)는 이동식 또는 비이동식일 수 있고, 정보를 저장하는 데 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 임의의 다른 매체를 포함한다. 저장소(140)는 비디오 스플라이싱을 단순화시키는 CPBRD 값들에 대한 구문 및 의미로 비디오의 인코딩, 디코딩 및/또는 스플라이싱을 위한 하나 이상의 혁신들을 구현하는 소프트웨어(180)에 대한 명령어들을 저장한다.
입력 디바이스(들)(150)는 컴퓨팅 시스템(100)에 입력을 제공하는 키보드, 마우스, 펜, 또는 트랙볼 등의 터치 입력 디바이스, 음성 입력 디바이스, 스캐닝 디바이스, 또는 기타 디바이스일 수 있다. 비디오 인코딩의 경우, 입력 디바이스(들)(150)는 아날로그 또는 디지털 형태로 비디오 입력을 받아들이는 카메라, 비디오 카드, TV 튜너 카드, 또는 유사한 디바이스, 또는 비디오 입력을 컴퓨팅 시스템(100)으로 읽어들이는 CD-ROM 또는 CD-RW일 수 있다. 출력 디바이스(들)(160)는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 디스플레이, 프린터, 스피커, CD 라이터(CD-writer), 또는 다른 디바이스일 수 있다.
통신 연결(들)(170)은 통신 매체를 통해 다른 컴퓨팅 엔터티와의 통신을 가능하게 해준다. 통신 매체는 컴퓨터 실행가능 명령어들, 오디오 또는 비디오 입력 또는 출력, 또는 기타 데이터와 같은 정보를 피변조 데이터 신호(modulated data signal)로 전달한다. 피변조 데이터 신호는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정 또는 변경된 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광, RF, 또는 기타 반송파를 사용할 수 있다.
혁신들이 일반적으로 컴퓨터 판독가능 매체와 관련하여 기술되어 있을 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 유형적 매체(tangible media)이다. 제한이 아닌 예로서, 컴퓨팅 시스템(100)에서, 컴퓨터 판독가능 매체는 메모리(120, 125), 저장소(140), 및 상기한 것들 중 임의의 것의 조합들을 포함한다.
혁신들이 일반적으로 컴퓨팅 시스템에서 실제 또는 가상의 목표 프로세서 상에서 실행되는 프로그램 모듈들에 포함된 것과 같은 컴퓨터 실행가능 명령어들과 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업들을 수행하거나 특정의 추상 데이터 형식들을 구현하는 루틴, 프로그램, 라이브러리, 개체, 클래스, 컴포넌트, 데이터 구조 등을 포함한다. 프로그램 모듈들의 기능이 다양한 실시예들에서 원하는 바에 따라 프로그램 모듈들 간에 결합되거나 분할되어 있을 수 있다. 프로그램 모듈들에 대한 컴퓨터 실행가능 명령어들은 로컬 또는 분산 컴퓨팅 시스템 내에서 실행될 수 있다.
"시스템" 및 "디바이스"라는 용어는 본 명세서에서 서로 바꾸어 사용될 수 있다. 문맥이 명백히 달리 나타내지 않는 한, 용어가 컴퓨팅 시스템 또는 컴퓨팅 디바이스의 유형에 대한 어떤 제한도 암시하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 분산되어 있을 수 있고, 본 명세서에 기술된 기능을 구현하는 소프트웨어를 갖는 특수 목적 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시된 방법들이 또한 개시된 방법들 중 임의의 것을 수행하도록 구성된 특수 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들어, 개시된 방법들은 개시된 방법들 중 임의의 것을 구현하도록 특수 설계되거나 구성된 집적 회로[예컨대, ASIC DSP(digital signal processor)와 같은 ASIC(application specific integrated circuit), GPU(graphics processing unit), 또는 FPGA(field programmable gate array)와 같은 PLD(programmable logic device)]에 의해 구현될 수 있다.
제시를 위해, 발명을 실시하기 위한 구체적인 내용은 컴퓨팅 시스템에서의 컴퓨터 동작들을 기술하기 위해 "결정한다" 및 "사용한다"와 같은 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행되는 동작들에 대한 상위 레벨 추상화이고, 사람에 의해 수행되는 동작들과 혼동되어서는 안된다. 이들 용어에 대응하는 실제 컴퓨터 동작들은 구현에 따라 다르다.
II. 예시적인 네트워크 환경
도 2a 및 도 2b는 비디오 인코더들(220) 및 비디오 디코더들(270)을 포함하는 예시적인 네트워크 환경들(201, 202)을 나타낸 것이다. 인코더들(220) 및 디코더들(270)은 적절한 통신 프로토콜을 사용하여 네트워크(250)를 통해 연결된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에 도시된 네트워크 환경(201)에서, 각각의 RTC(real-time communication) 도구(210)는 양방향 통신을 위해 인코더(220) 및 디코더(270) 둘 다를 포함한다. 주어진 인코더(220)는 SMPTE 421M 표준, ISO/IEC 14496-10 표준(H.264 또는 AVC라고도 알려짐), HEVC 표준(H.265라고도 알려짐), 다른 표준, 또는 독점적 포맷과 호환되는 출력을 생성할 수 있고, 대응하는 디코더(270)는 인코더(220)부터 인코딩된 데이터를 받는다. 양방향 통신은 화상 회의, 화상 전화 통화, 또는 다른 양자간 또는 다자간 통신 시나리오의 일부일 수 있다. 도 2a에서의 네트워크 환경(201)이 두 개의 실시간 통신 도구들(210)을 포함하지만, 네트워크 환경(201)은 그 대신에 다자간 통신에 참여하는 세 개 이상의 실시간 통신 도구들(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)와의 연결들을 관리하기 위한 클라이언트측 제어기 로직을 포함할 수 있다.
도 2a에 도시된 네트워크 환경(201)은 다수의 인코더들을 갖는 다수의 RTC 도구들을 포함할 수 있다. 도 2b에 도시된 네트워크 환경(202)은 다수의 인코더들을 갖는 다수의 인코딩 도구들을 포함할 수 있다. 이러한 인코더들은 스플라이싱 도구에 의해 단일의 비트스트림으로 스플라이싱되는 다수의 출력 비트스트림들을 생성할 수 있다. 또는 단일의 인코더는 스플라이싱 도구에 의해 단일의 비트스트림으로 스플라이싱되는 다수의 비트스트림들을 생성할 수 있다.
III. 예시적인 인코더 시스템
도 3은 일부 기술된 실시예들이 구현될 수 있는 예시적인 인코더 시스템(300)의 블록도이다. 인코더 시스템(300)은 실시간 통신을 위한 저대기시간(low-latency) 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터 재생을 위한 미디어를 생성하기 위한 고대기시간 인코딩 모드와 같은 다수의 인코딩 모드들 중 임의의 것에서 동작할 수 있는 범용 인코딩 도구일 수 있거나, 하나의 이러한 인코딩 모드를 위해 구성된 특수 목적 인코딩 도구일 수 있다. 인코더 시스템(300)은 운영 체제 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 일반적으로, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임들의 시퀀스(311)를 수신하고 인코딩된 데이터를 채널(390)로의 출력으로서 생성한다. 채널로 출력되는 인코딩된 데이터는 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다.
비디오 소스(310)는 카메라, 튜너 카드, 저장 매체, 또는 기타 디지털 비디오 소스일 수 있다. 비디오 소스(310)는, 예를 들어, 초당 30 프레임의 프레임 레이트로 비디오 프레임들의 시퀀스를 생성한다. 본 명세서에서 사용되는 바와 같이, "프레임"이라는 용어는 일반적으로 소스, 코딩된 또는 재구성된 영상 데이터를 지칭한다. 순차 주사 비디오(progressive-scan video)에 대해, 프레임은 순차 주사 비디오 프레임이다. 인터레이스 비디오(interlaced video)에 대해, 예시적인 실시예들에서, 인터레이스 비디오 프레임은 인코딩 이전에 디인터레이스(de-interlace)된다. 다른 대안으로서, 두 개의 상보적인 인터레이스 비디오 필드들이 함께 단일의 비디오 프레임으로서 인코딩되거나 두 개의 개별적으로 인코딩된 필드들로서 인코딩된다. 순차 주사 비디오 프레임(progressive-scan video frame) 또는 인터레이스 주사 비디오 프레임(interlaced-scan video frame)을 나타내는 것 이외에, "프레임" 또는 "픽처"라는 용어는 단일의 쌍이 아닌 비디오 필드, 상보적인 비디오 필드들의 쌍, 주어진 때의 비디오 물체를 표현하는 비디오 물체 평면(video object plane), 또는 더 큰 영상에서의 관심 영역을 나타낼 수 있다. 비디오 물체 평면 또는 영역은 장면의 다수의 물체들 또는 영역들을 포함하는 더 큰 영상의 일부일 수 있다.
도착하는 소스 프레임(311)은 다수의 프레임 버퍼 저장 구역들(321, 322, ..., 32n)을 포함하는 소스 프레임 임시 메모리 저장 구역(320)에 저장된다. 프레임 버퍼(321, 322 등)는 소스 프레임 저장 구역(320)에 하나의 소스 프레임을 보유한다. 소스 프레임들(311) 중 하나 이상이 프레임 버퍼들(321, 322 등)에 저장된 후에, 프레임 선택기(330)는 소스 프레임 저장 구역(320)으로부터 개개의 소스 프레임을 선택한다. 프레임들이 인코더(340)에 입력하기 위해 프레임 선택기(330)에 의해 선택되는 순서는 프레임들이 비디오 소스(310)에 의해 생성되는 순서와 상이할 수 있다(예컨대, 어떤 나중의 프레임들이 먼저 인코딩될 수 있게 하고 따라서 시간상 역방향 예측을 용이하게 하기 위해 어떤 프레임들의 인코딩이 순서가 지연될 수 있다). 인코더(340) 이전에, 인코더 시스템(300)은 인코딩 이전에 선택된 프레임(331)의 전처리(예컨대, 필터링)를 수행하는 전처리기(pre-processor)(도시 생략)를 포함할 수 있다. 전처리는 또한 기본 성분[예컨대, 휘도(luma) 성분] 및 보조 성분들[예컨대, 적색에 대한 색차(chroma difference) 성분 및 청색에 대한 색차 성분]로의 색 공간 변환(color space conversion) 및 [예컨대, 색도 성분(chroma component)들의 공간 분해능을 감소시키기 위해] 재샘플링 처리를 포함할 수 있다.
인코더(340)는 선택된 프레임(331)을 인코딩하여 코딩된 프레임(341)을 생성하고, 또한 MMCO(memory management control operation) 신호들(342) 또는 RPS(reference picture set) 정보를 생성한다. 현재 프레임이 인코딩된 첫 번째 프레임이 아닌 경우, 그의 인코딩 프로세스를 수행할 때, 인코더(340)는 디코딩된 프레임 임시 메모리 저장 구역(360)에 저장된 하나 이상의 이전에 인코딩된/디코딩된 프레임들(369)을 사용할 수 있다. 이러한 저장된 디코딩된 프레임들(369)은 현재 소스 프레임(331)의 내용의 프레임간 예측(inter-frame prediction)을 위한 참조 프레임(reference frame)으로서 사용된다. MMCO/RPS 정보(342)는 어느 재구성된 프레임들이 참조 프레임으로서 사용될 수 있고 따라서 프레임 저장 구역에 저장되어야만 하는지를 디코더에게 알려준다.
일반적으로, 인코더(340)는 움직임 추정 및 보상, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 작업들을 수행하는 다수의 인코딩 모듈들을 포함한다. 인코더(340)에 의해 수행되는 정확한 동작들은 압축 포맷(compression format)에 따라 변할 수 있다. 출력되는 인코딩된 데이터의 포맷은 WMV(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예컨대, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예컨대, H.261, H.262, H.263, H.264), HEVC 포맷(H.265) 또는 기타 포맷일 수 있다.
예를 들어, 인코더(340) 내에서, 프레임간 코딩된 예측된 프레임은 참조 프레임으로부터의 예측으로 표현된다. 움직임 추정기(motion estimator)는 하나 이상의 참조 프레임들(369)에 대한 소스 프레임(331)의 샘플들의 세트들의 움직임을 추정한다. 샘플들의 세트는 (H.264 표준에서와 같이) 매크로블록, 서브매크로블록(sub-macroblock) 또는 서브매크로블록 파티션(sub-macroblock partition)일 수 있거나, (HEVC 표준에서와 같이) 코딩 트리 단위(coding tree unit) 또는 예측 단위(prediction unit)일 수 있다. 일반적으로, 본 명세서에서 사용되는 바와 같이, "블록"이라는 용어는 단일의 2D(two-dimensional) 어레이 또는 다수의 2D 어레이들(예컨대, 휘도 성분에 대한 하나의 어레이 및 색도 성분들에 대한 두 개의 어레이)일 수 있는 샘플들의 세트를 나타낸다. 다수의 참조 프레임들이 사용될 때, 다수의 참조 프레임들은 상이한 시간 방향(temporal direction)들 또는 동일한 시간 방향으로부터의 것일 수 있다. 움직임 추정기는 엔트로피 코딩되어 있는, 움직임 벡터 정보와 같은, 움직임 정보를 출력한다. 움직임 보상기(motion compensator)는 프레임간 예측을 위한 움직임 보상된 예측 값들을 결정하기 위해 참조 프레임들에 움직임 벡터들을 적용한다. 인코더는 블록의 움직임 보상된 예측 값들과 대응하는 원래 값들 사이의 차이(있는 경우)를 결정한다. 이들 예측 잔차 값(prediction residual value)은 주파수 변환, 양자화 및 엔트로피 인코딩을 사용하여 추가로 인코딩된다. 예를 들어, 인코더(340)는 비디오의 픽처, 슬라이스 및/또는 다른 부분에 대해 휘도 QP(quantization parameter) 및 색도 QP에 대한 값들을 설정하고, 그에 따라 변환 계수들을 양자화한다. 이와 유사하게, 프레임내 예측(intra-frame prediction)의 경우, 인코더(340)는 블록에 대한 인트라 예측 값(intra prediction value)들을 결정하고, 예측 잔차 값들을 결정하며, (주파수 변환, 양자화 및 엔트로피 인코딩에 의해) 예측 잔차 값들을 인코딩할 수 있다. 상세하게는, 인코더(340)의 엔트로피 코더(entropy coder)는 양자화된 변환 계수 값들은 물론, 특정의 보조 정보(side information)(예컨대, 움직임 벡터 정보, QP 값, 모드 결정, 파라미터 선택)를 압축한다. 전형적인 엔트로피 코딩 기법들은 지수 골롬 코딩(Exponential-Golomb coding), 골롬 라이스 코딩(Golomb-Rice coding), 산술 코딩(arithmetic coding), 차분 코딩(differential coding), 허프만 코딩(Huffman coding), 런 길이 코딩(run length coding), V2V(variable-length-to-variable-length) 코딩, V2F(variable-length-to-fixed-length) 코딩, LZ(Lempel-Ziv) 코딩, 사전 코딩(dictionary coding), PIPE(probability interval partitioning entropy coding), 및 이들의 조합들을 포함한다. 엔트로피 코더는 상이한 종류의 정보에 대해 상이한 코딩 기법들을 사용할 수 있고, (예컨대, 골롬 라이스 코딩에 뒤이어서 산술 코딩을 적용하는 것에 의해) 다수의 기법들을 결합하여 적용할 수 있으며, 특정의 코딩 기법 내에서 다수의 코드 테이블들 중에서 선택할 수 있다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)[또는 프레임들에 대한 의존 관계 및 정렬 구조를 인코더(340)에서 이미 알고 있기 때문에, MMCO/RPS 정보(342)와 동등한 정보]는 디코딩 프로세스 에뮬레이터(350)에 의해 처리된다. 디코딩 프로세스 에뮬레이터(350)는 디코더의 기능 중 일부, 예를 들어, 움직임 추정 및 보상에서 인코더(340)에 의해 사용되는 참조 프레임들을 재구성하는 디코딩 작업들을 구현한다. MMCO/RPS 정보(342)와 부합하는 방식으로, 디코딩 프로세스 에뮬레이터(350)는 주어진 코딩된 프레임(342)이 재구성되어 인코딩될 후속 프레임들의 프레임간 예측에서 참조 프레임으로서 사용하기 위해 저장될 필요가 있는지를 결정한다. 코딩된 프레임(341)이 저장될 필요가 있는 경우, 디코딩 프로세스 에뮬레이터(350)는 코딩된 프레임(341)을 수신하고 대응하는 디코딩된 프레임(351)을 생성하는 디코더에 의해 수행될 디코딩 프로세스를 모델링한다. 그렇게 함에 있어서, 인코더(340)가 디코딩된 프레임 저장 구역(360)에 저장된 디코딩된 프레임(들)(369)을 사용할 때, 디코딩 프로세스 에뮬레이터(350)는 또한 디코딩 프로세스의 일부로서 저장 구역(360)으로부터의 디코딩된 프레임(들)(369)을 사용한다.
디코딩된 프레임 임시 메모리 저장 구역(360)은 다수의 프레임 버퍼 저장 구역들(361 , 362, ..., 36n)을 포함한다. MMCO/RPS 정보(342)와 부합하는 방식으로, 디코딩 프로세스 에뮬레이터(350)는 참조 프레임들로서 사용하기 위해 인코더(340)에 의해 더 이상 필요로 하지 않는 프레임들을 갖는 임의의 프레임 버퍼들(361, 362 등)을 식별하기 위해 저장 구역(360)의 내용을 관리한다. 디코딩 프로세스를 모델링한 후에, 디코딩 프로세스 에뮬레이터(350)는 새로 디코딩된 프레임(351)을 이러한 방식으로 식별된 프레임 버퍼(361, 362 등)에 저장한다.
인코더(340)는 버퍼 플로우 모델(buffer flow model)[예컨대, HRD(hypothetical reference decoder) 또는 VBV(video buffer verifier)]의 명세(specification)에 따라 인코딩되는 픽처들에 대한 CPBRD 값들을 설정한다. 이러한 방식으로, 인코더(340)는 비트스트림이 디코딩 시스템의 버퍼링 자원 내에서 디코딩될 수 있도록 보장하는 데 도움을 주기 위해 비트스트림에 대한 비트 전송률의 변동에 대한 제약조건들을 적용한다. 인코더(340)는 또한 디코더가 그의 디코딩 프로세스의 동작에 대한 타이밍 및 단계들을 결정하는 데 도움을 주기 위해 CPBRD 값들을 설정한다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)(또는 MMCO/RPS 정보와 동등한 정보)가 또한 임시 코딩된 데이터 구역(temporary coded data area)(370)에 버퍼링된다. 코딩된 데이터 구역(370)에 집합되어 있는 코딩된 데이터는, 기본 코딩된 비디오 비트스트림(elementary coded video bitstream)의 구문의 일부로서, 하나 이상의 픽처들에 대한 인코딩된 데이터를 포함한다. 코딩된 데이터 구역(370)에 집합되어 있는 코딩된 데이터는 또한 [예컨대, 하나 이상의 SEI(supplemental enhancement information) 메시지들 또는 VUI(video usability information) 메시지들에서의 하나 이상의 파라미터들로서] 코딩된 비디오 데이터에 관한 미디어 메타데이터를 포함할 수 있다. 이러한 미디어 메타데이터는 (예컨대, PT SEI 메시지들 및 BP SEI 메시지들의 일부로서) 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야만 하는지를 나타내는 구문 요소들을 포함할 수 있다.
임시 코딩된 데이터 구역(370)으로부터의 집합된 데이터(371)는 채널 인코더(channel encoder)(380)에 의해 처리된다. 채널 인코더(380)는 (예컨대, ITU-T H.222.0 | ISO/IEC 13818-1과 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 미디어 스트림으로서 전송 또는 저장하기 위해 집합된 데이터를 패킷화(packetize) 및/또는 다중화(multiplex)할 수 있고, 이 경우에 채널 인코더(380)는 미디어 전송 스트림의 구문의 일부로서 구문 요소들을 추가할 수 있다. 이러한 구문은 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다. 또는, 채널 인코더(380)는 [예컨대, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷(media container format)에 따라] 파일로서 저장하기 위해 집합된 데이터를 구성(organize)할 수 있고, 이 경우에 채널 인코더(380)는 미디어 저장 파일의 구문의 일부로서 구문 요소들을 추가할 수 있다. 이러한 구문은 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다. 또는, 보다 일반적으로, 채널 인코더(380)는 하나 이상의 미디어 시스템 다중화 프로토콜들 또는 전송 프로토콜들을 구현할 수 있고, 이 경우에 채널 인코더(380)는 프로토콜(들)의 구문의 일부로서 구문 요소들을 추가할 수 있다. 다시 말하지만, 이러한 구문은 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다. 채널 인코더(380)는 출력을 위한 저장소, 통신 연결, 또는 다른 채널을 나타내는 채널(390)에 출력을 제공한다. 채널 인코더(380) 또는 채널(390)은 또한 FEC(forward-error correction) 인코딩 및 아날로그 신호 변조와 같은 기타 요소들(도시 생략)을 포함할 수 있다.
IV. 예시적인 디코더 시스템
도 4는 일부 기술된 실시예들이 구현될 수 있는 예시적인 디코더 시스템(400)의 블록도이다. 디코더 시스템(400)은 실시간 통신을 위한 저대기시간(low-latency) 디코딩 모드 및 파일 또는 스트림으로부터 미디어 재생을 위한 고대기시간 디코딩 모드와 같은 다수의 디코딩 모드들 중 임의의 것에서 동작할 수 있는 범용 디코딩 도구일 수 있거나, 하나의 이러한 디코딩 모드를 위해 구성된 특수 목적 디코딩 도구일 수 있다. 디코더 시스템(400)은 운영 체제 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 일반적으로, 디코더 시스템(400)은 채널(410)로부터 코딩된 데이터를 수신하고 출력 목적지(490)를 위한 출력으로서 재구성된 프레임들을 생성한다. 코딩된 데이터는 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다.
디코더 시스템(400)은 입력으로서의 코딩된 데이터를 위한 저장소, 통신 연결, 또는 다른 채널을 나타낼 수 있는 채널(410)을 포함한다. 채널(410)은 채널 코딩되어 있는 코딩된 데이터를 생성한다. 채널 디코더(420)는 코딩된 데이터를 처리할 수 있다. 예를 들어, 채널 디코더(420)는 (예컨대, ITU-T H.222.0 | ISO/IEC 13818-1과 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 미디어 스트림으로서 전송 또는 저장하기 위해 집합된 데이터를 역패킷화(de-packetize) 및/또는 역다중화(demultiplex)하고, 이 경우에 채널 디코더(420)는 미디어 전송 스트림의 구문의 일부로서 추가된 구문 요소들을 파싱할 수 있다. 이러한 구문은 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다. 또는, 채널 디코더(420)는 (예컨대, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷에 따라) 파일로서 저장하기 위해 집합된 코딩딘 비디오 데이터를 분리시키고, 이 경우에 채널 디코더(420)는 미디어 저장 파일의 구문의 일부로서 추가된 구문 요소들을 파싱할 수 있다. 이러한 구문은 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다. 또는, 보다 일반적으로, 채널 디코더(420)는 하나 이상의 미디어 시스템 역다중화 프로토콜들 또는 전송 프로토콜들을 구현할 수 있고, 이 경우에 채널 디코더(420)는 프로토콜(들)의 구문의 일부로서 추가된 구문 요소들을 파싱할 수 있다. 다시 말하지만, 이러한 구문은 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야 하는지를 나타내는 구문 요소들을 포함할 수 있다. 채널(410) 또는 채널 디코더(420)는 또한 FEC 디코딩 및 아날로그 신호 복조와 같은 기타 요소들(도시 생략)을 포함할 수 있다.
채널 디코더(420)로부터 출력되는 코딩된 데이터(421)는, 충분한 양의 이러한 데이터가 수신될 때까지, 임시 코딩된 데이터 구역(430)에 저장된다. 코딩된 데이터(421)는 코딩된 프레임(431) 및 MMCO/RPS 정보(432)를 포함한다. 코딩된 데이터 구역(430) 내의 코딩된 데이터(421)는, 기본 코딩된 비디오 비트스트림의 구문의 일부로서, 하나 이상의 픽처들에 대한 코딩된 데이터를 포함한다. 코딩된 데이터 구역(430) 내의 코딩된 데이터(421)는 또한 (예컨대, 하나 이상의 SEI 메시지들 또는 VUI 메시지들에서의 하나 이상의 파라미터들로서] 인코딩된 비디오 데이터에 관한 미디어 메타데이터를 포함할 수 있다. 이러한 미디어 메타데이터는 (예컨대, PT SEI 메시지들 및 BP SEI 메시지들의 일부로서) 픽처들에 대한 CPBRD 값들을 나타내는 구문 요소들은 물론, CPBRD 값들이 어떻게 해석되어야만 하는지를 나타내는 구문 요소들을 포함할 수 있다.
디코더(450)는 그의 전체적인 디코딩 프로세스의 동작에 대한 타이밍 및 단계들을 결정하기 위해 CPBRD 값들을 사용한다. 일반적으로, 코딩된 데이터 구역(430)은, CPBRD 값이 나타내는 바와 같이, 코딩된 데이터(421)가 디코더(450)에 의해 사용될 때까지 이러한 코딩된 데이터(421)를 일시적으로 저장한다. 그 시점에서, 코딩된 프레임(431) 및 MMCO/RPS 정보(432)에 대한 코딩된 데이터가 코딩된 데이터 구역(430)으로부터 디코더(450)로 전송된다. 디코딩이 계속됨에 따라, 새로운 코딩된 데이터가 코딩된 데이터 구역(430)에 추가되고, 코딩된 데이터 구역(430)에 남아 있는 가장 오래된 코딩된 데이터가 디코더(450)로 전송된다.
디코더(450)는 코딩된 프레임(431)을 디코딩하여 대응하는 디코딩된 프레임(451)을 생성한다. 적절한 경우, 그의 디코딩 프로세스를 수행할 때, 디코더(450)는 하나 이상의 이전에 디코딩된 프레임들(469)을 프레임간 예측을 위한 참조 프레임들로서 사용할 수 있다. 디코더(450)는 디코딩된 프레임 임시 메모리 저장 구역(460)으로부터 이러한 이전에 디코딩된 프레임들(469)을 읽는다. 일반적으로, 디코더(450)는 엔트로피 디코딩, 프레임내 예측, 움직임 보상된 프레임간 예측, 역양자화(inverse quantization), 및 역 주파수 변환(inverse frequency transform)과 같은 디코딩 작업들을 수행하는 다수의 디코딩 모듈들을 포함한다. 디코더(450)에 의해 수행되는 정확한 동작들은 압축 포맷에 따라 변할 수 있다.
예를 들어, 디코더(450)는 압축된 프레임 또는 프레임들의 시퀀스에 대한 인코딩된 데이터를 수신하고, 디코딩된 프레임(451)을 포함하는 출력을 생성한다. 디코더(450)에서, 버퍼는 압축된 프레임에 대한 인코딩된 데이터를 수신하고, CPBRD 값이 공칭적으로(nominally) 나타내는 적절한 때에, 수신된 인코딩된 데이터를 엔트로피 디코더에 이용가능하게 만든다. 엔트로피 디코더는, 전형적으로 인코더에서 수행된 엔트로피 인코딩의 역을 적용하여, 엔트로피 코딩된 양자화된 데이터는 물론 엔트로피 코딩된 보조 정보를 엔트로피 디코딩한다. 움직임 보상기는 하나 이상의 참조 프레임들에 움직임 정보를 적용하여 재구성되는 프레임의 블록들(예컨대, 매크로블록, 서브매크로블록, 서브매크로블록 파티션, 코딩 트리 단위, 예측 단위, 또는 코딩 트리 블록, 예측 블록 또는 기타 블록과 같은 그의 일부)의 움직임 보상된 예측들을 형성한다. 프레임내 예측 모듈은 이웃하는 이전에 재구성된 샘플값들로부터 현재 블록의 샘플값들을 공간적으로 예측할 수 있다. 디코더(450)는 또한 예측 잔차 값들을 재구성한다. 역양자화기는 엔트로피 디코딩된 데이터를 역양자화한다. 예를 들어, 디코더(450)는 비트스트림에서의 구문 요소들에 기초하여 비디오의 픽처, 슬라이스 및/또는 다른 부분에 대해 휘도 QP 및 색도 QP에 대한 값들을 설정하고, 그에 따라 변환 계수들을 역양자화한다. 역 주파수 변환기는 양자화된 주파수 영역 데이터를 공간 영역 정보로 변환시킨다. 프레임간 예측된 프레임의 경우, 디코더(450)는 재구성된 예측 잔차 값들을 움직임 보상된 예측들과 결합시켜 재구성된 프레임을 형성한다. 디코더(450)는 이와 유사하게 프레임내 예측으로부터 예측 잔차 값들을 공간 예측들과 결합시킬 수 있다. 디코딩된 프레임(451)에서의 블록 경계 행들 및/또는 열들에 걸친 불연속들을 평활화하기 위해 적응 디블록킹 필터(adaptive deblocking filter)가 비디오 디코더(450) 내의 움직임 보상 루프 내에 포함되어 있다. [도시되어 있지 않은, 링잉 제거 필터링(de-ringing filtering), ALF(adaptive loop filtering), 또는 SAO(sample-adaptive offset) 필터링과 같은] 다른 필터링이 다른 대안으로서 또는 그에 부가하여 루프내 필터링 동작들로서 적용될 수 있다.
디코딩된 프레임 임시 메모리 저장 구역(460)은 다수의 프레임 버퍼 저장 구역들(461, 462, ..., 46n)을 포함한다. 디코딩된 프레임 저장 구역(460)은 DPB의 일례이다. 디코더(450)는 디코딩된 프레임(451)을 저장할 수 있는 프레임 버퍼(461, 462 등)를 식별하기 위해 MMCO/RPS 정보(432)를 사용한다. 디코더(450)는 디코딩된 프레임(451)을 그 프레임 버퍼에 저장한다.
출력 시퀀서(output sequencer)(480)는 (예컨대, BP 및 PT SEI 메시지들 내의 정보를 사용하여) 출력 순서에서 생성될 다음 프레임이 디코딩된 프레임 저장 구역(460)에서 이용가능할 때를 식별한다. 출력 순서에서 생성될 다음 프레임(481)이 디코딩된 프레임 저장 구역(460)에서 이용가능할 때, 그것이 출력 시퀀서(480)에 의해 읽혀지고 출력 목적지(490)(예컨대, 디스플레이)로 출력된다. 일반적으로, 프레임들이 디코딩된 프레임 저장 구역(460)으로부터 출력 시퀀서(480)에 의해 출력되는 순서는 그 프레임들이 디코더(450)에 의해 디코딩되는 순서와 상이할 수 있다.
V. 예시적인 비디오 인코더
도 5는 일부 기술된 실시예들이 구현될 수 있는 일반화된 비디오 인코더(500)의 블록도이다. 인코더(500)는 현재 프레임(505)을 포함하는 비디오 프레임들의 시퀀스를 수신하고, 인코딩된 데이터(595)를 출력으로서 생성한다.
인코더(500)는 블록 기반이고, 구현에 의존하는 블록 포맷을 사용한다. 블록이 상이한 스테이지들에서, 예컨대, 주파수 변환 스테이지 및 엔트로피 인코딩 스테이지에서, 추가로 세분화된다. 예를 들어, 프레임이 64x64 블록들, 32x32 블록들 또는 16x16 블록들로 나누어질 수 있고, 이들이 차례로 코딩 및 디코딩을 위해 더 작은 샘플값들의 블록들로 나누어질 수 있다.
인코더 시스템(500)은 프레임간 예측된 프레임들 및 프레임내 코딩된 프레임들을 압축한다. 제시를 위해, 도 5는 프레임내 코딩에 대한 인코더(500)를 통한 "인트라 경로(intra path)" 및 프레임간 코딩에 대한 "인터 경로(inter path)"를 나타내고 있다. 인코더(500)의 구성요소들 중 다수는 프레임내 코딩 및 프레임간 코딩 둘 다를 위해 사용된다. 그 구성요소들에 의해 수행되는 정확한 동작들은 압축되는 정보의 유형에 따라 달라질 수 있다.
현재 프레임(505)이 프레임간 예측된 프레임인 경우, 움직임 추정기(510)는 하나 이상의 참조 프레임들에 대한 현재 프레임(505)의 블록들(예컨대, 매크로블록, 서브매크로블록, 서브매크로블록 파티션, 코딩 트리 단위, 예측 단위, 또는 코딩 트리 블록, 예측 블록 또는 기타 블록과 같은 그의 일부)의 움직임을 추정한다. 프레임 저장소(520)는 참조 프레임으로서 사용하기 위해 하나 이상의 재구성된 이전 프레임들(525)을 버퍼링한다. 다수의 참조 프레임들이 사용될 때, 다수의 참조 프레임들은 상이한 시간 방향들 또는 동일한 시간 방향으로부터의 것일 수 있다. 움직임 추정기(510)는 차분 움직임 벡터 정보와 같은 움직임 정보(515)를 보조 정보로서 출력한다.
움직임 보상기(530)는, 움직임 보상된 현재 프레임(535)을 형성할 때, 재구성된 움직임 벡터들을 재구성된 참조 프레임(들)(525)에 적용한다. 움직임 보상된 현재 프레임(535)의 블록과 원래의 현재 프레임(505)의 대응하는 부분 사이의 차이(있는 경우)가 그 블록에 대한 예측 잔차(545)이다. 현재 프레임의 나중의 재구성 동안, 원래의 현재 프레임(505)에 더 가까운 재구성된 프레임을 획득하기 위해, 재구성된 예측 잔차 값들이 움직임 보상된 현재 프레임(535)에 가산된다. 그렇지만, 손실 압축에서, 어떤 정보가 여전히 원래의 현재 프레임(505)으로부터 손실되어 있다. 인트라 경로는 이웃하는 이전에 재구성된 샘플값들로부터 현재 블록의 샘플값들을 공간적으로 예측하는 인트라 예측 모듈(도시 생략)을 포함할 수 있다.
주파수 변환기(560)는 공간 영역 비디오 정보를 주파수 영역(즉, 스펙트럼, 변환) 데이터로 변환시킨다. 블록 기반 비디오 프레임의 경우, 주파수 변환기(560)는 이산 코사인 변환, 그의 정수 근사화(integer approximation), 또는 다른 유형의 순방향 블록 변환(forward block transform)(예컨대, 이산 사인 변환 또는 그의 정수 근사화)을 샘플값 데이터 또는 예측 잔차 데이터의 블록들에 적용하여, 주파수 변환 계수들의 블록들을 생성한다. 양자화기(570)는 이어서 변환 계수들을 양자화한다. 예를 들어, 양자화기(570)는 프레임마다, 슬라이스마다, 블록마다, 주파수마다, 또는 다른 방식으로 변하는 양자화 계단 크기를 갖는 데드존 스칼라 양자화(dead-zone scalar quantization)를 주파수 영역 데이터에 적용한다. 예를 들어, 인코더(500)는 코딩 단위(coding unit)와 같은 비디오의 픽처, 슬라이스 및/또는 다른 부분에 대해 휘도 QP 및 색도 QP에 대한 값들을 설정하고, 그에 따라 변환 계수들을 역양자화한다.
현재 프레임의 재구성된 버전이 차후의 움직임 추정/보상을 위해 필요할 때, 역양자화기(576)는 양자화된 주파수 계수 데이터에 대해 역양자화를 수행한다. 역 주파수 변환기(566)는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 값들 또는 샘플값들의 블록들을 생성한다. 프레임간 예측된 프레임의 경우, 인코더(500)는 재구성된 예측 잔차 값들(545)을 움직임 보상된 예측들(535)과 결합시켜 재구성된 프레임(505)을 형성한다. [비록 도 5에 도시되어 있지는 않지만, 인트라 경로에서, 인코더(500)는 예측 잔차 값들을 인트라 예측으로부터의 공간 예측들과 결합시킬 수 있다.] 프레임 저장소(520)는 차후의 움직임 보상된 예측에서 사용하기 위해 재구성된 현재 프레임을 버퍼링한다.
도 5에서, 인코더(500) 내의 움직임 보상 루프는 적응 루프내 디블록킹 필터(adaptive in-loop deblock filter)(510)를 (전형적으로) 프레임 저장소(520) 이전에 포함한다. 인코더(500)는, 프레임들에서의 경계들에 걸쳐 불연속들을 적응적으로 평활화시키기 위해, 재구성된 프레임들에 루프내 필터링을 적용한다. (도시되어 있지 않은, 링잉 제거 필터링, ALF, 또는 SAO 필터링과 같은) 다른 필터링이 다른 대안으로서 또는 그에 부가하여 루프내 필터링 동작들로서 적용될 수 있다.
엔트로피 코더(580)는 양자화기(570)의 출력은 물론 움직임 정보(515) 및 특정의 보조 정보(예컨대, QP 값)를 압축한다. 엔트로피 코더(580)는 인코딩된 데이터(595)를 버퍼(590)에 제공하고, 버퍼는 인코딩된 데이터를 출력 비트스트림으로 다중화한다.
제어기(도시 생략)는 인코더의 다양한 모듈들로부터 입력들을 수신한다. 제어기는 인코딩 동안 중간 결과들을 평가하여, 예를 들어, QP 값들을 설정하고 전송률 왜곡 분석을 수행한다. 제어기는 인코딩 동안 코딩 파라미터들을 설정하고 변경하기 위해 다른 모듈들과 협력한다. 제어기는 버퍼 플로우 모델에 따라 인코딩되는 픽처들에 대한 CPBRD 값들을 설정할 수 있다. 이러한 방식으로, 제어기는 비트스트림이 디코딩 시스템의 버퍼링 자원 내에서 디코딩될 수 있도록 보장하는 데 도움을 주기 위해 비트스트림에 대한 비트 전송률의 변동에 대한 제약조건들을 적용할 수 있다. 제어기는 또한 디코더가 그의 디코딩 프로세스의 동작에 대한 타이밍 및 단계들을 결정하는 데 도움을 주기 위해 CPBRD 값들을 설정한다.
구현 및 원하는 압축 유형에 따라, 인코더의 모듈들이 추가, 생략, 다수의 모듈들로 분할, 다른 모듈들과 결합, 및/또는 유사한 모듈들로 대체될 수 있다. 대안의 실시예들에서, 상이한 모듈들 및/또는 모듈들의 다른 구성들을 갖는 인코더들은 기술된 기법들 중 하나 이상을 수행한다. 인코더의 구체적인 실시예들은 전형적으로 인코더(500)의 변형 또는 보완된 버전을 사용한다. 인코더(500) 내의 모듈들 간의 도시된 관계들은 인코더에서의 정보의 일반적인 흐름을 나타내고; 간단함을 위해 다른 관계들은 도시되어 있지 않다.
VI. 예시적인 비디오 디코더
도 6은 일부 기술된 실시예들이 구현될 수 있는 일반화된 디코더(600)의 블록도이다. 디코더(600)는 압축된 프레임 또는 프레임들의 시퀀스에 대한 인코딩된 데이터(695)를 수신하고, 재구성된 프레임(605)을 포함하는 출력을 생성한다. 제시를 위해, 도 6은 프레임내 디코딩에 대한 디코더(600)를 통한 "인트라 경로" 및 프레임간 디코딩에 대한 "인터 경로"를 나타내고 있다. 디코더(600)의 구성요소들 중 다수는 프레임내 디코딩 및 프레임간 디코딩 둘 다를 위해 사용된다. 그 구성요소들에 의해 수행되는 정확한 동작들은 압축 해제되는 정보의 유형에 따라 달라질 수 있다.
버퍼(690)는 압축된 프레임에 대한 인코딩된 데이터(695)를 수신하고, 적어도 부분적으로 각자의 프레임들에 대한 CPBRD 값들에 의해 나타내어져 있는 타이밍으로, 수신된 인코딩된 데이터를 파서/엔트로피 디코더(680)에 이용가능하게 만든다. 파서/엔트로피 디코더(680)는, 전형적으로 인코더에서 수행된 엔트로피 인코딩의 역을 적용하여, 엔트로피 코딩된 양자화된 데이터는 물론 엔트로피 코딩된 보조 정보를 엔트로피 디코딩한다.
움직임 보상기(630)는 하나 이상의 참조 프레임들(625)에 움직임 정보(615)를 적용하여 재구성되는 프레임(605)의 블록들(예컨대, 매크로블록, 서브매크로블록, 서브매크로블록 파티션, 코딩 트리 단위, 예측 단위, 또는 코딩 트리 블록, 예측 블록 또는 기타 블록과 같은 그의 일부)의 움직임 보상된 예측들(635)을 형성한다. 프레임 저장소(620)는 참조 프레임으로서 사용하기 위해 하나 이상의 이전에 재구성된 프레임들을 저장한다.
인트라 경로는 이웃하는 이전에 재구성된 샘플값들로부터 현재 블록의 샘플값들을 공간적으로 예측하는 인트라 예측 모듈(도시 생략)을 포함할 수 있다. 인터 경로에서, 디코더(600)는 예측 잔차 값들을 재구성한다. 역양자화기(670)는 엔트로피 디코딩된 데이터를 역양자화한다. 예를 들어, 디코더(600)는 비트스트림에서의 구문 요소들에 기초하여 코딩 단위와 같은 비디오의 픽처, 슬라이스 및/또는 다른 부분에 대해 휘도 QP 및 색도 QP에 대한 값들을 설정하고, 역양자화기(670)는 그에 따라 변환 계수들을 역양자화한다.
역 주파수 변환기(660)는 재구성된 주파수 영역 데이터를 공간 영역 정보로 변환시킨다. 예를 들어, 역 주파수 변환기(660)는 주파수 변환 계수들에 역 블록 변환(inverse block transform)을 적용하여, 샘플값 데이터 또는 예측 잔차 데이터를 생성한다. 역 주파수 변환은 역 이산 코사인 변환, 그의 정수 근사화, 또는 다른 유형의 역 주파수 변환(예컨대, 역 이산 사인 변환 또는 그의 정수 근사화)일 수 있다.
프레임간 예측된 프레임의 경우, 디코더(600)는 재구성된 예측 잔차 값들(645)을 움직임 보상된 예측들(635)과 결합시켜 재구성된 프레임(605)을 형성한다. [비록 도 6에 도시되어 있지는 않지만, 인트라 경로에서, 디코더(600)는 예측 잔차 값들을 프레임내 예측으로부터의 공간 예측들과 결합시킬 수 있다.] 디코더(600) 내의 움직임 보상 루프는 적응 루프내 디블록킹 필터(610)를 프레임 저장소(620) 이전에 또는 그 이후에 포함한다. 디코더(600)는, 프레임들에서의 경계들에 걸쳐 불연속들을 적응적으로 평활화시키기 위해, 재구성된 프레임들에 루프내 필터링을 적용한다. (도시되어 있지 않은, 링잉 제거 필터링, ALF, 또는 SAO 필터링과 같은) 다른 필터링이 다른 대안으로서 또는 그에 부가하여 루프내 필터링 동작들로서 적용될 수 있다.
도 6에서, 디코더(600)는 또한 후처리 필터(post-processing filter)(608)를 포함한다. 후처리 필터(608)는 링잉 제거 필터링, 적응 Wiener 필터링, 필름 그레인 재현 필터링(film-grain reproduction filtering), SAO 필터링 또는 다른 종류의 필터링을 포함할 수 있다.
구현 및 원하는 압축 해제 유형에 따라, 디코더의 모듈들이 추가, 생략, 다수의 모듈들로 분할, 다른 모듈들과 결합, 및/또는 유사한 모듈들로 대체될 수 있다. 대안의 실시예들에서, 상이한 모듈들 및/또는 모듈들의 다른 구성들을 갖는 디코더들은 기술된 기법들 중 하나 이상을 수행한다. 디코더의 구체적인 실시예들은 전형적으로 디코더(600)의 변형 또는 보완된 버전을 사용한다. 디코더(600) 내의 모듈들 간의 도시된 관계들은 디코더에서의 정보의 일반적인 흐름을 나타내고; 간단함을 위해 다른 관계들은 도시되어 있지 않다.
VII. 스플라이싱을 단순화하기 위한 CPBRD 값에 대한 구문 및 의미
이 섹션은 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 값들의 구문 및 의미에 대한 다양한 혁신들을 제시한다. 많은 경우에, 이 혁신들은 비디오 시퀀스들의 스플라이싱을 단순화시킨다. HEVC 표준 및 H.264/AVC 표준에 따라 SEI(supplemental enhancement information) 메시지들에서 시그널링되는 CPBRD 값들에 대한 다양한 예들이 제공된다.
A. 서론
JCTVC-K1003과 같은 HEVC 표준의 초안 버전들에서 그리고 H.264/AVC 표준에서, PT SEI(picture timing SEI) 메시지에 대한 구문 및 의미가 명시되어 있다. PT SEI 메시지는 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD)를 나타내는 구문 요소를 포함한다. JCTVC-K1003에서, 구문 요소는 au_cpb_removal_delay_minus1이라고 명명되어 있고, PT SEI 메시지에서 시그널링되는 코딩된 정수값에 1을 가산하는 것에 의해 해석된다.
일반적으로, 초기 버퍼링 지연(또는 다른 대안으로서, 초기 버퍼 사용률)과 함께, 주어진 픽처(전형적으로 "현재 픽처"라고 함)에 대한 CPBRD 값은 픽처와 연관된 코딩된 데이터가 코딩 픽처 버퍼(coded picture buffer, CPB)로부터 제거되어야 하는 공칭 시간을 명시한다. CPB는 가상 디코더 버퍼(hypothetical decoder buffer)이고, 디코더는 그를 디코더 버퍼를 설계하는 데 참조로서 사용할 수 있다. 또한, 인코더는 가상 디코더 버퍼에 기초하여 호환 비트스트림을 생성할 수 있다. HEVC 표준과 관련하여, 현재 픽처와 연관된 데이터의 세트는 "액세스 유닛(access unit)"이다. CPBRD 값은 HRD 또는 VBV라고 불리울 수 있는 버퍼 모델과 관련하여 이해된다. 버퍼 모델에 따른 명세는 비트스트림이 디코딩 시스템의 버퍼링 자원 내에서 디코딩될 수 있도록 보장하는 데 도움을 주고, 디코더가 픽처들에 대한 그의 전체적인 디코딩 프로세스의 동작에 대한 타이밍 및 단계들을 결정하는 데 도움을 준다.
BP SEI(buffering period SEI) 메시지가 코딩된 비디오 데이터에 존재할 때 후속 메시지들에 대해 CPBRD 값들에 대한 타이밍 참조가 리셋된다. JCTVC-K1003에서, CPBRD 값은 항상 BP SEI 메시지를 포함하는 디코딩 순서에서의 선행 픽처(있는 경우)의 공칭 제거 시간에 대해 인코딩된다. 인코더는 비트스트림에서 모든 RAP(random access point) 픽처와 함께 BP SEI 메시지를 송신할 수 있다. 인코더는 또한 BP SEI 메시지를 RAP 픽처가 아닌 다른 픽처와 함께 송신할 수 있다.
비디오 스플라이싱 도구는 통상적으로 비트스트림에서의 RAP 픽처들의 위치들에서 스플라이싱 동작들을 수행한다. RAP 픽처는 IDR(instantaneous decoder refresh) 픽처일 수 있다. RAP 픽처는 그와 연관된 BP SEI 메시지를 가진다. 예를 들어, 스플라이싱 동작은 광고 또는 일련의 광고들을 텔레비전 프로그램에 삽입하기 위해 또는 상이한 텔레비전 프로그램들 간에 전환하기 위해 사용될 수 있다.
HEVC RAP 픽처에 대한 설계는 구체적으로는 RAP 픽처를 비트스트림에 대한 슬라이싱 지점으로서 사용하는 것을 가능하게 하도록 의도되어 있다. 그렇지만, JCTVC-K1003에서, CPBRD 값은 항상 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대해 코딩된다. 이 참조점으로 인해, 비트스트림들 간에 스플라이싱할 때(또는 개별적으로 인코딩된 비트스트림들을 매끄럽게 연결시켜 보다 긴 비트스트림을 형성할 때) 스플라이싱 시스템이 CPBRD 값에 대한 정확한 값을 결정하는 것이 어려울 수 있다.
따라서, JCTVC-K1003에서와 같이 CPBRD 구문 및 의미에 대한 방식들에서, 비트스트림 A의 픽처들을 송신하는 것으로부터 비트스트림 B의 픽처들을 송신하는 것으로 전환하기 위해 스플라이싱 동작을 수행하기 위해, 스플라이싱 도구는 스플라이싱 지점에 있는 픽처의 CPBRD 값(즉, 스플라이싱 지점에 있는 픽처와 연관된 PT SEI 메시지에서의 CPBRD 값)을 조절한다. 전환이 일어나는 스플라이싱 지점은 비트스트림 B에서의 RAP 픽처에 대응하는 위치이다. (스플라이싱 지점에 있는 비트스트림 B에서의 RAP 픽처는 또한 그와 함께 BP SEI 메시지를 갖고, BP SEI 메시지는 디코딩 순서에서 비트스트림 B로부터의 후속 픽처들의 CPBRD 값들에 대한 참조 시간을 리셋시킬 것이며, 따라서 비트스트림 B에서의 후속 픽처들에 대한 CPBRD 값들의 조절이 불필요하다.) 스플라이싱 동작을 달성하기 위해, 스플라이싱 도구는 전형적으로 다음과 같은 단계들을 수행하지만, 꼭 이 순서로 수행할 필요는 없으며, 어떤 대안의 변형들이 존재할 수 있다.
스플라이싱 도구는 비트스트림 B에서의 이전 BP SEI 메시지를 갖는 픽처의 공칭 제거 시간에 대한 비트스트림 B에서의 RAP 픽처의 CPBRD 값을 찾아서 읽는다. 이 CPBRD의 값은 DRAPB이다. 비트스트림 B 내에 선행 픽처가 없는 경우, DRAPB는 로컬 프레임 레이트(local frame rate)에 기초한(예컨대, 비트스트림 A에서의 마지막 픽처 또는 비트스트림 B에서의 첫 번째 픽처에 대한 pic_struct_present_flag, field_pic_flag, 및 pic_struct의 값에 기초하여 명시될 수 있는 DeltaToDivisor에 기초한) 값으로 설정될 수 있다.
스플라이싱 도구는 또한 비트스트림 B에서의 이전 BP SEI 메시지를 갖는 픽처에 대한 지연인 비트스트림 B에서 디코딩 순서에서 RAP 픽처에 선행하는 (비트스트림 B의) 픽처의 CPBRD 값을 찾아서 읽는다. 이 CPBRD의 값은 DPREVB이다. 비트스트림 B 내에 선행 픽처가 없는 경우, DPREVB는 0으로 설정된다.
스플라이싱 도구는 또한 비트스트림 A에서의 이전 BP SEI 메시지를 갖는 픽처에 대한 지연인 비트스트림 A에서 디코딩 순서에서 스플라이싱 지점에 선행하는 (비트스트림 A의) 마지막 픽처의 CPBRD 값을 찾아서 읽는다. 이 CPBRD의 값은 DPREVA이다. 비트스트림 A에서 디코딩 순서에서 스플라이싱 지점에 선행하는 (비트스트림 A의) 마지막 픽처가 BP SEI 메시지를 갖는 픽처인 경우, DPREVA는 0으로 설정된다.
스플라이싱 도구는 이어서 스플라이싱 지점에 있는 비트스트림 B로부터의 RAP 픽처의 CPBRD 값을 수정하여, 그 CPBRD 값을 DPREVA + (DRAPB - DPREVB)로 설정하며, 따라서 스플라이싱 지점에 있는 비트스트림 B로부터의 RAP 픽처의 CPBRD 값은 비트스트림 A에서의 이전 BP SEI 메시지를 갖는 픽처에 대해 표현된다. 스플라이싱 도구는 비트스트림 B로부터의 이 수정된 RAP 픽처 및 후속 픽처들을 비트스트림 A로부터 획득된 픽처들 이후에 스플라이싱된 비트스트림에 넣는다.
특정의 상세들, 연관된 다른 동작들, 및 잠재적인 문제들이 본 설명으로부터 생략되어 있다. 예를 들어, 본 설명은 참조 클럭 틱 값(reference clock tick value)이 두 개의 비트스트림 간에 상이하거나 RAP 픽처들 및 BP SEI 메시지 위치들이 일치하지 않는 경우들을 다루고 있지 않다.
스플라이싱 도구는 앞서 기술된 찾기 동작 및 읽기 동작을 수행하는데, 그 이유는, CPBRD 구문 및 의미에 대한 이전의 방식들에 따라, CPBRD 정보가 이전 BP SEI 메시지를 갖는 비트스트림에서의 픽처에 대해 참조되기 때문이다. 스플라이싱 도구는 스플라이싱 지점에 있는 CPBRD 값이 이 참조점에 대해 표현되도록 스플라이싱된 비트스트림에서의 CPBRD 정보를 조절한다. CPBRD 값들을 찾아서 읽는 동작들은 부담스럽고 수행하기 어려울 수 있으며, (예컨대, 암호화 또는 버퍼링 용량 제약으로 인해) 스플라이싱 시스템에 의해 즉각 액세스가능하지 않은 데이터에 대한 액세스를 필요로 할 수 있다.
도 7은 두 개의 개별적으로 인코딩된 비트스트림 A 및 B의 연결을 수반하는 간략화된 상황에 대한 문제를 나타낸 것이다. 도 7의 상부 부분은, 스플라이싱 이전의, 비트스트림 A의 세 개의 AU(access unit) 및 비트스트림 B의 두 개의 AU를 나타내고 있다. 비트스트림 A의 경우, 비트스트림 A의 첫 번째 AU(즉, AU 0)의 초기 CPB 제거 지연에 대한 두 번째 AU 및 세 번째 AU(즉, AU 1 및 AU 2)의 제거 지연을 나타내기 위해 CPBRD 값들이 시그널링된다. 비트스트림 B의 경우, 비트스트림 B의 첫 번째 AU(즉, AU 0)의 초기 CPB 제거 지연에 대한 두 번째 AU(즉, AU 1)의 제거 지연을 나타내기 위해 CPBRD 값이 시그널링된다. 값 au_cbp_removal_delay(k)는 AU k의 CPB 제거 지연을 지칭한다. 비트스트림 B의 AU들이 비트스트림 A의 AU들 이후에 스플라이싱될 때, 비트스트림 B의 첫 번째 AU(AU 0)의 CPBRD가 결정된다. 도 7의 하부 부분은 단일의 비트스트림 내로의 스플라이싱 이후의 비트스트림 A와 비트스트림 B의 AU들을 나타내고 있다. AU들의 CPBRD 값들 중 일부는 스플라이싱된 비트스트림에서 변하지 않은 채로 있다(즉, 비트스트림 A의 첫 번째 AU(AU 0)의 초기 CPB 제거 지연에 대한 비트스트림 A의 두 번째 및 세 번째 AU들(AU 1 및 AU 2)의 CPBRD 값들, 및 비트스트림 B의 첫 번째 AU(AU 0)의 CPB 제거 지연에 대한 비트스트림 B의 두 번째 AU(AU 1)의 CPBRD 값). 그렇지만, 비트스트림 B의 첫 번째 AU(스플라이싱 이전의 AU 0: 스플라이싱 이후에 AU 3으로 번호 부여됨)의 CPBRD 값이, 스플라이싱된 비트스트림에 대해, 비트스트림 A의 첫 번째 AU(AU 0)의 초기 CPB 제거 지연에 대한 제거 지연을 표현하도록 조절된다. 보다 복잡한 예들에서(예컨대, 비트스트림들이 더 많은 AU들을 포함할 때 및/또는 어떤 AU들이 이용가능하지 않을 때), 스플라이싱된 비트스트림에서의 제2 시퀀스의 첫 번째 AU의 CPBRD 값을 결정하는 것이 어려울 수 있을 것이다.
B. CPBRD의 구문 및 의미를 수정하는 일반적 방식
이 섹션은 CPBRD의 구문 및 의미에 대한 이전의 방식들에 대한 다양한 수정들을 기술한다. 이 수정들에 따르면, 주어진 픽처(전형적으로, "현재 픽처"라고 불리움)가 그와 연관된 BP SEI 메시지를 가질 때, 인코더는 다음과 같은 것들을 나타내는 구문 요소들을 송신할 수 있다:
(a) 이전의 방식들에서와 같이, 디코딩 순서(비트스트림 순서 또는 디코딩되는 순서라고도 불리움)에서 현재 픽처에 선행하는, BP SEI 메시지를 가지는 픽처의 공칭 CPB 제거 시간에 대한 CPBRD 값("항목 a");
(b) 마지막 선행 픽처가 BP SEI 메시지를 갖는지 여부에 관계없이, 디코딩 순서에서 현재 픽처에 선행하는 마지막 픽처의 공칭 CPB 제거 시간에 대한 CPBRD 값("항목 b")(어떤 변형들에서, 동일한 또는 하위 시간 서브계층(temporal sub-layer)에서 현재 픽처에 선행하는 마지막 픽처가 고려되고; 예를 들어, 현재 픽처가 TemporalId = 0을 갖는 경우, 선행 픽처도 TemporalId = 0을 가짐); 및
(c) (i) 항목 a에서 명시된 값이 존재하는지(또는 항상 존재하는 경우, 그의 값이 유효한지)의 표시, 및 (ii) 항목 b에서 명시된 값이 존재하는지(또는 항상 존재하는 경우, 그의 값이 유효한지)의 표시("항목 c").
항목 c의 두 개의 표시는 세 개의 허용된 조합들(즉, 항목 a 유효/항목 b 유효하지 않음, 항목 a 유효하지 않음/항목 b 유효, 또는 항목 a 및 항목 b 둘 다 유효) 중 하나를 나타내는 하나의 구문 요소로 결합될 수 있다. (다른 대안으로서, 0의 값이 유효한 값일 수 없는 구현들에서, 항목 c에 대해, 유효성의 결여를 나타내는 하나의 방식은 CPBRD 값에 대해 0의 값을 사용하는 것일 것이다. CPBRD 값들 중 어느 것도 유효하지 않다는 것을 나타내는 것은 금지될 것이다.)
이러한 구문을 사용하여, 스플라이싱 도구는, 많은 경우들에서, 그의 스플라이싱 동작들을 단순화시킬 수 있다. 비트스트림 B의 내용이 항목 b에서의 관례를 따르는 경우, 다른 값들을 읽는 것이 불필요하다 - 두 개의 비트스트림으로부터의 데이터가 간단히 서로 연결될 수 있다 -. 비트스트림 B의 내용이 항목 a에서의 관례를 따르는 구문 요소들을 포함하는 경우, 항목 a의 CPBRD 데이터가 연결된 비트스트림에서 제거되거나 유효하지 않은 것으로 표시될 것이다.
현재 픽처가 BP SEI 메시지를 갖지 않을 때, JCTVC-K1003에서와 같은 HEVC 표준의 구문 또는 (H.264/AVC 표준에서와 같은) 동등한 구문이 변경 없이 사용될 수 있다.
항목 b의 변형으로서, 구문은 (앞서 암시된 바와 같이, 임의의 시간 서브계층에서의 대신에) 동일한 시간 서브계층 또는 하위 시간 서브계층 내에서 디코딩 순서에서 현재 픽처에 선행하는 마지막 픽처의 공칭 CPB 제거 시간에 대한 CPBRD 증분 값을 명시할 수 있다. 이 경우에, CPBRD 값은 단지 임의의 서브계층의 선행 픽처보다는 동일한(또는 하위) 시간 서브계층에서의 선행 픽처에 대해 표현되고, 이는 이 방식을 상위 시간 서브계층(있는 경우)의 픽처들의 제거에 강건하게 만든다. 섹션 C, 섹션 D 및 섹션 E에서, 각각, 기술된 단일 값 방식 및 두 값 방식에 대해 이 변형이 또한 적용될 수 있다. 예를 들어, 현재 픽처가 TemporalId = 0을 가지는 경우, CPBRD 값은 TemporalId = 0을 갖는 선행 픽처에 대해 표현된다. 이것은 (예컨대, 이러한 CPBRD 값들이 TemporalId = 0을 가지는 픽처들에 대해서만 사용될 수 있다는 조건으로 인해) 항목 b의 관례를 따르는 CPBRD 값들이 TemporalId = 0을 가지는 픽처들에 대해서만 시그널링되는 상황일 수 있다.
C. 플래그를 사용하는 단일 값 방식
앞서 기술된 수정들의 단일 값 변형들에서, 어떤 픽처들에 대해, 인코더는 항목 a 및 항목 b에 대한 두 개의 CPBRD 값 중 하나를, 시그널링된 CPBRD 값이 항목 a 또는 항목 b의 관례에 대응하는지의 표시와 함께, 송신한다.
도 8 및 도 9는 (JCTVC-K1003에서와 같은) BP SEI 메시지의 구문 및 의미가 수정되는 그리고 (JCTVC-K1003에서와 같은) 어떤 PT SEI 메시지들의 의미는 수정되지만 그의 구문은 변경되지 않는 단일 값 방식의 구현을 나타낸 것이다. BP SEI 메시지 구문이, 도 8의 예시적인 구문(800)에 도시된 바와 같이, concatenation_flag라고 지칭되는 플래그를 포함하도록 수정된다. concatenation_flag는 이진값이다. 주어진 픽처(현재 픽처)가 BP SEI 메시지를 가질 때, 현재 픽처에 대한 PT SEI 메시지에서의 CPBRD 값의 의미는 픽처에 대한 BP SEI 메시지에서의 concatenation_flag의 값에 의존한다. 도 9는 구문 요소 au_cpb_removal_delay_minus1을 포함하는 PT SEI 메시지에 대한 구문(900)을 나타낸 것이다. concatenation_flag의 값이 0일 때, 구문 요소 au_cpb_removal_delay_minus1에 의해 표시되는 CPBRD 값은 항목 a의 관례에 따라 해석된다. 다른 한편으로는, concatenation_flag의 값이 1일 때, au_cpb_removal_delay_minus1에 의해 표시되는 CPBRD 값은 항목 b의 관례에 따라 해석된다.
도 8 및 도 9에 도시된 다른 구문 요소들은 JCTVC-K1003에 명시된 의미들을 가진다.
스플라이싱된 비트스트림에 대해, concatenation_flag가 1일 때, BP SEI 메시지를 가지는 픽처 n에 대한 공칭 제거 시간 tr,n(n)은, 지연과 함께, 이전 픽처(액세스 유닛) n-1의 공칭 제거 시간 tr,n(n-1)로부터 계산될 수 있다:
tr,n(n) = tr,n(n-1) + tc * (Max(au_cpb_removal_delay(n), Ceil( ( InitCpbRemovalDelay[SchedSelIdx ] ÷ 90000 + taf(n-1) - tr,n(n-1) ) ÷ tc) ) ).
이 식에서, 제약조건 Ceil( ( InitCpbRemovalDelay[ SchedSelIdx ] ÷ 90000 + taf(n-1) - tr,n(n-1) ÷ tc )는 디코딩이 버퍼 언더플로우 없이 스플라이싱 지점(픽처 n)에서 시작된 경우처럼 지연이 적어도 그만큼 길도록 보장한다. tr,n(n-1)에 추가된 지연은 픽처 n에 대해 시그널링된 CPBRD 값과 제약조건에 의해 표시되는 시작 지연(start-up delay) 중 더 긴 것에 의존하여 설정된다.
도 10은 제약조건 Ceil( ( InitCpbRemovalDelay[ SchedSelIdx ] ÷ 90000 + taf(n-1) - tr,n(n-1) ) ÷ tc )가 왜 고려되는지를 나타내고 있다. 버퍼링 기간 SEI 메시지와 연관된 각각의 액세스 유닛 n(단, n>0)에 대해, 값 Δtg,90(n)은 Δtg,90(n) = 90000 * (tr,n(n) - taf(n-1) )에 의해 명시되고, 여기서 tr,n(n)은 액세스 유닛 n의 공칭 제거 시간(도 10에서, 현재 버퍼 기간의 첫 번째 액세스 유닛)이고, 여기서 taf(n-1)은 액세스 유닛 n-1의 최종 도착 시간(도 10에서, 이전 버퍼 기간의 마지막 액세스 유닛)이다. 도 10에서, 스트림 1 및 스트림 2가 서로 연결될 때, CPBRD 값이 사용되는 경우 언더플로우가 일어날 수 있다. 이 제약조건에 의해, 연결 이후의 스트림 2의 버퍼 상태가 원래의 버퍼 상태와 동일한 채로 있기 때문에 언더플로우가 회피된다.
D. 플래그 및 델타 값을 사용하는 두 값 방식
앞서 기술된 수정들의 어떤 두 값 변형들에서, 어떤 픽처들에 대해, 인코더는 RAP 픽처에 대한 SEI 메시지에서 항목 a 및 항목 b에 대한 두 개의 CPBRD 값 중 하나 또는 둘 다를 송신할 수 있다.
도 11은 (JCTVC-K1003에서와 같은) BP SEI 메시지의 구문 및 의미가 수정되는 두 값 방식의 구현을 나타낸 것이다. (JCTVC-K1003에서와 같은) PT SEI 메시지의 구문은 변경되지 않는다. 도 11의 예시적인 구문(1100)에 도시된 바와 같이, BP SEI 메시지 구문이 concatenation_flag 및 CPBRD "델타" 값(여기서, 델타 값 - 1)을 나타낼 수 있는 au_cpb_removal_delay_delta_minus1라고 지칭되는 구문 요소를 포함하도록 수정된다.
concatenation_flag 구문 요소는 명시된 제약조건이 au_cpb_removal_delay_delta_minus1의 값과 디코딩 순서에서의 선행 픽처(있는 경우)[또는 어떤 변형들에서, 예를 들어, 현재 픽처의 TemporalId의 값보다 작거나 같은 TemporalId를 갖는 선행 픽처가 있는지 검사하는 것에 의해, 동일한 또는 하위 시간 서브계층에서의 선행 픽처(있는 경우)]에 대한 au_cpb_removal_delay_minus1의 값 사이의 관계에 적용되는지를 나타낸다. 예를 들어, 시간 서브계층이 고려될 때, 현재 픽처가 TemporalId = 0을 가지는 경우, 검사는 TemporalId = 0을 갖는 선행 픽처가 있는지에 대한 검사이다.
au_cpb_removal_delay_delta_minus1 구문 요소 + 1은 비트스트림 순서(디코딩 순서)에서 현재 픽처에 선행하는 마지막 픽처(있는 경우)[또는 어떤 변형들에서, 예를 들어, 현재 픽처의 TemporalId의 값보다 작거나 같은 TemporalId를 갖는 선행 픽처가 있는지 검사하는 것에 의해, 동일한 또는 하위 시간 서브계층에서의 마지막 이러한 픽처(있는 경우)]의 공칭 CPB 제거 시간에 대한 CPB 제거 지연 증분 값을 명시한다. 예를 들어, 시간 서브계층이 고려될 때, 현재 픽처가 TemporalId = 0을 가지는 경우, 검사는 TemporalId = 0을 갖는 선행 픽처가 있는지에 대한 검사이다.
concatenation_flag가 0일 때, (현재 픽처에 대한 PT SEI 메시지의 au_cpb_removal_delay_minus1 구문 요소에 의해 결정되는) CPBRD 값은 항목 a에 따라 해석된다. 선행 픽처가 BP SEI 메시지를 갖지 않는 경우, 이 항목 a의 CPBRD 값은 항목 b에 따른 CPBRD 값 + 디코딩 순서에서 현재 픽처에 선행하는 픽처(어떤 변형들에서, 적절한 시간 서브계층의 선행 픽처)에 대한 항목 a의 CBPRD 값과 같다. 항목 b의 CPBRD 값은 현재 픽처에 대한 항목 a의 CPBRD 값과 선행 픽처에 대한 항목 a의 CPBRD 값 사이의 차이이다. 이 항목 b 값은 구문 요소 au_cpb_removal_delay_delta_minus1에 의해 표시되고, 그의 값이, 항목 a의 CPBRD 값 및 항목 b의 CPBRD 값이 유효하다는 것을 검증하기 위해, 현재 픽처 및 선행 픽처의 PT SEI 메시지들에서 송신되는 두 개의 항목 a의 CPBRD 값들 사이의 차이와 대비하여 검사될 수 있다. 개별적인 항목 a의 CPBRD 값들이 현재 픽처에 대한 PT SEI 메시지에서 시그널링된다. 환언하면, 현재 픽처가 BP SEI 메시지를 갖고 concatenation_flag가 0이며, 현재 픽처가 비트스트림에서의 첫 번째 픽처가 아닐 때, 비트스트림 적합성(bitstream conformance)을 위해 다음과 같은 것이 요구된다.
(1) 선행 픽처(또는 어떤 변형들에서, 현재 픽처의 TemporalId의 값보다 작거나 같은 TemporalId를 갖는 선행 픽처)가 BP SEI 메시지를 갖지 않는 경우, 현재의 au_cpb_removal_delay_minus1은 선행 픽처(어떤 변형들에서, 현재 픽처의 TemporalId의 값보다 작거나 같은 TemporalId를 갖는 선행 픽처)의 au_cpb_removal_delay_minus1 + au_cpb_removal_delay_delta_minus1 + 1과 같다.
(2) 그렇지 않은 경우(선행 픽처가 BP SEI 메시지를 가짐), au_cpb_removal_delay_minus1은 au_cpb_removal_delay_delta_minus1과 같다. 이들 요구사항은 concatenation_flag가 0일 때, 이전의 조건들이 충족되고 선행 픽처가 BP SEI 메시지를 갖지 않는다고 가정하면, 항목 a 및 항목 b에 대한 표시들 둘 다가 유효하고 존재한다는 것을 의미한다. 이 경우에, 현재 픽처에 대한 BP SEI 메시지는 (구문 요소 au_cpb_removal_delay_delta_minus1로 표현되는) 항목 b의 CPBRD 값을 포함하고, 현재 픽처에 대한 PT SEI 메시지는 (au_cpb_removal_delay_minus1로 표현되는) 항목 a의 CPBRD 값을 포함한다. 다른 한편으로는, 선행 픽처가 BP SEI 메시지를 가질 때(그리고 concatenation_flag가 여전히 0일 때), 구문 요소들 au_cpb_removal_delay_delta_minus1 및 au_cpb_removal_delay_minus1 둘 다는 항목 a의 CPBRD 값을 나타낸다.
concatenation_flag가 1일 때, 구문 요소들 au_cpb_removal_delay_delta_minus1 및 au_cpb_removal_delay_minus1에 대해 앞서 기술된 비트스트림 적합성 요구사항이 충족될 필요가 없다. 플래그가 1일 때, CPBRD 계산이, BP SEI 메시지를 가지는 선행 픽처에 대해 직접 참조되는 것보다는, 비트스트림 스플라이싱에 적절하도록 변경된다. 현재 픽처가 BP SEI 메시지를 갖고 concatenation_flag가 1일 때, 현재 픽처에 대한(현재 픽처에 대한 PT SEI 메시지 내의) au_cpb_removal_delay_minus1 구문 요소는 무시된다. 이와 같이, concatenation_flag가 1일 때, (현재 픽처에 대한 BP SEI 메시지 내의) au_cpb_removal_delay_delta_minus1 구문 요소에 의해 표시되는 바와 같이, 항목 b에 대한 표시만이 유효하다.
CPBRD 값들의 앞서 언급한 해석은 스플라이싱 지점에 있는 RAP 픽처에 대한 BP SEI 메시지에서 concatenation_flag의 값을 0으로부터 1로 단순히 변경하는 것에 의해 (적당히 설계된 참조 구조들을 사용하는) 비트스트림들을 스플라이싱하는 것을 가능하게 할 것이다.
이 방식에서, 항목 b에 대한 표시가 항상 유효하기 때문에(그렇지만, 어떤 경우들에서, 현재 픽처의 항목 a의 CPBRD 값과 같을 필요가 있고, 다른 경우들에서, 현재 픽처 및 이전 픽처의 항목 a의 CPBRD 값들 사이의 차이와 같을 필요가 있음), HRD 타이밍 정보의 명세가 항상 항목 b에 기초할 수 있다. 게다가, concatenation_flag가 0일 때, 디코더는 같음(equality) 조건이 충족되는지 여부를 검사할 수 있다. 그것이 충족되지 않는 경우, 이것은 어떤 문제가 발생했다(예컨대, 선행 픽처가 손실되었다, 또는 동일한 또는 하위 시간 서브계층에서의 선행 픽처가 손실되었다)는 것을 나타낸다. 이 픽처가 손실되었다는 것을 검출할 때, 디코더는, 항목 a의 CPBRD 데이터를 해석하고 항목 b의 데이터를 폐기하는 것에 의해(그 이유는 그 데이터로부터 적절한 CPBRD 타이밍을 계산하는 것이 손실된 픽처의 데이터의 사용을 필요로 하기 때문임), 정확한 CPBRD 타이밍 정보를 복구할 수 있다. 디코더는 또한 이러한 손실이 검출되는 경우 손실 은폐 대책(loss concealment measure)을 호출할 수 있다.
플래그(예컨대, concatenation_flag) 및 델타 값을 사용하는 이러한 두 값 방식에서, BP SEI 메시지를 가지는 픽처 n에 대한 공칭 제거 시간은, 지연과 함께, 이전 픽처(액세스 유닛) nb의 공칭 제거 시간으로부터 계산될 수 있다. 예를 들어, 액세스 유닛 n이 HRD를 초기화하지 않는 버퍼링 기간의 첫 번째 액세스 유닛일 때, CPB로부터의 액세스 유닛 n의 공칭 제거 시간 tr,n(n)은 다음과 같이 명시된다.
현재 픽처가 concatenation_flag = 1을 갖는 BP SEI 메시지와 연관되어 있는 경우, 공칭 제거 시간 tr,n(n)은 다음과 같이 명시되고:
tr,n( n ) = tr,n(nb ) + tc * ( Max( (au_cpb_removal_delay_delta_minus1 ( n ) +1),
Ceil( ( InitCpbRemovalDelay[ SchedSelIdx ] ÷ 90000 + taf( nb ) - tr,n( nb ) ) + tc) ) ),
여기서 tr,n( nb )는 선행 픽처(어떤 변형들에서, 현재 픽처의 TemporalId의 값보다 작거나 같은 TemporalId를 갖는 선행 픽처)의 공칭 제거 시간이고, au_cpb_removal_delay_delta_minus1( n )은 액세스 유닛 n과 연관된 BP SEI 메시지에서의 au_cpb_removal_delay_delta_minus1의 값이다. 제약조건 Ceil( ( InitCpbRemovalDelay[ SchedSelIdx ] ÷ 90000 + taf(nb) - tr,n(nb) ÷ tc )는 디코딩이 버퍼 언더플로우 없이 스플라이싱 지점(픽처 n)에서 시작된 경우처럼 지연이 적어도 그만큼 길도록 보장한다. tr,n(nb)에 추가된 지연은 픽처 n에 대해 시그널링된 CPBRD 값과 제약조건에 의해 표시되는 시작 지연 중 더 긴 것에 의존하여 설정된다.
그렇지 않은 경우(현재 픽처가 concatenation_flag = 1을 갖는 BP SEI 메시지와 연관되어 있지 않음), 공칭 제거 시간은 다음과 같이 명시되고:
tr,n( n ) = tr,n( nb ) + tc * ( au_cpb_removal_delay_minus 1 ( n ) + 1 ),
여기서 tr,n( nb )는 이전 버퍼링 기간의 첫 번째 액세스 유닛의 공칭 제거 시간이고, au_cpb_removal_delay_minus1( n )은 액세스 유닛 n과 연관된 PT SEI 메시지에서의 au_cpb_removal_delay_minus1의 값이다.
concatenation_flag 및 델타 값을 갖는 두 값 방식의 경우, 디코더 복잡도 및 추가된 구문 데이터의 양에 대한 영향이 최소한이다. 추가된 구문 요소들(au_cpb_removal_delay_delta_minus1 및 연관된 concatenation_flag)은 BP SEI 메시지들을 가지는 픽처들에 대해서만 필요하며, 이는 비교적 드물다. 스플라이싱 동작들이 어쩌면 크게 단순화된다. 이 방식에 의해, 스플라이싱 지점에 있는 RAP 픽처에 대한 BP SEI 메시지에서 concatenation_flag의 값을 1로 단순히 설정하는 것에 의해 비트스트림들 간을 스플라이싱하거나 (적당히 설계된 참조 구조들을 사용하는) 개별적으로 인코딩된 비트스트림들을 매끄럽게 연결하는 것이 가능하게 될 수 있다. 이와 동시에, concatenation_flag가 0일 때, 명시된 제약조건은 디코더가 선행 픽처(또는 동일한 또는 하위 시간 서브계층에서의 선행 픽처)의 손실을 검출하는 방식으로서 제약조건이 충족되는지를 검사할 수 있게 할 것이다.
E. 대안의 CPBRD 구문 및 의미의 조건부 사용
일부 변형들에서, 대안의 CPBRD 구문 및 의미의 사용 또는 비사용이 비트스트림에서 시그널링된다. 이와 같이, 추가된 데이터의 양이 관심사인 경우, 부가의 구문 요소들의 존재는 상위 구문 레벨에서의 플래그를 조건으로 할 수 있고, 부가의 구문 요소들이 존재하지 않을 때 종래의 해석(BP SEI 메시지를 가지는 선행 픽처에 대한 CPBRD 값)이 적용된다.
예를 들어, 인코더는 단순화된 비디오 스플라이싱 동작들에 대한 지원을 갖는 CPBRD 구문 및 의미가 사용되는지를 나타내기 위해 SPS(sequence parameter set)에서 또는 비트스트림에서의 다른 곳에서 온/오프 값을 설정할 수 있다. 온/오프 값이 단순화된 비디오 스플라이싱에 대한 지원이 오프라는 것을 나타내는 경우, 인코더는, 이전의 방식에서와 같이, 종래의 CPBRD 구문 및 의미를 사용한다. 온/오프 값이 단순화된 비디오 스플라이싱에 대한 지원이 온이라는 것을 나타내는 경우, 인코더는 (예컨대, 본 명세서에 기술된 새로운 방식들 중 하나에 따라) 단순화된 비디오 스플라이싱 동작들에 대한 지원을 갖는 CPBRD 구문 및 의미를 사용한다.
대응하는 디코더는 단순화된 비디오 스플라이싱 동작들에 대한 지원을 갖는 CPBRD 구문 및 의미가 사용되는지를 나타내기 위해 활성 SPS에서 또는 비트스트림에서의 다른 곳에서 온/오프 값을 수신하고 파싱한다. 온/오프 값이 단순화된 비디오 스플라이싱에 대한 지원이 오프라는 것을 나타내는 경우, 디코더는, 이전의 방식에서와 같이, 종래의 CPBRD 구문 및 의미를 사용한다. 온/오프 값이 단순화된 비디오 스플라이싱에 대한 지원이 온이라는 것을 나타내는 경우, 디코더는 (예컨대, 본 명세서에 기술된 새로운 방식들 중 하나에 따라) 단순화된 비디오 스플라이싱 동작들에 대한 지원을 갖는 CPBRD 구문 및 의미를 사용한다.
비디오 스플라이싱 도구는 스플라이싱 동작들을 어떻게 수행할지를 결정할 때 온/오프 플래그를 고려할 수 있다. 온/오프 값이 설정되지 않은 경우(오프인 경우), 스플라이싱 도구는, 종래의 방식에서와 같이, CPBRD 값들의 조절을 갖는 종래의 스플라이싱을 사용한다. 온/오프 값이 설정되어 있는 경우(온인 경우), 스플라이싱 도구는 본 명세서에 기술된 것과 같은 단순화된 연결 동작들을 사용한다.
F. 디코딩 단위에 대한 대안들
이전의 예들 중 다수에서, 픽처들에 대해 CPBRD 값들이 설정되거나 결정된다. 이러한 픽처는 또한 기본 픽처(primary picture)에 대응하는 액세스 유닛이라고 지칭될 수 있다.
다른 대안으로서, 디코딩 단위들에 대해 CPBRD 값들이 설정되거나 결정되고, 여기서 디코딩 단위는 기본 픽처에 대한 액세스 유닛의 서브셋이다. 예를 들어, 디코딩 단위는 픽처의 슬라이스일 수 있다. HRD는 액세스 유닛에 대해 또는 (예컨대, 픽처의 슬라이스 또는 다른 부분에 대한) 디코딩 단위에 대해 동작할 수 있다. 일반적으로, 디코딩 단위의 경우, CPBRD 값은 선행 픽처의 마지막 디코딩 단위에 대한 것이다.
본 명세서에 기술된 기법들 및 도구들은 액세스 유닛 또는 디코딩 단위에 적용될 수 있다. "단위"라는 용어는 액세스 유닛 또는 디코딩 단위를 의미할 수 있다. 단위에 대한 CPBRD 값은 선행 픽처에 대해 표현된다. 액세스 유닛의 경우, 선행 액세스 유닛은, 해석에 따라, 마지막 액세스 유닛, 동일한 시간 서브층 또는 하위 시간 서브계층에서의 마지막 액세스 유닛, 또는 BP SEI 메시지를 갖는 마지막 액세스 유닛일 수 있다. 디코딩 단위의 경우, 이러한 선행 액세스 유닛의 마지막 디코딩 단위가 고려된다.
G. CPBRD의 구문 및 의미를 수정하는 기법들
도 12는 인코딩 동안 CPBRD 값을 설정하는 일반화된 기법(1200)을 나타낸 것이다. 도 3을 참조하여 앞서 기술된 것과 같은 비디오 인코더 또는 기타 비디오 인코더는 기법(1200)을 수행한다.
인코더는 비디오 시퀀스의 주어진 단위에 대한 CPBRD 값을 설정한다(1210). 예를 들어, 주어진 단위는 BP SEI 메시지를 갖는 픽처에 대한 액세스 유닛이고, 랜덤 액세스 픽처(random access picture)일 수 있다. 또는, 주어진 단위는 이러한 픽처의 일부에 대한 디코딩 단위이다. 주어진 단위에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 일부 구현들에서, 선행 픽처는 디코딩 순서에서 주어진 단위(또는 주어진 단위를 포함하는 픽처)의 직전에 선행하고 있다. 다른 대안으로서, 주어진 단위와 동일한 시간 서브계층에서의 또는 하위 시간 서브계층에서의 비디오 시퀀스의 픽처들 중에서, 선행 픽처는 디코딩 순서에서 주어진 단위(또는 주어진 단위를 포함하는 픽처)의 직전에 선행하고 있다. 예를 들어, 시간 서브계층이 고려될 때, 현재 픽처가 TemporalId = 0을 가지는 경우, 선행 픽처는 TemporalId = 0을 갖는 선행 픽처이다.
인코더는 주어진 단위에 대한 CPBRD 값을 시그널링한다(1220). 예를 들어, CPBRD 값은 코딩된 픽처에 대한 액세스 유닛과 연관된 BP SEI 메시지 또는 PT SEI 메시지에 기입되어 있다.
어떤 변형들(예컨대, 두 값 방식)에서, 인코더는 어쩌면 상이한 관례들에 따라 주어진 단위에 대한 다수의 CPBRD 값들을 설정한다. 예를 들어, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 설정된(1210) CPBRD 값에 부가하여, 인코더는 주어진 단위에 대한 다른 CPBRD 값을 설정한다. 주어진 단위에 대한 다른 CPBRD 값은 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 인코더는 이어서 (예컨대, 주어진 단위에 대한 PT SEI 메시지에서) 주어진 단위에 대한 다른 CPBRD를 시그널링한다. 인코더는 또한 CPBRD 값들 각각이, 각각, 존재하는지 존재하지 않는지의 하나 이상의 표시들을 시그널링[예컨대, SEI 메시지(들)에 기입]할 수 있다. 또는, 인코더는 CPBRD 값들 각각이, 각각, 유효한지 유효하지 않은지의 하나 이상의 표시들을 시그널링[예컨대, SEI 메시지(들)에 기입]할 수 있다.
다른 변형들(예컨대, 단일 값 방식)에서, 인코더는 주어진 단위에 대한 CPBRD 값의 유형의 표시를 시그널링[예컨대, SEI 메시지(들)에 기입]한다. 예를 들어, CPBRD 값의 유형의 표시는 주어진 단위 또는 주어진 단위를 포함하는 픽처의 BP SEI 메시지에서 시그널링된다. CPBRD 값의 유형의 표시는 PT SEI 메시지에서 시그널링될 수 있는, 주어진 단위에 대한 CPBRD 값을 어떻게 해석할지를 나타낸다. 예를 들어, 인코더는 비디오 시퀀스의 주어진 단위에 대한 CPBRD 값의 유형의 표시를 시그널링하고, 이어서 주어진 단위에 대한 CPBRD 값을 설정한다. 제1 유형의 CPBRD 값의 경우, 주어진 단위에 대한 CPBRD 값은 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 제2 유형의 CPBRD 값의 경우, 주어진 단위에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 인코더는 이어서 주어진 단위에 대한 CPBRD 값을 시그널링한다.
또 다른 변형들(예컨대, 플래그 및 델타 값을 사용하는 두 값 방식)에서, 인코더는 주어진 단위에 대한 CPBRD 값의 유형의 표시를 시그널링[예컨대, SEI 메시지(들)에 기입]하고, 델타 값을 나타내는 주어진 단위에 대한 CPBRD 값을 시그널링한다. 예를 들어, CPBRD 값의 유형의 표시 및 CPBRD 값(델타 값)은 주어진 단위 또는 주어진 단위를 포함하는 픽처의 BP SEI 메시지에서 시그널링된다. CPBRD 값의 유형에 따라, 현재 픽처에 대한 CPBRD 값이 PT SEI 메시지에서 시그널링될 수 있다. 예를 들어, 인코더는 비디오 시퀀스의 주어진 단위에 대한 CPBRD 값의 유형의 표시를 시그널링하고, 델타 값을 주어진 단위에 대한 CPBRD 값으로서 설정한다. 주어진 단위에 대한 델타 값은 주어진 단위에 대한 CPBRD 값과 디코딩 순서에서의 선행 픽처의 CPBRD 값 사이의 차이를 나타낸다. 인코더는 델타 값을 (예컨대, BP SEI 메시지에서) 주어진 단위에 대한 CPBRD 값으로서 시그널링한다. 인코더는 또한 주어진 단위에 대한 다른 CPBRD 값을 설정한다. 제1 유형의 CPBRD 값의 경우, 다른 CPBRD 값은 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 제2 유형의 CPBRD 값의 경우, 주어진 단위에 대한 다른 CPBRD 값이 유효하지 않다. 인코더는 (예컨대, PT SEI 메시지에서) 주어진 단위에 대한 다른 CPBRD 값을 시그널링한다.
인코더는 단위마다(예컨대, 픽처마다) 기법(1200)을 반복할 수 있다. 간단함을 위해, 도 12는 기법(1200)이 다른 인코딩 프로세스들과 관련하여 어떻게 동작하는지를 나타내지 않고 있다.
도 13은, CPBRD 값들이 픽처들에 대해 설정되어 있을 때, 단일 값 방식에 따라 인코딩 동안 CPBRD 값들을 설정하는 예시적인 기법(1300)을 나타낸 것이다. 도 3을 참조하여 앞서 기술된 것과 같은 비디오 인코더 또는 기타 비디오 인코더는 기법(1300)을 수행한다.
시작하기 위해, 인코더는 비디오 시퀀스에서의 현재 픽처를 가져온다(1310). 인코더는 현재 픽처가 BP SEI 메시지를 갖는지를 검사한다(1320). 갖지 않는 경우, 인코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD를 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 설정한다(1360).
다른 한편으로는, 현재 픽처가 BP SEI 메시지를 가지는 경우, 인코더는 현재 픽처에 대한 BP SEI 메시지에서의 concatenation_flag 값을 설정한다(1330). 플래그의 값에 따라(1340), 인코더는 현재 픽처에 대한 CPBRD 값을 상이한 방식들로 설정할 수 있다. 플래그가 1인 경우, 인코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 설정한다(1350). 그렇지 않은 경우(플래그가 0인 경우), 인코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD를 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 설정한다(1360).
인코더는 완료되었는지를 검사하고(1370), 완료되지 않은 경우, 다음 픽처를 현재 픽처로 하여 계속된다. 간단함을 위해, 도 13은 기법(1300)이 다른 인코딩 프로세스들과 관련하여 어떻게 동작하는지를 나타내지 않고 있다.
도 14는 디코딩 동안 CPBRD 값을 처리하는 일반화된 기법(1400)을 나타낸 것이다. 도 4를 참조하여 앞서 기술된 것과 같은 비디오 디코더 또는 기타 비디오 디코더는 기법(1400)을 수행한다.
디코더는 비디오 시퀀스의 주어진 단위에 대한 CPBRD 값을 수신한다(1410). 예를 들어, 주어진 단위는 BP SEI 메시지를 갖는 픽처에 대한 액세스 유닛이고, 랜덤 액세스 픽처일 수 있다. 또는, 주어진 단위는 이러한 픽처의 일부에 대한 디코딩 단위이다. 주어진 단위에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 일부 구현들에서, 선행 픽처는 디코딩 순서에서 주어진 단위(또는 주어진 단위를 포함하는 픽처)의 직전에 선행하고 있다. 다른 대안으로서, 주어진 단위와 동일한 시간 서브계층에서의 또는 하위 시간 서브계층에서의 비디오 시퀀스의 픽처들 중에서, 선행 픽처는 디코딩 순서에서 주어진 단위(또는 주어진 단위를 포함하는 픽처)의 직전에 선행하고 있다. 예를 들어, 시간 서브계층이 고려될 때, 현재 픽처가 TemporalId = 0을 가지는 경우, 선행 픽처는 TemporalId = 0을 갖는 선행 픽처이다.
디코더는 주어진 단위에 대한 CPBRD 값을 파싱한다(1420). 예를 들어, CPBRD 값은 코딩된 픽처에 대한 액세스 유닛과 연관된 BP SEI 메시지 또는 PT SEI 메시지로부터 파싱된다.
어떤 변형들(예컨대, 두 값 방식)에서, 디코더는 어쩌면, 상이한 관례들에 따라 해석되어야 하는, 주어진 단위에 대한 다수의 CPBRD 값들을 수신하고 파싱한다. 예를 들어, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 설정된 CPBRD 값에 부가하여, 디코더는 (예컨대, 주어진 단위에 대한 PT SEI 메시지로부터) 주어진 단위에 대한 다른 CPBRD를 수신하고 파싱한다. 주어진 단위에 대한 다른 CPBRD 값은 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 디코더는 또한 CPBRD 값들 각각이, 각각, 존재하는지 존재하지 않는지의 하나 이상의 표시들을 수신하고 파싱할 수 있다. 또는, 디코더는 CPBRD 값들 각각이, 각각, 유효한지 유효하지 않은지의 하나 이상의 표시들을 수신하고 파싱할 수 있다.
다른 변형들(예컨대, 단일 값 방식)에서, 디코더는 주어진 단위에 대한 CPBRD 값의 유형의 표시를 수신하고 파싱한다. 예를 들어, CPBRD 값의 유형의 표시는 주어진 단위 또는 주어진 단위를 포함하는 픽처의 BP SEI 메시지로부터 파싱된다. CPBRD 값의 유형의 표시는 PT SEI 메시지로부터 파싱될 수 있는, 주어진 단위에 대한 CPBRD 값을 어떻게 해석할지를 나타낸다. 예를 들어, 디코더는 비디오 시퀀스의 주어진 단위에 대한 CPBRD 값의 유형의 표시를 수신하고 파싱하며, 이어서 주어진 단위에 대한 CPBRD 값을 수신하고 파싱한다. 제1 유형의 CPBRD 값의 경우, 주어진 단위에 대한 CPBRD 값은 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 제2 유형의 CPBRD 값의 경우, 주어진 단위에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다.
또 다른 변형들(예컨대, 플래그 및 델타 값을 사용하는 두 값 방식)에서, 디코더는 주어진 단위에 대한 CPBRD 값의 유형의 표시를 수신하고 파싱하며, 델타 값을 나타내는 주어진 단위에 대한 CPBRD 값을 수신하고 파싱한다. 예를 들어, CPBRD 값의 유형의 표시 및 CPBRD 값(델타 값)은 주어진 단위 또는 주어진 단위를 포함하는 픽처의 BP SEI 메시지로부터 파싱된다. CPBRD 값의 유형에 따라, 주어진 단위에 대한 CPBRD 값이 PT SEI 메시지로부터 파싱될 수 있다. 예를 들어, 디코더는 비디오 시퀀스의 주어진 단위에 대한 CPBRD 값의 유형의 표시를 수신하고 파싱하며, 델타 값을 (예컨대, BP SEI 메시지로부터) 주어진 단위에 대한 CPBRD 값으로서 수신하고 파싱한다. 주어진 단위에 대한 델타 값은 주어진 단위에 대한 CPBRD 값과 디코딩 순서에서의 선행 픽처의 CPBRD 값 사이의 차이를 나타낸다. 디코더는 또한 (예컨대, PT SEI 메시지로부터) 주어진 단위에 대한 다른 CPBRD 값을 수신하고 파싱한다. 유효할 때, 주어진 단위에 대한 다른 CPBRD 값은 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다.
주어진 단위에 대한 CPBRD 값을 파싱한 후에, 디코더는 CPBRD 값을 이용할 수 있다. 예를 들어, 주어진 단위에 대한 CPBRD 값에 적어도 부분적으로 기초하여, 디코더는 주어진 단위에 대한 CPB로부터 공칭 제거 시간을 계산할 수 있다.
디코더는 단위마다(예컨대, 픽처마다) 기법(1400)을 반복할 수 있다. 간단함을 위해, 도 14는 기법(1400)이 다른 디코딩 프로세스들과 관련하여 어떻게 동작하는지를 나타내지 않고 있다.
도 15는, CPBRD 값들이 픽처들에 대해 설정되어 있을 때, 단일 값 방식에 따라 디코딩 동안 CPBRD 값들을 결정하는 예시적인 기법(1500)을 나타낸 것이다. 도 4를 참조하여 앞서 기술된 것과 같은 비디오 디코더 또는 기타 비디오 디코더는 기법(1500)을 수행한다.
시작하기 위해, 디코더는 비디오 시퀀스에서의 현재 픽처를 가져온다(1510). 디코더는 현재 픽처가 BP SEI 메시지를 갖는지를 검사한다(1520). 갖지 않는 경우, 디코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD를 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 해석한다(1560).
다른 한편으로는, 현재 픽처가 BP SEI 메시지를 가지는 경우, 디코더는 현재 픽처에 대한 BP SEI 메시지에서의 concatenation_flag 값을 가져온다(1530). 플래그의 값에 따라(1540), 디코더는 현재 픽처에 대한 CPBRD 값을 상이한 방식들로 해석할 수 있다. 플래그가 1인 경우, 디코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 해석한다(1550). 그렇지 않은 경우(플래그가 0인 경우), 디코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD를 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 해석한다(1560).
디코더는 완료되었는지를 검사하고(1570), 완료되지 않은 경우, 다음 픽처를 현재 픽처로 하여 계속된다. 간단함을 위해, 도 15는 기법(1500)이 다른 디코딩 프로세스들과 관련하여 어떻게 동작하는지를 나타내지 않고 있다.
도 16은 비트스트림들을 스플라이싱하는 일반화된 기법(1600)을 나타낸 것이다. 비디오 스플라이싱 도구는 기법(1600)을 수행한다.
스플라이싱 도구는 제1 비디오 시퀀스에 대한 제1 비트스트림을 수신하고(1610), 또한 제2 비디오 시퀀스에 대한 제2 비트스트림을 수신한다(1620). 제2 비디오 시퀀스의 주어진 단위에 대한 CPBRD 값은, 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지에 관계없이, 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다.
스플라이싱 도구는 제2 비디오 시퀀스의 적어도 일부를 제1 비디오 시퀀스에 스플라이싱한다(1630). 스플라이싱의 일부로서, 스플라이싱 도구는 주어진 단위 또는 주어진 단위를 포함하는 픽처에서 시작하는 제2 비디오 시퀀스를 제1 비디오 시퀀스에 연결시킨다. 예를 들어, 스플라이싱 도구는 주어진 단위 또는 주어진 단위를 포함하는 픽처의 BP SEI 메시지(여기서 BP SEI 메시지는 주어진 단위에 대한 CPBRD 값의 유형의 표시와, 어떤 변형들에서, 주어진 단위에 대한 제1 CPBRD 값을 포함함)와 PT SEI 메시지(여기서 PT SEI 메시지는 주어진 단위에 대한 CPBRD 값이나, 어떤 변형들에서, 주어진 단위에 대한 제2 CPBRD 값을 포함함)와 연결시킨다.
일부 구현들에서, 주어진 단위에 대한 (예컨대, PT SEI 메시지에서의) 제2 CPBRD 값은 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값을 나타낸다. 이 경우에, 스플라이싱의 일부로서, 스플라이싱 도구는 주어진 단위에 대한 다른 제2 CPBRD를 폐기할 수 있거나, 주어진 단위에 대한 다른 제2 CPBRD를 유효하지 않은 것으로 표시할 수 있다.
도 17은, CPBRD 값들이 픽처들에 대해 설정되어 있을 때, 플래그 및 델타 값을 사용하는 두 값 방식에 따라 인코딩 동안 CPBRD 값들을 설정하는 예시적인 기법(1700)을 나타낸 것이다. 도 3을 참조하여 앞서 기술된 것과 같은 비디오 인코더 또는 기타 비디오 인코더는 기법(1700)을 수행한다.
시작하기 위해, 인코더는 비디오 시퀀스에서의 현재 픽처를 가져온다(1710). 인코더는 현재 픽처가 BP SEI 메시지를 갖는지를 검사한다(1720). 갖지 않는 경우, 인코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 설정한다(1760).
다른 한편으로는, 현재 픽처가 BP SEI 메시지를 가지는 경우, 인코더는 현재 픽처에 대한 BP SEI 메시지에서의 concatenation_flag 값을 설정한다(1730). 플래그의 값에 따라(1740), 인코더는 현재 픽처에 대한 CPBRD 값을 상이한 방식들로 설정할 수 있다.
플래그가 1인 경우, 인코더는, PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값이 무시될 것이기 때문에, PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을 임의의 값을 갖도록 설정한다(1750). 현재 픽처에 대한 BP SEI 메시지에서의 CPBRD 값(델타 값)은 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 해석될 것이다.
그렇지 않은 경우(플래그가 0인 경우), 인코더는 디코딩 순서에서의 선행 픽처가 BP SEI 메시지를 갖는지를 검사한다(1742). 갖는 경우, 인코더는, 현재 픽처의 PT SEI 메시지에서의 현재 픽처의 CPBRD 값이 현재 픽처의 BP SEI 메시지에서의 CPBRD 값 + 1과 같도록, 현재 픽처의 BP SEI 메시지에서의 CPBRD 값을 설정한다(1744). 아니오인 경우(선행 픽처가 BP SEI 메시지를 갖지 않는 경우), 인코더는, 현재 픽처의 PT SEI 메시지에서의 현재 픽처의 CPBRD 값이 이전 픽처의 PT SEI 메시지에서의 이전 픽처의 CPBRD 값 + 현재 픽처의 BP SEI 메시지에서의 CPBRD 값(델타 값) + 1과 같도록, 현재 픽처의 BP SEI 메시지에서의 CPBRD 값을 설정한다(1746). 인코더는 또한 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 설정한다(1760).
인코더는 완료되었는지를 검사하고(1770), 완료되지 않은 경우, 다음 픽처를 현재 픽처로 하여 계속된다. 간단함을 위해, 도 17은 기법(1700)이 다른 인코딩 프로세스들과 관련하여 어떻게 동작하는지를 나타내지 않고 있다.
도 18은, CPBRD 값들이 픽처들에 대해 설정되어 있을 때, 플래그 및 델타 값을 사용하는 두 값 방식에 따라 디코딩 동안 CPBRD 값들을 결정하는 예시적인 기법(1800)을 나타낸 것이다. 도 4를 참조하여 앞서 기술된 것과 같은 비디오 디코더 또는 기타 비디오 디코더는 기법(1800)을 수행한다.
시작하기 위해, 디코더는 비디오 시퀀스에서의 현재 픽처를 가져온다(1810). 디코더는 현재 픽처가 BP SEI 메시지를 갖는지를 검사한다(1820). 갖지 않는 경우, 디코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 해석한다(1860).
다른 한편으로는, 현재 픽처가 BP SEI 메시지를 가지는 경우, 디코더는 현재 픽처에 대한 BP SEI 메시지에서의 concatenation_flag 값을 가져온다(1830). 플래그의 값에 따라(1840), 디코더는 현재 픽처에 대한 CPBRD 값을 상이한 방식들로 해석할 수 있거나, 심지어 현재 픽처에 대한 CPBRD 값을 무시할 수 있다.
플래그가 1인 경우, 디코더는 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을 무시한다(1850). 현재 픽처에 대한 BP SEI 메시지에서의 CPBRD 값(델타 값)은 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 해석된다.
그렇지 않은 경우(플래그가 0인 경우), 인코더는 선행 픽처가 BP SEI 메시지를 갖는지를 검사한다(1842). 갖는 경우, 디코더는 현재 픽처의 PT SEI 메시지에서의 현재 픽처의 CPBRD 값이 현재 픽처의 BP SEI 메시지에서의 CPBRD 값 + 1과 같다는 것을 확인할 수 있다(1844). 아니오인 경우(선행 픽처가 BP SEI 메시지를 갖지 않는 경우), 디코더는 현재 픽처의 PT SEI 메시지에서의 현재 픽처의 CPBRD 값이 이전 픽처의 PT SEI 메시지에서의 이전 픽처의 CPBRD 값 + 현재 픽처의 BP SEI 메시지에서의 CPBRD 값(델타 값) + 1과 같다는 것을 확인할 수 있다(1846). 디코더는 또한 PT SEI 메시지에서의 현재 픽처에 대한 CPBRD 값을 BP SEI 메시지를 가지는 디코딩 순서에서의 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 해석한다(1860).
디코더는 완료되었는지를 검사하고(1870), 완료되지 않은 경우, 다음 픽처를 현재 픽처로 하여 계속된다. 간단함을 위해, 도 18은 기법(1800)이 다른 디코딩 프로세스들과 관련하여 어떻게 동작하는지를 나타내지 않고 있다.
H. 변형들 및 대안들
발명을 실시하기 위한 구체적인 내용은 SEI 메시지들에 대한 구문 및 의미의 많은 예들을 포함한다. 어떤 경우들에서, 이들 예는 일반적으로 H.264/AVC 표준 및/또는 HEVC 표준에서 사용되는 SEI 메시지들의 형태를 따른다. 보다 일반적으로, "SEI 메시지" 또는 "VUI" 메시지라는 용어는 이러한 구문 요소들이 언급된 H.264/AVC 표준 또는 HEVC 표준에 명시된 SEI 또는 VUI 구문을 사용하여 시그널링되는지, 코딩된 비디오 비트스트림 내의 다른 구문에서 시그널링되는지, 어떤 다른 수단에 의해 시그널링되는지에 관계없이, 본 명세서에 기술된 예시적인 SEI 또는 VUI 메시지의 구문 구조(들)에 담겨 있는 정보와 동등한 적어도 일부 정보를 전달하는 코딩된 비디오 데이터와 연관된 구문 요소들의 임의의 세트를 나타낸다.
개시된 발명의 원리들이 적용될 수 있는 많은 가능한 실시예들을 바탕으로, 예시된 실시예들이 본 발명의 바람직한 예들에 불과하고 본 발명의 범주를 제한하는 것으로 해석되어서는 안된다는 것을 잘 알 것이다. 오히려, 본 발명의 범주는 이하의 청구범위에 의해 한정된다. 따라서, 이 청구범위의 범주 및 사상 내에 속하는 모든 것을 본 발명으로서 청구한다.

Claims (25)

  1. 컴퓨팅 디바이스에 있어서,
    비디오 시퀀스에 대한 비디오를 인코딩하기 위한 동작을 수행하도록 구성된 비디오 인코더로서, 상기 동작은,
    상기 비디오 시퀀스의 현재 픽처 - 상기 현재 픽처는 상기 현재 픽처와 연관된 버퍼링 기간 SEI 메시지를 가짐 - 에 대한 주어진 액세스 유닛에 대한 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 델타 값을 설정하는 동작,
    상기 주어진 액세스 유닛에 대한 플래그의 값을 설정하는 동작으로서,
    상기 플래그의 값이 제1 값인 경우, 상기 주어진 액세스 유닛에 대한 픽처 타이밍 SEI 메시지에서의 CPBRD 값은, 디코딩 순서에서의 제1 선행 픽처 - 상기 제1 선행 픽처는 상기 제1 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 가짐 - 의 공칭 코딩 픽처 버퍼(coded picture buffer, CPB) 제거 시간에 대한 상기 현재 픽처의 공칭 CPB 제거 시간을 명시하는 증분 값을 표시하고,
    상기 플래그의 값이 제2 값인 경우, 상기 현재 픽처의 공칭 CPB 제거 시간은, 상기 CPBRD 델타 값에 의해, 디코딩 순서에서의 제2 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 표시되는 것인, 상기 플래그의 값을 설정하는 동작, 및
    상기 현재 픽처와 연관된 상기 버퍼링 기간 SEI 메시지에서 상기 주어진 액세스 유닛에 대한 상기 CPBRD 델타 값 및 상기 플래그의 값을 시그널링하는 동작을 포함하는 것인, 상기 비디오 인코더; 및
    출력을 위해 상기 인코딩된 비디오를 저장하도록 구성된 버퍼
    를 포함하는, 컴퓨팅 디바이스.
  2. 제1항에 있어서,
    상기 CPBRD 델타 값은 상기 현재 픽처와 연관된 상기 버퍼링 기간 SEI 메시지에서 상기 CPBRD 델타 값 - 1을 나타내는 구문 요소(syntax element)로서 시그널링되는 것인, 컴퓨팅 디바이스.
  3. 제1항에 있어서,
    상기 제2 선행 픽처는 디코딩 순서에서 상기 현재 픽처의 직전에 선행하고 있는 것인, 컴퓨팅 디바이스.
  4. 제1항에 있어서,
    상기 현재 픽처는 랜덤 액세스 픽처이고, 상기 CPBRD 델타 값 및 상기 플래그의 값을 시그널링하는 동작은 상기 플래그의 값의 변경을 통해 상기 랜덤 액세스 픽처에서 시작하는 스플라이싱(splicing)을 용이하게 하는 것인, 컴퓨팅 디바이스.
  5. 제1항에 있어서,
    상기 인코딩하기 위한 동작은,
    상기 주어진 액세스 유닛에 대한 상기 CPBRD 값을 설정하는 동작, 및
    상기 주어진 액세스 유닛에 대한 상기 CPBRD 값을 상기 픽처 타이밍 SEI 메시지에서 상기 CPBRD 값 - 1을 나타내는 구문 요소로서 시그널링하는 동작을 더 포함하는 것인, 컴퓨팅 디바이스.
  6. 컴퓨팅 디바이스에서의 방법에 있어서,
    비디오 시퀀스에 대한 인코딩된 비디오를 수신하는 단계로서,
    상기 비디오 시퀀스의 현재 픽처 - 상기 현재 픽처는 상기 현재 픽처와 연관된 버퍼링 기간 SEI 메시지를 가짐 - 에 대한 주어진 액세스 유닛에 대한 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 델타 값을 수신하는 단계, 및
    상기 주어진 액세스 유닛에 대한 플래그의 값을 수신하는 단계로서,
    상기 플래그의 값이 제1 값인 경우, 상기 주어진 액세스 유닛에 대한 픽처 타이밍 SEI 메시지에서의 CPBRD 값은 디코딩 순서에서의 제1 선행 픽처 - 상기 제1 선행 픽처는 상기 제1 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 가짐 - 의 공칭 코딩 픽처 버퍼(coded picture buffer, CPB) 제거 시간에 대한 상기 현재 픽처의 공칭 CPB 제거 시간을 명시하는 증분 값을 표시하고,
    상기 플래그의 값이 제2 값인 경우, 상기 현재 픽처의 공칭 CPB 제거 시간은, 상기 CPBRD 델타 값에 의해, 디코딩 순서에서의 제2 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 표시되는 것인, 상기 플래그의 값을 수신하는 단계
    를 포함하는, 상기 인코딩된 비디오를 수신하는 단계; 및
    상기 주어진 액세스 유닛에 대한 상기 CPBRD 델타 값 및 상기 플래그의 값을 상기 현재 픽처와 연관된 상기 버퍼링 기간 SEI 메시지로부터 파싱하는 단계를 포함하는, 상기 인코딩된 비디오를 디코딩하는 단계
    를 포함하는, 컴퓨팅 디바이스에서의 방법.
  7. 제6항에 있어서,
    상기 CPBRD 델타 값은 상기 현재 픽처와 연관된 상기 버퍼링 기간 SEI 메시지에서 상기 CPBRD 델타 값 - 1을 나타내는 구문 요소(syntax element)로서 시그널링되는 것인, 컴퓨팅 디바이스에서의 방법.
  8. 제6항에 있어서,
    상기 현재 픽처는 랜덤 액세스 픽처인 것인, 컴퓨팅 디바이스에서의 방법.
  9. 제6항에 있어서,
    상기 인코딩된 비디오를 수신하는 단계는, 상기 주어진 액세스 유닛에 대한 상기 픽처 타이밍 SEI 메시지에서 상기 CPBRD 값 - 1을 나타내는 구문 요소로서 시그널링되는, 상기 주어진 액세스 유닛에 대한 상기 CPBRD 값을 수신하는 단계를 더 포함하는 것인, 컴퓨팅 디바이스에서의 방법.
  10. 제9항에 있어서,
    상기 주어진 액세스 유닛에 대한 상기 CPBRD 값을, 상기 제2 선행 픽처에 대한 CPBRD 값 및 상기 주어진 액세스 유닛에 대한 상기 CPBRD 델타 값에 기초한 합과 비교하는 것에 의해, 데이터의 손실을 검출하는 단계를 더 포함하는, 컴퓨팅 디바이스에서의 방법.
  11. 제6항에 있어서,
    스플라이싱된 비트스트림에 대해, 상기 현재 픽처의 공칭 CPB 제거 시간은, (a) 상기 제2 선행 픽처의 공칭 CPB 제거 시간 및 (b) 클럭 틱 값(clock tick value)과 상기 주어진 액세스 유닛에 대한 상기 CPBRD 델타 값의 곱의 합으로서 계산될 수 있고, 지연이 적어도 상기 주어진 액세스 유닛에서 디코딩이 시작되는 경우만큼 긴 것을 보장하는 제약조건에 의해 제약되는 것인, 컴퓨팅 디바이스에서의 방법.
  12. 제6항에 있어서,
    상기 주어진 액세스 유닛에 대한 상기 CPBRD 델타 값에 적어도 부분적으로 기초하여, 상기 현재 픽처의 공칭 CPB 제거 시간을 계산하는 단계를 더 포함하는, 컴퓨팅 디바이스에서의 방법.
  13. 컴퓨터 실행가능 명령어들을 저장한 하나 이상의 컴퓨터 판독가능 저장 매체에 있어서, 상기 명령어들은 컴퓨팅 디바이스에 의해 프로그램될 때 상기 컴퓨팅 디바이스가 동작들을 수행하게 하고, 상기 하나 이상의 컴퓨터 판독가능 저장 매체는 휘발성 메모리, 비휘발성 메모리, 자기 디스크, CD-ROM 및 DVD로 구성된 그룹으로부터 선택된 것이고, 상기 동작들은,
    제1 비디오 시퀀스에 대한 제1 비트스트림의 적어도 일부를 수신하는 동작;
    현재 픽처를 포함하는 제2 비디오 시퀀스에 대한 제2 비트스트림의 적어도 일부를 수신하는 동작으로서, 상기 현재 픽처는 상기 현재 픽처와 연관된 버퍼링 기간 SEI 메시지를 가지며, 상기 버퍼링 기간 SEI 메시지는,
    상기 현재 픽처에 대한 주어진 액세스 유닛에 대한 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 델타 값, 및
    상기 주어진 액세스 유닛에 대한 플래그의 값을 포함하고,
    상기 플래그의 값이 제1 값인 경우, 상기 주어진 액세스 유닛에 대한 픽처 타이밍 SEI 메시지에서의 CPBRD 값은, 디코딩 순서에서의 제1 선행 픽처의 공칭 코딩 픽처 버퍼(coded picture buffer, CPB) 제거 시간에 대한 상기 현재 픽처의 공칭 CPB 제거 시간을 명시하는 증분 값을 표시하고, 상기 제1 선행 픽처는 상기 제1 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 가지며,
    상기 플래그의 값이 제2 값인 경우, 상기 현재 픽처의 공칭 CPB 제거 시간은, 상기 CPBRD 델타 값에 의해, 디코딩 순서에서의 제2 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 표시되는 것인, 상기 제2 비트스트림의 적어도 일부를 수신하는 동작; 및
    상기 제2 비디오 시퀀스의 적어도 일부를 상기 제1 비디오 시퀀스의 적어도 일부에 스플라이싱하는 동작으로서, 상기 주어진 액세스 유닛에서 시작하는 상기 제2 비디오 시퀀스의 적어도 일부를 상기 제1 비디오 시퀀스의 적어도 일부에 연결시키는(concatenate) 동작을 포함하는, 상기 스플라이싱하는 동작
    을 포함하는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 동작들은, 상기 스플라이싱하는 동작의 일부로서, 상기 플래그의 값을 상기 제2 값으로 설정하는 것에 의해 상기 주어진 액세스 유닛에 대한 상기 픽처 타이밍 SEI 메시지에서의 상기 CPBRD 값을 유효하지 않은 것으로 표시하는 동작을 더 포함하는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  15. 제13항에 있어서,
    상기 제2 비디오 시퀀스의 적어도 일부를 연결시키는 동작은,
    상기 현재 픽처와 연관된 상기 버퍼링 기간 SEI 메시지를 연결시키는 동작; 및
    상기 픽처 타이밍 SEI 메시지 - 상기 픽처 타이밍 SEI 메시지는 상기 주어진 액세스 유닛에 대한 상기 CPBRD 값을 포함함 - 를 연결시키는 동작을 포함하는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  16. 제1항에 있어서,
    상기 플래그의 값이 상기 제1 값인 경우,
    상기 제2 선행 화상이 상기 제2 선행 화상과 연관된 버퍼링 기간 SEI 메시지를 갖지 않으면, 상기 CPBRD 델타 값은 상기 주어진 액세스 유닛에 대한 CPBRD 값과 상기 제2 선행 화상에 대한 CPBRD 값 사이의 차이를 표시하고,
    상기 제2 선행 화상이 상기 제2 선행 화상과 연관된 버퍼링 기간 SEI 메시지를 가지면, 상기 CPBRD 델타 값은 상기 주어진 액세스 유닛에 대한 CPBRD 값과 동일한 것인, 컴퓨팅 디바이스.
  17. 제1항에 있어서,
    상기 현재 픽처는 시간 계층(temporal layer)의 일부이고, 상기 제2 선행 픽처는 상기 현재 픽처의 상기 시간 계층 또는 하위 시간 계층에서 디코딩 순서에서 상기 현재 픽처의 직전에 선행하거나; 또는
    상기 제2 선행 픽처는, 0의 임시 식별자(temporal identifier)를 가지는 픽처들 중에서, 디코딩 순서에서 상기 현재 픽처의 직전에 선행하는 것인, 컴퓨팅 디바이스.
  18. 제1항에 있어서,
    상기 제2 선행 픽처는 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖지 않고, 상기 제1 선행 픽처 및 상기 제2 선행 픽처는 상이한 픽처들이거나; 또는
    상기 제2 선행 픽처는 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖고, 상기 제1 선행 픽처는 상기 제2 선행 픽처인 것인, 컴퓨팅 디바이스.
  19. 제6항에 있어서,
    상기 플래그의 값이 상기 제1 값인 경우,
    상기 제2 선행 픽처가 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖지 않으면, 상기 CPBRD 델타 값은 상기 주어진 액세스 유닛에 대한 CPBRD 값과 상기 제2 선행 픽처에 대한 CPBRD 값 사이의 차이를 표시하고,
    상기 제2 선행 픽처가 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 가지면, 상기 CPBRD 델타 값은 상기 주어진 액세스 유닛에 대한 CPBRD 값과 동일한 것인, 컴퓨팅 디바이스에서의 방법.
  20. 제6항에 있어서,
    상기 현재 픽처는 시간 계층의 일부이고, 상기 제2 선행 픽처는 상기 현재 픽처의 상기 시간 계층 또는 하위 시간 계층에서 디코딩 순서에서 상기 현재 픽처의 직전에 선행하거나; 또는
    상기 제2 선행 픽처는, 0의 임시 식별자를 가지는 픽처들 중에서, 디코딩 순서에서 상기 현재 픽처의 직전에 선행하는 것인, 컴퓨팅 디바이스에서의 방법.
  21. 제6항에 있어서,
    상기 제2 선행 픽처는 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖지 않고, 상기 제1 선행 픽처 및 상기 제2 선행 픽처는 상이한 픽처들이거나; 또는
    상기 제2 선행 픽처는 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖고, 상기 제1 선행 픽처는 상기 제2 선행 픽처인 것인, 컴퓨팅 디바이스에서의 방법.
  22. 제13항에 있어서,
    상기 플래그의 값이 상기 제1 값인 경우,
    상기 제2 선행 픽처가 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖지 않으면, 상기 CPBRD 델타 값은 상기 주어진 액세스 유닛에 대한 CPBRD 값과 상기 제2 선행 픽처에 대한 CPBRD 값 사이의 차이를 표시하고,
    상기 제2 선행 픽처가 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 가지면, 상기 CPBRD 델타 값은 상기 주어진 액세스 유닛에 대한 CPBRD 값과 동일한 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  23. 제13항에 있어서,
    상기 현재 픽처는 시간 계층의 일부이고, 상기 제2 선행 픽처는 상기 현재 픽처의 상기 시간 계층 또는 하위 시간 계층에서 디코딩 순서에서 상기 현재 픽처의 직전에 선행하거나; 또는
    상기 제2 선행 픽처는, 0의 임시 식별자를 가지는 픽처들 중에서, 디코딩 순서에서 상기 현재 픽처의 직전에 선행하는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  24. 제13항에 있어서,
    상기 제2 선행 픽처는 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖지 않고, 상기 제1 선행 픽처 및 상기 제2 선행 픽처는 상이한 픽처들이거나; 또는
    상기 제2 선행 픽처는 상기 제2 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 갖고, 상기 제1 선행 픽처는 상기 제2 선행 픽처인 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  25. 비디오 시퀀스의 현재 픽처와 연관된 버퍼링 기간 SEI 메시지가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 하나 이상의 컴퓨터 판독가능 저장 매체는 휘발성 메모리, 비휘발성 메모리, 자기 디스크, CD-ROM 및 DVD로 구성된 그룹으로부터 선택된 것이고, 상기 버퍼링 기간 SEI 메시지는,
    상기 현재 픽처에 대한 주어진 액세스 유닛에 대한 코딩 픽처 버퍼 제거 지연(coded picture buffer removal delay, CPBRD) 델타 값; 및
    상기 주어진 액세스 유닛에 대한 플래그의 값을 포함하고,
    상기 플래그의 값이 제1 값인 경우, 상기 주어진 액세스 유닛에 대한 픽처 타이밍 SEI 메시지에서의 CPBRD 값은, 디코딩 순서에서의 제1 선행 픽처의 공칭 코딩 픽처 버퍼(coded picture buffer, CPB) 제거 시간에 대한 상기 현재 픽처의 공칭 CPB 제거 시간을 명시하는 증분 값을 표시하고, 상기 제1 선행 픽처는 상기 제1 선행 픽처와 연관된 버퍼링 기간 SEI 메시지를 가지며;
    상기 플래그의 값이 제2 값인 경우, 상기 현재 픽처의 공칭 CPB 제거 시간은, 상기 CPBRD 델타 값에 의해, 디코딩 순서에서의 제2 선행 픽처의 공칭 CPB 제거 시간에 대한 증분 값으로서 표시되는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.


KR1020157021477A 2013-01-07 2014-01-07 비디오 스플라이싱을 단순화시키기 위한 버퍼링 정보에 대한 구문 및 의미 KR102179360B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361749909P 2013-01-07 2013-01-07
US61/749,909 2013-01-07
US14/109,670 2013-12-17
US14/109,670 US9661341B2 (en) 2013-01-07 2013-12-17 Syntax and semantics for buffering information to simplify video splicing
PCT/US2014/010393 WO2014107691A1 (en) 2013-01-07 2014-01-07 Syntax and semantics for buffering information to simplify video splicing

Publications (2)

Publication Number Publication Date
KR20150105431A KR20150105431A (ko) 2015-09-16
KR102179360B1 true KR102179360B1 (ko) 2020-11-16

Family

ID=51060939

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157021477A KR102179360B1 (ko) 2013-01-07 2014-01-07 비디오 스플라이싱을 단순화시키기 위한 버퍼링 정보에 대한 구문 및 의미

Country Status (13)

Country Link
US (8) US9661341B2 (ko)
EP (1) EP2941880B1 (ko)
JP (1) JP6312704B2 (ko)
KR (1) KR102179360B1 (ko)
CN (1) CN105027570B (ko)
AR (1) AR094382A1 (ko)
AU (1) AU2014203924B2 (ko)
BR (1) BR122022001553B1 (ko)
CA (1) CA2897039C (ko)
MX (1) MX356482B (ko)
RU (1) RU2659748C2 (ko)
TW (1) TW201436526A (ko)
WO (1) WO2014107691A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022225184A1 (ko) * 2021-04-19 2022-10-27 삼성전자주식회사 서버 및 그 제어 방법

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6019824B2 (ja) * 2012-07-02 2016-11-02 富士通株式会社 動画像符号化装置及び動画像符号化方法ならびに動画像符号化用コンピュータプログラム
US10021394B2 (en) 2012-09-24 2018-07-10 Qualcomm Incorporated Hypothetical reference decoder parameters in video coding
US9661341B2 (en) 2013-01-07 2017-05-23 Microsoft Technology Licensing, Llc Syntax and semantics for buffering information to simplify video splicing
US9418469B1 (en) * 2013-07-19 2016-08-16 Outward, Inc. Generating video content
JP6468279B2 (ja) * 2014-03-07 2019-02-13 ソニー株式会社 画像符号化装置および方法、並びに、画像処理装置および方法
AU2014202682A1 (en) * 2014-05-16 2015-12-03 Canon Kabushiki Kaisha Method, apparatus and system for copying a block of video samples
US9955159B2 (en) * 2014-10-31 2018-04-24 Google Llc Multi-video decoding with input switching
US10116576B2 (en) * 2015-10-19 2018-10-30 Samsung Electronics Co., Ltd. Methods and apparatus for random access of HEVC bitstream for MMT
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
US10390071B2 (en) * 2016-04-16 2019-08-20 Ittiam Systems (P) Ltd. Content delivery edge storage optimized media delivery to adaptive bitrate (ABR) streaming clients
US10157480B2 (en) 2016-06-24 2018-12-18 Microsoft Technology Licensing, Llc Efficient decoding and rendering of inter-coded blocks in a graphics pipeline
CN107770565A (zh) * 2016-08-15 2018-03-06 联发科技股份有限公司 低延迟视频编码的装置与方法
US11197010B2 (en) 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
US10326815B2 (en) * 2016-12-20 2019-06-18 LogMeln, Inc. Techniques for scalably sharing video through a streaming server
US11665220B2 (en) * 2018-10-12 2023-05-30 Telefonaktiebolaget Lm Ericsson (Publ) Monitoring and surveillance system arranged for processing video data associated with a vehicle, as well as corresponding devices and method
CN109547708A (zh) * 2018-12-04 2019-03-29 中国航空工业集团公司西安航空计算技术研究所 一种合成视景图像处理系统
WO2020256048A1 (ja) * 2019-06-18 2020-12-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
JP7403245B2 (ja) * 2019-06-21 2023-12-22 キヤノン株式会社 画像復号装置、画像復号方法
WO2021061490A1 (en) * 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Signaling of dpb parameters for multi-layer video bitstreams
CN110996063A (zh) * 2019-12-16 2020-04-10 武汉武钢绿色城市技术发展有限公司 一种监控画面上电视墙的装置及系统
JP2023526369A (ja) * 2020-05-22 2023-06-21 バイトダンス インコーポレイテッド 映像ビットストリームにおけるコーディングされたピクチャバッファ情報の信号通知
US20240196049A1 (en) * 2022-12-08 2024-06-13 Synamedia Limited Client Device Switching to Low Latency Content

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008085935A1 (en) 2007-01-08 2008-07-17 Thomson Licensing Methods and apparatus for video stream splicing

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5982436A (en) 1997-03-28 1999-11-09 Philips Electronics North America Corp. Method for seamless splicing in a video encoder
US7532670B2 (en) * 2002-07-02 2009-05-12 Conexant Systems, Inc. Hypothetical reference decoder with low start-up delays for compressed image and video
US7257162B2 (en) 2002-07-02 2007-08-14 Conexant Systems, Inc. Hypothetical reference decoder for compressed image and video
US20050201471A1 (en) 2004-02-13 2005-09-15 Nokia Corporation Picture decoding method
US20060002479A1 (en) 2004-06-22 2006-01-05 Fernandes Felix C A Decoder for H.264/AVC video
JP2008536420A (ja) * 2005-04-13 2008-09-04 ノキア コーポレイション スケーラビリティ情報の符号化、格納およびシグナリング
JP4311570B2 (ja) * 2005-07-01 2009-08-12 株式会社ソニー・コンピュータエンタテインメント 再生装置、ビデオ復号装置および同期再生方法
CN101064515B (zh) * 2007-04-18 2011-05-11 威盛电子股份有限公司 可增进译码效能的方法
US8335266B2 (en) 2007-06-29 2012-12-18 Cisco Technology, Inc. Expedited splicing of video streams
JP4577357B2 (ja) * 2007-12-27 2010-11-10 ソニー株式会社 符号化装置及び方法、並びにプログラム
US8886022B2 (en) * 2008-06-12 2014-11-11 Cisco Technology, Inc. Picture interdependencies signals in context of MMCO to assist stream manipulation
US20100167689A1 (en) * 2008-07-07 2010-07-01 Hossein Alexander Sepehri-Nik Method and apparatus for determining whether a cellular phone chip is dormant
WO2010022078A1 (en) * 2008-08-22 2010-02-25 Mobile Science Ltd. System and method for interpreting and classifying signals in communications systems
US9083976B2 (en) * 2008-09-05 2015-07-14 Freescale Semiconductor, Inc. Processing a video stream in real time based on binary information of the video stream
JP5131101B2 (ja) * 2008-09-09 2013-01-30 富士通株式会社 動画像編集装置および動画像編集プログラム
US8761266B2 (en) * 2008-11-12 2014-06-24 Cisco Technology, Inc. Processing latticed and non-latticed pictures of a video program
US8743906B2 (en) 2009-01-23 2014-06-03 Akamai Technologies, Inc. Scalable seamless digital video stream splicing
JP5332773B2 (ja) * 2009-03-18 2013-11-06 ソニー株式会社 画像処理装置および方法
US9532055B2 (en) * 2012-04-16 2016-12-27 Microsoft Technology Licensing, Llc Constraints and unit types to simplify video random access
US9661341B2 (en) 2013-01-07 2017-05-23 Microsoft Technology Licensing, Llc Syntax and semantics for buffering information to simplify video splicing
US11899560B2 (en) 2022-04-27 2024-02-13 Microsoft Technology Licensing, Llc Automatic correctness validation of database management systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008085935A1 (en) 2007-01-08 2008-07-17 Thomson Licensing Methods and apparatus for video stream splicing

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Benjamin Bross et al., "High Efficiency Video Coding (HEVC) text specification draft 10 (for FDIS & Last Call)", (JCTVC-L1003_v34), JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 12th Meeting: Ge
David Flynn et al., "High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 2 (for PDAM)", (JCTVC-L1005_v4), JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 12th Meeting: G
Gary J. Sullivan et al., "HRD issue for bitstream splicing", (JCTVC-L0328), JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 12th Meeting: Geneva, CH, (2013.01.14.)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022225184A1 (ko) * 2021-04-19 2022-10-27 삼성전자주식회사 서버 및 그 제어 방법

Also Published As

Publication number Publication date
BR122022001553B1 (pt) 2023-02-23
CA2897039C (en) 2020-04-28
MX356482B (es) 2018-05-30
RU2015127083A (ru) 2017-01-16
US20220394287A1 (en) 2022-12-08
US20140192893A1 (en) 2014-07-10
US11665362B2 (en) 2023-05-30
US11665361B2 (en) 2023-05-30
CN105027570B (zh) 2019-07-02
AU2014203924B2 (en) 2017-03-23
CA2897039A1 (en) 2014-07-10
US20230017536A1 (en) 2023-01-19
WO2014107691A1 (en) 2014-07-10
US20170257639A1 (en) 2017-09-07
JP6312704B2 (ja) 2018-04-18
JP2016506698A (ja) 2016-03-03
US11943464B2 (en) 2024-03-26
EP2941880B1 (en) 2019-04-03
MX2015008797A (es) 2016-04-25
US20230262249A1 (en) 2023-08-17
CN105027570A (zh) 2015-11-04
US20230254499A1 (en) 2023-08-10
TW201436526A (zh) 2014-09-16
RU2659748C2 (ru) 2018-07-03
US11943463B2 (en) 2024-03-26
KR20150105431A (ko) 2015-09-16
AU2014203924A1 (en) 2015-07-16
US9661341B2 (en) 2017-05-23
AR094382A1 (es) 2015-07-29
US10313698B2 (en) 2019-06-04
US11451813B2 (en) 2022-09-20
BR112015016254A2 (pt) 2017-07-11
EP2941880A1 (en) 2015-11-11
US20210314594A1 (en) 2021-10-07
US11070832B2 (en) 2021-07-20
US20190289310A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
US11665362B2 (en) Syntax and semantics for buffering information to simplify video splicing
US10701401B2 (en) Syntax structures indicating completion of coded regions
TWI603609B (zh) 簡化視訊隨機存取之限制及單元類型
US9313500B2 (en) Conditional signalling of reference picture list modification information
EP3262840B1 (en) Mitigating loss in inter-operability scenarios for digital video
BR112015016254B1 (pt) Método realizado por um dispositivo de computação, mídia legível por computador e dispositivo de computação

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant