KR20170139104A - 임의의 시야각을 위한 부분 디코딩 및 가상 현실 비디오를 위한 라인 버퍼 감소 - Google Patents

임의의 시야각을 위한 부분 디코딩 및 가상 현실 비디오를 위한 라인 버퍼 감소 Download PDF

Info

Publication number
KR20170139104A
KR20170139104A KR1020177033506A KR20177033506A KR20170139104A KR 20170139104 A KR20170139104 A KR 20170139104A KR 1020177033506 A KR1020177033506 A KR 1020177033506A KR 20177033506 A KR20177033506 A KR 20177033506A KR 20170139104 A KR20170139104 A KR 20170139104A
Authority
KR
South Korea
Prior art keywords
video frame
frame
video
width
solid surfaces
Prior art date
Application number
KR1020177033506A
Other languages
English (en)
Other versions
KR102189213B1 (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 KR20170139104A publication Critical patent/KR20170139104A/ko
Application granted granted Critical
Publication of KR102189213B1 publication Critical patent/KR102189213B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks

Landscapes

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

Abstract

비디오의 서브영역을 시청을 위해 선택할 때 비디오 프레임을 부분적으로 디코딩하는 장치 및 방법에 대해 개시한다. 방법은 서브 영역을 디스플레이하는 데 불필요한 것으로 식별되는 비디오 프레임의 데이터 유닛 및 픽셀 블록을 우회하면서 서브 영역을 디스플레이하는 데 필요한 비디오 프레임의 데이터 유닛 및 픽셀 블록을 식별 및 디코딩할 수 있다. 비디오 인코더는 풀 사이즈의 360VR 이미지에 대응하는 제1 구성에서 복수의 입체 표면을 포함하는 비디오 프레임을 수신한다. 각각의 입체 표면은 입체의 다른 표면에 대응한다. 인코더는 제1 구성과는 다른 제2 구성에 따라 복수의 입체 표면을 재배열함으로써 그 수신된 비디오 프레임을 다시 포맷한다. 제2 구성은 입체 360VR 이미지의 6개의 표면을 다시 배열하여 라인 버퍼를 완전히 활용하고 이 라인 버퍼를 풀 사이즈의 360VR보다 좁아지도록 한다.

Description

임의의 시야각을 위한 부분 디코딩 및 가상 현실 비디오를 위한 라인 버퍼 감소
본 출원은 2015년 10월 13일에 출원된 미국 가출원 No. 62/240,693, 2016년 10월 7일에 출원된 미국 가출원 No. 15/289,092 및 2015년 12월 14일에 출원된 미국 가출원 No. 62/266,764의 우선권을 주장하는 바이며, 상기 문헌들은 본 명세서에 원용되어 포함된다.
본 개시는 일반적으로 전자 장치에서의 비디오 인코딩 및 디코딩에 관한 것이며, 특히 임의의 시야각 및 영역을 허용하는 가상 현실 비디오 애플리케이션에 관한 것이다.
본 명세서에서 달리 지시되지 않는 한, 이 절에서 설명된 접근법은 하기 열거된 청구범위의 선행 기술이 아니며, 이 절에 포함됨으로써 선행 기술로 인정되지 않는다.
360도 가상 현실(360VR)은 변경되고, 확장되거나 대체된 환경에 대한 시청각 시뮬레이션이다. 비주얼 리얼리티 비디오는 사용자를 둘러쌈으로써 사용자가 마치 실제 생활에서 할 수 있는 것처럼 어떤 방향이나 임의의 시야각에서도 주변을 둘러볼 수 있다. 360VR 비디오는 엔터테인먼트, 조종사 훈련, 수술 및 우주 또는 심해 탐사와 같은 다양한 응용 프로그램에 있어서 인쇄 및 파노라마 가상 투어 제작에 사용하기 위한 탁월한 고품질 및 고해상도 파노라마 비디오를 제작한다.
다음의 요약은 단지 예시적인 것이며 어떤 식으로든 제한하려는 의도가 아니다. 즉, 다음의 요약은 여기에 설명된 새롭고 명백하지 않은 기술의 개념, 주요 특징, 장점 및 이점을 소개하기 위해 제공된다. 모든 구현이 선택되지는 않으며 상세한 설명에서 아래에 더 자세히 설명된다. 따라서, 다음의 요약은 청구된 주제의 본질적인 특징을 식별하기 위한 것이 아니며 청구된 주제의 범위를 결정하는데 사용하기 위한 것도 아니다.
본 개시의 일부 실시예는 비디오의 서브 영역을 시청을 위해 선택할 때 비디오 프레임을 부분적으로 디코딩하기 위한 장치 및 방법을 제공한다. 구체적으로, 본 발명에 따른 방법 또는 장치는 서브 영역을 디스플레이하는 데 불필요한 것으로 식별되는 비디오 프레임의 데이터 유닛 및 픽셀 블록을 우회하면서 서브 영역을 디스플레이하는 데 필요한 비디오 프레임의 데이터 유닛 및 픽셀 블록을 식별 및 디코딩할 수 있다.
일부의 실시예에서, 디코더는 비디오 프레임의 시퀀스에 있는 복수의 인코딩된 비디오 프레임을 수신할 수 있고, 각각의 비디오 프레임은 한 세트의 픽셀 블록을 포함한다. 비디오 프레임의 시퀀스는 마스터 프레임 및 슬레이브 프레임을 포함할 수 있는데, 슬레이브 프레임은 인코딩을 위해 마스터 프레임을 참조한다. 디코더는 복수의 비디오 프레임 중에서 특정 비디오 프레임의 서브 영역을 선택하는 지정을 수신할 수 있다. 특정 비디오 프레임이 마스터 프레임일 때, 디코더는 특정 프레임을 완전히 디코딩한다. 특정 비디오 프레임이 슬레이브 프레임일 때, 디코더는 그 지정에 의해 선택된 서브 영역을 포함하는 특정 비디오 프레임 내의 한 서브세트의 픽셀 블록을 디코딩함으로써 특정 프레임을 부분적으로 디코딩할 수 있다. 그런 다음 디코더는 디스플레이를 위해 특정 비디오 프레임의 디코딩된 픽셀 블록을 저장할 수 있다.
일부의 실시예에서, 인코더는 예를 들어 슬레이브 프레임 내의 인트라 코딩된 및/또는 인트라 예측된 블록의 수를 최소화함으로써 부분적인 디코딩에 의해 성능 이득을 최대화하는 인코딩된 비디오를 생성하도록 제한될 수 있다. 일부 실시예에서, 인코더는 슬레이브 프레임에서 인터 예측을 사용함으로써 인트라 코딩된 및/또는 인트라 예측된 블록의 수를 최소화할 수 있다. 일부 실시예에서, 인트라 예측된 블록의 이웃하는 블록이 모두 인터 예측된 블록인 경우 인코더는 인트라 예측된 블록을 허용할 수 있다. 일부 실시예에서, 비디오 인코더는 구형 형식 또는 입체 형식인 360VR 비디오 프레임을 수신할 수 있다. 수신된 360VR 비디오 프레임이 입체 형식인 경우, 비디오 프레임은 입체의 다른 면에 각각 대응하는 복수의 입체 면을 가진다. 비디오 인코더는 복수의 입체 면을 재배열함으로써 360VR 비디오 프레임을 다시 포맷할 수 있다. 다시 포맷된 비디오 프레임의 입체 면은 (i) 6면의 단일 열, (ii) 각각 3개의 입체 면의 2열 또는 (iii) 각각 3개의 입체 면의 2행으로 배열된다.
첨부 도면은 본 개시의 추가 이해를 제공하기 위해 포함되며, 본 개시에 통합되어 본 개시의 일부를 구성한다. 도면은 본 발명의 구현을 도시하고 상세한 설명과 함께 본 발명의 원리를 설명하는 역할을 한다. 본 발명의 개념을 명확하게 설명하기 위해 일부의 구성 요소는 실제 구현에서의 크기보다 과장되어 도시될 수 있으므로 도면이 반드시 실제 크기가 아니어도 무방하다.
도 1은 임의로 선택된 시야각 또는 영역에 기초하여 비디오 프레임의 부분 디코딩을 수행하는 비디오 디코딩 시스템을 도시한다.
도 2는 지정된 시청 영역에 기초하여 예시적인 비디오 프레임의 부분 디코딩을 개념적으로 도시한다.
도 3은 비디오 프레임을 서로 다른 유형의 인코딩된 데이터 유닛으로 분할하는 서로 다른 비디오 인코딩 표준하의 부분 디코딩을 도시한다.
도 4는 지정된 시청 영역에 대한 비디오 프레임의 시퀀스의 부분 디코딩을 도시한다.
도 5 및 도 6은 마스터 프레임과 슬레이브 프레임 간의 수 가지 유형의 예측 구조를 도시한다.
도 7은 임의로 지정된 시청 영역에 따라 슬레이브 프레임의 부분 디코딩을 수행하는 예시적 디코더를 도시한다.
도 8 및 도 9는 임의로 지정된 시청 영역에 기초해서 비디오 프레임의 부분 디코딩을 위한 프로세스를 개념적으로 도시한다.
도 10은 부분 디코딩에 의해 성능을 최대화하는 인코딩된 비디오를 생성하도록 제한될 수 있는 예시적 비디오 인코더를 도시한다.
도 11은 임의의 시청 영역에 대한 부분 디코딩에 최적화된 비디오를 인코딩하는 프로세스를 개념적으로 도시한다.
도 12는 구형 형식 및 입체 형식의 예시적 360VR을 도시한다.
도 13은 예시적 360VR의 저장 포맷을 확대하여 상세히 도시한다.
도 14는 풀 사이즈 360VR 이미지보다 좁은 라인 버퍼를 효과적으로 활용할 수 있게 하는 입체 360VR의 서로 다른 레이아웃을 도시한다.
도 15는 6개의 입체 360VR 면을 좁은 라인-버퍼의 사용을 허용하는 좁은 구성으로 재배열하는 비디오 인코더를 도시한다.
도 16은 더 좁은 라인 버퍼를 사용하면서 연속적인 입체 형식으로 원시 360VR 비디오 소스를 수신하는 비디오 인코더를 도시한다.
도 17은 인코딩 동안 1열 레이아웃으로 재배열되는 360VR 입체 프레임의 코딩을 도시한다.
도 18은 재배열된 프레임을 슬라이스, 타일 또는 서브비디오로 분할하는 것을 도시한다.
도 19는 인코딩 동안 2행 3열 레이아웃으로 재배열된 360VR 입체 프레임의 코딩을 도시한다.
도 20은 360VR 비디오를 재배열된 입체 면으로 디코딩하는 디코더를 도시한다.
도 21은 360VR 비디오를 입체 형식으로 인코딩 및 디코딩하기 위한 프로세스를 개념적으로 도시한다.
도 22는 본 개시의 일부의 실시예가 구현되는 전자 시스템을 개념적으로 도시한다.
도 23은 예시적인 디코더 장치를 도시한다.
도 24는 예시적인 인코더 장치를 도시한다.
다음의 상세한 설명에서, 다수의 특정 세부 사항은 관련 교시의 완전한 이해를 제공하기 위해 예로서 제시된다. 본 명세서에 개시된 교시들에 기초한 임의의 변형, 파생물 및/또는 확장은 본 개시의 보호 범위 내에 있다. 일부의 예에서, 본 명세서에 개시된 하나 이상의 예시적인 구현에 관한 잘 알려진 방법, 절차, 구성요소 및/또는 회로는 본 개시의 교시의 불필요한 모호한 관점을 회피하기 위해 세부 사항없이 비교적 높은 수준에서 서술될 수 있다.
360VR 비디오가 사용자를 둘러싸는 가상 환경을 인코딩하여도, 사용자는 통상적으로 특정한 시야각으로 비디오를 시청한다. 환언하면, 사용자가 비디오 전체 디스플레이 영역을 시청할 것으로 예상되는 종래의 플랫 비디오와는 달리, 360VR의 사용자는 비디오 전체 디스플레이 영역의 특정한 서브영역을 시청할 것으로 예상된다. 전체 프레임이 디코딩되어 시청하는 데 이용 가능하여도 그 프레임의 나머지 영역은 보이지 않을 것이다. 사용자가 전혀 볼 수 없는 픽셀을 디코딩하는 데 소모되는 컴퓨팅 자원이 그래서 낭비된다.
I. 임의의 시청 영역에 대한 부분 디코딩
본 개시의 일부의 실시예는 비디오의 서브영역을 시청을 위해 선택할 때 비디오 프레임을 부분적으로 디코딩하는 장치 및 방법을 제공한다. 구체적으로, 방법 및 장치는 서브 영역을 디스플레이하는 데 불필요한 것으로 식별되는 비디오 프레임의 데이터 유닛 및 픽셀 블록을 우회하면서 서브 영역을 디스플레이하는 데 필요한 비디오 프레임의 데이터 유닛 및 픽셀 블록을 식별 및 디코딩한다.
일부의 실시예에서, 도 1은 임의로 선택된 시야각 또는 영역에 기초하여 비디오 프레임의 부분 디코딩을 수행하는 비디오 디코딩 시스템(100)을 도시한다. 비디오 디코딩 시스템은 인코딩된 소스(110)로부터의 비디오 프레임을 디코딩하고, 그 디코딩된 비디오를 지정된 시야각으로 디스플레이(140)에서 표시한다. 디코딩 시스템(100)은 시야각의 시청 영역 지정(105)에 기초해서 부분 디코딩을 수행한다. 도시된 바와 같이, 비디오 디코딩 시스템(100)은 인코딩된 비디오 소스(110), 디코더(120), 디스플레이 버퍼(130), 사용자 인터페이스(150) 및 디스플레이 장치(140)를 포함한다. 일부의 실시예에서, 비디오 디코딩 시스템(100) 및 그 다양한 구성요소는 가상 현실 시스템(예를 들어, 가상 현실 고글(199))의 일부이다. 예를 들어, 사용자 인터페이스(150)는 사용자의 모션을 감지하고 기록하는 가상 현실 고글의 위치 센서 및 모션 센서의 콜렉션에 대응하고, 디스플레이 장치(140)는 가상 현실 고글의 뷰 스크린에 대응한다. 디코더(120), 디스플레이 버퍼(130) 및 인코딩된 비디오 소스(110)는 고글 내에 내장된 프로세싱 및 메모리 구성요소에 의해 실시된다.
인코딩된 비디오 소스(110)는 인코딩된 비디오(115)를 저장한다. 일부의 실시예에서, 인코딩된 비디오 소스(110)는 인코딩된 비디오(115)를 저장하는 저장 장치를 포함한다. 일부의 실시예에서, 인코딩된 비디오 소스(110)는 유선 또는 무선 통신 매체를 통해 외부 소스로부터 인코딩된 비디오(115)를 수신하는 통신 장치를 포함한다.
인코딩된 비디오(115)는 비디오를 나타내는 데이터이다. 비디오는 비트스트림의 형태로 인코딩되는데, 비디오 인코딩 표준, 예를 들어, H.26x (예를 들어, H.264, H.265, 등), VPx (예를 들어, VP8, VP9, 등)에 따라, 압축 포맷으로 비디오를 인코딩된다. 인코딩된 비디오는 픽처의 그룹(groups of pictures, GOP), 프레임의 그룹, 슬라이스의 그룹, 타일의 그룹, 및/또는 픽셀 블록의 그룹과 같은 다양한 인코딩된 데이터 유닛으로 조직된다.
인코딩된 데이터 유닛 중 일부는 다른 인코딩된 데이터 유닛과는 독립적으로 디코딩될 수 있다. 예를 들어, 인코딩된 프레임은 인코딩 또는 디코딩을 위한 동일한 프레임에서 다른 슬라이스(또는 타일)에 의존하지 않는 슬라이스(또는 타일)를 가질 수 있다. 그러한 인코딩된 프레임을 디코딩할 때, 디코더는 슬라이스를 병렬로 자유롭게 디코딩하거나 이전 슬라이스를 건너뛰어 나중의 슬라이스를 직접 디코딩할 수 있다.
디코더(120)는 인코딩된 비디오(115)를 수신하고 압축해제 및/또는 디코딩을 수행한다. 일부의 실시예에서, 디코더(120)는 인코딩된 비디오(115) 내의 다양한 인코딩된 데이터 유닛을 압축해제하고, 그런 다음 그 압축해제된 데이터 유닛의 데이터로부터 픽셀 블록을 재구성한다. 재구성된 픽셀 블록은 그런 다음 디스플레이 버퍼(130)에 위치하여 디스플레이 장치(140)에 의해 표시된다.
사용자 인터페이스(150)는 (예를 들어, 가상 현실 고글의 모션 또는 위치에 의해, 또는 다른 사용자 인터랙션에 의해) 사용자가 보는 서브영역 또는 사용자의 시야각을 나타내는 사용자 입력을 수신하고 그에 따라 시청 영역 지정(105)을 생성한다. 시청 영역 지정(105)은 디스플레이 영역 내의 시청 영역의 위치를 지정한다. (일부의 실시예에서, 시청 영역 지정(105)은 또한 시청 영역의 크기 및 형상을 지정한다). 사용자 인터페이스(150)는 디코더(120) 및 디스플레이 장치(140)에 시청 영역 지정(105)을 제공한다. 차례로, 디스플레이 장치(140)가 그 지정된 시청 영역을 표시하는 동안, 디코더는 필요한 데이터 유닛 및 픽셀 블록을 디코딩하여 시청 영역 지정(105)에 의해 지정된 시청 영역을 재구성한다.
도 2는 시청 영역 지정(예를 들어, 150)에 기초하여 예시적인 비디오 프레임(200)의 부분 디코딩을 개념적으로 도시한다. 예시적인 비디오 프레임(200)은 인코딩된 비디오(115)에 의해 제공되는 것과 같은 전체 해상도 비디오 프레임이다. 인코딩된 비디오(115)가 360VR 비디오인 경우, 예시적인 비디오 프레임(200)은 사용자를 둘러싸는 전체 가상 현실 디스플레이 영역을 나타낸다. 비디오 디코딩 시스템(100)의 디코더(120)에 의해 부분 디코딩이 수행된다.
도시된 바와 같이, 비디오 프레임(200)은 2차원 어레이의 픽셀 블록으로 분할된다. 각각의 픽셀 블록은 2차원 어레이의 픽셀이다. H.264 포맷에 따라 인코딩된 비디오에 있어서, 픽셀 블록을 매크로 블록(16x16 픽셀)이라 칭한다. H.265 포맷에 따라 인코딩된 비디오에 있어서, 픽셀 블록을 64x64 코딩 트리 유닛이라 칭하고, 쿼드 트리로 세분될 수 있다. VP9에 있어서, 픽셀 블록을 64x64 슈퍼블록이라 한다.
비디오 프레임(200)은 또한 수 개의 서로 다른 파티션(211-214)으로 분할되고, 각각의 파티션은 인코딩된 비디오(115) 내의 각각의 인코딩된 데이터 유닛에 대응한다. 예시적인 비디오 프레임(200)에 있어서, 인코딩된 데이터 유닛 각각은 슬라이스에 대응한다. (도 3은 아래에 설명되는 바와 같이, 각각의 인코딩된 데이터 유닛이 H.265에서의 타일 또는 VP9에서의 한 그룹의 비디오 내의 서브비디오에 대응하는 예시적인 비디오 프레임을 도시한다.) 각각의 인코딩된 데이터 유닛은 파티션 내의 픽셀 블록을 재구성하기 위해 인코딩된 데이터를 포함한다.
도시된 바와 같이, 시청 영역 지정(105)은 비디오 프레임(200)의 전체 중 일부를 차지하는 시청 영역(205)을 지정한다. 시청 영역(205)은 인코딩된 데이터 유닛(212 및 213) 뿐만 아니라 한 세트의 픽셀 블록(220)(빗금친 픽셀 블록으로 도시됨)과도 겹친다. 시청 영역(205)을 위해 프레임(200)을 부분적으로 디코딩할 때, 디코더(120)는 인코딩된 데이터 유닛(슬라이스)(212 및 213)을 압축해제하고 상기 한 세트의 픽셀 블록(220)을 재구성한다. 다른 픽셀 블록 및 인코딩된 데이터 유닛(211 및 214)은 부분 디코딩 프로세스 동안 우회되어 컴퓨팅 자원을 절감한다.
도 2의 예에서, 지정된 시청 영역(205)을 위해 비디오 프레임(200)을 부분적으로 디코딩할 때, 디코더(120)는 전체 슬라이스(212)를 압축해제하는데, 슬라이스(212)의 최종 픽셀 블록(221)이 지정된 시청 영역(205)과 겹치는 픽셀 블록 중 하나이기 때문에, 디코더는 전체 슬라이스(212)를 압축해제하여 픽셀 블록(221)을 재구성하는데 필요한 데이터를 획득한다. (전체 슬라이스(212)는 빗금으로 도시되어 있다.) 다른 한편, 슬라이스(213)의 최종 2개의 픽셀 블록(222 및 223)은 지정된 시청 영역(205)과 겹치지 않는다. 그러므로 이러한 2개의 픽셀 블록을 재구성할 필요가 없다. 결론적으로, 디코더는 픽셀 블록(224)(이것은 시청 영역(205)과 겹치는 슬라이스(213) 내의 최종 픽셀 블록이다)을 재구성하기 위해 인코딩된 데이터 유닛(213)으로부터 필요한 데이터를 가지자마자 인코딩된 데이터 유닛(213)을 압축해제하지 않는다.
언급한 바와 같이, 다른 비디오 인코딩 표준을 비디오 프레임을 복수의 인코딩된 데이터 유닛으로 분할하는데 다른 방식을 제공한다. 그렇지만, 필요한 인코딩된 데이터 유닛 및 픽셀 블록을 식별하고 디코딩하는 원리는 동일하다. 도 3은 비디오 프레임을 서로 다른 유형의 인코딩된 데이터 유닛으로 분할하는 서로 다른 비디오 인코딩 표준하의 부분 디코딩을 도시한다.
도 3은 3개의 서로 다른 유형의 분할을 위해 3개의 비디오 프레임(301, 302 및 303)의 부분 디코딩을 도시한다. 비디오 프레임의 각각의 파티션은 동일한 프레임 내의 다른 파티션과 독립적으로 디코딩될 수 있는 인코딩된 데이터 유닛이다. 비디오 프레임(301)은 (H.264 또는 H.265의) 타일(311-314)로 분할된다. 비디오 프레임(302)은 (H.265의) 타일(321-329)로 분할된다. 비디오 프레임(303)은 (H.264, H.265 또는 VP9의) 타일(331-335)로 분할된다. 도면은 이러한 프레임 각각이 시청 영역(350)을 식별하는 시청 영역 지정(105)에 응답해서 부분적으로 디코딩되는 것을 도시하고 있다.
도시된 바와 같이, 비디오 프레임(301)에 있어서, 부분 디코딩 작동은 슬라이스(312 및 313)가 시청 영역(350)과는 겹치지만 슬라이스(311 및 314)와는 겹치지 않기 때문에 슬라이스(311 및 314)의 디코딩을 건너뛰면서 슬라이스(312 및 313)를 디코딩한다. 비디오 프레임(302)에 있어서, 부분 디코딩 작동은 321, 322, 323, 326 및 329의 디코딩을 우회하면서 타일(324, 325, 327 및 328)을 디코딩한다. 비디오 프레임(303)에 있어서, 부분 디코딩 작동은 서브비디오(331, 332 및 333)의 디코딩를 우회하면서 서브비디오(334 및 335)를 디코딩한다.
보다 높은 코딩 효율을 달성하기 위해, 대부분의 비디오 인코딩 표준은 예측 코딩, 즉 다른 비디오 프레임 내의 픽셀 데이터를 참조함으로써(인터-예측) 또는 동일한 프레임의 다른 곳을 참조함으로써(인트라-예측) 픽셀 블록을 인코딩하는 것을 사용한다. 대조적으로, 인트라-코딩은 블록 외부의 정보를 참조하지 않고 픽셀 블록 내의 정보(예를 들어, 변환 샘플)만을 사용하여 픽셀 블록의 픽셀을 인코딩한다. 전통적으로, 다른 프레임을 참조하지 않는 프레임(즉, 모든 픽셀 블록이 인트라 코딩되거나 인트라 예측된 프레임)을 I-프레임으로 지칭하며, 픽셀 블록이 시간적 과거의 프레임을 참조할 수 있는 프레임을 P-프레임으로 지칭하며, 픽셀 블록이 시간적 과거 및 시간적 미래 모두에서 프레임을 참조할 수 있는 프레임을 B-프레임이라 자칭한다. 인코딩된 비디오는 일반적으로 I, P 및 B 유형 프레임을 포함하는 비디오 프레임 시퀀스이다.
일부의 실시예에서, 임의로 지정된 시청 영역에 대한 부분 디코딩은 예측 코딩을 사용하는 비디오 시퀀스상에서 구현된다. 이들 실시예 중 일부에서, 비디오 시퀀스 내의 프레임은 마스터 프레임 또는 슬레이브 프레임으로 분류된다. 마스터 프레임은 임의의 지정된 시청 영역에 협약 없이 완전히 디코딩된 프레임이며, 슬레이브 프레임은 시청 영역 지정에 기초해서 부분적으로 디코딩될 수 있는 프레임이다. 슬레이브 프레임의 픽셀 블록은 (모션 벡터를 사용하여) 마스터 프레임 내의 픽셀을 참조하지만 다른 슬레이브 프레임은 참조하지 않는 인터-예측 블록으로 인코딩될 수 있다.
도 4는 지정된 시청 영역에 대한 비디오 프레임의 시퀀스(400)의 부분 디코딩을 도시한다. 도시된 바와 같이, 비디오 프레임의 시퀀스(400)는 마스터 프레임과 슬레이브 프레임의 혼합이며, 마스터 프레임(411-414)과 슬레이브 프레임(421)을 포함한다. 비디오 디코딩 시스템은 시청 영역(405)에 대한 시청 영역 지정을 수신하였다.
시퀀스(400) 내의 마스터 프레임 각각은 지정된 시청 영역에 협약 없이 완전히 디코딩된다. 시청 영역의 지정은 사용자가 실시간으로 임의로 결정하므로, 마스터 프레임의 임의의 영역이 후속하는 슬레이브 프레임의 지정된 시청 영역에 의해 참조될 수 있기 때문에 마스터 프레임 각각을 완전히 디코딩 할 필요가 있다.
도 4는 시퀀스(400) 내의 예시적인 슬레이브 프레임(421)의 부분 디코딩 작동을 도시한다. 슬레이브 프레임(421)은 마스터 프레임(412 및 413)을 재구성을 위한 참조로서 사용한다. 슬레이브 프레임(421)은 지정된 시청 영역(405)에 기초해서 부분적으로 디코딩되며, 즉, 시청 영역(405)과 겹치는 슬레이브 프레임(421) 내의 픽셀 블록만이 디코딩되고 재구성된다(빗금으로 도시되어 있다). 픽셀 블록(431)은 시청 영역(405)과 겹치는 픽셀 블록 중 하나이므로 부분 디코딩 작동에 의해 디코딩되고 재구성된다. 예를 들어, 픽셀 블록(431)은 마스터 프레임(412 및 413) 내의 영역(441, 442 및/또는 443)(반드시 픽셀 블록일 필요는 없다)의 픽셀을 참조하는 인터 예측된 블록이다. 마스터 프레임(412 및 413) 내의 영역(441, 442 및/또는 443)이 반드시 지정된 시청 영역(405)과 겹칠 필요는 없다는 것은 주목할 가치가 있다. 따라서, 디코더는 지정된 시청 영역에 협약 없이 마스터 프레임을 완전히 디코딩한다.
도 5 및 도 6은 마스터 프레임과 슬레이브 프레임 간의 수 가지 유형의 예측 구조를 도시한다. 도 5는 상이한 마스터-슬레이브 예측 구조를 갖는 2개의 비디오 시퀀스(501 및 502)를 도시한다. 비디오 시퀀스(501)는 적어도 2개의 마스터 프레임(시간적 과거 및 시간적 미래)을 참조하는 양방향 예측을 사용함으로써 각각의 슬레이브 프레임이 인코딩되는, 즉 각각의 슬레이브 프레임이 B-프레임인 일반적인 예측 구조를 가진다. 비디오 시퀀스(502)는 이전의 마스터 프레임에 기초하여 순방향 예측만을 사용함으로써 각각의 슬레이브 프레임이 인코딩되는, 즉, 각각의 슬레이브 프레임이 P-프레임인 낮은 레이턴시 예측 구조를 가진다.
도 6은 상이한 마스터-슬레이브 예측 구조를 갖는 2개의 다른 비디오 시퀀스(601 및 602)를 도시한다. 비디오 시퀀스(601)는 각각의 슬레이브 프레임이 시간상으로 가장 가까운 마스터 프레임만을 예측 기준으로 사용하는 택일적 예측 구조를 갖는다. 비디오 시퀀스(602)는 적응형 예측 구조를 가지며, 장면 전환의 정보에 따라, 비디오 인코더는 어느 마스터 프레임(들)이 슬레이브-프레임을 인코딩하는 데 참조되는지를 결정할 수 있는데, 즉 슬레이브 프레임과 특정 마스터 프레임 사이에 시간상으로 장면 변경이 있는 경우, 슬레이브 프레임이 특정 마스터 프레임을 참조하지 않는다.
슬레이브 프레임을 부분적으로 디코딩하면 디코딩 시스템은 지정된 시청 영역 외부에 있어 사용자가 볼 수 없는 슬레이브 프레임 중 일부는 디코딩할 필요가 없다. 마스터 프레임은 여전히 완전히 디코딩되어야 하므로, 부분 디코딩에 의한 성능 이득은 마스터 프레임의 기간뿐만 아니라 지정된 시청 영역의 크기에 기초한다. 예를 들어 비디오의 해상도가 3840x2160이고 지정된 시청 영역의 크기가 1280x720이며(디코딩된 픽셀 블록이 영역 1536x864를 차지해야 할 수도 있음) 마스터 프레임 기간이 6이면(즉, 시퀀스 내의 6 프레임마다 하나의 마스터 프레임이 존재한다), 픽셀 블록의 단지 30%만이 디코딩되어야 한다.
일부의 예에서, 도 7은 임의로 지정된 시청 영역에 따라 슬레이브 프레임의 부분 디코딩을 수행하는 예시적 디코더를 도시한다. 구체적으로, 도면은 디코딩 시스템(100)의 디코더(120)을 확대해서 상세히 도시한다.
디코더(120)는 인코딩된 데이터 유닛을 압축 해제하고 픽셀 블록을 재구성하기 위한 구성요소를 포함한다. 다양한 구성요소는 사용자 인터페이스(150)에 의해 제공된 시청 영역 지정(105)에 따라 작동한다. 도시된 바와 같이, 디코더(120)는 (예를 들어, 비트 스트림 형태로) 인코딩된 비디오를 수신하고 디코딩된 비디오를 디스플레이 장치(140)에 의해 디스플레이 되도록 디스플레이 버퍼(130)에 저장한다. 디코더(120)는 파서(parser)(710), 픽셀 블록 디코더(720) 및 기준 프레임 버퍼(730)를 포함한다. 픽셀 블록 디코더(720)는 인트라 예측기(740) 및 인터 예측기(750)를 포함한다.
파서(710)는 비트 스트림 내의 인코딩된 데이터 유닛을 언패킹하기 위한 것이다. 일부의 비디오 표준의 경우, 인코딩된 데이터 유닛은 엔트로피 코딩을 기반으로 가변 길이 코딩(variable length coding, VLC)에 의해 무손실 압축된다. 따라서 파서를 가변 길이 디코더(variable length decoder, VLD)라고도 한다. 서로 다른 비디오 표준은 서로 다른 유형의 엔트로피 인코딩을 사용한다. 예를 들어 H.264는 Hoffman 코딩을 사용하고 H.265는 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC)을 사용한다. 최첨단 비디오 표준의 대부분은 CABAC 기반 엔트로피 코딩을 사용하여 코딩 비트를 줄인다. 프레임(구체적으로 슬레이브 프레임)을 부분적으로 디코딩할 때, 파서(710)는 지정된 시청 영역과 겹치는 어떠한 픽셀 블록도 포함하지 않는 인코딩된 데이터 유닛을 건너뛸 것이다.
픽셀 블록 디코더(720)는 인코딩된 데이터 유닛에 저장된 (그리고 압축되지 않은) 정보에 기초하여 픽셀 블록을 재구성하는 데 사용된다. 픽셀 블록 디코더(720)는 또한 일부의 픽셀 블록을 디코딩하기 위한 예측에 의존한다. 인트라-예측되는 픽셀 블록에 대해, (인트라-예측기(740)를 사용하여) 픽셀 블록 디코더(720)는 동일한 프레임 내의 인접한 픽셀 블록을 참조함으로써 픽셀 블록을 재구성한다. 인터-예측되는 픽셀 블록에 대해, (인터-예측기(750)를 사용하여) 픽셀 블록 디코더(720)는 다른 프레임을 참조함으로써 (예를 들어, 모션 벡터를 통해 모션 보상을 수행함으로써) 픽셀 블록을 재구성한다.
기준 프레임 버퍼(730)는 디코딩된 프레임 (및 디코딩된 프레임의 재구성된 픽셀 블록)을 저장한다. 부분 디코딩을 수행할 때, 마스터 프레임은 완전히 디코딩된 다음, 기준 프레임 버퍼(730)에 저장되어 슬레이브 프레임의 픽셀 블록을 재구성하기 위한 기준 프레임으로 기능한다.
언급된 바와 같이, 디코더의 다양한 구성요소는 사용자 인터페이스(150)를 통해 사용자에 의해 임의로 선택되는 시청 영역을 지정하는 시청 영역 지정(105)에 따라 부분 디코딩 작동을 수행한다. 시청 영역 지정(105)은 파서(710) 및 픽셀 블록 디코더(720)의 작동을 제어하는 데 차례로 사용된다. 시청 영역 지정(105)은 또한 디코딩된 비디오 프레임의 어느 영역이 디스플레이를 위한 시청 영역으로서 선택되는지를 알 수 있도록 디스플레이 장치(140)로 포워딩된다.
비디오 디코더(100)는 지정된 시청 영역을 표시하는 데 필요한 픽셀 블록 및 인코딩된 데이터 유닛을 식별한다. 도 7에서, 이 기능은 부분 디코딩 컨트롤러 모듈(125)로서 개념적으로 도시되어 있는데, 부분 디코딩 컨트롤러 모듈(125)은 시청 영역 지정(150)을 취하여 어느 인코딩된 데이터 유닛이 압축해제될 필요가 있는지를 파서(710)에 명령하고, 어느 픽셀 블록이 재구성될 필요가 있는지를 픽셀 디코더(720)에 명령한다. 일부의 실시예에서, 압축해제 할 인코딩된 데이터 유닛을 식별하는 기능은 파서(710)에 의해 수행되는데, 파서(710)는 인코딩된 데이터 유닛이 디코딩되어야 하는지 또는 건너뛰게 될 수 있는지를 결정하기 위해 시청 영역 지정(150)을 사용한다. 마찬가지로, 어떤 픽셀 블록이 디코딩되어야 하는지를 식별하는 기능은 픽셀 블록 디코더(720)에 의해 수행되며, 이것은 픽셀 블록이 재구성되어야 하는지 또는 건너뛰게 될 수 있는지를 결정하기 위해 시청 영역 지정(150)을 사용한다. 파서(710) 및 픽셀 블록 디코더(720)는 모두 마스터 프레임이 완전히 디코딩되는 것을 보장하기 위해 현재 디코딩된 프레임이 마스터 프레임인지 또는 슬레이브 프레임인지를 인식한다.
도 8 및 도 9는 임의로 지정된 시청 영역에 기초해서 비디오 프레임의 부분 디코딩을 위한 프로세스를 개념적으로 도시한다. 일부의 실시예에서, 디코딩 시스템(100)을 구현하는 하나 이상의 프로세싱 유닛은 프로세스(800) 또는 프로세스(900) 중 하나를 수행한다. 일부의 실시예에서, 프로세스(800 또는 900)를 수행하는 프로세싱 유닛은 디코딩 시스템(100)의 다양한 구성요소에 대응하는, 예를 들어 파서(710), 픽셀 블록 디코더(720), 부분 디코딩 컨트롤러(125) 등에 대응하는 모듈을 가지는 소프트웨어를 실행함으로써 그렇게 수행한다. 결과가 실질적으로 동일하다면, 프로세스의 단계들은 도 8 및 도 9에 도시된 정확한 순서대로 실행될 필요는 없다.
프로세스(800)는 디코딩 시스템(100)이 인코딩된 비디오(즉, 비트스트림)를 수신하고 디코딩 작동을 수행하여 개별 프레임을 재구성하고 표시할 때 시작한다.
프로세스(800)는 인코딩된 비디오에 따라 완전히 디코딩된 비디오 프레임의 서브영역인 시청 영역을 지정하는 임의의 시청 각(arbitrary view angle) 또는 시청 영역 선택을 수신한다(단계 810).
그런 다음 프로세스(800)는 현재 디코딩되고 있는 프레임이 슬레이브 프레임인지 또는 마스터 프레임인지를 결정한다(단계 820). 일부의 실시예에서, 비디오 비트 스트림의 인코더는 프레임이 비트스트림 내의 (부분 디코딩의 목적을 위한) 마스터 프레임 또는 슬레이브 프레임인지의 지정을 내장한다. 일부의 실시예에서, 디코더는 현재 디코딩된 프레임이 나중에 참조될지에 기초하여 현재 디코딩되는 프레임이 마스터 프레임인지 슬레이브 프레임인지 결정한다. 현재 디코딩되고 있는 프레임이 마스터 프레임이면, 프로세스는 단계 825로 진행한다. 현재 디코딩되고 있는 프레임이 슬레이브 프레임이면, 프로세스는 단계 830으로 진행한다.
단계 825에서, 프로세스(800)는 현재 프레임을 완전히 디코딩한다. 디코딩의 결과, 즉, 재구성된 픽셀 블록은 현재 프레임의 인트라 예측된 픽셀 블록을 재구성하기 위해 그리고 다른 프레임(슬레이브 프레임들 및 마스터 프레임들)에서 인터-예측된 픽셀 블록을 재구성하기 위해 참조 버퍼(예를 들어, 730)뿐만 아니라 디스플레이를 위한 디스플레이 버퍼(예를 들어, 130)에 저장된다. 일부의 실시예에서, 디코더 내의 저장 장치 또는 메모리 장치는 디스플레이 버퍼 및 참조 버퍼를 구현한다. 그런 다음 프로세스는 단계 870으로 진행한다.
단계 830에서, 프로세스(800)는 임의의 시청 영역을 포함하는 현재 프레임의 세트 픽셀 블록을 식별한다. 일부의 실시예에서, 픽셀 블록의 이 세트는 지정된 시청 영역을 포함할 수 있는 픽셀 블록의 최소 세트이다. 프로세스는 또한 식별된 세트의 픽셀 블록을 디코딩하는 데 필요한 한 세트의 인코딩된 데이터 유닛(또는 파티션)을 식별한다(단계 840). 일부의 실시예에서, 이 한 세트의 인코딩된 데이터 유닛은 지정된 시청 영역을 포함할 수 있는 인코딩된 데이터 유닛의 최소 세트이다.
그런 다음 프로세스(800)는 인코딩된 데이터 유닛의 식별된 세트를 디코딩하고(단계 850) 식별된 세트의 픽셀 블록을 디코딩하고 및/또는 재구성한다(단계 860). 일부의 실시예에서, 프로세스는 픽셀 블록의 식별된 세트를 재구성하기 위해 필요한 데이터를 얻기 위해 인코딩된 데이터 유닛을 디코딩한다. 재구성된 픽셀 블록은 디스플레이 장치가 디스플레이하기 위해 디스플레이 버퍼(130)에 저장된다. 이러한 재구성된 픽셀 블록은 지정된 시청 영역을 표시하는 데 필요한 것이다. 시청 영역 밖에 있는 픽셀 블록은 재구성되지 않는다. 그런 다음 프로세스는 단계 870으로 진행한다.
단계 870에서, 프로세스는 수신된 시청 영역 지정에 기초하여 임의로 선택된 시청 영역을 표시한다. 디코딩 시스템(100)에서, 디스플레이 장치(140)는 수신된 시청 영역 지정을 사용하여 디스플레이 버퍼(130)에서 디스플레이하기 위한 픽셀 데이터를 검색할 위치를 결정한다. 프로세스(800)는 종료된다.
프로세스(900)는 디코딩 시스템(100)이 인코딩된 비디오(즉, 비트 스트림)를 수신하고 디코딩 작동을 수행하여 개별 프레임을 재구성 및 표시할 때 시작한다.
프로세스(900)는 인코딩된 비디오에 따라 완전히 디코딩된 비디오 프레임의 서브영역인 시청 영역을 지정하는 임의의 시청 각 또는 시청 영역 선택을 수신한다(단계 910).
프로세스(900)는 현재 디코딩되고 있는 프레임이 슬레이브 프레임인지 또는 마스터 프레임인지를 결정한다(단계 920). 일부의 실시예에서, 비디오 비트 스트림의 인코더는 프레임이 비트 스트림 내의 (부분 디코딩의 목적을 위한) 마스터 프레임인지 또는 슬레이브 프레임인지의 지정을 내장한다. 일부의 실시예에서, 디코더는 현재 디코딩된 프레임이 나중에 참조될지에 기초하여 현재 디코딩되고 있는 프레임이 마스터 프레임인지 또는 슬레이브 프레임인지를 결정한다. 현재 디코딩되고 있는 프레임이 마스터 프레임이면, 프로세스는 단계 925로 진행한다. 현재 디코딩되고 있는 프레임이 슬레이브 프레임이면, 프로세스는 단계 930으로 진행한다.
단계 925에서, 프로세스는 현재 프레임을 완전히 디코딩한다. 디코딩의 결과, 즉, 재구성된 픽셀 블록은 현재 프레임의 인트라 예측된 픽셀 블록을 재구성하기 위해 그리고 다른 프레임(슬레이브 프레임 및 마스터 프레임)에서 인터-예측된 픽셀 블록을 재구성하기 위해 참조 버퍼(예를 들어, 730) 뿐만 아니라 디스플레이 버퍼(예를 들어, 130)에 저장된다. 프로세스(900)는 970으로 진행한다.
단계 930에서, 프로세스는 현재의 파티션 또는 디코딩되고 있거나 압축 해제되고 있는 인코딩된 데이터 유닛이 지정된 시청 영역과 겹치는지, 즉 지정된 영역을 표시하는 데 필요한 픽셀 블록을 가지는지를 결정한다. 만약 그렇다면, 프로세스는 단계 940으로 진행한다. 현재 파티션이 지정된 시청 영역과 겹치지 않으면, 프로세스 900은 단계 935로 진행한다.
단계 935에서, 프로세스(900)는 현재 파티션이 지정된 시청 영역에 대한 픽셀 블록을 재구성하는 데 필요한 픽셀 데이터를 포함하지 않기 때문에 다음 파티션에 대한 현재 파티션의 디코딩을 건너뛴다. 프로세스(900)는 단계 950으로 진행한다.
단계 940에서, 프로세스(900)는 시청 영역과 겹치는 모든 픽셀 블록이 디코딩될 때까지 현재의 파티션을 디코딩한다. 다시 말해, 현재 파티션의 디코드는 지정된 시청 영역과 겹치는 현재 파티션 내에 다른 픽셀 블록이 존재하지 않게 되자마자 멈춘다. 재구성된 픽셀 블록은 디스플레이 버퍼(130)에 저장되어 디스플레이 장치(140)에 의해 표시된다.
단계 950에서, 프로세스(900)는 아직 디코딩되지 않았거나 지정된 시청 영역을 보여주기 위해 불필요하다고 결정된 현재 프레임 내에 다른 파티션 또는 인코딩된 데이터 유닛이 있는지를 결정한다. 현재 프레임 내에 다른 파티션이 있다면, 프로세스는 단계 930으로 되돌아간다. 아니오이면, 프로세스(900)는 단계 970으로 진행한다.
단계 970에서, 프로세스는 수신된 시청 영역 지정에 기초하여 임의로 선택된 영역을 표시한다. 디코딩 시스템(100)에서, 디스플레이 장치(140)는 수신된 시청 영역 지정을 사용하여 디스플레이 버퍼(130)에서 표시하기 위해 픽셀 데이터를 검색할 위치를 결정한다. 프로세스(900)는 종료된다.
II. 임의의 시청 영역에 대한 인코딩 비디오
언급한 바와 같이, 슬레이브 프레임의 부분 디코딩은 지정된 시청 영역을 디스플레이하는 데 필요하지 않은 픽셀 블록 및 인코딩된 데이터 유닛을 건너뜀으로써 성능 이득을 달성한다. 환언하면, 비디오 디코딩 시스템이 우회하여 디코딩할 수 없는 픽셀 블록 및 인코딩된 데이터 유닛이 더 많을수록, 수행하는 부분 디코딩에 의해 더 많은 성능 이득이 달성된다. 따라서, 슬레이브 프레임 내의 인트라 예측된 픽셀 블록은 바람직하지 않은데, 그 이유는 동일한 프레임에서 인접한 픽셀 블록을 참조함으로써 시청 영역과 겹치는 픽셀 블록이 인트라 예측되는 경우, 그 픽셀 블록은 시청 영역과 겹치지 않아도 디코딩되어야 하기 때문이다. 다른 한편, 슬레이브 프레임의 인터 예측된 픽셀 블록은 더 바람직한데, 그 이유는 슬레이브 프레임의 인터 예측된 픽셀 블록이 지정된 시청 영역에 협약 없이 완전히 디코딩되거나 재구성된 마스터 프레임만 참조하기 때문이다.
본 발명의 일부의 실시예는 인트라-예측을 사용하여 인코딩되는 슬레이브 프레임 내의 픽셀 블록의 수를 최소화함으로써 부분 디코딩에 의한 성능 이득을 최대화하는 인코딩된 비디오를 생성하기 위해 제한될 수 있는 인코더를 제공한다. 일부의 실시예에서, 인코더는 슬레이브 프레임에서 인터-예측만을 사용함으로써 인트라-예측된 블록의 수를 최소화한다. 일부의 실시예에서, 인코더는 그것의 인접하는 블록 모두가 인터-예측되는 경우에 인트라 예측된 블록들을 허용할 수 있다. 이것은 슬레이브 프레임 내의 인트라 예측된 블록의 체인을 방지할 수 있다(인트라 예측된 블록의 체인은 시청 영역 밖으로 떨어지는 잠재적인 많은 픽셀 블록 역시 디코딩되어야 하기 때문에 부분 디코딩에 의한 성능 이득을 좌절시킬 것이다).
언급된 바와 같이, 프레임은 한 그룹의 슬라이스/타일/비디오로 분할될 수 있다. 비디오 프레임의 한 그룹의 슬라이스/타일에 있어서, 슬라이스/타일 간의 시각 품질은 시각적으로 다를 수 있다. 비디오 프레임의 한 그룹의 서브비디오에 있어서, 이러한 개별적인 서브비디오는 동시에 다른 프레임 유형을 가질 수 있을 것이다. 게다가, 서로 다른 서브비디오는 동시에 서로 다른 시각 품질을 가지도록 인코딩될 수 있다. 독립적인 파티션(예를 들어, 슬라이스/타일/서브비디오) 간의 파티션 경계에서 인공물을 위해, 본 발명의 일부의 실시예는 유사한 시각 품질 및/또는 동일한 프레임 유형을 동시에 가지도록 독립적인 파티션(예를 들어, 슬라이스/타일/서브비디오)을 요구하기 위해 제한될 수 있는 인코더를 제공한다. 일부의 실시예에서의 디코더는 뭉툭한 인공물을 더 제거하기 위해 포스트-필터를 구비한다.
도 10은 부분 디코딩에 의해 성능을 최대화하는 인코딩된 비디오를 생성하도록 제한될 수 있는 예시적 비디오 인코더(1000)를 도시한다. 비디오 인코더(1000)는 비디오 소스(1005)로부터 미가공의 인코딩되지 않은 비디오를 수신하고 저장 또는 전송을 위해 인코딩된 비디오(1090)를 생성한다. 비디오 인코더(1000)의 작동은 부분 디코딩에 최적화되어 있는 인코딩된 비디오를 인코더가 생성하도록 하기 위해 제한하는 부분 디코딩 최적화 모드(1050)를 겪게 된다.
도시된 바와 같이, 비디오 인코더(1000)는 픽셀 블록 인코더(1010), 양자화기(1020), 가변 길이 인코더(variable length encoder, VLE)(1030) 및 레이트 컨트롤러(1040)를 포함한다. 부분 디코딩 최적화 모드(1050)는 레이트 컨트롤러(1040) 및 픽셀 인코더(1010)의 작동을 제어한다.
픽셀 블록 인코더(1010)는 인트라 코딩, 인트라 예측 또는 인터 예측을 사용하여 각각의 픽셀 블록을 인코딩할 수 있다. 픽셀 블록 인코더(1010)는 양자화된 샘플로부터 픽셀 블록을 재구성함으로써 예측 코딩을 수행한다. 픽셀 블록 인코더(1010)는 또한 인터 예측을 수행하기 위해 (예를 들어, 모션 추정 및 모션 보상을 수행함으로써) 기준 프레임 버퍼(1015)를 포함한다.
일부의 실시예에서, 슬레이브 프레임을 선언된 부분 디코딩 최적화 모드(1050)로 인코딩할 때, 픽셀 블록 인코더(1010)는 인터 예측된 모드를 허용하되 인트라 예측과 같은 다른 모드는 허용하지 않는다. 일부의 실시예에서, 픽셀 블록 인코더(1010)는 또한 인트라 예측 모드를 허용하되 인접하는 픽셀 블록이 인터 예측되는 블록에 대해서만 허용한다.
양자화기(1020)는 변환된 샘플을 수치상으로 나타내는 방법을 결정한다. 양자화 그래뉼래리티(quantization granularity)가 미세할수록 비디오의 품질은 더 좋으나, 비트스트림 내의 데이터를 나타내는 데 더 많은 비트가 필요할 것이다. 일부의 실시예에서, 레이트 컨트롤러(1040)는 비트레이트 대 픽처 품질 트레이드-오프에 기초해서 양자화기(1020)의 동작을 제어한다.
가변 길이 인코더(VLE)(1030)는 양자화기(1020)의 출력을 취하여 엔트로피 인코딩(예를 들어, Huffman, CABAC 등)을 사용함으로써 무손실 압축을 수행한다.
레이트 컨트롤러(1040)는 양자화기(1020)를 사용해서 비트 레이트를 제어함으로써 비디오의 품질을 제어한다. 한 그룹의 슬라이스/타일/서브비디오로 분할되는 비디오에 있어서, 부분 디코딩 최적화 모드(1050)의 선언으로 레이트 컨트롤러(1040)는 유사한 시각 품질을 가지도록 서로 다른 슬라이스/타일/서브비디오의 비트레이트를 제어하게 된다.
도 11은 (임의의 시청 영역에 대한) 부분 디코딩에 최적화된 비디오를 인코딩하는 프로세스(1100)를 개념적으로 도시한다. 일부의 실시예에서, 인코더 시스템(1000)을 구현하는 하나 이상의 프로세싱 유닛은 프로세스(1100)를 수행한다. 일부의 실시예에서, 프로세스(1100)를 수행하는 프로세싱 유닛은 인코더(1000)의 다양한 구성요소에 대응하는, 예를 들어 픽셀 블록 인코더(1010), 양자화 기(1020), 가변 VLE(1030), 레이트 제어기(1040) 등에 대응하는 모듈을 가지는 소프트웨어를 실행함으로써 그렇게 수행한다. 결과가 실질적으로 동일하다면, 단계들이 도 11에 도시된 정확한 순서대로 실행될 필요는 없다.
프로세스(1100)는 인코더(1000)가 인코딩될 미가공 비디오를 수신할 때 시작한다. 프로세스(1100)는 미가공 비디오의 프레임을 수신한다(단계 1110). 본 발명의 실시예에서, 미가공 비디오는 360 VR 비디오이다. 프로세스(1100)는 또한 예를 들어 부분 디코딩 최적화 모드(1050)가 설정될 때, 인코딩된 비디오가 부분 디코딩을 위해 최적화되어야 하는지를 결정한다(단계 1120). 인코딩된 비디오가 부분 디코딩을 위해 최적화되는 경우, 프로세스(1100)는 단계 1130으로 진행한다. 그렇지 않은 경우, 프로세스(1100)는 단계 1145로 진행한다.
단계 1130에서, 프로세스(1100)는 서로 다른 파티션(예를 들어, 슬라이스/타일/서브비디오)에 대해 일정한 픽처 품질을 보장하도록 프레임의 각각의 파티션에 대한 레이트 제어를 조정한다.
단계 1140에서, 프로세스(1100)는 인코딩되고 있는 현재 프레임이 마스터 프레임인지 또는 슬레이브 프레임인지를 결정한다. 일부의 실시예에서, 인코더는 고정된 시간 간격으로 프레임을 마스터 프레임으로 지정한다. 일부의 실시예에서, 인코더는 프레임이 마스터 프레임인지 슬레이브 프레임인지를 결정하기 전에 프레임이 I, B 또는 P 프레임인지를 결정한다. 현재 인코딩되고 있는 프레임이 부분 디코딩의 목적을 위한 마스터 프레임인 경우, 프로세스는 1145로 진행한다. 현재 인코딩되는 프레임이 부분 디코딩의 목적을 위한 슬레이브 프레임인 경우, 프로세스(1100)는 단계 1150로 진행한다.
단계 1145에서, 프로세스(1100)는 픽셀 블록의 인코딩 유형에 대해 어떠한 특별한 요구 사항도 만들지 않는다. 픽셀 블록은 픽처 내용 또는 레이트 제어와 같은 고려 사항에 기초하여 인코더의 재량에 따라 인트라-코딩, 인트라-예측 또는 인터-예측될 수 있다. 프로세스(1100)는 단계 1160으로 진행한다.
단계 1150에서, 프로세스(1100)는 특정 인코딩 유형에 의해서만 인코딩될 각각의 픽셀 블록을 제한하는 설정을 설치한다. 일부의 실시예에서 그러한 설정은 인트라-예측을 허용하지 않으면서 인터-예측을 허용한다. 이러한 실시예 중 일부에서, 설정은 블록의 인접하는 픽셀 블록이 인터-예측에 의해 코딩될 때만 픽셀 블록의 인트라-예측을 허용할 것이다. 한 그룹의 서브비디오로 분할된 프레임의 경우, 설정을 통해 서로 다른 서브비디오 내의 픽셀 블록이 동일한 프레임 유형을 갖도록 한다. 프로세스(1100)는 단계 1160으로 진행한다.
단계 1160에서, 프로세스(1100)는 단계 1145 또는 1150에서 설치되는 인코딩 모드 설정에 따라 프레임의 픽셀 블록을 인코딩한다. 그런 다음 프로세스(1100)는 종료된다(또는 다른 미가공 비디오 프레임을 수신하기 위해 단계 1110으로 복귀한다).
III. 라인 버퍼 감소
언급한 바와 같이, 360VR은 사용자를 둘러싸는 시각적 리얼리티 비디오로, 사용자가 임의의 방향 또는 임의의 시야각으로 주변을 둘러볼 수 있게 한다. 360VR 콘텐츠의 이미지는 공통적으로 2D 이미지로 인코딩, 저장, 전송 및 디코딩된다. 360VR 이미지는 구형 형식으로 저장될 수 있는데, 사용자를 구형으로 둘러싸는 가상 현실 이미지가 정방형 방식(equirectangular fashion)으로 2차원 평면에 투영한다. 360VR 이미지는 또한 입체 형식으로 저장될 수도 있는데, 이것은 각각의 가상 현실 이미지가 6개의 입체 면(위, 아래, 왼쪽, 오른쪽, 앞, 뒤)으로 구성된다. 360VR 이미지가 구형 형식 또는 입체 형식으로 표시되는지에 협약 없이 이미지는 인코딩을 위해 픽셀 블록으로 분할된다. 도 12는 구형 형식(1210) 및 입체 형식(1220)의 예시적인 360VR 이미지를 도시한다. 이 도면은 또한 입체 형식(1220)의 상이한 표면들 (또는 면들) 간의 공간적 협약을 나타내는 입체(1230)를 도시한다.
도 13은 360VR 이미지의 저장 포맷을 확대하여 상세히 도시한다. 구체적으로, 도면은 입체 형식으로뿐만 아니라 구형 형식으로 360VR 이미지의 차원을 도시하고 있다. 도면은 또한 360VR 이미지의 파티셔닝을 입체 형식으로 도시한다.
도시된 바와 같이, 구형 형식(1310)으로 저장된 360VR 이미지는 입체 형식(1320)으로 변환된다. 입체 형식의 변환 이미지(1320)는 6개의 정방형 입체 면을 가지며, 각각의 입체 면은 W/4 픽셀의 폭 및 W/4 픽셀의 높이를 가지며, 전체 폭이 W 픽셀이고 높이가 3W/4 픽셀인 이미지가 생성된다. 이 예에서, 구형 형식의 소스 360VR 이미지(1310)는 W의 폭 및 W/2의 높이를 갖는 것으로 도시되어 있다. 그렇지만, 일부의 실시예에 있어서, 구형 형식의 소스 이미지와 그 대응하는 입체 형식의 변환 이미지 간의 해상도에는 고정된 협약이 없다.
이미지(1320)의 입체 형식의 6개의 면/파티션이 6개의 면의 이미지 내용이 연속적으로 되도록 배열되거나 레이아웃 되어 있다(즉, 임의의 2개의 인접한 면의 내용이 면의 공유 경계를 가로 질러 연속적이다)는 것은 주목할만한 가치가 있다. 수평 방향의 표면은 뒤쪽, 왼쪽, 앞쪽 및 오른쪽의 순서로 연속적이고, 수직 방향의 표면은 위쪽, 왼쪽 및 아래쪽의 순서로 연속적이다. 그렇지만, 이러한 배열은 또한 이미지(1320)에 어떠한 실제 픽셀 데이터도 없는 빈 영역을 남기는데(즉, 입체의 표면 중 하나가 아니다), 구체적으로 사각형의 맨 위 행(즉, "위쪽(up)" 파티션만 있는 행)을 따라 그리고 사각형의 마지막 행 (즉, "아래쪽(down)" 파티션만 있는 행)을 따라 빈 영역을 남긴다.
비디오 프레임을 재구성할 때, 120(또는 1000과 같은 비디오 인코더)과 같은 비디오 디코더는 인코더 또는 디코더의 메모리 또는 저장 장치에 의해 제공되는 라인 버퍼에 재구성된 픽셀 라인을 일시적으로 배치한다. 라인 버퍼에 저장되어 있는 재구성된 픽셀 데이터는 후속의 픽셀 블록을 인코딩/디코딩할 때 인트라-예측을 위한 기준 픽셀로서 작용한다. 이러한 라인 버퍼의 폭은 일반적으로 완전한 비디오 이미지의 폭과 동일하다. 따라서, 예를 들어, 360VR 이미지(1310 및 1320)의 디코딩 또는 인코딩을 지원하는 데 필요한 라인 버퍼의 폭은 W 픽셀이다.
라인 버퍼를 비용면에서 효과적으로 설계하기 위해, 일부의 실시예는 라인 버퍼가 전체 크기의 360VR 이미지보다 좁아질 수 있는 레이아웃으로 입체 360VR 이미지의 6개의 면을 배치한다. 도 14는 전체 크기 360VR 이미지보다 좁은 라인 버퍼를 효율적으로 사용할 수 있는 입체 360VR 이미지의 여러 레이아웃을 도시한다.
도 14는 4개의 상이한 레이아웃(1401-1404)을 도시한다. 제1 레이아웃(1401)은 비교를 위해 360VR 입체 이미지의 종래 배열을 도시한다. 라인 버퍼에 360VR 이미지의 전체 너비(예 : W 픽셀)가 있어야 한다.
제2 레이아웃(1402)은 360VR 입체 이미지의 6면이 단일 열로 배치되어 있는 배열을 도시한다. 이러한 레이아웃은 360VR 입체 이미지를 하나의 입체 면의 폭, 즉 W/4로 디코딩하는 데 필요한 라인 버퍼의 폭을 감소시킨다.
제3 레이아웃(1403)은 360VR의 입체 이미지의 6면이 3행 2열의 구성으로 배치되어 있는 구성을 도시한다. 이러한 레이아웃은 360VR 입체 이미지를 2개의 입체 면의 폭, 즉 W/2로 디코딩하는 데 필요한 라인 버퍼의 폭을 감소시킨다.
제4 레이아웃(1404)은 360VR 입체 이미지의 6개의 면이 2행 3열의 구성으로 배치되어 있는 구성을 도시한다. 이러한 레이아웃은 360VR 입체 이미지를 3개의 입체 면의 폭, 즉 3W/4의 폭으로 디코딩하는 데 필요한 라인 버퍼의 폭을 감소시킨다.
3개의 라인 버퍼 감소 레이아웃(1402 내지 1404) 각각에서, 6개 면의 내용이 반드시 연속적이지는 않다는 것은 주목할 가치가 있다. 예를 들어, 구성(1402)에서, UP, LT 및 BT(위쪽, 왼쪽 및 바닥)로 표식이 붙은 표면의 내용은 연속적지만 BT, FR, RT 및 BK(바닥, 앞쪽, 오른쪽 및 등)의 내용은 연속적이지 않다.
일부의 실시예에서, 360VR 비디오를 위한 인코더는 라인 버퍼 폭 절감 레이아웃(예를 들어, 레이아웃 1402-1404) 중 하나에서 비디오 소스를 수신하고 좁은 라인 버퍼(예를 들어, W/4)를 사용한다. 이것은 또한 디코더가 비디오를 디코딩할 때 대응하는 더 좁은 라인 버퍼를 사용할 수 있게 한다.
도 15는 입체 형식의 6개의 면이 인코딩 프로세스 동안 더 좁은 라인 버퍼의 사용을 허용하는 레이아웃으로 재배열되는 360VR 비디오를 인코딩하는 비디오 인코더를 도시한다. 도시된 바와 같이, 비디오 인코더(1000)는 입체 형식의 6개의 면이 재배열된 온-칼럼 레이아웃(1510), 즉 입체 면이 위, 왼쪽, 아래, 앞, 오른쪽, 뒤의 순서로 배열되어 있는 1402의 레이아웃에 있는 360VR 비디오 소스(1505)를 수신한다. 재배열된 비디오의 폭은 하나의 입체 면의 폭, 즉 W/4 픽셀이다. 인코딩 프로세스는 인트라-예측을 수행하는 데 필요한 재구성된 픽셀 라인을 저장하기 위해 라인 버퍼(1550)를 사용한다. 재배열된 프레임의 폭은 W/4 픽셀이므로 라인 버퍼의 너비 역시 W/4 픽셀이다.
인코딩 프로세스는 좁은 레이아웃에서 360VR 비디오의 6개의 입체 면을 포함하는 인코딩된 프레임을 저장하는 인코딩된 비디오(1090)를 생성한다. 일부의 실시예에서, 인코딩된 비디오(1090)는 H.264, H.265 또는 VP9와 같은 비디오 코딩 표준과 호환되는 비트 스트림의 형태를 취한다.
일부의 실시예에서, 비디오 인코더는 종래의 연속적인 입체 형식(즉, 도 14의 레이아웃 1401) 또는 구형 형식(즉, 도 13의 레이아웃 1310)으로 미가공 360VR 비디오 소스를 수신한다. 이러한 실시예 중 일부에서의 인코더(1000)는 6개의 입체 면을 재배열함으로써 미가공 360VR 비디오를 더 좁은 레이아웃(예를 들어, 1열 레이아웃 1402)으로 변환한다. 재배열된 입체 레이아웃을 가지는 변환된 비디오는 그런 다음 더 좁은 라인 버퍼를 사용하여 인코딩된다. 도 16은 좁은 라인 버퍼를 사용하면서 연속적인 입체 형식으로 미가공 360VR 비디오 소스를 수신하는 비디오 인코더를 도시한다.
도시된 바와 같이, 비디오 인코더(1000)는 종래의 연속적인 형식으로 미가공 360VR 비디오(1605)를 수신한다. 이 미가공의 종래의 연속적인 형식은 도 13을 참조하여 상술한 구형 형식(1310) 또는 입체 형식(1320)일 수 있다. 컨버터(1508)는 입체 형식의 6개의 면을 재배열함으로써 미가공 360VR 비디오를 다시 포맷한다. 이것은 1열 레이아웃(즉, 1402의 레이아웃)에서 재배열된 프레임을 가지는 변환된 비디오(1610)를 생성한다. 그런 다음 인코더(1000)는 라인 버퍼(1550)를 사용하여 변환된 비디오(1610)에 대해 인코딩 처리를 수행하는데, 이 라인 버퍼(1550)는 재배열된 프레임의 폭이 W/4 픽셀이기 때문에 W/4의 폭을 가진다.
도 17은 1열 레이아웃으로 재배열되는 360VR 입체 프레임(1700)의 코딩을 도시한다. 도시된 바와 같이, 재배열된 360VR 프레임(1700)은 픽셀 블록들로 분할되고, 픽셀 블록들은 래스터 스캔 순서로 인코딩/디코딩된다. 재배열된 프레임은 입체 면이 하나의 열만 가지기 때문에, 인코더는 한 입체 면의 픽셀 블록을 인코딩한 후 다음 입체 면의 픽셀 블록으로 진행하는데, 구체적으로(도 14의 레이아웃에 따라) 위쪽, 왼쪽, 아래쪽, 앞쪽, 오른쪽, 뒤쪽 순으로 진행합니다. 재배열된 프레임의 픽셀 블록은 슬라이스, 타일 또는 한 그룹의 비디오와 같은 인코딩된 데이터 유닛으로도 분할될 수 있다. 도 18은 재배열된 프레임(1700)을 (1801에서의) 슬라이스, (1802에서의) 타일, 또는 (1803에서의) 서브비디오로 분할하는 것을 도시한다.
언급한 바와 같이, 360VR 비디오의 6개의 입체 면은 3행 2열의 레이아웃(즉, 레이아웃 1403) 또는 2행 3열의 레이아웃(즉, 레이아웃 1404)으로 배열될 수 있다. 도 19는 인코딩 동안 2행 3열의 레이아웃으로 재배열되는 360VR 입체 프레임(1900)의 코딩을 도시한다.
도시된 바와 같이, 인코딩 프로세스는 픽셀 블록의 각각의 행을 따라 진행한다. (도 14의 예에 따라) 프레임의 상부 부근의 픽셀 블록의 행은 입체 면을 위, 오른쪽 및 아래로 이어지게 하고, 프레임 바닥 근처의 픽셀 블록의 행은 입체 면을 뒤, 왼쪽 및 앞으로 이어지게 한다. 각각의 행이 3개의 입체 면에 걸쳐 이어지기 때문에, 인코딩 및 디코딩에 필요한 라인 버퍼는 3W/4 픽셀이다. 도 19는 또한 재배열된 프레임 1900)을 슬라이스 1 내지 슬라이스 5로 분할하는 것을 도시한다. 각각의 슬라이스는 다수의 입체 표면을 걸쳐 이어지게 할 수 있다.
도 15를 다시 참조한다. 재배열된 360VR 프레임이 6개의 입체 면으로 구성되기 때문에, 일부의 실시예에서의 인코더는 재배열된 360VR 프레임의 모든 파티션 및 모든 입체 면이 유사한 비디오 품질을 가지도록 보장한다. 일부의 실시예에서, 인코더는 (레이트 컨트롤러(1040)에서) 레이트 제어를 수행하여 양자화기(1020)를 제어함으로써 상이한 파티션 및 상이한 입체 면이 유사한 품질을 가지도록 보장한다.
도 20은 재배열된 입체 면을 갖는 360VR 비디오를 디코딩하는 디코더를 도시한다. 구체적으로, 도면은 디코더(100)가 360VR 비디오를 디코딩하고 표시할 때, 라인 버퍼에 의한 메모리 사용을 감소시키기 위해 각각의 프레임의 입체 면이 재배열되는 것을 도시한다.
도시된 바와 같이, 비디오 디코더(120)는 입체 면이 라인 버퍼 폭을 줄이기 위해 재배열되는 인코딩된 360VR 프레임을 포함하는 인코딩된 비디오(110)를 (비트 스트림으로서) 수신한다. 도시된 예에서, 입체 표면은 1열 레이아웃(즉, 레이아웃 1402)에 있다.
파서(710)는 인코딩된 비디오(110)를 수신하여 파싱하고, 픽셀 블록 디코더 (720)는 각각의 프레임의 픽셀 블록을 재구성한다. 픽셀 블록 디코더(720)는 프레임(2010)을 재구성하기 위해 (750에서) 인트라 예측을 수행하는 데 사용되는 픽셀의 필요한 재구성된 라인을 일시적으로 저장하기 위한 라인 버퍼(2050)를 포함한다. 라인 버퍼(2050)는 W/4의 폭으로 되기만 하면 되는데, 그 이유는 프레임(2010)은 하나의 단일 열에 입체 면을 가지는 재배열된 프레임이기 때문이다.
픽셀 블록 디코더(720)는 재구성된 픽셀을 후속의 디코딩을 위해 기준 프레임 버퍼(730)에 저장하고 및/또는 디스플레이 장치(140)에 의한 표시를 위해 디스플레이 버퍼(130)에 저장한다. 일부의 실시예에서, 디스플레이 버퍼(130)는 재배열된 좁은 형식(즉, 레이아웃 1402)으로 재구성된 픽셀을 저장하고, 디스플레이 컨트롤러는 디스플레이 프레임(2090)을 원래의 연속적인 형식(예를 들어, 레이아웃 1401)으로 구성하기 위해 디스플레이 버퍼의 일부를 디스플레이(140)에 선택한다.
도 21은 입체 형식의 360VR 비디오를 인코딩 및 디코딩하는 프로세스(2101 및 2102)를 개념적으로 도시한다. 프로세스(2101)는 360VR 비디오를 인코딩하기 위한 것으로, 구체적으로 입체 360VR 비디오의 6개 면을 좁은 형식으로 재배열함으로써 인코딩하는 것이다. 일부의 실시예에서, 인코더(1000)는 360VR 비디오를 비트스트림으로 인코딩할 때 프로세스(2101)를 수행한다. 일부의 실시예에서, 인코더(1000)를 구현하는 하나 이상의 프로세싱 유닛은 프로세스(2101)를 수행하도록 구성된다. 일부의 실시예에서, 프로세스(2101)를 수행하는 프로세싱 유닛은 인코더(1000)의 다양한 구성요소에 대응하는, 예를 들어, 픽셀 블록 인코더(1010), 양자화 기(1020), 가변 VLE(1030), 레이트 제어기(1040), 재배열기(1508) 등에 대응하는 모듈을 가지는 소프트웨어를 실행함으로써 그렇게 수행할 수 있다. 결과가 실질적으로 동일하다면, 단계들은 도 21에 도시된 정확한 순서대로 실행될 필요는 없다.
프로세스(2101)는 미가공 360VR 비디오를 수신하면 시작한다(단계 2110). 미가공 360VR 비디오는 재배열된 프레임의 폭이 종래의 연속적인 입체 형식의 프레임보다 좁은 재배열된 입체 형식(예를 들어, 레이아웃 1402, 1403 또는 1404)으로 이미 존재하는 프레임을 가진다. 일부의 실시예에서, 미가공 360VR 비디오는 (도 13에 도시된 바와 같이) 종래의 연속적인 입체 형식 또는 구형 형식이다. 이러한 실시예의 일부에서의 프로세스(2101)는 비디오의 프레임을 종래의 연속적인 형식으로부터 재배열된 입체 형식 중 하나로 재배열한다.
그런 다음 프로세스(2101)는 좁은 라인 버퍼를 사용하여 (인트라 코딩 및 예측을 사용함으로써) 재배열된 프레임을 픽셀 블록으로서 인코딩한다(단계 2125). 일부의 실시예에서, 예측 부호화 동작은 양자화된 샘플들로부터 픽셀 블록의 재구성을 필요로 하고, 그 재구성은 재구성된 픽셀 블록을 일시적으로 저장하기 위해 라인 버퍼를 사용한다. 재배열된 프레임이 더 좁으면 라인 버퍼가 더 좁아질 수 있다.
프로세스(2101)는 인코딩된 픽셀 블록을 포함하는 인코딩된 데이터 유닛을 생성한다(단계 2130). 그러한 인코딩된 데이터 유닛은 프레임을 슬라이스, 타일 또는 한 그룹의 비디오로 분할한다. 그런 다음 프로세스(2101)는 인코딩된 데이터 유닛을 인코딩된 비디오, 즉 비트스트림으로서 저장하거나 전송한다(단계 2135). 그런 다음 프로세스(2101)는 종료한다.
프로세스(2102)는 프레임이 재배열된 좁은 형식(예를 들어, 프로세스(2101)에 의해 생성된 것)으로 입체 표면을 가지는 360VR 비디오의 비트스트림을 디코딩하기 위한 것이다. 일부의 실시예에서, 디코더(100)는 360VR 비디오를 디코딩하고 표시할 때 프로세스(2102)를 수행한다. 일부의 실시예에서, 디코더(100)를 구현하는 하나 이상의 프로세싱 유닛은 프로세스(2102)를 수행하도록 구성된다. 일부의 실시예에서, 프로세스(2102)를 수행하는 프로세싱 유닛은 디코딩 시스템의 다양한 구성요소에 대응하는, 예를 들어, 파서(710), 픽셀 블록 디코더(720), 부분 디코딩 컨트롤러(125) 등에 대응하는 모듈을 가지는 소프트웨어를 실행함으로써 그렇게 수행한다.
프로세스(2102)는 좁은 형식으로 재배열된 프레임을 가지는 360VR 비디오를 포함하는 인코딩된 비디오(즉, 비트스트림)를 수신하면 시작한다(단계 2150). 그런 다음 프로세스는 재배열된 프레임에 대해 비트스트림 내의 인코딩된 데이터 유닛을 파싱한다(단계 2155).
프로세스(2102)는 좁은 라인 버퍼를 사용하여 재배열된 프레임의 픽셀 블록을 재구성한다(단계 2160). 재구성은 재구성된 픽셀 블록을 라인 버퍼를 사용하여 일시적으로 저장한다. 재배치된 프레임이 더 좁으면 라인 버퍼가 더 좁아질 수 있다.
프로세스(2102)는 입체 면의 재구성된 픽셀 블록을 저장한다(단계 2165). 프로세스(2102)는 입체 형식의 6개의 면의 재구성된 픽셀에 기초하여 (예를 들어, 디스플레이 장치(140)에서) 360VR 비디오 프레임을 표시한다(단계 2175). 프로세스(2102)는 종료한다.
IV. 전자 시스템
전술한 특징 및 애플리케이션 중 많은 것은 컴퓨터 판독가능형 저장 매체(또한 컴퓨터 판독가능형 매체라고도 함) 상에 기록된 일련의 명령으로서 지정되는 소프트웨어 프로세스로서 구현된다. 이러한 명령이 하나 이상의 연산 또는 처리 유닛(들)(예를 들어, 하나 이상의 프로세서, 프로세서 코어 또는 다른 처리 유닛)에 의해 실행되면, 처리 유닛(들)으로 하여금 명령에서 지시하는 동작을 수행하게 한다. 컴퓨터 판독가능형 매체의 예로는 CD-ROM, 플래시 드라이브, 랜덤 액세스 메모리(random access memory, RAM) 칩, 하드 드라이브, 소거가능 프로그램 가능 판독 전용 메모리(EPROM), 전기적 소거가능 프로그램 가능 판독 전용 메모리(EEPROM) 등을 들 수 있으나, 이에 한정되지 않는다. 컴퓨터 판독가능형 매체는 무선 또는 유선 접속을 통해 전달되는 반송파 및 전자 신호를 포함하지 않는다.
본 명세서에서, "소프트웨어"라는 용어는 판독 전용 메모리에 상주하는 펌웨어 또는 프로세서에 의한 처리를 위해 메모리로 판독될 수 있는 자기 저장 장치에 저장된 애플리케이션을 의미한다. 또한, 일부의 실시예에서, 다수의 소프트웨어 발명은 별개의 소프트웨어 발명을 남기면서 큰 프로그램의 하위 부분으로서 구현될 수 있다. 일부의 실시예에서, 다수의 소프트웨어 발명은 또한 별개의 프로그램으로 구현될 수 있다. 마지막으로, 여기에 서술된 소프트웨어 발명을 함께 구현하는 개별 프로그램들의 임의의 조합은 본 개시의 범위 내에 있다. 일부의 실시예에서, 소프트웨어 프로그램은 하나 이상의 전자 시스템상에서 작동하도록 설치될 때, 소프트웨어 프로그램의 동작을 실행 및 수행하는 하나 이상의 특정 기계 구현을 정의한다.
도 22는 본 발명의 일부의 실시예가 구현되는 전자 시스템(2200)을 개념적으로 도시한다. 전자 시스템(2200)은 컴퓨터(예를 들어, 데스크톱 컴퓨터, 개인용 컴퓨터, 태블릿 컴퓨터 등), 전화, PDA 또는 임의의 다른 종류의 전자 장치일 수 있다. 이러한 전자 시스템은 다양한 유형의 컴퓨터 판독가능형 매체 및 다양한 다른 유형의 컴퓨터 판독 가능 매체를 위한 인터페이스를 포함한다. 전자 시스템(2200)은 버스(2205), 프로세싱 유닛(2210), 그래픽 처리 유닛(GPU)(2215), 시스템 메모리(2220), 네트워크(2225), 판독 전용 메모리(2230), 영구 저장 장치 및 출력 장치(2245)를 포함한다.
판독 전용 버스(2205)는 전자 시스템(2200)의 다수의 내부 장치를 통신 가능하게 연결하는 모든 시스템, 주변 장치 및 칩셋 버스를 집합적으로 나타낸다. 예를 들어, 버스(2205)는 프로세싱 유닛(들)(2210)을 GPU(2215), 판독 전용 메모리(2230), 시스템 메모리(2220) 및 영구 저장 장치(2235)와 통신 가능하게 연결한다.
이러한 다양한 메모리 유닛으로부터, 처리 유닛(들)(2210)은 본 개시의 프로세스를 실행하기 위해 실행할 명령 및 처리할 데이터를 검색한다. 프로세싱 유닛(들)은 상이한 실시예들에서 단일 프로세서 또는 멀티 코어 프로세서일 수 있다. 일부의 명령은 GPU(2215)에 전달되고 GPU(2215)에 의해 실행된다. GPU(2215)는 다양한 계산을 오프로드하거나 처리 유닛(들)(2210)에 의해 제공되는 이미지 프로세싱을 보완할 수 있다.
판독 전용 메모리(ROM)(2230)는 처리 시스템(들)(2210) 및 전자 시스템의 다른 모듈들이 필요로 하는 정적 데이터 및 명령을 저장한다. 한편, 영구 저장 장치(2235)는 판독 및 기록 메모리 장치이다. 이 장치는 전자 시스템(2200)이 꺼져 있어도 명령 및 데이터를 저장하는 비휘발성 메모리 장치이다. 본 발명의 일부의 실시예는 영구 저장 장치(2235)로서 (자기 또는 광학 디스크 및 그 대응하는 디스크 드라이브와 같은) 대량 저장 장치를 사용한다.
다른 실시예는 (플로피 디스크, 플래시 메모리 장치 등 및 그 대응하는 디스크 드라이브와 같은) 착탈식 저장 장치를 영구 저장 장치로서 사용한다. 영구 저장 장치(2235)와 마찬가지로, 시스템 메모리(2220)는 판독 및 기록 메모리 장치이다. 그렇지만, 저장 장치(2235)와는 달리, 시스템 메모리(2220)는 랜덤 액세스 메모리와 같은 휘발성 판독-기록 메모리이다. 시스템 메모리(2220)는 프로세서가 런타임에 필요로 하는 명령 및 데이터의 일부를 저장한다. 일부의 실시예에서, 본 발명에 따른 프로세스는 시스템 메모리(2220), 영구 저장 장치(2235) 및/또는 판독 전용 메모리(2230)에 저장된다. 예를 들어, 다양한 메모리 유닛은 일부의 실시예에 따라 멀티미디어 클립을 처리하기 위한 명령을 포함한다. 이러한 다양한 메모리 유닛으로부터, 처리 유닛(들)(2210)은 일부 실시예의 프로세스를 실행하기 위해 실행할 명령 및 처리할 데이터를 검색한다.
버스(2205)는 또한 입력 및 출력 장치(2240 및 2245)에 연결된다. 입력 장치(2240)는 사용자가 정보를 통신하고 전자 시스템에 명령을 선택할 수 있게 한다. 입력 장치(2240)는 문자숫자 키보드 및 포인팅 장치("커서 제어 장치"라고도 함), 카메라(예를 들어, 웹캠), 음성 명령을 수신하는 마이크 또는 유사한 장치 등을 포함한다. 출력 장치(2245) 전자 시스템에 의해 생성된 이미지를 표시하거나 그렇지 않으면 데이터를 출력한다. 출력 장치(2245)는 스피커 또는 유사한 오디오 출력 장치뿐만 아니라 음극선관(CRT) 또는 액정 디스플레이(LCD)와 같은 디스플레이 장치 및 프린터를 포함한다. 일부의 실시예는 입력 및 출력 장치로서 기능하는 터치스크린과 같은 장치를 포함한다.
마지막으로, 도 22에 도시된 바와 같이, 버스(2205)는 또한 네트워크 어댑터(도시되지 않음)를 통해 전자 시스템(2200)을 네트워크(2225)에 연결한다. 이러한 방식으로, 컴퓨터는 근거리 통신망("LAN"), 광역 통신망("WAN") 또는 인트라넷과 같은 컴퓨터의 네트워크의 일부이거나, 또는 인터넷과 같은 네트워크 중 네트워크의 일부일 수 있다. 전자 시스템(2200)의 일부 또는 전부는 본 개시와 관련하여 사용될 수 있다.
일부의 실시예는 기계 판독가능형 또는 컴퓨터 판독가능형 매체(대안적으로 컴퓨터 판독가능형 저장 매체, 기계 판독가능형 매체 또는 기계 판독가능형 저장 매체로 지칭됨)에 컴퓨터 프로그램 명령을 저장하는 마이크로프로세서, 저장 장치 및 메모리와 같은 전자 구성요소를 포함한다. 그러한 컴퓨터 판독가능형 매체의 일부 예로는 RAM, ROM, 판독 전용 컴팩트 디스크(read-only compact disc, CD-ROM), 기록가능형 컴팩트 디스크(recordable compact disc, CD-R), 재기록 가능한 컴팩트 디스크(rewritable compact disc, CD-RW), 판독 전용 디지털 다용도 디스크(예를 들어, DVD-ROM, 듀얼 레이어 DVD-ROM), 다양한 기록/재기록 가능한 DVD(DVD-RAM, DVD-RW, DVD+RW 등), 플래시 메모리(예를 들어, SD 카드, 미니 SD 카드, 마이크로 SD 카드 등), 자기 및/또는 솔리드 스테이트 하드 드라이브, 읽기 전용 및 기록 가능한 Blu-Ray® 디스크, 초고밀도 광학 디스크, 기타 광학 또는 자기 매체 및 플로피 디스크를 들 수 있다. 컴퓨터 판독가능형 매체는 적어도 하나의 프로세싱 유닛에 의해 실행 가능하고 다양한 작동을 수행하기 위한 명령 집합을 포함하는 컴퓨터 프로그램을 저장할 수 있다. 컴퓨터 프로그램 또는 컴퓨터 코드의 예로는 컴파일러에 의해 생성되는 것과 같은 기계 코드 및 컴퓨터, 전자 부품 또는 인터프리터를 사용하는 마이크로프로세서에 의해 실행되는 상위 레벨 코드를 포함하는 파일을 들 수 있다.
이상의 논의는 주로 소프트웨어를 실행하는 마이크로프로세서 또는 멀티 코어 프로세서를 언급하지만, 일부의 실시예는 ASIC(application specific integrated circuit) 또는 FPGA(field programmable gate arrays)와 같은 하나 이상의 집적 회로에 의해 수행된다. 일부의 실시예에서, 이러한 집적 회로는 회로 자체에 저장된 명령을 실행한다. 또한, 일부의 실시예는 프로그램 가능 논리 장치(programmable logic device, PLD), ROM 또는 RAM 장치에 저장된 소프트웨어를 실행한다.
본 명세서 및 본 출원의 청구 범위에서 사용된 바와 같이, "컴퓨터", "서버", "프로세서" 및 "메모리"라는 용어는 모두 전자 또는 다른 기술적 장치를 나타낸다. 이러한 용어들은 사람 또는 사람 군을 제외한다. 명세서의 목적을 위해, 디스플레이 또는 표시라는 용어는 전자 장치상에 표시하는 것을 의미한다. 본 명세서 및 본 출원의 청구 범위에서 사용된 바와 같이, "컴퓨터 판독가능형 매체", "컴퓨터 판독가능형 매체" 및 "기계 판독가능형 매체"라는 용어는 컴퓨터에 의해 판독 가능한 형태로 정보를 저장하는 유형의 물리적 객체로 완전히 제한된다. 이러한 용어들은 무선 신호, 유선 다운로드 신호 및 기타 임시 신호를 제외한다.
본 발명은 다수의 특정 세부 사항을 참조하여 서술되었지만, 당업자는 본 개시가 본 개시의 사상을 벗어나지 않으면서 다른 특정 형태로 구현될 수 있다는 것을 인식할 것이다. 또한, 도면의 숫자(도 8, 9, 11 및 21을 포함)는 프로세스를 개념적으로 보여준다. 이러한 프로세스의 특정 작동은 도시되고 설명된 정확한 순서대로 수행되지 않을 수 있다. 특정 작동은 하나의 연속적인 일련의 동작에서 수행될 수 없고, 다른 특정 작동이 다른 실시예에서 수행될 수 있다. 또한, 이 프로세스는 여러 하위 프로세스를 사용하여 구현되거나 큰 매크로 프로세스의 일부로 구현될 수 있다. 따라서, 당업자는 본 개시가 전술한 예시적인 세부 사항들에 의해 제한되지 않고 오히려 첨부된 청구 범위에 의해 정의되어야 함을 이해할 것이다.
예시적 장치
도 23은 본 개시의 일부의 구현예에 따른 예시적인 디코더 장치(2300)를 도시한다. 디코더 장치(2300)는 도 9 및 도 21을 참조하여 서술된 예시적인 프로세스(900 및 2102) 뿐만 아니라 도 2-6, 12-14, 17-19를 참조하여 설명된 예시적인 방식 및 시나리오, 및 도 7 및 도 20을 참조하여 서술된 예시적인 블록도를 포함하는, 본 명세서의 비디오 디코딩 시스템(100)에 대해 설명된 개념, 기술, 기법, 솔루션, 시나리오, 알고리즘, 접근, 프로세스 및 방법과 관련된 다양한 기능, 태스크 및/또는 작동을 수행할 수 있다.
디코더 장치(2300)는 도 23에 도시된 구성 요소 중 하나, 일부 또는 전부를 포함할 수 있다. 장치(2300)는 선택적으로 도 23에 도시되지 않은 추가 구성 요소(들)를 포함할 수 있다. 이러한 추가의 구성요소는 본 개시와는 관련이 없기 때문에, 장치(2300)의 동작에 필요할지라도, 설명을 모호하게 하는 것을 피하기 위해 도 23에 도시되지 않는다.
디코더 장치(2300)는 예를 들어 휴대용 장치(예를 들어, 스마트폰, 개인 휴대 정보 단말기, 디지털 카메라 등), 컴퓨팅 장치(예를 들어, 랩톱 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터 등) 또는 웨어러블 장치(를 들어, 스마트 워치, 스마트 팔찌, 스마트 목걸이 등)일 수 있는 전자 장치일 수 있으나 이에 한정되지 않는다. 대안적으로, 장치(2300)는 예를 들어 하나 이상의 단일 코어 프로세서, 하나 이상의 멀티 코어 프로세서, 하나 이상의 멀티 코어 프로세서 또는 하나 이상의 콤플렉스 명령 집합 컴퓨팅(complex-instruction-set-computing, CISC) 프로세서와 같은 하나 이상의 집적 회로(IC) 칩의 형태로 구현될 수 있으나 이에 한정되지 않는다.
디코더 장치(2300)는 통신 회로(2340), 변환 회로(2322) 및 디코더 회로(2324)를 포함하는 특수 목적의 회로를 포함한다. 디코더 회로(2324)는 인터 예측(740) 및 인트라 예측(750)을 포함하는, 파서(710) 및 픽셀 블록 디코더(720)의 작동을 수행한다. 디코더 회로(2324)는 또한 시청 영역(105)에 대한 지정을 포함할 수 있는 사용자 인터페이스(2350)로부터 입력 데이터를 수신한다. 컨버터 회로(2322)는 디코딩된 360VR 비디오 프레임을 좁은 입체 레이아웃(형식 1402, 1403 또는 1404)으로부터 표시를 위한 종래의 연속적인 입체 레이아웃(형식 1401 또는 1320) 또는 구형 레이아웃(형식 1310)으로 다시 포맷하도록 구성되어 있다. 통신 회로(2340)는 외부 소스와 통신하고 외부 소스로부터 인코딩된 비디오(110)(즉, 비트 스트림)를 수신하도록 구성되어 있다. (외부 소스는 외부 저장 장치 또는 네트워크일 수 있다). 일부의 실시예에서, 디코더 장치(2300)는 컨버터 회로(2322)를 구비하지 않으며, 디코더 장치는 디스플레이를 위해 디코딩된 비디오 프레임의 형식을 변경하지 않는다.
컨버터 회로(2322), 디코더 회로(2324) 및 통신 회로(2340)는 본 발명에 따라 특정 목적을 달성하도록 구성되고 배열되는, 하나 이상의 트랜지스터, 하나 이상의 다이오드, 하나 이상의 커패시터, 하나 이상의 저항, 하나 이상의 인덕터, 하나 이상의 인덕터, 하나 이상의 멤리스터 및/또는 하나 이상의 버랙터를 각각 포함할 수 있다.
디코더 장치(2300)는 또한 한 세트의 저장 또는 메모리 회로(2330)를 포함한다. 이러한 메모리 회로는 플립플롭, 래치, 레지스터 파일, 정적 및/또는 동적 랜덤 액세스 메모리를 포함할 수 있다. 메모리 회로(2330)는 기준 프레임 버퍼(730) 및 라인 버퍼(2050)를 구현한다. 일부의 실시예에서, 메모리 회로(2330)는 또한 디스플레이 버퍼(130)를 구현한다.
일부의 구현예에 있어서, 변환기 회로(2322), 디코더 회로(2324), 통신 회로(2340) 및 한 세트의 저장 또는 메모리 회로(2330)는 하나 이상의 프로세서의 통합 부분일 수 있다(그리고 예시를 위해 및 제한 없이, 이러한 회로는 프로세서(2310)의 통합 부분으로서 도시되어 있다). 프로세서는 본 개시에 따라 360VR 비디오 애플리케이션을 렌더링 또는 그렇지 않으면 디코딩하는 특수 알고리즘, 소프트웨어 명령, 계산 및 로직을 수행, 실행 또는 그렇지 않으면 집행하도록 설계되고 구성된 특수 목적 컴퓨팅 장치이다. 즉, 프로세서(2310)는 좁은 입체 레이아웃으로 되어 있는 360VR 비디오 프레임을 처리하는 것뿐만 아니라 360VR 비디오 프레임의 부분 디코딩과 같이 이전에 존재하지 않거나 이용 가능하지 않은 하나 이상의 새로운 방식으로 360VR 비디오의 디코딩을 렌더링하거나 그렇지 않으면 효과를 내도록 특별히 설계되고 구성된 특수 하드웨어 (및 선택적으로 특수 펌웨어)를 포함할 수 있다.
일부의 구현예에서, 장치(2300)는 디스플레이 장치(2360)를 포함할 수 있다. 디스플레이 장치(2360)는 텍스트, 그래픽 및/또는 비디오 이미지를 디스플레이하도록 구성될 수 있다. 일부의 구현예에서, 디스플레이 장치(240)는 플랫 패널 및/또는 터치 감지 패널일 수 있다. 디스플레이 장치(240)는 예를 들어, 액정 디스플레이(LCD), 플라즈마 디스플레이 패널(PDP), 발광 다이오드 디스플레이(LED), 유기 발광 다이오드(OLED), 전계 발광 디스플레이(ELD), 표면 전도 전계 방출 디스플레이(SED), 전계 방출 디스플레이(FED), 레이저, 탄소 나노 튜브, 양자점 디스플레이, 간섭계 변조기 디스플레이(IMOD) 및 디지털 마이크로 셔터 디스플레이(DMS)와 같은 임의의 적절한 기술에 의해 구현되지만 이에 한정되지 않는다. 디코더 회로(2324)는 디스플레이 장치(2360)에 동작 가능하게 연결되어 디스플레이 장치(2360)에 의해 표시될 360VR 비디오의 디코딩된 픽셀 데이터를 제공할 수 있다. 언급한 바와 같이, 디코딩된 픽셀 데이터는 표시되기 전에 디스플레이 버퍼(130)에 저장된다. 디스플레이 버퍼(130)는 저장 회로(2330) 또는 디스플레이 장치(2360)에서 구현될 수 있다.
도 24는 본 개시의 일부의 구현예에 따른 예시적인 인코더 장치(2400)를 나타낸다. 인코더 장치(2400)는 도 11 및 도 21을 참조하여 서술된 예시적인 프로세스(1100 및 2101) 뿐만 아니라 도 2-6, 12-14, 17-19를 참조하여 설명된 예시적인 방식 및 시나리오, 및 도 10, 15 및 도 16을 참조하여 서술된 예시적인 블록도를 포함하는, 본 명세서의 비디오 디코딩 시스템(100)에 대해 설명된 개념, 기술, 기법, 솔루션, 시나리오, 알고리즘, 접근, 프로세스 및 방법과 관련된 다양한 기능, 태스크 및/또는 작동을 수행할 수 있다.
인코더 장치(2400)는 도 24에 도시된 구성 요소들 중 하나, 일부 또는 전부를 포함할 수 있다. 장치(2400)는 선택적으로 도 24에 도시되지 않은 추가 구성 요소(들)를 포함할 수 있다. 이러한 추가의 구성요소는 본 개시와는 관련이 없기 때문에, 장치(2400)의 동작에 필요할지라도, 설명을 모호하게 하는 것을 피하기 위해 도 24에 도시되지 않는다.
인코더 장치(2400)는 예를 들어 휴대용 장치(예를 들어, 스마트폰, 개인 휴대 정보 단말기, 디지털 카메라 등), 컴퓨팅 장치(예를 들어, 랩톱 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터 등) 또는 웨어러블 장치(예를 들어, 스마트 워치, 스마트 팔찌, 스마트 목걸이 등)일 수 있는 전자 장치일 수 있으나 이에 한정되지 않는다. 대안적으로, 장치(2400)는 예를 들어 하나 이상의 단일 코어 프로세서, 하나 이상의 멀티 코어 프로세서, 하나 이상의 멀티 코어 프로세서 또는 하나 이상의 콤플렉스 명령 집합 컴퓨팅(CISC) 프로세서와 같은 하나 이상의 집적 회로(IC) 칩의 형태로 구현될 수 있으나 이에 한정되지 않는다.
인코더 장치(2400)는 통신 회로(2440), 변환 회로(2422) 및 디코더 회로(2424)를 포함하는 특수 목적의 회로를 포함한다. 인코더 회로(2424)는 (인터 예측(740) 및 인트라 예측(750)을 포함하는) 픽셀 블록 인코더(1010), VLE(1030), 레이트 컨트롤러(1040)의 작동을 수행한다. 인코더 회로(2424)는 또한 부분 디코딩 최적화 모드(1050)를 작동 가능하게 하는 제어 신호를 포함하는 입력 데이터를 사용자 인터페이스(2450)로부터 수신한다. 컨버터 회로(2422)는 미가공 360VR 비디오 프레임을 종래의 연속적인 입체 레이아웃(형식 1401 또는 1320) 또는 구형 레이아웃(형식 1310)으로부터 인코딩을 위한 좁은 입체 레이아웃(형식 1402, 1403 또는 1404)으로 다시 포맷하도록, 즉 입체 면을 재배열하기 위한 컨버터(1508)의 기능을 수행하도록 구성되어 있다. 통신 회로(2440)는 외부 소스와 통신하고 외부 소스로부터 미가공 비디오(1605)를 수신하도록 구성되어 있다. (외부 소스는 외부 저장 장치 또는 네트워크일 수 있다). 일부의 실시예에서, 인코더 장치(2400)는 컨버터 회로(2422)를 구비하지 않으며, 인코더 장치는 인코딩 이전에 미가공 비디오(1605)의 레이아웃 또는 형식을 변경하지 않는다.
변환기 회로(2422), 인코더 회로(2424) 및 통신 회로(2440)는 하나 이상의 본 발명에 따라 특정 목적을 달성하도록 구성되고 배열된, 하나 이상의 트랜지스터, 하나 이상의 다이오드, 하나 이상의 커패시터, 하나 이상의 저항, 하나 이상의 인덕터, 멤리스터 및/또는 하나 이상의 버랙터를 각각 포함할 수 있다.
인코더 장치(2400)는 또한 한 세트의 저장 또는 메모리 회로(2430)를 포함한다. 이러한 메모리 회로는 플립플롭, 래치, 레지스터 파일, 정적 및/또는 동적 랜덤 액세스 메모리를 포함할 수 있다. 메모리 회로(2430)는 기준 프레임 버퍼(1015) 및 라인 버퍼(1550)를 구현한다.
일부의 구현예에 있어서, 변환기 회로(2422), 인코더 회로(2424), 통신 회로(2440) 및 한 세트의 저장 또는 메모리 회로(2430)는 하나 이상의 프로세서의 통합 부분일 수 있다(그리고 예시를 위해 및 제한 없이, 이러한 회로는 프로세서(2410)의 통합 부분으로서 도시되어 있다). 프로세서는 본 개시에 따라 360VR 비디오 애플리케이션을 렌더링 또는 그렇지 않으면 디코딩하는 특수 알고리즘, 소프트웨어 명령, 계산 및 로직을 수행, 실행 또는 그렇지 않으면 집행하도록 설계되고 구성된 특수 목적 컴퓨팅 장치이다. 즉, 프로세서(2410)는 좁은 입체 레이아웃으로 되어 있는 360VR 비디오 프레임을 처리하는 것뿐만 아니라 360VR 비디오 프레임의 부분 디코딩과 같이 이전에 존재하지 않거나 이용 가능하지 않은 하나 이상의 새로운 방식으로 360VR 비디오의 디코딩을 렌더링하거나 그렇지 않으면 효과를 내도록 특별히 설계되고 구성된 특수 하드웨어 (및 선택적으로 특수 펌웨어)를 포함할 수 있다.
추가 참고 사항
본 명세서에 서술된 주제는 때로는 서로 다른 구성 요소 내에 포함되거나 이와 연결된 다른 구성 요소를 나타낸다. 이와 같이 도시된 구조는 단지 예시일 뿐이며, 사실 동일한 기능을 달성하는 많은 다른 구조가 구현될 수 있다는 것을 이해해야 한다. 개념적 의미에서, 동일한 기능을 달성하기 위한 구성 요소의 임의의 배열은 효과적으로 "관련"되어 원하는 기능이 달성된다. 따라서, 특정 기능을 달성하기 위해 결합된 임의의 2개의 구성 요소는 아키텍처 또는 중간 매개 구성요소와 협약 없이 원하는 기능이 달성되도록 서로 "관련된다"고 볼 수 있다. 마찬가지로, 이와 같이 관련된 임의의 2개의 구성 요소는 또한 원하는 기능을 달성하기 위해 서로 "작동 가능하게 접속된" 또는 "작동 가능하게 결합된" 것으로 볼 수 있으며, 이와 같이 관련될 수 있는 임의의 2개의 구성 요소는 또한 원하는 기능을 달성하기 위해 서로 "작동 가능하게 결합될 수 있는" 것으로 볼 수 있다. 작동 가능하게 결합될 수 있는 특정 실시예는 물리적으로 결합 가능한 및/또는 물리적으로 상호 작용하는 구성 요소 및/또는 무선으로 상호 작용 가능한 및/또는 무선으로 상호 작용하는 구성 요소 및/또는 논리적으로 상호 작용하는 및/또는 논리적으로 상호 작용 가능한 구성 요소를 포함하되 이에 한정되지 않는다.
또한, 본 명세서에서 실질적으로 임의의 복수 및/또는 단수 용어의 사용과 관련하여, 당업자는 문맥 및/또는 애플리케이션에 적절하게 되는 것으로 해서 복수에서 단수로 및/또는 단수에서 복수로 해석할 수 있다. 다양한 단수/복수의 순열은 명료성을 위해 본원에서 명백하게 설명될 수 있다.
또한, 당업자는 일반적으로, 본 명세서에서 사용된 용어, 특히 첨부된 청구 범위, 예를 들어 첨부된 청구범위의 본문은 일반적으로 "열린(open)" 용어로 의도되는데, 예를 들어 용어 "포함하는"은 "포함하되 이에 한정되지 않는"으로 해석되어야 하며, 용어 "가지는"은 "적어도 가지는"으로 해석되어야 하며, 용어 "구비하는"은 "구비하되 이에 한정되지 않는" 등으로 해석되어야 한다. 특정한 수의 도입된 청구항의 인용이 의도되는 경우, 그러한 인용은 그 청구항에서 명시적으로 언급될 것이며, 그러한 인용이 없을 경우 그러한 인용은 존재하지 않는다는 것을 당업자는 더 이해할 것이다. 예를 들어, 이해를 돕기 위해, 다음의 첨부된 청구 범위는 청구항 인용을 도입하기 위해 "적어도 하나" 및 "하나 이상"이라는 도입 문구의 사용을 포함할 수 있다. 그렇지만, 동일한 청구항이 "하나 이상" 또는 "적어도 하나"라는 도입 문구 및 "a" 또는 "an"과 같은 불명확한 조항을 포함할 때에도, 그러한 어구의 사용은 부정확한 조항 "a" 또는 "an"에 의한 청구항 인용의 도입이 그와 같이 도입된 청구항 인용을 포함하는 임의의 특정 청구항을 그러한 인용을 단지 하나만 포함하는 구현으로 제한한다는 것을 의미하는 것으로 해석되어서는 안 되며, 예를 들어 "a" 및/또는 "an"은 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 해석되어야 한다. 또한, 특정 수의 도입된 청구항 인용이 명시적으로 인용되더라도, 당업자는 그러한 인용이 적어도 인용된 번호를 의미하는 것으로 해석되어야 함을 인식할 것이며, 예를 들어, 다른 수식어 없이 "2개의 인용"의 암시된 인용은 적어도 2개의 인용 또는 2 이상의 인용을 의미한다. 또한 "A, B, C 등 중 적어도 하나"와 유사한 관례가 사용되는 예에서, 일반적으로 그러한 구성은 당업자가 그 관례를 이해할 것이라는 것으로 의도되며, 예를 들어 "A, B 및 C 중 적어도 하나를 가지는 시스템"은 A 단독, B 단독, C 단독, A와 B를 함께, A와 C를 함께, B와 C를 함께 및/또는 A, B와 C를 함께 등을 포함할 것이되 이에 한정되지 않는다. "적어도 하나의 A, B 또는 C 등"과 유사한 협약이 사용되는 예에서, 일반적으로 이러한 구조는 당업자가 그 협약을 이해할 것이라는 것으로 의도되며, 예를 들어, "A, B 또는 C 중 적어도 하나를 가지는 시스템"은 A 단독, B 단독, C 단독, A 및 B와 함께, A 및 C와 함께, B 및 C와 함께 및/또는 A, B 및 C와 함께 등을 포함할 것이되 이에 한정되지 않는다. 당업자는 2 이상의 대체 용어를 나타내는 가상적인 임의의 분리 단어 및/또는 구는 설명, 청구 범위 또는 도면에서 용어 중 하나, 용어 중 어느 하나 또는 두 용어 모두를 포함할 가능성이 고려되어야 하는 것으로 이해되어야 하는지를 더 이해할 수 있을 것이다. 예를 들어, "A 또는 B"라는 구는 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
전술한 내용으로부터, 본 개시의 다양한 구현예가 설명의 목적으로 본 명세서에 기재되었으며, 본 개시의 범위 및 사상을 벗어나지 않고 다양한 변형이 이루어질 수 있음을 이해할 것이다. 따라서, 여기에 개시된 다양한 구현예들은 제한하려는 의도가 아니며, 진정한 범위 및 사상은 다음의 청구 범위에 의해 지시된다.

Claims (27)

  1. 360도 가상 현실(360VR) 비디오를 표시하는 방법으로서,
    비디오 프레임의 시퀀스에 있는 복수의 인코딩된 비디오 프레임을 수신하는 단계 - 각각의 비디오 프레임은 한 세트의 픽셀 블록을 포함하고, 상기 비디오 프레임의 시퀀스는 마스터 프레임 및 슬레이브 프레임을 포함하며, 각각의 슬레이브 프레임은 인코딩을 위해 마스터 프레임 중 적어도 하나를 참조함 - ;
    상기 복수의 비디오 프레임 중 특정한 비디오 프레임의 서브영역을 선택하는 지정(specification)을 수신하는 단계;
    상기 특정한 비디오 프레임이 마스터 프레임일 때, 상기 지정에 의해 선택된 서브영역을 포함하는, 상기 특정한 비디오 프레임 내의 모든 픽셀 블록을 디코딩함으로써 상기 특정한 비디오 프레임을 완전히 디코딩하는 단계;
    상기 특정한 비디오 프레임이 슬레이브 프레임일 때, 상기 특정한 비디오 프레임 내의 한 서브세트의 픽셀 블록을 디코딩함으로써 상기 특정한 비디오 프레임을 부분적으로 디코딩하는 단계 - 상기 한 서브세트의 픽셀 블록을 디코딩하는 단계는 완전히 디코딩된 마스터 프레임을 참조하는 단계를 포함함 - ; 및
    상기 특정한 비디오 프레임의 디코딩된 픽셀 블록을 디스플레이를 위해 저장하는 단계
    를 포함하는 360VR 비디오를 표시하는 방법.
  2. 제1항에 있어서,
    각각의 비디오 프레임은 한 세트의 데이터 유닛으로서 인코딩되고,
    상기 특정한 비디오 프레임을 부분적으로 디코딩하는 단계는,
    상기 선택된 서브영역을 포함하는 상기 한 서브세트의 픽셀 블록을 디코딩해야 하는 상기 특정한 비디오 프레임에 대한 한 서브세트의 인코딩된 데이터 유닛을 디코딩하는 단계
    를 포함하는, 360VR 비디오를 표시하는 방법.
  3. 제2항에 있어서,
    상기 인코딩된 데이터 유닛 각각은 비디오 프레임의 슬라이스(slice) 또는 타일(tile)인, 360VR 비디오를 표시하는 방법.
  4. 제1항에 있어서,
    상기 한 서브세트의 픽셀 블록 내의 픽셀 블록 중 어느 것도 인트라 예측된 블록이 아닌, 360VR 비디오를 표시하는 방법.
  5. 제1항에 있어서,
    상기 특정한 비디오 프레임은 입체(cube)의 다른 면에 각각 대응하는 복수의 입체 면을 포함하는 입체 형식 또는 구형 형식인, 360VR 비디오를 표시하는 방법.
  6. 제5항에 있어서,
    상기 특정한 비디오 프레임이 입체 형식일 때, 상기 복수의 입체 면은 (i) 6개의 입체 면의 단일 열, (ii) 각각 3개의 입체 면의 2열 또는 (iii) 각각 3개의 입체 면의 2행으로 배열되는, 360VR 비디오를 표시하는 방법.
  7. 360도 가상 현실(360VR) 비디오를 표시하는 장치로서,
    비디오 프레임의 시퀀스에 있는 복수의 인코딩된 비디오 프레임을 수신하도록 구성되어 있는 통신 회로 - 각각의 비디오 프레임은 한 세트의 픽셀 블록을 포함하고, 상기 비디오 프레임의 시퀀스는 마스터 프레임 및 슬레이브 프레임을 포함하며, 각각의 슬레이브 프레임은 인코딩을 위해 마스터 프레임 중 적어도 하나를 참조함 - ;
    상기 복수의 비디오 프레임 중 특정한 비디오 프레임의 서브영역을 선택하는 지정을 수신하도록 구성되어 있는 디코더 회로 - 상기 특정한 비디오 프레임이 마스터 프레임일 때, 상기 디코더 회로는 상기 특정한 비디오 프레임 내의 모든 픽셀 블록을 디코딩함으로써 상기 특정한 비디오 프레임을 완전히 디코딩하며, 상기 특정한 비디오 프레임이 슬레이브 프레임일 때, 상기 디코더 회로는 상기 지정에 의해 선택된 서브영역을 포함하는, 상기 특정한 비디오 프레임 내의 한 서브세트의 픽셀 블록을 디코딩함으로써 상기 특정한 비디오 프레임을 부분적으로 디코딩하며, 상기 한 서브세트의 픽셀 블록을 디코딩하는 것은 완전히 디코딩된 마스터 프레임을 참조하는 것을 포함함 - ; 및
    상기 특정한 비디오 프레임의 디코딩된 픽셀 블록을 디스플레이를 위해 저장하도록 구성되어 있는 메모리 회로
    를 포함하는 360VR 비디오를 표시하는 장치.
  8. 제7항에 있어서,
    각각의 비디오 프레임은 한 세트의 데이터 유닛으로서 인코딩되고,
    상기 특정한 비디오 프레임을 부분적으로 디코딩하는 것은,
    상기 선택된 서브영역을 포함하는 상기 한 서브세트의 픽셀 블록을 디코딩해야 하는 상기 특정한 비디오 프레임에 대한 한 서브세트의 인코딩된 데이터 유닛을 디코딩하는 것
    을 포함하는, 360VR 비디오를 표시하는 장치.
  9. 제8항에 있어서,
    상기 인코딩된 데이터 유닛 각각은 비디오 프레임의 슬라이스 또는 타일인, 360VR 비디오를 표시하는 장치.
  10. 제7항에 있어서,
    상기 한 서브세트의 픽셀 블록 내의 픽셀 블록 중 어느 것도 인트라 예측된 블록이 아닌, 360VR 비디오를 표시하는 장치.
  11. 제7항에 있어서,
    상기 특정한 비디오 프레임은 입체의 다른 면에 각각 대응하는 복수의 입체 면을 포함하는 입체 형식 또는 구형 형식인, 360VR 비디오를 표시하는 장치.
  12. 제11항에 있어서,
    상기 특정한 비디오 프레임이 입체 형식일 때, 상기 복수의 입체 면은 (i) 6개의 입체 면의 단일 열, (ii) 각각 3개의 입체 면의 2열 또는 (iii) 각각 3개의 입체 면의 2행으로 배열되는, 360VR 비디오를 표시하는 장치.
  13. 방법으로서,
    360도 가상 현실(360VR) 비디오 프레임을 수신하는 단계; 및
    상기 비디오 프레임을 다시 포맷하는 단계
    를 포함하며,
    상기 다시 포맷된 비디오 프레임은 입체의 다른 면에 각각 대응하는 복수의 입체 면을 포함하며,
    상기 복수의 입체 면은 (i) 6개의 입체 면의 단일 열, (ii) 각각 3개의 입체 면의 2열 또는 (iii) 각각 3개의 입체 면의 2행으로 배열되는, 방법.
  14. 제13항에 있어서,
    상기 수신된 360VR 비디오 프레임은 구형 형식 또는 입체 형식이고, 상기 수신된 360VR 비디오 프레임이 입체 형식일 때, 상기 수신된 360VR 비디오 프레임의 복수의 입체 면은 제1 폭을 가지는 제1 레이아웃으로 배열되며, 상기 다시 포맷된 비디오 프레임의 입체 면은 제1 폭보다 좁은 제2 폭을 가지는 제2 레이아웃으로 배열되는, 방법.
  15. 제14항에 있어서,
    상기 제1 레이아웃의 제1 폭은 4개의 입체 면의 폭에 기초하는, 방법.
  16. 제14항에 있어서,
    상기 제2 레이아웃의 제2 폭은 1개의 입체 면 또는 2개의 입체 면의 폭에 기초하는, 방법.
  17. 제14항에 있어서,
    기준 픽셀을 라인 버퍼에 저장하고 상기 라인 버퍼에 저장되어 있는 기준 픽셀에 기초하여 예측 수행함으로써 상기 다시 포맷된 비디오 프레임을 인코딩하는 단계
    를 더 포함하며,
    상기 라인 버퍼의 폭은 제2 폭에 기초하는, 방법.
  18. 장치로서,
    360도 가상 현실(360VR) 비디오 프레임을 수신하도록 구성되어 있는 통신 회로; 및
    상기 비디오 프레임을 다시 포맷하도록 구성되어 있는 컨버터 회로
    를 포함하며,
    상기 다시 포맷된 비디오 프레임은 입체의 다른 면에 각각 대응하는 복수의 입체 면을 포함하며,
    상기 복수의 입체 면은 (i) 6개의 입체 면의 단일 열, (ii) 각각 3개의 입체 면의 2열 또는 (iii) 각각 3개의 입체 면의 2행으로 배열되는, 장치.
  19. 제18항에 있어서,
    상기 수신된 360VR 비디오 프레임은 구형 형식 또는 입체 형식이고, 상기 수신된 360VR 비디오 프레임이 입체 형식일 때, 상기 수신된 360VR 비디오 프레임의 복수의 입체 면은 제1 폭을 가지는 제1 레이아웃으로 배열되며, 상기 다시 포맷된 비디오 프레임의 입체 면은 제1 폭보다 좁은 제2 폭을 가지는 제2 레이아웃으로 배열되는, 장치.
  20. 제19항에 있어서,
    상기 제1 레이아웃의 제1 폭은 4개의 입체 면의 폭에 기초하는, 장치.
  21. 제19항에 있어서,
    상기 제2 레이아웃의 제2 폭은 1개의 입체 면 또는 2개의 입체 면의 폭에 기초하는, 장치.
  22. 제19항에 있어서,
    기준 픽셀을 라인 버퍼에 저장하고 상기 라인 버퍼에 저장되어 있는 기준 픽셀에 기초하여 예측 수행함으로써 상기 다시 포맷된 비디오 프레임을 인코딩하도록 구성되어 있는 인코딩 회로
    를 더 포함하며,
    상기 라인 버퍼의 폭은 제2 폭에 기초하는, 장치.
  23. 장치로서,
    360도 가상 현실(360VR) 비디오 프레임을 수신하도록 구성되어 있는 통신 회로 - 상기 수신된 비디오 프레임은 입체의 다른 면에 각각 대응하는 복수의 입체 면을 포함하며, 상기 특정한 비디오 프레임이 입체 형식일 때, 상기 복수의 입체 면은 (i) 6개의 입체 면의 단일 열, (ii) 각각 3개의 입체 면의 2열 또는 (iii) 각각 3개의 입체 면의 2행으로 배열됨 - ; 및
    360VR 비디오 프레임을 다시 포맷하도록 구성되어 있는 컨버터 회로
    를 포함하는 장치.
  24. 제23항에 있어서,
    상기 수신된 360VR 비디오 프레임의 복수의 입체 면은 제1 폭을 가지는 제1 레이아웃으로 배열되며, 상기 다시 포맷된 360VR 비디오 프레임은 구형 형식 또는 입체 형식이고, 상기 다시 포맷된 360VR 비디오 프레임이 입체 형식일 때, 상기 다시 포맷된 360VR 비디오 프레임의 복수의 입체 면은 제1 폭보다 좁은 제2 폭을 가지는 제2 레이아웃으로 배열되는, 장치.
  25. 제24항에 있어서,
    상기 제2 레이아웃의 제2 폭은 4개의 입체 면의 폭에 기초하는, 장치.
  26. 제24항에 있어서,
    상기 제1 레이아웃의 제1 폭은 1개의 입체 면 또는 2개의 입체 면의 폭에 기초하는, 장치.
  27. 제23항에 있어서,
    상기 수신된 360VR 비디오 프레임은 인코딩된 비디오 프레임이며,
    상기 장치는,
    기준 픽셀을 라인 버퍼에 저장하고 상기 라인 버퍼에 저장되어 있는 기준 픽셀에 기초하여 픽셀 블록 재구성을 수행함으로써 상기 인코딩된 비디오 프레임을 디코딩하도록 구성되어 있는 디코더 회로
    를 더 포함하며,
    상기 라인 버퍼의 폭은 제1 폭에 기초하는, 장치.
KR1020177033506A 2015-10-13 2016-10-13 임의의 시야각을 위한 부분 디코딩 및 가상 현실 비디오를 위한 라인 버퍼 감소 KR102189213B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562240693P 2015-10-13 2015-10-13
US62/240,693 2015-10-13
US201562266764P 2015-12-14 2015-12-14
US62/266,764 2015-12-14
US15/289,092 2016-10-07
US15/289,092 US20170026659A1 (en) 2015-10-13 2016-10-07 Partial Decoding For Arbitrary View Angle And Line Buffer Reduction For Virtual Reality Video
PCT/CN2016/101992 WO2017063566A1 (en) 2015-10-13 2016-10-13 Partial decoding for arbitrary view angle and line buffer reduction for virtual reality video

Publications (2)

Publication Number Publication Date
KR20170139104A true KR20170139104A (ko) 2017-12-18
KR102189213B1 KR102189213B1 (ko) 2020-12-10

Family

ID=57837531

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177033506A KR102189213B1 (ko) 2015-10-13 2016-10-13 임의의 시야각을 위한 부분 디코딩 및 가상 현실 비디오를 위한 라인 버퍼 감소

Country Status (6)

Country Link
US (1) US20170026659A1 (ko)
EP (2) EP3334162B1 (ko)
JP (1) JP6560367B2 (ko)
KR (1) KR102189213B1 (ko)
CN (2) CN108141611A (ko)
WO (1) WO2017063566A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102465403B1 (ko) * 2022-01-24 2022-11-09 김태경 2d영상 및 360도 영상이 조합된 동영상 콘텐츠를 제공하는 방법 및 장치

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10410376B1 (en) * 2016-09-26 2019-09-10 Amazon Technologies, Inc. Virtual reality media content decoding of portions of image frames
US10412412B1 (en) * 2016-09-30 2019-09-10 Amazon Technologies, Inc. Using reference-only decoding of non-viewed sections of a projected video
CN107945101B (zh) * 2016-10-13 2021-01-29 华为技术有限公司 图像处理方法和装置
EP3823273A1 (en) 2016-11-17 2021-05-19 Intel Corporation Spherical rotation for encoding wide view video
JP7146747B2 (ja) 2016-11-17 2022-10-04 インテル コーポレイション パノラマビデオのための提案されるビューポート指示
US10999602B2 (en) 2016-12-23 2021-05-04 Apple Inc. Sphere projected motion estimation/compensation and mode decision
US10609356B1 (en) 2017-01-23 2020-03-31 Amazon Technologies, Inc. Using a temporal enhancement layer to encode and decode stereoscopic video content
US11259046B2 (en) 2017-02-15 2022-02-22 Apple Inc. Processing of equirectangular object data to compensate for distortion by spherical projections
US10924747B2 (en) 2017-02-27 2021-02-16 Apple Inc. Video coding techniques for multi-view video
US10506196B2 (en) 2017-04-01 2019-12-10 Intel Corporation 360 neighbor-based quality selector, range adjuster, viewport manager, and motion estimator for graphics
US10467775B1 (en) * 2017-05-03 2019-11-05 Amazon Technologies, Inc. Identifying pixel locations using a transformation function
US11093752B2 (en) 2017-06-02 2021-08-17 Apple Inc. Object tracking in multi-view video
US20190005709A1 (en) * 2017-06-30 2019-01-03 Apple Inc. Techniques for Correction of Visual Artifacts in Multi-View Images
US10754242B2 (en) * 2017-06-30 2020-08-25 Apple Inc. Adaptive resolution and projection format in multi-direction video
US20190007672A1 (en) * 2017-06-30 2019-01-03 Bobby Gene Burrough Method and Apparatus for Generating Dynamic Real-Time 3D Environment Projections
US10484682B2 (en) * 2017-07-03 2019-11-19 Qualcomm Incorporated Reference picture derivation and motion compensation for 360-degree video coding
US10614609B2 (en) * 2017-07-19 2020-04-07 Mediatek Inc. Method and apparatus for reduction of artifacts at discontinuous boundaries in coded virtual-reality images
CN109426332B (zh) * 2017-08-23 2023-02-28 中兴通讯股份有限公司 一种信息处理方法、装置及虚拟现实设备
EP3457698A1 (en) * 2017-09-18 2019-03-20 Thomson Licensing Method and apparatus for coding of omnidirectional video
US10818087B2 (en) 2017-10-02 2020-10-27 At&T Intellectual Property I, L.P. Selective streaming of immersive video based on field-of-view prediction
CN111543060B (zh) * 2017-10-09 2024-03-08 诺基亚技术有限公司 用于视频编码和解码的装置、方法和计算机程序
EP3720136A4 (en) * 2017-11-30 2020-10-07 Sony Corporation TRANSMISSION DEVICE, TRANSMISSION PROCESS, RECEPTION DEVICE AND RECEPTION PROCESS
US11069026B2 (en) * 2018-03-02 2021-07-20 Mediatek Inc. Method for processing projection-based frame that includes projection faces packed in cube-based projection layout with padding
US10659815B2 (en) 2018-03-08 2020-05-19 At&T Intellectual Property I, L.P. Method of dynamic adaptive streaming for 360-degree videos
GB2574575A (en) * 2018-04-27 2019-12-18 V Nova Int Ltd Video decoder chipset
MX2021009140A (es) * 2019-02-01 2021-10-13 Fraunhofer Ges Forschung Codec de video que permite el acceso aleatorio a subimágenes o regiones y concepto para la composición de video usando el mismo.
CN112351285B (zh) * 2020-11-04 2024-04-05 北京金山云网络技术有限公司 视频编码、解码方法和装置、电子设备和存储介质
CN114745548B (zh) * 2022-06-13 2022-08-12 山东交通学院 适用于船舶疏浚作业远程视频监控的图像处理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102945563A (zh) * 2012-09-26 2013-02-27 天津游奕科技有限公司 一种全景视频的展示与交互系统及方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3008416B2 (ja) * 1989-11-28 2000-02-14 ソニー株式会社 映像出力装置
US7369612B2 (en) * 2000-12-11 2008-05-06 Sony Corporation Video decoder and method for using the same
JP3472273B2 (ja) * 2001-03-07 2003-12-02 キヤノン株式会社 画像再生装置及び画像処理装置及び方法
CN1204757C (zh) * 2003-04-22 2005-06-01 上海大学 一种立体视频流编码/解码器及其立体视频编解码系统
US6968973B2 (en) * 2003-05-31 2005-11-29 Microsoft Corporation System and process for viewing and navigating through an interactive video tour
US7613344B2 (en) * 2003-12-08 2009-11-03 Electronics And Telecommunications Research Institute System and method for encoding and decoding an image using bitstream map and recording medium thereof
JP2005260464A (ja) * 2004-03-10 2005-09-22 Nippon Telegr & Teleph Corp <Ntt> 画像符号化装置,画像復号装置,画像符号化方法,画像復号方法,画像符号化プログラム,画像復号プログラム,画像符号化プログラム記録媒体および画像復号プログラム記録媒体
US8369406B2 (en) * 2005-07-18 2013-02-05 Electronics And Telecommunications Research Institute Apparatus of predictive coding/decoding using view-temporal reference picture buffers and method using the same
UA92368C2 (ru) * 2005-09-27 2010-10-25 Квелкомм Инкорпорейтед Методика на основе информации содержимого
JP2007174568A (ja) * 2005-12-26 2007-07-05 Sanyo Electric Co Ltd 符号化方法
US8553028B1 (en) * 2007-10-29 2013-10-08 Julian Michael Urbach Efficiently implementing and displaying independent 3-dimensional interactive viewports of a virtual world on multiple client devices
US8355041B2 (en) * 2008-02-14 2013-01-15 Cisco Technology, Inc. Telepresence system for 360 degree video conferencing
US20090300692A1 (en) * 2008-06-02 2009-12-03 Mavlankar Aditya A Systems and methods for video streaming and display
US8724707B2 (en) * 2009-05-07 2014-05-13 Qualcomm Incorporated Video decoding using temporally constrained spatial dependency
US8878996B2 (en) * 2009-12-11 2014-11-04 Motorola Mobility Llc Selective decoding of an input stream
US9124757B2 (en) * 2010-10-04 2015-09-01 Blue Jeans Networks, Inc. Systems and methods for error resilient scheme for low latency H.264 video coding
US8992318B2 (en) * 2012-09-26 2015-03-31 Igt Wearable display system and method
GB2558086B (en) * 2014-03-25 2019-02-20 Canon Kk Methods, devices, and computer programs for improving streaming of partitioned timed media data
US9986154B2 (en) * 2014-05-21 2018-05-29 Here Global B.V. Developing a panoramic image
US9918094B2 (en) * 2014-10-20 2018-03-13 Google Llc Compressing and representing multi-view video
US20160112713A1 (en) * 2014-10-20 2016-04-21 Google Inc. Mapping spherical image to 2d representations
CA3197905A1 (en) * 2016-02-09 2017-08-17 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Concept for picture/video data streams allowing efficient reducibility or efficient random access
US10334224B2 (en) * 2016-02-19 2019-06-25 Alcacruz Inc. Systems and method for GPU based virtual reality video streaming server
US10319071B2 (en) * 2016-03-23 2019-06-11 Qualcomm Incorporated Truncated square pyramid geometry and frame packing structure for representing virtual reality video content
FI20165257A (fi) * 2016-03-24 2017-09-25 Nokia Technologies Oy Laitteisto, menetelmä ja tietokoneohjelma videokoodaukseen ja -dekoodaukseen
WO2018067952A1 (en) * 2016-10-07 2018-04-12 Vid Scale, Inc. Geometry conversion and frame packing associated with 360-degree videos
EP3510761A1 (en) * 2016-10-12 2019-07-17 ARRIS Enterprises LLC Coding schemes for virtual reality (vr) sequences

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102945563A (zh) * 2012-09-26 2013-02-27 天津游奕科技有限公司 一种全景视频的展示与交互系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Naofumi Uchihara, et al. Fast H. 264/AVC stream joiner for interactive free view-area multivision video. IEEE Transactions on Consumer Electronics. 2011.12.31.* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102465403B1 (ko) * 2022-01-24 2022-11-09 김태경 2d영상 및 360도 영상이 조합된 동영상 콘텐츠를 제공하는 방법 및 장치

Also Published As

Publication number Publication date
WO2017063566A1 (en) 2017-04-20
CN108141611A (zh) 2018-06-08
EP3275168A4 (en) 2018-06-13
US20170026659A1 (en) 2017-01-26
JP2018520567A (ja) 2018-07-26
EP3334162B1 (en) 2020-07-08
EP3334162A1 (en) 2018-06-13
JP6560367B2 (ja) 2019-08-14
EP3275168A1 (en) 2018-01-31
CN114205623A (zh) 2022-03-18
KR102189213B1 (ko) 2020-12-10

Similar Documents

Publication Publication Date Title
KR102189213B1 (ko) 임의의 시야각을 위한 부분 디코딩 및 가상 현실 비디오를 위한 라인 버퍼 감소
TWI690201B (zh) 全方位視訊之解碼方法、編碼方法及電子設備
US20180234686A1 (en) Frame packing and unpacking higher-resolution chroma sampling formats
KR101906686B1 (ko) 화상 부호화 장치, 화상 부호화 방법, 화상 복호화 장치, 화상 복호화 방법, 및 컴퓨터 판독가능 저장 매체
KR102629907B1 (ko) 타일 그룹 id에 기초한 화상들의 인코딩 및 디코딩
KR102144881B1 (ko) 비디오 처리를 위한 송신 장치 및 방법
US20150215631A1 (en) Parallel Coding with Overlapped Tiles
JP7384831B2 (ja) ビデオ符号化及び復号のための方法、装置及びコンピュータプログラム
JP2008288832A (ja) 情報処理装置および方法
US20130021350A1 (en) Apparatus and method for decoding using coefficient compression
EP2966865A1 (en) Picture encoding device, picture decoding device, and picture communication system
KR102390413B1 (ko) 영상 부호화 또는 복호화하기 위한 장치 및 방법
JP2008287460A (ja) 情報処理装置および方法
KR102649023B1 (ko) 복호 방법 및 장치와, 부호화 방법 및 장치
JP2014011726A (ja) 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP5848289B2 (ja) 動画像圧縮復号システム
CN113615201A (zh) 点云压缩的方法和装置
KR20220106101A (ko) 비디오 데이터가 부호화된 비트스트림을 처리하는 방법
WO2012093466A1 (en) Image coding apparatus, image coding method and program, image decoding apparatus, and image decoding method and program

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