summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsyeopite <70992037+syeopite@users.noreply.github.com>2021-09-10 07:42:39 +0000
committerGitHub <noreply@github.com>2021-09-10 07:42:39 +0000
commit50c8afb525429dcdb5a9b9bb4cf798ee9f62da2a (patch)
tree9d8159cc3dbd8f7d75966f69befa9b8ffe69099d
parenta539de4f9729594bc2a8a18cc9eed642582b7d67 (diff)
downloadinvidious-50c8afb525429dcdb5a9b9bb4cf798ee9f62da2a.tar.gz
invidious-50c8afb525429dcdb5a9b9bb4cf798ee9f62da2a.tar.bz2
invidious-50c8afb525429dcdb5a9b9bb4cf798ee9f62da2a.zip
Handle equirectangular projections for VR (#2379)
-rw-r--r--assets/js/player.js7
-rw-r--r--src/invidious/videos.cr7
-rw-r--r--src/invidious/views/watch.ecr3
3 files changed, 14 insertions, 3 deletions
diff --git a/assets/js/player.js b/assets/js/player.js
index 0de18d92..a8a75f6e 100644
--- a/assets/js/player.js
+++ b/assets/js/player.js
@@ -151,7 +151,12 @@ player.on('error', function (event) {
// Enable VR video support
if (video_data.vr && video_data.params.vr_mode) {
player.crossOrigin("anonymous")
- player.vr({projection: "EAC"});
+ switch (video_data.projection_type) {
+ case "EQUIRECTANGULAR":
+ player.vr({projection: "equirectangular"});
+ default: // Should only be "MESH" but we'll use this as a fallback.
+ player.vr({projection: "EAC"});
+ }
}
// Add markers
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index 27d85b92..d9c07142 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -762,7 +762,12 @@ struct Video
end
def is_vr : Bool?
- info.dig?("streamingData", "adaptiveFormats", 0, "projectionType").try &.as_s == "MESH"
+ projection_type = info.dig?("streamingData", "adaptiveFormats", 0, "projectionType").try &.as_s
+ return {"EQUIRECTANGULAR", "MESH"}.includes? projection_type
+ end
+
+ def projection_type : String?
+ return info.dig?("streamingData", "adaptiveFormats", 0, "projectionType").try &.as_s
end
def wilson_score : Float64
diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr
index aeb0f476..68e7eb80 100644
--- a/src/invidious/views/watch.ecr
+++ b/src/invidious/views/watch.ecr
@@ -63,7 +63,8 @@ we're going to need to do it here in order to allow for translations.
"params" => params,
"preferences" => preferences,
"premiere_timestamp" => video.premiere_timestamp.try &.to_unix,
- "vr" => video.is_vr
+ "vr" => video.is_vr,
+ "projection_type" => video.projection_type
}.to_pretty_json
%>
</script>