도 1은 본 발명의 몇몇 실시예에 따라 구현된 일 예시적인 시스템(100)을 도시한다. 시스템(100)은 하나 이상의 고객 디바이스들, 예를 들면, 고객 구내들에 위치된 재생 디바이스들/콘텐트 플레이어들에 대한 콘텐트 전달, 예를 들면, 이미징 콘텐트 전달을 지원한다. 시스템(100)은 예시적인 이미지 캡처링 디바이스(102), 콘텐트 전달 시스템(104), 통신 네트워크(105), 및 복수의 고객 구내들(106, ..., 110)을 포함한다. 이미지 캡처링 디바이스(102)는 입체 영상 이미지의 캡처링을 지원한다. 이미지 캡처링 디바이스(102)는 본 발명의 피처들에 따라 이미징 콘텐트를 캡처 및 처리한다. 통신 네트워크(105)는, 예를 들면, 하이브리드 광섬유-동축(HFC) 네트워크, 위성 네트워크, 및/또는 인터넷일 수 있다.
콘텐트 전달 시스템(104)은 인코딩 장치(112) 및 콘텐트 스트리밍 디바이스/서버(114)를 포함한다. 인코딩 장치(112)는 본 발명에 따라 이미지 데이터를 인코딩하기 위한 하나 또는 복수의 인코더들을 포함할 수 있고, 몇몇 실시예들에서 그를 포함한다. 인코더들은 장면의 상이한 부분들을 인코딩하고 및/또는 상이한 데이터 레이트들을 갖는 인코딩된 버전들을 생성하기 위해 장면의 제공된 부분을 인코딩하기 위해 동시에 사용될 수 있다. 다수의 인코더들을 동시에 사용하는 것은 실시간 또는 거의 실시간 스트리밍이 지원될 때 특히 유용할 수 있다.
콘텐트 스트리밍 디바이스(114)는, 예를 들면, 통신 네트워크(105)를 거쳐, 인코딩된 이미지 콘텐트를 하나 이상의 고객 디바이스들로 전달하기 위해 인코딩된 콘텐트를 스트리밍, 예를 들면, 송신하도록 구성된다. 네트워크(105)를 통해, 콘텐트 전달 시스템(104)은 정보를 전송하고 및/또는 통신 네트워크(105)를 횡단하는 링크(120)에 의해 도면에 도시되는 고객 구내들(106, 110)에 위치된 디바이스들과 정보를 교환할 수 있다.
인코딩 장치(112) 및 콘텐트 전달 서버(114)는 도 1 예에서 개별적인 물리적 디바이스들로서 도시되지만, 몇몇 실시예들에서 그들은 콘텐트를 인코딩 및 스트리밍하는 단일 디바이스로서 구현된다. 인코딩 프로세스는, 장면 부분의 왼쪽 및 오른쪽 눈 뷰들에 대응하는 정보가 3D 이미지 뷰잉이 지원될 수 있도록 인코딩된 이미지 데이터로 인코딩되고 그에 포함되는 3D, 예를 들면, 입체 영상, 이미지 인코딩 프로세스일 수 있다. 사용된 특정 인코딩 방법은 본 출원에 대해 중요하지 않고, 다양한 인코더들이 인코딩 장치(112)로서 사용되거나 인코딩 장치(112)를 구현하기 위해 사용될 수 있다.
각각의 고객 구내(106, 110)는 콘텐트 스트리밍 디바이스(114)에 의해 스트리밍된 이미징 콘텐트를 디코딩 및 재생/디스플레이하기 위해 사용된 복수의 디바이스들/플레이어들, 예를 들면, 재생 시스템들을 포함할 수 있다. 고객 구내 1(106)는 디스플레이 디바이스(124)에 결합된 디코딩 장치/재생 디바이스(122)를 포함하고, 고객 구내 N(110)은 디스플레이 디바이스(128)에 결합된 디코딩 장치/재생 디바이스(126)를 포함한다. 몇몇 실시예들에서, 디스플레이 디바이스들(124, 128)은 헤드 마운트 입체 영상 디스플레이 디바이스들이다. 몇몇 실시예들에서, 재생 디바이스(122/126) 및 헤드 마운트 디바이스(124/128)는 함께 재생 시스템을 형성한다.
다양한 실시예들에서, 디코딩 장치(122, 126)는 대응하는 디스플레이 디바이스들(124, 128)상에 이미징 콘텐트를 나타낸다. 디코딩 장치/플레이어들(122, 126)은 디코딩된 콘텐트를 사용하여 이미징 콘텐트를 생성하는 콘텐트 전달 시스템(104)으로부터 수신된 이미징 콘텐트를 디코딩할 수 있고 디스플레이 디바이스들(124, 128)상에 이미징 콘텐트, 예를 들면, 3D 이미지 콘텐트를 렌더링할 수 있는 디바이스들일 수 있다. 디코딩 장치/재생 디바이스들(122, 126) 중 어느 하나는 도 8에 도시된 디코딩 장치/재생 디바이스(800)로서 사용될 수 있다. 도 8 및 도 19에 도시된 것과 같은 시스템/재생 디바이스는 디코딩 장치/재생 디바이스들(122, 126) 중 어느 하나로서 사용될 수 있다.
도 2a는 분할되지 않은 일 예시적인 입체 영상 장면(200), 예를 들면, 풀 360도 입체 영상 장면을 도시한다. 입체 영상 장면은 단일 비디오 캡처 플랫폼 또는 카메라 마운트상에 종종 장착된, 다수의 카메라들, 예를 들면, 카메라들로부터 캡처된 이미지 데이터를 조합한 결과일 수 있고, 일반적으로 그러한 결과이다.
도 2b는 예시적인 입체 영상 장면(200)의 분할된 버전(250)을 도시하고, 장면은 3(N=3) 개의 예시적인 부분들, 예를 들면, 일 예시적인 실시예에 따라 정면 180도 부분, 왼쪽 후방 90도 부분 및 오른쪽 후반 90도 부분으로 분할된다.
도 2c는 일 예시적인 실시예에 따라 4(N=4) 개의 부분들로 분할된 예시적인 입체 영상 장면(200)의 다른 분할된 버전(280)을 도시한다.
도 2b 및 도 2c는 두 개의 예시적인 부분들을 도시하지만, 이는 다른 분할들이 가능하다는 것이 이해되어야 한다. 예를 들면, 장면(200)은 12(n=12) 개의 30도 부분들로 분할될 수 있다. 하나의 이러한 실시예에서, 각각의 부분을 개별적으로 인코딩하는 것보다, 다수의 부분들이 함께 그룹핑되고 그룹으로서 인코딩된다. 부분들의 상이한 그룹들이, 장면의 총 각도들에 의해 동일하지만 사용자의 머리 위치, 예를 들면, 0도 내지 360도의 범위상에 측정된 뷰잉각에 의존하여 스트리밍될 수 있는 이미지의 상이한 부분들에 대응하는 각각의 그룹의 크기를 갖고 인코딩되어 사용자에게 스트리밍될 수 있다.
도 3은 일 예시적인 실시예에 따라 일 예시적인 360도 입체 영상 장면을 인코딩하는 일 예시적인 프로세스를 도시한다. 도 3에 도시된 방법(300)에 대한 입력은, 예를 들면, 장면의 360도 뷰를 캡처하도록 구성된 복수의 카메라들에 의해 캡처된 360도 입체 영상 이미지 데이터를 포함한다. 입체 영상 이미지 데이터, 예를 들면, 입체 영상 비디오는 다양한 알려진 포맷들 중 어느 하나일 수 있고, 대부분의 실시예들에서, 3D 경험을 허용하기 위해 사용된 왼쪽 및 오른쪽 눈 이미지 데이터를 포함한다. 방법들은 입체 영상 비디오에 특히 적합하지만, 여기에 기술된 기술들 및 방법들은 또한 예를 들면, 360도 또는 작은 장면 영역의 2D 이미지들에 적용될 수 있다.
단계(304)에서, 장면 데이터(302)는 상이한 장면 영역들, 예를 들면, 상이한 뷰잉 방향들에 대응하는 N 개의 장면 영역들에 대응하는 데이터로 분할된다. 예를 들면, 도 2b에 도시된 것과 같은 일 실시예에서, 360도 장면 영역은 90도 부분에 대응하는 왼쪽 후방 부분, 정면 180도 부분, 및 오른쪽 후방 90도 부분의 세 개의 부분들로 분할된다. 상이한 부분들은 상이한 카메라들에 의해 캡처되었을 수 있지만, 이는 반드시는 아니고, 실제로 360도 장면은 도 2b 및 도 2c에 도시되는 N 개의 장면 영역들로 나눠지기 전에 다수의 카메라들로부터 캡처된 데이터로부터 편집될 수 있다.
단계(306)에서, 상이한 장면 부분들에 대응하는 데이터가 본 발명에 따라 인코딩된다. 몇몇 실시예들에서, 각각의 장면 부분은 각각의 부분에 대해 다수의 가능한 비트 레이트 스트림들을 지원하기 위해 다수의 인코더들에 의해 독립적으로 인코딩된다. 단계(308)에서, 인코딩된 장면 부분들은, 예를 들면, 고객 재생 디바이스들로 스트리밍을 위해 콘텐트 전달 시스템(104)의 콘텐트 전달 서버(114)에 저장된다.
도 4는 입력 이미지 부분, 예를 들면, 장면의 180도 정면 부분이 동일한 입력 이미지 부분의 상이한 인코딩된 버전들을 생성하기 위해 다양한 인코더들을 사용하여 인코딩되는 방법을 보여주는 일 예를 도시하는 도면(400)이다.
도면(400)에 도시된 바와 같이, 입력 장면 부분(402), 예를 들면, 장면의 180도 정면 부분은 인코딩을 위해 복수의 인코더들에 공급된다. 상기 예에서, 이미지 콘텐트의 상이한 데이터 레이트 스트림들을 지원하기 위해 인코딩된 데이터를 생성하기 위해 상이한 해상도들을 갖고 상이한 인코딩 기술들을 사용하여 입력 데이터를 인코딩하는 K 개의 상이한 인코더들이 존재한다. 복수의 K 개의 인코더들은 고화질(HD) 인코더1(404), 표준 화질(SD) 인코더2(406), 감소된 프레임 레이트 SD 인코더3(408), ..., 및 고압축 감소된 프레임 레이트 SD 인코더K(410)를 포함한다.
HD 인코더1(404)는 고 비트 레이트 HD 인코딩된 이미지(412)를 생성하기 위해 풀 고화질(HD) 인코딩을 수행하도록 구성된다. SD 인코더2(406)는 입력 이미지의 SD 인코딩된 버전2(414)을 생성하기 위해 저해상도 표준 화질 인코딩을 수행하도록 구성된다. 감소된 프레임 레이트 SD 인코더3(408)는 입력 이미지의 감소된 레이트 SD 인코딩된 버전3(416)을 생성하기 위해 감소된 프레임 레이트 저해상도 SD 인코딩을 수행하도록 구성된다. 감소된 프레임 레이트는 예를 들면, 인코딩을 위해 SD 인코더2(406)에 의해 사용된 프레임 레이트의 절반일 수 있다. 고압축 감소 프레임 레이트 SD 인코더K(410)는 입력 이미지의 고압축된 감소 레이트 SD 인코딩 버전K(420)을 생성하기 위해 고압축에 의해 감소된 프레임 레이트 저해상도 SD 인코딩을 수행하도록 구성된다.
따라서, 공간적 및/또는 시간적 해상도의 제어가 상이한 데이터 레이트들의 데이터 스트림들을 생성하기 위해 사용될 수 있고, 데이터 압축의 레벨과 같은 다른 인코더 설정들의 제어는 또한 단독으로 사용될 수 있거나, 하나 이상의 바람직한 데이터 레이트들에 의해 장면 부분에 대응하는 데이터 스트림들을 생성하기 위해 공간적 및/또는 시간적 해상도의 제어에 추가하여 사용될 수 있다는 것이 이해되어야 한다.
도 5는 3 개의 예시적인 부분들로 분할되는 입력 입체 영상 장면의 저장된 인코딩된 부분들(500)을 도시한다. 저장된 인코딩된 부분들은, 예를 들면, 메모리의 데이터/정보로서, 콘텐트 전달 시스템(104)에 저장될 수 있다. 입체 영상 장면의 저장된 인코딩된 부분들(500)은 인코딩된 부분들의 3 개의 상이한 세트들을 포함하고, 각각의 부분은 상이한 장면 부분에 대응하고, 각각의 세트는 대응하는 장면 부분의 복수의 상이한 인코딩된 버전들을 포함한다. 각각의 인코딩된 버전은 인코딩된 비디오 데이터의 버전이고 따라서 코딩된 다수의 프레임들을 나타낸다. 비디오인 각각의 인코딩된 버전(510, 512, 516)이 다수의 시간 기간들에 대응하고, 스트리밍할 때, 부분, 예를 들면, 재생되는 시간 기간에 대응하는 프레임들이 송신 목적들을 위해 사용되는 것이 이해되어야 한다.
도 4에 관하여 상기에 도시 및 논의된 바와 같이, 각각의 장면 부분, 예를 들면, 정면, 후방 장면 부분들은 동일한 장면 부분의 K 개의 상이한 버전들을 생성하기 위해 복수의 상이한 인코더들을 사용하여 인코딩될 수 있다. 제공된 입력 장면에 대응하는 각각의 인코더의 출력들은 함께 하나의 세트로서 그룹핑되고 저장된다. 인코딩된 장면 부분들(502)의 제 1 세트는 정면 180도 장면 부분에 대응하고, 정면 180도 장면의 인코딩 버전1(510), 정면 180도 장면의 인코딩된 버전2(512), ..., 및 정면 180도 장면의 인코딩된 버전K(516)을 포함한다. 인코딩된 장면 부분들(504)의 제 2 세트는 장면 부분2, 예를 들면, 90도 왼쪽 후방 장면 부분에 대응하고, 90도 왼쪽 후방 장면 부분의 인코딩된 버전1(520), 90도 왼쪽 후방 장면 부분의 인코딩된 버전2(522), ..., 및 90도 왼쪽 후방 장면 부분의 인코딩된 버전K(526)을 포함한다. 유사하게 인코딩된 장면 부분들(506)의 제 3 세트는 장면 부분3, 예를 들면, 90도 오른쪽 후방 장면 부분에 대응하고, 90도 오른쪽 후방 장면 부분의 인코딩된 버전1(530), 90도 오른쪽 후방 장면 부분의 인코딩된 버전2(532), ..., 및 90도 오른쪽 후방 장면 부분의 인코딩된 버전K(536)를 포함한다.
360도 장면의 다양한 상이한 저장된 인코딩된 부분들은 고객 재생 디바이스들로 전송하기 위해 다양한 상이한 비트 레이트 스트림들을 생성하기 위해 사용될 수 있다.
도 6은 일 예시적인 실시예에 따라 이미지 콘텐트를 제공하는 일 예시적인 방법의 단계들을 도시하는 플로차트(600)이다. 플로차트(600)의 방법은 도 1에 도시된 캡처링 시스템을 사용하여 몇몇 실시예들에서 구현된다.
방법은, 예를 들면, 전력이 공급되고 초기화되는 전달 시스템에 의해 단계(602)에서 시작한다. 방법은 시작 단계(602)로부터 단계들(604)로 진행한다. 단계(604)에서, 콘텐트 전달 시스템(104), 예를 들면, 시스템(104) 내 서버(11)는 콘텐트에 대한 요청, 예를 들면, 이전에 인코딩된 프로그램, 또는 몇몇 경우들에서, 실시간 또는 거의 실시간으로, 예를 들면, 이벤트가 여전히 진행중인 동안, 인코딩 및 스트리밍되는 실황 이벤트에 대한 요청을 수신한다.
요청에 응답하여, 단계(606)에서, 서버(114)는 전달을 위해 이용 가능한 데이터 레이트를 결정한다. 데이터 레이트는 지원된 데이터 레이트들을 나타내는 요청에 포함된 정보로부터 및/또는 콘텐트를 요청하는 디바이스로 전달하기 위해 이용 가능한 최대 대역폭을 나타내는 네트워크 정보와 같은 다른 정보로부터 결정될 수 있다. 이해되는 바와 같이, 이용 가능한 데이터 레이트는 네트워크 부하에 따라 변할 수 있고, 콘텐트가 스트리밍되는 시간 기간 동안 변할 수 있다. 변경들은 사용자 디바이스에 의해 보고되거나 패킷들이 드롭되거나 네트워크가 사용되는 데이터 레이트를 지원하는 것에 어려움을 갖는 것 및 현재 이용 가능한 데이터 레이트가 사용을 위해 이용 가능하다고 결정된 원래의 데이터 레이트보다 낮다는 것을 나타내는 바람직한 시간량을 넘어서 지연된다는 것을 나타내는 메시지들 또는 신호들로부터 검출될 수 있다.
동작은 단계(606)로부터 단계(608)로 진행하고, 콘텐트를 위한 요청이 초기화되는 사용자 디바이스의 현재 머리 위치, 예를 들면, 요청 시간에서 현재 머리 위치는 0도 위치이다. 0도 또는 전방을 바라보는 위치는 재초기화가 발생할 것을 시그널링하는 재생 디바이스에 의해 사용자에 의해 몇몇 실시예들에서 재초기화될 수 있다. 예를 들면, 원래의 머리 위치에 관하여, 시간에 걸쳐 사용자의 머리 위치 및/또는 사용자의 머리 위치의 변경들은 콘텐트 전달 시스템(104)에 보고되고 갱신 위치는 이하에 논의되는 바와 같이 콘텐트 전달 결정들을 수행하기 위해 사용된다.
동작은 단계(608)로부터 단계(610)로 진행하고, 요청된 콘텐트에 대응하는 360도 장면의 부분들이 재생 디바이스를 초기화하기 위해 전송된다. 적어도 몇몇 실시예들에서, 초기화는 장면 데이터의 풀 360도 세트, 예를 들면, N 개의 부분들을 전송하는 것을 포함하고, 360도 장면은 N 개의 부분들로 나눠진다.
단계(610)에서 초기화의 결과로서, 재생 디바이스는 360도 가능한 뷰잉 영역의 상이한 부분들의 각각에 대응하는 장면 데이터를 가질 것이다. 따라서, 재생 디바이스의 사용자가 갑자기 후방으로 몸을 돌리는 경우, 사용자가 그의 머리를 돌리기 전에 보고 있었던 부분만큼 최신이 아닐지라도, 적어도 일부 데이터가 사용자에게 디스플레이하기 위해 이용 가능할 것이다.
동작은 단계(610)로부터 단계들(612, 622)로 진행한다. 단계(622)는 재생 디바이스가 적어도 한번의 모든 전체 갱신 기간에 전체 360도 장면의 갱신된 버전을 수신하는 것을 확인하기 위해 사용되는 전체 장면 갱신 경로에 대응한다. 단계(610)에서 초기화되면, 전체 갱신 프로세스는 미리 결정된 시간 기간 동안 대기 단계(622)에서 지연된다. 이후 단계(624)에서, 360도 장면 갱신이 수행된다. 점선 화살표(613)는 장면 부분들이 단계(622)에 대응하는 지원 기간 동안 재생 디바이스로 전달되는 정보의 전달을 나타낸다. 단계(624)에서, 전체 360도 장면이 송신될 수 있다. 그러나, 몇몇 실시예들에서, 모든 부분들이 단계(624)에서 송신되지는 않는다. 대기 기간(622) 동안 갱신된 장면의 부분들은, 그들이 사용자의 머리 위치에 기초하여 장면의 적어도 몇몇 부분들을 전송하는 정규 스트리밍 프로세스들 동안 이미 리프레시되기 때문에, 몇몇 실시예들에서 단계(624)에서 수행된 갱신으로부터 생략된다.
동작은 단계(624)로부터 다시 대기 단계(622)로 진행하고, 대기는 다음 전체 갱신 전에 수행된다. 단계(622)에서 사용된 대기 기간을 조정함으로써 상이한 전체 리프레시 레이트들이 지원될 수 있다는 것이 이해되어야 한다. 몇몇 실시예들에서, 콘텐트 서버는 제공되는 장면 콘텐트의 형태에 기초하여 대기 기간을 선택하고, 그에 따른 전체 기준 기간이 제공된다. 주요 동작이 정면을 마주보는 영역에 존재하고 리프레시를 위한 이유들 중 하나가 실외 조명 상태들에서 가능한 변경들인 스포츠 경기들의 경우에, 대기 기간은 비교적 길 수 있고, 예를 들면, 대략 일 분 또는 수 분일 수 있다. 상이한 노래들이 연주되기 때문에 관객의 동작 및 활동이 자주 변경될 수 있는 락 콘서트의 경우, 사용자가 몸을 돌려서 관객들의 반응을 보기를 원할 수 있고 정면 무대 뷰잉 영역에서 일어나고 있는 것에 더하여 관객에서 일어나고 있는 것에 대해 느끼기를 원할 수 있기 때문에, 전체 리프레시 레이트가 스포츠 경기들보다 높을 수 있고, 때때로 그보다 높다.
몇몇 실시예들에서, 전체 기준 기간은 스트리밍되는 표현의 부분의 함수로서 변경된다. 예를 들면, 스포츠 경기의 게임 부분 동안, 전체 리프레시 레이트는 비교적 낮을 수 있지만, 경기장에 있거나 재생 디바이스를 통해 경기를 보고 있는 사람이 전방 주요 영역으로부터 그의 머리를 돌릴 더 많은 가능성이 존재하는, 후반 터치다운 순간 동안 또는 타임 아웃 또는 인터미션 동안, 전체 리프레시 레이트는 대기, 예를 들면, 단계(622)에서 사용된 리프레시 기간 제어를 감소시킴으로써 증가될 수 있고, 몇몇 실시예에서, 증가된다.
전체 리프레시 프로세스가 단계(622) 및 단계(624)를 참조하여 기술되었지만, 장면의 부분들의 정규 공급이 기술된다. 이해되는 바와 같이, 장면 또는 장면 부분의 정규 리프레시는 적어도 하나의 부분에 대해, 지원된 비디오 프레임 레이트에서 허용하는 데이트 레이트로 발생할 것이다. 따라서, 적어도 하나의 프레임 부분에 관하여, 예를 들면, 사용자 머리가 마주보는 것으로 나타내지는 부분은 이용 가능한 데이터 레이트가 충분한 것을 가정하는 풀 비디오 스트리밍 프레임 레이트로 공급될 것이다.
단계(612)에서, 장면 부분들은 사용자의, 나타낸 머리 위치, 예를 들며, 뷰잉 각에 기초하여 제공되도록 선택된다. 선택된 부분들은, 예를 들면, 주기적으로 재생 디바이스로 송신, 예를 들면, 스트리밍된다. 부분들에 대응하는 데이터가 스트리밍되는 레이트는 몇몇 실시예들에서 비디오 프레임 레이트에 의존한다. 예를 들면, 적어도 하나의 선택된 부분은 지원되는 전체 프레임 레이트에서 스트리밍될 것이다. 적어도 하나의 장면 부분이 단계(612)에서 선택되지만, 보통 다수의 장면 부분들, 예를 들면, 사용자가 마주보고 있는 장면 부분뿐만 아니라 다음으로 가장 가까운 장면 부분이 선택된다. 이용 가능한 데이터 레이트가 다수의 프레임 부분들의 전달을 지원하기에 충분한 경우, 추가의 장면 부분들이 또한 선택 및 공급될 수 있다.
스트리밍될 장면 부분들이 단계(612)에서 선택된 후, 동작은 단계(614)로 진행하고, 선택된 스트림 부분들의 인코딩된 버전은, 예를 들면, 사용자의 뷰잉 위치 및 이용 가능한 데이터 레이트에 기초하여, 선택된다. 예를 들면, 현재 보고된 머리 위치에 의해 나타내진 사용자가 마주보고 있는 장면 부분의 풀 레이트 고해상도 버전이 스트리밍될 수 있고 일반적으로 스트리밍될 것이다. 현재 머리 위치의 왼쪽 및/또는 오른쪽에 대한 하나 이상의 장면 부분들이 더 낮은 해상도로서, 더 낮은 시간 레이트로서 또는 현재 보여지지 않는 장면 영역을 송신하기 위해 요구되는 대역폭의 양을 감소시키는 다른 인코딩 장치를 사용하여 스트리밍되도록 선택될 수 있다. 인접한 장면 부분의 인코딩된 버전의 선택은 현재 보여지는 장면 부분의 고품질 버전이 송신된 후 대역폭 리밍의 양에 의존할 것이다. 현재 보여지지 않는 장면 부분들이 더 낮은 해상도 인코딩 버전으로서 또는 프레임들 사이에 더 큰 시간적 거리를 갖는 인코딩된 버전으로서 전송될 수 있지만, 이용 가능한 대역폭이 충분히 존재하는 경우, 풀 해상도 고품질 버전은 주기적으로 또는 자주 전송된다.
단계(616)에서, 선택된 장면 부분들의 선택된 인코딩된 버전들은 콘텐트를 요청한 재생 디바이스로 전송된다. 따라서, 단계(616)에서, 하나 이상의 부분들에 대응하는 인코딩된 콘텐트, 예를 들면, 다수의 연속하는 프레임들에 대응하는 입체 영상 비디오 콘텐트가 재생 디바이스로 스트리밍된다.
동작은 단계(616)로부터 단계(618)로 진행하고 사용자의 현재 머리 위치를 나타내는 정보가 수신된다. 이러한 정보는 주기적으로 및/또는 머리 위치의 변경을 검출하는 것에 응답하여 재생 디바이스로부터 전송될 수 있다. 머리 위치의 변경들에 더하여, 이용 가능한 데이터 레이트에서 변화들은 콘텐트가 스트리밍되는 것에 영향을 끼칠 수 있다. 동작은 단계(618)로부터 단계(620)로 진행하고, 재생 디바이스로 콘텐트 전달을 위해 사용될 수 있는 현재 데이터 레이트의 결정이 수행된다. 따라서, 콘텐트 전달 시스템은 요청 디바이스에 대한 스트리밍을 지원하기 위해 이용 가능한 대역폭의 양의 변화들을 검출할 수 있다.
동작은 단계(620)로부터 단계(612)로 진행하고, 콘텐트가 완전히 전달될 때까지, 예를 들면, 프로그램 또는 이벤트가 종료할 때까지, 또는 콘텐트를 요청한 재생 디바이스로부터 세션이 종료된 것을 나타내는 신호가 수신되거나, 재생 디바이스가 콘텐트 서버(114)와 더 이상 통신하지 않는다는 것을 나타내는 머리 위치 갱신과 같은 재생 디바이스로부터 예상된 신호의 수신에 대한 실패가 검출될 때까지 스트리밍을 계속한다.
상기에 기술된 방식으로 전달된 장면 데이터로부터, 재생 디바이스는 사용자가 그의 머리를 빠르게 돌리는 경우를 디스플레이하기 위해 이용 가능한 각각의 장면 부분에 대응하는 적어도 몇몇 데이터를 가질 것이다. 많은 사람들에게 뷰잉 위치의 불편한 변경이기 때문에, 사용자들은 좀처럼 매우 짧은 시간 기간에 그들의 머리를 완전히 돌리지 않는다는 것이 이해되어야 한다. 따라서, 풀 360도 장면이 모든 시간에 송신되지 않을 수 있지만, 임의의 주어진 시간에 보여질 가장 많은 가능성이 있는 장면 부분(들)의 고품질 버전이 사용자에게 스트리밍되고 이용 가능하게 될 수 있다.
인코딩 프로세스는 장면의 N 개의 부분들이 각각의 개별적인 사용자에 대해 콘텐트를 개별적으로 인코딩해야 하지 않고 상이한 사용자들에게 상이하게 송신 및 처리되게 하기 때문에, 콘텐트 전달 시스템(104)은 다수의 동시에 발생하는 사용자들을 지원할 수 있다. 따라서, 다수의 병렬 인코더들은 스포츠 경기 또는 다른 이벤트들의 실시간 또는 거의 실시간 스트리밍을 허용하도록 실시간 인코딩을 지원하기 위해 사용될 수 있지만, 사용된 인코더들의 수는 콘텐트가 스트리밍되는 재생 디바이스들의 수보다 훨씬 적은 경향이 있다.
콘텐트의 부분들은 360도 뷰에 대응하는 부분들로서 기술되지만, 장면들은 수직 크기를 또한 갖는 공간의 평탄한 버전을 나타낼 수 있고, 몇몇 실시예들에서 그를 나타낸다는 것이 이해되어야 한다. 재생 디바이스는 3D 환경, 예를 들면, 공간의 모델을 사용하여 장면 부분들을 맵핑하고, 수직 뷰잉 위치들에 대해 조정할 수 있다. 따라서, 본 출원에서 논의되는 360도는 사용자가 그의 뷰잉각을 왼쪽 또는 오른쪽으로 변경하면서 그의 주시 레벨을 유지하는 것처럼 수평에 관한 머리 위치를 말한다.
도 7은 본 발명의 특징들에 따라 콘텐트를 인코딩 및 스트리밍하기 위해 사용될 수 있는 인코딩 능력을 갖는 일 예시적인 콘텐트 전달 시스템(700)을 도시한다.
시스템은 본 발명의 특징들에 따라 인코딩, 저장, 및 송신 및/또는 콘텐트 출력을 수행하기 위해 사용될 수 있다. 몇몇 실시예들에서, 시스템(700) 또는 그 내부의 요소들은 도 6에 도시된 프로세스에 대응하는 동작을 수행한다. 콘텐트 전달 시스템(700)은 도 1의 시스템(104)으로서 사용될 수 있다. 도 7에 도시된 도시된 시스템은 콘텐트의 인코딩, 처리, 및 스트리밍을 위해 사용되지만, 시스템(700)은 또한 처리된 및 인코딩된 이미지 데이터를 운영자에게 디코딩하고 디스플레이하기 위한 능력을 포함할 수 있다는 것이 이해되어야 한다.
시스템(700)은 디스플레이(702), 입력 디바이스(704), 입력/출력(I/O) 인터페이스(706), 프로세서(708), 네트워크 인터페이스(710) 및 메모리(712)를 포함한다. 시스템(700)의 다양한 구성 요소들은 데이터가 시스템(700)의 구성 요소들 사이에 전달되게 하는 버스(709)를 통해 함께 결합된다.
메모리(712)는 다양한 모듈들, 예를 들면, 프로세서(708)에 의해 실행될 때, 본 발명에 따라 분할, 인코딩, 저장, 및 스트리밍/송신 및/또는 출력 동작들을 구현하도록 시스템(700)을 제어하는 루틴들을 포함한다.
메모리(712)는 다양한 모듈들, 예를 들면, 프로세서(708)에 의해 실행될 때, 본 발명에 따라 몰입형 입체 영상 비디오 획득, 인코딩, 저장, 및 송신 및/또는 출력 방법들을 구현하도록 컴퓨터 시스템(700)을 제어하는 루틴들을 포함한다. 메모리(712)는 제어 루틴들(714), 분할 모듈(716), 인코더(들)(718), 스트리밍 제어기(720), 수신된 입력 이미지들(732), 예를 들면, 장면의 360도 입체 영상 비디오, 인코딩된 장면 부분들(734), 및 타이밍 정보(736)를 포함한다. 몇몇 실시예들에서, 모듈들은 소프트웨어 모듈들로서 구현된다. 다른 실시예들에서, 모듈들은, 예를 들면, 모듈이 대응하는 기능을 수행하기 위한 회로로서 구현되는 각각의 모듈을 갖는 개별적인 회로들로서, 하드웨어에서 구현된다. 또 다른 실시예들에서, 모듈들은 소프트웨어 및 하드웨어의 조합을 사용하여 구현된다.
제어 루틴들(714)은 시스템(700)의 동작을 제어하기 위해 디바이스 제어 루틴들 및 통신 루틴들을 포함한다. 분할 모듈(716)은 본 발명의 특징들에 따라 장면의 수신된 입체 영상 360도 버전을 N 개의 장면 부분들로 분할하도록 구성된다.
인코더(들)(718)는 본 발명의 특징들에 따라 수신된 이미지 콘텐트, 예를 들면, 장면의 360도 버전 및/또는 하나 이상의 장면 부분들을 인코딩하도록 구성된 복수의 인코더들을 포함할 수 있고, 몇몇 실시예들에서, 그들을 포함한다. 몇몇 실시예들에서, 인코더(들)는 각각의 인코더가 주어진 비트 레이트 스트림을 지원하기 위해 입체 영상 장면 및/또는 분할된 장면 부분들을 인코딩하도록 구성된 다수의 인코더들을 포함한다. 따라서, 몇몇 실시예들에서, 각각의 장면 부분은 각각의 장면에 대해 다수의 상이한 비트 레이트 스트림들을 지원하기 위해 다수의 인코더들을 사용하여 인코딩될 수 있다. 인코더(들)(718)의 출력은 고객 디바이스들, 예를 들면, 재생 디바이스들로의 스트리밍을 위해 메모리에 저장되는 인코딩된 장면 부분들(734)이다. 인코딩된 콘텐트는 네트워크 인터페이스(710)를 통해 하나 또는 다수의 상이한 디바이스들로 스트리밍될 수 있다.
스트리밍 제어기(720)는, 예를 들면, 통신 네트워크(105)를 통해, 인코딩된 이미지 콘텐트를 하나 이상의 고객 디바이스들로 전달하기 위해 인코딩된 콘텐트의 스트리밍을 제어하도록 구성된다. 다양한 실시예들에서, 플로차트(600)의 다수의 단계들은 스트리밍 제어기(720)의 요소들에 의해 구현된다. 스트리밍 제어기(720)는 요청 처리 모듈(722), 데이터 레이트 결정 모듈(724), 현재 머리 위치 결정 모듈(726), 선택 모듈(728), 및 스트리밍 제어 모듈(730)을 포함한다. 요청 처리 모듈(722)은 고객 재생 디바이스로부터 이미징 콘텐트에 대한 수신된 요청을 처리하도록 구성된다. 콘텐트에 대한 요청은 다양한 실시예들에서 네트워크 인터페이스(710)에서 수신기를 통해 수신된다. 몇몇 실시예들에서, 콘텐트에 대한 요청은 요청하는 재생 디바이스의 아이덴티티를 나타내는 정보를 포함한다. 몇몇 실시예들에서, 콘텐트에 대한 요청은 고객 재생 디바이스에 의해 지원된 데이터 레이트, 사용자의 현재 머리 위치, 예를 들면, 헤드 마운트 디스플레이의 위치를 포함할 수 있다. 요청 처리 모듈(722)은 수신된 요청을 처리하고 다른 동작들을 취하기 위해 스트리밍 제어기(720)의 다른 요소들에 검색된 정보를 제공한다. 콘텐트에 대한 요청은 데이터 레이트 정보 및 현재 머리 위치 정보를 포함할 수 있지만, 다양한 실시예들에서, 재생 디바이스에 의해 지원된 데이터 레이트는 네트워크 검사들 및 시스템(700)과 재생 디바이스 사이에 다른 네트워크 정보 교환으로부터 결정될 수 있다.
데이터 레이트 결정 모듈(724)은 이미징 콘텐트를 고객 디바이스들로 스트리밍하기 위해 사용될 수 있는 이용 가능한 데이터 레이트들을 결정하도록 구성되고, 예를 들면, 다수의 인코딩된 장면 부분들이 지원되기 때문에, 콘텐트 전달 시스템(700)은 고객 디바이스에 대해 다수의 데이터 레이트들에서 콘텐트를 스트리밍하는 것을 지원할 수 있다. 데이터 레이트 결정 모듈(724)은 또한 시스템(700)으로부터 콘텐트를 요청하는 재생 디바이스에 의해 지원된 데이터 레이트를 결정하도록 구성된다. 몇몇 실시예들에서, 데이터 레이트 결정 모듈(724)은 네트워크 측정들에 기초하여 이미지 콘텐트의 전달을 위해 이용 가능한 데이터 레이트를 결정하도록 구성된다.
현재 머리 위치 결정 모듈(726)은 재생 디바이스로부터 수신된 정보로부터 현재 뷰잉각 및/또는 사용자의 현재 머리 위치, 예를 들면, 헤드 마운트 디스플레이의 위치를 결정하도록 구성된다. 몇몇 실시예들에서, 재생 디바이스는 현재 머리 위치 정보를 시스템(700)으로 주기적으로 전송하고, 현재 머리 위치 결정 모듈(726)은 현재 뷰잉각 및/또는 현재 머리 위치를 결정하기 위해 정보를 수신 및 처리한다.
선택 모듈(728)은 사용자의 현재 뷰잉각/머리 위치 정보에 기초하여 360도 장면의 부분들 중 어느 것을 재생 디바이스로 스트리밍할지를 결정하도록 구성된다. 선택 모듈(728)은 또한 콘텐트의 스트리밍을 지원하기 위해 이용 가능한 데이터 레이트에 기초하여 결정된 장면 부분들의 인코딩된 버전들을 선택하도록 구성된다.
스트리밍 제어 모듈(730)은 이미지 콘텐트, 예를 들면, 본 발명의 특징들에 따라 다양한 지원된 데이터 레이트들에서, 360도 입체 영상 장면의 다수의 부분들의 스트리밍을 제어하도록 구성된다. 몇몇 실시예들에서, 스트리밍 제어 모듈(730)은 재생 디바이스에서 장면 메모리를 초기화하기 위해 콘텐트를 요청하는 재생 디바이스로 360도 입체 영상 장면의 N 개의 부분들을 스트리밍하는 것을 제어하도록 구성된다. 다양한 실시예들에서, 스트리밍 제어 모듈(730)은, 예를 들면, 결정된 레이트에서 결정된 장면 부분들의 선택된 인코딩된 버전들을 주기적으로 전송하도록 구성된다. 몇몇 실시예들에서, 스트리밍 제어 모듈(730)은 또한 시간 간격, 예를 들면 매분당 1회에 따라 재생 디바이스로 360도 장면 갱신을 전송하도록 구성된다. 몇몇 실시예들에서, 360도 장면 갱신을 전송하는 단계는 풀 360도 입체 영상 장면의 N 개의 장면 부분들 또는 N-X 개의 장면 부분들을 전송하는 단계를 포함하고, N은 풀 360도 입체 영상 장면이 분할되는 부분들의 총 수이고, X는 재생 디바이스로 현재 전송된 선택된 장면 부분들을 나타낸다. 몇몇 실시예들에서, 스트리밍 제어 모듈(730)은 360도 장면 갱신을 전송하기 전에 초기화를 위해 N 개의 장면 부분들을 처음으로 전송하기 후에 미리 결정된 시간 동안 대기한다. 몇몇 실시예들에서, 360도 장면 갱신의 전송을 제어하기 위한 타이밍 정보는 타이밍 정보(736)에 포함된다. 몇몇 실시예들에서, 스트리밍 제어 모듈(730)은 또한, 리프레시 간격 동안 재생 디바이스로 송신되지 않은 장면 부분들을 식별하고; 리프레시 간격 동안 재생 디바이스로 송신되지 않은 식별된 장면 부분들의 갱신 버전을 송신하도록 구성된다.
다양한 실시예들에서, 스트리밍 제어 모듈(730)은 재생 디바이스가 각각의 리프레시 기간 동안 상기 장면의 360도 버전을 적어도 한번 전체적으로 리프레시하게 하도록 주기적으로 N 개의 부분들 중 적어도 충분한 수를 재생 디바이스에 전달하도록 구성된다.
도 8은 도 1 및 도 7에 도시된 것과 같은 콘텐트 전달 시스템으로부터 수신된 이미징 콘텐트를 수신, 디코딩, 저장, 및 디스플레이하기 위해 사용될 수 있는 본 발명에 따라 구현된 재생 시스템(800)을 도시한다. 구현될 수 있는 시스템(800)은 디스플레이(802), 또는 외부 디스플레이, 예를 들면, 컴퓨터 시스템(800')에 결합된 헤드 마운트 디스플레이(805)와 같은 요소들의 조합으로서 포함하는 단일 재생 디바이스(800')이다.
재생 시스템(800)은, 적어도 몇몇 실시예들에서, 3D 헤드 마운트 디스플레이를 포함한다. 헤드 마운트 디스플레이는 헤드 마운트 디스플레이(805)를 포함할 수 있는 OCULUS RIFTTM VR(가상 현실) 헤드셋을 사용하여 구현될 수 있다. 다른 헤드 마운트 디스플레이들이 또한 사용될 수 있다. 몇몇 실시예들에서, 헤드 마운트 헬멧 또는 다른 헤드 마운팅 디바이스에서 하나 이상의 디스플레이 스크린들이 콘텐트를 사용자의 왼쪽 및 오른쪽 눈들에 디스플레이하기 위해 사용된다. 단일 스크린의 상이한 부분들을 상이한 눈들에 노출하도록 구성된 헤드 마운트에 의해 단일 스크린상에 왼쪽 및 오른쪽 눈들에 대한 상이한 이미지들을 디스플레이함으로써, 단일 디스플레이는 뷰어들 왼쪽 및 오른쪽 눈들에 의해 별개로 인식될 왼쪽 및 오른쪽 눈 이미지들을 디스플레이하기 위해 사용될 수 있다. 몇몇 실시예들에서, 휴대 전화 스크린은 헤드 마운트 디스플레이 디바이스의 디스플레이로서 사용된다. 적어도 일부 이러한 실시예들에서, 휴대 전화는 헤드 마운팅 디바이스로 삽입되고, 휴대 전화는 이미지들을 디스플레이하기 위해 사용된다.
재생 시스템(800)은 수신된 인코딩된 이미지 데이터, 예를 들면, 환경 또는 스크린의 상이한 부분들에 대응하는 왼쪽 및 오른쪽 눈 이미지들 및/또는 모노 (단일 이미지들)을 디코딩하고, 예를 들면, 사용자에 의해 3D 이미지로서 인식된 상이한 왼쪽 및 오른쪽 눈 뷰들을 렌더링 및 디스플레이함으로써, 고객에게 디스플레이하기 위한 3D 이미지 콘텐트를 생성하기 위한 능력을 갖는다. 재생 시스템(800)은 몇몇 실시예들에서, 가정 또는 사무실과 같은 고객 구내 위치에 위치되지만, 이미지 캡처 사이트에 또한 위치될 수 있다. 시스템(800)은 본 발명에 따라 신호 수신, 디코딩, 디스플레이 및/또는 다른 동작들을 수행할 수 있다.
시스템(800)은 디스플레이(802), 디스플레이 디바이스 인터페이스(803), 입력 디바이스(804), 입력/출력(I/O) 인터페이스(806), 프로세서(808), 네트워크 인터페이스(810), 및 메모리(812)를 포함한다. 시스템(800)의 다양한 구성 요소들은 시스템(800)의 구성 요소들 사이에 및/또는 다른 접속들에 의해 또는 무선 인터페이스를 통해 데이터가 전달되게 하는 버스(809)를 통해 함께 결합된다. 몇몇 실시예들에서, 디스플레이(802)가 대시 박스를 사용하여 도시된 선택 요소로서 포함되지만, 몇몇 실시예들에서, 외부 디스플레이 디바이스(805), 예를 들면, 헤드 마운트 입체 영상 디스플레이 디바이스는 디스플레이 디바이스 인터페이스(803)를 통해 재생 디바이스에 결합될 수 있다.
예를 들면, 휴대 전화 프로세서가 프로세서(808)로서 사용되고, 휴대 전화가 헤드 마운트에서 이미지를 생성 및 디스플레이하는 경우, 시스템은 헤드 마운트 디바이스의 일부로서 프로세서(808), 디스플레이(802), 및 메모리(812)를 포함할 수 있다. 프로세서(808), 디스플레이(802), 및 메모리(812)는 모두 휴대 전화의 일부일 수 있다. 시스템(800)의 다른 실시예들에서, 프로세서(808)는 헤드 마운팅 디바이스에 마운팅되고 게이밍 시스템에 결합된 디스플레이(805)를 갖는 XBOX 또는 PS4와 같은 게이밍 시스템의 일부일 수 있다. 디바이스에 위치되는 프로세서(808) 또는 메모리(812)는 머리에 쓰는지 그렇지 않는지는 중요하지 않고, 이해될 수 있는 바와 같이, 몇몇 경우들에서, 전력, 열, 및 중량 관점으로부터 헤드 기어에 프로세서를 공동 위치하는 것이 편리할 수 있지만, 적어도 일부 경우들에서, 디스플레이를 포함하는 헤드 기어에 결합된 프로세서(808) 및 메모리(812)를 갖는 것이 바람직할 수 있다.
다양한 실시예들이 헤드 마운트 디스플레이(805 또는 802)를 고려하지만, 방법 및 장치는 또한 3D 이미지를 지원할 수 있는 비-헤드 마운트 디스플레이들과 함께 사용될 수 있다. 따라서, 많은 실시예들에서, 시스템(800)은 헤드 마운트 디스플레이를 포함하지만, 비-헤드 마운트 디스플레이에 의해 또한 구현될 수 있다.
메모리(812)는 다양한 모듈들, 예를 들면, 프로세서(808)에 의해 실행될 때, 본 발명에 따라 디코딩 및 출력 동작들을 수행하기 위해 재생 디바이스(800)를 제어하는 루틴들을 포함한다. 메모리(812)는 제어 루틴들(814), 콘텐트 생성 모듈(816)에 대한 요청, 머리 위치 및/또는 뷰잉각 결정 모듈(818), 디코더 모듈(820), 3D 이미지 생성 모듈이라고도 불리는 입체 영상 이미지 렌더링 모듈(822), 및 수신된 인코딩된 이미지 콘텐트(824), 디코딩된 이미지 콘텐트(826), 360도 디코딩된 장면 버퍼(828), 및 생성된 입체 영상 콘텐트(830)를 포함하는 데이터/정보를 포함한다.
제어 루틴들(814)은 디바이스(800)의 동작을 제어하기 위해 디바이스 제어 루틴들 및 통신 루틴들을 포함한다. 요청 생성 모듈(816)은 콘텐트를 제공하기 위한 콘텐트 전달 시스템에 전송할 콘텐트에 대한 요청을 생성하도록 구성된다. 콘텐트에 대한 요청은 다양한 실시예들에서 네트워크 인터페이스(810)를 통해 전송된다. 머리 위치 및/또는 뷰잉각 결정 모듈(818)은 사용자의 현재 뷰잉각 및/또는 현재 머리 위치, 예를 들면, 헤드 마운트 디스플레이의 위치를 결정하고, 결정된 위치 및/또는 뷰잉각 정보를 콘텐트 전달 시스템(700)에 보고하도록 구성된다. 몇몇 실시예들에서, 재생 디바이스(800)는 현재 머리 위치 정보를 시스템(700)으로 주기적으로 전송한다.
디코더 모듈(820)은 디코딩된 이미지 데이터(826)를 생성하기 위해 콘텐트 전달 시스템(700)으로부터 수신된 인코딩된 이미지 콘텐트(824)를 디코딩하도록 구성된다. 디코딩된 이미지 데이터(826)는 디코딩된 입체 영상 장면 및/또는 디코딩된 장면 부분들을 포함할 수 있다.
3D 이미지 렌더링 모듈(822)은 3D 이미지들, 예를 들면, 디스플레이(802) 및/또는 디스플레이 디바이스(805)상에 사용자에 대해 디스플레이를 위해, 디코딩된 이미지 콘텐트(826)를 사용하여, 예를 들면, 본 발명의 특징들에 따라 3D 이미지로서 인식되는 방식으로 디스플레이되는 왼쪽 및 오른쪽 눈 이미지들을 생성한다. 생성된 입체 영상 이미지 콘텐트(830)는 3D 이미지 생성 모듈(822)의 출력이다. 따라서, 렌더링 모듈(822)은 3D 이미지 콘텐트(830)를 디스플레이에 렌더링한다. 몇몇 실시예들에서, 디스플레이 디바이스(805)는 Oculus Rift와 같은 3D 디스플레이 장치의 일부일 수 있다. 재생 디바이스(800)의 운영자는 입력 디바이스(804)를 통해 하나 이상의 파라미터들을 제어하고 및/또는 수행될 동작들을 선택, 예를 들면, 3D 장면을 디스플레이하도록 선택할 수 있다.
도 9는 3 개의 상이한 장착 위치들에 장착된 3 개의 카메라 쌍들(902, 904, 906) 및 카메라 어셈블리(800)를 교정하기 위해 사용될 수 있는 교정 타깃(915)을 갖는 카메라 리그 또는 카메라 어레이라고도 때때로 불리는 일 예시적인 카메라 어셈블리(900)을 도시하는 도면을 도시한다. 카메라 리그(900)는 본 발명의 몇몇 실시예들에 따라 이미지 콘텐트를 캡처하기 위해 사용된다. 몇몇 실시예들에서, 카메라 리그(900)는 도 1의 이미지 캡처 장치(102)로서 사용된다. 카메라 리그(900)는 표시된 위치들에 카메라들, 총 6 개의 카메라들에 대해 입체 영상 카메라들((901, 903), (905. 907), (909, 911))의 3 쌍들(902, 904, 906)을 갖는 지지 구조(도 11에 도시됨)를 포함한다. 지지 구조는 카메라를 지지하고, 카메라들이 장착되는 플레이트들이 고정될 수 있는 마운팅 플레이트(도 11에 도시된 요소(1120)를 참조)라고 여기서 또한 불리는 기저(1120)를 포함한다. 지지 구조는 플라스틱, 금속 또는 합성 재료 예컨대 그래파이트 또는 섬유 유리로 만들어질 수 있고, 카메라들 사이의 간격 및 관계를 보기 위해 또한 사용되는 삼각형을 형성하는 라인들로 나타내진다. 점선들이 교차하는 중심점은 카메라 쌍들(902, 904, 906)이 몇몇 실시예들에서 회전될 수 있지만 반드시 모든 실시예들에서는 그렇지는 않은 중심 절점을 나타낸다. 중심 절점은 몇몇 실시예들에서 삼각형 선들로 나타낸 카메라 지지 프레임(912)이 회전될 수 있는, 예를 들면, 삼각 기저의 강철 로드 또는 스레디드 중심 마운트에 대응한다. 지지 프레임은 카메라들이 장착된 플라스틱 하우징 또는 삼각 구조일 수 있다.
도 9에서, 카메라들(902, 904, 906)의 각각의 쌍은 상이한 카메라 쌍 위치에 대응한다. 제 1 카메라 쌍(902)은 정면을 마주보는 위치에 대해 0도 전방에 대응한다. 이러한 위치는 관심의 주요 장면 영역, 예를 들면, 보통 스포츠 경기가 행해지고 있는 필드, 스테이지 또는 주요 동작이 일어날 가능성이 있는 몇몇 다른 영역에 대응한다. 제 2 카메라 쌍(904)은 120도 카메라 위치에 대응하고 오른쪽 후방 뷰잉 영역을 캡처하기 위해 사용된다. 제 3 카메라 쌍(906)은 240도 위치(0도 위치에 관하여) 및 왼쪽 후방 뷰잉 영역에 대응한다. 세 개의 카메라 위치들이 120도 떨어져 있다는 것을 주의하라. 각각의 카메라 뷰잉 위치는 도 9 실시예에서 하나의 카메라 쌍을 포함하고, 각각의 카메라 쌍은 이미지들을 캡처하기 위해 사용되는 왼쪽 카메라 및 오른쪽 카메라를 포함한다. 왼쪽 카메라는 때때로 왼쪽 눈 이미지들이라고 불리는 것을 캡처하고, 오른쪽 카메라는 때때로 오른쪽 눈 이미지들이라고 불리는 것을 캡처한다. 이미지들은 뷰 시퀀스의 일부 또는 한번 이상 캡처된 정지 이미지일 수 있다. 보통 적어도 카메라 쌍(902)에 대응하는 정면 카메라 위치는 고품질 비디오 카메라들로 점유될 것이다. 다른 카메라 위치들은 고품질 비디오 카메라들, 저품질 비디오 카메라들 또는 정지 또는 모노 이미지들을 캡처하기 위해 사용된 단일 카메라가 점유될 수 있다. 몇몇 실시예들에서, 제 2 및 제 3 카메라 실시예들은 왼쪽이 점유되지 않고, 제 1 카메라 쌍(902)이 상이한 시간들에 모든 세 개의 카메라 위치들에 대응하는 이미지들을 캡처하게 하는 카메라가 장착된 지지 플레이트가 회전된다. 몇몇 이러한 실시예들에서, 왼쪽 및 오른쪽 후방 이미지들이 먼저 캡처되고, 이후 전방 카메라 위치의 비디오가 이벤트 동안 캡처된다. 캡처된 이미지들은 실시간으로, 예를 들면, 이벤트가 여전히 진행중인 동안, 하나 이상의 재생 디바이스들로 인코딩 및 스트리밍될 수 있다.
도 9에 도시된 제 1 카메라 쌍은 왼쪽 카메라(901) 및 오른쪽 카메라(903)를 포함한다. 왼쪽 카메라(901)는 제 1 카메라에 고정된 제 1 렌즈 어셈블리(920)를 갖고, 오른쪽 카메라(903)는 오른쪽 카메라(903)에 고정된 제 2 렌즈 어셈블리(920')를 갖는다. 렌즈 어셈블리들(920, 920')은 캡처될 광각 시야를 허용하는 렌즈들을 포함한다. 몇몇 실시예들에서, 각각의 렌즈 어셈블리들(920, 920')은 어안 렌즈를 포함한다. 따라서, 카메라들(902, 903)의 각각은 180도 시야 또는 거의 180도를 캡처할 수 있다. 몇몇 실시예들에서, 180도 미만이 캡처되지만, 몇몇 실시예들에서 인접한 카메라 쌍들로부터 캡처된 이미지들에서 적어도 일부 중첩이 또한 존재한다. 도 9 실시예에서, 카메라 쌍은 제 1(0도), 제 2(120도), 및 제 3(240도) 카메라 장착 위치들의 각각에 위치되고, 각각의 쌍은 환경의 적어도 120도 이상을 캡처하지만, 많은 경우들에서, 각각의 카메라 쌍은 환경의 180도 또는 거의 180도를 캡처한다.
제 2(904) 및 제 3(906) 카메라 쌍들은 제 1 카메라 쌍(902)과 동일하거나 유사하지만, 정면 0도 위치에 관하여 120 및 240도 카메라 장착 위치들에 위치된다. 제 2 카메라 쌍(904)은 왼쪽 카메라(905) 및 왼쪽 렌즈 어셈블리(922), 및 오른쪽 카메라(907) 및 오른쪽 카메라 렌즈 어셈블리(922')를 포함한다. 제 3 카메라 쌍(906)은 왼쪽 카메라(909) 및 왼쪽 렌즈 어셈블리(924), 및 오른쪽 카메라(911) 및 오른쪽 카메라 렌즈 어셈블리(924')를 포함한다.
도 9에서, D는 카메라들(901, 903)의 제 1 입체 영상 쌍의 축들간 거리를 나타낸다. 도 9 예에서, D는 평균 인간의 왼쪽 및 오른쪽 눈들의 동공들 사이의 거리와 동일하거나 유사한 117 ㎜이다. 도 9의 점선(950)은 파노라마 어레이의 중심점으로부터 오른쪽 카메라 렌즈(920')의 입사 동공까지의 거리를 도시한다(노드 오프셋이라고도 알려짐). 도 9 예에 대응하는 일 실시예에서, 참조 번호(950)로 나타낸 거리는 315 ㎜이지만 다른 거리들이 가능하다.
하나의 특정한 실시예에서, 카메라 리그(900)의 풋프린트는 수평 면적이 640 ㎟ 이하로 비교적 작다. 이러한 작은 크기는 카메라 리그가 청중에, 예를 들면, 팬 또는 참석자가 보통 위치 또는 배치되는 착석 위치에 배치되게 한다. 따라서, 몇몇 실시예들에서, 카메라 리그는 뷰어가 이러한 효과를 바라는 청중의 멤버를 감지하게 하는 청중 영역에 배치된다. 몇몇 실시예들에서 풋프린트는, 몇몇 실시예들에서, 중심 지지 로드가 장착되거나 지지 탑이 위치되는 지지 구조가 포함하는 기저의 크기에 대응한다. 인식되는 바와 같이, 몇몇 실시예들에서 카메라 리그들은 3쌍의 카메라들 사이에 중심점에 대응하는 기저의 중심점 주변을 회전할 수 있다. 다른 실시예들에서, 카메라들은 고정되고 카메라 어레이의 중심 주변을 회전하지 않는다.
카메라 리그는 먼 물체뿐만 아니라 비교적 가까운 물체를 캡처할 수 있다. 하나의 특별한 실시예에서, 카메라 어레이의 최소 이미징 거리는 649 ㎜이지만 다른 거리들이 가능하고, 이러한 거리는 결코 중요하지 않다.
카메라 어셈블리의 중심으로부터 제 2 및 제 3 카메라 부분들의 뷰들의 교차점(951)까지의 거리는 제 1 및 제 2 카메라 쌍들에 의해 캡처된 이미지들을 교정하기 위해 사용될 수 있는 일 예시적인 교정 거리를 나타낸다. 타깃(915)이 최대 왜곡의 영역에 위치되거나 또는 그를 약간 넘어서 위치되는 카메라 쌍들로부터 알려진 거리에 배치될 수 있다는 것을 주의하라. 교정 타깃은 알려진 고정된 교정 패턴을 포함한다. 교정 타깃은 카메라 쌍들의 카메라들에 의해 캡처된 이미지들의 크기를 교정하기 위한 것일 수 있고, 그를 위해 사용된다. 교정 타깃의 크기 및 위치가 교정 타깃(915)의 이미지를 캡처하는 카메라에 관하여 알려지기 때문에, 이러한 교정이 가능하다.
도 10은 더 상세히 도 9에 도시된 카메라 어레이의 도면(1000)이다. 카메라 리그는 또한 6 개의 카메라들과 함께 도시되지만, 몇몇 실시예에서 카메라 리그는 단지 두 개의 카메라들, 예를 들면, 카메라 쌍(902)으로 점유된다. 도시된 바와 같이 각각의 카메라 쌍 장착 위치들 사이에 120도 간격이 존재한다. 예를 들면, 각각의 카메라 쌍 사이의 중심이 카메라 장착 위치의 방향에 대응하는 경우, 이러한 경우에서, 제 1 카메라 장착 위치는 0도에 대응하고, 제 2 카메라 장착 위치는 120도에 대응하고, 제 3 카메라 장착 위치는 240도에 대응하는 것을 고려하자. 따라서 각각의 카메라 장착 위치는 120도씩 분리된다. 이는 각각의 카메라 쌍(902, 904, 906)의 중심을 통해 연장하는 중심선 및 선들 사이의 각이 측정되는 경우 볼 수 있다.
도 10 예에서, 카메라들의 쌍(902, 904, 906)은 상이한 뷰들이 카메라 기반 기저의 위치를 변경해야 하지 않고 상이한 시간에 캡처되게 하는 카메라 리그의 중심점 주변을 회전할 수 있고, 몇몇 실시예들에서, 그 주위를 회전한다. 즉, 카메라들은 리그의 중심 지지대 주변으로 회전될 수 있고, 도 10에 도시된 리그를 사용하여 360도 장면 캡처를 허용하는 상이한 시간들에서 상이한 장면들을 캡처하도록 허용될 수 있고, 이는 단지 두 개의 카메라들로 점유된다. 이러한 구성은 입체 영상 카메라들의 비용이 주어진 비용 관점으로부터 특히 바람직하고, 동일한 시점이지만 스포츠 경기 또는 다른 이벤트 동안 주요 동작을 포함하는 정면 장면이 발생할 수 있는 시간과 상이한 시간에 캡처된 배경을 보이는 것이 바람직할 수 있는 많은 애플리케이션들에 적합하다. 예를 들면, 이벤트 동안 주요 이벤트 동안 보이지 않는 것이 바람직할 물체들은 카메라 뒤에 배치될 수 있다는 것을 고려하자. 이러한 시나리오에서, 후방 이미지들은 주요 이벤트 전에 캡처되고 이미지 데이터의 360도 세트를 제공하기 위해 주요 이벤트의 실시간으로 캡처된 이미지들과 함께 이용 가능하게 될 수 있고, 때때로 캡처되고 이용 가능하다.
도 11은 일 예시적인 실시예에 따라 구현된 일 예시적인 카메라 리그(1100)의 상세도를 도시한다. 도 11로부터 이해될 수 있는 바와 같이, 카메라 리그(1100)는 모든 실시예들이 아닌 일부 실시예들이 입체 영상 카메라들인 3쌍의 카메라들(1102, 1104, 1106)을 포함한다. 각각의 카메라 쌍은 몇몇 실시예들에서 두 개의 카메라들을 포함한다. 카메라 쌍들(1102, 1104, 1106)은 도 9 및 도 10에 관하여 상기에 논의된 카메라 쌍들(902, 904, 906)과 동일하거나 유사하다. 몇몇 실시예들에서, 카메라 쌍들(1102, 1104, 1106)은 카메라 리그(1100)의 지지 구조(1120)상에 장착된다. 몇몇 실시예들에서, 세 개의 쌍들(여섯 개의 카메라들)의 카메라들(1102, 1104, 1106)은 각각의 카메라 쌍 장착 플레이트들을 통해 지지 구조(1120)상에 장착된다. 지지 구조(1120)는 입체 영상 카메라 쌍들을 장착하기 위한 세 개의 장착 위치들을 포함하고, 각각의 장착 위치는 상이한 120도 뷰잉 영역에 대응한다. 도 11의 예시적인 실시예에서, 제 1 쌍의 입체 영상 카메라들(1102)은 세 개의 장착 위치들 중 제 1 장착 위치, 예를 들면, 정면 위치에 장착되고, 120도 정면 뷰잉 영역에 대응한다. 제 2 쌍의 입체 영상 카메라들(1104)은 세 개의 장착 위치들 중 제 2 장착 위치, 예를 들면, 정면 위치에 관하여 시계 방향으로 120도 회전하는 배경 위치에 장착되고, 상이한 120도 뷰잉 영역에 대응한다. 제 3 쌍의 입체 영상 카메라들(1106)은 세 개의 장착 위치들 중 제 3 장착 위치, 예를 들면, 정면 위치에 관하여 시계 방향으로 240도 회전하는 배경 위치에 장착되고, 다른 120도 뷰잉 영역에 대응한다. 카메라 리그(1100)상의 세 개의 카메라 장착 위치들은 서로에 관하여 120도씩 오프셋되지만, 몇몇 실시예들에서, 카메라 리그상에 장착된 각각의 카메라는 약 180도의 시야를 갖는다. 몇몇 실시예들에서, 이러한 확장된 시야는 카메라 디바이스들상에서 어안 렌즈를 사용함으로써 달성된다.
모든 장착 플레이트들이 도시된 도면에 보이지는 않지만, 카메라 쌍(1102)을 장착하기 위해 사용된 카메라 장착 플레이트(1110)가 도시된다. 카메라들을 위한 장착 플레이트들은 지지 기저(1120)의 슬롯들을 지나서 바닥부로부터 장착 플레이트에 나사형 구멍들로 통과하는 나사들을 위한 슬롯들을 갖는다. 이는 상기 쌍에 대한 장착 플레이트가 하부로부터 액세스 가능한 나사들을 풀고 이후 카메라 쌍 장착 플레이트를 지지 구조에 고정하기 위해 나사들을 조임으로써 조정되게 한다. 개별적인 카메라 위치들이 또한 조정될 수 있고, 이후 조정들 후 고정될 수 있다. 몇몇 실시예들에서, 개별 카메라들은 상부로부터 장착 플레이트로 조정/고정될 수 있고, 카메라 장착 플레이트들은 하부로부터 조정/고정될 수 있다.
다수의 실시예들에서, 카메라 리그(1100)는 지지 구조(1120)가 회전 가능하게 장착되는 기저(1122)를 포함한다. 따라서, 다양한 실시예들에서, 지지 구조(1120)상의 카메라 어셈블리는 기저의 중심을 통과하는 축 주변을 360도 회전될 수 있다. 몇몇 실시예들에서, 기저(1122)는 삼각대 또는 다른 장착 디바이스의 부분일 수 있다. 지지 구조는 플라스틱, 금속, 또는 합성 재료 예컨대 그래파이트 또는 섬유 유리로 구성될 수 있다. 카메라 쌍들은, 몇몇 실시예들에서, 때때로 중심 절점이라고 불리는 중심점 주변으로 회전될 수 있다.
상기 요소들에 더하여, 몇몇 실시예들에서, 카메라 리그(1100)는 두 개의 시뮬레이션된 귀들(1130, 1132)을 추가로 포함한다. 이들 시뮬레이션된 귀들(1130, 1132)은 사람 귀들을 모방하고, 몇몇 실시예들에서 인간 귀의 형상으로 몰딩된 실리콘으로 구성된다. 시뮬레이션된 귀들(1130, 1132)은 두 개의 귀들이 평균 인간의 인간 귀들 사이의 간격과 동일하거나 거의 동일한 거리로 서로로부터 이격되는 마이크로폰들을 포함한다. 시뮬레이션된 귀들(1130, 1132)에 장착된 마이크로폰들은 정면을 마주보는 카메라 쌍(1102)상에 장착되지만, 대안적으로 지지 구조, 예를 들면, 플랫폼(1120)상에 장착될 수 있다. 시뮬레이션된 귀들(1130, 1132)은 인간 귀들이 인간 머리상의 눈들의 정면에 수직하게 위치되는 것과 유사한 방식으로 카메라 쌍(1102)의 정면에 수직하게 위치된다. 시뮬레이션된 귀들(1130, 1132)의 측면의 구멍들은 시뮬레이션된 귀들의 측면의 오디오 입력 구멍의 역할을 하고, 시뮬레이션된 귀들 및 구멍은 인간의 귀가 오디오 사운드들을 인간의 귀에 포함된 고막으로 지향시키는 것처럼 시뮬레이션된 귀들의 각각의 것에 장착된 마이크로폰으로 오디오를 지향시키도록 조합하여 동작한다. 왼쪽 및 오른쪽 시뮬레이션된 귀들(1130, 1132)에서 마이크로폰들은 카메라 리그(1100)의 위치의 인간이 카메라 리그의 위치에 위치되는 경우 사람의 왼쪽 및 오른쪽 귀들을 통해 인식되는 것과 유사한 스테레오 사운드 캡처를 제공한다.
도 11은 세 개의 입체 영상 카메라 쌍들을 갖는 예시적인 카메라 리그(1100)의 하나의 구성을 도시하지만, 다른 변형들이 범위 내에서 가능하다는 것이 이해되어야 한다. 예를 들면, 일 구현에서, 카메라 리그(1100)는 단일 카메라 쌍, 예를 들면, 360도 장면의 상이한 부분들이 상이한 시간들에 캡쳐되게 하는 카메라 리그의 중심점 주변을 회전할 수 있는 한 쌍의 입체 영상 카메라들을 포함한다. 따라서, 단일 카메라 쌍은 지지 구조상에 장착되고 리그의 중심 지지대 주변으로 회전될 수 있고, 360도 장면 캡처를 허용하는 상이한 시간들에서 상이한 장면들을 캡처하도록 허용될 수 있다.
도 12는 일 예시적인 360 장면 환경(1200), 예를 들면, 360도 장면의 상이한 부분들을 캡처하는 각각의 카메라의 상이한 카메라 위치들에 대응하는 상이한 뷰잉 영역들/부분들로 분할될 수 있는, 360 장면 영역을 도시한다. 도시된 예에서, 360 장면 영역(1200)은, 예를 들면, 도 9, 도 10, 및 도 11에 도시되는 카메라 리그(1100)상에 장착되고 위치된 카메라들과 같은, 세 개의 상이한 카메라/카메라 쌍들에 의해 캡처되는 세 개의 180도 구역들에 대응하는 세 개의 부분들로 분할된다. 360도 장면(1200)상에 마킹한 0도는 장면의 중심인 것으로 고려될 수 있다. 어안 렌즈가 사용되지 않는 몇몇 실시예들에서, 각각의 카메라의 시야는 약 120도이고, 따라서 카메라가 대략 120도 장면 영역을 캡처하게 한다. 이러한 실시예들에서, 상이한 120도 장면 부분들의 경계는 360도 장면이 각각 120도의 3 부분으로 분할하는 검은 실선들을 사용하여 도면에 도시된다. 카메라들이 어안 렌즈가 갖춰진 실시예들에서, 각각의 카메라의 시야는 약 180도(+-5도)로 확장하고, 따라서 카메라가 거의 180도(+-5도) 장면 영역을 캡처하게 한다.
0도 마크의 왼쪽 및 오른쪽에 대해 90도를 포함하는 제 1 구역(270부터 90까지 180도 정면 장면 영역에 대응하는 구역(1))은 제 1 카메라, 예를 들면, 카메라 디바이스가 대략 180도의 시야를 갖게 하는 어안 렌즈를 갖춘, 정면 장면 영역을 캡처하기 위해 위치된 카메라 쌍(1102)에 의해 캡처될 수 있다. 제 2 구역(구역(2))은 제 2 카메라, 예를 들면, 어안 렌즈를 갖춘 후방 오른쪽 장면 영역을 캡처하기 위해 위치된 카메라 쌍(1104)에 의해 캡처될 수 있는 30으로부터 210까지의 180도 후방 오른쪽 장면 영역에 대응하고, 제 3 구역(구역(3))은, 제 3 카메라, 예를 들면, 어안 렌즈를 갖춘 후방 왼쪽 장면 영역을 캡처하기 위해 위치된 카메라 쌍(1106)에 의해 캡처될 수 있는 150으로부터 330까지의 180도 후방 왼쪽 장면 영역에 대응한다. 범례(1250)는, 예를 들면, 상이한 구역들하에 포함된 장면 영역의 시작 및 종료를 마킹하는, 상이한 구역 경계들을 나타내기 위해 사용된 상이한 라인 패턴들을 식별하는 정보를 포함한다. 상이한 카메라들에 의해 포함된 세 개의 상이한 구역들하의 장면 영역들 사이에 실질적인 중첩이 존재하는 것이 도면으로부터 이해될 수 있다. 도 12의 도시된 예에서, 구역(1)과 구역(2) 사이의 중첩은 60도, 즉, 30 내지 90하의 장면 영역이고, 구역(2)과 구역(3) 사이의 중첩은 또한 60도, 즉, 150 내지 210하의 장면 영역이고, 구역(3)과 구역(1) 사이의 중첩은 60도, 즉, 270 내지 330하의 장면 영역이다. 도시된 예에서, 중첩은 60도이지만, 상이한 여러가지 중첩들이 가능하다는 것이 이해되어야 한다. 몇몇 실시예들에서, 두 개의 상이한 장면 커버리지 영역들 사이의 중첩은 30도 내지 60도 사이에 존재한다.
몇몇 실시예들에서, 콘텐트 제공자는 상이한 카매레들에 의해 캡처된 360도 장면 영역들의 상이한 부분들에 대응하는 콘텐트를 포함하는 콘텐트 스트림을 고객 재생 디바이스들로 발행, 예를 들면, 멀티캐스트한다. 몇몇 실시예들에서, 상이하게 인코딩된 상이한 장면 영역들에 대응하는 콘텐트의 다수의 버전들이 콘텐트 제공자에 의해 멀티캐스트되고, 특정한 버전을 지원하고 선호하는 재생 디바이스는 디코딩 및 재생할 적절한 콘텐트 스트림을 선택할 수 있다. 몇몇 실시예들의 일 양태에 따라, 재생 디바이스는 사용자의 현재 시야를 나타내는 현재 머리 위치를 추적하고, 재생에 사용하기 위해 수신하도록 선택할 360도 장면 영역의 일 부분에 대응하는 콘텐트를 포함하는 이용 가능한 콘텐트 스트림들 중 하나 이상을 결정한다. 예를 들면, 사용자 머리 위치가 사용자가 앞을 바라보고 있는 경우, 재생 디바이스는 360도 장면의 180도 정면 부분을 전달하는 스트림을 디코딩하지만, 사용자 머리 위치 및 뷰잉각이 변경된 것이 검출될 때, 재생 디바이스는 사용자의 현재 뷰잉각, 예를 들면, 360도 장면 영역의 후방 오른쪽, 후방 왼쪽, 뒤에 일치하는 장면 부분에 대응하는 스트림을 디코딩한다. 몇몇 실시예들에서, 360도 장면 영역의 제 1 부분, 예를 들면, 정면 180도에 대응하는 콘텐트를 포함하는 스트림은 360도 장면의 정면 부분을 캡처하기 위해 사용된 정면을 마주보는 카메라 쌍의 왼쪽 및 오른쪽 카메라들에 의해 캡처된 장면 영역을 포함한다.
도 13은, 예를 들면, 예시적인 360 장면 영역의 뷰잉 영역들/부분들을 포함하도록 위치될 수 있는 예시적인 카메라 리그(1100)상에, 상이한 카메라들에 의해 캡처될 수 있는 도 12의 예시적인 360 장면 영역의 상이한 부분들을 도시하는 예를 도시한다. 도 13 예는 예시적인 360 장면 영역의 상이한 부분들을 도시하는 도면들(1300, 1320, 1350)을 포함한다. 그러나, 상이한 카메라들에 의해 캡처된 장면의 상이한 부분들의 각각의 적어도 일부들이 몇몇 실시예들에서 중첩하는 것이 도면들로부터 이해될 수 있다. 상이한 셰이딩 패턴들이 상이한 카메라 위치들에 대응하는 장면 영역의 부분들을 보여주기 위해 도면들(1300, 1320, 1350)의 각각에 사용되었다. 몇몇 실시예들에서, 도면들(1300, 1320, 1350)에 도시된 상이한 장면 부분들은 상이한 뷰잉 방향들에 대응하는 콘텐트를 제공하는 상이한 콘텐트 스트림들을 통해 전달된다. 도 13 예에서 장면 부분들이 대략 180도 뷰잉 영역을 포함하는 것으로 도시되지만, 몇몇 실시예들에서, 장면 부분들은 120도와 180도 사이를 포함할 수 있다.
도면(1300)은 360도 장면(1200)의 제 1 예시적인 장면 부분(1305)을 도시한다. 제 1 예시적인 장면 부분(1305)은 정면 뷰잉 방향에 대응하고, 360도 장면 환경 중 180도 또는 대략 180도 뷰잉 영역을 포함한다. 제 1 장면 부분(1305)은, 예를 들면, 0도 카메라 위치에 위치된, 제 1 카메라 쌍(902 또는 1102)에 의해 캡처될 수 있다. 제 1 예시적인 장면 부분(1305)상의 영역은 대각선 패턴을 사용하여 도면(1300)에 도시된다. 제 1 예시적인 장면 부분(1305)은 제 1, 예를 들면, 정면, 뷰잉 방향에 대응하는 콘텐트의 프레임들을 전달하는 제 1 스트림에 의해 전달될 수 있다.
도면(1320)은 360도 장면(1200)의 제 2 예시적인 장면 부분(1307)(도면(1320)에 도시된 부분(1307', 1307")을 포함하는)을 도시한다. 제 2 예시적인 장면 부분(1307)은 후방 오른쪽 뷰잉 방향에 대응하고, 30으로부터 210으로 연장하는 360도 장면 환경 중 180도 또는 대략 180도 뷰잉 영역을 포함한다. 제 2 장면 부분(1307)은 도 9 및 도 10에 도시된 120도 카메라 위치에 위치된, 예를 들면, 제 2 카메라 쌍(904)에 의해 캡처될 수 있다. 제 2 예시적인 장면 부분(1307)하의 영역은 수평선 패턴을 사용하여 도면(1300)에 도시된다. 도면들(1300, 1302)을 고려하자. 제 1 및 제 2 장면 부분들(1305, 1307) 사이의 장면 영역의 중첩 부분(1308)을 주의하라. 중첩 부분(1308)은 장면 영역(1200)의 제 1 및 제 2 장면 부분들(1305, 1307) 모두에 공통적인 캡처된 장면 영역의 일 부분을 도시한다. 몇몇 실시예들에서, 제 1 및 제 2 장면 부분들(1305, 1307) 사이의 중첩은 +-2 내지 3도 변동을 갖고 30도 내지 60도 사이에 있다. 도 13의 도시된 예에서, 중첩 부분(1308)은 60도, 예를 들면, 30 내지 90의 영역이다. 따라서, 몇몇 실시예들에서, 상이한 콘텐트 스트림들에 의해 제공된 및/또는 상이한 카메라들에 의해 캡처된 상이한 뷰잉 방향들에 대응하는 장면 영역의 적어도 일 부분은 중첩한다. 몇몇 다른 실시예들에서, 상이한 카메라들에 의해 캡처된 상이한 뷰잉 방향들에 대응하는 장면 영역들 사이에 중첩이 존재하지 않는다. 몇몇 실시예에서, 제 2 예시적인 장면 부분(1307)은 제 2 뷰잉 방향에 대응하는 콘텐트의 프레임들을 전달하는 제 2 스트림에 의해 전달될 수 있다.
도면(1350)은 360도 장면(1200)의 제 3 예시적인 장면 부분(1309)(도면(1350)에 도시된 부분들(1309', 1309")을 포함하는)을 도시한다. 제 3 예시적인 장면 부분(1309)은 후방 왼쪽 뷰잉 방향에 대응하고, 150으로부터 330까지 연장하는 360도 장면 환경 중 180도 또는 대략 180도 뷰잉 영역을 포함한다. 제 3 장면 부분(1309)은 도 9 및 도 10에 도시되는 240도 카메라 위치에 위치된 예를 들면, 제 3 카메라 쌍(906)에 의해 캡처될 수 있다. 제 3 예시적인 장면 부분(1309)하의 영역이 수직선 패턴을 사용하여 도면(1300)에 도시된다. 도면들(1320, 1350)을 고려하자. 제 2와 제 3 장면 부분들(1307, 1309) 사이의 중첩 영역 부분을 조합하여 구성하는 중첩 부분들(1310, 1310')을 주의하라. 중첩 부분들(1310, 1310') 하에 공통의 영역은 장면 영역(1200)의 제 2 및 제 3 장면 부분들(1307, 1309) 모두에 공통인 캡처된 장면 영역의 부분을 보여준다. 몇몇 실시예들에서, 제 2 와 제 3 장면 부분들(1307, 1309) 사이의 중첩은 ±2-3도 변동을 갖고 30도와 60도 사이에 존재한다. 도 13의 도시된 예에서, 중첩 부분들(1310, 1310')은 함께 약 60도, 예를 들면, 150 내지 210의 영역을 포함하여 함께 포함한다. 여기서 도면들(1300, 1350)을 더 생각하자. 제 1과 제 3 장면 부분들(1305, 1309) 사이의 중첩 영역 부분을 나타내는 중첩 부분(1312)을 주의하자. 몇몇 실시예에서, 제 3의 예시적인 장면 부분(1309)은 제 3 뷰잉 방향에 대응하는 콘텐트의 프레임들을 전달하는 제 3 스트림에 의해 전달될 수 있다.
도 13 예의 부분으로 도시된 도면들은 본 발명의 몇몇 양태들의 이해를 용이하기 위한 예를 도시하지만, 다른 변동들이 개시의 범위 내에서 가능하다는 것이 이해되어야 한다.
도 14a 및 도 14b의 조합을 포함하는 도 14는 본 발명의 실시예들에 따라 재생 시스템을 동작시키는 일 예시적인 방법의 단계들을 도시하는 플로차트(1400)이다. 시스템은 도 8에 도시된 재생 시스템(800)일 수 있거나 본 출원에서 도시된 다른 도면들 중 어느 것의 재생 시스템일 수 있다.
예시적인 방법은 단계(1402)에서 시작하고, 재생 디바이스, 예를 들면, 도 19의 재생 디바이스(1900) 또는 다른 도면들 중 어느 것의 재생 디바이스가 턴온되고 개시된다. 논의의 목적들을 위해, 재생 시스템이, 예를 들면, 입체 영상 콘텐트의 경우에 상이한 이미지들이 나타내지는 사용자의 왼쪽 눈 및 오른쪽 눈에, 이미지 콘텐트가 나타내지는 디스플레이를 포함하는 헤드 마운트 디스플레이 디바이스(1905)에 결합된 컴퓨터 시스템(1900')을 포함하는 것을 고려하자. 컴퓨터 시스템(1900')이 디스플레이를 포함하는 헤드 마운트 디바이스에 대해 외부로 도시되지만, 컴퓨터 시스템(1900')은 그에 대해 외부라기보다는 헤드 마운트 디스플레이로 통합될 수 있다.
동작은 단계들(1402)로부터 단계(1404)로 진행한다. 단계(1404)에서, 재생 시스템(1900)은, 예를 들면, 프로그램 가이드의 일부로서, 복수의 콘텐트 스트림들 및/또는 초기화 데이터에 관한 정보를 수신한다. 수신된 정보는 도 18에 도시된 형태일 수 있고, 콘텐트 스트림들이 콘텐트를 요청하거나 콘텐트에 대해 동조시키기 위해 사용될 수 있는 멀티캐스트 그룹 식별자 또는 다른 식별자와 같은 스트림들을 수신하기 위해 사용될 수 있는 정보와 함께 이용 가능하거나 이용 가능한 것을 나타내는 정보를 포함한다. 예를 들면, 콘텐트 스트림과 연관된 멀티캐스트 어드레스는 콘텐트가 스위칭된 디지털 비디오를 통해 공급될 때 콘텐트를 요청하기 위해 사용될 수 있는 수신된 정보 또는 프로그램 식별자에 포함될 수 있다. 방송 콘텐트의 경우, 수신된 정보는 재생 디바이스가 특정 콘텐트 스트림을 수신하기 위해 동조되어야 하는 채널 및/또는 주파수를 나타내는 동조 정보를 포함할 수 있고, 때때로 그를 포함한다.
단계(1404)에서 수신된 정보는 하나 이상의 프로그램들에 대한 정보를 포함할 수 있다. 주어진 프로그램, 예를 들면, 스포츠 경기, 콘서트, 등에 대하여, 상이한 스트림들이 콘텐트가 대응하는 환경에서 카메라 위치에 관하여 상이한 뷰잉 방향들에 대응하는 콘텐트를 제공하는 데 이용 가능할 수 있다. 카메라 위치는 재생 동안 뷰잉 위치에 대응한다. 따라서, 재생 동안 사용자의 뷰잉각들은 수신될 수 있는 콘텐트에 나타내진 환경의 부분들과 상관된다. 환경의 상이한 부분들은 상이한 스트림들에 전달될 수 있다. 환경의 각각의 부분, 예를 들면, 360도 환경의 부분에 대해, 상이한 데이터 레이트들에 대응하는 하나 이상의 스트림들은 제공되는 정보에 리스트될 수 있다. 환경의 상부 및 하부 부분들이 또한 제공될 수 있다. 몇몇 실시예들에서 개별적인 스트림들의 콘텐트는 왼쪽 및 오른쪽 눈 이미지들에 대해 제공되는 상이한 정보를 갖는 입체 영상 콘텐트이고, 그에 의해 사용자에게 디스플레이될 상이한 이미지들이 원하는 3D 효과를 제공하게 한다. 몇몇 실시예들에서, 구형 환경의 상부 및 하부 부분들은 왼쪽 및 오른쪽 눈 뷰들이 동일한 모노 이미지들로서 제공되고, 따라서 두 개의 이미지들보다는 제공될 단 하나의 이미지를 요구한다.
프로그램, 환경의 부분, 및 스트림의 데이터 레이트에 관한 정보는 어느 스트림이 콘텐트를 스트리밍하기 위해 이용 가능한 주어진 제한된 대역폭에서 수신되는지를 우선 순위화하기 위해 재생 시스템에 의해 사용될 수 있고, 몇몇 실시예들에서 사용된다. 주어진 시간에 수신할 스트림의 우선 순위화 및 선택은 사용자의 머리 위치 및/또는 사용자의 현재 또는 과거 머리 회전의 방향에 기초할 수 있고, 몇몇 실시예들에서, 그에 기초한다.
입체 영상 콘텐트의 스트리밍의 경우, 주어진 제한된 대역폭 및/또는 데이터 제한들, 수신할 적절한 스트림의 선택은 만족스럽고 고품질의 뷰잉 경험을 위해 중요할 수 있다. 도 18에 도시된 정보와 동일하거나 유사할 수 있는 단계(1404)에서 수신된 정보, 예를 들면, 스트림 정보(1405)는 메모리에 저장되고, 예를 들면, 원하는 스트림이 전달되는 재생 디바이스에 공급될 스위칭된 디지털 비디오 채널을 네트워크 디바이스에 나타냄으로써, 선택된 스트림 및/또는 스트림의 요청된 전달을 제공하는 채널에 동조시키는 선택된 스트림에 대응하는 멀티캐스트 그룹을 연결시킴으로써, 스트림 또는 스트림들의 선택을 위해 특정한 시점에서 수신하고 선택된 스트림 전달을 개시하기 위해 사용된다.
동작은 단계(1404)로부터 단계(1406)로 진행한다. 단계(1406)에서, 초기화 동안, 사용자의 현재 머리 위치가 검출된다. 초기화 단계 동안 검출된 머리 위치가 정면을 바라보는 위치인 것으로 가정될 것을 인식하는 사용자는 보통 단계(1406) 동안 편안한 레벨의 정면을 마주보는 위치에 그의 머리를 유지한다.
동작은 단계(1406)로부터 단계(1408)로 진행한다. 단계(1408)에서, 단계(1406)에서 검출된 사용자의 머리 위치(1407)는, 사용자가 그의 머리를 0도 환경 위치, 즉, 환경의 특정 부분에 대응하는 콘텐트 스트림에 이후 인코딩되고 포함되는 캡처 이미지들에 사용된 카메라들에 의해 캡처된 전방 위치에 대응할 이러한 위치에 있을 때 디스플레이된 전방(0도) 환경 뷰잉 위치 및 뷰로서 처리된다. 스포츠 경기의 경우에, 이러한 위치는 보통 환경에서 동작의 주요 영역, 예를 들면, 스트림 또는 스트림들이 콘서트에 대응하는 경우, 무대 및 스트림들이 스포츠 경기에 대응하는 경우, 필드의 중심에 대응할 것이다. 따라서, 단계(1408)에서, 사용자의 뷰잉 위치는 0도 뷰잉 위치, 예를 들면, 장면 영역의 전방/정면 위치로서 해석되도록 설정될 것이다. 360도 뷰의 부분들이 사용자가 그의 머리를 회전시키는 경우 보이는 상이한 부분들을 갖는 수평 뷰잉 위치들에 대응한다는 것을 주의하라. 사용자가 머리를 위 또는 아래로 움직임으로써, 사용자는 하늘 부분 및/또는 지상 부분을 단독으로 또는 하나 이상의 다른 부분들과 조합하여 볼 수 있다. 주요 장면 영역이 레벨 머리 위치를 가정하는 360도 회전에 따른 부분들로 분할되기 때문에, 이러한 부분들에 대응하는 스트림들은 보통 더 많은 대역폭을 할당받고, 상부/하부 장면 부분들은 정지 이미지들 또는 드물게 변경하는 것을 사용하여 나타내질 수 있다.
동작은 단계(1408)로부터 단계(1406)로 진행하고, 환경 깊이 맵이 수신된다. 깊이 맵은 콘텐트 스트림의 이미지들이 맵핑될 3D 환경의 표면을 규정한다. 깊이 맵의 수신이 없을 시, 환경의 이미지들이 디스플레이 전에 렌더링하는 동안 맵핑되는 표면인 구의 표면 내부를 갖는 환경의 형상이 가정된 디폴트이다. 깊이 맵을 제공 및 사용함으로써, 콘텐트 스트림 내 이미지들이 시뮬레이션될 환경의 형상 및 표면들이 더 사실적인 표면들로 맵핑될 것이기 때문에, 더 사실적인 경험이 달성된다. 따라서, 단계(1410)에서 수신된 깊이 맵은 수신될 사용자에 의해 선택된 콘텐트가 또한 대응하는 환경에 대응한다. 단계(1410)에서 수신된 환경 맵, 또는 맵이 수신되지 않는 경우 디폴트 맵은 이미지들을 렌더링할 때 후속 사용을 위해 환경 맵(1411)으로서 저장된다.
동작은 단계(1410)로부터 단계(1412)로 진행한다. 단계(1412)에서, 2D 이미지 콘텐트를 3D 표면의 적어도 일 부분상에 맵핑하기 위해 사용될 하나 이상의 UV 맵들이 수신된다. 일 실시예에서, 적어도 하나의 UV 맵은 상이한 개별적인 이미지들로 나타내질 수 있는 환경의 각각의 부분에 대해 수신된다. 몇몇 이러한 실시예들에서, 콘텐트 스트림에 의해 전달된 이미지들이 상이한 카메라들, 예를 들면, 왼쪽 및 오른쪽 눈 카메라들에 의해 캡처될 때, 상이한 UV 맵들은 상이한 카메라들에 대해 제공될 수 있고, 때때로, 그에 제공된다. 따라서, 도 14a 예에서, 전방 부분과 같은 환경의 제 1 부분에 대응하는 제 1 UV 맵이 단계(1414)에서 수신되고, 단계(1416)에서, 왼쪽 후방 부분과 같은 환경의 제 2 부분에 대응하는 제 2 UV 맵이 수신되고, 단계(1417)에서, 오른쪽 후방 부분과 같은 환경의 제 3 부분에 대응하는 제 3 UV 맵이 수신된다. 환경의 상부 및 하부 부분들에 대응하는 UV 맵들은 단계(1418) 및 단계(1420), 각각에서 수신된다. 상기 부분들이 동일한 크기인 경우, 동일한 UV 맵이 다수의 부분들에 대해 사용된다. 그러나, 몇몇 실시예들에서, 상이한 UV 맵들이 상이한 카메라들에 의해 캡처된 이미지들에 대해 사용된다.
따라서, 하나의 이러한 실시예에서, 입체 영상 이미지 데이터가 제공되는 환경의 각각의 부분, 예를 들면, 왼쪽 및 오른쪽 눈 이미지들에 대해, UV 맵들이 특정한 왼쪽 또는 오른쪽 눈 이미지 콘텐트를 캡처하기 위해 사용된 카메라 어셈블리의 특정한 특징들을 고려할 수 있도록 개별적인 UV 맵들은 왼쪽 및 오른쪽 눈 이미지들의 각각에 대해 수신 및 저장될 수 있다.
각각의 UV 맵은 3D 환경의 표면의 대응하는 부분으로 맵이 대응하는 콘텐트 스트림의 2차원 이미지를 맵핑하기 위해 사용된 맵을 제공한다. 이러한 방식으로 카메라에 의해 캡처된 이미지들은 2D 이미지들로서 송신될 수 있고 이후 3D 모델로 규정된 표면 또는 표면의 일 부분상에 텍스처로서 맵핑될 수 있다.
3D 모델 정보 및 UV 맵들에 의해, 장면 부분에 대한 다른 콘텐트가 수신 및 저장될 수 있는 경우, 디폴트들로서 사용될 수 있는 이미지들이 수신된다. 단계(1422)에서, 콘텐트, 예를 들면, 제 1, 제 2, 제 3, 및 제 5 장면 부분들 중 하나 이상에 대응하는 이미지가 단계(1422)에서 수신되고 저장된다. 몇몇 실시예들에서, 환경의 일 부분에 대응하는 다수의 대안적인 이미지들, 예를 들면, 배경 부분 또는 하늘 부분은 단계(1422)에서 수신 및 저장된다. 디폴트 이미지가 다수의 디폴트 이미지들이 저장되는 일 부분에 대한 이벤트 동안 주어진 시점에서 사용되는 것을 나타내는 제어 정보가 수신될 수 있다. 예를 들면, 몇몇 실시예들에서, 앉아있는 관객의 배경 이미지 및 서있는 관객의 배경 영역 이미지는 두 개의 디폴트 이미지들로서 저장된다. 제어 정보는 어느 배경 이미지가 이벤트의 주어진 부분에 사용되는지를 나타내기 위해 사용된다. 예를 들면, 경기 또는 콘서트에서 기립 박수에 대응하는 일 부분 동안, 관중 기립 이미지는 디스플레이될 배경 이미지가 사용자가 배경 방향으로 향하는 것으로 시그널링된다. 그러나, 관중이 보통 앉아있을 경우의 주요 부분 동안, 사용자가 그의 머리를 배경 쪽으로 돌릴 경우, 앉아있는 관객의 디폴트 이미지가 사용되어야 한다는 것을 제어 정보가 시그널링한다. 제어 정보는 콘텐트 스트림으로부터 개별적으로 시그널링될 수 있거나 또는 디폴트 이미지들 중 하나 이상이 관련되는 부분과 상이한 환경의 일 부분에 대한 콘텐트 스트림과 함께 포함될 수 있다. 예를 들면, 전방 방향에 대응하는 콘텐트 스트림은 전방 방향에 대응하는 이미지들, 예를 들면, 왼쪽 및 오른쪽 눈 이미지들, 뿐만 아니라 디폴트 이미지들이 하늘, 지상, 이벤트 동안 다양한 시간들에서 오른쪽 배경 부분 및 왼쪽 배경 부분에 대해 사용되어야 하는 것을 나타내는 제어 정보를 제공할 수 있다. 대안적으로, 재생 디바이스는 특정 시점에서 전경 이미지의 하나 이상의 특징들에 대한 유사도의 광도에 기초하여 배경 또는 하늘 부분 중 어느 것을 사용할지를 결정할 수 있다. 예를 들면, 전경 이미지들이 어두울 때, 이는 검출될 수 있고 자동으로 검출된 흐린 하늘 이미지일 수 있고, 반면에 전경 이미지가 더 밝을 때, 이것이 또한 검출될 수 있고 수신 및 저장된 이용 가능한 디폴트 하늘 이미지들로부터 자동으로 선택된 덜 흐리고, 더 밝은 하늘 이미지일 수 있다.
단계(1422)에서, 상이한 환경 부분들에 대응하는 디폴트 이미지들은 보통 인코딩된 형태로 수신 및 저장된다. 단계(1424)에서, 수신된 이미지들 중 하나 이상이 디코딩되고, 디코딩된 콘텐트는 이후 단계(1426)에서 하나 이상의 이미지 버퍼들에 저장된다. 이러한 방식으로, 디폴트 이미지들은 그들이 재생 동안 렌더링을 위해 필요한 때에 이후에 다시 디코딩될 필요가 없도록 디코딩된 형태로 디코딩 및 저장될 수 있다. 디폴트 이미지가 다수번 사용될 수 있기 때문에, 디코딩 및 저장은 렌더링에서 또는 렌더링 전에만 이미지를 디코딩하기 위해 그와 달리 요구되는 디코딩 요구들을 감소시킬 수 있다. 처리 자원들이 요컨대 디코딩된 형태로 디폴트 이미지들을 사전 디코딩 및 저장을 공급할 수 있다고 가정하면, 이미지들이 디스플레이 전에 즉시 디코딩되고, 이후 그것이 더 이상 필요하지 않으면, 디코딩된 이미지는 삭제되고, 예를 들면, 메모리로부터 제거되는 실시예들에 비해 프로세서 자원들의 사용을 개선한다.
동일한 디폴트 디코딩된 이미지가 예를 들면, 하늘, 등에 대해 다수번 사용될 수 있지만, 그것이 환경의 뷰잉된 부분을 생성하기 위해 조합되는 환경의 다른 이미지들에 그가 더 가깝게 매칭하도록 다른 수신된 이미지 콘텐트와 조합되기 전에 처리될 수 있다. 예를 들면, 몇몇 실시예들에서, 디코딩된 디폴트 이미지들은 그들이 적어도 디폴트 이미지가 환경의 다른 부분에 대응하는 이미지와 조합될 에지들을 따라 조합되거나 블러링되는 이미지 부분에 기초하여 휘도 조정을 받는다. 따라서, 적어도 몇몇 실시예들에서 사용 동안, 이미지 밝기 및/또는 컬러 특징들은 그들을, 그들이 조합되는 지상 이미지의 동일한 특징들에 더 유사하게 만들도록 필터링되거나 수정된다.
미래의 사용을 위해 저장된 초기화 데이터 및 디폴트 이미지들과 함께, 동작은 단계(1428)로 진행하고, 여기서 수신될 하나 이상의 스트림들의 일 세트, 예를 들면, 스트림들의 현재 선택된 세트가 초기화된다. 각각의 스트림은 입체 영상 또는 모노 이미지 데이터를 제공할 수 있다. 선택적으로 대응하는 오디오는 또한 선택된 스트림들에서 수신될 수 있지만 하나 이상의 개별적인 오디오 스트림들에서 더 일반적이다. 상기 기술은 오디오 스트림이 보통 또한 재생 디바이스에 의해 수신 및 디코딩될 것이고, 오디오가 스테레오 오디오를 포함할 수 있다는 이해에 의해 비디오 스트림들의 수신에 집중할 것이다.
예시적인 단계(1428)에서, 스트림들 중 현재 선택된 세트는 환경의 전방/정면 부분에 대응하는 콘텐트를 전달하는 제 1 스트림과 동일하게 설정된다. 이는,시작시 초기 위치가 전방 뷰잉 위치인 것으로 설정되고 따라서 초기화의 결과로서 사용자가 시작시 전방 장면 영역을 보기를 기대할 것이기 때문이다.
동작은 단계(1428)로부터 단계(1429)로 진행한다. 단계(1429)에서, 자원 할당 정보가 수신된다. 자원 할당 정보는 대역폭 및/또는 데이터 레이트 할당 제어 정보의 형태일 수 있다. 단계(1429)에서 수신된 정보는, 몇몇 실시예들에서, 얼마나 많은 대역폭 또는 데이터 전달 능력이 환경의 상이한 부분들에 대응하는 하나 이상의 전달 스트림들에 할당되어야 하는지에 관한 정보를 포함한다. 정보는 데이터 레이트는 보통 대역폭에 일치한다는 이해에 의해 대역폭 또는 데이터 레이트로 표현될 수 있다. 예를 들면, 수신될 수 있는 데이터의 양은 대역폭에 걸쳐 전달하기 위해 사용된 데이터 코딩의 형태를 고려한 대역폭량의 함수일 수 있다.
단계(1429)에서 수신된 정보는 환경의 특정 부분에 대응하는 이미지들의 수신에 할당할 이용 가능한 전달 능력의 상대적인 최대량을 나타낼 수 있다. 예를 들면, 이는 대역폭 또는 지원가능한 데이터 레이트의 최대 80%가 1차 데이터 스트림에 할당되어야한다는 것, 예를 들면, 대역폭의 나머지 20%를 갖는 전방 데이터 스트림은 하나 이상의 다른 스트림들로 할당된다는 것을 나타낼 수 있다. 상이한 방향들에 대한 자원들의 할당은 환경의 대응하는 부분 및/또는 검출된 관중 피드백에서 이미지 콘텐트의 함수일 수 있고, 몇몇 실시예들에서, 그러한 함수이다. 예를 들면, 몇몇 실시예들에서, 콘텐트가 대응하는 이벤트 동안 발생하는 인터미션들 동안, 단계(1429)에서 수신된 정보는 자원들의 증가된 양이 환경의 하나 또는 두 개의 후방 부분들에 대응하는 이미지들을 수신하는 데 할당되어야 한다는 것을 나타낼 수 있다. 이는, 인터미션 동안, 사용자들이 그들의 머리를 돌려서 메인 필드 또는 스테이지로부터 눈길을 돌리기 시작할 더 많은 가능성이 있기 때문이고, 이는 인터미션 동안 관중에서 계속하는 동작이 존재하는 것이 나타나는 후방 부분들에 대해 몇몇 비디오가 공급되는 것이 바람직할 수 있다. 예를 들면, 야구 경기에서 핫도그들을 구입하거나 자리를 변경하는 사람의 이미지들이 존재할 수 있고, 몇몇 실시예들에서, 인터미션들 동안 배경이 실황이지만 다른 시간들에서 정지인 것으로 나타나도록 전송될 수 있다. 유사하게 배경의 광고판들의 이미지들은 광고 및/또는 엔터테인먼트 목적들을 위해 인터미션들 동안 변경될 수 있다. 따라서, 재생 디바이스가 경기의 다른 부분들 동안보다는 인터미션들 동안 배경 부분들을 수신하는 것에 대해 더 많은 자원들을 할당하도록 트리거하는 것이 바람직할 수 있다. 단계(1429)에서 수신된 제어 정보는 경기의 다른 조심스러운 부분들 또는 인터미션들 동안과 경기의 주요 부부들 동안이 상이할 수 있고, 때때로 상이하다. 적어도 몇몇 실시예들에서 주요 경기 동안, 단계(1429)에서 수신된 제어 정보는 더 많은 대역폭 및/또는 데이터 레이트가 주요, 예를 들면, 후방 부분보다는 전방, 환경의 영역에 할당되게 한다. 그러나, 인터미션들 또는 다른 개별적인 부분들 동안, 후방 부분들 주 하나 또는 둘 모두에 할당된 데이터 레이트는 증가되도록 강제될 수 있다.
주어진 방향에 할당된 자원들 사이의 분리는, 환경의 부분에 나타내진 콘텐트, 관중 주목의 측정, 및/또는 진행하고 있는 이벤트의 부분, 예를 들면, 주요 부분, 인터미션 부분, 쇼가 끝난 후 부분에 기초할 수 있다. 몇몇 실시예들에서 단계(1429)에서 제공된 제어 정보는, 예를 들면, 이벤트가 진행하고 있는 동안, 환경의 하나 이상의 부분들에 대응하는 이미지의 수신에 할당될 대역폭 또는 데이터 레이트의 최대량 및/또는 최소량을 지정한다. 몇몇 실시예들에서, 정보는 대역폭 또는 데이터가 이벤트 동안 지상 대 하늘 이미지 부분들을 수신하는 데 할당되지 않아야 할 수 있고, 따라서 이들 부분들은 이러한 경우에 정지 이미지들을 사용할 필요가 있을 때 채워지는 것임을 나타낸다.
대역폭/데이터 레이트 할당 제어 정보는 시간에 걸쳐 변할 수 있고, 상이한 정보가 상이한 시간들에 수신된다. 제어 정보는 전방 콘텐트 스트림으로 임베딩될 수 있고 및/또는 예를 들면, 제어 정보의 개별적인 세트로서 개별적으로 전송될 수 있다.
동작은 단계(1429)로부터 단계(1430)로 진행하고, 이미 수신되지 않은 스트림들의 선택된 세트에서 스트림(들)의 콘텐트 전달이 개시된다. 이는 선택된 스트림이 대응하는 멀티캐스트 그룹에 연결하는 것, 선택된 스트림의 전달을 요청하는 네트워크 디바이스로 메시지를 전송하는 것 및/또는 선택된 스트림 또는 스트림들이 송신되는 방송 채널로 동조시키는 것을 포함할 수 있다. 단계(1430)를 통과하는 제 1 패스의 경우에서, 이는 이것이 전달을 위해 선택될 초기 뷰잉 부분으로서 설정되었기 때문에 환경의 전방 부분에 대응하는 콘텐트 스트림의 전달을 개시하는 것을 포함할 것이다. 그러나, 사용자의 머리 위치가 변하기 때문에, 예를 들면, 사용자가 그의 머리를 왼쪽 또는 오른쪽으로 돌리기 때문에, 선택되는 스트림들의 세트는 변할 수 있고 보통 변할 것이다. 예를 들면, 사용자가 전방 영역 및 오른쪽 후방 영역의 일 부분이 보이게 되도록 그의 머리를 왼쪽으로 돌릴 경우, 선택된 스트림들의 세트는 전방 영역 및 왼쪽 후방 부분 영역에 대응하는 콘텐트가 수신되도록 변경될 것이다. 왼쪽 후방 부분이 수신되지 않았고 선택되는 경우, 왼쪽 후방 부분에 대응하는 스트림에서 콘텐트의 전달은 단계(1430)에서 개시될 것이다. 두 방향들에서 최대 데이터 레이트 스트림들이 지원되지 않을 수 있는 경우, 하위 데이터 레이트 전방 스트림이 선택되고, 따라서 하위 데이터 레이트 전방 스트림 및 왼쪽 후방 콘텐트 스트림 모두의 개시가 개시될 것이다. 선택된 세트 외부의 스트림들은 새롭게 선택된 세트에서 스트림들의 수신 전에 종료된다. 스트림들의 종료 및 개시는, 수신되는 콘텐트 및/또는 시간적인 갭들의 극적인 변화들이, 스트림 스위칭이 발생할 때, 이미지들의 품질 또는 소스에서 변화들을 현저하게 감소시키기 위해 사용되는 블러링 및/또는 필터링에 의해 최소화되도록 유연한 방식으로 수행된다. 예를 들면, 블러링은 렌더링 또는 디스플레이 프로세스의 일부분으로서 함께 스티칭되는 이미지들의 부분들에 걸쳐 수행될 수 있다.
선택된 스트림들의 현재 세트에 대해 개시된 콘텐트 전달에 의해 동작은 단계(1430)로부터 단계(1432)로 진행한다. 단계(1432)에서, 콘텐트가 콘텐트 스트림들의 선택된 세트에서 스트림들로부터 수신된다. 이는, 가장 높은 우선 순위 스트림에 대응하는 콘텐트를 수신하는 것을 포함할 수 있고, 다양한 실시예들에서 상기 콘텐트를 수신하는 것을 포함하고, 예를 들면, 상기 스트림은 시야의 대부분에 대응하는 콘텐트, 및 예를 들면, 상기 부분들은 시야에 대응하는 이미지 콘텐트의 작은 부분을 제공하는, 환경의 하나 이상의 다른 부분들에 대응하는 콘텐트를 제공한다. 현재 시야에 대한 콘텐트의 작은 부분을 제공하는 스트림은 2차 스트림으로서 기술될 수 있다. 단일 스트림이 전체 시야에 대한 콘텐트를 제공하는 일 실시예에서, 이용 가능한 대역폭/지원 가능한 수신 데이터 레이트의 20% 이하가 비축되고, 예를 들면, 사용자가 시야 밖의 방향으로 몸을 돌릴 경우 시야 밖의 콘텐트를 제공하는, 하나 이상의 2차 또는 하위 우선 순위 스트림들을 수신하기 위해 사용된다. 시야가 두 개의 상이한 콘텐트 스트림들에 대응하는 영역들간에 거의 균등하게 분리되는 경우, 각각의 스트림은, 그들이 대략 균등한 방식으로 분배되고 사용자가 두 개의 스트림들이 이미지들을 제공하는 영역 밖의 환경 영역을 보기 위해 빠르게 위치를 변경할 가능성이 없기 때문에, 이용 가능한 데이터 레이트/수신 데이터 레이트의 대략 절반이 할당될 수 있다.
개시된 콘텐트 수신에 의해, 단계(1432)에서, 콘텐트, 예를 들면, 이미지들이 스트림들의 선택된 세트로부터 수신된다. 1차, 예를 들면, 가장 높은 우선 순위의 콘텐트 경우에, 스트림은 보통 스트림에 수신되는 왼쪽 및 오른쪽 눈 이미지 콘텐트 모두를 갖는 입체 영상 콘텐트일 것이다. 낮은 우선 순위 스트림들 및/또는 낮은 데이터 레이트가 할당된 스트림들에 대하여 모노 이미지들이 왼쪽 및 오른쪽 눈 이미지들 모두에 디스플레이를 위해 수신되는 단일 이미지와 함께 수신될 수 있다. 전방 장면 부분은 보통 입체 영상 콘텐트로서 수신되지만, 하나 이상의 후방 부분들이 모노 이미지 스트림들로서 제공될 수 있다.
인코딩된 이미지 콘텐트는 보통 단계(1432)에서 스트림들로 수신된다. 단계(1434)에서, 수신된 콘텐트가 디코딩되고, 이후 접속 노드A(1436)를 통해 도달되는 단계(1438)에서, 디코딩된 콘텐트는 하나 이상의 이미지 버퍼들에 저장된다. 몇몇 실시예들에서, 디코딩된 이미지 버퍼는 환경의 각각의 부분에 대해 유지된다. 수신된 이미지 중 단지 하나의 부분만이 최종적으로 디스플레이될 수 있지만, 전체 수신된 프레임이 보통 디코딩 및 버퍼링된다. 디코딩된 버퍼링된 이미지는 그가 동일한 장면 부분에 대한 더 최근 이미지로 교체될 때까지 메모리에 유지될 수 있고, 몇몇 실시예들에서 그렇게 유지된다. 따라서, 임의의 주어진 시간에, 디코딩된 이미지는 현재 시야에 기초하여 필요되는 최종 출력 이미지를 렌더링하는 데 사용할 환경의 각각의 부분에 대해 이용 가능하다. 디코딩된 이미지 콘텐트는, 그가 더 최근의 디코딩된 이미지로 교체될 때까지, 메모리에 유지되기 때문에, 360도 환경의 부분들의 각각에 대응하는 이미지들의 디코딩은 각각의 프레임 시간 동안 발생할 필요가 없다. 따라서, 초당 30 개의 프레임들의 프레임 레이트가 지원될 수 있지만, 150 프레임들은 각각의 프레임 기간, 예를 들면, 상부, 하부, 전방, 왼쪽 후방, 오른쪽 후방 부분들의 각각에 대한 프레임 기간에 디코딩될 필요가 없고, 오히려 지원될 프레임 레이트와 동일하거나 약간 높은 더 적은 수의 프레임들이 주요 시야에 대응하는 부분보다 낮은 레이트에서 갱신되는 이전에 디코딩된 정지 이미지 부분들 또는 이전에 디코딩된 이미지 부분들로부터 나온 이미지의 몇몇 부분들과 함께 디코딩될 수 있다.
따라서, 단계(1438)에서 갱신 후에, 현재 디코딩된 프레임들은 사용자의 현재 시야에 기초하여 이미지를 렌더링하는 데 사용을 위해 이용 가능하다.
동작은 단계(1438)로부터 단계(1440)로 진행한다. 단계(1440)에서, 콘텐트는 이미지 버퍼(들)로부터 이용 가능한 디코딩된 콘텐트를 사용하여 하나 이상의 이미지 부분들이 예를 들면, 텍스처로서 적용되는 표면을 규정하는 환경 맵, 및 3D 표면의 모델에 대해 2D 디코딩된 이미지들을 적용하는 방법에 대한 정보를 제공하는 UV 맵(들)을 디스플레이하기 위해 렌더링된다. 환경의 3D 메시 모델은 환경의 이미지들이 적용되는 표면을 규정하는 메시 모델의 꼭지점들에 대응하는 UV 맵의 지점들을 갖는 그리드의 형태일 수 있다.
렌더링의 일부로서, 상이한 스트림들로부터 수신된 콘텐트에 대응하는 이미지 부분들은 단일 스트림으로부터의 콘텐트가 사용자의 시야를 완전히 점유하는 부분을 제공할 수 없을 때, 사용자의 시야에 대응하는 환경의 이미지를 생성하기 위해 조합될 것이다. 필터링 또는 블러링은 사용자들의 시야에 대응하는 합성 이미지를 형성하기 위해 연결되는 이미지들에 걸쳐 적용될 수 있고, 몇몇 실시예들에서 적용된다. 이는 이음매가 사용자에 대해 현저하게 감소시키는 경향이 있다. 또한, 합성 이미지의 일 부분을 제공하는 이미지 부분들의 휘도는, 몇몇 실시예들에서, 합성 이미지를 형성하기 위해 조합되는 이미지 부분들에 대한 휘도 조정들을 행할 때, 후방, 상부, 또는 측면 부분들의 휘도값들보다 큰 우선 순위가 주어지기 시작한 전방 뷰의 휘도값들을 갖는 합성 이미지를 형성하기 위해 조합되는 이미지 부분들 사이의 휘도 차이들을 감소시키도록 조정된다.
상이한 콘텐트 스트림들로부터 수신된 이미지들 중 하나 이상의 이미지 부분들의 합성일 수 있는 렌더링된 이미지는 단계(1442)에서 저장, 디스플레이, 또는 송신된다. 이는 선택된 콘텐트 스트림들의 현재 세트에 기초하여 콘텐트의 하나 이상의 프레임들의 생성 및 디스플레이를 나타낸다.
시간에 걸쳐 통신 채널 상태들 또는 네트워크 문제들에서의 변화들에 의해, 최대 지원 가능한 데이터 레이트는 변할 수 있다. 이는 단계(1443)에서 검출될 수 있고, 어느 콘텐트 스트림 또는 스트림들이 수신 및 처리되어야 하는지를 선택할 때 고려될 수 있다. 단계(1443)에서, 최대 지원가능한 데이터 레이트 및/또는 대역폭은 후속하는 단계들에서 사용된 것에 대하여 데이터(1444)에 의해 나타낸 것으로 결정된다. 단계(1445)에서, 사용자의 현재 머리 위치가 검출된다. 이는 헤드 마운트 디스플레이를 포함하는 헤드기어상의 위치 센서를 사용함으로써 행해질 수 있다.
동작은 단계(1445)로부터 단계(1446)로 진행하고, 사용자의 머리 위치가 변하는지의 여부에 관한 결정이 행해진다. 사용자의 머리 위치가 변경되지 않는 경우, 동작은 단계(1447)로 진행하고, 현재 이용 가능한 최대 대역폭 또는 최대 지원 가능한 데이터 레이트가, 예를 들면, 스트림 선택이 행해진 마지막 시간으로부터 변했는지의 여부에 관한 검사가 행해진다. 최대 지원 가능한 데이터 레이트 또는 머리 위치의 변경이 검출되지 않음 경우, 이전 스트림 선택은 유효하게 유지되고, 선택된 콘텐트 스트림들의 세트에 대한 변경이 행해지지 않는다. 따라서, 재생 시스템은 변하지 않고 유지되는 사용자의 현재 시야에 대응하는 콘텐트를 계속 수신할 것이다. 단계(1447)에서 변경이 검출되지 않은 경우, 동작은 접속 노드B(1456)를 통해 다시 단계(1429)로 진행한다.
그러나, 단계들(1446 또는 1447) 중 하나에서 변화가 검출되는 경우, 동작은 스트림 선택 서브루틴에 대한 호출을 포함하는 스트림 선택 단계(1448)로 진행한다. 이러한 방식에서, 머리 위치 및/또는 지원 가능한 데이터 레이트의 검출된 변경들이 고려될 수 있고, 스트림들의 선택은 사용자의 머리 위치 및/또는 데이터, 예를 들면, 이미지 콘텐트를 수신하기 위해 사용될 수 있는 지원 가능한 데이터 레이트를 고려하여 재고된다.
일단 스트림들이 스트림 선택 서브루틴에 의해 선택되면, 동작은 단계(1450)로 진행하고, 선택된 스트림들이 선택된 스트림들의 현재 세트와 상이한지의 여부에 관한 검사가 행해진다. 새롭게 선택된 세트가 사용중인 스트림들의 현재 선택된 세트와 동일한 경우, 수신되는 스트림들에 관한 변화들이 행해질 필요가 없고, 단계(1452)에서 스트림들의 현재 선택된 세트는 접속 노드B(1456)를 통해 단계(1429)로 진행하는 동작에 의해 변하지 않은 채로 남겨진다. 그러나, 스트림들의 현재 선택된 세트가 선택된 스트림들의 현재 세트와 상이한 경우, 스트림의 현재 선택된 세트는 스트림들의 선택된 세트에서 변경들을 반영하기 위해 단계(1454)에서 갱신되고, 예를 들면, 현재 선택된 세트는 스트림 선택 서브루틴에 의해 선택된 스트림들의 새롭게 선택된 세트와 동일한 세트이다.
동작은 단계(1454)로부터 단계(1455)로 진행하고, 스트림들의 갱신된 현재 선택될 세트에서 존재하지 않는 스트림들의 수신은 종료된다. 이는 다른 목적을 위해 종료되는 스트림을 수신, 예를 들면, 새롭게 선택된 스트림 또는 스트림들의 수신을 위해 사용된 동조기와 같은 자원들을 사용하기 위해 더 이상 수신되거나 다른 동작을 취하지 않는 스트림에 대응하는 멀티캐스트 그룹의 멤버인 것을 더 이상 원하지 않는다는 것을 시그널링하는 재생 시스템을 포함할 수 있다.
동작은 접속 노트B(1456)를 통해 단계(1455)로부터 단계(1429)로 진행한다. 이후, 단계(1430)에서, 임의의 새롭게 선택된 스트림들의 수신이 개시될 것이고 수신된 콘텐트는 하나 이상의 이미지들을 렌더링하기 위해 사용될 것이다. 따라서, 시간에 걸쳐 사용자가 그의 머리 위치를 변경하고 및/또는 지원될 수 있는 데이터 레이트를 변경하기 때문에, 선택된 스트림들이 또한 변할 수 있다.
도 15는 도 14 방법의 단계(1448)에서 호출된 스트림 선택 서브루틴으로서 사용될 수 있는 일 예시적인 실시예에 따라 스트림 선택 서브루틴의 단계들을 도시하는 플로차트이다.
스트림 선택 서브루틴(1500)은, 서브루틴이 도 14의 단계(1448)에 의해 호출될 때 단계(1502)에서 시작한다. 동작은 시작 단계(1502)로부터 스트림 선택 단계(1504)로 진행한다. 스트림 선택 단계(1504)에 대한 입력들은 대역폭 및/또는 데이터 레이트 제한들(1503)을 포함한다. 이들은 하나 이상의 장면 부분들, 스트림들 및/또는 스트림 방향들에 할당되어야 하는 이용 가능한 대역폭의 최대 부분 또는 총 수신 데이터 레이트에 대한 정보를 포함할 수 있다. 제한들은 또한 장면 부분들, 스트림들 및/또는 뷰잉 방향들에 대한 최소 대역폭 또는 데이터 할당들을 포함할 수 있다. 따라서, 제한들은 특정 방향에 대응하는 콘텐트의 수신에 할당된 자원들의 최대량을 제한할 수 있고 및/또는 이벤트 인터미션 동안 후방 영역과 같은 환경의 일부분에서 동작이 발생할 때, 방향에 대응하는 부분이 적어도 드물게 또는 특정한 시간들에 갱신되도록 방향에 대해 할당된 자원들의 최소량을 지정할 수 있다.
최대 지원 가능한 데이터 레이트 및/또는 최대 이용 가능한 대역폭(1444)은 선택 단계(1504)에 대한 다른 입력이다. 이러한 정보(1444)는 콘텐트를 수신하기 위해 이용 가능한 최대 대역폭 및/또는 콘텐트 스트림들 중 하나 또는 그의 조합의 수신을 지원하기 위해 사용될 수 있는 최대 지원 가능한 데이터 레이트를 나타낸다. 사용자의 현재 머리 위치(1407) 및 이용 가능한 스트림들(1405)에 관한 정보, 예를 들면, 도 18에 도시된 것과 같은 스트림 가이드 정보가 또한 단계(1504)에 대한 입력이다.
스트림 선택 단계(1504)에서, 프로그램 또는 이벤트, 예를 들면, 몇몇 경우들에서 진행하는 실시간 이벤트에 대응하는 하나 이상의 콘텐트 스트림들이 선택된다. 하나 이상의 스트림들의 선택은 사용자의 현재 머리 위치, 스트림 대역폭 또는 스트림 데이터 레이트 요건들과 같은 스트림 정보, 및/또는 최대 지원가능한 데이터 레이트 또는 최대 지원가능한 대역폭에 관한 정보에 기초한다. 뷰잉 방향 또는 스트림 우선 순위 기반에 대한 것일 수 있는 대역폭 및/또는 데이터 레이트 제한들(1503)은 단계(1504)에서 스트림 선택들을 행하는 데 또한 고려 및 사용될 수 있고, 때때로 고려 및 사용된다.
예시적인 스트림 선택 단계(1504)는 단계(1506)를 포함하고, 콘텐트 스트림들은 사용자의 현재 및/또는 과거 머리 위치에 기초하여 우선 순위화된다. 이는 도 16에 도시된 것과 같은 스트림 우선 순위화 서브루틴에 대한 호출을 포함할 수 있다.
동일한 환경 방향에 대응하는 스트림들은 몇몇 실시예들에서 동일한 우선 순위가 할당된다. 따라서, 환경의 동일한 부분 및/또는 뷰잉 방향에 대응하는 콘텐트에 대응하는 다수의 스트림들이 동일한 우선 순위를 할당받을 수 있고, 때때로 그렇게 할당받는다. 스트림들은 동일한 뷰잉 방향에 대응하지만, 몇몇 경우들에서 스트림들은, 모노 이미지 콘텐트 및/또는 낮은 해상도 이미지들을 제공 및/또는 낮은 프레임 (이미지) 레이트를 지원하는 몇몇 경우들에서 높은 프레임 레이트에서 높은 해상도 입체 영항 콘텐트에 낮은 해상도 스트림들을 제공하는 몇몇 스트림들과 상이한 데이터 레이트들을 갖는다. 따라서, 특정한 방향이 높은 우선 순위가 고려되고 높은 우선 순위 방향에 대응하는 콘텐트를 제공하는 모든 스트림들은 동일하지만, 이후 몇몇 실시예들에서 특정 방향에 대응하는 콘텐트를 수신하기 위해 이용 가능한 대역폭의 양에 대해 선택이 행해진다.
콘텐트 스트림 동작의 우선 순위화 후, 동작은 단계(1506)로부터 단계(1508)로 진행한다. 단계(1508)에서, 가장 높은 우선 순위를 갖는 스트림을 위해 사용될 최대 대역폭 및/또는 데이터 레이트가 결정된다. 이러한 결정은 가장 높은 우선 순위 스트림에 대해 할당될 이용 가능한 수신 자원들의 최대, 최소, 또는 일부를 나타낼 수 있는 대역폭 또는 다른 제한들(1503)에 기초하여 수행될 수 있다. 몇몇 실시예들에서, 가장 높은 우선 순위 스트림에 대한 최소 대역폭/데이터 레이트 할당은 50% 이상이지만 다른 할당들이 가능하다.
단계(1510)에서, 하위 우선 순위를 갖는 각각의 스트림에 사용될 최대 대역폭 및/또는 데이터 레이트가 결정된다. 몇몇 실시예들에서, 데이터 레이트 또는 대역폭의 적어도 20%는 2차 또는 하위 우선 순위 스트림들에 대해 사용된다.
상이한 우선 순위들의 스트림들에 대해 사용될 데이터 레이트들이 단계들(1508, 1510)에서 결정되고, 동작은 단계(1512)로 진행하고, 가장 높은 우선 순위 스트림이 가장 높은 우선 순위 스트림에 대한 최대 대역폭 및/또는 데이터 레이트에 기초하여 지원될 수 있는지를 결정하기 위해 검사가 수행된다. 가장 높은 우선 순위에 대응하는 스트림들 중 어느 하나가 지원될 수 있는 경우, 단계(1512)에서 결정은 긍정이 될 것이고, 동작은 단계(1514)로 진행하고, 여기서 가장 높은 우선 순위에 대응하는 가장 높은 품질 스트림이 선택될 것이다. 이는 보통 가장 높은 우선 순위가 할당된 스트림들을 세트로부터 가장 높은 데이터 레이트 스트림을 선택하는 것을 포함한다. 에를 들면, 전방 방향의 스트림들이 가장 높은 우선 순위가 할당되는 경우, 가장 높은 우선 순위 콘텐트 스트림에 대해 이용 가능한 주어진 데이터 레이트가 지원될 수 있는 가장 높은 데이터 레이트 전방 방향 콘텐트 스트림이 선택될 것이다.
동작은 단계(1514)로부터 단계(1516)로 진행한다. 단계(1516)에서, 제 2 가장 높은 우선 순위 스트림이 지원될 수 있는지의 여부에 관한 결정이 수행된다. 이는, 몇몇 실시예들에서, 가장 높은 우선 순위 스트림이 선택된 후 얼마나 많은 대역폭/데이터가 이용 가능한지 및 수신된 제한들에 기초하여 제 2 가장 높은 우선 순위 스트림에 대해 상기 대역폭/데이터 중 얼마나 많은 것이 사용될 수 있는지를 결정하는 것을 포함한다. 제 2 가장 높은 우선 순위 스트림에 대한 제한들이 배치되지 않은 경우, 대역폭/데이터 수신 능력의 전체량이 제 2 가장 높은 우선 순위 스트림에 대해 사용될 수 있다. 단계(1516)에서 제 2 가장 높은 우선 순위 스트림이 지원될 수 있는지가 결정되는 경우, 동작은 단계(1518)로 진행하고, 제 2 가장 높은 우선 순위 스트림이 예를 들면, 제 2 가장 높은 우선 순위가 할당된 하나 이상의 스트림들의 세트로부터 선택된다. 단계(1518)는, 제 2 가장 높은 우선 순위를 갖는 지원될 수 있는 가장 높은 데이터 레이트 스트림을 선택하는 것을 포함할 수 있고, 몇몇 실시예들에서, 그를 포함한다. 예를 들면, 제 2 가장 높은 우선 순위가 환경의 오른쪽 후방 부분에 대응하는 경우, 단계(1518)는 환경의 오른쪽 후방 부분에 대응하는 지원될 수 있는 가장 높은 데이터 레이트 스트림을 선택하는 것을 포함한다.
대부분의 경우들에서, 가장 높은 우선 순위 및 2차 스트림이 지원될 것이지만, 환경의 다른 부분, 예를 들면, 보이지 않는 것에 대응하는 몇몇 콘텐트를 수신하기 위한 2 개의 가장 높은 우선 순위 스트림들의 선택 후 남아있는 충분한 대역폭이 존재할 수 있다. 동작은 단계(1518)로부터 단계(1520)로 진행하거나, 또는 제 2 가장 높은 우선 순위 스트림이 지원될 수 없는 경우, 단계(1516)로부터 단계(1520)로 직접 진행한다.
단계(1520)에서, 예를 들면, 제 1 및/또는 제 2 우선 순위 스트림이 선택된 후 이용 가능한 대역폭/데이터 수신 자원들을 사용하여, 제 3 가장 높은 우선 순위 스트림이 지원될 수 있는지의 여부에 관한 검사가 수행된다. 단계(1520)에서, 제 3 가장 높은 우선 순위 스트림이 지원될 수 있다는 것이 결정되는 경우, 동작은 단계(1522)로 진행하고, 예를 들면, 지원될 수 있는 나머지 대역폭/데이터 레이트를 사용하여, 제 3 가장 높은 우선 순위 스트림이 선택된다. 동작은 단계(1522)로부터 단계(1524)로 진행하거나, 또는 제 3 가장 높은 우선 순위 스트림이 주어진 이용 가능한 대역폭 및/또는 수신된 데이터 및/또는 대역폭 할당 제한들이 지원될 수 없는 경우, 직접 단계(1520)로부터 단계(1524)로 진행한다.
단계(1524)에서, 다른 스트림 선택들 후, 임의의 대역폭, 예를 들면, 추가의 콘텐트를 수신하기 위해 사용될 수 있는 남아있는 데이터를 수신할 능력이 존재하는지를 결정하기 위한 검사가 수행된다. 추가의 대역폭이 남아있는 경우, 동작은 단계(1526)로 진행하고, 하나 이상의 하위 우선 순위 스트림들은 남아있는 이용 가능한 대역폭/데이터 레이트를 사용하기 위해 선택된다. 단계(1526)로부터 동작은 단계(1530)로 진행한다. 동작은 추가의 대역폭이 이용 가능하지 않은 경우, 단계(1524)로부터 리턴 단계(1530)로 진행한다.
리턴 단계(1530)는, 처리가, 예를 들면, 새롭게 선택된 세트의 스트림들이 루틴(1500)에 의해 결정되는 것에 의해, 스트림 선택 서브루틴(1500)이 호출되는 지점으로 리턴하게 한다.
도 16은 일 예시적인 실시예에 따라 스트림 우선 순위화 서브루틴의 단계들을 도시하는 플로차트이다. 도면의 (1600)는 사용될 수 있는, 예를 들면, 여기에 기술된 다른 루틴들 또는 서브루틴들 중 하나 이상으로 불릴 수 있는 일 예시적인 스트림 우선 순위화 루틴을 도시한다. 예를 들면, 도 15의 단계(1506)는 서브루틴(1600)에 대한 호출에 의해 구현될 수 있다. 스트림 우선 순위화 서브루틴(1600)은 루틴이 호출될 때 단계(1602)에서 시작한다. 동작은 시작 단계(1602)로부터 단계(1604)로 진행한다. 단계(1604)에서, 사용자의 현재 시야는 사용자의 검출된 머리 위치에 기초하여 결정된다. 사용자의 시야가 180도보다 적은 것을 고려하면, 현재 시야는 단일 카메라 위치, 예를 들면, 전방을 바라보는 카메라 위치로부터 캡처된 환경의 일 부분에 대응할 수 있다. 그러나, 사용자가 그의 머리를 움직일 때, 예를 들면, 그의 머리를 왼쪽 또는 오른쪽으로 회전하고 및/또는 위 또는 아래를 볼 때, 사용자의 시야는 상이한 카메라 위치들에 위치된 카메라들에 의해 캡처된 환경의 부분들에 대응할 수 있다. 예를 들면, 상이한 카메라들에 의해 캡처되는 이미지들이 만나거나 중첩하는 지점에 대응하는 환경의 일 부분을 보고 있을 때, 사용자의 시야는 두 개의 상이한 스트림들에서 전달될 콘텐트에 대응할 수 있다. 시야의 가장 큰 부분에 대응하는 이미지들을 제공하는 스트림은 보통 몇몇 실시예들에서 가장 높은 우선 순위가 주어질 것이다.
단계(1604)에서 결정된 사용자의 시야에 의해, 동작이 단계(1605)로 진행하고, 콘텐트를 전달하는 스트림들, 예를 들면, 사용자의 현재 시야에 대응하는 왼쪽 및 오른쪽 눈 이미지들을 포함하는 모노 이미지들 또는 입체 영상 이미지 쌍들이 식별된다. 동작은 이후 단계(1606)로 진행하고, 부분 또는 부분들, 예를 들면, 장면 영역의 이미지 부분들의 크기는 식별된 스트림들로부터 이용 가능한 사용자의 현재 시야에 대응한다. 따라서, 단계(1606)의 종료시, 어느 스트림들이 현재 시야 및 부분들의 상대적인 크기에 대응하는 이미지 콘텐트를 제공하는지에 대한 정보가 이용 가능하고 등급 매김, 예를 들면, 스트림들을 우선 순위화하기 위해 사용될 수 있다.
동작은 단계들(1606)로부터 단계(1608)로 진행한다. 단계(1608)에서, 우선 순위들이 사용자의 현재 시야에 대응하는 이미지 콘텐트를 제공하는 하나 이상의 스트림들에 할당된다. 우선 순위화, 예를 들면, 등급 매김은 스트림이 제공하는 사용자의 시야의 부분 또는 부분들의 크기에 기초한다. 예를 들면, 사용자의 시야 중 80%에 대응하는 이미지 콘텐트를 제공하는 스트림은 사용자의 시야 중 15%에 대응하는 이미지 콘텐트를 제공하는 스트림보다 상위에 순위 매김될 것이고, 나머지 5%, 예를 들면, 상부 또는 하부를 제공하는 스트림은 시야 중 80% 부분에 대응하는 이미지(들)를 제공하는 스트림에 할당된 가장 높은 우선 순위보다 낮은 제 3 우선 순위를 할당받을 것이다.
단계(1608)는 단계(1610) 및/또는 단계(1612)를 포함할 수 있고, 몇몇 실시예들에서 그를 포함한다. 단계(1610)에서, 가장 높은 우선 순위는 시야의 가장 큰 부분을 제공하는 스트림에 할당된다. 단계(1610)는 시야 중 가장 큰 부분을 제공하는 스트림을 1차 스트림으로서 지정하는 단계를 포함할 수 있다. 단계(1612)는 가장 높은 우선 순위 스트림에 의해 제공된 부분 외부에 있는 시야에 대한 부분들을 제공하는 스트림들에 대해 다음의 가장 높은 우선 순위 또는 우선 순위들을 할당하는 단계를 포함한다. 이러한 스트림들은 그들이 더 낮은 우선 순위들을 할당받는 더 작은 부분들을 제공할 수 있는 스트림들에 의해 현재 시야에 제공할 수 있는 부분의 크기에 기초하여 단계(1612)에서 우선 순위화된다.
예를 들면, 상이한 데이터 레이트들을 갖는 다수의 스트림들이 시야에 대해 동일한 부분을 제공할 수 있다는 것을 가정하면, 비록 잠재적으로 상이한 해상도들 또는 프레임 레이트들에서, 다수의 스트림들이 동일한 우선 순위가 할당될 수 있고, 예를 들면, 전방 뷰에 대응하는 스트림들이 동일한 우선 순위를 할당받을 수 있고, 왼쪽 후방 뷰를 제공하는 스트림들이, 예를 들면, 전방 스트림들에 할당된 상이한 우선 순위인, 동일한 우선 순위가 할당될 수 있고, 오른쪽 후방 뷰를 제공하는 스트림들이, 예를 들면, 전방 또는 왼쪽 후방 뷰 스트림들에 할당되는 것과 상이한 우선 순위인, 동일한 우선 순위를 제공받을 수 있다.
따라서, 단계(1608)에서, 시야에 대해 제공하는 스트림들은 순위 매김, 즉, 우선 순위화될 것이다. 우선 순위화는 순위 매김된 리스트에서 스트림들을 리스팅하는 것에 의해 표현될 수 있고, 1차 스트림(들)은 가장 높은 우선 순위를 할당받고 다른 스트림들은 하위 우선 순위를 할당받는다.
모든 스트림들이 시야에 대응할 수 있는 것은 아니다. 예를 들면, 상부 또는 두 개의 장면 부분은 시야 밖에 있을 수 있고 따라서, 이러한 뷰들을 제공하는 스트림들은 단계(1608)에서 우선 순위화되지 않았을 수 있다. 동작은 단계(1608)로부터 단계(1614)로 진행한다. 단계(1614)에서, 우선 순위화될 임의의 나머지 스트림들이 존재하는지의 여부에 관한 결정이 행해진다. 예를 들면, 그들 모두가 사용자의 현재 시야에 대응하기 때문에, 우선 순위화될 나머지 스트림들이 존재하지 않는 경우, 동작은 리턴 단계(1630)로 진행한다. 그러나, 단계(1614)에서, 하나 이상의 스트림들이 우선 순위화되기 위해 남아있다고 결정되는 경우, 동작은 단계(1616)로 진행한다.
단계(1616)에서, 우선 순위들은 콘텐트를 전달하는 하나 이상의 추가의 스트림들, 예를 들면, 현재 시야 밖의 스트림들에 할당된다. 단계(161)에서 수행된 우선 순위화는, 몇몇 실시예들에서, 현재 시야에서 보이는 콘텐트에 대해 우선 순위화되는 스트림에 의해 제공된 콘텐트의 근접성에 기초하고 및/또는 사용자의 현재 또는 과거 머리 회전의 방향에 기초한다. 예를 들면, 스트림이 현재 시야에 바로 인접한 환경의 일 부분에 대응하는 이미지 콘텐트를 제공하는 경우, 몇몇 실시예들에서 이는 사용자의 현재 시야로부터 멀리 떨어진 이미지 부분에 대응하는 콘텐트를 제공하는 스트림보다 높은 우선 순위가 할당될 것이다. 유사하게, 사용자의 머리 회전의 방향의 이미지 콘텐트를 제공하는 스트림은 머리 회전 방향의 콘텐트가 머리 회전의 검출된 방향으로부터 떨어진 반대 방향의 콘텐트보다 사용자의 시야로 빠르게 들어올 더 많은 가능성이 있다는 가정하에서 사용자의 검출된 머리 회전으로부터 떨어진 회전의 방향의 콘텐트보다 더 높은 우선 순위가 주어질 수 있다.
적어도 하나의 실시예에서, 단계(1616)는 단계(1618)를 포함하고, 머리 위치의 변경이 머리 회전, 예를 들면 머리를 위 또는 아래의 기울임에 대한 반대로서 왼쪽 또는 오른쪽 회전을 나타내는지를 결정하기 위한 검사가 수행된다. 머리 위치가 단계(1618)에서 검출되지 않는 경우, 동작은 단계(1620)로 진행하고 스트림들은 몇몇 실시예들에서 사용자의 현재 시야에 관하여 그들이 제공하는 이미지 데이터의 부분에 기초하여 우선 순위화된다. 상부 및/또는 하부 부분들을 제공하는 스트림들은 왼쪽 또는 오른쪽 후방 부분들뿐만 아니라 상부 및 하부 부분들이 시야 밖에 있을 때 왼쪽 또는 오른쪽 후방 부분들을 제공하는 스트림들보다 낮은 우선 순위가 디폴트로 할당될 수 있다. 동작은 단계(1620)로부터 리턴 단계(1630)로 진행한다.
단계(1618)에서 사용자 머리 회전이 검출된다고 가정되는 경우, 동작은 단계(1622)로 진행한다. 단계(1622)에서, 예를 들면, 사용자의 머리가 왼쪽으로 돌아가는지 또는 오른쪽으로 돌아가는지, 머리 회전의 방향이 결정된다. 이는, 사용자의 뷰로 들어올 환경의 다음 부분이 그로부터 멀어지기보다는 머리 회전의 방향에 있을 더 많은 가능성이 종종 있기 때문에, 머리 회전의 방향이 고려되게 한다.
동작은 단계(1622)로부터 단계(1624)로 진행하고, 우선 순위들은 하나 이상의 콘텐트 스트림들, 예를 들면, 머리 회전의 방향에 기초하여 시야 밖의 스트림들에 할당된다. 적어도 일 실시예에서, 단계(1624)는 단계(1626)를 포함하고, 다음으로 가장 낮은 사용되지 않은 우선 순위는 머리 회전의 방향의 환경의 일 부분에 대응하는 콘텐트를 제공하는 스트림에 할당된다. 예를 들면, 환경의 전방 부분을 바라보는 사용자가 그의 머리를 오른쪽으로 돌리는 경우, 시야 밖의 오른쪽 후방 콘텐트를 제공하는 스트림은 시야 밖에 또한 존재하는 왼쪽 후방 콘텐트를 제공하는 스트림보다 높은 우선 순위가 할당될 것이다. 동작은 단계(1624)로부터 단계(1628)로 진행하고, 미리 우선 순위화되지 않은 나머지 스트림들은 우선 순위들이 이미 할당된 스트림들보다 낮은 중요도를 나타내는 하위 우선 순위들을 할당받는다.
동작은 단계(1628)로부터 단계(1630)로 진행한다. 리턴 단계(1630)에 도달될 때까지, 콘텐트 스트림들이 우선 순위에 따라 우선순위화, 예를 들면, 순위 매김 또는 순서화될 것이다.
도 17은 일 예시적인 실시예에 따라 렌더링 서브루틴의 단계들(1700)을 도시하는 플로차트이다.
렌더링 서브루틴(1700)은 이미지 렌더링이 요구될 때 하나 이상의 루틴들에 의해 호출될 수 있다. 입체 영상 콘텐트의 경우에, 개별적인 이미지는 사용자의 왼쪽 및 오른쪽 눈들의 각각에 대해 렌더링된다. 모노 콘텐트의 경우에, 단일 이미지는 사용자의 왼쪽 및 오른쪽 눈들의 각각에 대해 렌더링 및 사용된다. 렌더링은 종종 하나 또는 다수의 스트림들로부터 이미지 콘텐트의 조합을 종종 포함한다. 따라서, 환경의 몇몇 부분들은 모노 콘텐트로서 제공될 수 있지만, 다른 부분들은 입체 영상 콘텐트로서 제공될 수 있고, 이 경우에, 상이한 왼쪽 및 오른쪽 눈 이미지들은 콘텐트의 일부는 입체이고, 다른 콘텐트는 모노이지만, 환경의 적어도 일 부분이 입체 영상 콘텐트로서 나타내질 때 왼쪽 및 오른쪽 눈 이미지들의 각각에 대해 생성되는 단일 이미지가 렌더링될 수 있다.
렌더링 루틴(1700)은 시작 단계(1702)에서 시작하고 렌더링 단계(1706)로 진행한다. 렌더링 단계(1706)에 대한 입력은 환경 맵(1411), 하나 이상의 뷰에 대응하는 디코딩된 이미지 콘텐트(1703), 및 환경 맵(1411)에 의해 규정된 표면 상에 하나 이상의 디코딩된 이미지들 또는 이미지 부분들을 맵핑하기 위해 사용된 하나 이상의 UV 맵들(1704)을 포함한다. 상기에 논의된 바와 같이, 환경 맵(1411)은, 더 복잡한 기하학이 제공되지 않는 경우에, 구의 표면 내로 맵핑되는 이미지들을 갖는 구를 디폴트로 할 수 있다.
몇몇 실시예들에서, 렌더링 단계(1706)는 사용자의 현재 시야 및 사용자의 현재 시야에 대응하는 적어도 하나의 이미지를 생성하기 위해 적어도 하나의 UV 맵뿐만 아니라 환경 맵에 대응하는 하나 이상의 콘텐트 스트림들에 포함된 이미지들을 디코딩함으로써 생성된 콘텐트를 사용하는 것을 포함하는 단계(1708)를 포함한다. 입체 영상, 예를 들면, 3D 이미지 콘텐트의 경우, 렌더링은 디스플레이에 적합한 포맷으로 생성되는 왼쪽 및 오른쪽 눈 이미지들을 야기할 것이다. 렌더링된 왼쪽 및 오른쪽 눈 이미지들에서 차이들은, 몇몇 실시예들에서, 사용자가 이미지들을 3D로 인식하게 한다.
동작은 단계(1706)로부터 저장 및/또는 출력된 렌더링된 이미지들이 디스플레이 디바이스에 공급될 프로그램 또는 루틴에 리턴되게 하는 리턴 단계인 단계(1710)로 진행한다.
렌더링 서브루틴(1700)은 시야의 갱신된 버전 또는 프레임이 디스플레이될 때마다 호출될 수 있다. 따라서, 렌더링은 보통 이미지와 일치하는 레이트, 예를 들면, 프레임, 디스플레이 레이트에서 발생한다.
도 18은 복수의 콘텐트 스트림들에 대응하는 스트림 정보를 포함하는 일 예시적인 표(1800)를 도시한다. 몇몇 실시예들에서 예시적인 표(1800)에 포함된 스트림 정보는 가이드 정보의 일부, 예를 들면, 재생 시스템이 수신하도록 선택할 수 있는 콘텐트 스트림들에 대한 정보를 제공하는 프로그램 가이드로서 수신된다. 범례(1840)는 표(1800)에 포함된 정보에서 약어들로서 사용된 다양한 글자들의 의미를 나타내는 정보를 포함한다.
표(1800)에 포함된 정보는 정보가 대응하는 콘텐트 스트림들에 액세스하기 위해 사용될 수 있다. 몇몇 실시예들에서 논의되는 바와 같이, 스트림 정보는, 복수의 이용 가능한 콘텐트 스트림들에 대해, 제공된 대응하는 콘텐트 스트림을 수신하기 위해 연결될 수 있는 멀티캐스트 그룹의 멀티캐스트 어드레스, 제공된 콘텐트 스트림을 제공하기 위해 사용된 스위칭된 디지털 비디오 채널에 대한 액세스를 요구하기 위해 사용될 수 있는 정보, 또는 제공된 콘텐트 스트림이 방송되는 방송 채널에 대해 동조하도록 재생 시스템의 동조기를 제어하기 위해 사용될 수 있는 채널 동조 정보 중 하나를 포함한다.
표(1800)에서, 각각의 행은 콘텐트를 전달하는 개별적인 콘텐트 스트림에 대응하고, 행이 대응하는 콘텐트 스트림은 열(1812)의 대응하는 입력에 보여진 스트림 식별자에 의해 식별된다. 열(1804)의 각각의 입력은 행이 대응하는 개별적인 콘텐트 스트림에 의해 전달된 프로그램 콘텐트를 식별한다. 표(1800)로부터 인식될 수 있는 바와 같이, 행들의 제 1 그룹(1820)은 열(1804)의 대응하는 입력들에 보여지는 프로그램/이벤트 타이틀을 나타낼 수 있는 프로그램 콘텐트 "축구"에 대응한다. 다양한 상이한 프로그램들/이벤트들에 대응하는 복수의 이러한 그룹들이 존재한다. 각각의 그룹은 각각이 뷰잉 방향에 대응하는 콘텐트 스트림들을 포함하고 논의되는 제공된 데이터 레이트를 지원한다. 간략함을 위해, 단지 두 개의 그룹들이 도면에 도시되고, 제 2 그룹(1822)에 대응하는 행들은 개념을 예시하기 위해서만 단지 부분적으로 도시된다. 행들의 제 2 그룹(1822)은 열(1804)에서 대응하는 입력들에 의해 나타내는 프로그램 콘텐트 "HI"에 대응한다.
열(1806)에서 각각의 입력은 장면 영역의 일 부분, 예를 들면, 대응하는 콘텐트 스트림에 의해 전달된 360도 장면 영역(1200)의 구역을 나타낸다. 따라서, 그룹(1820)의 제 1 세 개의 행들이면서, 상이한 콘텐트 스트림에 대응하는 각각이 정면 장면 부분(예를 들면, 270° 내지 90° 뷰잉 영역을 포함하는 도 12에 도시된 구역(1)으로 맵핑되는)을 전달한다. 그룹(1820)의 다음의 세 개의 행들이면서, 상이한 콘텐트 스트림에 대응하는 각각은 후방 오른쪽 장면 부분예를 들면, 30° 내지 210° 뷰잉 영역을 포함하는 도 12에 도시된 구역(1)으로 맵핑되는)을 전달한다. 그룹(1820)의 마지막 세 개의 행들이면서, 상이한 콘텐트 스트림에 대응하는 각각은 후방 왼쪽 장면 부분(예를 들면, 150° 내지 330° 뷰잉 영역을 포함하는 도 12에 도시된 구역(3)으로 맵핑되는)을 전달한다.
열(1808)의 각각의 입력은 대응하는 콘텐트 스트림이 지원하는 데이터 레이트를 나타낸다. 열(1810)의 각각의 입력은 열의(1812)의 대응하는 입력에 보여진 스트림 식별자에 의해 식별된 대응하는 콘텐트 스트림을 수신하기 위해 연결될 수 있는 멀티캐스트 그룹의 멀티캐스트 그룹 식별자/어드레스를 나타낸다. 열(1814)의 각각의 입력은 열(1812)의 대응하는 입력에 보여진 스트림 식별자에 의해 식별된 대응하는 콘텐트 스트림에 대한 스트림 기술자를 포함한다. 열(1816)의 각각의 입력은 액세스 정보, 예를 들면, 대응하는 콘텐트 스트림에 액세스 또는 그를 요청하기 위해 사용될 수 있는 동조 파라미터들 및/또는 다른 액세스 파라미터들을 포함한다.
예시적인 표(1800)로부터 이해될 수 있는 바와 같이, 도시된 예에서, 재생시에 사용을 위해 이용 가능한 제공된 뷰잉 방향에 대응하는 각각의 콘텐트 스트림의 다수의, 예를 들면, 세 개의, 상이한 버전들이 존재하고, 콘텐트 스트림의 각각의 버전은 상이한 데이터 레이트를 지원한다. 따라서, 재생 시스템은, 도 14 내지 도 17에 관하여 상세히 논의되는 본 발명의 특징들에 따라, 예를 들면, 지원된 대역폭, 데이터 레이트, 사용자 머리 위치, 등과 같은 하나 이상의 팩터들에 기초하여 재생시 사용하기 위한 하나 이상의 스트림들을 선택할 수 있다.
표(1800)의 정보가 하나 이상의 콘텐트 스트림들을 선택 및/또는 액세스하기 위해 재생 시스템에 의해 이용될 수 있는 방식을 더 명백히 이해하기 위해, 그룹(1820)의 제 1 행 및 열들(1804, 1806, 1808, 1810, 1812, 1814, 1816)의 각각의 제 1 입력을 고려하자. 열(1804)의 제 1 입력은 스트림 식별자(S1D1)에 의해 식별되는 제 1 콘텐트 스트림에 의해 전달되는 이벤트/프로그램 "축구"가 열(1812)에 포함된다는 것을 나타낸다. 열(1806)의 대응하는 입력은 제 1 스트림이 전방 장면 부분(예를 들면, 270° 내지 90° 뷰잉 영역)에 대응하는 콘텐트를 전달한다는 것을 나타낸다. 이러한 뷰잉 영역 정보는 현재 시야에 대응하는 사용자/뷰어의 현재 머리 위치에 대응하는 콘텐트를 전달하는 하나 이상의 스트림들을 식별하기 위해 재생 시스템에 의해 사용된다. 상기 예에 계속하여, 열(1808)의 대응하는 제 1 입력은 제 1 콘텐트 스트림이 데이터 레이트(D1)를 지원 및/또는 요구한다는 것을 나타낸다. 열(1810)의 대응하는 입력은 제 1 콘텐트 스트림이 멀티캐스트 그룹(M1)을 연결함으로써 액세스될 수 있다는 것을 나타내고, M1은 어드레스로 맵핑하는 멀티캐스트 그룹 어드레스 및/또는 식별자를 나타낸다. 열(1814)의 대응하는 입력은 제 1 스트림이 대응하는 카메라 뷰잉각(V1), 코덱 형태(C1), 지원된 데이터 레이트(D1), 및 제 1 스트림에 대응하는 프레임 레이트(F1)를 나타내는 제 1 콘텐트 스트림에 대응하는 스트림 기술자 "V1C1D1F1"를 포함한다. 마지막 열(1816)의 대응하는 입력은 제 1 콘텐트 스트림에 액세스하거나 그를 요청하기 위해 사용될 수 있는 액세스 동조 파라미터들 및/또는 다른 액세스 파라미터들(A123으로 도시됨)을 나타낸다.
사용될 수 있는 이용 가능한 콘텐트 스트림들에 관해 상기에 논의된 이러한 정보에 의해, 재생 시스템(1900)과 같은 재생 시스템은 본 발명의 특징들에 따라 재생시 사용을 위해 하나 이상의 콘텐트 스트림들을 선택 및 액세스할 수 있다. 더 양호한 이해를 위해, 재생 시스템이 사용자 머리 위치가 사용자가 360도 장면 중 정면 부분을 바라보고 있다는 것을 나타낸다는 것을 결정하는 하나의 단순한 예를 고려하자. 이러한 경우, 일 실시예에서 재생 시스템은 정면 장면 부분을 전달하는 적어도 하나의 콘텐트 스트림을 선택한다. 이용 가능한 대역폭, 지원 가능한 데이터 레이트, 스트림 대역폭 및/또는 데이터 레이트 제한들과 같은 도 14 내지 도 17에 관해 논의되는 다양한 다른 팩터들에 의존하여, 재생 시스템은 정면 장면 부분을 전달하는 세 개의 상이한 이용 가능한 스트림들(S1D1, S1D2, S1D3) 중에 하나의 스트림을 선택할 수 있다. 제한들이 허용하는 경우, 재생 시스템은 정면 장면 부분에 대응하는 복수의 콘텐트 스트림들로부터 대응하는 세 개 중에 가장 높은 품질 스트림, 예를 들면, 스트림(S1D1)을 선택할 것이다. 표(1800)에서 제공된 정보는, 선택하기 위해 사용될 수 있는 정보 중 적어도 일부가 스트림 정보(1800)에 의해 제공되기 때문에, 재생시 사용을 위해 적절한 스트림의 선택을 용이하게 한다. 스트림 선택 후, 재생 시스템은, 선택된 스트림에 대응하는 멀티캐스트 그룹, 예를 들면, M1을 연결함으로써 또는 콘텐트 스트림을 획득하기 위해 액세스 정보를 사용함으로써, 콘텐트 전달, 예를 들면, 콘텐트 수신을 개시하기 위해 스트림 정보(1800)를 다시 사용할 수 있다.
도 19는 콘텐트 전달 시스템으로부터 수신된 이미징 콘텐트를 수신, 디코딩, 저장 및 디스플레이하기 위해 사용될 수 있는 본 발명에 따라 구현된 재생 시스템(1900)을 도시한다. 시스템(1900)은 디스플레이(1902)를 포함하는 단일 재생 디바이스(1900')로서 또는 외부 디스플레이, 예를 들면, 컴퓨터 시스템(1900')에 결합된 헤드 마운트 디스플레이(1905)와 같은 요소들의 조합으로서 구현될 수 있다.
재생 시스템(1900)은, 적어도 몇몇 실시예들에서, 3D 헤드 마운트 디스플레이를 포함한다. 헤드 마운트 디스플레이는 헤드 마운트 디스플레이(1905)를 포함할 수 있는 OCULUS RIFTTM VR(가상 현실) 헤드셋을 사용하여 구현될 수 있다. 다른 헤드 마운트 디스플레이들이 또한 사용될 수 있다. 몇몇 실시예들에서, 하나 이상의 디스플레이 스크린들이 사용자의 왼쪽 및 오른쪽 눈들에 콘텐트를 디스플레이하기 위해 사용되는 헤드 마운트 헬멧 또는 다른 헤드 마운팅 디바이스가 디바이스(1905)로서 사용된다. 단일 스크린의 상이한 부분들을 상이한 눈들에 노출하도록 구성된 헤드 마운트를 갖는 단일 스크린상에 상이한 이미지들을 왼쪽 및 오른쪽 눈들에 디스플레이함으로써, 단일 디스플레이는 뷰어의 왼쪽 및 오른쪽 눈들에 개별적으로 인식될 왼쪽 및 오른쪽 눈 이미지들을 디스플레이하기 위해 사용될 수 있다. 몇몇 실시예들에서, 휴대 전화 스크린은 헤드 마운트 디스플레이 디바이스의 디스플레이로서 사용된다. 적어도 몇몇 이러한 실시예들에서, 휴대 전화는 헤드 마운팅 디바이스로 삽입되고 휴대 전화는 이미지들을 디스플레이하기 위해 사용된다. 몇몇 실시예들에서, 디스플레이 디바이스(1905)는 Oculus Rift와 같은 3D 디스플레이 장치의 일부일 수 있다.
재생 시스템(1900)은 수신된 인코딩된 이미지 데이터, 예를 들면, 환경 또는 장면의 상이한 부분들에 대응하는 왼쪽 및 오른쪽 눈 이미지들 및/또는 모노(단일 이미지들)을 디코딩하고, 예를 들면, 사용자에 의해 3D 이미지로서 인식되는 상이한 왼쪽 및 오른쪽 눈 뷰들을 렌더링 및 디스플레이함으로써, 고객에게 디스플레이를 위한 3D 이미지 콘텐트를 생성하기 위한 능력을 갖는다. 재생 시스템(1900)은 몇몇 실시예들에서, 가정 또는 사무실과 같은 고객 구내 위치에 위치되지만, 이미지 캡처 사이트에 또한 위치될 수 있다. 시스템(1900)은 본 발명에 따라 신호 수신, 디코딩, 디스플레이, 및/또는 다른 동작들을 수행할 수 있다.
시스템(1900)은 디스플레이(1902), 디스플레이 디바이스 인터페이스(1903), 입력 디바이스(1904), 입력/출력(I/O) 인터페이스(1906), 프로세서(1908), 네트워크 인터페이스(1910) 및 메모리(1912)를 포함한다. 시스템(1900)의 다양한 구성 요소들은 데이터가 시스템(1900)의 구성 요소들 사이에 전달되게 하는 버스(1909)를 통해 및/또는 다른 접속들에 의해 또는 무선 인터페이스를 통해 함께 결합된다. 몇몇 실시예들에서, 디스플레이(1902)가 대시 박스를 사용하여 도시되는 선택적인 요소로서 포함되지만, 몇몇 실시예들에서, 외부 디스플레이 디바이스(1905), 예를 들면, 헤드 마운트 입체 영상 디스플레이 디바이스는 디스플레이 디바이스 인터페이스(1903)를 통해 재생 디바이스에 결합될 수 있다.
예를 들면, 휴대 전화 프로세서가 프로세서로서 이용되고 휴대 전화가 헤드 마운트에 이미지들을 생성 및 디스플레이하는 경우, 시스템은 헤드 마운트 디바이스의 일부로서 프로세서(1908), 디스플레이(1906) 및 메모리(1912)를 포함할 수 있다. 프로세서(1908), 디스플레이(1902) 및 메모리(1912) 모두는 휴대 전화의 일부일 수 있다. 시스템(1900)의 다른 실시예들에서, 프로세서(1908)는 XBOX 또는 PS4와 같은 게이밍 시스템의 일부일 수 있고, 디스플레이(1905)는 헤드 마운팅 디바이스에 장착되고 게이밍 시스템에 결합된다. 프로세서(1908) 또는 메모리(1912)는 머리에 씌워지는지 또는 그렇지 않은지는 중요하지 않은 디바이스에 위치되고, 인식될 수 있는 바와 같이, 몇몇 경우들에서, 전력, 열, 및 중량 관점으로부터 헤드기어내 프로세서가 공통 위치하는 것이 편리할 수 있지만, 적어도 몇몇 경우들에서 디스플레이를 포함하는 헤드 기어에 결합된 메모리 및 프로세서(1908)를 갖는 것이 바람직할 수 있다.
다양한 실시예들이 헤드 마운트 디스플레이(1905 또는 1902)를 고려하지만, 방법들 및 장치는 또한 3D 이미지를 지원할 수 있는 비-헤드 마운트 디스플레이들과 함께 사용될 수 있다. 따라서, 많은 실시예들에서, 시스템(1900)은 헤드 마운트 디스플레이를 포함하지만, 이는 또한 비-헤드 마운트 디스플레이와 함께 구현될 수 있다.
재생 시스템(1900)의 운영자는 입력 디바이스(1904)를 통해 하나 이상의 파라미터들을 제어할 수 있고 및/또는 수행될 동작들을 선택, 예를 들면, 3D 장면을 디스플레이할 것을 선택할 수 있다. I/O 인터페이스(1906)를 통해, 시스템(1900)은 외부 디바이스들에 결합될 수 있거나 및/또는 신호 및/또는 정보를 다른 디바이스들과 교환할 수 있다. 몇몇 실시예들에서, I/O 인터페이스(1906)를 통해, 시스템(1900)은 카메라 리그(900)와 같은 카메라 리그의 부분일 수 있는 다양한 카메라들에 의해 캡처된 이미지들을 수신할 수 있다.
프로세서(1908), 예를 들면, CPU는 루틴들(1914)을 실행하고 본 발명에 따라 동작하도록 재생 시스템(1900)을 제어하기 위해 다양한 모듈들을 사용한다. 프로세서(1908)는 재생 시스템(1900)의 전체 일반적인 동작을 제어하는 것을 담당한다. 다양한 몇몇 실시예들에서, 프로세서(1908)는 재생 디바이스에 의해 수행되는 것으로 논의된 기능들을 수행하도록 구성된다.
네트워크 인터페이스(1610)를 통해 시스템(1900)은 신호들 및/또는 정보(예를 들면, 이미지들 및/또는 비디오 콘텐트를 포함하는)를 다양한 외부 디바이스들로 예를 들면, 통신 네트워크(105)와 같은 통신 네트워크를 거쳐 전달 및/또는 수신한다. 네트워크 인터페이스(1910)는 수신 및/또는 송신 동작들이 수행되는 수신기(1911) 및 송신기(1913)를 포함한다. 몇몇 실시예들에서, 시스템은 콘텐트 제공자로부터 네트워크 인터페이스(1910)를 통해 하나 이상의 선택된 콘텐트 스트림들을 수신한다. 몇몇 실시예들에서, 시스템(1900)은 인터페이스(1910)의 수신기(1911)를 통해 재생을 위해 사용할 하나 이상의 선택된 콘텐트 스트림들을 수신한다. 수신된 콘텐트 스트림은 인코딩된 데이터, 예를 들면, 인코딩된 장면 부분들(1952)로서 수신될 수 있다. 수신기(1911)는 또한 스트림 정보(1946) 및/또는 초기화 데이터를, 예를 들면, 프로그램 가이드의 일부로서 수신하도록 구성된다. 시스템(1900)은 또한, 예를 들면, 수신기(1911)를 통해, 대역폭 및/또는 상이한 뷰잉 방향들에 대한 대역폭 제한들을 포함하는 데이터 레이트 할당 제어 정보(1952)를 수신하고, 개별적인 대역폭 제한들은 개별적인 대역폭 제한에 대응하는 뷰잉 방향에 대응하는 콘텐트를 제공하는 하나 이상의 콘텐트 스트림들을 수신하기 위해 사용될 최대 대역폭을 지정한다. 몇몇 실시예들에서, 수신기(1911)는 또한 적어도 하나의 환경 맵, 예를 들면, 3D 표면을 규정하는 3D 깊이 맵, 및 예를 들면, 개시 단계 또는 다른 시간 동안 3D 표면의 적어도 일 부분상에 이미지 콘텐트를 맵핑하기 위해 사용될 하나 이상의 UV 맵들을 수신하도록 구성된다. 몇몇 실시예들에서, 수신기(1911)는 장면 환경의 제 1 부분에 대응하는 제 1 UV 맵, 장면 환경의 제 2 부분에 대응하는 제 2 UV 맵, 제 3 부분에 대응하는 제 3 UV 맵, 제 4 부분에 대응하는 제 4 UV, 및 장면 환경의 제 5 부분에 대응하는 제 5 UV 맵을 수신한다. 몇몇 실시예들에서, 초기화 동안, 시스템(1900)은, 예를 들면, 인터페이스(1910)의 수신기를 통해, 콘텐트, 예를 들면, 장면의 제 1, 제 2, 제 3, 제 4, 및 제 5 부분들 중 하나 이상에 대응하는 이미지를 수신한다.
메모리(1912)는 다양한 모듈들, 얘를 들면, 프로세서(1908)에 의해 실행될 때, 본 발명에 따라 디코딩 및 출력 동작들을 수행하도록 재생 시스템(1900)을 제어하는 루틴들을 포함한다. 메모리(1912)는 제어 루틴들(1914), 머리 위치 결정 모듈(1916), 현재 뷰잉 위치 초기화 모듈(1918), 디코더 모듈(1920), 현재 선택된 스트림 초기화 모듈(1922), 콘텐트 전달 개시 모듈(1924), 이미지 버퍼(들)(1926), 이미지 버퍼 갱신 모듈(1928), 이미지 생성 모듈이라고도 불리는 이미지 렌더링 모듈(1930), 이용 가능한 대역폭 및/또는 지원된 데이터 레이트 결정 모듈(1932), 머리 위치 변경 결정 모듈(1934), 이용 가능한 대역폭 및/또는 지원된 데이터 레이트 변경 결정 모듈(1936), 스트림 선택 모듈(1938), 선택된 스트림 세트 변경 결정 모듈(1940), 선택된 스트림 세트 갱신 모듈(1942), 스트림(들) 종료 모듈(1944), 수신된 스트림 정보(1946)를 포함하는 데이터/정보, 수신된 대역폭 및/또는 데이터 레이트 할당 정보(1948), 결정된 현재 최대 이용 가능한 대역폭 및/또는 지원 가능한 데이터 레이트(1950), 수신된 인코딩된 이미지 콘텐트(1952), 수신된 환경 맵(1954), 수신된 UV 맵(들)(1956), 디코딩된 이미지 콘텐트(1958), 및 생성된 3D 콘텐트(1960)를 포함한다.
제어 루틴들(1914)은 시스템(1900)의 동작을 제어하기 위한 디바이스 제어 루틴들 및 통신 루틴들을 포함한다. 머리 위치 결정 모듈(1916)은 사용자의 현재 머리 위치, 예를 들면, 헤드 마운트 디스플레이의 위치를 결정하도록 구성된다. 머리 위치 결정 모듈(1916)은 예를 들면, 헤드 마운트 디스플레이를 포함하는 헤드기어상에 존재할 수 있는 위치 센서가 통합되고 및/또는 그와 협력하여 작동할 수 있다. 현재 뷰잉 위치 초기화 모듈(1918)은 검출된 사용자의 현재 머리 위치가 전방(0도) 뷰잉 위치에 있도록 설정함으로써, 예를 들면, 초기화 단계 동안, 사용자의 현재 뷰잉 위치가 전방(0도) 환경 뷰잉 위치에 있도록 초기화하도록 구성된다.
디코더 모듈(1920)은 디코딩된 이미지 데이터(1958)를 생성하기 위해 콘텐트 전달 시스템(700)으로부터 수신된 인코딩된 이미지 콘텐트(1952)를 디코딩하도록 구성된다. 디코딩된 이미지 데이터(1958)는 디코딩된 입체 영상 장면 및/또는 디코딩된 장면 부분들을 포함할 수 있다. 디코딩된 콘텐트는 몇몇 실시예들에서 하나 이상의 이미지 버퍼(들)(1926)에 저장된다. 현재 선택된 스트림 초기화 모듈(1922)은 수신될 선택된 하나 이상의 콘텐트 스트림들의 현재 세트를 초기화하도록 구성된다. 현재 선택된 스트림 초기화 모듈(1922)은 스트림들의 현재 선택된 세트를 환경/장면의 전방/정면 부분에 대응하는 콘텐트를 전달하는 제 1 스트림이 되게 설정하도록 구성된다.
콘텐트 전달 개시 모듈(1924)은 선택된 콘텐트 스트림(들)의 전달을 개시하도록 구성된다. 몇몇 실시예들에서, 콘텐트 전달 개시 모듈(1924)은 이미 수신되지 않은 선택된 세트에서 콘텐트 스트림들의 전달을 개시한다. 몇몇 실시예들에서, 콘텐트 전달 개시 모듈(1924)은 선택된 콘텐트 스트림에 대응하는 멀티캐스트 그룹, 예를 들면, 스트림들의 현재 선택된 세트에 대응하는 콘텐트를 전달하는 콘텐트 스트림들에 대응하는 멀티캐스트 그룹(들)을 연결하기 위해 요청 신호를 전송하도록 구성된다. 몇몇 다른 실시예들에서, 콘텐트 전달 개시 모듈(1924)은 선택된 콘텐트 스트림이 전달되는 스위칭된 디지털 채널의 전달을 요청하는 요청을 생성하고 네트워크의 디바이스로 전송하도록 구성된다.
이미지 버퍼 갱신 모듈(1928)은, 예를 들면, 콘텐트 스트림들의 선택된 세트에 의해 전달된 갱신된 콘텐트가 수신 및 디코딩될 때, 이미지 버퍼(들)(1926)를 갱신된 콘텐트로 갱신하도록 구성된다.
이미지 렌더링 모듈(1930)은 3D 이미지, 예를 들면, 디스플레이(1902) 및/또는 디스플레이 디바이스(1905)상에 사용자에게 디스플레이하기 위해, 디코딩된 이미지 콘텐트(1958)를 사용하여, 본 발명의 특징들에 따라 3D 이미지로서 인식되는 방식으로 디스플레이되는, 예를 들면, 왼쪽 및 오른쪽 눈 이미지들을 생성한다. 몇몇 실시예들에서, 이미지 렌더링 모듈(1930)은 사용자의 현재 뷰잉 영역에 대응하는 디코딩된 이미지 콘텐트(1958), 환경 맵(1954), 및 UV 맵을 사용하여 디스플레이를 위한 콘텐트를 렌더링하도록 구성된다. 따라서, 몇몇 실시예들에서, 이미지 렌더링 모듈(1930)은 도 17에 도시된 단계들에 관하여 논의된 기능들을 수행하도록 구성된다. 생성된 이미지 콘텐트(1960)는 3D 이미지 생성 모듈(1930)의 출력이다. 따라서, 렌더링 모듈(1930)은 3D 이미지 콘텐트(1960)를 디스플레이에 렌더링한다. 몇몇 실시예들에서, 이미지 렌더링 모듈(1930)은 하나 이상의 생성된 이미지들을, 예를 들면, 디스플레이 디바이스로 또는 다른 디바이스로 출력하도록 구성된다. 생성된 이미지들은 네트워크 인터페이스(1910) 및/또는 디스플레이 디바이스 인터페이스(1903)를 통해 출력될 수 있다.
이용 가능한 대역폭 및/또는 지원된 데이터 레이트 결정 모듈(1932)은, 예를 들면, 콘텐트 스트림들을 수신하기 위해 주어진 시간에 이용 가능할 수 있는 현재 최대 이용 가능한 대역폭 및/또는 현재 최대 지원 가능한 데이터 레이트를 결정하도록 구성된다. 이용 가능한 대역폭 및/또는 지원 가능한 데이터 레이트가 통신 채널 상태들의 변경들 또는 네트워크 문제들 때문에 시간에 걸쳐 변할 수 있기 때문에, 몇몇 실시예들에서, 결정 모듈(1932)은 이용 가능한 대역폭 및/또는 지원된 데이터 레이트의 변경들을 검출하기 위해 지속적으로 모니터링 및/또는 결정을 수행한다. 결정된 현재 최대 지원 가능한 데이터 레이트 및/또는 대역폭(1950)은 결정 모듈(1932)의 출력이고, 필요할 때 갱신될 수 있다.
머리 위치 변경 결정 모듈(1934)은, 예를 들면, 머리 위치 결정 모듈(1916)의 출력에서 변화들을 검사 및 비교함으로써, 사용자의 머리 위치에서 변화가 존재했는지를 결정하도록 구성된다. 이용 가능한 대역폭 및/또는 지원된 데이터 레이트 변경 결정 모듈(1936)은 결정 모듈(1932)에 의해 결정된 현재 최대 이용 가능한 대역폭 및/또는 현재 최대 지원 가능한 데이터 레이트에 비교되어 이용 가능한 대역폭 및/또는 지원된 데이터 레이트에서 임의의 변경이 존재하는지를 검출하도록 구성된다.
스트림 선택 모듈(1938)은 사용자의 현재 머리 위치에 기초하여 주어진 시간에서 재생시 사용을 위해 수신할 스트림을 복수의 콘텐트 스트림들 중에서 선택하도록 구성된다. 사용자의 현재 머리 위치 및/또는 다른 팩터들에서 변경들에 기초하여, 스트림 선택 모듈(1938)은 상이한 시간들에서 상이한 스트림(들)을 선택할 수 있다. 스트림들 중 현재 선택된 세트(1961)는 스트림 선택 모듈(1938)의 출력이고, 수신을 위해 현재 선택된 콘텐트 스트림들의 세트를 나타낸다. 몇몇 실시예들에서, 스트림 선택 모듈(1938)은 스트림 선택 동작의 일부로서 다양한 기능들을 수행하도록 구성되는 복수의 서브-모듈들을 포함한다. 도 23은 스트림 선택 모듈(1938) 및 그에 포함된 다양한 모듈들을 더 상세하게 도시하고, 나중에 논의될 것이다.
선택된 스트림 세트 변경 결정 모듈(1940)은, 예를 들면, 하나 이상의 추가 콘텐트 스트림을 선택하는 선택 모듈에 의해 및/또는 종료/정지된 수신된 하나 이상의 스트림들에 의해, 스트림들(1961)의 현재 선택된 세트에서 변경이 존재했는지를 결정하도록 구성된다. 선택된 스트림 세트 갱신 모듈(1942)은, 예를 들면, 스트림들(1961)의 선택된 세트에 대한 콘텐트 스트림들의 추가 또는 종료에 의해, 스트림들의 선택된 세트에 대한 변경들이 존재할 때 스트림들의 선택된 세트에 임의의 변경들을 반영하기 위해 현재 선택된 스트림 세트(1961)를 갱신하도록 구성된다. 스트림(들) 종료 모듈(1944)은, 예를 들면, 스트림들의 선택에서 변경들 때문에 갱신되는 스트림들의 현재 선택된 세트(1961)에 의해, 이전에 수신되었을 수 있지만 스트림들의 현재 선택된 세트(1961)에 더 이상 존재하지 않는 하나 이상의 콘텐트 스트림들을 수신하는 것을 종료/정지하도록 구성된다.
스트림 정보(1946)는 재생시 수신 및 사용에 이용 가능할 수 있는 복수의 콘텐트 스트림들에 관한 정보를 포함한다. 스트림 정보(1946)에 포함된 정보는 도 18에 도시되고 이전에 논의된 것과 동일하거나 유사하다. 수신된 대역폭 및/또는 데이터 레이트 할당 제어 정보(1948)는 상이한 뷰잉 방향들에 대한 대역폭 제한들 및/또는 다양한 상이한 뷰잉 방향들에 대한 콘텐트를 제공하는 콘텐트 스트림들에 대응하는 데이터 레이트들에 대한 제한들을 나타내는 정보를 포함한다. 결정된 현재 최대 지원 가능한 데이터 레이트 및/또는 대역폭(1950)은 제공된 시간에 재생 시스템(1900)에 의해 결정된 최대 지원 가능한 데이터 레이트 및/또는 대역폭을 나타낸다.
수신된 환경 맵(1954)은 3D 표면을 규정하는 환경의 3D 깊이 맵을 포함한다. 관심 환경에 대응하는 하나 이상의 이러한 깊이 맵들은 몇몇 실시예들에서 재생 시스템(1900)에 의해 수신될 수 있다. 수신된 UV 맵(들)(1956)은 관심의 환경/장면의 부분들에 대응하는 하나 이상의 UV 맵들을 포함한다. 디코딩된 데이터(1958)는 디코더(1920)에 의해 본 발명에 따라 디코딩된 데이터를 포함한다. 디코딩된 데이터(1958)는 스트림들의 선택된 세트에 의해 전달된 환경의 장면 또는 장면 부분들을 포함하는 콘텐트를 포함한다.
몇몇 실시예들에서, 상기에 논의된 다양한 모듈들은 소프트웨어 모듈들로서 구현된다. 다른 실시예들에서, 모듈들은 하드웨어에서, 예를 들면, 개별적인 회로들로서 구현되고, 각각의 모듈은 모듈이 대응하는 기능을 수행하기 위한 회로로서 구현된다. 또 다른 실시예들에서, 모듈들은 소프트웨어 및 하드웨어의 조합을 사용하여 구현된다.
도 19 예에서 메모리(1912)에 포함되도록 도시되지만, 재생 디바이스(1900)에 포함된 것으로 도시된 모듈들은 프로세서(1908) 내 하드웨어에서, 예를 들면, 개별 회로들로서 완전히 구현될 수 있고, 몇몇 실시예들에서 그렇게 구현된다. 모듈들은 하드웨어에서, 예를 들면, 상이한 모듈들에 대응하는 개별 회로들로서 완전히 구현될 수 있고, 몇몇 실시예들에서 그렇게 구현된다. 다른 실시예들에서, 모듈들의 일부는, 예를 들면, 프로세서(1908)의 외부의 및 그에 결합된 회로들로서, 예를 들면, 구현되는 다른 모듈들을 갖는 프로세서(1908) 내에, 회로들로서 구현된다. 이해될 수 있는 바와 같이, 프로세서상의 모듈들의 및/또는 프로세서 외부에 있는 몇몇 모듈들과의 통합의 레벨은 설계 선택 중 하나일 수 있다. 대안적으로, 회로들로서 구현되기보다는, 모듈들의 전체 또는 일부는 소프트웨어에서 구현될 수 있고 시스템(1900)의 메모리(1912)에 저장될 수 있고, 모듈들은 모듈들이 프로세서, 예를 들면, 프로세서(1908)에 의해 실행될 때 모듈들에 대응하는 기능들을 수행하기 위해 시스템(1900)의 동작을 제어한다. 또 다른 실시예들에서, 다수의 모듈들은 하드웨어 및 소프트웨어의 조합으로서 구현되고, 예를 들면, 프로세서 외부의 다른 회로는, 이후 소프트웨어 제어하에서, 모듈들의 기능 중 일 부분을 수행하도록 동작하는 프로세서(1908)에 입력을 제공한다.
도 23은 재생 시스템(1900)에서 사용된 스트림 선택 모듈(1938) 및 그 안에 포함된 다양한 모듈들을 더 상세히 도시한다. 스트림 선택 모듈은 도 14 내지 도 16에 관하여 상세히 논의되는 본 발명의 방법들에 따라 하나 이상의 콘텐트 스트림들을 선택하도록 구성된다. 몇몇 실시예들에서, 스트림 선택 모듈은, 사용자의 머리 위치, 스트림 정보(1946) 및/또는 최대 지원 가능한 데이터 레이트에 기초하여, 복수의 콘텐트 스트림들 중 어느 것을 수신할지를 선택하도록 구성된다. 몇몇 실시예들에서, 스트림 선택 모듈(1938)은 사용자의 머리 위치에 기초하여 콘텐트 스트림들을 우선 순위화하도록 구성된 스트림 우선 순위화 모듈(2306)을 포함한다. 스트림 우선 순위화 모듈(2306)의 출력은, 예를 들면, 배정된 우선 순위들을 갖는 콘텐트 스트림들의 우선 순위화된 리스트이다. 스트림 우선 순위화 모듈(2306)은 아래의 도 24에 관하여 더 상세히 논의된다.
스트림 선택 모듈(1938)은, 예를 들면, 대역폭 및/또는 데이터 레이트 제한들에 기초하여, 가장 높은 우선 순위를 갖는 스트림에 대해 사용될 최대 대역폭 및/또는 데이터 레이트를 결정하도록 구성된 가장 높은 우선 순위 스트림 최대 대역폭 및/또는 데이터 레이트 결정 모듈(2308), 및 하위 우선 순위를 갖는 각각의 스트림에 사용될 최대 대역폭 및/또는 데이터 레이트를 결정하도록 구성된 하위 우선 순위 스트림(들) 최대 대역폭 및/또는 데이터 레이트 결정 모듈(2310)을 추가로 포함한다. 결정 모듈들(2308, 2310)은 몇몇 실시예들에서 각각의 결정들을 수행하기 위해 대역폭 제어 정보(1948) 및 스트림 우선 순위화 모듈(2306)의 출력을 사용한다. 따라서, 스트림 선택 모듈(1938)은, 예를 들면, 네트워크 디바이스/서버로부터, 재생 시스템에 전달된 대역폭 제한에 기초하여 적어도 하나의 콘텐트 스트림에 대한 대역폭을 결정하도록 구성된 하나 이상의 스트림 대역폭 결정 모듈들을 포함할 수 있다.
스트림 선택 모듈(1938)은 가장 높은 우선 순위 스트림이 가장 높은 우선 순위 스트림(들)에 대한 결정된 최대 대역폭 및/또는 데이터 레이트에 기초하여 및 이용 가능한 대역폭 및/또는 지원 가능한 데이터 레이트에 기초하여 지원될 수 있는지를 결정하도록 구성된 모듈(2312), 및 지원될 수 있는 가장 높은 우선 순위의 가장 높은 데이터 레이트 스트림을 선택하도록 구성된 모듈(2314)을 추가로 포함한다. 몇몇 실시예들에서, 선택 모듈(2314)은 가장 높은 우선 순위가 배정된 복수의 콘텐트 스트림들로부터 하나의 콘텐트 스트림을 선택하도록 구성되고, 가장 높은 우선 순위가 배정된 각각의 콘텐트 스트림은 동일한 뷰잉 방향에 대응하는 콘텐트를 동일한 우선 순위를 갖는 복수의 콘텐트 스트림들로부터 선택하도록 구성되는 부분으로서 제공한다. 몇몇 실시예들에서, 모듈(2314)은 동일한 우선 순위, 예를 들면, 이용 가능한 대역폭의 결정된 양에 기초한 가장 높은 우선 순위를 갖는 복수의 콘텐트 스트림들로부터 선택하도록 구성된다. 따라서, 몇몇 실시예들에서, 동일한 우선 순위를 갖는 복수의 스트림이 이용 가능할 때, 예를 들면, 몇몇은 하위 데이터 레이트 요건들을 갖는 다른 것들에 비해 높은 데이터 레이트 요건들을 가질 때, 선택 모듈(2314)은 가장 높은 품질 스트림, 예를 들면, 이용 가능한 대역폭 및/또는 지원가능한 데이터 레이트 및 대역폭 제한들이 이러한 선택에 대해 허용하는 경우, 높은 데이터 레이트 스트림을 선택한다.
스트림 선택 모듈(1938)은 제 2 가장 높은 우선 순위 스트림(들)에 대해 결정된 최대 대역폭 및/또는 데이터 레이트에 기초하여 및 이용 가능한 대역폭(예를 들면, 전체 이용 가능하거나 나머지 이용 가능한) 및/또는 지원 가능한 데이터 레이트에 기초하여 제 2 가장 높은 우선 순위 스트림이 지원될 수 있는지를 결정하도록 구성된 모듈(2316), 지원될 수 있는 제 2 가장 높은 우선 순위의 가장 높은 데이터 레이트 스트림을 선택하도록 구성된 모듈(2318), 제 3 가장 높은 우선 순위 스트림(들)에 대한 결정된 최대 대역폭 및/또는 데이터 레이트에 기초하여 및 이용 가능한 대역폭(예를 들면, 전체 이용 가능하거나 나머지 이용 가능한) 및/또는 지원 가능한 데이터 레이트에 기초하여 제 3 가장 높은 우선 순위 스트림이 지원될 수 있는지를 결정하도록 구성된 모듈(2320), 및 지원될 수 있는 제 3 가장 높은 우선 순위의 가장 높은 데이터 레이트 스트림을 선택하도록 구성된 모듈(2322)을 추가로 포함한다. 따라서, 몇몇 실시예들에서, 스트림 선택 모듈(1938)은, 예를 들면, 우선 순위화 모듈(2306)에 의해, 가장 높은 우선 순위들이 배정된 하나 이상의 콘텐트 스트림들을 선택하도록 구성된다.
스트림 선택 모듈(1938)은, 예를 들면, 하나 이상의 상위 우선 순위 스트림들이 수신을 위해 선택된 후, 추가의 콘텐트 스트림들을 수신하기 위해 임의의 나머지 또는 추가의 이용 가능한 대역폭이 존재하는지를 결정하도록 구성된 추가 용량/대역폭 이용 가능성 결정 모듈(2324)을 추가로 포함한다. 몇몇 실시예들에서, 스트림 선택 모듈(1938)은 하나 이상의 하위 우선 순위 스트림들에 대한 최대 결정된 최대 대역폭 및/또는 데이터 레이트에 기초하여 및 이용 가능한 대역폭 및/또는 지원 가능한 데이터 레이트에 기초하여 지원될 수 있는 하나 이상의 하위 우선 순위 스트림들을 선택하도록 구성된 모듈(2326)을 추가로 포함한다.
도 24는 스트림 선택 모듈(1938)의 일부, 예를 들면, 그의 서브 모듈로서 또는 개별 모듈로서 구현될 수 있는 스트림 우선 순위화 모듈(2306)을 도시한다. 스트림 우선 순위화 모듈(2306)은 사용자의 머리 위치에 기초하여 콘텐트 스트림들을 우선 순위화하도록 구성된다. 콘텐트 스트림들이 우선 순위화되면, 스트림 선택 모듈(1938)은 우선 순위화된 콘텐트 스트림들로부터 스트림 선택을 수행할 수 있다. 몇몇 실시예들에서, 스트림 우선 순위화 모듈(2306)은 사용자의 현재 머리 위치에 기초하여 사용자가 보고 있는 장면 영역의 일 부분을 나타내는 사용자의 현재 시야를 식별하도록 구성된 현재 시야 식별 모듈(2404), 및 사용자의 현재 시야에 대응하는 장면 영역의 부분에 대응하는 콘텐트를 전달하는 스트림(들)을 식별하도록 구성된 현재 시야 스트림(들) 식별 모듈(2404)을 포함한다. 현재 시야 스트림(들) 식별 모듈(2404)의 출력은 몇몇 실시예들에서 메모리(1912)에 저장될 수 있는 식별된 스트림들의 리스트이고, 리스트는 사용자의 머리 위치로서 갱신될 수 있고 따라서 시야는 변한다. 따라서, 다양한 실시예들에서, 다양한 이용 가능한 콘텐트 스트림들을 우선 순위화하기 위해, 먼저 사용자의 현재 시야는 머리 위치에 대응하여 식별되고, 시야에 대응하는 콘텐트를 전달하는 스트림들이 식별된다.
몇몇 실시예들에서, 스트림 우선 순위화 모듈(2306)은 식별된 스트림(들)으로부터 이용 가능한 사용자의 현재 시야에 대응하는 장면 영역의 부분들의 크기를 결정하도록 구성된 모듈(2406), 및 각각의 스트림이 제공하는 부분들의 크기에 기초하여 사용자의 현재 시야에 대응하는 장면 영역의 부분들을 제공하는 하나 이상의 스트림들에 우선 순위들을 배정하도록 구성된 우선 순위 배정/할당 모듈(2408)을 추가로 포함한다. 몇몇 실시예들에서, 우선 순위 배정/할당 모듈(2408)은 시야의 가장 큰 부분을 제공하는 스트림에 가장 높은 우선 순위를 배정하고, 예를 들면, 현재 시야에 대응하는 장면의 가장 큰 부분을 제공하는 스트림을 1차 스트림으로서 지정하도록 구성된 모듈(2410)을 포함한다. 몇몇 실시예들에서, 우선 순위 배정/할당 모듈(2408)은, 나머지 스트림들의 각각이 제공하는 시야 부분의 크기에 기초하여, 예를 들면, 현재 시야에 대응하는 장면의 더 작은 부분을 제공하는 다른 스트림보다 높은 우선 순위 및 지정이 제공된 시야의 더 큰 부분을 제공하는 스트림으로 다음으로 가장 높은 우선 순위(들)를 배정하고 나머지 스트림들(예를 들면, 2차, 3차 등으로서)을 지정하도록 구성된 모듈(2412)을 추가로 포함한다.
몇몇 실시예들에서, 스트림 우선 순위화 모듈(2306)은 우선 순위화될 나머지 스트림들, 예를 들면, 현재 시야 밖의 장면 영역에 대응하는 콘텐트를 제공하는 스트림들이 존재하는지를 결정하도록 구성된 모듈(2414)을 추가로 포함한다.
몇몇 실시예들에서, 스트림 우선 순위화 모듈(2306)은 현재 시야에 대한 이미지 콘텐트의 근접성 또는 머리 위치의 방향 중 하나에 기초하여 사용자의 현재 시야 밖의 콘텐트를 제공하는 하나 이상의 추가의 스트림들에 대해 우선 순위화, 예를 들면 우선 순위들을 배정하도록 구성된 모듈(2416)을 추가로 포함한다. 몇몇 실시예들에서, 모듈(2416)은 현재 시야에 대해 전달된 이미지 콘텐트의 근접성에 기초하여 상기 현재 시야 밖의 부분들에 대응하는 하나 이상의 추가의 스트림 전달 콘텐트를 우선 순위화하도록 구성되고, 현재 시야의 영역에 대해 근접한 이미지 콘텐트를 전달하는 콘텐트 스트림은 현재 시야 밖 및 그로부터 멀리 떨어진 콘텐트 스트림보다 더 높은 우선 순위가 배정된다.
몇몇 실시예들에서, 모듈(2416)은 사용자의 머리 회전이 예를 들면, 사용자의 머리 위치의 변경의 부분으로서 검출되는지를 결정하도록 구성된 머리 회전 결정 모듈(2418)을 포함한다. 몇몇 그러나 모두는 아닌 실시예들에서, 사용자가 하늘 또는 지붕을 향해 위를 바라보거나 지상을 향해 아래를 바라볼 때, 머리 위치에서 변경이 존재하지만 이러한 머리 움직임은 머리 회전으로 고려되지 않는다. 몇몇 실시예들에서, 모듈(2416)은 사용자의 머리 회전의 방향에 기초하여 하나 이상의 추가의 콘텐트 스트림들을 우선 순위화하도록 구성되고, 현재 시야 밖이지만 머리 회전의 방향인 이미지 콘텐트를 제공하는 콘텐트 스트림은 머리 회전의 방향으로부터 먼 방향으로 현재 시야 밖의 이미지 콘텐트를 제공하는 다른 콘텐트 스트림보다 더 높은 우선 순위가 배정된다. 몇몇 이러한 실시예들에서, 모듈(2416)은, 다음으로 낮은 우선 순위(예를 들면, 시야에 대응하는 콘텐트를 제공하는 스트림들에 더 높은 우선 순위들이 할당된 후) 및 스트림 지정, 예를 들면, 3차를 현재 시야 밖의 장면의 일 부분, 예를 들면, 장면 환경의 상부 또는 하부에 대응하는 콘텐트를 제공하는 스트림에 배정하도록 구성된 모듈(2420)을 추가로 포함한다. 몇몇 실시예들에서, 머리 회전이 존재하지 않는다고 결정될 때, 머리 회전 결정 모듈은 추가의 스트림들에 우선 순위들을 배정하도록 모듈(2420)에 제어 입력을 제공한다.
몇몇 실시예들에서, 모듈(2416)은 사용자의 머리 회전의 방향을, 예를 들면, 이전 머리 위치에 관해 왼쪽 또는 오른쪽으로 결정하도록 구성된 머리 회전 방향 결정 모듈(2422)을 추가로 포함한다. 몇몇 실시예들에서, 모듈(2416)은 머리 회전의 방향을 고려하여 현재 시야 밖의 부분들에 대응하는 콘텐트를 전달하는 하나 이상의 추가의 스트림들에 우선 순위들을 배정하도록 구성된 모듈(2424)을 추가로 포함한다. 몇몇 실시예들에서, 모듈(2424)은 다음으로 낮은 우선 순위(예를 들면, 더 높은 우선 순위로부터 다음으로 이용 가능한 우선 순위) 및 지정, 예를 들면 3차 스트림을 머리 회전의 방향에서 장면의 부분에 대응하는 콘텐트를 제공하는 스트림에 배정하도록 구성된 모듈(2426)을 포함한다. 따라서, 머리 회전이 검출되는 경우, 스트림들에 대한 우선 순위들의 할당은 몇몇 실시예들에서 머리 회전의 방향에 기초하여 수행된다는 것이 이해되어야 한다. 몇몇 실시예들에서, 모듈(2416)은 고려된 나머지 스트림들 중 임의의 것에 더 낮은 우선 순위들을 배정하도록 구성된 추가 모듈(2428)을 추가로 포함한다.
도 19 예에서 단일 프로세서, 예를 들면 컴퓨터로서 도시되지만, 프로세서(1908)는 하나 이상의 프로세서들, 예를 들면, 컴퓨터들로서 구현될 수 있다는 것이 이해되어야 한다. 소프트웨어에서 구현될 때, 모듈들은, 프로세서(1908)에 의해 실행될 때, 프로세서(1908)가 모듈에 대응하는 기능을 수행하도록 구성하는 코드를 포함한다. 도 19, 도 23, 및 도 24에 도시된 다양한 모듈들이 메모리(1912)에 저장되는 실시예들에서, 메모리(1912)는, 적어도 하나의 컴퓨터, 예를 들면, 프로세서(1908)가 모듈들이 대응하는 기능들을 수행하게 하기 위한 코드, 예를 들면, 각각의 모듈에 대한 개별 코드를 포함하는 컴퓨터 판독 가능한 매체를 포함하는 컴퓨터 프로그램 제품이다.
완전하게 하드웨어 기반 또는 완전하게 소프트웨어 기반 모듈들이 사용될 수 있다. 그러나, 소프트웨어 및 하드웨어의 임의의 조합, 예를 들면 회로 구현된 모듈들이 기능들을 구현하기 위해 사용될 수 있다는 것이 이해되어야 한다. 이해되는 바와 같이, 도 19, 도 23, 및 도 24에 도시된 모듈들은 도 14의 플로차트(1400)의 방법에 도시 및/또는 기술된 대응하는 단계들의 기능들을 수행하고 도 15 내지 도 17에 도시된 대응하는 단계들의 기능들을 수행하기 위해 시스템(1900) 또는 프로세서(1908)와 같은 그 안의 요소들을 제어 및/또는 구성한다.
도 20a, 도 20b, 도 20c, 도 20d, 및 도 20e의 조합을 포함하는 도 20은 다양한 예시적인 실시예들에 따라 콘텐트 재생 시스템을 동작시키는 일 예시적인 방법의 플로차트(2000)이다. 콘텐트 재생 시스템은, 예를 들면, 다양한 실시예들에 따라 디스플레이에 결합된 콘텐트 재생 디바이스 또는 컴퓨터 시스템이다.
예시적인 방법의 동작은 단계(2002)에서 시작하고, 여기서 콘텐트 재생 시스템은 전원이 인가되거나 개시된다. 동작은 단계(2002)로부터 단계(2004)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 제 1 후방 뷰 부분에 대응하는 제 1 이미지를 수신한다. 동작은 단계(2004)로부터 단계(2006)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 상기 수신된 제 1 이미지를 저장한다. 동작은 단계(2006)로부터 단계(2008)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 적어도 제 2 이미지를 포함하는 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 하나 이상의 추가 이미지들을 수신한다. 동작은 단계(2008)로부터 단계(2010)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 상기 수신된 하나 이상의 추가 이미지들을 저장한다. 동작은 단계(2010)로부터 단계(2012)로 진행한다.
단계(2012)에서, 콘텐트 재생 시스템은 상기 환경의 제 2 후방 뷰 부분에 대응하는 제 1 이미지를 수신한다. 동작은 단계(2012)로부터 단계(2014)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 제 2 후방 뷰 부분에 대응하는 상기 수신된 제 1 이미지를 저장한다. 동작은 단계(2014)로부터 단계(2016)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 제 2 후방 뷰 부분에 대응하는 적어도 하나의 제 2 이미지를 포함하는 상기 환경의 상기 제 2 후방 뷰 부분에 대응하는 하나 이상의 추가 이미지들을 수신한다. 동작은 단계(2016)로부터 단계(2018)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 제 2 후방 뷰 부분에 대응하는 상기 수신된 하나 이상의 추가 이미지들을 저장한다. 동작은 단계(2018)로부터 단계(2020)로 진행한다.
단계(2020)에서, 콘텐트 재생 시스템은 상기 환경의 하늘 뷰 부분에 대응하는 하나 이상의 이미지들을 수신한다. 동작은 단계(2020)로부터 단계(2022)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 하늘 뷰 부분에 대응하는 상기 수신된 하나 이상의 이미지들을 저장한다. 동작은 단계(2022)로부터 단계(2024)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 지상 뷰 부분에 대응하는 하나 이상의 이미지들을 수신한다. 동작은 단계(2024)로부터 단계(2026)로 진행하고, 콘텐트 재생 시스템은 상기 환경의 상기 지상 뷰 부분에 대응하는 상기 수신된 하나 이상의 이미지들을 저장한다. 몇몇 실시예들에서, 하늘 뷰 및 지상 뷰는 뷰어의 명목상의 머리 방향 관점에 관하여 위 및 아래 방향들을 말하고, 실외 환경들뿐만 아니라 실내 환경들에 적용하기 위해 사용된다.
몇몇 실시예들에서, 이미지들은, 예를 들면, 특정 실시예에 따라, 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분 및 지상 뷰 부분의 일부지만 반드시 모두는 아닌 것에 대응하여 수신될 수 있다.
동작은 단계(2026)로부터 접속 노드 A(2028)를 통해 단계(2030)로, 단계(2034)로 진행하고, 접속 노드 B(2036)를 통해, 단계들(2028, 2040, 2042, 2044, 2046, 2048, 2050, 2052)로 진행한다. 단계(2030)로 돌아오면, 단계(2030)에서, 콘텐트 재생 시스템은 뷰어의 머리 위치를 결정하고, 상기 머리 위치는 현재 시야에 대응한다. 동작은 단계(2030)로부터 단계(2032)로 진행하고, 콘텐트 재생 시스템은 결정된 머리 위치에 기초하여 상기 뷰어에 대한 현재 시야를 결정한다. 동작은 단계(2032)로부터 단계(2030)로 진행한다. 단계들(2032, 2030)은 반복적으로, 예를 들면, 현재 시야가 갱신되는, 예를 들면, 리프레시되는 것에 의해 정기적으로 수행된다. 결정된 현재 시야는 출력 이미지들의 생성시 사용되기 위해 이용 가능하다.
단계(2034)에서, 콘텐트 재생 시스템은 제 1 부분에 대응하는 콘텐트, 예를 들면, 환경의 전방 부분 뷰를 제공하는 제 1 콘텐트 스트림을 수신한다.
단계(2038)에서, 콘텐트 재생 시스템은, 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에 나타내진 재생 시간에 관해 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신한다. 단계(2040)에서, 콘텐트 재생 시스템은 환경의 상기 제 1 후방 뷰 부분에 대응하는 복수의 이미지들 중 어느 것이 상기 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신한다.
단계(2042)에서, 콘텐트 재생 시스템은 상기 환경의 상기 제 2 후방 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에 나타낸 재생 시간에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신한다. 단계(2044)에서, 콘텐트 재생 시스템은 환경의 상기 제 2 후방 뷰 부분에 대응하는 복수의 이미지들 중 어느 것이 상기 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신한다.
단계(2046)에서, 콘텐트 재생 디바이스는 상기 환경의 상기 하늘 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에 나타낸 재생 시간에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신한다. 단계(2048)에서, 콘텐트 재생 시스템은 환경의 상기 하늘 뷰 부분에 대응하는 복수의 이미지들 중 어느 것이 상기 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신한다.
단계(2050)에서, 콘텐트 재생 시스템은 상기 환경의 상기 지상 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에서 나타내진 재생 시간에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신한다. 단계(2052)에서, 콘텐트 재생 디바이스는 환경의 상기 지상 뷰 부분에 대응하는 복수의 이미지들 중 어느 것이 상기 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신한다.
동작은, 접속 노드 C(2054)를 통해, 동시에 수행될 수 있는, 단계(2032), 단계(2034), 및 단계들(2038, 2040, 2042, 2044, 2046, 2048, 2050, 2052)로부터 접속 노드 D(2056)를 통해, 단계(2058)로 진행한다.
몇몇 실시예들에서, 단계들(2038, 2040, 2042, 2044, 2046, 2048, 2050, 2052)로부터의 제어 정보는, 예를 들면, 단편적으로, 제어 정보가 사용되는 단계(2034)의 대응하는 제 1 스트림 콘텐트 약간 전에 전송된다. 몇몇 다른 실시예들에서, 제어 정보의 블록은 제 1 콘텐트 스트림의 수신의 시작 전 또는 그와 동시에 수신된다.
단계(2058)에서, 콘텐트 재생 시스템은 환경의 제 1 부분 뷰, 예를 들면, 전방 부분 뷰에 대응하는 제 1 콘텐트 스트림으로부터 수신된 콘텐트, 환경의 제 1 후방 뷰 부분에 대응하는 저장된 수신 이미지, 환경의 제 2 후방 뷰 부분에 대응하는 저장된 수신 이미지, 환경의 하늘 뷰 분에 대응하는 저장된 수신 이미지, 환경의 지상 뷰 부분에 대응하는 저장된 수신 이미지, 또는 이미지가 이용 가능하지 않은 현재 시야의 일 부분에 대응하는 합성된 이미지, 중 적어도 하나에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성한다. 단계(2058)는 단계들(2060, 2062, 2064, 2066, 2068, 2076, 2078)을 포함한다.
단계(2060)에서, 콘텐트 재생 시스템은, 현재 시야에 기초하여, 예를 들면, 하나 이상의 출력 이미지들을 생성하는 데 사용될 이용 가능한 데이터가 존재하는 뷰 부분들의 일 세트를 결정한다. 몇몇 예시적인 결정된 세트들은, 예를 들면, {}, {정면 뷰 부분}, {제 1 후방 뷰 부분}, {제 2 후방 뷰 부분}, {하늘 뷰 부분}, {지상 뷰 부분}, {전방 뷰 부분, 하늘 뷰 부분}, {전방 뷰 부분, 지상 뷰 부분}, {전방 뷰 부분, 제 1 후방 뷰 부분}, {전방 뷰 부분, 제 2 후방 뷰 부분}, {전방 뷰 부분, 제 1 후방 뷰 부분, 하늘 뷰 부분}, {전방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분}, {전방 뷰 부분, 제 1 후방 뷰 부분, 지상 뷰 부분}, {전방 뷰 부분, 제 2 후방 뷰 부분, 지상 뷰 부분}, {제 1 후방 뷰 부분, 하늘 뷰 부분}, {제 1 후방 뷰 부분, 지상 뷰 부분}, {제 1 후방 뷰 부분, 제 2 후방 뷰 부분}, {제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분}, {제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 지상 뷰 부분}, {제 2 후방 뷰 부분, 하늘 뷰 부분}, 및 {제 2 후방 뷰 부분, 지상 뷰 부분}을 포함한다.
동작은 단계(2060)로부터 단계(2062)로 진행한다. 단계(2062)에서, 콘텐트 재생 시스템은, 다음의 두 개의 조건들이 만족되는지의 여부를 결정한다:(ⅰ) 단계(2060)로부터 뷰 부분들의 결정된 세트가 단지 제 1 뷰 부분만을 포함하는 것, 및 (ⅱ) 제 1 뷰 부분 외부에 현재 시야의 부분들이 존재하지 않는 것. 결정된 세트가 단지 제 1 뷰 부분을 포함하고 제 1 뷰 부분 외부에 현재 시야의 부분들이 존재하지 않는 것을 결정하는 경우, 동작은 단계(2062)로부터 단계(2064)로 진행하고; 그렇지 않은 경우, 동작은 단계(2062)로부터 단계(2066)로 진행한다.
단계(2064)에서, 콘텐트 재생 시스템은 제 1 콘텐트 스트림으로부터 수신된 콘텐트에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성한다.
단계(2066)에서, 콘텐트 재생 시스템은 이미지가 이용 가능하지 않은 상기 현재 시야의 임의의 부분이 존재하는지를 결정한다. 콘텐트 재생 시스템이 이미지가 이용 가능하지 않은 현재 시야의 적어도 일 부분이 존재한다고 결정하는 경우, 동작은 단계(2066)로부터 단계(2076)로 진행하고; 그렇지 않은 경우, 동작은 단계(2066)로부터 단계(2078)로 진행한다.
단계(2068)에서, 콘텐트 재생 시스템은 하나 이상의 출력 이미지들을 생성할 시 사용될 뷰 부분의 결정된 세트에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성한다. 단계(2068)는 단계(2070)를 포함할 수 있고, 때때로 그를 포함하고, 여기서 제 1 콘텐트 스트림에 포함된 적어도 일부 수신된 콘텐트 및 상기 환경의 제 2 부분에 대응하는 저장된 콘텐트에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성한다. 몇몇 실시예들에서, 단계(2070)는 단계들(2072, 2074) 중 하나 또는 둘 모두를 포함한다. 단계(2072)에서, 콘텐트 재생 시스템은 수신된 이미지 선택 정보에 기초하여 환경의 제 2 부분 뷰에 대응하는 이미지를 선택한다. 동작은 단계(2072)로부터 단계(2074)로 진행한다. 단계(2074)에서, 콘텐트 재생 시스템은 제 2 시점에서 캡처된 상기 제 1 콘텐트 스트림으로부터 획득된 콘텐트를 상기 제 1 시점에 대응하는 제 1 이미지와 조합하고, 상기 제 1 및 제 2 시점은 상이하다.
몇몇 실시예들에서, 제 1 이미지는 환경의 제 2 부분의 제 1 이미지이고, 제 2 부분은 환경의 제 1 후방 뷰 부분 및 환경의 제 2 후방 뷰 부분 중 하나이다. 몇몇 이러한 실시예들에서, 제 1 시점은 제 2 시점에 선행하는 시간에 대응한다. 몇몇 이러한 실시예들에서, 제 1 시점은 제 1 콘텐트 스트림들의 이미지들이 캡처되는 동안 실시간 이벤트의 시간에 선행한다.
단계(2076)로 돌아가면, 단계(2076)는 이미지가 이용 가능하지 않은 각각의 부분에 대해 수행된다. 단계(2076)에서, 콘텐트 재생 시스템은 이미지가 이용 가능하지 않은 상기 현재 시야의 일 부분에 대한 이미지를 합성한다. 동작은 단계(2076)로부터 단계(2078)로 진행한다. 단계(2078)에서, 콘텐트 재생 시스템은 하나 이상의 출력 이미지들 및/또는 하나 이상의 합성된 이미지들을 생성할 때 사용될 환경의 뷰 부분의 결정된 세트에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성한다. 단계(2078)에 의해 생성된 출력 이미지들은: 전체로 합성된 이미지; 합성된 이미지로부터의 콘텐트 및 제 1 콘텐트 스트림으로부터의 콘텐트를 포함하는 이미지; 합성된 이미지로부터의 콘텐트, 제 1 콘텐트 스트림으로부터의 콘텐트, 및 저장된 이미지로부터의 콘텐트를 포함하는 이미지; 및 합성된 이미지로부터의 콘텐트 및 저장된 이미지로부터의 콘텐트를 포함하는 이미지를 포함할 수 있다. 다양한 실시예들에서, 단계(2078)는 단계들(2080, 2082) 중 하나 또는 둘 모두를 포함할 수 있고, 때때로 그를 포함한다.
단계(2080)에서, 콘텐트 재생 시스템은 제 1 콘텐트 스트림에 포함된 적어도 몇몇 수신된 콘텐트에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들 및 환경의 일 부분, 예를 들면, 제 2 부분을 시뮬레이션하는 합성 이미지를 생성한다. 단계(2080)에서, 콘텐트 재생 디바이스는 현재 시야에 대응하는 이미지를 생성하기 위해 합성된 이미지를 수신된 이미지의 적어도 일 부분과 조합한다.
현재 시야는 시간에 따라 변할 수 있고 일반적으로 그렇다는 것이 이해되어야 한다. 현재 시야의 변경들에 응답하여, 출력 이미지를 생성하기 위해 사용되는 뷰 부분들의 상이한 세트들은 단계(2060)에서 결정될 수 있고, 상이한 이미지들이 존재하는 것이 요구될 수 있고, 예를 들면, 이미지가 존재하지 않는 시야의 상이한 부분에 대응하여, 단계(2076)에서 합성된다. 또한, 수신된 제어 정보에 기초하여 상이한 시간들에서, 상이한 저장된 이미지들은 상이한 시간들에 조합된 출력 이미지를 생성할 때 사용되기 위해 식별될 수 있다.
동작은 단계(2058)로부터, 접속 노드 E(2084)를 통해, 단계(2086)로 진행하고, 여기서 콘텐트 재생 시스템은 생성된 하나 이상의 출력 이미지들을 출력 및/또는 디스플레이한다. 단계(2086)는 콘텐트 재생 시스템이 제 1 출력 이미지를 출력 및/또는 디스플레이하는 단계(2088)를 포함하고, 상기 제 1 출력 이미지는 하나 이상의 생성된 출력 이미지들 중 하나이다.
몇몇 실시예들에서, 현재 시야에 대응하는, 예를 들면, 단계(2070)에서 생성된, 생성된 출력 이미지는 환경의 제 1 부분, 환경의 제 2 부분, 및 환경의 제 3 부분으로부터의 정보를 포함할 수 있고, 때때로 그를 포함한다. 몇몇 실시예들에서, 제 1 콘텐트 스트림에 대응하는 환경의 제 1 부분은 정면 뷰 부분이고, 환경의 제 2 부분은, 환경의, 제 1 후방 뷰 부분, 예를 들면, 오른쪽 후방 뷰 부분, 및 제 2 후방 뷰 부분, 예를 들면, 왼쪽 후방 뷰 부분 중 하나이고, 환경의 제 3 부분은 환경의 하늘 뷰 부분 및 지상 뷰 부분 중 하나이다. 몇몇 이러한 실시예들에서, 상기 제 1 부분에 대응하는 콘텐트는 이벤트가 진행중인 동안 상기 재생 시스템에 캡처 및 스트리밍된 실시간 콘텐트를 포함하고, 상기 제 2 및 제 3 부분들에 대응하는 콘텐트는 비실시간 이미지들이다.
다양한 실시예들에서, 현재 시야에 대응하는 출력 이미지를 생성하기 위한 콘텐트의 조합은 하나 이상의 경계 영역들에서, 예를 들면, 환경의 정면 뷰 부분에 대응하는 제 1 콘텐트 스트림으로부터 획득된 이미지, 환경의 제 1 후방 뷰 부분에 대응하는 저장된 이미지, 환경의 제 2 후방 뷰 부분에 대응하는 저장된 이미지, 환경의 하늘 뷰 부분에 대응하는 저장된 이미지, 환경의 지상 뷰 부분에 대응하는 저장된 이미지, 및 이미지가 존재하지 않는 현재 시야 내 영역에 대응하는 합성된 이미지 중 임의의 두 개 사이의 경계 영역에서 필터링, 블러링, 휘도 변동들, 및/또는 컬러 변동들을 수행하는 것을 포함한다.
몇몇 실시예들에서, 제 1, 예를 들면, 제 1 콘텐트 스트림에 대응하는 정면 뷰 부분에 의해 포함되지 않는 환경의 몇몇 부분들, 및 수신된 이미지들이 저장되는 하나 이상의 추가 부분들이 존재한다. 다양한 실시예들에서, 환경의 이들 포함되지 않은 부분들에 대해, 이미지가 합성된다. 예를 들면, 일 실시예에서, 하늘 뷰 부분에 대응하는 저장된 이미지가 존재하지 않을 수 있고, 현재 시야가 하늘 뷰의 일 부분을 포함할 때, 이미지가 합성된다. 다른 예에서, 데드 스팟(dead spot), 예를 들면, 제 1 후방 뷰 부분과 제 2 후방 뷰 부분 사이의 포함되지 않은 영역이 존재할 수 있다. 몇몇 실시예들에서, 이미지를 합성하는 것은 이미지의 일 부분, 환경에서 인접 영역에 대응하는 수신된 제 1 콘텐트 스트림으로부터 획득된 이미지의 일 부분 또는 저장된 이미지의 일 부분을 반복하는 것을 포함한다.
몇몇 실시예들에서, 단계(2034)에서 수신된 제 1 이미지 콘텐트는, 예를 들면 왼쪽 및 오른쪽 눈들의 쌍들이 수신되는, 왼쪽 눈 이미지 및 오른쪽 눈 이미지를 포함하는 입체 영상 이미지 콘텐트이다. 몇몇 이러한 실시예들에서, 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분, 및 지상 뷰 부분들에 대응하는 수신 및 저장된 이미지들은 왼쪽 눈 이미지들 및 오른쪽 눈 이미지들을, 예를 들면, 쌍들로 포함한다. 따라서, 예를 들면, 단계(2070)에서, 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성할 때, 제 1 뷰 부분, 예를 들면, 정면 뷰 부분에 대응하는 제 1 콘텐트 스트림으로부터의 왼쪽 눈 이미지들은 환경의 하나 이상의 다른 부분들에 대응하는 저장된 왼쪽 눈 이미지들과 조합되고, 제 1 뷰 부분, 예를 들면, 정면 뷰 부분에 대응하는 제 1 콘텐트 스트림으로부터의 오른쪽 눈 이미지들은 환경의 하나 이상의 다른 부분들에 대응하는 저장된 오른쪽 이미지들과 조합된다.
몇몇 다른 실시예들에서, 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분, 및 지상 뷰 부분들에 대응하는 수신 및 저장된 이미지들은 이미지들의 원래의 쌍으로부터 왼쪽 눈 이미지 또는 오른쪽 눈 이미지 중 하나를 포함하거나 또는 예를 들면, 뷰 부분을 캡처하기 위해 단독으로 동작하는 단일 카메라로부터 단일(모노) 이미지를 포함한다. 따라서, 이러한 일 실시예에서, 예를 들면, 단계(2070)에서, 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성할 때, 제 1 콘텐트 스트림으로부터의 왼쪽 눈 이미지 및 예를 들면, 정면 부분에 대응하는, 제 1 콘텐트 스트림으로부터의 대응하는 오른쪽 눈 이미지 둘 모두는 다른 뷰 부분으로부터의 동일한 저장 이미지와 조합된다.
또 다른 실시예들에서, 저장된 이미지들 중 몇몇은 왼쪽 및 오른쪽 눈 이미지 쌍들 모두를 포함하고, 다른 것들은 하나의 저장된 이미지들을 포함한다. 예를 들면, 제 1 후방 뷰 부분에 대응하는 수신된 저장된 수신된 이미지들은 왼쪽 및 오른쪽 눈 이미지들의 쌍들을 포함할 수 있고, 반면에 하늘 뷰 부분에 대응하는 저장된 수신 이미지들은 단일 이미지들, 예를 들면, 쌍들보다는 모노 이미지들을 포함할 수 있다.
몇몇 실시예들에서, 예를 들면, 수신된 제 1 콘텐트 스트림에 대응하는 환경의 제 1 부분은 정면 뷰 부분이고, 환경의 제 2 부분은 후방 뷰 부분, 예를 들면, 뷰어의 오른쪽 후방에 대응하는 제 1 후방 뷰 부분 또는 뷰어의 왼쪽 후방에 대응하는 제 2 후방 뷰 부분이고, 환경의 제 3 부분은 하늘 뷰 부분 또는 지상 뷰 부분이다. 몇몇 이러한 실시예들에서, 이미지들은 제 1, 제 2, 및 제 3 부분들에 대응하는 상이한 레이트들에서 수신되고, 더 많은 이미지들이 상기 제 2 부분보다 상기 제 1 부분에 대응하는 이벤트에 대해 수신된다. 몇몇 이러한 실시예들에서, 더 많은 이미지들이 상기 제 3 부분보다 상기 제 2 부분에 대응하여 수신된다.
몇몇 실시예들에 따라, 콘텐트 재생 시스템을 동작시키는 일 예시적인 방법은: 현재 시야에 대응하는 뷰어의 머리 위치를 결정하는 단계; 환경의 제 1 부분에 대응하는 콘텐트를 제공하는 제 1 콘텐트 스트림을 수신하는 단계; 상기 제 1 콘텐트 스트림에 포함된 적어도 몇몇 수신된 콘텐트 및 ⅰ) 상기 환경의 제 2 부분에 대응하는 저장된 콘텐트 또는 ⅱ) 상기 환경의 제 2 부분을 시뮬레이션하는 합성 이미지에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하는 단계; 및 제 1 출력 이미지를 출력 또는 디스플레이하는 단계로서, 상기 제 1 출력 이미지는 하나 이상의 생성된 출력 이미지들 중 하나인, 상기 출력 또는 디스플레이하는 단계를 포함한다. 몇몇 실시예들에서, 콘텐트 재생 시스템은 콘텐트 재생 디바이스이다. 몇몇 실시예들에서, 콘텐트 재생 시스템은 디스플레이에 결합된 컴퓨터 시스템이다.
다양한 실시예들에서, 방법은: 상기 환경의 제 2 부분에 대응하는 제 1 이미지를 수신하는 단계; 및 상기 환경의 상기 제 2 부분에 대응하는 상기 제 1 이미지를 저장하는 단계를 추가로 포함한다.
몇몇 실시예들에서, 상기 환경의 상기 제 2 부분의 상기 제 1 이미지는 제 1 시점에 대응하고; 현재 시야에 대응하여 하나 이상의 출력 이미지들을 생성하는 것은 제 2 시점에서 캡처된 상기 제 1 콘텐트 스트림으로부터 획득된 콘텐트를 상기 제 1 시점에 대응하는 상기 제 1 이미지와 조합하는 것을 포함하고, 상기 제 1 및 제 2 시점들은 상이하다. 몇몇 이러한 실시예들에서, 상기 제 1 시점은 상기 제 2 시점에 선행하는 시간에 대응한다. 몇몇 이러한 실시예들에서, 상기 제 1 시점은 상기 제 1 콘텐트 스트림에 포함된 이미지들이 캡처되는 동안 실시간 이벤트의 시간에 선행한다.
다양한 실시예들에서, 방법은 상기 환경의 상기 제 2 부분에 대응하는 하나 이상의 추가의 이미지들을 수신하는 단계를 추가로 포함하고, 상기 환경의 상기 제 2 부분에 대응하는 상기 하나 이상의 추가의 이미지들은 적어도 제 2 이미지를 포함한다.
몇몇 실시예들에서, 방법은 상기 환경의 상기 제 2 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에 나타내진 재생 시간에 관해 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하는 단계를 포함한다.
몇몇 실시예들에서, 상기 환경의 제 2 부분은 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분 또는 지상 뷰 부분 중 하나이다. 몇몇 이러한 실시예들에서, 방법은 상기 환경의 제 3 부분에 대응하는 하나 이상의 이미지들을 수신하는 단계를 추가로 포함한다.
다양한 실시예들에서, 상기 환경의 상기 제 1 부분은 정면 뷰 부분이고; 상기 제 3 부분은 하늘 뷰 또는 지상 뷰 부분 중 하나이고, 이미지들은 상기 제 1, 제 2, 및 제 3 부분들에 대응하는 상이한 레이트들에서 수신되고, 더 많은 이미지들이 상기 제 2 부분에 대해서보다 상기 제 1 부분에 대응하는 이벤트에 대해 수신된다.
다양한 실시예들에서, 상기 제 1 부분에 대응하는 상기 콘텐트는 이벤트가 진행중인 동안 상기 재생 디바이스에 캡처 및 스트리밍되는 실시간 콘텐트를 포함하고; 상기 제 2 및 제 3 부분들에 대응하는 상기 이미지들에 대응하는 콘텐트는 비실시간 이미지들이다. 몇몇 이러한 실시예들에서, 환경의 상기 제 2 부분에 대응하는 복수의 이미지들 중 어느 것이 상기 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하고, 적어도 일부 수신된 콘텐트에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하는 것은 수신된 이미지 선택 정보에 기초하여 환경의 상기 제 2 부분에 대응하는 이미지를 선택하는 것을 포함한다.
다양한 실시예들에서, 예시적인 방법은 이미지가 상기 현재 시야의 일 부분에 대해 이용 가능하지 않다는 것을 결정하는 단계; 이미지가 이용 가능하지 않은 상기 현재 시야의 상기 부분에 대해 사용될 이미지를 합성하는 단계; 및 현재 시야에 대응하는 이미지를 생성하기 위해 수신된 이미지의 적어도 일 부분과 합성된 이미지를 조합하는 단계를 포함한다.
다양한 실시예들에서, 상기 제 1 이미지 콘텐트는 왼쪽 눈 이미지 및 오른쪽 눈 이미지를 포함하는 입체 영상 이미지 콘텐트이다.
도 21은 도 1 및 도 7에 도시된 것과 같은 콘텐트 전달 시스템으로부터 수신된 이미징 콘텐트를 수신, 디코딩, 저장, 처리, 및 디스플레이하기 위해 사용될 수 있는 본 발명에 따라 구현된 일 예시적인 콘텐트 재생 시스템(2100)을 도시한다. 시스템(2100)은 디스플레이(2102)를 포함하는 단일 재생 디바이스(2100')로서 또는 외부 디스플레이, 예를 들면, 컴퓨터 시스템(2100')에 결합된 헤드 마운트 디스플레이(2105)와 같은 요소들의 조합으로서 구현될 수 있다.
콘텐트 재생 시스템(2100)은, 적어도 몇몇 실시예들에서, 3D 헤드 마운트 디스플레이이다. 헤드 마운트 디스플레이는 헤드 마운트 디스플레이(2105)를 포함할 수 있는 OCULUS RIFTTM VR(가상 현실) 헤드셋을 사용하여 구현될 수 있다. 다양한 실시예들에서, 헤드 마운트 디스플레이(2105)는 헤드 마운트 디스플레이(805)와 동일하다. 다른 헤드 마운트 디스플레이들이 또한 사용될 수 있다. 몇몇 실시예들에서, 헤드 마운트 헬멧 또는 다른 헤드 마운팅 디바이스의 하나 이상의 디스플레이 스크린들은 사용자의 왼쪽 및 오른쪽 눈들에 콘텐트를 디스플레이하기 위해 사용된다. 단일 스크린의 상이한 부분들을 상이한 눈들에 노출하도록 구성된 헤드 마운트에 의해 상이한 이미지들을 단일 스크린상에 왼쪽 및 오른쪽 눈들에 디스플레이함으로써, 단일 디스플레이는 뷰어의 왼쪽 및 오른쪽 눈들에 의해 개별적으로 인식될 왼쪽 및 오른쪽 눈 이미지들을 디스플레이하기 위해 사용될 수 있다. 몇몇 실시예들에서, 휴대 전화 스크린은 헤드 마운트 디스플레이 디바이스의 디스플레이로서 사용된다. 적어도 몇몇 이러한 실시예들에서, 휴대 전화는 헤드 마운팅 디바이스로 삽입되고, 휴대 전화는 이미지들을 디스플레이하기 위해 사용된다.
콘텐트 재생 시스템(2100)은 수신된 인코딩된 이미지 데이터, 예를 들면, 환경 또는 장면의 상이한 부분들에 대응하는 왼쪽 및 오른쪽 눈 이미지들 및/또는 모노(단일 이미지들)를 디코딩하고, 예를 들면, 사용자에 의해 인식되는 상이한 왼쪽 및 오른쪽 눈 뷰들을 3D 이미지로서 렌더링 및 디스플레이함으로써, 고객에게 디스플레이하기 위한 3D 이미지를 생성하기 위한 능력을 갖는다. 콘텐트 재생 시스템(2100)은 몇몇 실시예들에서 가정 또는 사무실과 같은 고객 구내 위치에 위치되지만 이미지 캡처 사이트에도 또한 위치될 수 있다. 콘텐트 재생 시스템(2100)은 본 발명에 따라 신호 수신, 디코딩, 처리, 생성, 디스플레이 및/또는 다른 동작드을 수행할 수 있다.
시스템(2100)은 디스플레이(2102), 디스플레이 디바이스 인터페이스(2013), 입력 디바이스(2104), 입력/출력(I/O) 인터페이스(2106), 프로세서(2108), 네트워크 인터페이스(2110), 및 메모리(2112)를 포함한다. 메모리(2112)는 모듈들의 어셈블리(2114), 예를 들면, 소프트웨어 모듈들의 어셈블리, 및 데이터/정보(2116)를 포함한다. 몇몇 실시예들에서, 시스템(2100)은 모듈들의 어셈블리(2115), 예를 들면, 하드웨어 모듈들의 어셈블리, 예를 들면, 회로들을 포함한다. 시스템(2100)의 다양한 구성 요소들은 데이터가 시스템(2100)의 구성 요소들 사이에 전달되게 하는 버스(2109)를 통해 및/또는 다른 접속들에 의해 또는 무선 인터페이스를 통해 함께 결합된다. 몇몇 실시예들에서, 디스플레이(2102)는 대시 박스를 사용하여 도시되는 선택 요소로서 포함되지만, 몇몇 실시예들에서, 외부 디시플레이 디바이스(2105), 예를 들면, 헤드 마운트 입체 영상 디스플레이 디바이스는 디스플레이 디바이스 인터페이스(2103)를 통해 재생 디바이스에 결합될 수 있다.
예를 들면, 휴대 전화 프로세서가 프로세서(2108)로서 사용되고 휴대 전화가 헤드 마운트에 이미지들을 생성 및 디스플레이하는 경우, 시스템은 헤드 마운트 디바이스의 일 부분으로서 프로세서(2108), 디스플레이(2102), 및 메모리(2112)를 포함할 수 있다. 프로세서(2108), 디스플레이(2102), 및 메모리(2112)는 모두 휴대 전화의 일부일 수 있다. 시스템(2100)의 다른 실시예들에서, 프로세서(2108)는 헤드 마운팅 디바이스에 장착되고 게이밍 시스템에 결합되는 디스플레이(2105)를 갖는 XBOX 또는 PS4와 같은 게이밍 시스템의 일부일 수 있다. 프로세서(2108) 및/또는 메모리(2112)가 머리에 쓰는 디바이스에 위치되든지 그렇지 않든지는 이해될 수 있는 바와 같이 중요하지 않고, 반면에 몇몇 경우들에서, 전력, 열, 및 중량 관점으로부터 헤드기어에 프로세서(2108)를 공통 위치시키는 것이 편리할 수 있고, 이는 적어도 몇몇 경우들에서, 디스플레이를 포함하는 헤드 기어에 결합된 프로세서(2108) 및 메모리(2112)를 갖는 것이 바람직할 수 있다.
다양한 실시예들이 헤드 마운트 디스플레이(2105 또는 2102)를 고려하지만, 방법 및 장치는 3D 이미지를 지원할 수 있는 비헤드 마운트 디스플레이들과 함께 또한 사용될 수 있다. 따라서, 많은 실시예들에서, 시스템(2100)은 헤드 마운트 디스플레이를 포함하지만, 이는 비헤드 마운트 디스플레이에 의해 또한 구현될 수 있다.
메모리(21112)는 다양한 모듈들, 예를 들면, 프로세서(2108)에 의해 실행될 때, 본 발명에 따라 동작들을 수행하도록 콘텐트 재생 시스템(2100)을 제어하는 루틴들을 포함한다. 메모리(2112)는 모듈들의 어셈블리(2114), 예를 들면, 소프트웨어 모듈들의 어셈블리, 및 데이터/정보(2116)를 포함한다.
데이터 정보(2116)는: 제 1 후방 뷰 부분(2118)에 대응하는 수신된 이미지들, 제 2 후방 뷰 부분(2120)에 대응하는 수신된 이미지들, 하늘 뷰 부분(2112)에 대응하는 수신된 이미지들, 및 지상 뷰 부분(2124)에 대응하는 수신된 이미지들, 모두 중 하나 이상을 포함한다. 후방 뷰 부분(2118 또는 2120)에 대응하는 예시적인 수신된 이미지들은, 예를 들면, 서있는 청중 또는 관객의 이미지, 앉아있는 청중 또는 관객의 이미지, 상이한 가시적 광고를 갖는 이미지들, 응원하는 관중의 이미지들, 등을 포함한다. 하늘 뷰에 대응하는 예시적인 수신된 이미지들은, 예를 들면, 깨끗한 하늘, 상이한 구름 패턴들, 상이한 시간에 대응하는 상이한 어두움의 정도들, 등을 포함한다. 데이터 정보(2116)는: 제 1 후방 뷰 부분(2130)에 대응하는 제어 정보, 제 2 후방 뷰 부분(2132)에 대응하는 수신된 제어 정보, 하늘 뷰 부분(2134)에 대응하는 수신된 제어 정보, 및 지상 뷰 부분(2136)에 대응하는 수신된 제어 정보, 모두 또는 하나 이상을 추가로 포함한다. 데이터 정보(2116)는 결정된 현재 뷰어 머리 위치(2126), 결정된 현재 시야(2128), 예를 들면 정면 뷰 부분에 대응하는 오른쪽 눈 이미지 및 왼쪽 눈 이미지의 쌍들을 포함하는 수신딘 제 1 콘텐트 스트림(2128), 예를 들면, 합성된 이미지(들)(2140) 및 생성된 출력 이미지들(2142)을 조합하기 위해 이용 가능한 적어도 몇몇 수신된 콘텐트가 존재하는 현재 시야에 대응하는 출력 이미지들(2138)을 생성할 때 사용될 뷰 부분들의 결정된 세트를 추가로 포함한다. 생성된 출력 이미지들(2142). 생성된 출력 이미지들은 제 1, 예를 들면, 전방 뷰 부분에 대응하는 제 1 콘텐트 스트림으로부터 조합된 이미지 콘텐트를 포함하고, 예를 들면, 후방 뷰 부분, 하늘 부분, 또는 지상 부분으로부터 수신된 저장된 이미지의 일 부분을 포함하고, 및/또는 합성된 이미지 또는 합성된 이미지의 일 부분을 포함하는 생성된 출력 이미지를 포함할 수 있고, 때때로 상기 생성된 출력 이미지를 포함한다.
도 22는 일 예시적인 실시예에 따라 도 8의 시스템(800) 또는 도 21의 일 예시적인 콘텐트 재생 시스템(2100)에 포함될 수 있는 모듈들(2200)의 어셈블리의 도면이다. 모듈들(2200)의 어셈블리에서 모듈들은 프로세서(2108) 내하드웨어에서, 예를 들면, 개별적인 회로들로서 완전히 구현될 수 있고, 몇몇 실시예들에서, 그렇게 구현된다. 모듈들(2200)의 어셈블리에서 모듈들은 모듈들의 어셈블리(2115) 내 하드웨어에서, 예를 들면, 상이한 모듈들에 대응하는 개별적인 회로들로서 완전히 구현될 수 있고, 몇몇 실시예들에서 그렇게 구현된다. 다른 실시예들에서, 모듈들의 일부는 프로세서(2108)의 외부에 및 그에 결합된 모듈들의 어셈블리(2115) 내 회로들로서 구현되는 다른 모듈들을 갖는 프로세서(2108) 내, 예를 들면, 회로들로서 구현된다. 이해되는 바와 같이, 프로세서상의 모듈들 및/또는 프로세서 외부에 있는 몇몇 모듈들을 갖는 통합의 레벨은 설계 선택 중 하나일 수 있다.
대안적으로, 회로들로서 구현되기보다는, 모듈들 모두 또는 그의 일부는 소프트웨어에서 구현될 수 있고 시스템(2100)의 메모리(2112)에 저장될 수 있고, 모듈들이 프로세서, 예를 들면, 프로세서(2108)에 의해 실행될 때, 모듈들은 모듈들에 대응하는 기능들을 수행하기 위해 시스템(2100)의 동작을 제어한다. 몇몇 이러한 실시예들에서, 모듈들의 어셈블리(2200)는 모듈들의 어셈블리(2114)로서 메모리(2112)에 포함된다. 또 다른 실시예들에서, 모듈들의 어셈블리(2200)의 다양한 모듈들은 하드웨어 및 소프트웨어의 조합으로서 구현되고, 예를 들면, 프로세서의 외부의 다른 회로는 소프트웨어 제어 하에서 모듈들의 기능의 일 부분을 수행하도록 동작하는 프로세서(2108)에 입력을 제공한다. 단일 프로세서, 예를 들면, 컴퓨터로서 도 21 실시예에서 도시되지만, 프로세서(2108)는 하나 이상의 프로세서들, 예를 들면, 컴퓨터들로서 구현될 수 있다는 것이 이해되어야 한다.
소프트웨어에서 구현될 때, 모듈들은, 프로세서(2108)에 의해 실행될 때, 프로세서(2108)가 모듈에 대응하는 기능을 수행하도록 구성하는 코드를 포함한다. 모듈들의 어셈블리(2200)가 메모리(2112)에 저장되는 실시예들에서, 메모리(2112)는, 적어도 하나의 컴퓨터, 예를 들면, 프로세서(2108)가 모듈들이 대응하는 기능들을 구현하게 하기 위한 코드, 예를 들면, 각각의 모듈에 대한 개별적인 코드를 포함하는 컴퓨터 판독 가능한 매체를 포함하는 컴퓨터 프로그램 제품이다.
완전하게 하드웨어 기반 또는 완전하게 소프트웨어 기반 모듈들이 사용될 수 있다. 그러나, 소프트웨어 및 하드웨어의 임의의 조합, 예를 들면, 회로 구현된 모듈들이 기능들을 구현하기 위해 사용될 수 있는 것이 이해되어야 한다. 이해되는 바와 같이, 도 22에 도시된 모듈들은 도 20의 플로차트(2000)의 방법에 도시 및/또는 기술된 대응하는 단계들의 기능들을 수행하도록 시스템(2100) 또는 프로세서(2108)와 같은 그 내부의 요소들을 제어 및/또는 구성한다. 따라서, 모듈들의 어셈블리(2200)는 도 20의 하나 이상의 단계들에 대응하는 기능들을 수행하는 다양한 모듈들을 포함한다.
모듈들의 어셈블리(2200)는 뷰어 머리 위치 결정 모듈(2202), 현재 시야 결정 모듈(2204), 콘텐트 스트림 선택 모듈(2206), 콘텐트 스트림 수신 모듈(2208), 이미지 수신 모듈(2210), 수신된 이미지 저장 모듈(2212), 제어 정보 수신 모듈(2214), 출력 이미지 생성 모듈(2216), 출력 모듈(2242), 디스플레이 모듈(2244), 및 제어 루틴들(2246)을 포함한다.
뷰어 머리 위치 결정 모듈(2202)은 뷰어의 머리 위치를 결정하도록 구성되고, 상기 머리 위치는 현재 시야에 대응한다. 현재 시야 결정 모듈(2204)은 상기 결정된 머리 위치에 기초하여 상기 뷰어의 현재 시야를 결정하도록 구성된다.
콘텐트 스트림 선택 모듈(2206)은 예를 들면, 사용자, 예를 들면 뷰어, 입력에 기초하여 복수의 대안적인 콘텐트 스트림들 중에서, 콘텐트 스트림을 선택하도록 구성된다. 상이한 콘텐트 스트림들은 상이한 이벤트들에 대응할 수 있다. 다양한 실시예들에서, 동일한 이벤트에 대응하는 상이한 콘텐트 스트림들은, 예를 들면, 뷰어에게 대안적인 정면 뷰 시각들을 제공하기 위해 상이한 방향들로 향하는 상이한 카메라들에 대응한다. 몇몇 실시예에서, 선택될 수 있는 이미지 스트림들 중 적어도 일부는 왼쪽 눈 이미지 및 오른쪽 눈 이미지 쌍들을 포함하는 입체 영상 이미지 콘텐트를 포함한다.
콘텐트 스트림 수신 모듈(2208)은 일 실시예의 제 1 위치, 예를 들면, 전방 부분 뷰에 대응하는 콘텐트를 제공하는 제 1 콘텐트 스트림을 수신하도록 구성된다. 다양한 실시예들에서, 제 1 콘텐트 스트림에 수신된 제 1 이미지 콘텐트는 왼쪽 눈 이미지 및 오른쪽 눈 이미지의 쌍들을 포함하는 입체 영상 이미지 콘텐트이다.
이미지 수신 모듈(2210)은 하나 이상의 상이한 뷰 부분들, 예를 들면, 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분, 및 지상 뷰 부분에 대응하는 이미지들을 수신하도록 구성된다. 이미지 수신 모듈(2210)은 상기 환경의 제 2 부분에 대응하는 제 1 이미지를 수신하도록 구성된다. 몇몇 이러한 실시예들에서, 이미지 수신 모듈은 또한 환경의 상기 제 2 부분에 대응하는 하나 이상의 추가 이미지들을 수신하도록 구성되고, 상기 하나 이상의 추가 이미지들은 적어도 제 2 이미지를 포함하는 환경의 상기 제 2 부분에 대응한다. 몇몇 실시예들에서, 상기 환경의 제 2 부분은 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분, 또는 지상 뷰 부분 중 하나이다. 몇몇 실시예들에서, 상기 환경의 제 2 부분은 제 1 후방 뷰 부분 또는 제 2 후방 뷰 부분 중 하나이다. 몇몇 실시예들에서, 이미지 수신 모듈(2210)은 상기 환경의 제 3 부분에 대응하는 하나 이상의 이미지들을 수신하도록 구성된다. 몇몇 실시예들에서, 환경의 제 1 부분은 정면 뷰 부분이고 환경의 제 3 부분은 하늘 뷰 또는 지상 뷰 부분 중 하나이다.
몇몇 실시예들에서, 이미지 수신 모듈(2210)은 상기 환경의 제 1 후방 뷰 부분에 대응하는 제 1 이미지를 수신하도록 구성되고, 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 하나 이상의 추가 이미지들을 수신하도록 또한 구성되고, 상기 제 1 후방 뷰 부분에 대응하는 상기 하나 이상의 추가 이미지들은 상기 제 1 후방 뷰 부분에 대응하는 적어도 하나의 제 2 이미지를 포함한다. 몇몇 실시예들에서, 이미지 수신 모듈(2210)은 상기 환경의 제 2 후방 뷰 부분에 대응하는 제 1 이미지를 수신하도록 구성되고 상기 환경의 상기 제 2 후방 뷰 부분에 대응하는 하나 이상의 추가 이미지들을 수신하도록 또한 구성되고, 상기 제 2 후방 뷰 부분에 대응하는 상기 하나 이상의 추가 이미지들은 상기 제 2 후방 뷰 부분에 대응하는 적어도 하나의 제 2 이미지를 포함한다. 몇몇 실시예들에서, 이미지 수신 모듈(2210)은 상기 환경의 하늘 뷰 부분에 대응하는 하나 이상의 이미지들을 수신하도록 구성된다. 몇몇 실시예들에서, 이미지 수신 모듈(2210)은 상기 환경의 지상 뷰 부분에 대응하는 하나 이상의 이미지들을 수신하도록 구성된다.
수신된 이미지 저장 모듈(2212)은 수신된 이미지 저장 모듈(2212)에 의해 수신된 이미지들을 저장하도록 구성된다. 수신된 이미지 저장 모듈(2212)은 환경의 상기 제 2 부분에 대응하는 제 1 이미지를 저장하도록 구성된다. 수신된 이미지 저장 모듈(2212)은 환경의 제 2 부분에 대응하는 하나 이상의 추가 이미지들을 저장하도록 구성된다. 수신된 이미지 저장 모듈(2212)은 상기 환경의 제 3 부분에 대응하는 수신된 하나 이상의 이미지들을 저장하도록 구성된다. 다양한 실시예들에서, 수신된 이미지 저장 모듈(2212)은 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 제 1 이미지, 및 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 하나 이상의 추가 이미지들을 저장하도록 구성된다. 몇몇 실시예들에서, 수신된 이미지 저장 모듈(2212)은 상기 환경의 상기 하늘 뷰 부분에 대응하는 하나 이상의 추가 이미지들을 저장하도록 구성된다. 몇몇 실시예들에서, 수신된 이미지 저장 모듈(2212)은 상기 환경의 상기 지상 뷰 부분에 대응하는 하나 이상의 이미지들을 저장하도록 구성된다.
제어 정보 수신 모듈(2214)은 상기 환경의 제 2 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 제 1 콘텐트 스트림에 나타내진 재생 시간들에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하도록 구성된다. 다양한 실시예들에서, 제어 정보 수신 모듈(2214)은 상기 환경의 제 3 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 제 1 콘텐트 스트림에 나타내진 재생 시간들에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하도록 또한 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 환경의 제 2 부분에 대응하는 복수의 이미지들 중 어느 것이 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하도록 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 환경의 제 3 부분에 대응하는 복수의 이미지들 중 어느 것이 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하도록 구성된다.
몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 상기 환경의 상기 제 1 후방 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1콘텐트 스트림에서 재생 시간에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하도록 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 환경의 상기 제 1 후방 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하도록 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 상기 환경의 상기 제 2 후방 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에서 재생 시간에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하도록 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 환경의 상기 제 2 후방 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하도록 구성된다.
몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 상기 환경의 상기 하늘 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에서 재생 시간에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하도록 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 환경의 상기 하늘 뷰 부분에 대응하는 복수의 이미지들 중 어느 것이 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하도록 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 상기 환경의 상기 지상 뷰 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에서 재생 시간에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하도록 구성된다. 몇몇 실시예들에서, 제어 정보 수신 모듈(2214)은 환경의 상기 지상 뷰 부분에 대응하는 복수의 이미지들 중 어느 것이 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하도록 구성된다.
출력 이미지 생성 모듈(2216)은: 환경의 제 1 부분 뷰에 대응하는 제 1 콘텐트 스트림으로부터 수신된 콘텐트, 환경의 제 1 후방 뷰 부분에 대응하는 저장된 수신된 이미지, 환경의 제 2 후방 뷰 부분에 대응하는 저장된 수신된 이미지, 환경의 하늘 뷰 부분에 대응하는 저장된 수신된 이미지, 환경의 지상 뷰 부분에 대응하는 저장된 수신된 이미지, 또는 이미지가 이용 가능하지 않은 현재 시야의 일 부분에 대응하는 합성된 이미지, 중 적어도 하나에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성된다. 출력 이미지 생성 모듈(2216)은 뷰 부분 세트 결정 모듈(2218), 콘텐트 스트림 전용 결정 모듈(2220), 누락 부분 결정 모듈(2222), 이미지 합성기 모듈(2224), 및 콘텐트 스트림 출력 이미지 생성 모듈(2226), 합성된 출력 이미지 생성 모듈(2228), 출력 이미지 콘텐트 스트림 기반 생성 모듈(2230), 및 출력 이미지 비스트림 기반 생성 모듈(2236)을 포함한다.
뷰 부분 세트 결정 모듈(2218)은, 현재 시야에 기초하여, 예를 들면, 하나 이상의 출력 이미지들을 생성할 때 사용될 상기 환경의 이용 가능한 적어도 일부 이미지 콘텐트가 존재하는, 뷰 부분들의 일 세트를 결정하도록 구성된다. 몇몇 예시적인 결정된 세트들은, 예를 들면, {}, {정면 뷰 부분}, {제 1 후방 뷰 부분}, {제 2 후방 뷰 부분}, {하늘 뷰 부분}, {지상 뷰 부분}, {전방 뷰 부분, 하늘 뷰 부분}, {전방 뷰 부분, 지상 뷰 부분}, {전방 뷰 부분, 제 1 후방 뷰 부분}, {전방 뷰 부분, 제 2 후방 뷰 부분}, {전방 뷰 부분, 제 1 후방 뷰 부분, 하늘 뷰 부분}, {전방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분}, {전방 뷰 부분, 제 1 후방 뷰 부분, 지상 뷰 부분}, {전방 뷰 부분, 제 2 후방 뷰 부분, 지상 뷰 부분}, {제 1 후방 뷰 부분, 하늘 뷰 부분}, {제 1 후방 뷰 부분, 지상 뷰 부분}, {제 1 후방 뷰 부분, 제 2 후방 뷰 부분}, {제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분}, {제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 지상 뷰 부분}, {제 2 후방 뷰 부분, 하늘 뷰 부분}, 및 {제 2 후방 뷰 부분, 지상 뷰 부분}을 포함한다.
콘텐트 스트림 전용 결정 모듈(2220)은, 하나 이상의 출력 이미지들이 다른 부분 뷰들, 예를 들면, 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분 또는 지상 뷰 부분으로부터 저장된 수신된 이미지들, 또는 합성된 이미지에 의존해야 하지 않고 제 1 콘텐트 스트림 내 콘텐트에 기초하여 생성되는 것인지를 결정하도록 구성된다. 콘텐트 스트림 전용 결정 모듈(2220)은 결정된 세트가 제 1 콘텐트 스트림에 대응하는 제 1, 예를 들면, 전방 뷰 부분인 단일 요소를 포함하는지를 검사하고, 시야가 제 1, 예를 들면, 전방 뷰 부분 내에 있는지를 검사하도록 구성된다.
누락 부분 결정 모듈(2222)은, 이미지가 현재 시야의 일 부분에 대해 이용 가능하지 않은 것, 예를 들면, 이미지가 환경의 정면 뷰에 대응하는 제 1 콘텐트 스트림으로부터 또는 환경의 다른 부분에 대응하는 수신된 저장된 이미지로부터 이미지가 이용 가능하지 않다는 것을 결정하도록 구성된다. 이미지 합성기 모듈(2224)은 이미지가 이용 가능하지 않은 현재 시야의 상기 부분에 대해 사용될 이미지를 합성하도록 구성된다. 다양한 실시예들에서, 이미지 합성기 모듈(2224)은, 예를 들면, 경계상의 전체 일부에 대해 허용하도록, 누락 부분을 채우기 위해 필요되는 것보다 약간 큰 합성된 이미지를 생성한다.
콘텐트 스트림 출력 이미지 생성 모듈(2226)은 결정된 세트가 단지 제 1 뷰 부분만을, 예를 들면, 정면 뷰 부분만을 포함하고, 예를 들면, 콘텐트 스트림 전용 결정 모듈(2220)에 의해 결정되는, 제 1 뷰 부분 밖에 현재 시야의 부분들이 존재하지 않을 때 제 1 콘텐트 스트림으로부터 수신된 콘텐트에만 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성된다. 몇몇 실시예들에서, 콘텐트 스트림 출력 이미지 생성 모듈(2226)은 제 1 콘텐트 스트림으로부터 획득된 이미지에 대한 크롭핑 동작을 수행한다.
출력 이미지 콘텐트 스트림 기반 생성 모듈(2230)은, 예를 들면, 정면 뷰에 대응하는, 제 1 콘텐트 스트림에 포함된 적어도 몇몇 수신된 콘텐트, 및 ⅰ) 환경의 제 2 부분에 대응하는 저장된 콘텐트, 예를 들면, 제 1 후방 뷰, 제 2 후방 뷰, 하늘 뷰 또는 지상 뷰에 대응하는 저장된 이미지, 또는 ⅱ) 환경의 제 2 부분을 시뮬레이션하는 합성 이미지로서, 이미지가 이용 가능하지 않은 시야의 일 부분을 시뮬레이션하는, 상기 합성 이미지에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성된다. 환경의 제 2 부분에 대응하는 저장된 콘텐트는 예를 들면, 수신된 이미지 저장 모듈(2212)에 의해 저장된 저장 이미지이다. 합성 이미지는, 예를 들면, 모듈(2224)에 의해 생성된 이미지이다. 몇몇 실시예들에서, 출력 이미지 콘텐트 스트림 기반 생성 모듈(2230)은 수신된 이미지 선택 정보에 기초하여 환경의 상기 제 2 부분에 대응하는 이미지를 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성되는 부분으로서 선택하도록 구성된다.
출력 이미지 콘텐트 스트림 기반 생성 모듈(2230)은 생성되는 출력 이미지로 하나 이상의 합성된 이미지를 통합하도록 구성된 합성된 이미지 통합 모듈(2232)을 포함한다. 합성된 이미지 통합 모듈(2232)은, 현재 시야에 대응하는 이미지를 생성하기 위해, 수신된 이미지, 예를 들면, 제 1, 예를 들면, 수신된 제 1 콘텐트 스트림으로부터 획득된 정면 뷰 부분으로부터 수신된 이미지, 또는 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분, 또는 지상 뷰 부분 중 하나에 대응하는 저장된 수신된 이미지의 적어도 일 부분과 합성된 이미지를 조합하도록 구성된다. 저장된 이미지 통합 모듈(2134)은 하나 이상의 저장된 이미지들의 일 부분을 생성되는 출력 이미지로 통합하도록 구성된다. 출력 이미지를 생성하는 부분으로서, 모듈(2230), 모듈(2232), 및/또는 모듈(2234)은 경계 영역들에서 혼합을 수행한다. 다양한 실시예들에서, 혼합 단계는 필터링, 블러링, 휘도 변동들 및/또는 컬러 변동들을 포함한다.
출력 이미지 비스트림 기반 생성 모듈(2236)은: ⅰ) 환경의 일 부분에 대응하는 저장된 콘텐트, 예를 들면, 제 1 후방 뷰, 제 2 후방 뷰, 하늘 뷰, 또는 지상 뷰에 대응하는 저장된 이미지, 또는 ⅱ) 환경의 일 부분을 시뮬레이션하는 합성 이미지, 예를 들면 이미지가 이용가능하지 않은 시야의 일 부분을 시뮬레이션하는 합성 이미지, 중 적어도 하나에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성된다. 모듈(2236)은 현재 시야가 제 1, 예를 들면, 제 1 콘텐트 스트림에 대응하는 정면 뷰 부분에 대응하는 영역 밖에 있을 때 하나 이상의 이미지들을 생성한다. 몇몇 실시예들에서, 출력 이미지 비콘텐트 스트림 기반 생성 모듈(2236)은 수신된 이미지 선택 정보에 기초하여 환경의 상기 제 2 부분에 대응하는 이미지를, 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성되는 부분으로서 선택하도록 구성된다.
출력 이미지 비스트림 기반 생성 모듈(2236)은 하나 이상의 합성된 이미지들을 생성되는 출력 이미지로 통합하도록 구성된 합성 이미지 통합 모듈(2238)을 포함한다. 합성 이미지 통합 모듈(2238)은 현재 시야에 대응하는 이미지를 생성하기 위해, 수신된 이미지, 예를 들면, 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분, 또는 지상 뷰 부분으로부터 수신된 이미지의 적어도 일 부분과 합성된 이미지를 조합하도록 구성된다. 저장된 이미지 통합 모듈(2240)은 하나 이상의 저장된 이미지들의 일 부분을 생성되는 출력 이미지로 통합하도록 구성된다. 출력 이미지를 생성하는 부분으로서, 모듈(2236), 모듈(2232), 및/또는 모듈(2234)은 경계 영역들에서 혼합을 수행한다. 다양한 실시예들에서, 혼합은 필터링, 블러링, 휘도 변동들 및/또는 컬러 변동들을 포함한다.
출력 모듈(2242)은, 예를 들면, 출력 이미지 콘텐트 스트림 기반 생성 모듈(2130), 콘텐트 스트림 출력 이미지 생성 모듈(2130), 및 출력 이미지 비콘텐트 스트림 기반 생성 모듈(2236)에 의해 생성된, 하나 이상의 생성된 출력 이미지들을 출력하도록 구성되고, 상기 하나 이상의 출력 이미지들은 제 1 출력 이미지를 포함한다. 출력 모듈은 예를 들면, 네트워크 인터페이스(2110) 및/또는 디스플레이 디바이스 인터페이스(2103)를 통해, 제 1 출력 이미지를 출력하도록 구성된다.
디스플레이 모듈(2244)은, 예를 들면, 출력 이미지 콘텐트 스트림 기반 생성 모듈(2230), 콘텐트 스트림 출력 이미지 생성 모듈(2230), 및 출력 이미지 비콘텐트 스트림 기반 생성 모듈(2136)에 의해 생성된 하나 이상의 생성된 출력 이미지들을 디스플레이하도록 구성되고, 상기 하나 이상의 출력 이미지들은 제 1 출력 이미지를 포함한다. 디스플레이 모듈(2244)은, 예를 들면, 디스플레이(2102) 및/또는 디스플레이(2105)를 통해, 제 1 출력 이미지를 디스플레이하도록 구성된다.
제어 루틴들(2246)은 시스템(2100)의 동작을 제어하기 위한 디바이스 제어 루틴들 및 통신 루틴들을 포함한다.
일 예시적인 콘텐트 재생 시스템, 예를 들면, 본 발명에 따른, 도 21의 시스템(2100)은: 뷰어의 머리 위치를 결정하도록 구성된 뷰어 머리 위치 결정 모듈(2202)로서, 상기 머리 위치는 현재 시야에 대응하는, 상기 뷰어 머리 위치 결정 모듈(2202); 환경의 제 1 부분에 대응하는 콘텐트를 제공하는 제 1 콘텐트 스틀미을 수신하도록 구성된 콘텐트 스트림 수신 모듈; 상기 제 1 콘텐트 스트림에 포함된 적어도 일부 수신된 콘텐트 및 ⅰ) 상기 환경의 제 2 부분에 대응하는 저장된 콘텐트, 또는 ⅱ) 상기 환경의 제 2 부분에 시뮬레이션하는 합성 이미지에 기초하여 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성된 출력 이미지 콘텐트 스트림 기반 생성 모듈(2330); 및 제 1 출력 이미지를 출력하도록 구성된 출력 모듈(2242) 또는 제 1 출력 이미지를 디스플레이하도록 구성된 디스플레이 모듈(2244), 중 적어도 하나로서, 상기 제 1 출력 이미지는 하나 이상의 생성된 출력 이미지들 중 하나인, 상기 출력 모듈(2242) 또는 상기 디스플레이 모듈(2244) 중 적어도 하나를 포함한다.
몇몇 실시예들에서, 상기 콘텐트 재생 시스템(2100)은 콘텐트 디바이스(2100')이다. 몇몇 실시예들에서, 상기 콘텐트 재생 시스템(2100)은 디스플레이(2105)에 결합된 컴퓨터 시스템(2100')이다.
몇몇 실시예들에서, 시스템은: 상기 환경의 상기 제 2 부분에 대응하는 제 1 이미지를 수신하도록 구성된 이미지 수신 모듈(2210); 및 상기 환경의 상기 제 2 부분에 대응하는 상기 제 1 이미지를 저장하도록 구성된 수신된 이미지 저장 모듈(2212)을 추가로 포함한다.
다양한 실시예들에서, 상기 환경의 상기 제 2 부분의 상기 제 1 이미지는 제 1 시점에 대응하고, 상기 출력 이미지 콘텐트 스트림 기반 생성 모듈(2239)은 제 2 시점에서 캡처된 상기 제 1 콘텐트 스트림으로부터 획득된 콘텐트를 상기 제 1 시점에 대응하는 상기 제 1 이미지와 조합하도록 구성되고, 상기 제 1 및 제 2 시점들은 상이하다. 몇몇 이러한 실시예들에서, 상기 제 1 시점은 상기 제 2 시점에 선행하는 시간에 대응한다. 다양한 실시예들에서, 상기 제 1 시점은 상기 제 1 콘텐트 스트림이 캡처되는 이미지들이 포함되는 동안 실시간 이벤트의 시간에 선행한다.
몇몇 실시예들에서, 상기 이미지 수신 모듈(2210)은 상기 환경의 상기 제 2 부분에 대응하는 하나 이상의 추가 이미지들을 수신하도록 또한 구성되고, 상기 환경의 상기 제 2 부분에 대응하는 상기 하나 이상의 추가 이미지들은 적어도 제 2 이미지를 포함한다.
다양한 실시예들에서, 시스템은: 상기 환경의 상기 제 2 부분에 대응하는 복수의 이전에 전달된 이미지들 중 어느 것이 상기 제 1 콘텐트 스트림에 나타내진 재생 시간들에 관하여 측정되는 재생 시간 동안 디스플레이되어야 하는지를 나타내는 제어 정보를 수신하도록 구성된 제어 정보 수신 모듈(2214)을 추가로 포함한다.
몇몇 실시예들에서, 상기 환경의 상기 제 2 부분은 제 1 후방 뷰 부분, 제 2 후방 뷰 부분, 하늘 뷰 부분 또는 지상 뷰 부분 중 하나이다. 몇몇 이러한 실시예들에서, 상기 이미지 수신 모듈(2210)은 상기 환경의 제 3 부분에 대응하는 하나 이상의 이미지들을 수신하도록 또한 구성된다.
몇몇 실시예들에서, 상기 환경의 상기 제 1 부분은 정면 뷰 부분이고; 상기 제 3 부분은 하늘 뷰 또는 지상 뷰 부분 중 하나이고, 이미지들은 상기 제 1, 제 2, 및 제 3 부분들에 대응하여 상이한 레이트들에서 수신되고, 더 많은 이미지들이 상기 제 2 부분보다 상기 제 1 부분에 대응하는 이벤트에 대해서 수신된다.
몇몇 실시예들에서, 상기 제 1 부분에 대응하는 상기 콘텐트는 이벤트가 진행중인 동안 상기 재생 디바이스로 캡처 및 스트리밍되는 실시간 콘텐트를 포함하고; 상기 제 2 및 제 3 부분들에 대응하는 상기 이미지들에 대응하는 상기 콘텐트는 비실시간 이미지들이다. 몇몇 이러한 실시예들에서, 상기 제어 정보 수신 모듈(2214)은 또한 환경의 상기 제 2 부분에 대응하는 복수의 이미지들 중 어느 것이 상기 이벤트의 일 부분 동안 사용되어야 하는지를 나타내는 이미지 선택 정보를 수신하도록 구성되고; 상기 출력 이미지 콘텐트 스트림 기반 생성 모듈(2230)은 수신된 이미지 선택 정보에 기초하여 환경의 상기 제 2 부분에 대응하는 이미지를 현재 시야에 대응하는 하나 이상의 출력 이미지들을 생성하도록 구성된 부분으로서 선택하도록 구성된다.
다양한 실시예들에서, 시스템은 이미지가 상기 시야의 일 부분에 대해 이용 가능하지 않다는 것을 결정하도록 구성된 누락 부분 결정 모듈(2222); 이미지가 이용 가능하지 않은 상기 시야의 상기 부분에 대해 사용될 이미지를 합성하도록 구성된 이미지 합성기 모듈(2224); 및 현재 시야에 대응하는 이미지를 생성하기 위해 수신된 이미지의 적어도 일 부분과 합성된 이미지를 조합하도록 구성된 합성 이미지 통합 모듈(2232)를 추가로 포함한다.
다양한 실시예들에서, 상기 제 1 이미지 콘텐트는 왼쪽 눈 이미지 및 오른족 눈 이미지를 포함하는 입체 영상 이미지 콘텐트이다.
몇몇 실시예들에서, 모듈들의 어셈블리(2200)는, 예를 들면, 도 8에 도시된 다른 모듈들에 추가하여, 도 8의 콘텐트 재생 시스템(800)에 포함된다. 모듈들의 어셈블리(2200) 내 모듈들은 메모리(812)에, 프로세서(808)에, 및/또는 시스템(800) 내 버스(809)에 결합된 프로세서(808)의 외부의 하드웨어 모듈들로서 포함될 수 있다.
도 23은 몇몇 실시예들에 따라 재생 시스템(1900)에서 사용될 수 있는 예시적인 스트림 선택 모듈(1938)을 도시하는 도면(2300)이다.
도 24는 도 23의 스트림 선택 모듈의 일부로서 또는 개별 모듈로서 구현될 수 있는 예시적인 스트림 우선 순위화 모듈(2306)을 도시하는 도면(2400)이다.
몇몇 실시예들은 입체 영상 비디오를 인코딩 및 압축하도록 컴퓨터 또는 다른 디바이스를 제어하기 위해 소프트웨어 명령들의 일 세트, 예를 들면, 컴퓨터 실행 가능한 명령들을 구현하는 비일시적 컴퓨터 판독 가능한 매체에 관한 것이다. 다른 실시예들은 플레이어 단부상에 비디오를 디코딩 및 압축 해제하도록 컴퓨터 또는 다른 디바이스를 제어하기 위해 소프트웨어 명령들의 일 세트, 예를 들면, 컴퓨터 실행 가능한 명령들을 구현하는 컴퓨터 판독 가능한 매체에 관한 것이다. 인코딩 및 압축이 가능한 개별 동작들로서 언급되지만, 인코딩은 압축을 수행하기 위해 사용될 수 있고 따라서 인코딩은 일부에서 압축을 포함할 수 있다는 것이 이해되어야 한다. 유사하게, 디코딩은 압축 해제를 포함할 수 있다.
다양한 실시예들의 기술들은 소프트웨어, 하드웨어, 및/또는 소프트웨어 및 하드웨어의 조합을 사용하여 구현될 수 있다. 다양한 실시예들은 장치, 예를 들면, 이미지 데이터 처리 시스템에 관한 것이다. 다양한 실시예들은 또한 방법들, 예를 들면, 이미지 데이터를 처리하는 방법들에 관한 것이다. 다양한 실시예들은 또한, 비일시적 머신, 예를 들면, 컴퓨터, 판독 가능한 매체, 예를 들면, 기계가 방법의 하나 이상의 단계들을 구현하도록 제어하기 위한 기계 판독 가능한 명령들을 포함하는, ROM, RAM, CD들, 하드 디스크들, 등에 관한 것이다.
본 발명의 다양한 특징들은 모듈들을 사용하여 구현된다. 이러한 모듈들은 소프트웨어 모듈들로서 구현될 수 있고, 몇몇 실시예들에서 그렇게 구현된다. 다른 실시예들에서, 모듈들은 하드웨어에서 구현된다. 또 다른 실시예들에서, 모듈들은 소프트웨어 및 하드웨어의 조합을 사용하여 구현된다. 몇몇 실시예들에서, 모듈들은 개별적인 회로들로서 구현되고, 각각의 모둘은 모듈이 대응하는 기능을 수행하기 위해 회로로서 구현된다. 매우 다양한 실시예들이 상이한 모듈들이 예를 들면, 일부는 하드웨어에서, 일부는 소프트웨어에서, 일부는 하드웨어 및 소프트웨어의 조합을 사용하여 상이하게 구현되는 몇몇 실시예들을 포함하여 고려된다. 루틴들 및/또는 서브루틴들, 또는 이러한 루틴들에 의해 수행된 단계들의 일부가 범용 프로세서상에 실행된 소프트웨어와 반대되는 것으로서 전용 하드웨어에서 실행될 수 있다는 것이 또한 주의되어야 한다. 이러한 실시예들은 본 발명의 범위 내에 있다. 상기 기술된 방법들 또는 방법 단계들 중 다수는 상기 기술된 방법들 모두 또는 그의 일 부분들을 구현하도록, 기계, 예를 들면 추가의 하드웨어를 갖거나 갖지 않는 범용 컴퓨터를 제어하기 위해, 메모리 디바이스, 예를 들면, RAM, 플로피 디스크, 등과 같은 기계 판독 가능한 매체에 포함된 소프트웨어와 같은 기계 실행 가능한 명령들을 사용하여 구현될 수 있다. 따라서, 여러가지 중에서, 본 발명은 기계, 예를 들면, 프로세서 및 연관된 하드웨어가 상기 기술된 방법(들)의 단계들 중 하나 이상을 수행하게 하기 위한 기계 실행 가능한 명령들을 포함하는 기계 판독 가능한 매체에 관한 것이다.
상기에 기술된 다양한 실시예들의 방법들 및 장치에 대한 다수의 추가 변동들은 상기 기술을 고려하여 당업자에게 명백할 것이다. 이러한 변동들은 범위 내에서 고려되는 것이다.