KR102541392B1 - 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어 - Google Patents

저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어 Download PDF

Info

Publication number
KR102541392B1
KR102541392B1 KR1020227033016A KR20227033016A KR102541392B1 KR 102541392 B1 KR102541392 B1 KR 102541392B1 KR 1020227033016 A KR1020227033016 A KR 1020227033016A KR 20227033016 A KR20227033016 A KR 20227033016A KR 102541392 B1 KR102541392 B1 KR 102541392B1
Authority
KR
South Korea
Prior art keywords
video frame
frequency bands
current video
frequency
blocks
Prior art date
Application number
KR1020227033016A
Other languages
English (en)
Other versions
KR20220143127A (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 KR20220143127A publication Critical patent/KR20220143127A/ko
Application granted granted Critical
Publication of KR102541392B1 publication Critical patent/KR102541392B1/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • 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/115Selection of the code volume for a coding unit prior to 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/124Quantisation
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/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/188Methods 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 video data packet, e.g. a network abstraction layer [NAL] unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

인코딩 전에 픽셀 데이터가 주파수 대역들로 분해되는 비디오 인코딩 시스템. 프레임의 슬라이스에 대한 주파수 대역들은 인코딩 전에 주파수 대역들에 걸쳐 복잡성 통계들이 계산될 수 있도록 버퍼링될 수 있다. 이어서, 통계들은, 현재 슬라이스에 대한 인코더에서의 레이트를 변조하기 위해, 주파수 대역들에 대한 양자화 파라미터들을 결정할 때, 레이트 제어 컴포넌트에 의해 사용될 수 있다. 주파수 대역들에 대한 양자화 파라미터들은, 수신 디바이스 상에서의 디코더 재구성 및 웨이브릿 합성 후에, 디스플레이되는 프레임들의 품질을 최적화하기 위해 함께 계산될 수 있다. 하나 이상의 이전에 프로세싱된 프레임들에 관한 정보는, 현재 슬라이스에 대한 양자화 파라미터들을 결정할 때, 현재 슬라이스에 대한 통계들과 조합하여 사용될 수 있다.

Description

저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어{RATE CONTROL FOR LOW LATENCY VIDEO ENCODING ADN TRANSMISSION}
가상 현실(virtual reality, VR)은 사용자들이 몰입형 인공 환경을 경험하고/하거나 그와 상호작용하게 하고, 그에 따라, 사용자는 그가 물리적으로 그 환경 내에 있는 것처럼 느끼게 된다. 예를 들어, 가상 현실 시스템들은 깊이의 착각을 불러일으키기 위해 사용자들에게 입체 장면을 디스플레이할 수 있고, 컴퓨터는 장면 내에서 움직인다는 사용자의 착각을 제공하기 위해 장면 콘텐츠를 실시간으로 조정할 수 있다. 사용자가 가상 현실 시스템을 통해 이미지들을 볼 때, 사용자는 그에 따라 1인칭 시점으로부터 그가 장면 내에서 움직이고 있는 것처럼 느낄 수 있다. 유사하게, 혼합 현실(mixed reality, MR)은 컴퓨터 생성 정보(가상 콘텐츠로 지칭됨)를 현실 세계 이미지들 또는 현실 세계 뷰(view)와 조합하여, 사용자의 세계관을 증강시키거나 또는 그에 콘텐츠를 부가하거나, 또는 대안적으로, 현실 세계 객체들의 가상 표현들을 3차원(3D) 가상 세계의 뷰들과 조합한다. 따라서, 가상 현실의 시뮬레이션된 환경들 및/또는 혼합 현실의 혼합된 환경들은 다수의 애플리케이션들에 대한 대화형 사용자 경험을 제공하기 위해 이용될 수 있다.
디코딩 및 디스플레이를 위한 디바이스로의 통신 링크(예컨대, 무선 링크)를 통한 송신을 위해 낮은 레이턴시들로 고-해상도 비디오 소스들을 인코딩할 수 있는 비디오 인코딩 시스템의 다양한 실시예들이 설명된다. 비디오 인코딩 시스템의 실시예들은 또한, 통신 링크의 채널 용량의 변화들과 같은 변화되는 조건들에서 원하는 프레임 레이트를 유지하기 위해, 디바이스에 송신되는 인코딩된 비디오의 완만한(graceful) 열화를 제공할 수 있다. 비디오 인코딩 시스템의 예시적인 애플리케이션은 가상 또는 혼합 현실 시스템들에 있으며, 여기서, 가상 콘텐츠를 보유하는 비디오 프레임들이 기지국에 의해 렌더링, 인코딩, 및 디코딩 및 디스플레이를 위해 디바이스(예컨대, 노트북 또는 랩톱 컴퓨터, 패드 또는 태블릿 디바이스, 스마트폰, 또는 사용자에 의해 착용될 수 있는 헤드-마운트 디스플레이(head-mounted display, HMD), 이를테면 헤드셋, 헬멧, 고글, 또는 안경)로 송신된다.
일부 실시예들에서, 비디오 인코딩 시스템은 픽셀 데이터를 주파수 대역들로 분해하기 위해, 인코딩 전에, 픽셀 데이터에 대해 웨이브릿 변환(wavelet transform)을 수행할 수 있다. 이어서, 주파수 대역들은 인코딩/압축을 위해 블록-기반 인코더에 제공되는 블록들로 구성된다. 이어서, 인코딩된 주파수 데이터는 무선 인터페이스로 전송되며, 무선 인터페이스는 인코딩된 주파수 데이터를 패킷화하고, 패킷들을 수신 디바이스로 송신한다. 수신 디바이스 상에서, 인코딩된 데이터는 역-패킷화(de-packetize)되고, 블록-기반 디코더를 통해 통과되어, 주파수 대역들이 복구된다. 이어서, 디스플레이를 위해 픽셀 데이터를 재구성하기 위해, 복구된 주파수 대역들에 대해 웨이브릿 합성이 수행된다.
무선 링크를 통해 목표 프레임 레이트를 유지하고, 프레임 렌더링, 송신, 및 디스플레이에서 레이턴시를 최소화하고, 디바이스에 송신되는 인코딩된 비디오의 완만한 열화를 제공하여, 무선 연결의 채널 용량의 변화들과 같은 변화되는 조건들에서 원하는 프레임 레이트를 유지하기 위해, 비디오 인코딩 시스템에 의해 다양한 방법들 및 장치가 구현될 수 있다.
비디오 인코딩 시스템의 실시예를 구현하는 시스템의 목표는, 무선 연결을 통한 대역폭 사용을 최대화하고 에러들(예컨대, 손실되는 패킷들)을 최소화하면서, 기지국 상에서 가상 콘텐츠가 렌더링된 시간과 디바이스 상에서 가상 콘텐츠가 디스플레이되는 시간 사이의 매우 낮은 레이턴시(예컨대, 4 내지 5 밀리초)를 제공하는 것일 수 있다. 비디오 인코딩 시스템의 실시예들은, 디바이스로 무선 연결을 통해 송신될 데이터를 인코딩할 때, 시스템에 대한 목표가 되는 낮은 레이턴시를 달성하는 것을 돕기 위해, 레이트 제어 방법을 구현할 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은, 프레임의 슬라이스로부터의 픽셀들의 블록들을 다수의 상이한 주파수 대역들로 분해하는 2-계층 웨이브릿 분해를 수행하는 웨이브릿 변환 컴포넌트에 이어서, 주파수 대역들을 인코딩하는 HEVC와 같은 블록-기반 인코더를 포함한다. 일부 실시예들에서, VR/MR 시스템의 엄격한 레이턴시 요건들 하에서 레이트 제어를 수행하기 위해, 인코더 파라미터들을 조정하기 위해 하나의 프레임 또는 2개의 프레임들의 시간 상수에 걸쳐 작동하는 대신에, 레이트 제어 컴포넌트가 각각의 슬라이스에 대해 인코더 파라미터들(예컨대, 주파수 대역들에 대한 양자화 파라미터들)을 조정할 수 있다. 일부 실시예들에서, 슬라이스에 대한 주파수 대역들은, 예컨대, 비디오 인코딩 시스템의 복잡성 분석 컴포넌트에 의해, 인코딩 전에 주파수 대역들에 걸쳐 복잡성 통계들이 계산될 수 있도록, 웨이브릿 변환 후에 로컬 메모리에 버퍼링될 수 있다. 일부 실시예들에서, 복잡성 통계들은 CTU 블록들에 대한 픽셀 그레이디언트(pixel gradient) 및 사이즈의 분산(그러나 이에 제한되지는 않음) 중 하나 이상을 포함할 수 있다. 이어서, 복잡성 통계들은, 현재 슬라이스에 대한 인코더에서의 레이트를 변조하기 위해, 주파수 대역들에 대한 양자화 파라미터들을 결정할 때, 레이트 제어 컴포넌트에 의해 사용될 수 있다. 버퍼링된 주파수 대역들에 대한 복잡성 통계들을 계산하는 것은 비디오 인코딩 시스템이 슬라이스를 인코딩하기 전에 슬라이스에서 복잡성의 양을 추정할 수 있게 한다.
일부 실시예들에서, 레이트 제어 컴포넌트는 프레임(들)의 공동-위치된(co-sited) 블록들 또는 슬라이스들을 인코딩하기 위해 사용되었던 실제 비트 수를 결정하기 위해, 하나 이상의 이전에 프로세싱된 프레임들에 대한 통계들을 검사할 수 있다. 이어서, 이 정보는, 현재 슬라이스에 대한 양자화 파라미터들을 결정할 때, 현재 슬라이스에 대한 복잡성 통계(complexity statistic)들과 조합하여 사용될 수 있다.
일부 실시예들에서, 주파수 대역들에 대한 양자화 파라미터들은, 디바이스 상에서의 디코더 재구성 및 웨이브릿 합성 후에, 프레임들의 전체 디스플레이되는 품질을 최적화하기 위해 함께 계산될 수 있다. 주파수 대역들 사이의 레이트 할당을 위한 방법은, 동작 레이트 왜곡 곡선 상에서 동일한 기울기들을 생성하는, 주파수 대역들 각각에서의 동작 포인트를 발견하는 것이다. 일부 실시예들에서, 동작 레이트 왜곡 곡선은 인코더 파이프라인의 엔트로피 코딩 스테이지로부터의 통계들과 6의 양자화 파라미터 단계들에 대해 계수들의 레이트가 양호하게 근사될 수 있는 사실의 조합을 사용하여 추정될 수 있다.
일부 실시예들에서, 동일한 이미지 내의 주위 영역(예컨대, 주변 영역)보다 더 높은 해상도를 가져야 하는 이미지 내의 관심 영역(예컨대, 중심와 영역)이 있을 수 있다. 일부 실시예들에서, 이전 프레임으로부터의 중심와 영역과 함께, 이전 프레임으로부터의 복잡성 통계들이 저장되고, 현재 프레임의 슬라이스들 내의 주파수 대역들에 대한 양자화 파라미터들을 계산할 때 사용될 수 있다. 예로서, 인코딩될 각각의 블록에 대해, 이전 프레임의 중심와 영역은 이전 프레임에 대해 계산되었던 복잡성 통계들을 변조하는 데 사용될 수 있다. 이어서, 결과적인 복잡성 통계들은, 양자화 파라미터들을 결정할 때, 현재 프레임의 슬라이스에 대해 계산된 복잡성 통계들에 부가하여 사용될 수 있다.
일부 실시예들에서, 레이트 제어 컴포넌트는 슬라이스 레벨이 아니라 블록 레벨에서 인코더 파라미터들(예컨대, 주파수 대역들에 대한 양자화 파라미터들 또는 우선순위 레벨들)을 조정할 수 있다. 일부 실시예들에서, 복잡성 통계들은 슬라이스의 각각의 블록에 대해 계산될 수 있고, 양자화 파라미터들은 블록들에 대해 결정될 수 있다.
도 1은 적어도 일부 실시예들에 따른, 인코딩 전에 웨이브릿 변환을 사용하여 픽셀 데이터를 주파수 대역들로 분해하는 비디오 인코딩 시스템을 예시하는 블록도이다.
도 2는 적어도 일부 실시예들에 따른, 프레임들로부터의 타일들을 병렬로 프로세싱하는 다수의 인코더들을 포함하는 비디오 인코딩 시스템을 예시한다.
도 3a는 적어도 일부 실시예들에 따른, 슬라이스들 및 타일들로 분할된 예시적인 프레임을 예시한다.
도 3b는 적어도 일부 실시예들에 따른, 블록들로 분할된 예시적인 타일을 예시한다.
도 3c는 적어도 일부 실시예들에 따른, 인코딩 전에 주파수 대역 데이터를 생성하기 위해 픽셀 데이터를 저장하는 픽셀 블록의 웨이브릿 변환을 수행하는 것을 예시한다.
도 4는 적어도 일부 실시예들에 따른, 도 1 및 도 2에 예시된 바와 같은 비디오 인코딩 시스템들을 포함하는 VR/MR 시스템들을 위한 동작의 방법의 고-레벨 흐름도이다.
도 5는 적어도 일부 실시예들에 따른, 도 1에 예시된 바와 같은 비디오 인코딩 시스템을 위한 동작의 방법의 흐름도이다.
도 6은 적어도 일부 실시예들에 따른, 도 2에 예시된 바와 같은 비디오 인코딩 시스템을 위한 동작의 방법의 흐름도이다.
도 7은 적어도 일부 실시예들에 따른, 도 1 또는 도 2 에 예시된 바와 같은 비디오 인코딩 시스템을 예시하는 블록도이며, 여기서, 주파수 대역들에 대한 복잡성 통계들이 계산되고, 인코딩을 위해 양자화 파라미터들을 생성할 때 사용된다.
도 8은 적어도 일부 실시예들에 따른, 도 7에 예시된 바와 같은 비디오 인코딩 시스템을 위한 동작의 방법의 흐름도이다.
도 9는 적어도 일부 실시예들에 따른, 비디오 인코딩 시스템을 구현할 수 있는 예시적인 VR/MR 시스템을 예시한다.
도 10은 적어도 일부 실시예들에 따른, 도 9에 예시된 바와 같은 VR/MR 시스템의 컴포넌트들을 예시하는 블록도이다.
본 명세서는 "일 실시예" 또는 "실시예"에 대한 언급들을 포함한다. "일 실시예에서" 또는 "실시예에서"라는 문구들의 등장들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 특정 특징들, 구조들 또는 특성들이 본 개시내용과 일관성을 유지하는 임의의 적합한 방식으로 조합될 수 있다.
"포함하는(Comprising)". 이러한 용어는 개방형(open-ended)이다. 청구범위에서 사용되는 바와 같이, 이러한 용어는 부가적인 구조 또는 단계들을 배제(foreclose)하지 않는다. "... 하나 이상의 프로세서 유닛들을 포함하는 장치"를 언급하는 청구항을 고려한다. 그러한 청구항은 장치가 부가적인 컴포넌트들(예를 들어, 네트워크 인터페이스 유닛, 그래픽 회로부 등)을 포함하는 것을 배제하지 않는다.
"~하도록 구성되는(configured to)". 다양한 유닛들, 회로들 또는 다른 컴포넌트들이 태스크 또는 태스크들을 수행"하도록 구성"되는 것으로 설명되거나 청구될 수 있다. 그러한 문맥들에서, "~하도록 구성되는"은 유닛들/회로들/컴포넌트들이 동작 동안에 그들 태스크 또는 태스크들을 수행하는 구조물(예를 들어, 회로부)을 포함한다는 것을 표시함으로써 구조물을 내포하는 데 사용된다. 이와 같이, 유닛/회로/컴포넌트는, 특정된 유닛/회로/컴포넌트가 현재 동작중이지 않은 경우(예를 들어, 켜진 상태가 아닌 경우)에도 태스크를 수행하도록 구성되는 것으로 칭해질 수 있다. "~하도록 구성되는"이라는 문구와 함께 사용되는 유닛들/회로들/컴포넌트들은 하드웨어 - 예를 들어, 회로들, 동작을 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 등 - 를 포함한다. 유닛/회로/컴포넌트가 하나 이상의 태스크들을 수행"하도록 구성"됨을 언급하는 것은 그 유닛/회로/컴포넌트에 대해 미국 특허법 35 U.S.C. § 112, (f) 문단 규정이 적용되지 않도록 하기 위한 의도의 명시이다. 추가로, "~하도록 구성되는"은 사안이 되는 태스크(들)를 수행할 수 있는 방식으로 동작하도록 소프트웨어 또는 펌웨어(예컨대, FPGA 또는 소프트웨어를 실행하는 범용 프로세서)에 의해 조작되는 일반 구조물(예를 들어, 일반 회로부)을 포함할 수 있다. "~하도록 구성되는"은 또한 하나 이상의 태스크들을 구현하거나 수행하도록 적응된 디바이스들(예를 들어, 집적 회로들)을 제조하도록 제조 프로세스(예를 들어, 반도체 제조 설비)를 적응하는 것을 포함할 수 있다.
"제1", "제2", 등. 본 명세서에서 사용되는 바와 같이, 이러한 용어들은 이들이 선행하고 있는 명사들에 대한 라벨들로서 사용되고, 임의의 유형의(예를 들어, 공간적, 시간적, 논리적 등) 순서를 암시하는 것은 아니다. 예를 들어, 버퍼 회로는 "제1" 및 "제2" 값들에 대한 기입 동작들을 수행하는 것으로서 본 명세서에 설명될 수 있다. 용어들 "제1" 및 "제2"는 반드시 제1 값이 제2 값 전에 기입되어야 한다는 것을 암시하지는 않는다.
"~에 기초하여" 또는 "~에 따라". 본 명세서에서 사용되는 바와 같이, 이 용어들은 결정에 영향을 주는 하나 이상의 인자들을 기술하는 데 사용된다. 이 용어들은 결정에 영향을 줄 수 있는 추가적 인자들을 배제하지 않는다. 즉, 결정은 오직 그들 인자들에만 기초하거나 또는 그들 인자들에 적어도 부분적으로 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이 경우에, B가 A의 결정에 영향을 주는 인자이기는 하지만, 그러한 문구는 A의 결정이 또한 C에도 기초하는 것임을 배제하지 않는다. 다른 예시들에서, A는 오직 B에만 기초하여 결정될 수 있다.
"또는". 청구범위에 사용될 때, 용어 "또는"은 포괄적인 '또는'으로서 사용되고 배타적인 '또는'으로서 사용되지 않는다. 예를 들어, 문구 "x, y, 또는 z 중 적어도 하나"는 x, y, 및 z 중 어느 하나뿐만 아니라 이들의 임의의 조합을 의미한다.
비디오 인코딩 시스템의 다양한 실시예들이 설명된다. 디코딩 및 디스플레이를 위한 디바이스로의 통신 링크(예컨대, 무선 링크)를 통한 송신을 위해 낮은 레이턴시들로 고-해상도 비디오 소스들을 인코딩할 수 있는 비디오 인코딩 시스템의 실시예들이 설명된다. 비디오 인코딩 시스템의 실시예들은 또한, 통신 링크의 채널 용량의 변화들과 같은 변화되는 조건들에서 원하는 프레임 레이트를 유지하기 위해, 디바이스에 송신되는 인코딩된 비디오의 완만한 열화를 제공할 수 있다.
비디오 인코딩 시스템의 예시적인 애플리케이션은 가상 또는 혼합 현실 시스템들에 있으며, 여기서, 가상 콘텐츠를 보유하는 비디오 프레임들이 렌더링, 인코딩, 및 디코딩 및 디스플레이를 위해 디바이스로 송신된다. 가상 또는 혼합 현실 시스템(본원에서는 VR/MR 시스템으로 지칭됨)의 실시예들이 설명되며, 여기서, 비디오 인코딩 시스템의 실시예들이 구현될 수 있다. 일부 실시예들에서, VR/MR 시스템은 디바이스(예컨대, 패드 또는 태블릿 디바이스, 스마트폰, 또는 본원에서는 헤드-마운트 디스플레이(HMD)로 지칭되는, 사용자에 의해 착용되는 헤드셋, 헬멧, 고글, 또는 안경), 및 본원에서는 기지국으로 지칭되는 별개의 컴퓨팅 디바이스를 포함할 수 있다. 일부 실시예들에서, 디바이스 및 기지국은 각각, 디바이스 및 기지국이 무선 연결을 통해 데이터를 통신 및 교환할 수 있게 하는 무선 통신 기술을 포함할 수 있다. 일부 실시예들에서, 디바이스는 사용자의 환경에 대한 정보(예컨대, 비디오, 깊이 정보, 조명 정보 등), 및 사용자에 대한 정보(예컨대, 사용자의 표정들, 눈 움직임, 손 제스처들 등)를 수집하는 센서들을 포함할 수 있다. 센서들에 의해 수집된 정보는 무선 연결을 통해 기지국으로 송신될 수 있다. 기지국은, 무선 연결을 통해 디바이스로부터 수신된 센서 정보에 적어도 부분적으로 기초하여, 가상 콘텐츠를 포함하는 프레임들을 생성 및 렌더링하도록 구성된 소프트웨어 및 하드웨어(예컨대, 프로세서들(시스템 온 칩(system on a chip, SOC), CPU들, 이미지 신호 프로세서(ISP)들, 그래픽 프로세싱 유닛(GPU)들, 인코더/디코더(codec)들 등), 메모리 등)를 포함할 수 있다. 기지국은 또한, 렌더링된 프레임들을 사전-필터링, 압축, 및 무선 연결을 통해 디스플레이를 위해 디바이스로 송신할 수 있는, 본원에서 설명되는 바와 같은 비디오 인코딩 시스템의 실시예를 포함할 수 있다.
일부 실시예들에서, VR/ MR 시스템은 디바이스와 기지국 사이에 고 지향성 무선 링크를 제공하는 독점적인 무선 통신 기술을 구현할 수 있다. 일부 실시예들에서, 무선 통신 기술의 지향성 및 대역폭은 기지국과 통신하는 다수의 디바이스들을 동시에 지원하여, 다수의 사용자들이 공동-위치된 환경에서 동시에 시스템을 사용하는 것을 가능하게 할 수 있다. 그러나, 일부 실시예들에서, 다른 상업적(예컨대, Wi-Fi, 블루투스 등) 또는 독점적인 무선 통신 기술들이 지원될 수 있다.
무선 링크에 대해 고려되어야 하는 주요 제약들은 대역폭 및 레이턴시를 포함한다. VR/MR 시스템의 목표는 사용자에게 고-품질 VR/MR 뷰를 제공하기 위한 프레임 레이트로 고 해상도의 넓은 시야(field of view, FOV)의 가상 디스플레이를 제공하는 것이다. 다른 목표는 기지국에 의해 프레임이 렌더링된 시간과 디바이스에 의해 프레임이 디스플레이되는 시간 사이의 레이턴시를 최소화하는 것이다. 그러나, 무선 링크의 채널 용량은 시간에 따라 변화될 수 있고, 그에 따라, 무선 링크는 임의의 주어진 시간에 송신될 특정 양의 정보만을 지원할 수 있다.
무선 링크를 통해 목표 프레임 레이트를 유지하고, 프레임 렌더링, 송신, 및 디스플레이에서 레이턴시를 최소화하기 위해 비디오 인코딩 시스템에 의해 구현될 수 있는 다양한 방법들 및 장치가 본원에서 설명된다. 부가하여, 방법들 및 장치는, 통신 링크의 채널 용량의 변화들과 같은 변화되는 조건들에서 원하는 프레임 레이트를 유지하기 위해, 디바이스에 송신되는 인코딩된 비디오의 완만한 열화를 제공할 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은 픽셀 데이터를 주파수 대역들로 분해하기 위해, 인코딩 전에, 픽셀 데이터에 대해 웨이브릿 변환을 수행할 수 있다. 이어서, 주파수 대역들은 인코딩/압축을 위해 블록-기반 인코더에 제공되는 블록들로 구성된다. 예로서, 프레임은 128x128 블록들로 분할될 수 있고, 2-레벨 웨이브릿 분해가 각각의 128x128 블록에 적용되어, 7개의 주파수 대역들을 나타내는 주파수 데이터의 16개의 32x32 블록들이 생성될 수 있으며, 이어서, 16개의 32x32 블록들은 인코딩되기 위해 인코더(예컨대, 고 효율 비디오 코딩(High Efficiency Video Coding, HEVC) 인코더)로 전송될 수 있다. 이어서, 인코딩된 주파수 데이터는 무선 인터페이스로 전송되며, 무선 인터페이스는 인코딩된 주파수 데이터를 패킷화하고, 패킷들을 수신 디바이스(예컨대, HMD, 패드 또는 태블릿 디바이스, 스마트폰 등)로 송신한다. 수신 디바이스 상에서, 인코딩된 데이터는 역-패킷화(de-packetize)되고, 블록-기반 디코더를 통해 통과되어, 주파수 대역들이 복구된다. 이어서, 디스플레이를 위해 픽셀 데이터를 재구성하기 위해, 복구된 주파수 대역들에 대해 웨이브릿 합성이 수행된다.
웨이브릿 변환이 비디오 프레임으로부터의 각각의 픽셀 블록에 적용되는 2-레벨 웨이브릿 분해인 실시예들이 일반적으로 설명되지만, 다양한 실시예들에서, 웨이브릿 분해는 임의의 수의 레벨들(예컨대 1개의 레벨, 2개의 레벨들, 3개의 레벨들, 4개의 레벨들 등)일 수 있고, 인코딩될 블록들의 복잡성에 대해 인코딩된 이미지의 품질을 트레이드-오프하도록 조정될 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은 슬라이스-기반 렌더링, 인코딩, 및 송신을 수행할 수 있다. 전체 프레임들을 렌더링, 인코딩, 및 송신하는 것은, 각각의 프레임이 완료되고, 저장되고, 이어서 VR/MR 시스템의 다음 스테이지로 전송될 필요가 있기 때문에, 레이턴시 및 메모리에 영향을 미칠 수 있다. 슬라이스-기반 렌더링에서, 기지국에서 전체 프레임들을 렌더링 및 인코딩하고 렌더링된 프레임들을 디바이스로 송신하는 것이 아니라, 기지국은 프레임들의 부분들(슬라이스들로 지칭됨)을 렌더링 및 인코딩하고, 인코딩된 슬라이스들을 이들이 준비되는 대로 디바이스로 송신할 수 있다. 슬라이스는, 예컨대, 128x128 블록들의 행, 또는 블록들의 2개 이상의 행들일 수 있다. 슬라이스-기반 렌더링 및 인코딩은 레이턴시를 감소시키는 것을 도울 수 있고, 또한, 버퍼링에 필요한 메모리의 양을 감소시킬 수 있으며, 이는 칩(들) 또는 프로세서(들) 상의 메모리 풋프린트 뿐만 아니라 전력 요건들을 감소시킬 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은 타일-기반 렌더링, 인코딩, 및 송신을 수행할 수 있다. 타일-기반 렌더링, 인코딩, 및 송신에서, 각각의 슬라이스는 다수의 타일들(예컨대, 4개의 타일들)로 분할될 수 있고, 기지국은 타일들을 렌더링 및 인코딩하고, 인코딩된 타일들을 이들이 준비되는 대로 디바이스로 송신할 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은 각각의 슬라이스로부터의 타일들을 프로세싱하기 위해, 단일 인코더를 사용하여, 타일-기반 인코딩을 수행할 수 있다. 그러나, 일부 실시예들에서, 비디오 인코딩 시스템은 각각의 슬라이스로부터의 각각의 타일들을 프로세싱하기 위해, 다수의 인코더들을 사용하여, 타일-기반 인코딩을 수행할 수 있다. 예컨대, 일부 실시예들에서, 각각의 슬라이스는 4개의 타일들로 분할될 수 있으며, 각각의 타일은 다수의 128x128 블록들을 포함하고, 2개의 인코더들(e0 및 e1)은 각각의 슬라이스로부터의 2개의 타일들에 대해 동작할 수 있다(예컨대, e0는 t0 및 t1에 대해 동작하고; e1은 t2 및 t3에 대해 동작함). 각각의 인코더는 각각의 인코더의 2개의 타일들 사이에서 상이한 주파수 대역들로부터의 블록들의 프로세싱을 다중화하여, 동일한 주파수 대역으로부터의 블록들의 프로세싱 사이에 16개의 시간 유닛들을 가능하게 할 수 있다. 2개의 타일들 사이에서 블록들의 프로세싱을 다중화함으로써, 주파수 대역 내의 블록들 사이의 종속성들이 적절히 핸들링될 수 있다. 각각의 슬라이스가 4개의 타일들로 분할되고, 2개의 인코더들이 각각의 슬라이스로부터의 각각의 타일들에 대해 동작하는 실시예들이 설명되지만, 일부 실시예들에서, 슬라이스들은 더 많은 타일들(예컨대, 6개 또는 8개의 타일들)로 분할될 수 있고, 일부 실시예들에서, 더 많은 인코더들(예컨대, 3개 또는 4개의 인코더들)이 사용될 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은 웨이브릿 변환 전에 프레임들 내의 픽셀 데이터의 사전-필터링을 수행할 수 있다. 사전-필터링은, 예컨대, 웨이브릿 변환, 인코딩, 및 무선 링크를 통한 디바이스로의 프레임들의 송신을 수행하기 전에, 기지국에 의해 렌더링된 프레임들의 해상도를 감소시킬 수 있으며, 이는 압축을 개선하는 것을 도울 수 있고, 무선 링크 상의 레이턴시 및 대역폭 사용을 감소시킬 수 있다.
디바이스가 HMD인 일부 실시예들에서, 사전-필터링은 웨이브릿 변환 전에 기지국 상에서 프레임들에 대해 렌즈 워핑을 수행하는 것을 포함할 수 있다. 렌즈 워핑은 이미지들이 뷰잉되는 HMD 상의 렌즈들에 의해 도입된 이미지들의 왜곡을 보정하여 이미지들의 품질을 개선하기 위해 수행된다. 일부 실시예들에서, HMD는, 예컨대, 교정 프로세스에 의해 생성된 렌즈들에 대한 렌즈 워핑 데이터를 저장할 수 있고, 무선 연결을 통해 기지국에 렌즈 워핑 데이터를 제공할 수 있다. 이어서, 기지국은 그 HMD 대한 렌즈 워핑 데이터에 기초하여 프레임들에 대해 렌즈 워핑을 수행할 수 있다. 종래의 VR/MR 시스템들에서, 렌즈 워핑은 디코딩 후 및 디스플레이 전에 HMD 상에서 수행된다. 사전-필터 스테이지에서 기지국 상에서 렌즈 워핑을 수행하는 것은 웨이브릿 변환 및 인코딩을 수행하기 전에 프레임들의 해상도를 감소시킬 수 있으며, 이는 압축을 개선하는 것을 도울 수 있고, 무선 링크 상의 레이턴시 및 대역폭 사용을 감소시킬 수 있다. 부가하여, 디코딩 후에 HMD 상에서 렌즈 워핑을 수행하는 것이 아니라, 사전-필터 스테이지에서 기지국 상에서 렌즈 워핑을 수행함으로써, 인코딩 전에 해상도를 감소시키기 위해 기지국 상에서 필터링을 수행한 후에 HMD 상에서 렌즈 워핑 필터링을 수행하는 것과 대조적으로, 이미지 데이터의 필터링이 한 번만 수행될 필요가 있을 수 있다.
일부 실시예들에서, 사전-필터링은, 중심와 영역들에서 더 높은 해상도를 유지하면서 주변 영역들에서 해상도를 감소시키기 위한 필터링을 포함할 수 있다. 이 방법에서, 디바이스로부터 획득된 시선 추적 정보는 사용자가 현재 보고 있는 방향을 식별하는 데 사용될 수 있다. 인간의 눈들은 주변 영역에서보다 중심와 영역에서 더 높은 해상도를 인지할 수 있다. 따라서, 중심와에 대응하는 프레임의 영역(중심와 영역으로 지칭됨)은 결정된 시선 방향에 적어도 부분적으로 기초하여 식별될 수 있다. 일부 실시예들에서, 주변 영역(즉, 중심와 영역 외부의 프레임의 부분)은, 예컨대, 고 주파수 정보를 필터링하고/하거나 컬러 압축을 증가시킴으로써, 인간 시각 시스템의 지식에 기초하여 정보를 감소시키기 위해 사전-필터링될 수 있다. 일부 실시예들에서, 주변 영역에 적용되는 필터링의 양은 프레임의 주변부 쪽으로 확장하여 증가될 수 있다. 주변 영역의 사전-필터링은 프레임의 개선된 압축을 제공하는 것을 도울 수 있다.
도 1은 적어도 일부 실시예들에 따른, 인코딩 전에 웨이브릿 변환을 사용하여 픽셀 데이터를 주파수 대역들로 분해하는 비디오 인코딩 시스템(120)을 예시하는 블록도이다. VR/MR 시스템(10)은 적어도 하나의 디바이스(150)(예컨대, 패드 또는 태블릿 디바이스, 스마트폰, 또는 사용자에 의해 착용될 수 있는 HMD, 이를테면 헤드셋, 헬멧, 고글, 또는 안경), 및 컴퓨팅 디바이스(100)(본원에서 기지국으로 지칭됨)를 포함할 수 있다. 기지국(100)은 가상 콘텐츠를 포함하는 VR 또는 MR 프레임들을 렌더링하고, 프레임들을 인코딩하고, 디바이스(150)에 의한 디코딩 및 디스플레이를 위해, 인코딩된 프레임들을 무선 연결(180)을 통해 디바이스(150)로 송신한다.
일부 실시예들에서, 디바이스(150)는 사용자(190)의 환경에 관한 정보(예컨대, 비디오, 깊이 정보, 조명 정보 등), 및 사용자(190)에 관한 정보(예컨대, 사용자의 표정들, 눈 움직임, 시선 방향, 손 제스처들 등)를 수집하는 센서들(160)을 포함할 수 있다. 디바이스(150)는 센서들(160)에 의해 수집된 정보의 적어도 일부를 무선 연결(180)을 통해 기지국(100)으로 송신할 수 있다. 기지국(100)은, 센서들(160)로부터 획득된 다양한 정보에 적어도 부분적으로 기초하여, 디바이스(150)에 의한 디스플레이를 위해, 가상 콘텐츠를 포함하는 프레임들을 렌더링하고, 프레임들을 인코딩하고, 디코딩 및 사용자에 대한 디스플레이를 위해, 인코딩된 프레임들을 무선 연결(180)을 통해 디바이스(150)로 송신할 수 있다.
기지국(100) 및 디바이스(150)는 기지국(100) 및 디바이스(150)가 무선 연결(180)을 통해 데이터를 통신 및 교환할 수 있게 하는 무선 통신 기술을 구현할 수 있다. 일부 실시예들에서, 무선 연결(180)은 디바이스(150)와 기지국(100) 사이에 고 지향성 무선 링크를 제공하는 독점적인 무선 통신 기술에 따라 구현될 수 있다. 그러나, 일부 실시예들에서, 다른 상업적(예컨대, Wi-Fi, 블루투스 등) 또는 독점적인 무선 통신 기술들이 사용될 수 있다.
VR/MR 시스템(10)에서 디바이스(150)와 기지국(100) 사이의 무선 연결(180)에 대해 고려되어야 하는 주요 제약들은 대역폭 및 레이턴시를 포함한다. 예컨대, 일부 실시예들에서, 목표는 사용자에게 고-품질 VR/MR 뷰를 제공하는 프레임 레이트로 사용자에게 고 해상도의 넓은 시야(field of view, FOV)의 가상 디스플레이를 제공하는 것이다. 다른 목표는 디바이스에 의해 비디오 프레임이 캡처된 시간과 비디오 프레임에 기초한 렌더링된 VR/MR 프레임이 디바이스에 의해 디스플레이되는 시간 사이의 레이턴시를 최소화하는 것이다.
기지국(100)은 본원에서 설명되는 바와 같이 비디오 및/또는 이미지들을 렌더링, 필터링, 인코딩, 및 송신하기 위한 다양한 하드웨어 컴포넌트들, 예컨대, 다양한 타입의 프로세서들, 집적 회로(IC)들, 중앙 프로세싱 유닛(CPU)들, 그래픽 프로세싱 유닛(GPU)들, 이미지 신호 프로세서(ISP)들, 인코더/디코더(codec)들 등을 포함할 수 있다.기지국(100)은, 무선 연결(180)을 통해 목표 프레임 레이트를 유지하고, 프레임 렌더링, 인코딩, 송신, 및 디스플레이에서의 레이턴시를 최소화하는 것을 도울 수 있는 다양한 방법들을 구현하는 하나 이상의 하드웨어 컴포넌트들을 포함할 수 있는, GPU 렌더링(110) 컴포넌트, 무선 인터페이스(130) 컴포넌트, 및 비디오 인코딩 시스템(120)을 포함할 수 있다(그러나 이에 제한되지는 않음). 비디오 인코딩 시스템(120)은 사전-필터(122) 컴포넌트(예컨대, N-채널 필터 뱅크), 웨이브릿 변환(124) 컴포넌트, 및 인코더(126) 컴포넌트를 포함할 수 있다(그러나 이에 제한되지는 않음).
GPU 렌더링(110)은, 센서들(160)로부터 획득된 다양한 정보에 적어도 부분적으로 기초하여, 디바이스(150)에 의한 디스플레이를 위해, 가상 콘텐츠를 포함하는 프레임들을 렌더링할 수 있는 하나 이상의 하드웨어 컴포넌트들을 포함할 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템(120)은, 웨이브릿 변환(124)을 수행하기 전에, 렌더링된 프레임들 내의 픽셀 데이터를 사전-필터링(122)하는 하나 이상의 하드웨어 컴포넌트들을 포함할 수 있다. 사전-필터(122)는, 예컨대, 웨이브릿 변환(124), 인코딩(126), 및 무선 연결(180)을 통한 디바이스(150)로의 송신을 수행하기 전에, 기지국(100) 상에서 렌더링된 프레임들의 해상도를 감소시킬 수 있으며, 이는 압축을 개선하는 것을 도울 수 있고, 무선 연결(180) 상의 레이턴시 및 대역폭 사용을 감소시킬 수 있다.
일부 실시예들에서, 사전-필터(122)는 웨이브릿 변환(124) 전에 기지국(100) 상에서 프레임들에 대해 렌즈 워핑을 수행할 수 있다. 렌즈 워핑은 이미지들이 뷰잉되는 디바이스 상의 렌즈들에 의해 도입된 이미지들의 왜곡을 보정하여 이미지들의 품질을 개선하기 위해 수행된다. 일부 실시예들에서, 디바이스(150)는, 예컨대, 교정 프로세스에 의해 생성된 렌즈들에 대한 렌즈 워핑 데이터를 저장할 수 있고, 무선 연결(180)을 통해 기지국(100)에 렌즈 워핑 데이터를 제공할 수 있다. 이어서, 비디오 인코딩 시스템(120)의 사전-필터(122) 컴포넌트는 그 디바이스(150)에 대한 렌즈 워핑 데이터에 기초하여 프레임들에 대해 렌즈 워핑을 수행할 수 있다. 종래의 VR/MR 시스템들에서, 렌즈 워핑은 디코딩 후 및 디스플레이 전에 디바이스(150) 상에서 수행된다. 사전-필터(122) 스테이지에서 기지국(100) 상에서 렌즈 워핑을 수행하는 것은 웨이브릿 변환(124) 및 인코딩(126)을 수행하기 전에 프레임들의 해상도를 감소시킬 수 있으며, 이는 압축을 개선하는 것을 도울 수 있고, 무선 연결(180) 상의 레이턴시 및 대역폭 사용을 감소시킬 수 있다. 부가하여, 디코딩 후에 디바이스(150) 상에서 렌즈 워핑을 수행하는 것이 아니라, 사전-필터(122) 스테이지에서 기지국(100) 상에서 렌즈 워핑을 수행함으로써, 인코딩(126) 전에 해상도를 감소시키기 위해 기지국(100) 상에서 필터링을 수행한 후에 디바이스(150) 상에서 렌즈 워핑 필터링을 수행하는 것과 대조적으로, 이미지 데이터의 필터링이 한 번만 수행될 필요가 있을 수 있다.
일부 실시예들에서, 사전-필터(122)는 또한, 중심와 영역들에서 더 높은 해상도를 유지하면서 주변 영역들에서 해상도를 감소시키기 위해 하나 이상의 필터들을 적용할 수 있다. 이 방법에서, 디바이스(150)로부터 획득된 시선 추적 정보는 사용자가 현재 보고 있는 방향을 식별하는 데 사용될 수 있다. 인간의 눈들은 주변 영역에서보다 중심와 영역에서 더 높은 해상도를 인지할 수 있다. 따라서, 중심와에 대응하는 프레임의 영역(중심와 영역으로 지칭됨)은 결정된 시선 방향에 적어도 부분적으로 기초하여 식별될 수 있다. 일부 실시예들에서, 주변 영역(즉, 중심와 영역 외부의 프레임의 부분)은, 예컨대, 고 주파수 정보를 필터링하고/하거나 컬러 압축을 증가시킴으로써, 인간 시각 시스템의 지식에 기초하여 정보를 감소시키기 위해 사전-필터링될 수 있다. 일부 실시예들에서, 주변 영역에 적용되는 필터링의 양은 프레임의 주변부 쪽으로 확장하여 증가될 수 있다. 주변 영역의 사전-필터링은 프레임의 개선된 압축을 제공하는 것을 도울 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템(120)의 웨이브릿 변환(124) 컴포넌트는, 픽셀 데이터를 주파수 대역들로 분해하기 위해, 인코딩 전에, 픽셀 데이터에 대해 웨이브릿 변환을 수행하는 하나 이상의 하드웨어 컴포넌트들(예컨대, N-채널 필터 뱅크)을 포함할 수 있다. 이어서, 주파수 대역들은 인코딩/압축을 위해 블록-기반 인코더(126)에 제공되는 블록들로 구성된다. 예로서, 도 3a 내지 도 3c에 예시된 바와 같이, 프레임은 128x128 블록들로 분할될 수 있고, 2-레벨 웨이브릿 분해가 각각의 128x128 블록에 적용되어, 7개의 주파수 대역들을 나타내는 주파수 데이터의 16개의 32x32 블록들이 생성될 수 있으며, 이어서, 16개의 32x32 블록들은 인코딩되기 위해 블록-기반 인코더(예컨대, 고 효율 비디오 코딩(High Efficiency Video Coding, HEVC) 인코더)(126)로 전송될 수 있다. 이어서, 인코딩된 주파수 데이터는 무선 인터페이스(130)로 전송되며, 무선 인터페이스(130)는 하나 이상의 하드웨어 컴포넌트들에 의해 구현되고, 데이터를 패킷화하여 패킷들을 무선 연결(180)을 통해 디바이스(150)로 송신한다.
디바이스(150)는 본원에서 설명되는 바와 같이 비디오 및/또는 이미지들을 디코딩 및 디스플레이하기 위한 다양한 하드웨어 컴포넌트들, 예컨대, 다양한 타입의 프로세서들, 집적 회로(IC)들, 중앙 프로세싱 유닛(CPU)들, 그래픽 프로세싱 유닛(GPU)들, 이미지 신호 프로세서(ISP)들, 인코더/디코더(codec)들 등을 포함할 수 있다. 디바이스(150)는 무선 인터페이스(152), 디코더(154) 컴포넌트(예컨대, 고 효율 비디오 코딩(HEVC) 디코더), 웨이브릿 합성(156) 컴포넌트, 및 디스플레이(158) 컴포넌트를 포함할 수 있다(그러나 이에 제한되지는 않음). 디바이스(150) 상에서, 무선 인터페이스(152)는 기지국(100)에 의해 무선 연결(180)을 통해 송신되었던 패킷들을 수신한다. 인코딩된 데이터는 역-패킷화되고, 블록-기반 디코더(154)(예컨대, 고 효율 비디오 코딩(HEVC) 디코더)를 통해 통과되어, 주파수 대역들이 복구된다. 이어서, 디스플레이(158)를 위해 픽셀 데이터를 재구성하기 위해, 복구된 주파수 데이터에 대해 웨이브릿 합성(156)이 수행된다.
일부 실시예들에서, 비디오 인코딩 시스템(120)은 슬라이스-기반 렌더링, 인코딩, 및 송신을 수행할 수 있다. 전체 프레임들을 렌더링, 인코딩, 및 송신하는 것은, 각각의 프레임이 완료되고, 저장되고, 이어서 VR/MR 시스템(10)의 다음 스테이지로 전송될 필요가 있기 때문에, 레이턴시 및 메모리에 영향을 미칠 수 있다. 슬라이스-기반 렌더링에서, 기지국(100)에서 전체 프레임들을 렌더링 및 인코딩하고 렌더링된 프레임들을 디바이스(150)로 송신하는 것이 아니라, 기지국(100)은 프레임들의 부분들(슬라이스들로 지칭됨)을 렌더링 및 인코딩하고, 인코딩된 슬라이스들을 이들이 준비되는 대로 디바이스(150)로 송신할 수 있다. 슬라이스는, 예컨대, 128x128 블록들의 행일 수 있다. 슬라이스-기반 렌더링 및 인코딩은 레이턴시를 감소시키는 것을 도울 수 있고, 또한, 버퍼링에 필요한 메모리의 양을 감소시킬 수 있으며, 이는 칩(들) 또는 프로세서(들) 상의 메모리 풋프린트 뿐만 아니라 전력 요건들을 감소시킨다.
일부 실시예들에서, 비디오 인코딩 시스템(120)은 타일-기반 렌더링, 인코딩, 및 송신을 수행할 수 있다. 타일-기반 렌더링, 인코딩, 및 송신에서, 각각의 슬라이스는 다수의 타일들(예컨대, 4개의 타일들)로 분할될 수 있고, 기지국(100)은 타일들을 렌더링 및 인코딩하고, 인코딩된 타일들을 이들이 준비되는 대로 디바이스(150)로 송신할 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템(120)은 각각의 슬라이스로부터의 타일들을 프로세싱하기 위해, 단일 인코더(126)를 사용하여, 타일-기반 렌더링, 인코딩, 및 송신을 수행할 수 있다. 그러나, 일부 실시예들에서, 비디오 인코딩 시스템(120)은 각각의 슬라이스로부터의 각각의 타일들을 프로세싱하기 위해, 다수의 인코더들(126)을 사용하여, 타일-기반 인코딩을 수행할 수 있다. 도 2는 적어도 일부 실시예들에 따른, 렌더링된 프레임들로부터의 타일들을 병렬로 프로세싱하는 다수의 인코더들(본 예에서는 2개의 인코더들(226A, 226B))을 포함하는 비디오 인코딩 시스템(220)을 예시한다.
기지국(200)의 GPU 렌더링(210) 컴포넌트는 디스플레이를 위해 프레임들(또는 프레임들의 슬라이스들)을 렌더링하는 하나 이상의 GPU들 및/또는 다른 컴포넌트들을 포함할 수 있다. 프레임은, 예컨대, 도 3a에 예시된 바와 같이 슬라이스들로 분할될 수 있다. 도 3a에 예시된 바와 같이, 각각의 슬라이스는 다수의 타일들(본 예에서는 4개)로 분할될 수 있고, 각각의 타일은 다수의 블록들을 포함한다. 도 3b는 4개의 128x128 블록들을 포함하는 예시적인 타일을 예시한다. 그러나, 일부 실시예들에서, 다른 사이즈들(예컨대, 64x64, 32x32 등)의 블록들이 사용될 수 있고, 타일은 더 많거나 또는 더 적은 블록들을 포함할 수 있다.
이어서, 비디오 인코딩 시스템(220)의 사전-필터(222) 및 웨이브릿 변환(224) 컴포넌트들은 인코딩(226) 전에 각각의 타일을 프로세싱할 수 있다. 일부 실시예들에서, 비디오 인코딩 시스템(220)은 각각의 타일을 프로세싱하기 위해 별개의 사전-필터(222) 컴포넌트 및 웨이브릿 변환(224) 컴포넌트를 포함할 수 있다. 이 예에서, 사전-필터(222A) 컴포넌트 및 웨이브릿 변환(224A) 컴포넌트는 타일 0을 프로세싱하고, 사전-필터(222B) 컴포넌트 및 웨이브릿 변환(224B) 컴포넌트는 타일 1을 프로세싱하고, 사전-필터(222C) 컴포넌트 및 웨이브릿 변환(224C) 컴포넌트는 타일 2를 프로세싱하고, 사전-필터(222D) 컴포넌트 및 웨이브릿 변환(224D) 컴포넌트는 타일 3을 프로세싱한다. 사전-필터(222) 컴포넌트는 본원에서 설명되는 바와 같이 타일들의 사전-필터링을 수행하고, 웨이브릿 변환(224) 컴포넌트는 본원에서 설명되는 바와 같이 타일들을 주파수 대역들로 분해한다. 그러나, 일부 실시예들에서, 비디오 인코딩 시스템(220)은, 타일들을 프로세싱하는, 단일 사전-필터(222) 컴포넌트 및 단일 웨이브릿 변환(224) 컴포넌트를 포함할 수 있다. 일부 실시예들에서, 비디오 인코딩 시스템(220)은, 다수의(예컨대, 2개의) 타일들을 각각 프로세싱하는, 다수의(예컨대, 2개의) 사전-필터(222) 컴포넌트들 및 다수의(예컨대, 2개의) 웨이브릿 변환(224) 컴포넌트들을 포함할 수 있다.
2개의 인코더들(226A 및 226B)은 각각의 슬라이스로부터의 2개의 타일들에 대해 동작할 수 있다(예컨대, 인코더(226A)는 타일 0 및 타일 1에 대해 동작하고; 인코더(226B)는 타일 2 및 타일 3에 대해 동작함). 각각의 인코더(226)는 각각의 인코더(226)의 2개의 타일들 사이에서 상이한 주파수 대역들로부터의 블록들(즉, 도 3c에 예시된 16개의 32x32 블록들)의 프로세싱을 다중화하여, 동일한 주파수 대역으로부터의 블록들의 프로세싱 사이에 16개의 시간 유닛들을 가능하게 할 수 있다. 2개의 타일들 사이에서 블록들의 프로세싱을 다중화함으로써, 동일한 주파수 대역 내의 블록들 사이의 종속성들이 적절히 핸들링될 수 있다.
각각의 슬라이스가 4개의 타일들로 분할되고, 2개의 인코더들이 각각의 슬라이스로부터의 각각의 타일들에 대해 동작하는 실시예들이 설명되지만, 일부 실시예들에서, 슬라이스들은 더 많은 타일들(예컨대, 6개 또는 8개의 타일들)로 분할될 수 있고, 일부 실시예들에서, 더 많은 인코더들(예컨대, 3개, 4개, 또는 그 이상의 인코더들)이 사용될 수 있다.
도 3c는 적어도 일부 실시예들에 따른, 인코딩 전에 주파수 대역 데이터를 생성하기 위해 픽셀 데이터를 저장하는 픽셀 블록의 웨이브릿 변환을 수행하는 것을 예시한다. 이 예에서, 웨이브릿 변환(324) 컴포넌트에 의해 2-레벨 웨이브릿 분해가 128x128 픽셀 블록(300)에 적용되어, 7개의 주파수 대역들을 나타내는 주파수 데이터의 16개의 32x32 블록들(302)이 생성된다. 이어서, 주파수 블록들(302)은 인코딩을 위해 인코더(326)에 제공된다. 예컨대, 주파수 블록들(302)은 웨이브릿 변환(324) 컴포넌트에 의해 버퍼에 기록되고, 인코더(326) 컴포넌트에 의해 버퍼로부터 판독될 수 있다.
주파수 블록들(302)의 라벨들에서, 문자 L은 로우 패스 필터를 나타내고, 문자 H는 하이 패스 필터를 나타낸다. 2개의 문자들로 라벨링된 블록들(302)은 1-레벨(2D) 웨이브릿 변환 또는 분해를 나타낸다. 2개의 문자들로 라벨링된 블록들(302)(7개의 주파수 대역들 중 3개(LH, HL, 및 HH)를 나타냄)에서, 제1 문자는 첫번째로 수행된 수직 필터(하이 또는 로우)를 나타내고, 제2 문자는 두번째로 수행된 수평 필터(하이 또는 로우)를 나타낸다. 4개의 문자들로 라벨링된 블록들(302)은 2-레벨 웨이브릿 변환 또는 분해를 나타낸다. 4개의 문자들로 라벨링된 블록들(302)에서, 첫번째 2개의 문자들(LL)은 첫번째로 수직 로우 패스 필터에 이은 수평 로우 패스 필터가 수행된 것을 나타내고; 두번째 2개의 문자들은, 이어서, 결과적인 LL 블록이 4개의 방식들(LL, LH, HL, 및 HH)로 필터링된 것을 나타내며, 그에 따라, 7개의 주파수 대역들 중 4개(LLLL, LLLH, LLHL, 및 LLHH)가 생성된다.
도 3c에 예시된 바와 같이 픽셀 데이터를 주파수 대역들로 분해하는 것은 주파수 대역들이 인코더(326)에 의해 별개의 스트림들로서 버퍼링 및 프로세싱될 수 있게 한다. 주파수 대역들을 별개의 스트림들로서 프로세싱하는 것은 인코더(326) 컴포넌트가 독립적인 스트림들의 프로세싱을 다중화할 수 있게 한다. HEVC 인코딩과 같은 블록-기반 인코딩 방법들에서, 블록들(코딩 트리 유닛(coding tree unit, CTU)들로 지칭됨)은 다수의 스테이지들에서 블록 프로세싱 파이프라인에서 프로세싱되고; 2개 이상의 블록들은 주어진 클록 사이클에서 파이프라인의 상이한 스테이지들에 있을 수 있고, 블록들은 클록 사이클들로서 파이프라인을 통해 이동한다. 주어진 블록의 프로세싱은 하나 이상의 이전에 프로세싱된 이웃 블록들, 예컨대, 주어진 블록 위의 행에서의 하나 이상의 블록들 및/또는 주어진 블록의 좌측에 있는 블록에 대해 종속성들을 가질 수 있다. 주파수 대역 데이터의 스트림들의 프로세싱을 다중화함으로써, 인코더(326)는 주어진 스트림에서의 블록들의 프로세싱 사이에 간격을 두어, 주어진 블록이 종속성들을 갖는 이웃 블록을 프로세싱하기 위한 부가적인 클록 사이클들을 제공한다. 예컨대, 주어진 블록의 좌측에 있는 블록은, 주어진 블록이 이전에 프로세싱된 이웃 블록에 종속되는 스테이지에 도달할 때, 파이프라인에서 주어진 블록보다 여러 스테이지들만큼 앞서 있을 수 있다. 이는 인코더(326)가 이전에 프로세싱된 블록들에 대한 종속성들을 더 양호하게 핸들링할 수 있게 하고, 이웃 블록에 종속되는 스테이지에서 주어진 블록을 프로세싱하기 전에 파이프라인에서 이웃 블록의 프로세싱의 완료를 기다릴 필요성을 감소 또는 제거한다.
부가하여, 도 3c에 예시된 바와 같이 픽셀 데이터를 주파수 대역들로 분해하는 것은 주파수 대역들이 인코더(326) 및 무선 인터페이스에 의해 우선순위화될 수 있게 한다. 전형적으로, 이미지 및 비디오 송신에서, 더 낮은 주파수들이 더 중요하고, 더 높은 주파수들은 덜 중요하다. 더 높은 주파수들은 일반적으로, 이미지 내의 세부사항들에 대응하고, 그에 따라, 더 낮은 우선순위로서 간주될 수 있다. 더 높은 주파수 대역들은 이미지에서의 에너지의 더 작은 퍼센트를 보유한다. 에너지의 대부분은 더 낮은 주파수 대역들에서 보유된다. 따라서, 픽셀 데이터를 주파수 대역들로 분해하는 것은, 데이터 스트림을 인코딩 및 송신할 때, 인코더(326) 및 무선 인터페이스에 의해 레버리징(leverage)될 수 있는 데이터 스트림에 우선순위 순서화를 제공한다. 예컨대, 일부 실시예들에서, 상이한 압축 기법들이 상이한 주파수 대역들에 사용될 수 있으며, 더 낮은 우선순위 대역들에 더 적극적인 압축이 적용되고, 더 높은 우선순위 대역들에 더 보수적인 압축이 적용된다. 다른 예로서, 주파수 대역들의 우선순위 순서화는 VR/MR 시스템의 완만한 열화를 제공하는 것을 도울 수 있다. 무선 연결의 성능이 모니터링될 수 있고, 디바이스로부터의 피드백이 전체 시스템의 성능을 추적하기 위해 고려될 수 있다. 시스템이 일부 이유로 낙후되는 경우, 예컨대, 무선 연결이 열화되고, 무선 연결의 대역폭 용량이 임계치 미만으로 떨어지면, 인코더(326) 및 무선 인터페이스는 더 낮은 주파수 대역들 중 하나 이상의 인코딩 및 송신을 우선순위화할 수 있고, 더 낮은 우선순위 레벨이 할당된 주파수 레벨들 중 하나 이상, 예컨대, 더 높은 주파수 대역들 중 하나 이상의 인코딩 및/또는 송신을 감소 또는 중지할 수 있다.
위에서 설명된 바와 같이, 웨이브릿 변환은 이미지를 주파수 대역들로 분해한다. 일부 실시예들에서, 이는 다양한 해상도의 디스플레이들로 동일한 신호를 전송하기 위해 레버리징될 수 있다. 예로서, 2-레벨 웨이브릿 분해가 신호를 7개의 대역들로 분해하기 위해 적용되는 것이 가정된다. 대역들 중 4개(LLLL, LLLH, LLHL 및 LLHH)가 전송되는 경우, 대역들은 더 낮은 시각적 품질로 원래의 의도된 해상도로 재구성될 수 있다. 대안으로서, 대역들은 또한, 더 작은 디스플레이 해상도를 갖는 디스플레이 패널에 적합할 수 있는 1/4 해상도(각각의 치수에서 1/2)로 재구성될 수 있다.
도 4는 적어도 일부 실시예들에 따른, 도 1 및 도 2에 예시된 바와 같은 비디오 인코딩 시스템들을 포함하는 VR/MR 시스템들을 위한 동작의 방법의 고-레벨 흐름도이다. 400에 나타낸 바와 같이, 디바이스는 무선 연결을 통해 기지국으로 데이터를 전송한다. 410에 나타낸 바와 같이, 기지국은 디바이스 데이터에 적어도 부분적으로 기초하여, 가상 콘텐츠를 포함하는 프레임들을 렌더링한다. 420에 나타낸 바와 같이, 기지국은 렌더링된 데이터를 압축하고, 압축된 데이터를 무선 연결을 통해 디바이스로 전송한다. 430에 나타낸 바와 같이, 디바이스는 가상 콘텐츠를 압축해제하고, 가상 콘텐츠를 디스플레이하여, 사용자에 의한 뷰잉을 위한 3D 가상 뷰를 생성한다. 430으로부터 400으로 리턴하는 화살표로 나타낸 바와 같이, 방법은 사용자가 VR/MR 시스템을 사용하는 한 계속된다.
일부 실시예들에서, 기지국에서 전체 프레임들을 렌더링 및 인코딩하고 렌더링된 프레임들을 디바이스로 송신하는 것이 아니라, 기지국은 프레임들의 부분들(슬라이스들로 지칭됨)을 렌더링 및 인코딩하고, 인코딩된 슬라이스들을 이들이 준비되는 대로 디바이스로 송신할 수 있다. 슬라이스는, 예컨대, 128x128 블록들의 행일 수 있다. 일부 실시예들에서, 비디오 인코딩 시스템은 타일-기반 렌더링, 인코딩, 및 송신을 수행할 수 있다. 타일-기반 렌더링, 인코딩, 및 송신에서, 각각의 슬라이스는 하나 이상의 블록들을 각각 포함하는 다수의 타일들(예컨대, 4개의 블록들을 각각 포함하는 4개의 타일들)로 분할될 수 있고, 기지국은 타일들을 렌더링 및 인코딩하고, 인코딩된 타일들을 이들이 준비되는 대로 디바이스로 송신할 수 있다.
도 5는 적어도 일부 실시예들에 따른, 도 1에 예시된 바와 같은 비디오 인코딩 시스템을 위한 동작의 방법의 흐름도이다. 도 5의 방법은, 예컨대, 도 4의 420에서 수행될 수 있다. 도 5의 방법은 슬라이스-기반 인코딩 및 송신이 수행되는 것을 가정한다. 그러나, 일부 실시예들에서, 타일-기반 인코딩 및 송신이 수행될 수 있다.
510에 나타낸 바와 같이, 사전-필터 컴포넌트는 프레임의 슬라이스 내의 픽셀 블록들에 렌즈 워핑 및/또는 포비에이션(foveation) 필터들을 적용한다. 일부 실시예들에서, 사전-필터링은 웨이브릿 변환 전에 기지국 상에서 프레임들에 대해 렌즈 워핑을 수행하는 것을 포함할 수 있다. 렌즈 워핑은 이미지들이 뷰잉되는 디바이스 상의 렌즈들에 의해 도입된 이미지들의 왜곡을 보정하여 이미지들의 품질을 개선하기 위해 수행된다. 일부 실시예들에서, 디바이스는, 예컨대, 교정 프로세스에 의해 생성된 렌즈들에 대한 렌즈 워핑 데이터를 저장할 수 있고, 무선 연결을 통해 기지국에 렌즈 워핑 데이터를 제공할 수 있다. 이어서, 기지국은 그 디바이스에 대한 렌즈 워핑 데이터에 기초하여 프레임들에 대해 렌즈 워핑을 수행할 수 있다. 사전-필터 스테이지에서 기지국 상에서 렌즈 워핑을 수행하는 것은 웨이브릿 변환 및 인코딩을 수행하기 전에 프레임들의 해상도를 감소시킬 수 있으며, 이는 압축을 개선하는 것을 도울 수 있고, 무선 링크 상의 레이턴시 및 대역폭 사용을 감소시킬 수 있다. 부가하여, 디코딩 후에 디바이스 상에서 렌즈 워핑을 수행하는 것이 아니라, 사전-필터 스테이지에서 기지국 상에서 렌즈 워핑을 수행함으로써, 인코딩 전에 해상도를 감소시키기 위해 기지국 상에서 필터링을 수행한 후에 디바이스 상에서 렌즈 워핑 필터링을 수행하는 것과 대조적으로, 이미지 데이터의 필터링이 한 번만 수행될 필요가 있을 수 있다.
일부 실시예들에서, 510에서의 사전-필터링은 또한, 중심와 영역들에서 더 높은 해상도를 유지하면서 주변 영역들에서 해상도를 감소시키기 위한 필터링을 포함할 수 있다. 일부 실시예들에서, 디바이스로부터 획득된 시선 추적 정보는 사용자가 현재 보고 있는 방향을 식별하는 데 사용될 수 있다. 중심와에 대응하는 프레임의 영역(중심와 영역으로 지칭됨)은 결정된 시선 방향에 적어도 부분적으로 기초하여 식별될 수 있다. 주변 영역(즉, 중심와 영역 외부의 프레임의 부분)은, 예컨대, 고 주파수 정보를 필터링하고/하거나 컬러 압축을 증가시킴으로써, 인간 시각 시스템의 지식에 기초하여 정보를 감소시키기 위해 사전-필터링될 수 있다. 주변 영역의 사전-필터링은 프레임의 개선된 압축을 제공하는 것을 도울 수 있다.
520에 나타낸 바와 같이, 웨이브릿 변환 컴포넌트는 픽셀 블록들에 웨이브릿 변환 기법을 적용하여, 픽셀 데이터를 N개의(예컨대, 7개의) 주파수 대역들로 분해한다. 이어서, 주파수 대역들은 인코딩/압축을 위해 블록-기반 인코더에 제공되는 블록들로 구성된다. 예로서, 프레임은 128x128 블록들로 분할될 수 있고, 예컨대 도 3c에 예시된 바와 같이, 2-레벨 웨이브릿 분해가 각각의 128x128 블록에 적용되어, 7개의 주파수 대역들을 나타내는 주파수 데이터의 16개의 32x32 블록들이 생성될 수 있다.
530에 나타낸 바와 같이, 인코더는 블록들 내의 주파수 대역들에 인코딩 기법을 적용하여 데이터를 압축한다. 인코더는, 예컨대, 고 효율 비디오 코딩(HEVC) 인코더일 수 있다. 그러나, 일부 실시예들에서, 다른 인코딩 기법들이 사용될 수 있다. 엘리먼트(520)에 나타낸 바와 같이 픽셀 데이터를 주파수 대역들로 분해하는 것은 주파수 대역들이 인코더에 의해 별개의 스트림들로서 버퍼링 및 프로세싱될 수 있게 한다. 주파수 대역들을 별개의 스트림들로서 프로세싱하는 것은 인코더 컴포넌트가 독립적인 스트림들의 프로세싱을 다중화할 수 있게 한다. HEVC 인코딩과 같은 블록-기반 인코딩 방법들에서, 블록들(코딩 트리 유닛(CTU)들로 지칭됨)은 다수의 스테이지들에서 파이프라인에서 프로세싱되고; 2개 이상의 블록들은 주어진 클록 사이클에서 파이프라인의 상이한 스테이지들에 있을 수 있고, 블록들은 클록 사이클들로서 파이프라인을 통해 이동한다. 주어진 블록의 프로세싱은 하나 이상의 이전에 프로세싱된 이웃 블록들, 예컨대, 주어진 블록 위의 행에서의 하나 이상의 블록들 및/또는 주어진 블록의 좌측에 있는 블록에 대해 종속성들을 가질 수 있다. 스트림들의 프로세싱을 다중화함으로써, 인코더는 주어진 스트림에서의 블록들의 프로세싱 사이에 간격을 두어, 주어진 블록이 종속성들을 갖는 이웃 블록을 프로세싱하기 위한 부가적인 클록 사이클들을 제공한다. 예컨대, 주어진 블록의 좌측에 있는 블록은, 주어진 블록이 이전에 프로세싱된 이웃 블록에 종속되는 스테이지에 도달할 때, 파이프라인에서 주어진 블록보다 여러 스테이지들만큼 앞서 있을 수 있다. 이는 인코더가 이전에 프로세싱된 블록들에 대한 종속성들을 더 양호하게 핸들링할 수 있게 하고, 이웃 블록에 종속되는 스테이지에서 주어진 블록을 프로세싱하기 전에 파이프라인에서 이웃 블록의 프로세싱의 완료를 기다릴 필요성을 감소 또는 제거한다.
540에 나타낸 바와 같이, 무선 인터페이스는 압축된 데이터를 패킷화하고, 무선 연결을 통해 패킷들을 디바이스로 전송한다.
엘리먼트(520)에 나타낸 바와 같이 픽셀 데이터를 주파수 대역들로 분해하는 것은 주파수 대역들이 엘리먼트(530)에서 인코더에 의해 그리고 엘리먼트(540)에서 무선 인터페이스에 의해 우선순위화될 수 있게 한다. 전형적으로, 이미지 및 비디오 송신에서, 더 낮은 주파수들이 더 중요하고, 더 높은 주파수들은 덜 중요하다. 더 높은 주파수들은 일반적으로, 이미지 내의 세부사항들에 대응하고, 그에 따라, 더 낮은 우선순위로서 간주될 수 있다. 더 높은 주파수 대역들은 이미지에서의 에너지의 더 작은 퍼센트를 보유한다. 에너지의 대부분은 더 낮은 주파수 대역들에서 보유된다. 따라서, 픽셀 데이터를 주파수 대역들로 분해하는 것은, 데이터 스트림을 인코딩 및 송신할 때, 인코더 및 무선 인터페이스에 의해 레버리징될 수 있는 데이터 스트림에 우선순위 순서화를 제공한다. 예컨대, 일부 실시예들에서, 상이한 압축 기법들이 상이한 주파수 대역들에 사용될 수 있으며, 더 낮은 우선순위 대역들에 더 적극적인 압축이 적용되고, 더 높은 우선순위 대역들에 더 보수적인 압축이 적용된다. 다른 예로서, 주파수 대역들의 우선순위 순서화는 VR/MR 시스템의 완만한 열화를 제공하는 것을 도울 수 있다. 무선 연결의 성능이 모니터링될 수 있고, 디바이스로부터의 피드백이 전체 시스템의 성능을 추적하기 위해 고려될 수 있다. 시스템이 일부 이유로 낙후되는 경우, 예컨대, 무선 연결이 열화되고, 무선 연결의 대역폭 용량이 임계치 미만으로 떨어지면, 인코더 및 무선 인터페이스는 더 낮은 주파수 대역들 중 하나 이상의 인코딩 및 송신을 우선순위화할 수 있고, 더 낮은 우선순위 레벨이 할당된 주파수 레벨들 중 하나 이상, 예컨대, 더 높은 주파수 대역들 중 하나 이상의 인코딩 및/또는 송신을 감소 또는 중지할 수 있다.
550에서, 인코딩 및 송신될 슬라이스들이 더 많이 있는 경우, 방법은 다음 슬라이스를 프로세싱하기 위해 엘리먼트(510)로 리턴한다. 그렇지 않으면, 560에서, 인코딩 및 송신될 프레임들이 더 많이 있는 경우, 방법은 다음 프레임의 프로세싱을 시작하기 위해 엘리먼트(510)로 리턴한다.
도 6은 적어도 일부 실시예들에 따른, 도 2에 예시된 바와 같은 비디오 인코딩 시스템을 위한 동작의 방법의 흐름도이다. 도 6의 방법은, 예컨대, 도 4의 420에서 수행될 수 있다. 도 6의 방법에서, 비디오 인코딩 시스템은 각각의 슬라이스로부터의 각각의 타일들을 프로세싱하기 위해, 다수의 인코더들을 사용하여, 타일-기반 인코딩을 수행할 수 있다.
600에 나타낸 바와 같이, 렌더링 엔진은 다수의 타일들(본 예에서는 4개의 타일들)을 포함하는 슬라이스를 렌더링하고, 각각의 타일들은 다수의 픽셀 블록들(본 예에서는 4개의 128x128 픽셀 블록들)을 포함한다.
610에 나타낸 바와 같이, 사전-필터 컴포넌트는 슬라이스에 렌즈 워핑 및/또는 포비에이션 필터들을 적용한다. 일부 실시예들에서, 사전-필터링은 웨이브릿 변환 전에 기지국 상에서 프레임들에 대해 렌즈 워핑을 수행하는 것을 포함할 수 있다. 렌즈 워핑은 이미지들이 뷰잉되는 디바이스 상의 렌즈들에 의해 도입된 이미지들의 왜곡을 보정하여 이미지들의 품질을 개선하기 위해 수행된다. 일부 실시예들에서, 디바이스는, 예컨대, 교정 프로세스에 의해 생성된 렌즈들에 대한 렌즈 워핑 데이터를 저장할 수 있고, 무선 연결을 통해 기지국에 렌즈 워핑 데이터를 제공할 수 있다. 이어서, 기지국은 그 디바이스에 대한 렌즈 워핑 데이터에 기초하여 프레임들에 대해 렌즈 워핑을 수행할 수 있다. 사전-필터 스테이지에서 기지국 상에서 렌즈 워핑을 수행하는 것은 웨이브릿 변환 및 인코딩을 수행하기 전에 프레임들의 해상도를 감소시킬 수 있으며, 이는 압축을 개선하는 것을 도울 수 있고, 무선 링크 상의 레이턴시 및 대역폭 사용을 감소시킬 수 있다. 부가하여, 디코딩 후에 디바이스 상에서 렌즈 워핑을 수행하는 것이 아니라, 사전-필터 스테이지에서 기지국 상에서 렌즈 워핑을 수행함으로써, 인코딩 전에 해상도를 감소시키기 위해 기지국 상에서 필터링을 수행한 후에 디바이스 상에서 렌즈 워핑 필터링을 수행하는 것과 대조적으로, 이미지 데이터의 필터링이 한 번만 수행될 필요가 있을 수 있다.
일부 실시예들에서, 610에서의 사전-필터링은 또한, 중심와 영역들에서 더 높은 해상도를 유지하면서 주변 영역들에서 해상도를 감소시키기 위한 필터링을 포함할 수 있다. 일부 실시예들에서, 디바이스에 의해 획득된 시선 추적 정보는 사용자가 현재 보고 있는 방향을 식별하는 데 사용될 수 있다. 중심와에 대응하는 프레임의 영역(중심와 영역으로 지칭됨)은 결정된 시선 방향에 적어도 부분적으로 기초하여 식별될 수 있다. 주변 영역(즉, 중심와 영역 외부의 프레임의 부분)은, 예컨대, 고 주파수 정보를 필터링하고/하거나 컬러 압축을 증가시킴으로써, 인간 시각 시스템의 지식에 기초하여 정보를 감소시키기 위해 사전-필터링될 수 있다. 주변 영역의 사전-필터링은 프레임의 개선된 압축을 제공하는 것을 도울 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은 타일들을 프로세싱하는 단일 사전-필터 컴포넌트를 포함할 수 있다. 일부 실시예들에서, 비디오 인코딩 시스템은 각각의 타일을 프로세싱하기 위한 별개의 사전-필터 컴포넌트를 포함할 수 있다. 일부 실시예들에서, 비디오 인코딩 시스템은 다수의(예컨대, 2개의) 타일들을 각각 프로세싱하는 다수의(예컨대, 2개의) 사전-필터 컴포넌트들을 포함할 수 있다.
620에 나타낸 바와 같이, 웨이브릿 변환 컴포넌트는 슬라이스 내의 픽셀 블록들에 웨이브릿 변환 기법을 적용하여, 픽셀 데이터를 N개의(예컨대, 7개의) 주파수 대역들로 분해한다. 이어서, 주파수 대역들은 인코딩/압축을 위해 블록-기반 인코더에 제공될 수 있는 블록들(예컨대, CTU들)로 구성된다. 예로서, 프레임은 128x128 블록들로 분할될 수 있고, 예컨대 도 3c에 예시된 바와 같이, 2-레벨 웨이브릿 분해가 각각의 128x128 블록에 적용되어, 7개의 주파수 대역들을 나타내는 주파수 데이터의 16개의 32x32 블록들이 생성될 수 있다.
일부 실시예들에서, 비디오 인코딩 시스템은 타일들을 프로세싱하는 단일 웨이브릿 변환 컴포넌트를 포함할 수 있다. 일부 실시예들에서, 비디오 인코딩 시스템은 각각의 타일을 프로세싱하기 위한 별개의 웨이브릿 변환 컴포넌트를 포함할 수 있다. 일부 실시예들에서, 비디오 인코딩 시스템은 다수의(예컨대, 2개의) 타일들을 각각 프로세싱하는 다수의(예컨대, 2개의) 웨이브릿 변환 컴포넌트들을 포함할 수 있다.
도 6의 방법에서, 예시적인 비디오 인코딩 시스템은, 엘리먼트(620)에서 생성된 슬라이스들 중 상이한 슬라이스들로부터의 주파수 데이터의 블록들을 병렬로 인코딩하도록 구성된 2개의 인코더들을 포함한다. 예컨대, 제1 인코더는 슬라이스 0 및 슬라이스 1로부터의 블록들을 인코딩하도록 구성될 수 있고, 제2 인코더는 슬라이스 2 및 슬라이스 3으로부터의 블록들을 인코딩하도록 구성될 수 있다. 630A에 나타낸 바와 같이, 제1 인코더는 타일 0 및 타일 1의 블록들 내의 주파수 대역들에 인코딩 기법을 적용하여, 2개의 상이한 타일들 사이에서 상이한 주파수 대역들로부터의 블록들의 프로세싱을 다중화한다. 630B에 나타낸 바와 같이, 제2 인코더는 타일 2 및 타일 3의 블록들 내의 주파수 대역들에 인코딩 기법을 적용하여, 2개의 상이한 타일들 사이에서 상이한 주파수 대역들로부터의 블록들의 프로세싱을 다중화한다.
인코더들은, 예컨대, 고 효율 비디오 코딩(HEVC) 인코더들일 수 있다. 그러나, 일부 실시예들에서, 다른 인코딩 기법들이 사용될 수 있다. 엘리먼트(620)에 나타낸 바와 같이 픽셀 데이터를 주파수 대역들로 분해하는 것은 주파수 대역들이 엘리먼트들(630A 및 630B)에서 인코더들에 의해 별개의 스트림들로서 버퍼링 및 프로세싱될 수 있게 한다. 주파수 대역들을 별개의 스트림들로서 프로세싱하는 것은 인코더들이 독립적인 스트림들의 프로세싱을 다중화할 수 있게 한다. HEVC 인코딩과 같은 블록-기반 인코딩 방법들에서, 블록들(코딩 트리 유닛(CTU)들로 지칭됨)은 다수의 스테이지들에서 파이프라인에서 프로세싱되고; 2개 이상의 블록들은 주어진 클록 사이클에서 파이프라인의 상이한 스테이지들에 있을 수 있고, 블록들은 클록 사이클들로서 파이프라인을 통해 이동한다. 주어진 블록의 프로세싱은 하나 이상의 이전에 프로세싱된 이웃 블록들, 예컨대, 주어진 블록 위의 행에서의 하나 이상의 블록들 및/또는 주어진 블록의 좌측에 있는 블록에 대해 종속성들을 가질 수 있다. 스트림들의 프로세싱을 다중화함으로써, 인코더는 주어진 스트림에서의 블록들의 프로세싱 사이에 간격을 두어, 주어진 블록이 종속성들을 갖는 이웃 블록을 프로세싱하기 위한 부가적인 클록 사이클들을 제공한다. 예컨대, 주어진 블록의 좌측에 있는 블록은, 주어진 블록이 이전에 프로세싱된 이웃 블록에 종속되는 스테이지에 도달할 때, 파이프라인에서 주어진 블록보다 여러 스테이지들만큼 앞서 있을 수 있다. 이는 인코더가 이전에 프로세싱된 블록들에 대한 종속성들을 더 양호하게 핸들링할 수 있게 하고, 이웃 블록에 종속되는 스테이지에서 주어진 블록을 프로세싱하기 전에 파이프라인에서 이웃 블록의 프로세싱의 완료를 기다릴 필요성을 감소 또는 제거한다.
640에 나타낸 바와 같이, 무선 인터페이스는 엘리먼트(530)에서 인코더들에 의해 생성된 압축된 데이터를 패킷화하고, 무선 연결을 통해 패킷들을 디바이스로 전송한다. 650으로부터 600으로 리턴하는 화살표로 나타낸 바와 같이, 방법은 사용자가 VR/MR 시스템을 사용하는 한 계속된다.
엘리먼트(620)에 나타낸 바와 같이 픽셀 데이터를 주파수 대역들로 분해하는 것은 주파수 대역들이 엘리먼트들(630A 및 630B)에서 인코더들에 의해 그리고 엘리먼트(640)에서 무선 인터페이스에 의해 우선순위화될 수 있게 한다. 전형적으로, 이미지 및 비디오 송신에서, 더 낮은 주파수들이 더 중요하고, 더 높은 주파수들은 덜 중요하다. 더 높은 주파수들은 일반적으로, 이미지 내의 세부사항들에 대응하고, 그에 따라, 더 낮은 우선순위로서 간주될 수 있다. 더 높은 주파수 대역들은 이미지에서의 에너지의 더 작은 퍼센트를 보유한다. 에너지의 대부분은 더 낮은 주파수 대역들에서 보유된다. 따라서, 픽셀 데이터를 주파수 대역들로 분해하는 것은, 데이터 스트림을 인코딩 및 송신할 때, 인코더 및 무선 인터페이스에 의해 레버리징될 수 있는 데이터 스트림에 우선순위 순서화를 제공한다. 예컨대, 일부 실시예들에서, 상이한 압축 기법들이 상이한 주파수 대역들에 사용될 수 있으며, 더 낮은 우선순위 대역들에 더 적극적인 압축이 적용되고, 더 높은 우선순위 대역들에 더 보수적인 압축이 적용된다. 다른 예로서, 주파수 대역들의 우선순위 순서화는 VR/MR 시스템의 완만한 열화를 제공하는 것을 도울 수 있다. 무선 연결의 성능이 모니터링될 수 있고, 디바이스로부터의 피드백이 전체 시스템의 성능을 추적하기 위해 고려될 수 있다. 시스템이 일부 이유로 낙후되는 경우, 예컨대, 무선 연결이 열화되고, 무선 연결의 대역폭 용량이 임계치 미만으로 떨어지면, 인코더 및 무선 인터페이스는 더 낮은 주파수 대역들 중 하나 이상의 인코딩 및 송신을 우선순위화할 수 있고, 더 낮은 우선순위 레벨이 할당된 주파수 레벨들 중 하나 이상, 예컨대, 더 높은 주파수 대역들 중 하나 이상의 인코딩 및/또는 송신을 감소 또는 중지할 수 있다.
각각의 슬라이스가 4개의 타일들로 분할되고, 2개의 인코더들이 각각의 슬라이스로부터의 각각의 타일들에 대해 동작하는 실시예들이 설명되지만, 일부 실시예들에서, 슬라이스들은 더 많은 타일들(예컨대, 6개 또는 8개의 타일들)로 분할될 수 있고, 일부 실시예들에서, 더 많은 인코더들(예컨대, 3개 또는 4개의 인코더들)이 사용될 수 있다.
레이트 제어
인코더는, 목표 비트레이트를 달성하도록, 인코더 파라미터들을 동적으로 조정하기 위해, 레이트 제어 방법 또는 알고리즘을 이용할 수 있다. 레이트 제어 방법은 무선 연결의 이용 가능한 대역폭에 기초하여 비디오 비트레이트를 추정할 수 있다. 추정된 비트레이트는, 코딩된 비트 스트림이 이용 가능한 대역폭의 사용을 최적화하면서 성공적으로 송신될 수 있는 것을 보장하기 위해, 인코더 파라미터들을 조정하는 데 사용될 수 있다. 전형적으로, 비디오 스트리밍 시스템들을 위한 레이트 제어 방법들은, 비디오 비트레이트를 추정하고 그에 따라 인코더 파라미터들을 조정하기 위해, 하나의 프레임 또는 2개의 프레임들의 시간 상수에 걸쳐 작동한다.
본원에서 설명되는 바와 같은 비디오 인코딩 시스템의 실시예를 구현하는 VR/MR 시스템의 목표는, 무선 연결을 통한 대역폭 사용을 최대화하고 에러들(예컨대, 손실되는 패킷들)을 최소화하면서, 기지국 상에서 가상 콘텐츠가 렌더링된 시간과 디바이스 상에서 가상 콘텐츠가 디스플레이되는 시간 사이의 매우 낮은 레이턴시(예컨대, 4 내지 5 밀리초)를 제공하는 것일 수 있다. 시스템에 대한 목표가 되는 낮은 레이턴시는 인코더에서 무선 연결을 통해 디바이스로 송신될 데이터를 인코딩할 때의 레이트 제어에 대한 난제이다.
일부 실시예들에서, 비디오 인코딩 시스템은, 프레임의 슬라이스로부터의 픽셀들의 블록들(예컨대, 64x64 또는 128x128 블록들)을 다수의(예컨대, 7개의) 상이한 주파수 대역들로 분해하는 2-계층 웨이브릿 분해를 수행하는 웨이브릿 변환 컴포넌트에 이어서, 주파수 대역들을 인코딩하는 HEVC와 같은 블록-기반 인코더를 포함한다. 일부 실시예들에서, VR/MR 시스템의 엄격한 레이턴시 요건들 하에서 레이트 제어를 수행하기 위해, 인코더 파라미터들을 조정하기 위해 하나의 프레임 또는 2개의 프레임들의 시간 상수에 걸쳐 작동하는 대신에, 레이트 제어 컴포넌트가 각각의 슬라이스에 대해 인코더 파라미터들(예컨대, 주파수 대역들에 대한 양자화 파라미터들)을 조정할 수 있다. 일부 실시예들에서, 슬라이스에 대한 주파수 대역들은, 예컨대, 비디오 인코딩 시스템의 복잡성 분석 컴포넌트에 의해, 인코딩 전에 주파수 대역들에 걸쳐 복잡성 통계들이 계산될 수 있도록, 웨이브릿 변환 후에 로컬 메모리에 버퍼링될 수 있다. 일부 실시예들에서, 복잡성 통계들은 CTU 블록들에 대한 픽셀 그레이디언트 및 사이즈의 분산(그러나 이에 제한되지는 않음) 중 하나 이상을 포함할 수 있다. 이어서, 복잡성 통계들은, 현재 슬라이스에 대한 인코더에서의 레이트를 변조하기 위해, 주파수 대역들에 대한 양자화 파라미터들을 결정할 때, 레이트 제어 컴포넌트에 의해 사용될 수 있다. 버퍼링된 주파수 대역들에 대한 복잡성 통계들을 계산하는 것은 비디오 인코딩 시스템이 슬라이스를 인코딩하기 전에 슬라이스에서 복잡성의 양을 추정할 수 있게 한다.
일부 실시예들에서, 레이트 제어 컴포넌트는 프레임(들)의 공동-위치된 블록들 또는 슬라이스들을 인코딩하기 위해 사용되었던 실제 비트 수를 결정하기 위해, 하나 이상의 이전에 프로세싱된 프레임들에 대한 통계들을 검사할 수 있다. 이어서, 이 정보는, 현재 슬라이스에 대한 양자화 파라미터들을 결정할 때, 현재 슬라이스에 대한 복잡성 통계들과 조합하여 사용될 수 있다.
일부 실시예들에서, 주파수 대역들에 대한 양자화 파라미터들은, 디바이스 상에서의 디코더 재구성 및 웨이브릿 합성 후에, 프레임들의 전체 디스플레이되는 품질을 최적화하기 위해 함께 계산될 수 있다. 주파수 대역들 사이의 레이트 할당을 위한 방법은, 동작 레이트 왜곡 곡선 상에서 동일한 기울기들을 생성하는, 주파수 대역들 각각에서의 동작 포인트를 발견하는 것이다. 일부 실시예들에서, 동작 레이트 왜곡 곡선은 인코더 파이프라인의 엔트로피 코딩 스테이지로부터의 통계들과 6의 양자화 파라미터 단계들에 대해 계수들의 레이트가 양호하게 근사될 수 있는 사실의 조합을 사용하여 추정될 수 있다.
일부 실시예들에서, 동일한 이미지 내의 주위 영역(예컨대, 주변 영역)보다 더 높은 해상도를 가져야 하는 이미지 내의 관심 영역(예컨대, 중심와 영역)이 있을 수 있다. 일부 실시예들에서, 이전 프레임으로부터의 중심와 영역과 함께, 이전 프레임으로부터의 복잡성 통계들이 저장되고, 현재 프레임의 슬라이스들 내의 주파수 대역들에 대한 양자화 파라미터들을 계산할 때 사용될 수 있다. 예로서, 인코딩될 각각의 블록에 대해, 이전 프레임의 중심와 영역은 이전 프레임에 대해 계산되었던 복잡성 통계들을 변조하는 데 사용될 수 있다. 이어서, 결과적인 복잡성 통계들은, 양자화 파라미터들을 결정할 때, 현재 프레임의 슬라이스에 대해 계산된 복잡성 통계들에 부가하여 사용될 수 있다.
일부 실시예들에서, 레이트 제어 컴포넌트는 슬라이스 레벨이 아니라 블록 레벨에서 인코더 파라미터들(예컨대, 주파수 대역들에 대한 양자화 파라미터들 또는 우선순위 레벨들)을 조정할 수 있다. 일부 실시예들에서, 복잡성 통계들은 슬라이스의 각각의 블록에 대해 계산될 수 있고, 양자화 파라미터들은 블록들에 대해 결정될 수 있다.
도 7은 적어도 일부 실시예들에 따른, 도 1 또는 도 2 에 예시된 바와 같은 비디오 인코딩 시스템을 예시하는 블록도이며, 여기서, 주파수 대역들에 대한 복잡성 통계들이 인코딩 전에 계산되고, 인코딩을 위해 양자화 파라미터들을 생성할 때 사용된다.
일부 실시예들에서, 픽셀 데이터를 포함하는 프레임의 렌더링된 슬라이스들은 먼저 사전-필터(1004) 컴포넌트, 예컨대 N-채널 필터 뱅크에 의해 프로세싱된다. 일부 실시예들에서, 디바이스로부터 획득된 시선 추적 정보는 사용자가 현재 보고 있는 방향을 식별하는 데 사용될 수 있다. 중심와에 대응하는 프레임의 영역(중심와 영역으로 지칭됨)은 결정된 시선 방향에 적어도 부분적으로 기초하여 식별될 수 있다. 주변 영역(즉, 중심와 영역 외부의 프레임의 부분)은, 예컨대, 고 주파수 정보를 필터링하고/하거나 컬러 압축을 증가시킴으로써, 인간 시각 시스템의 지식에 기초하여 정보를 감소시키기 위해 사전-필터링될 수 있다.
사전-필터(1004)의 출력은 웨이브릿 변환(1006) 컴포넌트에 의해 프로세싱된다. 일부 실시예들에서, 웨이브릿 변환(1006) 컴포넌트는, 프레임의 슬라이스로부터의 픽셀들의 블록들(예컨대, 64x64 또는 128x128 블록들)을 다수의(예컨대, 7개의) 상이한 주파수 대역들로 분해하는 2-계층 웨이브릿 분해를 수행한다. 슬라이스에 대한 주파수 대역들은, 인코딩 전에, 비디오 인코딩 시스템의 복잡성 분석 컴포넌트(1050)에 의해, 슬라이스의 주파수 대역들에 걸쳐 복잡성 통계들이 계산될 수 있도록, 웨이브릿 변환(1005) 후에 버퍼링(1008)될 수 있다. 일부 실시예들에서, 복잡성 통계들은 CTU 블록들에 대한 픽셀 그레이디언트 및 사이즈의 분산(그러나 이에 제한되지는 않음) 중 하나 이상을 포함할 수 있다. 복잡성 분석(1050) 컴포넌트는 슬라이스 내의 주파수 대역들에 대한 복잡성 통계들을 인코더(1008)의 레이트 제어(1018) 컴포넌트에 제공한다. 이어서, 레이트 제어(1018) 컴포넌트는 복잡성 통계들에 적어도 부분적으로 기초하여, 슬라이스 내의 주파수 대역들 각각에 대한 양자화 파라미터들을 계산한다.
일부 실시예들에서, 주파수 대역들에 대한 양자화 파라미터들은, 디바이스 상에서 디코더 재구성 및 웨이브릿 합성이 수행된 후에, 프레임들의 전체 디스플레이되는 품질을 최적화하면서, 주파수 대역들 사이에 레이트를 할당하기 위해, 레이트 제어(1018) 컴포넌트에 의해 함께 계산될 수 있다. 주파수 대역들 사이의 레이트 할당을 위한 방법은, 동작 레이트 왜곡 곡선 상에서 동일한 기울기들을 생성하는, 주파수 대역들 각각에서의 동작 포인트를 발견하는 것이다. 일부 실시예들에서, 동작 레이트 왜곡 곡선은 인코더 파이프라인(1020)의 엔트로피 코딩 스테이지로부터의 통계들과 6의 양자화 파라미터 단계들에 대해 계수들의 레이트가 양호하게 근사될 수 있는 사실의 조합을 사용하여 추정될 수 있다.
일부 실시예들에서, 레이트 제어(1018) 컴포넌트는 프레임(들)의 공동-위치된 블록들 또는 슬라이스들을 인코딩하기 위해 사용되었던 실제 비트들의 수를 결정하기 위해, 하나 이상의 이전에 프로세싱된 프레임들에 대한 통계들을 검사할 수 있다. 이어서, 이 정보는, 현재 슬라이스에 대한 양자화 파라미터들을 결정할 때, 현재 슬라이스에 대한 복잡성 통계들과 조합하여 사용될 수 있다.
일부 실시예들에서, 동일한 이미지 내의 주위 영역(예컨대, 주변 영역)보다 더 높은 해상도를 가져야 하는 이미지 내의 관심 영역(예컨대, 중심와 영역)이 있을 수 있다. 일부 실시예들에서, 이전 프레임으로부터의 중심와 영역과 함께, 이전 프레임으로부터의 복잡성 통계들이 저장되고, 현재 프레임의 슬라이스들 내의 주파수 대역들에 대한 양자화 파라미터들을 계산할 때 레이트 제어(1018) 컴포넌트에 의해 사용될 수 있다. 예로서, 인코딩될 각각의 블록에 대해, 이전 프레임의 중심와 영역은 이전 프레임에 대해 계산되었던 복잡성 통계들을 변조하는 데 사용될 수 있다. 이어서, 결과적인 복잡성 통계들은, 양자화 파라미터들을 결정할 때, 현재 프레임의 슬라이스에 대해 계산된 복잡성 통계들에 부가하여 사용될 수 있다.
레이트 제어(1018) 컴포넌트는 슬라이스 내의 주파수 대역들에 대한 양자화 파라미터들을 블록 프로세싱 파이프라인(1020)에 제공하며, 블록 프로세싱 파이프라인(1020)은 현재 슬라이스의 주파수 대역들을 인코딩하기 위해 양자화 파라미터들을 사용한다. 인코딩된 주파수 대역들은 무선 인터페이스(1010)에 제공되며, 무선 인터페이스(1010)는 인코딩된 주파수 대역들을 패킷화하고, 무선 연결(1080)을 통해 디바이스로 송신한다.
비디오 인코딩 시스템의 목표는, 디바이스에 대한 무선 연결(1080)을 통한 대역폭 사용을 최대화하고 레이턴시를 최소화하면서 디바이스에 대한 비디오 스트림의 품질을 최적화하는 것이다. 일부 실시예들에서, 이 목표를 달성하는 것을 돕기 위해, 무선 인터페이스(1010)는 인코더(1008)의 레이트 제어(1018) 컴포넌트에 피드백으로서 현재 무선 연결 정보를 제공할 수 있다. 레이트 제어 컴포넌트(1018)는 주파수 대역들에 대한 양자화 파라미터들을 결정할 때 이 정보를 사용할 수 있다. 일부 실시예들에서, 무선 인터페이스(1010)는 무선 연결(1080)의 순간 총 비트 레이트를 추적할 수 있고, 또한, 연결(1080) 상에서의 손실 패킷 레이트를 추적할 수 있다. 일부 실시예들에서, 무선 인터페이스(1010)는 무선 연결(1080)에 대한 현재 비트 레이트를 레이트 제어(1018) 컴포넌트로 피드백하며, 레이트 제어(1018) 컴포넌트는 상이한 주파수 대역들 중에서 이용 가능한 비트 레이트를 할당하기 위해 이 정보를 사용할 수 있다. 예컨대, 무선 연결(1080)의 비트 레이트가 현재 낮은 경우, 레이트 제어(1018) 컴포넌트는 더 적은 비트들이 이들 대역들에 할당되도록 더 높은 주파수 대역들 중 하나 이상의 양자화 파라미터를 조정할 수 있다. 일부 실시예들에서, 무선 인터페이스(1010)는 또한, 무선 연결(1080)에 대한 현재 손실 패킷 레이트를 레이트 제어(1018) 컴포넌트로 피드백하며; 레이트 제어(1018) 컴포넌트는 현재 손실 패킷 레이트 및 현재 비트 레이트를 사용하여, 주파수 대역들의 양자화 파라미터들의 조정을 밸런싱함으로써, 현재 비트 레이트에서의 대역폭 사용을 최대화하면서 손실 패킷 레이트를 감소 또는 최소화하여, 비디오 스트림의 품질을 최적화할 수 있다.
일부 실시예들에서, 레이트 제어(1018) 컴포넌트는 슬라이스 레벨이 아니라 블록 레벨에서 주파수 대역들에 대한 양자화 파라미터들을 조정할 수 있다.
도 8은 적어도 일부 실시예들에 따른, 도 7에 예시된 바와 같은 비디오 인코딩 시스템을 위한 동작의 방법의 흐름도이다. 1100에 나타낸 바와 같이, 사전-필터 컴포넌트는 프레임(들)에 대한 중심와 영역들을 결정하고, 슬라이스들 내의 픽셀 데이터를 사전-필터링한다. 일부 실시예들에서, 픽셀 데이터를 포함하는 프레임의 렌더링된 슬라이스들은 먼저 사전-필터 컴포넌트, 예컨대 N-채널 필터 뱅크에 의해 프로세싱된다. 일부 실시예들에서, 디바이스로부터 획득된 시선 추적 정보는 사용자가 현재 보고 있는 방향을 식별하는 데 사용될 수 있다. 중심와에 대응하는 프레임의 영역(중심와 영역으로 지칭됨)은 결정된 시선 방향에 적어도 부분적으로 기초하여 식별될 수 있다. 주변 영역(즉, 중심와 영역 외부의 프레임의 부분)은, 예컨대, 고 주파수 정보를 필터링하고/하거나 컬러 압축을 증가시킴으로써, 인간 시각 시스템의 지식에 기초하여 정보를 감소시키기 위해 사전-필터링될 수 있다.
1110에 나타낸 바와 같이, 웨이브릿 변환 컴포넌트는 사전-필터링된 픽셀 데이터를 N개의(예컨대, 7개의) 주파수 대역들로 분해한다. 일부 실시예들에서, 웨이브릿 변환 컴포넌트는, 프레임의 슬라이스로부터의 픽셀들의 블록들(예컨대, 64x64 또는 128x128 블록들)을 다수의(예컨대, 7개의) 상이한 주파수 대역들로 분해하는 2-계층 웨이브릿 분해를 수행한다. 슬라이스에 대한 주파수 대역들은, 인코딩 전에, 비디오 인코딩 시스템의 복잡성 분석 컴포넌트에 의해, 슬라이스의 주파수 대역들에 걸쳐 복잡성 통계들이 계산될 수 있도록, 웨이브릿 변환 후에 버퍼링될 수 있다.
1120에 나타낸 바와 같이, 복잡성 분석 컴포넌트는 주파수 대역들에 걸쳐 복잡성 통계들을 계산한다. 일부 실시예들에서, 복잡성 통계들은 CTU 블록들에 대한 픽셀 그레이디언트 및 사이즈의 분산(그러나 이에 제한되지는 않음) 중 하나 이상을 포함할 수 있다. 복잡성 분석 컴포넌트는 슬라이스 내의 주파수 대역들에 대한 복잡성 통계들을 인코더의 레이트 제어 컴포넌트에 제공한다.
1130에 나타낸 바와 같이, 인코더 레이트 제어 컴포넌트는 복잡성 통계들에 적어도 부분적으로 기초하여, 슬라이스 내의 주파수 대역들 각각에 대한 양자화 파라미터들을 결정한다. 일부 실시예들에서, 주파수 대역들에 대한 양자화 파라미터들은, 디바이스 상에서 디코더 재구성 및 웨이브릿 합성이 수행된 후에, 프레임들의 전체 디스플레이되는 품질을 최적화하면서, 주파수 대역들 사이에 레이트를 할당하기 위해, 레이트 제어 컴포넌트에 의해 함께 계산될 수 있다. 주파수 대역들 사이의 레이트 할당을 위한 방법은, 동작 레이트 왜곡 곡선 상에서 동일한 기울기들을 생성하는, 주파수 대역들 각각에서의 동작 포인트를 발견하는 것이다. 일부 실시예들에서, 동작 레이트 왜곡 곡선은 인코더 파이프라인(1020)의 엔트로피 코딩 스테이지로부터의 통계들과 6의 양자화 파라미터 단계들에 대해 계수들의 레이트가 양호하게 근사될 수 있는 사실의 조합을 사용하여 추정될 수 있다.
일부 실시예들에서, 레이트 제어 컴포넌트는 프레임(들)의 공동-위치된 블록들 또는 슬라이스들을 인코딩하기 위해 사용되었던 실제 비트들의 수를 결정하기 위해, 하나 이상의 이전에 프로세싱된 프레임들에 대한 통계들을 검사할 수 있다. 이어서, 이 정보는, 현재 슬라이스에 대한 양자화 파라미터들을 결정할 때, 현재 슬라이스에 대한 복잡성 통계들과 조합하여 사용될 수 있다.
일부 실시예들에서, 동일한 이미지 내의 주위 영역(예컨대, 주변 영역)보다 더 높은 해상도를 가져야 하는 이미지 내의 관심 영역(예컨대, 중심와 영역)이 있을 수 있다. 일부 실시예들에서, 이전 프레임으로부터의 중심와 영역과 함께, 이전 프레임으로부터의 복잡성 통계들이 저장되고, 현재 프레임의 슬라이스들 내의 주파수 대역들에 대한 양자화 파라미터들을 계산할 때 레이트 제어 컴포넌트에 의해 사용될 수 있다. 예로서, 인코딩될 각각의 블록에 대해, 이전 프레임의 중심와 영역은 이전 프레임에 대해 계산되었던 복잡성 통계들을 변조하는 데 사용될 수 있다. 이어서, 결과적인 복잡성 통계들은, 양자화 파라미터들을 결정할 때, 현재 프레임의 슬라이스에 대해 계산된 복잡성 통계들에 부가하여 사용될 수 있다.
1140에 나타낸 바와 같이, 인코더(예컨대, HEVC 인코더)는 양자화 파라미터들을 사용하여 주파수 대역들에 인코딩 기법을 적용하여 데이터를 압축한다. 레이트 제어 컴포넌트는 슬라이스 내의 주파수 대역들에 대한 양자화 파라미터들을 인코더의 블록 프로세싱 파이프라인에 제공하며, 블록 프로세싱 파이프라인은 현재 슬라이스의 주파수 대역들을 인코딩하기 위해 양자화 파라미터들을 사용한다. 인코딩된 주파수 대역들은 기지국의 무선 인터페이스에 제공된다.
1150에 나타낸 바와 같이, 무선 인터페이스는 압축된 데이터를 패킷화하고, 무선 연결을 통해 디바이스로 전송한다. 일부 실시예들에서, 무선 인터페이스는 인코더의 레이트 제어 컴포넌트에 피드백으로서 현재 무선 연결 정보를 제공할 수 있다. 레이트 제어 컴포넌트는 주파수 대역들에 대한 양자화 파라미터들을 결정할 때 이 정보를 사용할 수 있다. 일부 실시예들에서, 무선 인터페이스는 무선 연결의 순간 총 비트 레이트를 추적할 수 있고, 또한, 연결 상에서의 손실 패킷 레이트를 추적할 수 있다. 일부 실시예들에서, 레이트 제어 컴포넌트는 상이한 주파수 대역들 중에서 이용 가능한 비트 레이트를 할당하기 위해, 무선 연결에 대한 현재 비트 레이트를 사용할 수 있다. 일부 실시예들에서, 레이트 제어 컴포넌트는 현재 손실 패킷 레이트 및 현재 비트 레이트를 사용하여, 주파수 대역들의 양자화 파라미터들의 조정을 밸런싱함으로써, 손실 패킷 레이트를 감소 또는 최소화하여, 현재 비트 레이트에서의 비디오 스트림의 품질을 최적화할 수 있다.
엘리먼트(1160)로부터 엘리먼트(1100)로 리턴하는 화살표로 나타낸 바와 같이, 방법은 디바이스로 송신될 데이터가 있는 한 계속될 수 있다.
예시적인 VR/MR 시스템
도 9는 적어도 일부 실시예들에 따른, 비디오 인코딩 시스템을 구현할 수 있는 예시적인 VR/MR 시스템(2000)을 예시한다. VR/MR 시스템(2000)은 적어도 하나의 디바이스(2150)(예컨대, 노트북 또는 랩톱 컴퓨터, 패드 또는 태블릿 디바이스, 스마트폰, 핸드-헬드 컴퓨팅 디바이스, 또는 사용자에 의해 착용될 수 있는 HMD, 이를테면 헤드셋, 헬멧, 고글, 또는 안경), 및 컴퓨팅 디바이스(2100)(본원에서는 기지국으로 지칭됨)를 포함할 수 있다. 기지국(2100)은 가상 콘텐츠를 포함하는 VR 또는 MR 프레임들을 렌더링하고, 프레임들을 인코딩하고, 디바이스(2150)에 의한 디코딩 및 디스플레이를 위해, 인코딩된 프레임들을 무선 연결(2180)을 통해 디바이스(2150)로 송신한다.
기지국(2100) 및 디바이스(2150)는 기지국(2100) 및 디바이스(2150)가 무선 연결(2180)을 통해 데이터를 통신 및 교환할 수 있게 하는 무선 통신 기술을 각각 포함할 수 있다. 일부 실시예들에서, 무선 연결(2180)은 디바이스(2150)와 기지국(2100) 사이에 고 지향성 무선 링크를 제공하는 독점적인 무선 통신 기술에 따라 구현될 수 있다. 그러나, 일부 실시예들에서, 다른 상업적(예컨대, Wi-Fi, 블루투스 등) 또는 독점적인 무선 통신 기술들이 사용될 수 있다.
일부 실시예들에서, 디바이스(2150)는 사용자의 환경에 관한 정보(예컨대, 비디오, 깊이 정보, 조명 정보 등), 및/또는 사용자에 관한 정보(예컨대, 사용자의 표정들, 눈 움직임, 시선 방향, 손 제스처들 등)를 수집하는 센서들을 포함할 수 있다. 디바이스(2150)는 센서들에 의해 수집된 정보의 적어도 일부를 무선 연결(2180)을 통해 기지국(2100)으로 송신할 수 있다. 기지국(2100)은, 센서들로부터 획득된 다양한 정보에 적어도 부분적으로 기초하여, 디바이스(2150)에 의한 디스플레이를 위해, 가상 콘텐츠를 포함하는 프레임들을 렌더링하고, 프레임들을 인코딩하고, 디코딩 및 사용자에 대한 디스플레이를 위해, 인코딩된 프레임들을 무선 연결(2180)을 통해 디바이스(2150)로 송신할 수 있다. 프레임들을 인코딩 및 송신하기 위해, 기지국(2100)은 도 1 내지 도 8에 예시된 바와 같은 비디오 인코딩 시스템을 구현할 수 있다.
도 10은 일부 실시예들에 따른, 도 9에 예시된 바와 같은 예시적인 VR/MR 시스템의 기능 컴포넌트들 및 프로세싱을 예시하는 블록도이다. 디바이스(2150)는 노트북 또는 랩톱 컴퓨터, 패드 또는 태블릿 디바이스, 스마트폰, 핸드-헬드 컴퓨팅 디바이스, 또는 사용자에 의해 착용될 수 있는 HMD, 이를테면 헤드셋, 헬멧, 고글, 또는 안경을 포함할 수 있다(그러나 이에 제한되지는 않음). 디바이스(2150)는 다양한 타입의 가상 또는 증강 현실 디스플레이 기술들 중 임의의 기술을 구현할 수 있는 디스플레이(2156) 컴포넌트 또는 서브시스템을 포함할 수 있다. 예컨대, HMD 디바이스(2150)는 DLP(digital light processing), LCD(liquid crystal display), 및 LCoS(liquid crystal on silicon) 기술 VR 시스템들과 같은, 피험자에 의해 뷰잉되는 사용자의 눈들 앞의 스크린들 상에 좌측 및 우측 이미지들을 디스플레이하는 근안 시스템일 수 있다. 다른 예로서, HMD 디바이스(2150)는 피험자의 눈들에, 픽셀 단위로, 좌측 및 우측 이미지들을 스캐닝하는 직접 망막 프로젝터 시스템일 수 있다. 이미지들을 스캐닝하기 위해, 좌측 및 우측 프로젝터들은 사용자의 눈들 앞에 위치된 좌측 및 우측 반사 컴포넌트들(예컨대, 타원형 미러들)로 지향되는 빔들을 생성하고; 반사 컴포넌트들은 빔들을 사용자의 눈들로 반사한다. 3차원(3D) 효과를 생성하기 위해, 3D 가상 뷰에서 상이한 깊이들 또는 거리들에 있는 가상 콘텐츠는 거리의 삼각측량의 함수로서 2개의 이미지들에서 좌측 또는 우측으로 시프트되는데, 이때 더 가까운 객체들은 더 먼 객체들보다 더 많이 시프트된다.
디바이스(2150)는 또한, 본원에서 설명되는 바와 같은 VR/MR 시스템(2000)의 디바이스-측 기능성을 구현하도록 구성된 제어기(2154)를 포함할 수 있다. 일부 실시예들에서, 디바이스(2150)는 또한, 제어기(2154)에 의해 실행 가능한 VR/MR 시스템(2000)의 디바이스 컴포넌트의 소프트웨어(코드(2172)) 뿐만 아니라, 제어기(2154) 상에서 실행될 때 소프트웨어에 의해 사용될 수 있는 데이터(2174)를 저장하도록 구성된 메모리(2170)를 포함할 수 있다. 다양한 실시예들에서, 제어기(2154)는 하나의 프로세서를 포함하는 단일프로세서 시스템, 또는 여러 개(예컨대, 2개, 4개, 8개, 또는 다른 적합한 개수)의 프로세서들을 포함하는 멀티프로세서 시스템일 수 있다. 제어기(2154)는 임의의 적합한 명령어 세트 아키텍처를 구현하도록 구성된 중앙 프로세싱 유닛(CPU)들을 포함할 수 있고, 그 명령어 세트 아키텍처 내에 정의된 명령어들을 실행하도록 구성될 수 있다. 예컨대, 다양한 실시예들에서, 제어기(2154)는 x86, PowerPC, SPARC, RISC 또는 MIPS ISA들, 또는 임의의 다른 적합한 ISA와 같은 다양한 명령어 세트 아키텍처(ISA)들 중 임의의 것을 구현하는 범용 또는 임베디드 프로세서들을 포함할 수 있다. 멀티프로세서 시스템들에서, 프로세서들 각각은 일반적으로 동일한 ISA를 구현할 수 있지만 반드시 그러한 것은 아니다. 제어기(2154)는 스칼라, 수퍼스칼라, 파이프라인형, 수퍼파이프라인형, 비순차형, 순차형, 추측형, 비추측형 등 또는 이들의 조합을 포함하는 임의의 마이크로아키텍처를 채택할 수 있다. 제어기(2154)는 마이크로코딩 기법들을 구현하기 위한 회로부를 포함할 수 있다. 제어기(2154)는 하나 이상의 프로세싱 코어들을 포함할 수 있고, 이는 각각 명령어들을 실행하도록 구성된다. 제어기(2154)는 하나 이상의 레벨들의 캐시들을 포함할 수 있고, 이는 임의의 크기 및 임의의 구성(세트 연관, 직접 맵핑 등)을 채택할 수 있다. 일부 실시예들에서, 제어기(2154)는 임의의 적합한 그래픽 프로세싱 회로부를 포함할 수 있는 적어도 하나의 그래픽 프로세싱 유닛(GPU)을 포함할 수 있다. 일반적으로, GPU는 디스플레이될 객체들을 프레임 버퍼(예컨대, 전체 프레임에 대한 픽셀 데이터를 포함하는 것) 내에 렌더링하도록 구성될 수 있다. GPU는 그래픽 동작의 일부 또는 전부를 수행하기 위한 그래픽 소프트웨어 또는 소정 그래픽 동작들의 하드웨어 가속을 실행할 수 있는 하나 이상의 그래픽 프로세서들을 포함할 수 있다. 일부 실시예들에서, 제어기(2154)는 비디오 및/또는 이미지들을 프로세싱 및 렌더링하기 위한 하나 이상의 다른 컴포넌트들, 예컨대, 이미지 신호 프로세서(ISP)들, 인코더/디코더(codec)들 등을 포함할 수 있다. 일부 실시예들에서, 제어기(2154)는 적어도 하나의 시스템 온 칩(system on a chip, SOC)을 포함할 수 있다.
메모리(2170)는, 동적 랜덤 액세스 메모리(DRAM), 동기식 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 모바일 버전들의 SDRAM들, 또는 LPDDR2 등과 같은 저전력 버전들의 SDRAM들을 포함), RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 임의의 타입의 메모리를 포함할 수 있다. 일부 실시예들에서, 하나 이상의 메모리 디바이스들은 단일 인라인 메모리 모듈(SIMM)들, 듀얼 인라인 메모리 모듈(DIMM)들 등과 같은 메모리 모듈들을 형성하기 위해 회로 보드 상에 결합될 수 있다. 대안적으로, 디바이스들은 칩-온-칩 구성, 패키지-온-패키지 구성 또는 멀티-칩 모듈 구성으로 시스템을 구현하는 집적 회로로 실장될 수 있다.
일부 실시예들에서, 센서들(2160)은 사용자의 눈들의 위치 및 움직임을 추적하기 위해 사용될 수 있는 하나 이상의 시선 추적 센서들(예컨대, IR 조명 소스를 갖는 IR 카메라들)을 포함할 수 있다(그러나 이에 제한되지는 않음). 일부 실시예들에서, 2개의 시선 추적 센서들이 있을 수 있으며, 각각의 시선 추적 센서는 각각의 눈을 추적한다. 일부 실시예들에서, 시선 추적 센서들에 의해 수집된 정보는, 사용자의 눈들이 보고 있는 방향 및 각도에 기초하여, 기지국(2100)에 의한 이미지들의 렌더링을 조정하고/하거나 디바이스(2150)의 프로젝션 시스템에 의한 이미지들의 투사를 조정하기 위해 사용될 수 있다. 예를 들어, 일부 실시예들에서, 사용자의 눈들이 현재 보고 있는 위치 주위의 영역 내의 이미지들의 콘텐츠는 사용자가 보고 있지 않는 영역 내의 콘텐츠보다 더 상세히 그리고 더 높은 해상도로 렌더링될 수 있으며, 이는 이미지 데이터를 위해 이용가능한 프로세싱 시간이 눈들의 주변 영역들에 의해 관찰되는 콘텐츠에 대해서보다는 눈들의 중심와(foveal) 영역들에 의해 관찰되는 콘텐츠에 대해 소비될 수 있게 한다. 유사하게, 사용자가 보고 있지 않는 영역들 내의 이미지들의 콘텐츠는 사용자가 현재 보고 있는 지점 주위의 영역의 콘텐츠보다 더 많이 압축될 수 있다. 일부 실시예들에서, 센서들이 사용자의 눈들 중 각각의 눈들의 뷰들을 갖도록 하는 위치들에서 디바이스(2150)의 내측 표면 상에 위치된 2개의 시선 추적 센서들이 있을 수 있다. 그러나, 다양한 실시예들에서, 더 많거나 또는 더 적은 시선 추적 센서들이 사용될 수 있고, 시선 추적 센서들이 다른 위치들에 위치될 수 있다. 예시적인 비-제한적인 실시예에서, 각각의 시선 추적 센서는 IR 광 소스 및 IR 카메라, 예컨대, 120 FPS 이상의 프레임 레이트, 70 도의 HFOV, 및 10 밀리미터(mm) 내지 80 mm의 작동 거리를 갖는 400x400 픽셀 카운트 카메라를 포함할 수 있다.
일부 실시예들에서, 디바이스(2150)는 디바이스(2150)의 위치, 배향, 및/또는 모션을 검출하고, 검출된 위치, 배향, 및/또는 모션 데이터를 디바이스(2150)의 제어기(2154) 및/또는 기지국(2100)에 제공하도록 구성된 적어도 하나의 관성-측정 유닛(IMU)(2162)을 포함할 수 있다.
디바이스(2150)는 또한, 무선 연결(2180)을 통해 외부 기지국(2100)과 통신하여, 기지국(2100)으로 센서 입력들을 전송하고, 기지국(2100)으로부터 압축된 렌더링된 프레임들, 슬라이스들, 또는 타일들을 수신하도록 구성된 무선 인터페이스(2152)를 포함할 수 있다. 일부 실시예들에서, 무선 인터페이스(2152)는 디바이스(2150)와 기지국(2100) 사이에 고 지향성 무선 링크를 제공하는 독점적인 무선 통신 기술을 구현할 수 있다. 그러나, 일부 실시예들에서, 다른 상업적(예컨대, Wi-Fi, 블루투스 등) 또는 독점적인 무선 통신 기술들이 사용될 수 있다.
기지국(2100)은 무선 인터페이스(2180)를 통해 디바이스(2150)에 통신 가능하게 커플링된 외부 디바이스(예컨대, 컴퓨팅 시스템, 게임 콘솔 등)일 수 있다. 기지국(2100)은 비디오 및/또는 이미지들을 렌더링, 필터링, 인코딩, 및 송신하기 위한 다양한 타입의 프로세서들(예컨대, SOC들, CPU들, ISP들, GPU들, 코덱들, 및/또는 다른 컴포넌트들) 중 하나 이상을 포함할 수 있다. 기지국(2100)은 무선 연결(2180)을 통해 센서들(2160)로부터 획득된 다양한 입력들에 적어도 부분적으로 기초하여, 가상 콘텐츠를 포함하는 프레임들(각각의 프레임은 좌측 및 우측 이미지를 포함함)을 렌더링하고, 본원에서 설명되는 바와 같은 비디오 인코딩 시스템을 사용하여 렌더링된 프레임들(또는 프레임들의 슬라이스들)을 필터링 및 압축하고, 압축된 프레임들 또는 슬라이스들을 디스플레이를 위해 디바이스(2150)로 송신할 수 있다.
기지국(2100)은 데스크톱 컴퓨터, 노트북 또는 랩톱 컴퓨터, 패드 또는 태블릿 디바이스, 스마트폰, 핸드-헬드 컴퓨팅 디바이스, 게임 제어기, 게임 시스템 등과 같은 임의의 타입의 컴퓨팅 시스템 또는 컴퓨팅 디바이스일 수 있거나 이를 포함할 수 있다. 기지국(2100)은 본원에서 설명되는 바와 같은 비디오 인코딩 시스템을 포함하는 VR/MR 시스템(2000)의 기지국-측 기능성을 구현하는 하나 이상의 프로세서들을 포함하는 제어기(2110)를 포함할 수 있다. 기지국(2100)은 또한, 기지국 제어기(2110)에 의해 실행 가능한 VR/MR 시스템(2000)의 기지국 컴포넌트의 소프트웨어(코드(2122)) 뿐만 아니라, 제어기(2110) 상에서 실행될 때 소프트웨어에 의해 사용될 수 있는 데이터(2124)를 저장하도록 구성된 메모리(2120)를 포함할 수 있다.
다양한 실시예들에서, 기지국 제어기(2110)는 하나의 프로세서를 포함하는 단일프로세서 시스템, 또는 여러 개(예컨대, 2개, 4개, 8개, 또는 다른 적합한 개수)의 프로세서들을 포함하는 멀티프로세서 시스템일 수 있다. 제어기(2110)는 임의의 적합한 명령어 세트 아키텍처를 구현하도록 구성된 중앙 프로세싱 유닛(CPU)들을 포함할 수 있고, 그 명령어 세트 아키텍처 내에 정의된 명령어들을 실행하도록 구성될 수 있다. 예컨대, 다양한 실시예들에서, 제어기(2110)는 x86, PowerPC, SPARC, RISC 또는 MIPS ISA들, 또는 임의의 다른 적합한 ISA와 같은 다양한 명령어 세트 아키텍처(ISA)들 중 임의의 것을 구현하는 범용 또는 임베디드 프로세서들을 포함할 수 있다. 멀티프로세서 시스템들에서, 프로세서들 각각은 일반적으로 동일한 ISA를 구현할 수 있지만 반드시 그러한 것은 아니다. 제어기(2110)는 스칼라, 수퍼스칼라, 파이프라인형, 수퍼파이프라인형, 비순차형, 순차형, 추측형, 비추측형 등 또는 이들의 조합을 포함하는 임의의 마이크로아키텍처를 채택할 수 있다. 제어기(2110)는 마이크로코딩 기법들을 구현하기 위한 회로부를 포함할 수 있다. 제어기(2110)는 하나 이상의 프로세싱 코어들을 포함할 수 있고, 이는 각각 명령어들을 실행하도록 구성된다. 제어기(2110)는 하나 이상의 레벨들의 캐시들을 포함할 수 있고, 이는 임의의 사이즈 및 임의의 구성(세트 연관, 직접 맵핑 등)을 채택할 수 있다. 일부 실시예들에서, 제어기(2110)는 임의의 적합한 그래픽 프로세싱 회로부를 포함할 수 있는 적어도 하나의 그래픽 프로세싱 유닛(GPU)을 포함할 수 있다. 일반적으로, GPU는 디스플레이될 객체들을 프레임 버퍼(예컨대, 전체 프레임에 대한 픽셀 데이터를 포함하는 것) 내에 렌더링하도록 구성될 수 있다. GPU는 그래픽 동작의 일부 또는 전부를 수행하기 위한 그래픽 소프트웨어 또는 소정 그래픽 동작들의 하드웨어 가속을 실행할 수 있는 하나 이상의 그래픽 프로세서들을 포함할 수 있다. 일부 실시예들에서, 제어기(2110)는 본원에서 설명되는 바와 같이 비디오 및/또는 이미지들을 프로세싱, 렌더링, 필터링, 및 인코딩하기 위한 하나 이상의 다른 컴포넌트들, 예컨대, 다양한 타입의 집적 회로(IC)들, 이미지 신호 프로세서(ISP)들, 인코더/디코더(codec)들 중 하나 이상을 포함할 수 있다. 일부 실시예들에서, 제어기(2110)는 적어도 하나의 시스템 온 칩(SOC)을 포함할 수 있다.
기지국 메모리(2120)는, 동적 랜덤 액세스 메모리(DRAM), 동기식 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 모바일 버전들의 SDRAM들, 또는 LPDDR2 등과 같은 저전력 버전들의 SDRAM들을 포함), RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 임의의 유형의 메모리를 포함할 수 있다. 일부 실시예들에서, 하나 이상의 메모리 디바이스들은 단일 인라인 메모리 모듈(SIMM)들, 듀얼 인라인 메모리 모듈(DIMM)들 등과 같은 메모리 모듈들을 형성하기 위해 회로 보드 상에 결합될 수 있다. 대안적으로, 디바이스들은 칩-온-칩 구성, 패키지-온-패키지 구성 또는 멀티-칩 모듈 구성으로 시스템을 구현하는 집적 회로로 실장될 수 있다.
기지국(2100)은 또한, 무선 연결(2180)을 통해 디바이스(2150)와 통신하여, 디바이스(2150)로부터 센서 입력들을 수신하고, 기지국(2100)으로부터 디바이스(2150)로 압축된 프레임들, 슬라이스들, 또는 타일들을 전송하도록 구성된 하나 이상의 무선 기술 인터페이스들(2130)을 포함할 수 있다. 일부 실시예들에서, 무선 기술 인터페이스(2130)는 디바이스(2150)와 기지국(2100) 사이에 고 지향성 무선 링크를 제공하는 독점적인 무선 통신 기술을 구현할 수 있다. 일부 실시예들에서, 무선 통신 기술의 지향성 및 대역폭은 기지국(2100)과 통신하는 다수의 디바이스들(2150)을 동시에 지원하여, 다수의 사용자들이 공동-위치된 환경에서 동시에 시스템(2000)을 사용하는 것을 가능하게 할 수 있다. 그러나, 일부 실시예들에서, 다른 상업적(예컨대, Wi-Fi, 블루투스 등) 또는 독점적인 무선 통신 기술들이 사용될 수 있다.
일부 실시예들에서, 기지국(2100)은 디바이스(2150)로부터 수신된 센서(2160) 입력들에 적어도 부분적으로 기초하여, 사용자에 대한 3D 가상 뷰를 제공하기 위해, 프레임들을 렌더링하고 디바이스(2150)로 송신하도록 구성될 수 있다. 일부 실시예들에서, 가상 뷰는, 디스플레이를 위해 실시간으로 사용자의 환경의 고-품질의 고-해상도 비디오를 캡처하는 하나 이상의 장면 카메라들(예컨대, RGB (가시 광) 비디오 카메라들)에 의해 캡처된 비디오에 기초한, 사용자의 환경에서의 실제 객체들의 렌더링들을 포함하는 사용자의 환경의 렌더링들을 포함할 수 있다. 일부 실시예들에서, 가상 뷰는 또한, 기지국(2100)에 의해 사용자의 실제 환경의 투사된 3D 뷰와 함께 렌더링 및 혼합된 가상 콘텐츠(예컨대, 가상 객체들, 실제 객체들에 대한 가상 태그들, 사용자의 아바타들 등)를 포함할 수 있다.
도 9 및 도 10에 도시되지 않았지만, 일부 실시예들에서, VR/MR 시스템(2000)은 하나 이상의 다른 컴포넌트를 포함할 수 있다. 예컨대, 시스템은 가상 콘텐츠와 상호 작용하기 위해 3D 가상 뷰 내의 가상 커서를 이동시키기 위한 커서 제어 디바이스(예컨대, 마우스)를 포함할 수 있다. 도 9 및 도 10은 단일 디바이스(2150)를 도시하지만, 일부 실시예들에서, VR/MR 시스템(2000)은 기지국(2100)과 통신하는 다수의 디바이스들(2150)을 동시에 지원하여, 다수의 사용자들이 공동-위치된 환경에서 동시에 시스템을 사용하는 것을 가능하게 할 수 있다.
본 명세서에 설명된 방법들은, 상이한 실시예들에서, 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 부가적으로, 방법들의 블록들의 순서는 변경될 수 있고, 다양한 요소들이 부가, 재순서화, 조합, 생략, 수정, 기타 등등될 수 있다. 본 개시내용의 이익을 가진 당업자에게 명백한 바와 같이 다양한 수정들 및 변화들이 이루어질 수 있다. 본 명세서에 설명된 다양한 실시예들은 예시적인 것이며 제한하려는 것으로 의도되지 않는다. 많은 변형들, 수정들, 부가들 및 개선들이 가능하다. 따라서, 복수의 예시들이 본 명세서에 설명된 컴포넌트들에 대해 단일 예시로서 제공될 수 있다. 다양한 컴포넌트들, 동작들, 및 데이터 저장들 사이의 경계들은 다소 임의적이고, 특정 동작들은 특정 예시 구성들의 맥락에서 예시된다. 기능의 다른 할당들이 계획되고, 다음의 청구범위의 범주 내에 속할 수 있다. 마지막으로, 예시적인 구성들에서 별개의 컴포넌트들로서 제시된 구조들 및 기능은 조합된 구조 또는 컴포넌트로서 구현될 수 있다. 이들 및 다른 변형들, 수정들, 부가들 및 개선들은 다음의 청구범위에 정의된 바와 같은 실시예들의 범주 내에 속할 수 있다.

Claims (20)

  1. 비디오 인코딩 시스템으로서,
    하나 이상의 프로세서들을 포함하는 웨이브렛(wavelet) 변환 컴포넌트 - 상기 하나 이상의 프로세서들은:
    현재 비디오 프레임으로부터의 픽셀 블록들에 웨이브렛 변환을 적용하여 상기 픽셀 블록들을 복수의 주파수 대역들로 분해하고;
    상기 복수의 주파수 대역들에 대한 주파수 데이터를 포함하는 주파수 블록들을 출력하도록 구성됨 -;
    하나 이상의 프로세서들을 포함하는 복잡성 분석 컴포넌트 - 상기 하나 이상의 프로세서들은:
    상기 주파수 블록들 내의 상기 주파수 데이터를 분석하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 걸쳐 복잡성 통계들을 계산하고;
    상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들을 출력하도록 구성됨 -;
    블록-기반 인코더 - 상기 블록-기반 인코더는:
    이전 비디오 프레임으로부터의 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 양자화 파라미터들을 결정하고;
    상기 현재 비디오 프레임의 상기 주파수 블록들에 인코딩 기법을 적용하도록 구성되고, 상기 인코딩 기법은 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 결정된 양자화 파라미터들을 사용하여 상기 주파수 블록들 내의 상기 주파수 데이터를 압축함 -; 및
    상기 압축된 주파수 데이터를 무선 연결을 통해 수신 디바이스로 송신하도록 구성된 무선 인터페이스를 포함하는, 비디오 인코딩 시스템.
  2. 제1항에 있어서, 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하기 위해, 상기 블록-기반 인코더는 추가로:
    상기 이전 비디오 프레임의 상기 중심와 영역(foveated region)에 기초하여 상기 현재 비디오 프레임의 영역을 결정하고;
    상기 현재 비디오 프레임의 상기 결정된 영역이 상기 결정된 영역 외측에 있는 상기 현재 비디오 프레임의 주변 영역보다 더 높은 해상도를 제공하도록 인코딩되도록, 상기 현재 비디오 프레임의 상기 결정된 영역에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하도록 구성된, 비디오 인코딩 시스템.
  3. 제1항에 있어서, 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하기 위해, 상기 블록-기반 인코더는 추가로:
    상기 이전 비디오 프레임의 상기 중심와 영역에 따라 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들을 변조하고;
    상기 현재 비디오 프레임에 대한 상기 복잡성 통계들과 조합하여 상기 이전 비디오 프레임으로부터의 상기 변조된 다른 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하도록 구성된, 비디오 인코딩 시스템.
  4. 제1항에 있어서, 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하기 위해, 상기 블록-기반 인코더는 추가로:
    상기 이전 비디오 프레임의 공동-위치된(co-sited) 주파수 블록들을 인코딩하기 위해 사용되었던 실제 비트 수를 결정하기 위해 상기 이전 비디오 프레임에 대한 추가 통계들을 검사하고;
    상기 현재 비디오 프레임에 대한 상기 복잡성 통계들과 조합하여 상기 이전 비디오 프레임의 상기 공동-위치된 블록들을 인코딩하기 위해 사용되었던 상기 결정된 실제 비트 수에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임에 대한 상기 양자화 파라미터들을 결정하도록 구성된, 비디오 인코딩 시스템.
  5. 제1항에 있어서, 상기 복잡성 통계들은 픽셀 그레이디언트 정보 및 상기 주파수 블록들 중 다른 주파수 블록에 대한 상기 주파수 블록들 중 적어도 하나의 크기의 분산 중 하나 이상을 포함하는, 비디오 인코딩 시스템.
  6. 제1항에 있어서,
    상기 무선 인터페이스는 상기 무선 연결에 대한 현재 이용 가능한 비트 레이트를 상기 블록-기반 인코더에 피드백으로서 제공하도록 추가로 구성되고;
    상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정할 때, 상기 블록-기반 인코더는 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 각각의 주파수 대역들 중에서 상기 현재 이용 가능한 비트 레이트를 할당하도록 추가로 구성된, 비디오 인코딩 시스템.
  7. 제1항에 있어서,
    상기 무선 인터페이스는 상기 무선 연결에 대한 현재 이용 가능한 비트 레이트 및 상기 무선 연결 상의 현재 손실 패킷 레이트(dropped packet rate)를 상기 블록-기반 인코더에 피드백으로서 제공하도록 추가로 구성되고;
    상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정할 때, 상기 블록-기반 인코더는 상기 현재 이용 가능한 비트 레이트에서의 이용 가능한 대역폭 사용을 최대화하면서, 상기 손실 패킷 레이트를 최소화하기 위해, 상기 복수의 주파수 대역들의 각각의 주파수 대역들에 대한 상기 양자화 파라미터들을 조정하도록 추가로 구성된, 비디오 인코딩 시스템.
  8. 제1항에 있어서, 상기 웨이브렛 변환은 상기 현재 비디오 프레임으로부터의 각각의 픽셀 블록에 적용되는 2-레벨 웨이브렛 분해인, 비디오 인코딩 시스템.
  9. 제1항에 있어서, 상기 블록-기반 인코더는 블록-프로세싱 파이프라인 및 레이트 제어 컴포넌트를 포함하고,
    상기 레이트 제어 컴포넌트는 상기 주파수 대역들의 각각에 대한 상기 양자화 파라미터들의 상기 결정을 수행하도록 구성되고, 상기 양자화 파라미터들을 상기 블록 프로세싱 파이프라인에 제공하도록 추가로 구성되고;
    상기 블록 프로세싱 파이프라인은 상기 현재 비디오 프레임의 상기 주파수 블록들에 상기 인코딩 기법을 적용하도록 구성된, 비디오 인코딩 시스템.
  10. 방법으로서,
    하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은:
    현재 비디오 프레임으로부터의 픽셀 블록들에 웨이브렛 변환을 적용하여 상기 픽셀 블록들을 복수의 주파수 대역들로 분해하는 단계;
    상기 복수의 주파수 대역들에 대한 주파수 데이터를 주파수 블록들에 저장하는 단계;
    상기 주파수 블록들 내의 상기 주파수 데이터를 분석하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 걸쳐 복잡성 통계들을 계산하는 단계;
    이전 비디오 프레임으로부터의 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 양자화 파라미터들을 결정하는 단계;
    상기 주파수 블록들에 인코딩 기법을 적용하는 단계 - 상기 인코딩 기법은 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 결정된 양자화 파라미터들을 사용하여 상기 주파수 블록들 내의 상기 주파수 데이터를 압축함 -; 및
    상기 압축된 주파수 데이터를 무선 연결을 통해 수신 디바이스로 송신하는 단계를 구현하도록 구성된, 방법.
  11. 제10항에 있어서, 상기 이전 비디오 프레임으로부터의 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 양자화 파라미터들을 결정하는 단계는:
    상기 이전 비디오 프레임의 상기 중심와 영역에 기초하여 상기 현재 비디오 프레임의 영역을 결정하는 단계; 및
    상기 현재 비디오 프레임의 상기 결정된 영역이 상기 결정된 영역 외측에 있는 상기 현재 비디오 프레임의 주변 영역보다 더 높은 해상도를 제공하도록 인코딩되도록, 상기 현재 비디오 프레임의 상기 결정된 영역에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하는 단계를 포함하는, 방법.
  12. 제10항에 있어서, 상기 이전 비디오 프레임으로부터의 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 양자화 파라미터들을 결정하는 단계는:
    상기 이전 비디오 프레임의 상기 중심와 영역에 따라 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들을 변조하는 단계; 및
    상기 현재 비디오 프레임에 대한 상기 복잡성 통계들과 조합하여 상기 이전 비디오 프레임으로부터의 상기 변조된 다른 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하는 단계를 포함하는, 방법.
  13. 제10항에 있어서, 상기 이전 비디오 프레임으로부터의 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 양자화 파라미터들을 결정하는 단계는:
    상기 이전 비디오 프레임의 공동-위치된 블록들을 인코딩하기 위해 사용되었던 실제 비트 수를 결정하기 위해 상기 이전 비디오 프레임에 대한 통계들을 검사하는 단계; 및
    상기 현재 비디오 프레임에 대한 상기 복잡성 통계들과 조합하여 상기 이전 비디오 프레임의 상기 공동-위치된 블록들을 인코딩하기 위해 사용되었던 상기 결정된 실제 비트 수에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임에 대한 상기 양자화 파라미터들을 결정하는 단계를 포함하는, 방법.
  14. 제10항에 있어서, 상기 복잡성 통계들은 픽셀 그레이디언트 정보 또는 상기 주파수 블록들 중 다른 주파수 블록에 대한 상기 주파수 블록들 중 적어도 하나의 크기의 분산 중 하나 이상을 포함하는, 방법.
  15. 제10항에 있어서, 상기 무선 연결에 대한 현재 이용 가능한 비트 레이트를 추적하는 단계를 추가로 포함하며, 상기 주파수 대역들에 대한 상기 양자화 파라미터들을 결정하는 단계는 상기 복수의 주파수 대역들의 각각의 주파수 대역들 중에서 상기 현재 이용 가능한 비트 레이트를 할당하는 단계를 포함하는, 방법.
  16. 제10항에 있어서, 상기 무선 연결에 대한 현재 이용 가능한 비트 레이트 및 상기 무선 연결 상의 현재 손실 패킷 레이트를 추적하는 단계를 추가로 포함하며, 상기 복수의 주파수 대역들에 대한 상기 양자화 파라미터들을 결정하는 단계는, 상기 현재 이용 가능한 비트 레이트에서의 이용 가능한 대역폭 사용을 최대화하면서 상기 손실 패킷 레이트를 최소화하기 위해 상기 복수의 주파수 대역들의 각각의 주파수 대역들에 대한 상기 양자화 파라미터들을 조정하는 단계를 추가로 포함하는, 방법.
  17. 시스템으로서,
    하나 이상의 프로세서들 및 디스플레이 서브시스템을 포함하는 디바이스; 및
    하나 이상의 프로세서들을 포함하는 기지국을 포함하고, 상기 하나 이상의 프로세서들은:
    현재 비디오 프레임으로부터의 픽셀 블록들에 웨이브렛 변환을 적용하여 상기 픽셀 블록들을 복수의 주파수 대역들로 분해하고;
    상기 복수의 주파수 대역들에 대한 주파수 데이터를 주파수 블록들에 저장하고;
    상기 주파수 블록들 내의 상기 주파수 데이터를 분석하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 걸쳐 복잡성 통계들을 계산하고;
    이전 비디오 프레임으로부터의 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 양자화 파라미터들을 결정하고;
    상기 주파수 블록들에 인코딩 기법을 적용하고 - 상기 인코딩 기법은 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 결정된 양자화 파라미터들을 사용하여 상기 주파수 블록들 내의 상기 주파수 데이터를 압축함 -;
    상기 압축된 주파수 데이터를 무선 연결을 통해 상기 디바이스로 송신하도록 구성되고;
    상기 디바이스의 상기 하나 이상의 프로세서들은:
    상기 기지국으로부터 수신된 상기 압축된 주파수 데이터를 압축해제하고;
    상기 비디오 프레임에 대한 상기 픽셀 데이터를 재구성하기 위해, 상기 압축해제된 주파수 데이터에 대해 웨이브렛 합성을 수행하고;
    디스플레이를 위해 상기 재구성된 픽셀 데이터를 상기 디스플레이 서브시스템에 제공하도록 구성된, 시스템.
  18. 제17항에 있어서, 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하기 위해, 상기 기지국의 상기 하나 이상의 프로세서들은 추가로:
    상기 이전 비디오 프레임의 상기 중심와 영역에 따라 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들을 변조하고;
    상기 현재 비디오 프레임에 대한 상기 복잡성 통계들과 조합하여 상기 이전 비디오 프레임으로부터의 상기 변조된 다른 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하도록 구성된, 시스템.
  19. 제17항에 있어서, 상기 이전 비디오 프레임으로부터의 상기 다른 복잡성 통계들 및 상기 이전 비디오 프레임의 상기 중심와 영역과 조합하여, 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들에 대한 상기 복잡성 통계들에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임의 상기 복수의 주파수 대역들의 상기 주파수 대역들 각각에 대한 상기 양자화 파라미터들을 결정하기 위해, 상기 기지국의 상기 하나 이상의 프로세서들은 추가로:
    상기 이전 비디오 프레임의 공동-위치된 블록들을 인코딩하기 위해 사용되었던 실제 비트 수를 결정하기 위해 상기 이전 비디오 프레임에 대한 추가 통계들을 검사하고;
    상기 현재 비디오 프레임에 대한 상기 복잡성 통계들과 조합하여 상기 이전 비디오 프레임의 상기 공동-위치된 블록들을 인코딩하기 위해 사용되었던 상기 결정된 실제 비트 수에 적어도 부분적으로 기초하여 상기 현재 비디오 프레임에 대한 상기 양자화 파라미터들을 결정하도록 구성된, 시스템.
  20. 제17항에 있어서, 상기 디바이스는 헤드-마운트 디스플레이(head-mounted display, HMD) 디바이스인, 시스템.
KR1020227033016A 2018-06-28 2019-06-27 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어 KR102541392B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862691427P 2018-06-28 2018-06-28
US62/691,427 2018-06-28
KR1020207036203A KR102449052B1 (ko) 2018-06-28 2019-06-27 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어
PCT/US2019/039586 WO2020006287A1 (en) 2018-06-28 2019-06-27 Rate control for low latency video encoding and transmission

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207036203A Division KR102449052B1 (ko) 2018-06-28 2019-06-27 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어

Publications (2)

Publication Number Publication Date
KR20220143127A KR20220143127A (ko) 2022-10-24
KR102541392B1 true KR102541392B1 (ko) 2023-06-13

Family

ID=67439354

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227033016A KR102541392B1 (ko) 2018-06-28 2019-06-27 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어
KR1020207036203A KR102449052B1 (ko) 2018-06-28 2019-06-27 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207036203A KR102449052B1 (ko) 2018-06-28 2019-06-27 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어

Country Status (6)

Country Link
US (2) US11451788B2 (ko)
JP (2) JP7249364B2 (ko)
KR (2) KR102541392B1 (ko)
CN (1) CN112313951A (ko)
DE (1) DE112019003203T5 (ko)
WO (1) WO2020006287A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11496758B2 (en) 2018-06-28 2022-11-08 Apple Inc. Priority-based video encoding and transmission
US11451788B2 (en) 2018-06-28 2022-09-20 Apple Inc. Rate control for low latency video encoding and transmission
EP3815368A1 (en) * 2018-06-28 2021-05-05 Apple Inc. Video encoding system
EP4005201A1 (en) * 2019-07-28 2022-06-01 Google LLC Methods, systems, and media for rendering immersive video content with foveated meshes
US11830168B2 (en) 2021-03-31 2023-11-28 Tobii Ab Method of compressing image data for network transport
CN114915773B (zh) * 2022-04-08 2023-03-07 中国科学技术大学 一种实现360°vr视频视场重叠失真最小化的稳健传输方法
US20240046410A1 (en) * 2022-08-02 2024-02-08 Qualcomm Incorporated Foveated scaling for rendering and bandwidth workloads

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071876A1 (en) * 2003-09-30 2005-03-31 Van Beek Petrus J. L. Wireless video transmission system
US20060215766A1 (en) * 2005-03-01 2006-09-28 Haohong Wang Region-of-interest coding in video telephony using RHO domain bit allocation

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09212623A (ja) 1996-01-30 1997-08-15 Fuji Photo Film Co Ltd 画像処理方法
IL117133A (en) 1996-02-14 1999-07-14 Olivr Corp Ltd Method and system for providing on-line virtual reality movies
JP4686516B2 (ja) 1997-12-05 2011-05-25 株式会社ユニバーサルエンターテインメント 遊技機
EP0940994B1 (en) * 1998-03-06 2014-04-16 Canon Kabushiki Kaisha Image processing apparatus and method and storage medium storing steps realizing such method
JP3597780B2 (ja) 1998-03-20 2004-12-08 ユニヴァーシティ オブ メリーランド 注目領域に対する有損失/無損失の画像符号化
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
AU762996B2 (en) 1999-02-09 2003-07-10 Motorola Australia Pty Ltd An image compression system and method of determining quantisation parameters therefor
KR100580158B1 (ko) 1999-06-12 2006-05-15 삼성전자주식회사 화상 패킷 전송을 위한 무선통신 시스템
US20030067476A1 (en) 2001-10-04 2003-04-10 Eastman Kodak Company Method and system for displaying an image
JP2003152544A (ja) 2001-11-12 2003-05-23 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
US7106907B2 (en) * 2002-10-18 2006-09-12 Mitsubishi Electric Research Laboratories, Inc Adaptive error-resilient video encoding using multiple description motion compensation
US6757434B2 (en) * 2002-11-12 2004-06-29 Nokia Corporation Region-of-interest tracking method and device for wavelet-based video coding
JP4151963B2 (ja) 2003-09-19 2008-09-17 株式会社リコー 画像サーバ装置、クライアント装置、動画像配信方法、プログラム、及び、情報記録媒体
US7623719B2 (en) 2003-09-26 2009-11-24 The Regents Of The University Of California Video encoding methods and devices
KR100654436B1 (ko) 2004-07-07 2006-12-06 삼성전자주식회사 비디오 코딩 방법과 디코딩 방법, 및 비디오 인코더와디코더
JP2006222555A (ja) 2005-02-08 2006-08-24 Matsushita Electric Ind Co Ltd 符号化装置及び符号化方法
US8503536B2 (en) * 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US20080062322A1 (en) * 2006-08-28 2008-03-13 Ortiva Wireless Digital video content customization
JP4254867B2 (ja) 2007-01-31 2009-04-15 ソニー株式会社 情報処理装置および方法、プログラム、並びに記録媒体
US8064708B2 (en) * 2007-02-28 2011-11-22 Arizona Board Of Regents On Behalf Of The University Of Arizona Methods and systems for remotely visualizing images
JP2009044483A (ja) * 2007-08-09 2009-02-26 Panasonic Corp 画像符号化装置
JP4979655B2 (ja) * 2008-08-07 2012-07-18 キヤノン株式会社 画像符号化装置及びその制御方法
US8406297B2 (en) * 2008-10-17 2013-03-26 Futurewei Technologies, Inc. System and method for bit-allocation in video coding
JP2010239288A (ja) * 2009-03-30 2010-10-21 Sony Corp 情報処理装置および方法
US8976856B2 (en) * 2010-09-30 2015-03-10 Apple Inc. Optimized deblocking filters
CN102056011B (zh) * 2010-12-29 2012-10-24 南京邮电大学 一种h264编码实时性能优化方法
US20140192862A1 (en) * 2013-01-07 2014-07-10 Research In Motion Limited Methods and systems for prediction filtering in video coding
US9215472B2 (en) * 2013-09-27 2015-12-15 Apple Inc. Parallel hardware and software block processing pipelines
US9531915B2 (en) * 2013-12-04 2016-12-27 Aspeed Technology Inc. Image encoding system and method thereof
US20150215621A1 (en) * 2014-01-30 2015-07-30 Qualcomm Incorporated Rate control using complexity in video coding
US10264269B2 (en) 2014-10-13 2019-04-16 Apple Inc. Metadata hints to support best effort decoding for green MPEG applications
US9872201B2 (en) 2015-02-02 2018-01-16 Accelerated Media Technologies, Inc. Systems and methods for electronic news gathering
JP6616592B2 (ja) * 2015-05-20 2019-12-04 日本放送協会 符号化装置及びそのプログラム
US20160353146A1 (en) 2015-05-27 2016-12-01 Google Inc. Method and apparatus to reduce spherical video bandwidth to user headset
KR20170017573A (ko) * 2015-08-07 2017-02-15 삼성전자주식회사 영상 데이터 처리 방법 및 이를 지원하는 전자 장치
JP6722995B2 (ja) 2015-10-23 2020-07-15 キヤノン株式会社 符号化方法及び符号化装置、撮像装置及びプログラム
US9955176B2 (en) 2015-11-30 2018-04-24 Intel Corporation Efficient and scalable intra video/image coding using wavelets and AVC, modified AVC, VPx, modified VPx, or modified HEVC coding
US10310266B2 (en) 2016-02-10 2019-06-04 Advanced Micro Devices, Inc. Method and system for streaming information in wireless virtual reality
US10169846B2 (en) 2016-03-31 2019-01-01 Sony Interactive Entertainment Inc. Selective peripheral vision filtering in a foveated rendering system
US9940697B2 (en) 2016-04-15 2018-04-10 Gopro, Inc. Systems and methods for combined pipeline processing of panoramic images
US11184624B2 (en) * 2016-05-19 2021-11-23 Qualcomm Incorporated Regional random access in pictures
US20180040164A1 (en) 2016-08-05 2018-02-08 Gopro, Inc. Apparatus and methods for selective coding of images
JP2018061141A (ja) * 2016-10-05 2018-04-12 富士通株式会社 通信装置および通信方法
KR102543444B1 (ko) * 2017-08-29 2023-06-13 삼성전자주식회사 영상 부호화 장치
US11451788B2 (en) 2018-06-28 2022-09-20 Apple Inc. Rate control for low latency video encoding and transmission

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071876A1 (en) * 2003-09-30 2005-03-31 Van Beek Petrus J. L. Wireless video transmission system
US20060215766A1 (en) * 2005-03-01 2006-09-28 Haohong Wang Region-of-interest coding in video telephony using RHO domain bit allocation

Also Published As

Publication number Publication date
KR20210009367A (ko) 2021-01-26
KR102449052B1 (ko) 2022-09-29
KR20220143127A (ko) 2022-10-24
US20230009707A1 (en) 2023-01-12
JP2021526774A (ja) 2021-10-07
JP2022180545A (ja) 2022-12-06
DE112019003203T5 (de) 2021-05-27
US11451788B2 (en) 2022-09-20
JP7249364B2 (ja) 2023-03-30
CN112313951A (zh) 2021-02-02
JP7490726B2 (ja) 2024-05-27
US20210127117A1 (en) 2021-04-29
WO2020006287A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
KR102541392B1 (ko) 저 레이턴시 비디오 인코딩 및 송신을 위한 레이트 제어
US11727619B2 (en) Video pipeline
US11914152B2 (en) Video compression methods and apparatus
US20230092305A1 (en) Priority-based video encoding and transmission
JP7441924B2 (ja) 動画符号化システム
US12010327B2 (en) Block-based low latency rate control

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right