UNPKG

@photo-sphere-viewer/equirectangular-video-adapter

Version:
77 lines (72 loc) 3.27 kB
import { AbstractAdapter, Viewer, TextureData, PanoData, AdapterConstructor, PanoramaPosition, Position } from '@photo-sphere-viewer/core'; import { Mesh, BufferGeometry, Material, VideoTexture, SphereGeometry, MeshBasicMaterial } from 'three'; type AbstractVideoPanorama = { source: string | MediaStream | HTMLVideoElement; }; type AbstractVideoAdapterConfig = { /** * automatically start the video * @default false */ autoplay?: boolean; /** * initially mute the video * @default false */ muted?: boolean; }; type AbstractVideoMesh = Mesh<BufferGeometry, Material>; type AbstractVideoTextureData = TextureData<VideoTexture>; /** * Base video adapters class */ declare abstract class AbstractVideoAdapter<TPanorama extends AbstractVideoPanorama, TData, TMesh extends AbstractVideoMesh> extends AbstractAdapter<TPanorama, TData, VideoTexture, TMesh> { static readonly supportsDownload = false; protected abstract readonly config: AbstractVideoAdapterConfig; private video; constructor(viewer: Viewer); init(): void; destroy(): void; supportsPreload(): boolean; supportsTransition(): boolean; loadTexture(panorama: AbstractVideoPanorama): Promise<AbstractVideoTextureData>; protected switchVideo(texture: VideoTexture): void; setTextureOpacity(mesh: TMesh, opacity: number): void; disposeTexture({ texture }: AbstractVideoTextureData): void; disposeMesh(mesh: AbstractVideoMesh): void; private __removeVideo; private __videoLoadPromise; } /** * Configuration of an equirectangular video */ type EquirectangularVideoPanorama = AbstractVideoPanorama & { data?: PanoData | ((image: HTMLVideoElement) => PanoData); }; type EquirectangularVideoAdapterConfig = AbstractVideoAdapterConfig & { /** * number of faces of the sphere geometry, higher values may decrease performances * @default 64 */ resolution?: number; }; type EquirectangularVideoMesh = Mesh<SphereGeometry, MeshBasicMaterial>; type EquirectangularVideoTextureData = TextureData<VideoTexture, EquirectangularVideoPanorama, PanoData>; /** * Adapter for equirectangular videos */ declare class EquirectangularVideoAdapter extends AbstractVideoAdapter<EquirectangularVideoPanorama, PanoData, EquirectangularVideoMesh> { static readonly id = "equirectangular-video"; static readonly VERSION: string; protected readonly config: EquirectangularVideoAdapterConfig; private adapter; static withConfig(config: EquirectangularVideoAdapterConfig): [AdapterConstructor, any]; constructor(viewer: Viewer, config: EquirectangularVideoAdapterConfig); destroy(): void; textureCoordsToSphericalCoords(point: PanoramaPosition, data: PanoData): Position; sphericalCoordsToTextureCoords(position: Position, data: PanoData): PanoramaPosition; loadTexture(panorama: EquirectangularVideoPanorama, _?: boolean, newPanoData?: any): Promise<EquirectangularVideoTextureData>; createMesh(panoData: PanoData): EquirectangularVideoMesh; setTexture(mesh: EquirectangularVideoMesh, { texture }: EquirectangularVideoTextureData): void; } export { EquirectangularVideoAdapter, type EquirectangularVideoAdapterConfig, type EquirectangularVideoPanorama };