@bvdmitri/gyroview 0.0.0-stage → 0.9.0-cutaway.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +402 -0
- package/LICENSE +21 -0
- package/README.md +313 -2
- package/dist/define.d.ts +3 -0
- package/dist/define.js +4 -0
- package/dist/index.d.ts +1204 -0
- package/dist/index.js +12 -0
- package/dist/packages/adapters/blob/src/BlobRandomAccessSource.js +36 -0
- package/dist/packages/adapters/fetch/src/HttpByteStream.js +173 -0
- package/dist/packages/adapters/fetch/src/HttpRangeSource.js +37 -0
- package/dist/packages/adapters/fetch/src/HttpResource.js +227 -0
- package/dist/packages/adapters/fetch/src/HttpResourceLocator.js +35 -0
- package/dist/packages/adapters/fetch/src/contentRange.js +15 -0
- package/dist/packages/adapters/fetch/src/httpRequest.js +136 -0
- package/dist/packages/adapters/fetch/src/passingFailures.js +23 -0
- package/dist/packages/adapters/fetch/src/rangeFailures.js +16 -0
- package/dist/packages/adapters/fetch/src/recordingVersion.js +37 -0
- package/dist/packages/adapters/mediabunny/src/MediabunnyAudioPackager.js +162 -0
- package/dist/packages/adapters/mediabunny/src/MediabunnyCodecReader.js +93 -0
- package/dist/packages/adapters/mediabunny/src/SegmentChannel.js +135 -0
- package/dist/packages/adapters/mediabunny/src/bufferSources.js +12 -0
- package/dist/packages/adapters/mediabunny/src/decoderConfigurations.js +43 -0
- package/dist/packages/adapters/mediabunny/src/trackColour.js +20 -0
- package/dist/packages/adapters/mse-audio/src/MediaSourceAudioClock.js +138 -0
- package/dist/packages/adapters/mse-audio/src/SourceBufferFeeder.js +263 -0
- package/dist/packages/adapters/mse-audio/src/events.js +26 -0
- package/dist/packages/adapters/mse-audio/src/mediaSourceSupport.js +81 -0
- package/dist/packages/adapters/three/src/ThreeFrameRenderer.js +215 -0
- package/dist/packages/adapters/three/src/compileAndProve.js +14 -0
- package/dist/packages/adapters/three/src/conversionUniforms.js +60 -0
- package/dist/packages/adapters/three/src/drawSchedules.js +13 -0
- package/dist/packages/adapters/three/src/fullscreenPass.js +52 -0
- package/dist/packages/adapters/three/src/glslLiterals.js +10 -0
- package/dist/packages/adapters/three/src/lensTextures.js +34 -0
- package/dist/packages/adapters/three/src/matrixCorrections.js +34 -0
- package/dist/packages/adapters/three/src/pictureMaterials.js +44 -0
- package/dist/packages/adapters/three/src/renderInto.js +15 -0
- package/dist/packages/adapters/three/src/rendererParts.js +108 -0
- package/dist/packages/adapters/three/src/rendererUniforms.js +176 -0
- package/dist/packages/adapters/three/src/samplingStrategies.js +26 -0
- package/dist/packages/adapters/three/src/scissorBox.js +20 -0
- package/dist/packages/adapters/three/src/seamMeter/SeamMeterPass.js +85 -0
- package/dist/packages/adapters/three/src/seamMeter/rowMeans.js +42 -0
- package/dist/packages/adapters/three/src/shaderPrograms.js +68 -0
- package/dist/packages/adapters/three/src/shaders/analysis.frag.js +4 -0
- package/dist/packages/adapters/three/src/shaders/displayConversion.js +4 -0
- package/dist/packages/adapters/three/src/shaders/equirectangularRays.js +4 -0
- package/dist/packages/adapters/three/src/shaders/fixedJoin.js +4 -0
- package/dist/packages/adapters/three/src/shaders/fullscreen.vert.js +4 -0
- package/dist/packages/adapters/three/src/shaders/header.js +4 -0
- package/dist/packages/adapters/three/src/shaders/lensModels.js +4 -0
- package/dist/packages/adapters/three/src/shaders/lensSampling.js +4 -0
- package/dist/packages/adapters/three/src/shaders/lensTextures.js +4 -0
- package/dist/packages/adapters/three/src/shaders/rawLenses.frag.js +4 -0
- package/dist/packages/adapters/three/src/shaders/rectilinearRays.js +4 -0
- package/dist/packages/adapters/three/src/shaders/screenAreas.js +4 -0
- package/dist/packages/adapters/three/src/shaders/stitch.frag.js +4 -0
- package/dist/packages/adapters/three/src/threeMatrix.js +10 -0
- package/dist/packages/adapters/three/src/webglRenderer.js +37 -0
- package/dist/packages/adapters/webcodecs/src/WebCodecsVideoDecoderPort.js +152 -0
- package/dist/packages/adapters/webcodecs/src/colorSpaceOf.js +32 -0
- package/dist/packages/core/src/application/download/BlockStore.js +97 -0
- package/dist/packages/core/src/application/download/DownloadedAudioSamples.js +50 -0
- package/dist/packages/core/src/application/download/DownloadedVideoTrack.js +122 -0
- package/dist/packages/core/src/application/download/FileDownload.js +208 -0
- package/dist/packages/core/src/application/download/RecordingBuffer.js +22 -0
- package/dist/packages/core/src/application/download/SampleCursor.js +89 -0
- package/dist/packages/core/src/application/download/SourceByteStream.js +46 -0
- package/dist/packages/core/src/application/download/Transfers.js +82 -0
- package/dist/packages/core/src/application/download/startFileDownload.js +37 -0
- package/dist/packages/core/src/application/gainMatching/GainMatching.js +76 -0
- package/dist/packages/core/src/application/gainMatching/GainMatchingFrameSink.js +80 -0
- package/dist/packages/core/src/application/gainMatching/referenceLensOf.js +18 -0
- package/dist/packages/core/src/application/playback/Buffering.js +54 -0
- package/dist/packages/core/src/application/playback/ClockStart.js +55 -0
- package/dist/packages/core/src/application/playback/ClockWatch.js +76 -0
- package/dist/packages/core/src/application/playback/DecodePipeline.js +234 -0
- package/dist/packages/core/src/application/playback/DecodeRun.js +108 -0
- package/dist/packages/core/src/application/playback/FramePairQueue.js +93 -0
- package/dist/packages/core/src/application/playback/FramePairer.js +77 -0
- package/dist/packages/core/src/application/playback/PictureOnScreen.js +56 -0
- package/dist/packages/core/src/application/playback/PlaybackSession.js +410 -0
- package/dist/packages/core/src/application/playback/SeekOrder.js +35 -0
- package/dist/packages/core/src/application/playback/SessionLifecycle.js +42 -0
- package/dist/packages/core/src/application/playback/StartGate.js +69 -0
- package/dist/packages/core/src/application/playback/TimeUpdates.js +31 -0
- package/dist/packages/core/src/application/playback/WallClock.js +46 -0
- package/dist/packages/core/src/application/playback/keyframeTimeAt.js +15 -0
- package/dist/packages/core/src/application/playback/probeDecoding.js +182 -0
- package/dist/packages/core/src/application/recording/frameTimesOf.js +21 -0
- package/dist/packages/core/src/application/recording/inspectLayout.js +21 -0
- package/dist/packages/core/src/application/recording/inspectRecording.js +125 -0
- package/dist/packages/core/src/application/recording/locateOtherLensFile.js +18 -0
- package/dist/packages/core/src/application/recording/motionOf.js +43 -0
- package/dist/packages/core/src/application/recording/readRecording.js +31 -0
- package/dist/packages/core/src/application/recording/readRecordingFiles.js +130 -0
- package/dist/packages/core/src/application/recording/readSampleTable.js +27 -0
- package/dist/packages/core/src/application/recording/timeRecording.js +57 -0
- package/dist/packages/core/src/application/stabilization/StabilizingFrameSink.js +33 -0
- package/dist/packages/core/src/domain/colour/DisplayConversion.js +137 -0
- package/dist/packages/core/src/domain/colour/TrackColour.js +38 -0
- package/dist/packages/core/src/domain/colour/gainMatch.js +64 -0
- package/dist/packages/core/src/domain/colour/matrixCorrection.js +76 -0
- package/dist/packages/core/src/domain/container/KeyframeRule.js +7 -0
- package/dist/packages/core/src/domain/container/SampleTable.js +29 -0
- package/dist/packages/core/src/domain/container/TrackSampleTable.js +96 -0
- package/dist/packages/core/src/domain/container/presentationOrder.js +10 -0
- package/dist/packages/core/src/domain/download/DownloadPolicy.js +84 -0
- package/dist/packages/core/src/domain/download/isReadyToResume.js +27 -0
- package/dist/packages/core/src/domain/download/planDownloads.js +175 -0
- package/dist/packages/core/src/domain/download/trackNeeds.js +32 -0
- package/dist/packages/core/src/domain/format/boxes/BoxLayout.js +7 -0
- package/dist/packages/core/src/domain/format/boxes/boxConstants.js +16 -0
- package/dist/packages/core/src/domain/format/boxes/boxHeader.js +44 -0
- package/dist/packages/core/src/domain/format/boxes/scanBoxes.js +32 -0
- package/dist/packages/core/src/domain/format/calibration/CalibrationVersion.js +16 -0
- package/dist/packages/core/src/domain/format/calibration/layouts/CalibrationStringLayout.js +34 -0
- package/dist/packages/core/src/domain/format/calibration/layouts/LegacyCalibrationLayout.js +46 -0
- package/dist/packages/core/src/domain/format/calibration/layouts/MeiCalibrationLayout.js +121 -0
- package/dist/packages/core/src/domain/format/calibration/layouts/PolynomialCalibrationLayout.js +46 -0
- package/dist/packages/core/src/domain/format/calibration/offsetTokens.js +94 -0
- package/dist/packages/core/src/domain/format/calibration/parseOffsetString.js +77 -0
- package/dist/packages/core/src/domain/format/calibration/selectCalibration.js +59 -0
- package/dist/packages/core/src/domain/format/calibration/v6TermReading.js +20 -0
- package/dist/packages/core/src/domain/format/captureOrigin.js +34 -0
- package/dist/packages/core/src/domain/format/constants.js +35 -0
- package/dist/packages/core/src/domain/format/info/calibrationSources.js +27 -0
- package/dist/packages/core/src/domain/format/info/infoFields.js +116 -0
- package/dist/packages/core/src/domain/format/info/parseInfoRecord.js +107 -0
- package/dist/packages/core/src/domain/format/info/readInfoRecord.js +14 -0
- package/dist/packages/core/src/domain/format/layout/detectLensLayout.js +133 -0
- package/dist/packages/core/src/domain/format/mp4/hevcCodecString.js +161 -0
- package/dist/packages/core/src/domain/format/mp4/keyframeRules.js +81 -0
- package/dist/packages/core/src/domain/format/mp4/movieBoxes.js +52 -0
- package/dist/packages/core/src/domain/format/mp4/mp4BoxTypes.js +46 -0
- package/dist/packages/core/src/domain/format/mp4/mp4Layouts.js +183 -0
- package/dist/packages/core/src/domain/format/mp4/parseMovie.js +72 -0
- package/dist/packages/core/src/domain/format/mp4/readTable.js +31 -0
- package/dist/packages/core/src/domain/format/mp4/sampleLocations.js +76 -0
- package/dist/packages/core/src/domain/format/mp4/sampleTiming.js +120 -0
- package/dist/packages/core/src/domain/format/mp4/trackHeaders.js +88 -0
- package/dist/packages/core/src/domain/format/naming/RecordingFileName.js +70 -0
- package/dist/packages/core/src/domain/format/records/TrailerRecords.js +100 -0
- package/dist/packages/core/src/domain/format/records/exposure/parseExposureRecord.js +48 -0
- package/dist/packages/core/src/domain/format/records/gyro/FloatGyroSampleLayout.js +38 -0
- package/dist/packages/core/src/domain/format/records/gyro/RawGyroSampleLayout.js +55 -0
- package/dist/packages/core/src/domain/format/records/gyro/SampleColumns.js +89 -0
- package/dist/packages/core/src/domain/format/records/gyro/gyroLayouts.js +12 -0
- package/dist/packages/core/src/domain/format/records/gyro/parseGyroRecord.js +138 -0
- package/dist/packages/core/src/domain/format/records/trim/parseTrimRecord.js +24 -0
- package/dist/packages/core/src/domain/format/trailer/RecordHeader.js +23 -0
- package/dist/packages/core/src/domain/format/trailer/Trailer.js +23 -0
- package/dist/packages/core/src/domain/format/trailer/TrailerFooter.js +27 -0
- package/dist/packages/core/src/domain/format/trailer/locateRecords.js +80 -0
- package/dist/packages/core/src/domain/format/trailer/parseRecordIndex.js +28 -0
- package/dist/packages/core/src/domain/format/trailer/readTrailer.js +60 -0
- package/dist/packages/core/src/domain/motion/exposure/ExposureRecord.js +48 -0
- package/dist/packages/core/src/domain/motion/gyro/GyroTrack.js +70 -0
- package/dist/packages/core/src/domain/motion/gyro/medianStep.js +11 -0
- package/dist/packages/core/src/domain/motion/gyro/repairedTimeline.js +101 -0
- package/dist/packages/core/src/domain/motion/imu/ImuFrame.js +178 -0
- package/dist/packages/core/src/domain/motion/mounting/Mounting.js +131 -0
- package/dist/packages/core/src/domain/motion/orientation/OrientationTrack.js +142 -0
- package/dist/packages/core/src/domain/motion/orientation/estimateGyroBias.js +72 -0
- package/dist/packages/core/src/domain/motion/orientation/gravity.js +97 -0
- package/dist/packages/core/src/domain/motion/stabilization/Stabilizer.js +13 -0
- package/dist/packages/core/src/domain/motion/stabilization/stabilizers.js +86 -0
- package/dist/packages/core/src/domain/motion/timing/CaptureClock.js +41 -0
- package/dist/packages/core/src/domain/motion/timing/FrameTimes.js +85 -0
- package/dist/packages/core/src/domain/motion/timing/frameTimeSources.js +58 -0
- package/dist/packages/core/src/domain/motion/timing/resolveFrameTimes.js +68 -0
- package/dist/packages/core/src/domain/optics/EquidistantModel.js +34 -0
- package/dist/packages/core/src/domain/optics/MeiDistortion.js +27 -0
- package/dist/packages/core/src/domain/optics/MeiModel.js +27 -0
- package/dist/packages/core/src/domain/optics/PolynomialModel.js +39 -0
- package/dist/packages/core/src/domain/optics/lensPose.js +49 -0
- package/dist/packages/core/src/domain/optics/opticsConstants.js +5 -0
- package/dist/packages/core/src/domain/optics/scaledProjection.js +30 -0
- package/dist/packages/core/src/domain/playback/PlayerState.js +83 -0
- package/dist/packages/core/src/domain/rendition/RenditionSpan.js +70 -0
- package/dist/packages/core/src/domain/stitching/LensLayout.js +21 -0
- package/dist/packages/core/src/domain/stitching/StitchingSetup.js +87 -0
- package/dist/packages/core/src/domain/stitching/seamRing.js +4 -0
- package/dist/packages/core/src/domain/view/Framing.js +37 -0
- package/dist/packages/core/src/domain/view/Picture.js +12 -0
- package/dist/packages/core/src/domain/view/PictureQuality.js +26 -0
- package/dist/packages/core/src/domain/view/ViewMode.js +9 -0
- package/dist/packages/core/src/domain/view/ViewState.js +54 -0
- package/dist/packages/core/src/domain/view/lensTilesView.js +64 -0
- package/dist/packages/core/src/domain/view/magnification.js +103 -0
- package/dist/packages/core/src/domain/view/motionLookView.js +100 -0
- package/dist/packages/core/src/domain/view/normalView.js +37 -0
- package/dist/packages/core/src/domain/view/panoramaView.js +95 -0
- package/dist/packages/core/src/domain/view/rectilinear.js +53 -0
- package/dist/packages/core/src/domain/view/screenLayout.js +129 -0
- package/dist/packages/core/src/domain/view/screenLook.js +74 -0
- package/dist/packages/core/src/domain/view/viewGestures.js +104 -0
- package/dist/packages/core/src/domain/view/viewModes.js +31 -0
- package/dist/packages/core/src/ports/FramePair.js +6 -0
- package/dist/packages/core/src/shared/async/Deferred.js +42 -0
- package/dist/packages/core/src/shared/async/RunStop.js +40 -0
- package/dist/packages/core/src/shared/async/iteration.js +24 -0
- package/dist/packages/core/src/shared/binary/ByteRange.js +50 -0
- package/dist/packages/core/src/shared/binary/ByteRangeSet.js +85 -0
- package/dist/packages/core/src/shared/binary/ByteReader.js +104 -0
- package/dist/packages/core/src/shared/binary/concatenated.js +15 -0
- package/dist/packages/core/src/shared/errors/GyroViewError.js +140 -0
- package/dist/packages/core/src/shared/errors/reportLater.js +11 -0
- package/dist/packages/core/src/shared/events/Outbox.js +68 -0
- package/dist/packages/core/src/shared/events/TypedEmitter.js +55 -0
- package/dist/packages/core/src/shared/keysOf.js +10 -0
- package/dist/packages/core/src/shared/lazy.js +11 -0
- package/dist/packages/core/src/shared/mapRecord.js +11 -0
- package/dist/packages/core/src/shared/math/Matrix3.js +121 -0
- package/dist/packages/core/src/shared/math/Quaternion.js +133 -0
- package/dist/packages/core/src/shared/math/Vector3.js +58 -0
- package/dist/packages/core/src/shared/math/clamp.js +9 -0
- package/dist/packages/core/src/shared/math/countAtOrBelow.js +31 -0
- package/dist/packages/core/src/shared/math/minimum.js +17 -0
- package/dist/packages/core/src/shared/protobuf/ProtobufMessage.js +143 -0
- package/dist/packages/core/src/shared/protobuf/wireFormat.js +16 -0
- package/dist/packages/core/src/shared/text/urlPath.js +31 -0
- package/dist/packages/core/src/shared/text/utf8.js +12 -0
- package/dist/packages/core/src/shared/units/angle.js +22 -0
- package/dist/packages/core/src/shared/units/time.js +13 -0
- package/dist/packages/player/src/PlayerSource.js +14 -0
- package/dist/packages/player/src/browserPlayer.js +20 -0
- package/dist/packages/player/src/choices.js +24 -0
- package/dist/packages/player/src/composition/AnimationFrameDraws.js +38 -0
- package/dist/packages/player/src/composition/BrowserAttitudeSensor.js +191 -0
- package/dist/packages/player/src/composition/Disposables.js +31 -0
- package/dist/packages/player/src/composition/DrawingBufferFit.js +119 -0
- package/dist/packages/player/src/composition/animationFrames.js +9 -0
- package/dist/packages/player/src/composition/attitudeSensor.js +18 -0
- package/dist/packages/player/src/composition/browserPorts.js +80 -0
- package/dist/packages/player/src/composition/buildPipeline.js +186 -0
- package/dist/packages/player/src/composition/ensureDecodable.js +62 -0
- package/dist/packages/player/src/composition/openInputs.js +120 -0
- package/dist/packages/player/src/composition/openRecording.js +41 -0
- package/dist/packages/player/src/composition/readInputs.js +25 -0
- package/dist/packages/player/src/composition/renditionFrames.js +160 -0
- package/dist/packages/player/src/controls/ChoiceMenu.js +125 -0
- package/dist/packages/player/src/controls/FullscreenButton.js +29 -0
- package/dist/packages/player/src/controls/MotionLookButton.js +34 -0
- package/dist/packages/player/src/controls/PictureMenus.js +60 -0
- package/dist/packages/player/src/controls/SeekBar.js +126 -0
- package/dist/packages/player/src/controls/SoundControls.js +43 -0
- package/dist/packages/player/src/controls/TransportButtons.js +28 -0
- package/dist/packages/player/src/controls/ViewGestures.js +135 -0
- package/dist/packages/player/src/controls/Wording.js +79 -0
- package/dist/packages/player/src/controls/controlParts.js +38 -0
- package/dist/packages/player/src/controls/controls.js +4 -0
- package/dist/packages/player/src/controls/controlsBar.js +33 -0
- package/dist/packages/player/src/controls/controlsMarkup.js +100 -0
- package/dist/packages/player/src/controls/customControls.js +43 -0
- package/dist/packages/player/src/controls/formatTime.js +19 -0
- package/dist/packages/player/src/controls/icons.js +66 -0
- package/dist/packages/player/src/controls/keyboard.js +120 -0
- package/dist/packages/player/src/controls/messages.js +130 -0
- package/dist/packages/player/src/controls/nativeFullscreen.js +27 -0
- package/dist/packages/player/src/controls/parseMarkup.js +30 -0
- package/dist/packages/player/src/controls/resetViewButton.js +11 -0
- package/dist/packages/player/src/controls/sliderFill.js +15 -0
- package/dist/packages/player/src/element/ElementLoads.js +130 -0
- package/dist/packages/player/src/element/FullscreenToggle.js +93 -0
- package/dist/packages/player/src/element/GyroViewElement.js +358 -0
- package/dist/packages/player/src/element/IdleWatcher.js +71 -0
- package/dist/packages/player/src/element/PlayerCanvas.js +72 -0
- package/dist/packages/player/src/element/TypedEventElement.js +22 -0
- package/dist/packages/player/src/element/accessibleRegion.js +19 -0
- package/dist/packages/player/src/element/attributeNames.js +62 -0
- package/dist/packages/player/src/element/attributes.js +123 -0
- package/dist/packages/player/src/element/defineGyroView.js +20 -0
- package/dist/packages/player/src/element/earlyProperties.js +35 -0
- package/dist/packages/player/src/element/elementProperties.js +34 -0
- package/dist/packages/player/src/element/elementSource.js +39 -0
- package/dist/packages/player/src/element/fetchProperty.js +48 -0
- package/dist/packages/player/src/element/liveSettings.js +137 -0
- package/dist/packages/player/src/element/playbackAttributes.js +52 -0
- package/dist/packages/player/src/element/playerEventMirror.js +33 -0
- package/dist/packages/player/src/element/reflectedProperties.js +96 -0
- package/dist/packages/player/src/element/styles.js +4 -0
- package/dist/packages/player/src/element/template.js +46 -0
- package/dist/packages/player/src/inspectRecording.js +21 -0
- package/dist/packages/player/src/player/FrameLoop.js +35 -0
- package/dist/packages/player/src/player/MotionLook.js +150 -0
- package/dist/packages/player/src/player/PictureSettings.js +59 -0
- package/dist/packages/player/src/player/PlaybackStarts.js +38 -0
- package/dist/packages/player/src/player/Player.js +379 -0
- package/dist/packages/player/src/player/PlayerEvents.js +28 -0
- package/dist/packages/player/src/player/PlayerPhase.js +38 -0
- package/dist/packages/player/src/player/PlayerSound.js +60 -0
- package/dist/packages/player/src/player/PlayerView.js +143 -0
- package/dist/packages/player/src/player/SessionRelay.js +74 -0
- package/dist/packages/player/src/player/StatusAnnouncer.js +29 -0
- package/dist/packages/player/src/player/ensureFinite.js +26 -0
- package/dist/packages/player/src/player/loadRecording.js +47 -0
- package/dist/packages/player/src/player/transportEvents.js +30 -0
- package/dist/packages/player/src/player/viewAngles.js +17 -0
- package/dist/packages/player/src/rendition.js +52 -0
- package/dist/standalone.js +5633 -0
- package/package.json +70 -3
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { transportEventsFor } from "./transportEvents.js";
|
|
2
|
+
//#region ../../packages/player/src/player/SessionRelay.ts
|
|
3
|
+
/**
|
|
4
|
+
* Relays the loaded session's events in media-element terms: transport events for its state
|
|
5
|
+
* changes, time updates, drawn frames, finished seeks, errors and the end. Listens to one session at a time and
|
|
6
|
+
* stops before that session is disposed, so its disposal is never announced. A change is relayed
|
|
7
|
+
* whole, as a media element fires the events it queued before a listener's `pause()`; the
|
|
8
|
+
* session announces a listener's newer change after it (ADR 0021).
|
|
9
|
+
*/
|
|
10
|
+
var SessionRelay = class {
|
|
11
|
+
targets;
|
|
12
|
+
stopListening = [];
|
|
13
|
+
lastState;
|
|
14
|
+
/**
|
|
15
|
+
* Counts detachments, so a change whose listener let the session go stops relaying.
|
|
16
|
+
*/
|
|
17
|
+
detachments = 0;
|
|
18
|
+
constructor(targets) {
|
|
19
|
+
this.targets = targets;
|
|
20
|
+
}
|
|
21
|
+
attach(session) {
|
|
22
|
+
this.detach();
|
|
23
|
+
this.lastState = session.state;
|
|
24
|
+
const { events } = this.targets;
|
|
25
|
+
this.stopListening = [
|
|
26
|
+
session.events.on("statechange", (state) => {
|
|
27
|
+
this.onStateChange(state, session);
|
|
28
|
+
}),
|
|
29
|
+
session.events.on("timeupdate", (time) => {
|
|
30
|
+
events.emit("timeupdate", time);
|
|
31
|
+
}),
|
|
32
|
+
session.events.on("present", (time) => {
|
|
33
|
+
events.emit("frame", time);
|
|
34
|
+
}),
|
|
35
|
+
session.events.on("seeked", (time) => {
|
|
36
|
+
this.onSeeked(time, session);
|
|
37
|
+
}),
|
|
38
|
+
session.events.on("ended", () => {
|
|
39
|
+
events.emit("ended", void 0);
|
|
40
|
+
}),
|
|
41
|
+
session.events.on("error", (error) => {
|
|
42
|
+
events.emit("error", error);
|
|
43
|
+
})
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
detach() {
|
|
47
|
+
for (const stop of this.stopListening) stop();
|
|
48
|
+
this.stopListening = [];
|
|
49
|
+
this.lastState = void 0;
|
|
50
|
+
this.detachments += 1;
|
|
51
|
+
}
|
|
52
|
+
onStateChange(state, session) {
|
|
53
|
+
const previous = this.lastState;
|
|
54
|
+
this.lastState = state;
|
|
55
|
+
const detachments = this.detachments;
|
|
56
|
+
for (const name of transportEventsFor(previous, state)) {
|
|
57
|
+
this.emitTransport(name, session);
|
|
58
|
+
if (this.detachments !== detachments) return;
|
|
59
|
+
}
|
|
60
|
+
this.targets.onState(state);
|
|
61
|
+
}
|
|
62
|
+
onSeeked(time, session) {
|
|
63
|
+
const detachments = this.detachments;
|
|
64
|
+
this.targets.events.emit("seeked", time);
|
|
65
|
+
if (this.detachments === detachments) this.targets.onState(session.state);
|
|
66
|
+
}
|
|
67
|
+
emitTransport(name, session) {
|
|
68
|
+
const { events } = this.targets;
|
|
69
|
+
if (name === "seeking") events.emit(name, session.currentTime);
|
|
70
|
+
else events.emit(name, void 0);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
//#endregion
|
|
74
|
+
export { SessionRelay };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region ../../packages/player/src/player/StatusAnnouncer.ts
|
|
2
|
+
/**
|
|
3
|
+
* Announces the player's status once for each change: a status announced again before listeners
|
|
4
|
+
* heard the other one in between is heard once.
|
|
5
|
+
*/
|
|
6
|
+
var StatusAnnouncer = class {
|
|
7
|
+
outbox;
|
|
8
|
+
emitter;
|
|
9
|
+
/**
|
|
10
|
+
* The status listeners heard last.
|
|
11
|
+
*/
|
|
12
|
+
lastStatus = "idle";
|
|
13
|
+
constructor(outbox, emitter) {
|
|
14
|
+
this.outbox = outbox;
|
|
15
|
+
this.emitter = emitter;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Whether listeners hear it is decided once the change is whole, against what they heard last.
|
|
19
|
+
*/
|
|
20
|
+
announce(status) {
|
|
21
|
+
this.outbox.post(() => {
|
|
22
|
+
if (status === this.lastStatus) return;
|
|
23
|
+
this.lastStatus = status;
|
|
24
|
+
this.emitter.emit("statuschange", status);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { StatusAnnouncer };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { degrees } from "../../../core/src/shared/units/angle.js";
|
|
2
|
+
import { GyroViewError } from "../../../core/src/shared/errors/GyroViewError.js";
|
|
3
|
+
//#region ../../packages/player/src/player/ensureFinite.ts
|
|
4
|
+
/**
|
|
5
|
+
* A number from the page, or from another origin through the embed: NaN from an empty field, an
|
|
6
|
+
* undefined value or text would reach the clock and the view, which cannot take it.
|
|
7
|
+
*/
|
|
8
|
+
function ensureFinite(value, name) {
|
|
9
|
+
if (typeof value !== "number" || !Number.isFinite(value)) throw new GyroViewError("invalid-argument", `${name} must be a finite number`);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A view from the page, each angle checked and read as degrees, level.
|
|
13
|
+
*/
|
|
14
|
+
function viewStateOf(view) {
|
|
15
|
+
ensureFinite(view.yaw, "yaw");
|
|
16
|
+
ensureFinite(view.pitch, "pitch");
|
|
17
|
+
ensureFinite(view.fieldOfView, "fieldOfView");
|
|
18
|
+
return {
|
|
19
|
+
yaw: degrees(view.yaw),
|
|
20
|
+
pitch: degrees(view.pitch),
|
|
21
|
+
roll: degrees(0),
|
|
22
|
+
fieldOfView: degrees(view.fieldOfView)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ensureFinite, viewStateOf };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Disposables } from "../composition/Disposables.js";
|
|
2
|
+
import { openRecording } from "../composition/openRecording.js";
|
|
3
|
+
//#region ../../packages/player/src/player/loadRecording.ts
|
|
4
|
+
/**
|
|
5
|
+
* Opens the recording and builds everything that plays it on the host's canvas. Whatever was
|
|
6
|
+
* built is disposed again when a step fails or the load is aborted.
|
|
7
|
+
*/
|
|
8
|
+
async function loadRecording(request) {
|
|
9
|
+
const { parts, signal } = request;
|
|
10
|
+
const opened = await openRecording(request.source, parts.ports, signal);
|
|
11
|
+
const disposables = new Disposables();
|
|
12
|
+
disposables.add(() => {
|
|
13
|
+
opened.dispose();
|
|
14
|
+
});
|
|
15
|
+
try {
|
|
16
|
+
const built = await parts.pipelines({
|
|
17
|
+
opened,
|
|
18
|
+
host: parts.host,
|
|
19
|
+
decoderPort: parts.ports.decoderPort,
|
|
20
|
+
signal
|
|
21
|
+
});
|
|
22
|
+
disposables.add(() => {
|
|
23
|
+
built.dispose();
|
|
24
|
+
});
|
|
25
|
+
signal.throwIfAborted();
|
|
26
|
+
return {
|
|
27
|
+
opened,
|
|
28
|
+
pipeline: built,
|
|
29
|
+
warnings: warningsOf(opened, built),
|
|
30
|
+
dispose: disposables.toDisposer()
|
|
31
|
+
};
|
|
32
|
+
} catch (error) {
|
|
33
|
+
disposables.disposeAll();
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function warningsOf(opened, pipeline) {
|
|
38
|
+
return [...opened.warnings.map((message) => ({
|
|
39
|
+
code: "recording-degraded",
|
|
40
|
+
message
|
|
41
|
+
})), ...pipeline.soundWarnings.map((message) => ({
|
|
42
|
+
code: "no-sound",
|
|
43
|
+
message
|
|
44
|
+
}))];
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { loadRecording };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region ../../packages/player/src/player/transportEvents.ts
|
|
2
|
+
var STOPPED_STATES = /* @__PURE__ */ new Set([
|
|
3
|
+
"ready",
|
|
4
|
+
"paused",
|
|
5
|
+
"ended"
|
|
6
|
+
]);
|
|
7
|
+
/**
|
|
8
|
+
* What flowing states announce: frames flow, or playback holds for them.
|
|
9
|
+
*/
|
|
10
|
+
var FLOW_EVENTS = /* @__PURE__ */ new Map([["playing", "playing"], ["buffering", "waiting"]]);
|
|
11
|
+
/**
|
|
12
|
+
* The transport events a session state change means to a listener who thinks in media-element
|
|
13
|
+
* terms: `play` when playback is asked for, `waiting` while it holds for frames, `playing` when
|
|
14
|
+
* frames flow, `pause` when it stops, at the end too, and `seeking` when a seek begins, without
|
|
15
|
+
* repeating `play` or `pause`. `seeked` is the session's own: a seek is done once its first
|
|
16
|
+
* picture is drawn (ADR 0042).
|
|
17
|
+
*/
|
|
18
|
+
function transportEventsFor(previous, next) {
|
|
19
|
+
if (next === "seeking") return ["seeking"];
|
|
20
|
+
if (previous === "seeking") return next === "buffering" ? ["waiting"] : [];
|
|
21
|
+
if (next === "paused") return previous === "ready" ? [] : ["pause"];
|
|
22
|
+
return next === "ended" ? ["pause"] : flowEventsFor(previous, next);
|
|
23
|
+
}
|
|
24
|
+
function flowEventsFor(previous, next) {
|
|
25
|
+
const flow = FLOW_EVENTS.get(next);
|
|
26
|
+
if (flow === void 0) return [];
|
|
27
|
+
return previous === void 0 || STOPPED_STATES.has(previous) ? ["play", flow] : [flow];
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { transportEventsFor };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region ../../packages/player/src/player/viewAngles.ts
|
|
2
|
+
/**
|
|
3
|
+
* The view as a page sees it: a fresh object of the three angles, the roll the device gives the
|
|
4
|
+
* held view kept inside the player (ADR 0040).
|
|
5
|
+
*/
|
|
6
|
+
function anglesOf(view) {
|
|
7
|
+
return {
|
|
8
|
+
yaw: view.yaw,
|
|
9
|
+
pitch: view.pitch,
|
|
10
|
+
fieldOfView: view.fieldOfView
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function isSameAngles(a, b) {
|
|
14
|
+
return a.yaw === b.yaw && a.pitch === b.pitch && a.fieldOfView === b.fieldOfView;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { anglesOf, isSameAngles };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { seconds } from "../../core/src/shared/units/time.js";
|
|
2
|
+
import { browserPorts } from "./composition/browserPorts.js";
|
|
3
|
+
import { openRecording } from "./composition/openRecording.js";
|
|
4
|
+
import { renditionOf } from "./composition/renditionFrames.js";
|
|
5
|
+
//#region ../../packages/player/src/rendition.ts
|
|
6
|
+
/**
|
|
7
|
+
* Opens a recording, as the player would, to render it frame by frame (see {@link Rendition}).
|
|
8
|
+
* Rejects with the `GyroViewError` a load would meet, and with `invalid-argument` for a width or
|
|
9
|
+
* span that holds no picture.
|
|
10
|
+
*/
|
|
11
|
+
async function openRendition(source, options) {
|
|
12
|
+
const signal = options.signal ?? new AbortController().signal;
|
|
13
|
+
const ports = browserPorts({ ...options.http && { http: options.http } });
|
|
14
|
+
const opened = await openRecording(source, ports, signal);
|
|
15
|
+
try {
|
|
16
|
+
return renditionOver(opened, renditionOf({
|
|
17
|
+
opened,
|
|
18
|
+
decoderPort: ports.decoderPort,
|
|
19
|
+
...options.canvas && { canvas: options.canvas }
|
|
20
|
+
}, requestOf(options)), signal);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
opened.dispose();
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function requestOf(options) {
|
|
27
|
+
const { width, from, to, stabilization, gainMatching, quality } = options;
|
|
28
|
+
return {
|
|
29
|
+
width,
|
|
30
|
+
...from !== void 0 && { from: seconds(from) },
|
|
31
|
+
...to !== void 0 && { to: seconds(to) },
|
|
32
|
+
...stabilization && { stabilization },
|
|
33
|
+
...gainMatching !== void 0 && { gainMatching },
|
|
34
|
+
...quality && { quality }
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function renditionOver(opened, frames, signal) {
|
|
38
|
+
const dispose = () => {
|
|
39
|
+
frames.dispose();
|
|
40
|
+
opened.dispose();
|
|
41
|
+
};
|
|
42
|
+
signal.addEventListener("abort", dispose, { once: true });
|
|
43
|
+
return {
|
|
44
|
+
metadata: opened.metadata,
|
|
45
|
+
...frames.size,
|
|
46
|
+
duration: frames.span.duration,
|
|
47
|
+
frames: () => frames.frames(),
|
|
48
|
+
dispose
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { openRendition };
|