Methods and apparatus for streaming content
Methods and apparatus for streaming content corresponding to a 360 degree field of view are described. The methods and apparatus of the present invention are well suited for use with 3D immersion systems and/or head mounted display which allow a user to turn his or her head and see a corresponding scene portion. The methods and apparatus can support real or near real time streaming of 3D image content corresponding to a 360 degree field of view.
1 . A method of delivering content corresponding to a 360 degree scene, the method comprising:
partitioning the 360 degree scene, at a content source, into a plurality of scene portions;
generating a plurality of encoded versions, at the content source, of each of the plurality of scene portions;
transmitting a request, from a playback device to the content source, for image data associated with the 360 degree scene, wherein the request comprises a head position of a user at the playback device corresponding to a first portion of the 360 degree scene; responsive to the request:
transmitting, from the content source to the playback device, a combination of encoded versions comprising encoded versions of the first portion of the 360 degree scene, encoded versions of scene portions adjacent to the first portion, and encoded versions of scene portions that are not adjacent to either the first portion or the scene portions adjacent to the first portion, to initialize scene memory at the playback device;
selecting a first encoded version of a first portion of the plurality of scene portions of the 360 degree scene, wherein the first portion of the 360 degree scene is determined based on the head position of the user, and wherein the first encoded version of the first portion is selected from a plurality of encoded versions of the first portion based on an available data rate for transmitting content between the playback device and a content source, the first encoded version of the first portion being associated with a first bit rate;
selecting a first encoded version of a second portion of the plurality of scene portions of the 360 degree scene from a plurality of encoded versions of the second portion, wherein the first encoded version of the second portion is associated with a second bit rate lower than the first bit rate; and
presenting the first encoded version of the first encoded portion and the first encoded version of the second encoded portion at the playback device.
2 . The method of claim 1 , wherein the first portion comprises a first partition of the 360 degree scene and the second portion comprises a second partition of the 360 degree scene different than the first partition.
3 . The method of claim 2 , wherein the plurality of encoded versions of the first portion each comprises the first portion encoded at different bit rates.
4 . The method of claim 2 , wherein the first partition and the second partition are generated by a partitioning module partitioning the 360 degree scene into a plurality of partitions comprising the first partition and the second partition.
5 . The method of claim 1 , wherein the first portion and the second portion comprise a subset of the 360 degree scene.
6 . The method of claim 1 , wherein the available data rate is determined based on a supported data rate of the playback device.
7 . The method of claim 6 , wherein the available data rate is further determined based on network traffic measurements.
8 . A non-transitory computer readable medium comprising computer readable code for delivering content corresponding to a 360 degree scene, the computer readable code executable by one or more processors to:
partition the 360 degree scene, at a content source, into a plurality of scene portions;
generate a plurality of encoded versions, at the content source, of each of the plurality of scene portions;
transmit a request, from a playback device to the content source, for image data associated with the 360 degree scene, wherein the request comprises a head position of a user at the playback device corresponding to a first portion of the 360 degree scene;
responsive to the request:
transmit, from the content source to the playback device, a combination of encoded versions comprising encoded versions of the first portion of the 360 degree scene, encoded versions of scene portions adjacent to the first portion, and encoded versions of scene portions that are not adjacent to either the first portion or the scene portions adjacent to the first portion, to initialize scene memory at the playback device;
select a first encoded version of a first portion of the 360 degree scene from among a plurality of versions of the first portion of the plurality of scene portions of the 360 degree scene each corresponding to a different bit rate, wherein the first portion of the 360 degree scene is selected based on the head position of the user, and an available data rate for transmitting content between the playback device and a content source, the first encoded version of the first portion being associated with a first bit rate;
select a first encoded version of a second portion of the plurality of scene portions of the 360 degree scene from a plurality of encoded versions of the second portion each corresponding to a different bit rate, wherein the first encoded version of the second portion is associated with a second bit rate lower than the first bit rate; and
present the first encoded version of the first encoded portion and the first encoded version of the second encoded portion at the playback device.
9 . The non-transitory computer readable medium of claim 8 , wherein the first portion comprises a first partition of the 360 degree scene and the second portion comprises a second partition of the 360 degree scene different than the first partition.
10 . The non-transitory computer readable medium of claim 9 , wherein the first encoded version of the first portion is selected from among a plurality of encoded versions for the first portion each comprising the first portion and encoded at different bit rates.
11 . The non-transitory computer readable medium of claim 9 , wherein the first partition and the second partition are generated by a partitioning module partitioning the 360 degree scene into a plurality of partitions comprising the first partition and the second partition.
12 . The non-transitory computer readable medium of claim 8 , wherein the first portion and the second portion comprise a subset of the 360 degree scene.
13 . The non-transitory computer readable medium of claim 8 , wherein the available data rate is determined based on a supported data rate of the playback device.
14 . The non-transitory computer readable medium of claim 13 , wherein the available data rate is further determined based on network traffic measurements.
15 . A system comprising:
one or more processors; and one or more computer readable media comprising computer readable code for delivering content corresponding to a 360 degree scene, the computer readable code executable by the one or more processors to cause the system to: partitioning the 360 degree scene, at a content source, into a plurality of scene portions; generating a plurality of encoded versions, at the content source, of each of the plurality of scene portions; transmitting a request, from a playback device to the content source, for image data associated with the 360 degree scene, wherein the request comprises a head position of a user at the playback device corresponding to a first portion of the 360 degree scene; responsive to the request: transmit, from the content source to the playback device, a combination of encoded versions comprising encoded versions of the first portion of the 360 degree scene, encoded versions of scene portions adjacent to the first portion, and encoded versions of scene portions that are not adjacent to either the first portion or the scene portions adjacent to the first portion, to initialize scene memory at the playback device; select a first encoded version of a first portion of the plurality of scene portions of the 360 degree scene from among a plurality of versions of the first portion of the 360 degree scene each corresponding to a different bit rate, wherein the first portion of the 360 degree scene is selected based on the head position of the user, and an available data rate for transmitting content between the playback device and a content source, the first encoded version of the first portion being associated with a first bit rate; select a first encoded version of a second portion of the plurality of scene portions of the 360 degree scene from a plurality of encoded versions of the second portion each corresponding to a different bit rate, wherein the first encoded version of the second portion is associated with a second bit rate lower than the first bit rate; and present the first encoded version of the first encoded portion and the first encoded version of the second encoded portion at the playback device.
16 . The system of claim 15 , wherein the first portion comprises a first partition of the 360 degree scene and the second portion comprises a second partition of the 360 degree scene different than the first partition.
17 . The system of claim 16 , wherein the first encoded version of the first portion is selected from among a plurality of encoded versions for the first portion each comprising the first portion and encoded at different bit rates.
18 . The system of claim 16 , wherein the first partition and the second partition are generated by a partitioning module partitioning the 360 degree scene into a plurality of partitions comprising the first partition and the second partition.
19 . The system of claim 15 , wherein the first portion and the second portion comprise a subset of the 360 degree scene.
20 . The system of claim 15 , wherein the available data rate is determined based on a supported data rate of the playback device.