From a9b5a6aa800d86118b6e58d6ba1f4e513c644401 Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Wed, 9 Dec 2020 23:07:49 +0200 Subject: [PATCH 1/3] add video-export.html debug page --- debug/.eslintrc | 5 +- debug/video-export.html | 111 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 debug/video-export.html diff --git a/debug/.eslintrc b/debug/.eslintrc index 5e8b0a0b215..fa82c7d667f 100644 --- a/debug/.eslintrc +++ b/debug/.eslintrc @@ -6,7 +6,7 @@ "ecmaFeatures": { "jsx": true }, - "sourceType": "script" + "sourceType": "module" }, "rules": { "flowtype/require-valid-file-annotation": [0], @@ -15,7 +15,8 @@ "strict": "off", "no-restricted-properties": "off", "no-unused-vars": "off", - "prefer-template": "off" + "prefer-template": "off", + "import/no-unresolved": "off" }, "env": { "es6": true, diff --git a/debug/video-export.html b/debug/video-export.html new file mode 100644 index 00000000000..2314917ffeb --- /dev/null +++ b/debug/video-export.html @@ -0,0 +1,111 @@ + + + + Mapbox GL JS debug page + + + + + + + +
+ + + + + + + From aa89ae108ce1caa2992d73399a1cfb1852e1d080 Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Thu, 10 Dec 2020 16:04:31 +0200 Subject: [PATCH 2/3] improve & expose setNow/restoreNow methods --- src/index.js | 15 +++++++++++++-- src/util/browser.js | 20 +++++++++++--------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/index.js b/src/index.js index 36e55255d08..0974a8c22b8 100644 --- a/src/index.js +++ b/src/index.js @@ -174,11 +174,22 @@ const exported = { clearTileCache(callback); }, - workerUrl: '' + workerUrl: '', + + /** + * Sets the time used by GL JS internally for all animations. Useful for generating videos from GL JS. + * @var {number} time + */ + setNow: browser.setNow, + + /** + * Restores the internal animation timing to follow regular computer time (`performance.now()`). + */ + restoreNow: browser.restoreNow }; //This gets automatically stripped out in production builds. -Debug.extend(exported, {isSafari, getPerformanceMetrics: PerformanceUtils.getPerformanceMetrics, getPerformanceMetricsAsync: WorkerPerformanceUtils.getPerformanceMetricsAsync, setNow: browser.setNow, restoreNow: browser.restoreNow}); +Debug.extend(exported, {isSafari, getPerformanceMetrics: PerformanceUtils.getPerformanceMetrics, getPerformanceMetricsAsync: WorkerPerformanceUtils.getPerformanceMetricsAsync}); /** * The version of Mapbox GL JS in use as specified in `package.json`, diff --git a/src/util/browser.js b/src/util/browser.js index ed7f559cde5..9fa3a9a2921 100755 --- a/src/util/browser.js +++ b/src/util/browser.js @@ -3,10 +3,6 @@ import window from './window'; import type {Cancelable} from '../types/cancelable'; -const now = window.performance && window.performance.now ? - window.performance.now.bind(window.performance) : - Date.now.bind(Date); - const raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || @@ -23,26 +19,32 @@ let reducedMotionQuery: MediaQueryList; let errorState = false; +let stubTime; + /** * @private */ const exported = { /** - * Provides a function that outputs milliseconds: either performance.now() - * or a fallback to Date.now() + * Returns either performance.now() or a value set by setNow */ - now, + now(): number { + if (stubTime !== undefined) { + return stubTime; + } + return window.performance.now(); + }, setErrorState() { errorState = true; }, setNow(time: number) { - exported.now = () => time; + stubTime = time; }, restoreNow() { - exported.now = now; + stubTime = undefined; }, frame(fn: (paintStartTimestamp: number) => void): Cancelable { From bad7fac43bf34663302e0abe4c273e9c203097c5 Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Thu, 10 Dec 2020 23:18:05 +0200 Subject: [PATCH 3/3] adjust video compression parameters --- debug/video-export.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/video-export.html b/debug/video-export.html index 2314917ffeb..b21a32e7f58 100644 --- a/debug/video-export.html +++ b/debug/video-export.html @@ -17,7 +17,7 @@