-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #53 from 5G-MAG/xr-media-integration
Initial documentation for XR media integration in 5G
- Loading branch information
Showing
21 changed files
with
1,058 additions
and
20 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
import pandas as pd | ||
from collections import defaultdict | ||
import markdown | ||
import sys | ||
from pathlib import Path | ||
|
||
# columns = [ | ||
# "Extension", | ||
# "Property", | ||
# "Status", | ||
# "Requirement", | ||
# "Test content" ] | ||
# #, "notes" ] | ||
|
||
class StringConverter(dict): | ||
def __contains__(self, item): | ||
return True | ||
|
||
def __getitem__(self, item): | ||
return str | ||
|
||
def get(self, default=None): | ||
return str | ||
|
||
def main(fp, csv2md, md2html): | ||
|
||
mdfp = fp.with_suffix('.md') | ||
htmlfp = fp.with_suffix('.html') | ||
|
||
# df = pd.read_csv(fp, usecols=columns, converters=StringConverter()) | ||
|
||
if csv2md: | ||
df = pd.read_csv(fp, converters=StringConverter()) | ||
with open(mdfp, 'w') as md: | ||
df.to_markdown(buf=md, index=False) | ||
|
||
if md2html: | ||
with open(htmlfp, 'w') as fo: | ||
with open(mdfp, 'r') as md: | ||
data = md.read() | ||
data = data.replace("[ ]", "☐") | ||
data = data.replace("[x]", "☑") | ||
html = markdown.markdown(data, extensions=['markdown.extensions.tables']) | ||
fo.write(html) | ||
|
||
if __name__ == "__main__": | ||
|
||
assert len(sys.argv) > 1 | ||
fp = Path(sys.argv[1]) | ||
assert fp.exists() | ||
|
||
if len(sys.argv) == 2: | ||
csv2md = True | ||
md2html = True | ||
else: | ||
csv2md = 'csv2md' in sys.argv | ||
md2html = 'md2html' in sys.argv | ||
|
||
|
||
main(fp, csv2md, md2html) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+25.8 KB
pages/xr-media-integration-in-5g/images/rt-xr-presentation-engine.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+189 KB
pages/xr-media-integration-in-5g/images/unity-player-default-scene-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+37.1 KB
pages/xr-media-integration-in-5g/images/xr-player-usage-drag-n-drop-scene.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+37 KB
pages/xr-media-integration-in-5g/images/xr-player-usage-locate-content.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
69 changes: 69 additions & 0 deletions
69
pages/xr-media-integration-in-5g/tutorials/xr-player-overview.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
--- | ||
layout: default | ||
title: XR Player project overview | ||
parent: Tutorials | ||
grand_parent: XR Media Integration in 5G | ||
has_children: false | ||
nav_order: 0 | ||
--- | ||
|
||
# XR Player : project overview | ||
|
||
## Scene description format | ||
|
||
The Scene Description format standardized by [ISO/IEC JTC 1/SC29/WG03](https://www.iso.org/committee/45316.html) MPEG Systems in [ISO/IEC 23090-14](https://www.iso.org/standard/86439.html) specifies a framework enabling the composition of 3D scenes for immersive experiences, anchoring 3D assets in the real world, facilitating rich interactivity, supporting real-time media delivery. | ||
|
||
It establishes interfaces like the Media Access Function (MAF) API to enable cross-platform interoperability, ensuring efficient retrieval and processing of media data, by decoupling the Presentation Engine from media pipeline. | ||
|
||
|
||
## XR Player implementation | ||
|
||
![Alt text](../images/rt-xr-overview.jpg) | ||
|
||
The XR Player is implemented as a Unity3D project: [rt-xr-unity-player](https://github.com/5G-MAG/rt-xr-unity-player). | ||
|
||
The unity project builds on the following dependencies: | ||
* [rt-xr-glTFast](https://github.com/5G-MAG/rt-xr-gITFast): parsing and instantiating of 3D scenes in Unity. | ||
* [rt-xr-maf-native](https://github.com/5G-MAG/rt-xr-maf-native): a C++ Media Access Functions (MAF) API implementation, extensible with custom media pipeline plugins. | ||
|
||
|
||
|
||
|
||
### Test content | ||
|
||
* [rt-xr-content](https://github.com/5G-MAG/rt-xr-content): test content implementing the scene description format. | ||
|
||
|
||
See the [features page](features) for implementation status of the scene description format. | ||
|
||
|
||
## MAF API & Media pipelines | ||
|
||
The Media Access Functions (MAF) API is specified in ISO/IEC 23090-14:2023. | ||
|
||
It's purpose is to decouple the presentation engine from media pipeline management, it allows the Presentation Engine to: | ||
- pass View informations to the media pipelines (eg. to optimize fetching media ) | ||
- read media buffers updated by the media pipelines | ||
|
||
|
||
The MAF API is protocol and codec agnostic, media can be fetched a remote URL. | ||
|
||
|
||
|
||
### Media player implementation | ||
|
||
#### MediaPlayer component | ||
|
||
The MediaPlayer component is part of the Presentation Engine layer: | ||
|
||
![Alt text](../images/rt-xr-presentation-engine.jpg) | ||
|
||
The MediaPlayer component uses the MAF API implemented by Media Pipelines: | ||
|
||
![Alt text](../images/rt-xr-maf-implementation.jpg) | ||
|
||
The XR Player uses a C++ implementation of the MAF API. It uses a factory / plugin pattern to allow development of media pipelines. | ||
|
||
The mechanism by which a media pipeline is instantiated and buffers initialized, is out of the scope of ISO/IEC 23090-14. | ||
|
||
For more on the MAF API implementation, review the [rt-xr-maf-native](https://github.com/5G-MAG/rt-xr-maf-native) repository. |
81 changes: 81 additions & 0 deletions
81
pages/xr-media-integration-in-5g/tutorials/xr-player-win11-openXR.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
--- | ||
layout: default | ||
title: Using the XR Player on windows | ||
parent: Tutorials | ||
grand_parent: XR Media Integration in 5G | ||
has_children: false | ||
nav_order: 0 | ||
--- | ||
|
||
The XR Player Windows release supports rendering on an HMD by default if an OpenXR runtime is installed. | ||
|
||
This tutorial covers usage of XR Player on Windows, rendering on a Meta Quest HMD using Meta Quest Link. | ||
|
||
When no OpenXR runtime is detected, the player runs in a regular desktop window. | ||
|
||
|
||
## Requirements | ||
|
||
- Windows 11 | ||
|
||
In order to support Meta Quest link: | ||
|
||
- a Meta Quest headset ( 2, 3 and Pro are confirmed to work) | ||
- a machine compatible with the [Meta Quest link requirements](https://www.meta.com/en-gb/help/quest/articles/headsets-and-accessories/oculus-link/requirements-quest-link/) | ||
- the [Oculus PC app for Meta Quest Link](https://www.meta.com/en-gb/help/quest/articles/headsets-and-accessories/oculus-rift-s/install-app-for-link/) | ||
|
||
|
||
### Meta Quest Link support | ||
|
||
- Follow the instructions on [Meta's support article](https://www.meta.com/en-gb/help/quest/articles/headsets-and-accessories/oculus-rift-s/install-app-for-link/). The step by step [developer tutorial](https://developer.oculus.com/documentation/unity/unity-link/) also provides some usefull screenshots if you aren't familiar with the Meta Quest platform - note that beta features aren't needed. | ||
- Meta Quest Link supports a USB mode as well as a [WiFi](https://www.meta.com/en-gb/help/quest/articles/headsets-and-accessories/oculus-link/connect-with-air-link/) mode. | ||
- [Adjust graphics perfomance settings](https://www.meta.com/en-gb/help/quest/articles/headsets-and-accessories/oculus-link/link-performance-preferences/) depending on your computer's configuration. | ||
|
||
|
||
## Getting Started | ||
|
||
**1. Get the player** | ||
|
||
Download the [latest release](https://github.com/5G-MAG/rt-xr-unity-player/tags) or [build](https://github.com/5G-MAG/rt-xr-unity-player?tab=readme-ov-file#build) the XR player. | ||
|
||
|
||
**2. Get the test content** | ||
|
||
[Download the latest test content](https://github.com/5G-MAG/rt-xr-content/archive/refs/heads/main.zip) from github's rt-xr-content repository. | ||
|
||
**3. Locate the test content to the player directory** | ||
|
||
By default the player expects the `rt-xr-content` directory to be located next to the executable so that double clicking on `rt-xr-player.exe` launches without further configuration. | ||
|
||
![XR player default content location](../images/xr-player-usage-locate-content.png) | ||
|
||
**4. [Start the Meta Quest Link Mode](#meta-quest-link-support) on the headset** | ||
|
||
**5. Launch the `rt-xr-player.exe` application** | ||
|
||
|
||
### Command line usage | ||
|
||
Launching custom scenes is normaly achieved from the command line, typically PowerShell on windows. | ||
In that case the content can be located anywhere on the file system or downloaded over http: | ||
|
||
#### Launch a scene available over http | ||
|
||
![http scene](../images/xr-player-usage-cli-http.png) | ||
|
||
|
||
### Using a custom launcher shortcut | ||
|
||
If you downloaded an XR Player release, a drag and drop launcher is provided. | ||
|
||
Such a launcher is just create a file with a `.bat` extension and the following content: | ||
``` | ||
%~dp0rt-xr-player.exe --gltf "%1" | ||
pause | ||
``` | ||
|
||
> "%1" means the dropped argument, and could be replaced by an URI. | ||
|
||
![Drag and drop scene](../images/xr-player-usage-drag-n-drop-scene.png) | ||
|