Logo

A Database Management System for Virtual Reality Video

Read the Paper
 
Get the Code
 

About LightDB

LightDB is a database management system (DBMS) designed to efficiently ingest, store, and deliver virtual reality (VR) content at scale. LightDB currently targets both live and prerecorded spherical panoramic (a.k.a. 360°) VR videos. It persists content as a multidimensional array that utilizes both dense (e.g., space and time) and sparse (e.g., bit-rate) dimensions. LightDB uses orientation prediction to reduce data transfer by degrading out-of-view portions of the video. Content delivered through LightDB requires up to 60% less bandwidth than existing methods and scales to many concurrent connections.

LightDB builds on recent work in multidimensional array processing and develops new techniques for VR data storage and retrieval and near real-time in memory processing of VR videos. Our system combines the state of the art in array-oriented systems (e.g., efficient multidimensional array representation, tiling, prefetching) with the ability to apply recently-introduced optimizations by the multimedia (e.g., motion-constrained tile sets) and machine learning communities (e.g., path prediction). LightDB reduces bandwidth (and thus also power) consumption on client devices, scales to many concurrent connections, and offers an enhanced viewer experience over congested network connections.

People

Using LightDB

LightDB support declarative queries over temporal light fields (TLF). To obtain a reference to a TLF, scan it from the internal LightDB catalog or load it from disk:

    tlf = Scan("internal-tlf")
    tlf2 = Load("~/video.mp4")

Each of the algebraic operators described in section 3.2 of the LightDB paper may be applied to a TLF. For example, to apply the predictive 360° query described in section 3.5, a user would write the following query:

    query = Scan("internal-tlf")
              .Partition(Dimension::Theta, degrees{90})
              .Partition(Dimension::Phi, degrees{90})
              .Subquery(lambda tlf: tlf.Encode(Codec.hevc, bitrate=b))
              .Store("result")
    Coordinator().execute(query)

Note that this query performs the workload presented in our SIGMOD’16 VideoCloud demonstration and discussed in the video shown below. Note that LightDB’s architecture and functionality now extend far beyond this use case; see the paper for more details.

LightDB exposes both a C++ and Python API. Please see the repository for more details.

Questions?

Open an issue in our source repository with any questions or issues you might have.

Publications

Acknowledgments

This work is supported by the National Science Foundation through NSF grants CCF-1703051, IIS-1247469, IIS-1546083, CCF-1518703, and CNS-1563788; DARPA award FA8750-16-2-0032; DOE award DE-SC0016260; a Google Faculty Research Award; an award from the University of Washington Reality Lab; and gifts from the Intel Science and Technology Center for Big Data, Intel Corporation, Adobe, Amazon, Facebook, Huawei and Google.