@vkontakte/videoplayer-core 2.0.169-dev.b7ed8d2a3.0 → 2.0.170-beta.0
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/es2015.cjs +36 -36
- package/es2015.esm.js +43 -43
- package/esnext.cjs +35 -35
- package/esnext.esm.js +15 -15
- package/evergreen.esm.js +35 -35
- package/package.json +2 -2
- package/types/providers/DashProvider/lib/fetcher.d.ts +5 -1
- package/types/providers/DashProviderVirtual/lib/buffer/types.d.ts +0 -1
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.versionA.d.ts +18 -1
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/liveVirtualBuffer.d.ts +1 -1
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/virtualBufferFactory.d.ts +1 -2
- package/types/providers/DashProviderVirtual/lib/fetcher.d.ts +7 -3
- package/types/providers/DashProviderVirtual/lib/player/basePlayer.d.ts +2 -1
- package/types/utils/ClientChecker/services/DisplayChecker.d.ts +6 -0
- package/types/utils/ClientChecker/types/displayMode.d.ts +8 -0
- package/types/utils/tuningConfig.d.ts +2 -4
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.d.ts +0 -110
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/byteRangeVirtualBufferManager.d.ts +0 -21
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/templateVirtualBufferManager.d.ts +0 -21
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/videoplayer-core",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.170-beta.0",
|
|
4
4
|
"author": "vk.ru",
|
|
5
5
|
"description": "Videoplayer core library based on the vk.ru platform",
|
|
6
6
|
"homepage": "https://vk.ru",
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"**/*.d.ts"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@vkontakte/videoplayer-shared": "1.0.
|
|
45
|
+
"@vkontakte/videoplayer-shared": "1.0.99-beta.0"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -2,6 +2,7 @@ import type { HttpConnectionType, HttpConnectionMetrics, HttpDownloadMetrics } f
|
|
|
2
2
|
import type ThroughputEstimator from "../../../utils/ThroughputEstimator";
|
|
3
3
|
import type { Byte, IValueSubject, ISubject, Milliseconds, IRange, ITracer, IError } from "@vkontakte/videoplayer-shared";
|
|
4
4
|
import { abortable } from "@vkontakte/videoplayer-shared";
|
|
5
|
+
import type { ExactVideoQuality } from "@vkontakte/videoplayer-shared";
|
|
5
6
|
import type { CommonInit, GenericContainerParser, Segment, SegmentReference } from "../../utils/parsers/types";
|
|
6
7
|
declare global {
|
|
7
8
|
interface Navigator {
|
|
@@ -27,6 +28,7 @@ export interface IParams {
|
|
|
27
28
|
measureNonSegmentRequests?: boolean;
|
|
28
29
|
measureFastSamples?: boolean;
|
|
29
30
|
preloadFirstSegment?: boolean;
|
|
31
|
+
maxQualityForFirstSegmentPreload?: ExactVideoQuality;
|
|
30
32
|
}
|
|
31
33
|
export type Priority = "high" | "low" | "auto";
|
|
32
34
|
export interface FetchParamsWithUrl extends FetchParams {
|
|
@@ -44,6 +46,7 @@ export interface FetchParams {
|
|
|
44
46
|
bufferOptimisation?: boolean;
|
|
45
47
|
ignoreNetworkErrors?: boolean;
|
|
46
48
|
urlCacheMechanismEnabled?: boolean;
|
|
49
|
+
representationHeight?: number;
|
|
47
50
|
}
|
|
48
51
|
export type RepresentationFetchResult = {
|
|
49
52
|
init: CommonInit | null;
|
|
@@ -74,11 +77,12 @@ export declare class Fetcher {
|
|
|
74
77
|
private measureNonSegmentRequests;
|
|
75
78
|
private measureFastSamples;
|
|
76
79
|
private preloadFirstSegment;
|
|
80
|
+
private maxQualityForFirstSegmentPreload;
|
|
77
81
|
private startupPhase;
|
|
78
82
|
private performanceObserver;
|
|
79
83
|
private pendingConnectionMetrics;
|
|
80
84
|
private handleExtendedNetworkErrorsSet;
|
|
81
|
-
constructor({ throughputEstimator, requestQuic, tracer, compatibilityMode, useEnableSubtitlesParam, handleExtendedNetworkErrorsSet, useUrlCacheMechanism, measureNonSegmentRequests, measureFastSamples, preloadFirstSegment }: IParams);
|
|
85
|
+
constructor({ throughputEstimator, requestQuic, tracer, compatibilityMode, useEnableSubtitlesParam, handleExtendedNetworkErrorsSet, useUrlCacheMechanism, measureNonSegmentRequests, measureFastSamples, preloadFirstSegment, maxQualityForFirstSegmentPreload }: IParams);
|
|
82
86
|
private onHeadersReceived;
|
|
83
87
|
private setupPerformanceObserver;
|
|
84
88
|
private processPerformanceResourceTiming;
|
|
@@ -34,7 +34,6 @@ export interface IVirtualBufferManager<T extends Segment = Segment> {
|
|
|
34
34
|
getForwardBufferRepresentations(currentPosition?: Milliseconds): Map<Representation["id"], T[]>;
|
|
35
35
|
getForwardPlaybackBufferDuration(currentPosition?: Milliseconds): Milliseconds;
|
|
36
36
|
getPlaybackBufferState(): IRange<Milliseconds> | null;
|
|
37
|
-
getMutexInfo(): string;
|
|
38
37
|
setTarget(time: Milliseconds): void;
|
|
39
38
|
setPreloadOnly(preloadOnly: boolean): void;
|
|
40
39
|
findSegmentStartTime(position: Milliseconds): Milliseconds | undefined;
|
|
@@ -70,7 +70,6 @@ export declare abstract class BaseVirtualBufferManager<T extends Segment> implem
|
|
|
70
70
|
abort(): Promise<void>;
|
|
71
71
|
findSegmentStartTime(position: Milliseconds): Milliseconds | undefined;
|
|
72
72
|
getRepresentationInitialTime(): Seconds;
|
|
73
|
-
getMutexInfo(): string;
|
|
74
73
|
calculateDurationFromSegments(): Milliseconds;
|
|
75
74
|
getActiveSegmentProgress(): VideoSegmentLoadProgress | undefined;
|
|
76
75
|
getMpdSegmentDuration(): Milliseconds | undefined;
|
|
@@ -79,8 +78,26 @@ export declare abstract class BaseVirtualBufferManager<T extends Segment> implem
|
|
|
79
78
|
setPreloadOnly(preloadOnly: boolean): void;
|
|
80
79
|
destroy(): void;
|
|
81
80
|
protected verifyBufferPlaybackQueue(position: Milliseconds): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Удаляет из `bufferPlaybackQueue` «зомби»-сегменты — те, что попали в очередь через
|
|
83
|
+
* `onSomeDataLoaded` → `onDownloadItem` (sub-segment feeding) со статусом `DOWNLOADING`,
|
|
84
|
+
* а затем были сброшены в `NONE` вызовом `abortDownloadingItems` (`data` = null, `loadedBytes` = 0),
|
|
85
|
+
* но из самой очереди не удалены.
|
|
86
|
+
*
|
|
87
|
+
* Зомби вызывает дедлок:
|
|
88
|
+
* 1. `maintain` → `maintainPlaybackBuffer` → `selectDownloadingItems` начинает выбор новых сегментов
|
|
89
|
+
* для скачивания после последнего элемента `bufferPlaybackQueue`. Зомби в очереди сдвигает
|
|
90
|
+
* эту позицию вперёд — сегмент пропускается и никогда не перевыбирается.
|
|
91
|
+
* 2. `maintain` → `maintainNativeBuffer` ищет `nextPlayingItem` как первый элемент с `bufferStatus` !== `FED`.
|
|
92
|
+
* Находит зомби, но не может его скормить (`data` = null) и не переходит к следующим сегментам.
|
|
93
|
+
*
|
|
94
|
+
* Метод вызывается в `maintain` между `verifyBufferPlaybackQueue` и `maintainPlaybackBuffer`,
|
|
95
|
+
* чтобы очистить очередь до того, как `selectDownloadingItems` начнёт по ней работать.
|
|
96
|
+
*/
|
|
97
|
+
protected sanitizeBufferPlaybackQueue(): boolean;
|
|
82
98
|
protected forceSwitchCondition(oldRepresentation: Representation, newRepresentation: Representation): boolean;
|
|
83
99
|
protected clearBuffer(): Promise<void>;
|
|
100
|
+
private resetBuffer;
|
|
84
101
|
protected abortDownload(): void;
|
|
85
102
|
protected abortDownloadingItems(): void;
|
|
86
103
|
protected abortNativeBuffer(): Promise<boolean>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TemplateVirtualBufferManager } from "./templateVirtualBufferManager";
|
|
1
|
+
import { TemplateVirtualBufferManager } from "./templateVirtualBufferManager.versionA";
|
|
2
2
|
import type { Manifest, Representation, StreamKind, TemplateSegment, TemplateSegmentReference } from "../../../../utils/parsers/types";
|
|
3
3
|
import type { NativeBufferManager } from "../nativeBufferManager";
|
|
4
4
|
import type { Dependencies, IBufferPlaybackQueueItem, ISomeDataLoadedCallbackParams } from "../types";
|
package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/virtualBufferFactory.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Representation, StreamKind } from "../../../../utils/parsers/types";
|
|
2
2
|
import type { NativeBufferManager } from "../nativeBufferManager";
|
|
3
3
|
import type { Dependencies, IVirtualBufferManager } from "../types";
|
|
4
|
-
import type { ITuningConfig } from "../../../../../utils/tuningConfig";
|
|
5
4
|
export declare class VirtualBufferFactory {
|
|
6
|
-
static getBufferManager(kind: StreamKind, nativeBufferManager: NativeBufferManager, representations: Representation[], dependencies: Dependencies
|
|
5
|
+
static getBufferManager(kind: StreamKind, nativeBufferManager: NativeBufferManager, representations: Representation[], dependencies: Dependencies): IVirtualBufferManager;
|
|
7
6
|
}
|
|
@@ -2,7 +2,8 @@ import type { HttpConnectionType, HttpConnectionMetrics, HttpDownloadMetrics } f
|
|
|
2
2
|
import type ThroughputEstimator from "../../../utils/ThroughputEstimator";
|
|
3
3
|
import type { Byte, IError, IRange, ISubject, ITracer, IValueSubject, Milliseconds } from "@vkontakte/videoplayer-shared";
|
|
4
4
|
import { abortable } from "@vkontakte/videoplayer-shared";
|
|
5
|
-
import type {
|
|
5
|
+
import type { ExactVideoQuality } from "@vkontakte/videoplayer-shared";
|
|
6
|
+
import type { CommonInit, GenericContainerParser, Segment, SegmentReference, StreamKind } from "../../utils/parsers/types";
|
|
6
7
|
declare global {
|
|
7
8
|
interface Navigator {
|
|
8
9
|
connection: {
|
|
@@ -27,6 +28,7 @@ export interface IParams {
|
|
|
27
28
|
measureNonSegmentRequests?: boolean;
|
|
28
29
|
measureFastSamples?: boolean;
|
|
29
30
|
preloadFirstSegment?: boolean;
|
|
31
|
+
maxQualityForFirstSegmentPreload?: ExactVideoQuality;
|
|
30
32
|
}
|
|
31
33
|
export type Priority = "high" | "low" | "auto";
|
|
32
34
|
export interface FetchParamsWithUrl extends FetchParams {
|
|
@@ -43,6 +45,7 @@ export interface FetchParams {
|
|
|
43
45
|
isLowLatency?: boolean;
|
|
44
46
|
bufferOptimisation?: boolean;
|
|
45
47
|
urlCacheMechanismEnabled?: boolean;
|
|
48
|
+
kind: StreamKind;
|
|
46
49
|
}
|
|
47
50
|
export type RepresentationFetchResult<T extends Segment> = {
|
|
48
51
|
initMetadata: CommonInit | null;
|
|
@@ -73,11 +76,12 @@ export declare class Fetcher {
|
|
|
73
76
|
private measureNonSegmentRequests;
|
|
74
77
|
private measureFastSamples;
|
|
75
78
|
private preloadFirstSegment;
|
|
79
|
+
private maxQualityForFirstSegmentPreload;
|
|
76
80
|
private startupPhase;
|
|
77
81
|
private performanceObserver;
|
|
78
82
|
private pendingConnectionMetrics;
|
|
79
83
|
private handleExtendedNetworkErrorsSet;
|
|
80
|
-
constructor({ throughputEstimator, requestQuic, tracer, compatibilityMode, useEnableSubtitlesParam, handleExtendedNetworkErrorsSet, useUrlCacheMechanism, measureNonSegmentRequests, measureFastSamples, preloadFirstSegment }: IParams);
|
|
84
|
+
constructor({ throughputEstimator, requestQuic, tracer, compatibilityMode, useEnableSubtitlesParam, handleExtendedNetworkErrorsSet, useUrlCacheMechanism, measureNonSegmentRequests, measureFastSamples, preloadFirstSegment, maxQualityForFirstSegmentPreload }: IParams);
|
|
81
85
|
private onHeadersReceived;
|
|
82
86
|
private setupPerformanceObserver;
|
|
83
87
|
private processResourceTiming;
|
|
@@ -87,7 +91,7 @@ export declare class Fetcher {
|
|
|
87
91
|
private trackRequestStart;
|
|
88
92
|
fetchManifest: ReturnType<typeof abortable<[string], string | null>>;
|
|
89
93
|
fetch: ReturnType<typeof abortable<[string, FetchParams], ArrayBuffer | null>>;
|
|
90
|
-
fetchRepresentation<T extends Segment>(segmentReference: SegmentReference, parser: GenericContainerParser<unknown>, dowbloadAbortSignal: AbortSignal, priority?: Priority): Promise<RepresentationFetchResult<T> | null | undefined>;
|
|
94
|
+
fetchRepresentation<T extends Segment>(segmentReference: SegmentReference, parser: GenericContainerParser<unknown>, dowbloadAbortSignal: AbortSignal, priority?: Priority, representationHeight?: number, kind?: StreamKind): Promise<RepresentationFetchResult<T> | null | undefined>;
|
|
91
95
|
destroy(): void;
|
|
92
96
|
private fetchByteRangeRepresentation;
|
|
93
97
|
private fetchTemplateRepresentation;
|
|
@@ -22,7 +22,8 @@ export declare abstract class BasePlayer {
|
|
|
22
22
|
protected tracer: ITracer;
|
|
23
23
|
protected stallTracer: ITracer | null;
|
|
24
24
|
protected forceVideoCodec?: VideoCodec;
|
|
25
|
-
protected
|
|
25
|
+
protected stallStartTime: Milliseconds | null;
|
|
26
|
+
protected lastForceSeekTimestamp: Milliseconds | null;
|
|
26
27
|
protected videoBufferManager: IVirtualBufferManager | null;
|
|
27
28
|
protected audioBufferManager: IVirtualBufferManager | null;
|
|
28
29
|
protected bufferManagers: IVirtualBufferManager[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Checker } from "../types/checker";
|
|
2
|
+
import { DisplayMode } from "../types/displayMode";
|
|
2
3
|
export { isMobile } from "../utils/isMobile";
|
|
3
4
|
export declare class DisplayChecker implements Checker {
|
|
4
5
|
private _maxTouchPoints;
|
|
@@ -9,6 +10,8 @@ export declare class DisplayChecker implements Checker {
|
|
|
9
10
|
private _screenHeight;
|
|
10
11
|
private _screenWidth;
|
|
11
12
|
private _colorDepth;
|
|
13
|
+
private _displayMode;
|
|
14
|
+
private _isStandalone;
|
|
12
15
|
get isTouch(): boolean;
|
|
13
16
|
get maxTouchPoints(): number;
|
|
14
17
|
get height(): number;
|
|
@@ -18,5 +21,8 @@ export declare class DisplayChecker implements Checker {
|
|
|
18
21
|
get pixelRatio(): number;
|
|
19
22
|
get isHDR(): boolean;
|
|
20
23
|
get colorDepth(): number;
|
|
24
|
+
get displayMode(): DisplayMode;
|
|
25
|
+
get isStandalone(): boolean;
|
|
21
26
|
detect(): void;
|
|
27
|
+
private detectDisplayMode;
|
|
22
28
|
}
|
|
@@ -180,8 +180,7 @@ export type ITuningConfig = {
|
|
|
180
180
|
useNewRepresentationSwitch: boolean;
|
|
181
181
|
useDelayedRepresentationSwitch: boolean;
|
|
182
182
|
useSmartRepresentationSwitch: boolean;
|
|
183
|
-
|
|
184
|
-
mutexStallExitPolicy: boolean;
|
|
183
|
+
stallForceSeekOncePerStall: boolean;
|
|
185
184
|
useFetchPriorityHints: boolean;
|
|
186
185
|
useAbortMSEFix: boolean;
|
|
187
186
|
enableBaseUrlSupport: boolean;
|
|
@@ -202,7 +201,6 @@ export type ITuningConfig = {
|
|
|
202
201
|
minNativeBufferSize: Milliseconds;
|
|
203
202
|
removeTimeShiftFromSegment: Milliseconds;
|
|
204
203
|
tickMaintainInterval: Milliseconds;
|
|
205
|
-
tickMaintainThrottle: Milliseconds;
|
|
206
204
|
minSafeBufferToPlay: Milliseconds;
|
|
207
205
|
useBufferHoldingOnlyOnStall: boolean;
|
|
208
206
|
useNewAbr: boolean;
|
|
@@ -253,6 +251,7 @@ export type ITuningConfig = {
|
|
|
253
251
|
dashMaxTvVideoQuality: boolean;
|
|
254
252
|
checkRepresentationCanPlayType: Extract<CanPlayTypeResult, "maybe" | "probably"> | false;
|
|
255
253
|
preloadFirstSegment: boolean;
|
|
254
|
+
maxQualityForFirstSegmentPreload: ExactVideoQuality;
|
|
256
255
|
downloadTime: {
|
|
257
256
|
minLookaheadSegments: number;
|
|
258
257
|
safetyFactor: number;
|
|
@@ -355,7 +354,6 @@ export type ITuningConfig = {
|
|
|
355
354
|
useNewSwitchTo: boolean;
|
|
356
355
|
alwaysAbortPreviousSwitch: boolean;
|
|
357
356
|
useDashProviderVirtual: boolean;
|
|
358
|
-
useDashProviderVirtualVersionA: boolean;
|
|
359
357
|
useDashProviderVirtualMobile: boolean;
|
|
360
358
|
useNewAutoSelectVideoTrack: boolean;
|
|
361
359
|
useSafariEndlessRequestBugfix: boolean;
|
package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.d.ts
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import type { Fetcher, FetchParamsWithUrl, Priority, RepresentationFetchResult } from "../../fetcher";
|
|
2
|
-
import type { CommonInit, ContainerParser, Representation, Segment } from "../../../../utils/parsers/types";
|
|
3
|
-
import { StreamKind } from "../../../../utils/parsers/types";
|
|
4
|
-
import type { ITuningConfig } from "../../../../../utils/tuningConfig";
|
|
5
|
-
import type { Byte, IError, IRange, ISubject, ITracer, IValueSubject, Milliseconds, Seconds } from "@vkontakte/videoplayer-shared";
|
|
6
|
-
import { abortable, Subscription } from "@vkontakte/videoplayer-shared";
|
|
7
|
-
import type { NativeBufferManager } from "../nativeBufferManager";
|
|
8
|
-
import { SwithRepresentationMode, type Dependencies, type IBufferPlaybackQueueItem, type ISomeDataLoadedCallbackParams, type IVirtualBufferManager } from "../types";
|
|
9
|
-
import type { VideoSegmentLoadProgress } from "../../../../utils/Abr/types";
|
|
10
|
-
export declare abstract class BaseVirtualBufferManager<T extends Segment> implements IVirtualBufferManager<T> {
|
|
11
|
-
error$: ISubject<IError>;
|
|
12
|
-
playingRepresentation$: IValueSubject<Representation["id"] | undefined>;
|
|
13
|
-
playingRepresentationInit$: IValueSubject<CommonInit | undefined>;
|
|
14
|
-
currentSegmentLength$: IValueSubject<number>;
|
|
15
|
-
onLastSegment$: IValueSubject<boolean>;
|
|
16
|
-
fullyBuffered$: IValueSubject<boolean>;
|
|
17
|
-
protected readonly kind: StreamKind;
|
|
18
|
-
protected readonly nativeBufferManager: NativeBufferManager;
|
|
19
|
-
protected readonly fetcher: Fetcher;
|
|
20
|
-
protected readonly tracer: ITracer;
|
|
21
|
-
protected readonly tuning: ITuningConfig;
|
|
22
|
-
protected representations: Map<Representation["id"], Representation>;
|
|
23
|
-
protected playingRepresentationId: Representation["id"] | undefined;
|
|
24
|
-
protected downloadingRepresentationId: Representation["id"] | undefined;
|
|
25
|
-
protected switchingRepresentationId: Representation["id"] | null;
|
|
26
|
-
protected initData: Map<Representation["id"], ArrayBuffer>;
|
|
27
|
-
protected initDataPromises: Map<Representation["id"], Promise<RepresentationFetchResult<T> | null | undefined>>;
|
|
28
|
-
protected idleCallbacks: Map<Representation["id"], number>;
|
|
29
|
-
protected parsedInitData: Map<Representation["id"], CommonInit>;
|
|
30
|
-
protected forwardBufferRepresentations: Map<Representation["id"], T[]>;
|
|
31
|
-
protected segments: Map<Representation["id"], T[]>;
|
|
32
|
-
protected containerParser: ContainerParser;
|
|
33
|
-
protected bufferPlaybackQueue: IBufferPlaybackQueueItem<T>[];
|
|
34
|
-
protected downloadingBufferItems: IBufferPlaybackQueueItem<T>[];
|
|
35
|
-
protected preloadOnly: boolean;
|
|
36
|
-
protected forwardBufferTarget: Milliseconds;
|
|
37
|
-
protected failedDownloads: number;
|
|
38
|
-
protected lastDataObtainedTimestampMs: Milliseconds;
|
|
39
|
-
protected loadByteRangeSegmentsTimeoutId: number;
|
|
40
|
-
protected currentVirtualBufferSize: Byte;
|
|
41
|
-
private baseUrls;
|
|
42
|
-
private baseUrlsIndex;
|
|
43
|
-
protected maintainPlaybackBufferMutex: boolean;
|
|
44
|
-
protected maintainNativeBufferMutex: boolean;
|
|
45
|
-
protected bufferClearingMutex: boolean;
|
|
46
|
-
protected abortNativeBufferMutex: boolean;
|
|
47
|
-
protected switchMutex: boolean;
|
|
48
|
-
protected seekMutex: boolean;
|
|
49
|
-
protected destroyAbortController: AbortController;
|
|
50
|
-
protected switchAbortController: AbortController;
|
|
51
|
-
protected downloadAbortController: AbortController;
|
|
52
|
-
protected subscription: Subscription;
|
|
53
|
-
protected readonly getCurrentPosition: () => Milliseconds | undefined;
|
|
54
|
-
protected readonly getCurrentStallDuration: () => Milliseconds | undefined;
|
|
55
|
-
protected constructor(kind: StreamKind, nativeBufferManager: NativeBufferManager, representations: Representation[], { fetcher, tracer, tuning, getCurrentPosition, getCurrentStallDuration, manifest }: Dependencies);
|
|
56
|
-
protected abstract loadItems(itemsToLoad: IBufferPlaybackQueueItem<T>[], representation: Representation, priority?: Priority): Promise<void>;
|
|
57
|
-
protected abstract selectItemsToLoad(): IBufferPlaybackQueueItem<T>[];
|
|
58
|
-
protected abstract prepareFetchParams(items: IBufferPlaybackQueueItem<T>[], representation: Representation): FetchParamsWithUrl;
|
|
59
|
-
protected abstract onSomeDataLoaded(data: ISomeDataLoadedCallbackParams<T>): Promise<void>;
|
|
60
|
-
protected abstract updateRepresentationBaseUrl(representation: Representation, newBaseUrl: string): void;
|
|
61
|
-
startWith: ReturnType<typeof abortable<[Representation["id"]]>>;
|
|
62
|
-
switchTo(newRepresentationId: Representation["id"], mode?: SwithRepresentationMode): Promise<void>;
|
|
63
|
-
protected getSwitchWithAbort(switchToTracer: ITracer): ReturnType<typeof abortable<[Representation["id"], SwithRepresentationMode], void>>;
|
|
64
|
-
prepareSeek(): Promise<void>;
|
|
65
|
-
seek(position: Milliseconds | undefined): Promise<void>;
|
|
66
|
-
maintain(currentPosition?: Milliseconds | undefined): Promise<void>;
|
|
67
|
-
getForwardBufferRepresentations(currentPosition?: Milliseconds | undefined): Map<Representation["id"], T[]>;
|
|
68
|
-
getForwardPlaybackBufferDuration(currentPosition?: Milliseconds | undefined): Milliseconds;
|
|
69
|
-
getPlaybackBufferState(): IRange<Milliseconds> | null;
|
|
70
|
-
abort(): Promise<void>;
|
|
71
|
-
findSegmentStartTime(position: Milliseconds): Milliseconds | undefined;
|
|
72
|
-
getRepresentationInitialTime(): Seconds;
|
|
73
|
-
getMutexInfo(): string;
|
|
74
|
-
calculateDurationFromSegments(): Milliseconds;
|
|
75
|
-
getActiveSegmentProgress(): VideoSegmentLoadProgress | undefined;
|
|
76
|
-
getMpdSegmentDuration(): Milliseconds | undefined;
|
|
77
|
-
get lastDataObtainedTimestamp(): Milliseconds;
|
|
78
|
-
setTarget(time: Milliseconds): void;
|
|
79
|
-
setPreloadOnly(preloadOnly: boolean): void;
|
|
80
|
-
destroy(): void;
|
|
81
|
-
protected verifyBufferPlaybackQueue(position: Milliseconds): Promise<void>;
|
|
82
|
-
protected forceSwitchCondition(oldRepresentation: Representation, newRepresentation: Representation): boolean;
|
|
83
|
-
protected clearBuffer(): Promise<void>;
|
|
84
|
-
protected abortDownload(): void;
|
|
85
|
-
protected abortDownloadingItems(): void;
|
|
86
|
-
protected abortNativeBuffer(): Promise<boolean>;
|
|
87
|
-
protected loadInits(): Promise<void>;
|
|
88
|
-
protected loadInitIfNeeded(representation: Representation, requestedPriority?: Priority, critical?: boolean): Promise<void>;
|
|
89
|
-
protected loadInit(representation: Representation, requestedPriority?: Priority, critical?: boolean): Promise<void>;
|
|
90
|
-
private isMaintainNativeBufferMutexActive;
|
|
91
|
-
protected maintainNativeBuffer(): Promise<void>;
|
|
92
|
-
protected maintainPlaybackBuffer(position: Milliseconds): Promise<void>;
|
|
93
|
-
protected actualizeLastSegmentInfo(currentPosition: Milliseconds): void;
|
|
94
|
-
protected selectDownloadingItems(position: Milliseconds, segments: T[]): IBufferPlaybackQueueItem<T>[];
|
|
95
|
-
protected processCachedItems(): Promise<void>;
|
|
96
|
-
protected withinInterval(currentPosition: Milliseconds | undefined, { from, to }: IRange<Milliseconds>, leftTolerance?: Milliseconds, rightTolerance?: Milliseconds): boolean;
|
|
97
|
-
protected withinAppendInterval(currentPosition: Milliseconds | undefined, { from, to }: IRange<Milliseconds>): boolean;
|
|
98
|
-
protected withinRemoveInterval(currentPosition: Milliseconds | undefined, { to }: IRange<Milliseconds>): boolean;
|
|
99
|
-
protected getExponentialDownloadDelay(): ReturnType<typeof abortable>;
|
|
100
|
-
protected waitExponentialDownloadDelay(): Promise<void>;
|
|
101
|
-
protected appendSegmentFully(nextPlayingItem: IBufferPlaybackQueueItem<T>, signal: AbortSignal): Promise<void>;
|
|
102
|
-
protected appendSegmentPartially(nextPlayingItem: IBufferPlaybackQueueItem<T>, signal: AbortSignal): Promise<void>;
|
|
103
|
-
protected parseFeedableSegmentChunk(chunk: DataView): DataView | null;
|
|
104
|
-
protected onItemFullyDownloaded(downloadedItem: IBufferPlaybackQueueItem<T>): void;
|
|
105
|
-
protected onItemFullyAppended(appendedItem: IBufferPlaybackQueueItem<T>): void;
|
|
106
|
-
protected removeSegment(nextRemoveItem: IBufferPlaybackQueueItem<T>, signal: AbortSignal): Promise<void>;
|
|
107
|
-
protected onDownloadItem(downloadedItem: IBufferPlaybackQueueItem<T>): Promise<void>;
|
|
108
|
-
protected pruneVirtualBuffer(currentPosition: Milliseconds): void;
|
|
109
|
-
protected updateRepresentationsBaseUrlIfNeeded(): void;
|
|
110
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { BaseVirtualBufferManager } from "./baseVirtualBufferManager";
|
|
2
|
-
import type { Dependencies, IBufferPlaybackQueueItem, ISomeDataLoadedCallbackParams, IVirtualBufferManager } from "../types";
|
|
3
|
-
import type { ByteRangeSegment, Representation, StreamKind } from "../../../../utils/parsers/types";
|
|
4
|
-
import type { NativeBufferManager } from "../nativeBufferManager";
|
|
5
|
-
import type { FetchParamsWithUrl, Priority } from "../../fetcher";
|
|
6
|
-
export declare class ByteRangeVirtualBufferManager extends BaseVirtualBufferManager<ByteRangeSegment> implements IVirtualBufferManager<ByteRangeSegment> {
|
|
7
|
-
constructor(kind: StreamKind, nativeBufferManager: NativeBufferManager, representations: Representation[], dependencies: Dependencies);
|
|
8
|
-
protected override loadItems(itemsToLoad: IBufferPlaybackQueueItem<ByteRangeSegment>[], representation: Representation, priority?: Priority): Promise<void>;
|
|
9
|
-
protected override selectItemsToLoad(): IBufferPlaybackQueueItem<ByteRangeSegment>[];
|
|
10
|
-
protected override prepareFetchParams(items: IBufferPlaybackQueueItem<ByteRangeSegment>[], representation: Representation): FetchParamsWithUrl;
|
|
11
|
-
/**
|
|
12
|
-
* Закидываем в буфер сегменты атомарнее чем сегмент целиком. Например, по боксам в мпеге и по блокам в вебме.
|
|
13
|
-
* Таким образом не ждём его полной загрузки и готовы играть его намного быстрее
|
|
14
|
-
* @param dataView – данные, размер буфера – весь запрос
|
|
15
|
-
* @param globalFrom – Отступ dataView от начала файла, совпадает с отсупами сегментов
|
|
16
|
-
* @param loaded – Объём загруженных в dataView данных (всё что больше – пока нули)
|
|
17
|
-
* @private
|
|
18
|
-
*/
|
|
19
|
-
protected override onSomeDataLoaded({ downloadingItems, dataView, representationId, globalFrom, loaded, signal }: ISomeDataLoadedCallbackParams<ByteRangeSegment>): Promise<void>;
|
|
20
|
-
protected override updateRepresentationBaseUrl(representation: Representation, newBaseUrl: string): void;
|
|
21
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { BaseVirtualBufferManager } from "./baseVirtualBufferManager";
|
|
2
|
-
import type { Dependencies, IBufferPlaybackQueueItem, ISomeDataLoadedCallbackParams, IVirtualBufferManager } from "../types";
|
|
3
|
-
import type { TemplateSegment, Representation, StreamKind } from "../../../../utils/parsers/types";
|
|
4
|
-
import type { NativeBufferManager } from "../nativeBufferManager";
|
|
5
|
-
import type { FetchParamsWithUrl, Priority } from "../../fetcher";
|
|
6
|
-
export declare class TemplateVirtualBufferManager extends BaseVirtualBufferManager<TemplateSegment> implements IVirtualBufferManager<TemplateSegment> {
|
|
7
|
-
constructor(kind: StreamKind, nativeBufferManager: NativeBufferManager, representations: Representation[], dependencies: Dependencies);
|
|
8
|
-
protected override loadItems(itemsToLoad: IBufferPlaybackQueueItem<TemplateSegment>[], representation: Representation, priority?: Priority): Promise<void>;
|
|
9
|
-
protected override selectItemsToLoad(): IBufferPlaybackQueueItem<TemplateSegment>[];
|
|
10
|
-
protected override prepareFetchParams(items: IBufferPlaybackQueueItem<TemplateSegment>[], representation: Representation): FetchParamsWithUrl;
|
|
11
|
-
protected getFetchUrl(items: IBufferPlaybackQueueItem<TemplateSegment>[], representation: Representation): URL;
|
|
12
|
-
/**
|
|
13
|
-
* Закидываем в буфер сегменты атомарнее чем сегмент целиком. Например, по боксам в мпеге и по блокам в вебме.
|
|
14
|
-
* Таким образом не ждём его полной загрузки и готовы играть его намного быстрее
|
|
15
|
-
* @param dataView – данные, размер буфера – весь запрос
|
|
16
|
-
* @param loaded – Объём загруженных в dataView данных (всё что больше – пока нули)
|
|
17
|
-
* @private
|
|
18
|
-
*/
|
|
19
|
-
protected override onSomeDataLoaded({ downloadingItems, dataView, representationId, loaded, signal }: ISomeDataLoadedCallbackParams<TemplateSegment>): Promise<void>;
|
|
20
|
-
protected override updateRepresentationBaseUrl(representation: Representation, newBaseUrl: string): void;
|
|
21
|
-
}
|