@vkontakte/videoplayer-core 2.0.169-dev.b7ed8d2a3.0 → 2.0.170-dev.0bc518265.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 +60 -64
- package/es2015.esm.js +60 -64
- package/esnext.cjs +56 -60
- package/esnext.esm.js +47 -51
- package/evergreen.esm.js +56 -60
- package/package.json +2 -2
- package/types/providers/DashLiveProvider/utils/LiveDashPlayer.d.ts +2 -0
- package/types/providers/DashProvider/baseDashProvider.d.ts +0 -2
- package/types/providers/DashProvider/lib/fetcher.d.ts +5 -1
- package/types/providers/DashProviderVirtual/baseDashProvider.d.ts +0 -1
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.versionA.d.ts +18 -0
- package/types/providers/DashProviderVirtual/lib/fetcher.d.ts +5 -2
- package/types/providers/DashProviderVirtual/lib/player/basePlayer.d.ts +2 -0
- package/types/providers/ProviderContainer/index.d.ts +0 -1
- package/types/providers/utils/Abr/types.d.ts +0 -2
- package/types/utils/ClientChecker/services/DisplayChecker.d.ts +6 -0
- package/types/utils/ClientChecker/types/displayMode.d.ts +8 -0
- package/types/utils/autoSelectTrack.d.ts +3 -4
- package/types/utils/tuningConfig.d.ts +11 -3
- package/types/providers/utils/Abr/rules/video/failedVideoTrackRule.d.ts +0 -14
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-dev.0bc518265.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-dev.0bc518265.0"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -49,6 +49,8 @@ export default class LiveDashPlayer {
|
|
|
49
49
|
private bufferStates;
|
|
50
50
|
private downloadRate?;
|
|
51
51
|
private sourceJitter;
|
|
52
|
+
/** Токен для защиты от устаревших callback'ов sourceopen при многократных вызовах _setVideoSrc */
|
|
53
|
+
private srcToken;
|
|
52
54
|
private chunkRateEstimator;
|
|
53
55
|
private manifestUrl;
|
|
54
56
|
private urlResolver;
|
|
@@ -16,7 +16,6 @@ import { ElementSizeManager } from "../utils/HTMLVideoElement/ElementSizeManager
|
|
|
16
16
|
type IParams = IProviderParams<IDashURLSource> & {
|
|
17
17
|
sourceHls?: IHLSSource;
|
|
18
18
|
forceVideoCodec?: VideoCodec;
|
|
19
|
-
failedVideoTrack?: Nullable<IVideoTrack>;
|
|
20
19
|
isOnDemand?: boolean;
|
|
21
20
|
dashMaxTvVideoQuality?: Nullable<ExactVideoQuality>;
|
|
22
21
|
};
|
|
@@ -34,7 +33,6 @@ export default abstract class BaseDashProvider implements IProvider {
|
|
|
34
33
|
protected stallsManager: StallsManager;
|
|
35
34
|
protected elementSizeManager: ElementSizeManager;
|
|
36
35
|
protected abrManager: AbrManager;
|
|
37
|
-
protected failedVideoTrack: Nullable<IVideoTrack>;
|
|
38
36
|
protected videoTracksMap: Map<IVideoTrack, {
|
|
39
37
|
stream: Stream;
|
|
40
38
|
representation: Representation;
|
|
@@ -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;
|
|
@@ -16,7 +16,6 @@ import { AbrManager } from "../utils/Abr/abrManager";
|
|
|
16
16
|
type IParams = IProviderParams<IDashURLSource> & {
|
|
17
17
|
sourceHls?: IHLSSource;
|
|
18
18
|
forceVideoCodec?: VideoCodec;
|
|
19
|
-
failedVideoTrack?: Nullable<IVideoTrack>;
|
|
20
19
|
isOnDemand?: boolean;
|
|
21
20
|
dashMaxTvVideoQuality?: Nullable<ExactVideoQuality>;
|
|
22
21
|
};
|
|
@@ -79,8 +79,26 @@ export declare abstract class BaseVirtualBufferManager<T extends Segment> implem
|
|
|
79
79
|
setPreloadOnly(preloadOnly: boolean): void;
|
|
80
80
|
destroy(): void;
|
|
81
81
|
protected verifyBufferPlaybackQueue(position: Milliseconds): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Удаляет из `bufferPlaybackQueue` «зомби»-сегменты — те, что попали в очередь через
|
|
84
|
+
* `onSomeDataLoaded` → `onDownloadItem` (sub-segment feeding) со статусом `DOWNLOADING`,
|
|
85
|
+
* а затем были сброшены в `NONE` вызовом `abortDownloadingItems` (`data` = null, `loadedBytes` = 0),
|
|
86
|
+
* но из самой очереди не удалены.
|
|
87
|
+
*
|
|
88
|
+
* Зомби вызывает дедлок:
|
|
89
|
+
* 1. `maintain` → `maintainPlaybackBuffer` → `selectDownloadingItems` начинает выбор новых сегментов
|
|
90
|
+
* для скачивания после последнего элемента `bufferPlaybackQueue`. Зомби в очереди сдвигает
|
|
91
|
+
* эту позицию вперёд — сегмент пропускается и никогда не перевыбирается.
|
|
92
|
+
* 2. `maintain` → `maintainNativeBuffer` ищет `nextPlayingItem` как первый элемент с `bufferStatus` !== `FED`.
|
|
93
|
+
* Находит зомби, но не может его скормить (`data` = null) и не переходит к следующим сегментам.
|
|
94
|
+
*
|
|
95
|
+
* Метод вызывается в `maintain` между `verifyBufferPlaybackQueue` и `maintainPlaybackBuffer`,
|
|
96
|
+
* чтобы очистить очередь до того, как `selectDownloadingItems` начнёт по ней работать.
|
|
97
|
+
*/
|
|
98
|
+
protected sanitizeBufferPlaybackQueue(): boolean;
|
|
82
99
|
protected forceSwitchCondition(oldRepresentation: Representation, newRepresentation: Representation): boolean;
|
|
83
100
|
protected clearBuffer(): Promise<void>;
|
|
101
|
+
private resetBuffer;
|
|
84
102
|
protected abortDownload(): void;
|
|
85
103
|
protected abortDownloadingItems(): void;
|
|
86
104
|
protected abortNativeBuffer(): Promise<boolean>;
|
|
@@ -2,6 +2,7 @@ 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 { 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 {
|
|
@@ -73,11 +75,12 @@ export declare class Fetcher {
|
|
|
73
75
|
private measureNonSegmentRequests;
|
|
74
76
|
private measureFastSamples;
|
|
75
77
|
private preloadFirstSegment;
|
|
78
|
+
private maxQualityForFirstSegmentPreload;
|
|
76
79
|
private startupPhase;
|
|
77
80
|
private performanceObserver;
|
|
78
81
|
private pendingConnectionMetrics;
|
|
79
82
|
private handleExtendedNetworkErrorsSet;
|
|
80
|
-
constructor({ throughputEstimator, requestQuic, tracer, compatibilityMode, useEnableSubtitlesParam, handleExtendedNetworkErrorsSet, useUrlCacheMechanism, measureNonSegmentRequests, measureFastSamples, preloadFirstSegment }: IParams);
|
|
83
|
+
constructor({ throughputEstimator, requestQuic, tracer, compatibilityMode, useEnableSubtitlesParam, handleExtendedNetworkErrorsSet, useUrlCacheMechanism, measureNonSegmentRequests, measureFastSamples, preloadFirstSegment, maxQualityForFirstSegmentPreload }: IParams);
|
|
81
84
|
private onHeadersReceived;
|
|
82
85
|
private setupPerformanceObserver;
|
|
83
86
|
private processResourceTiming;
|
|
@@ -87,7 +90,7 @@ export declare class Fetcher {
|
|
|
87
90
|
private trackRequestStart;
|
|
88
91
|
fetchManifest: ReturnType<typeof abortable<[string], string | null>>;
|
|
89
92
|
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>;
|
|
93
|
+
fetchRepresentation<T extends Segment>(segmentReference: SegmentReference, parser: GenericContainerParser<unknown>, dowbloadAbortSignal: AbortSignal, priority?: Priority, representationHeight?: number): Promise<RepresentationFetchResult<T> | null | undefined>;
|
|
91
94
|
destroy(): void;
|
|
92
95
|
private fetchByteRangeRepresentation;
|
|
93
96
|
private fetchTemplateRepresentation;
|
|
@@ -23,6 +23,8 @@ export declare abstract class BasePlayer {
|
|
|
23
23
|
protected stallTracer: ITracer | null;
|
|
24
24
|
protected forceVideoCodec?: VideoCodec;
|
|
25
25
|
protected stallTimeInWaitingExitAttemptMade: Milliseconds;
|
|
26
|
+
protected stallStartTime: Milliseconds | null;
|
|
27
|
+
protected lastForceSeekTimestamp: Milliseconds | null;
|
|
26
28
|
protected videoBufferManager: IVirtualBufferManager | null;
|
|
27
29
|
protected audioBufferManager: IVirtualBufferManager | null;
|
|
28
30
|
protected bufferManagers: IVirtualBufferManager[];
|
|
@@ -35,7 +35,6 @@ export default class ProviderContainer implements IProviderContainer {
|
|
|
35
35
|
private tracer;
|
|
36
36
|
private params;
|
|
37
37
|
private currentProviderStarted;
|
|
38
|
-
private currentFailedVideoTrack;
|
|
39
38
|
private volumeMultiplierManager;
|
|
40
39
|
private dashMaxTvVideoQuality;
|
|
41
40
|
private mayday;
|
|
@@ -15,7 +15,6 @@ export declare enum VideoRuleName {
|
|
|
15
15
|
Buffer = "buffer_rule",
|
|
16
16
|
Bola = "bola_rule",
|
|
17
17
|
FitsContainer = "fits_container_rule",
|
|
18
|
-
FailedVideoTrack = "failed_video_track_rule",
|
|
19
18
|
TvDisabledVideoTrack = "tv_disabled_video_track_rule",
|
|
20
19
|
Stalls = "stalls_rule",
|
|
21
20
|
LowerLimit = "lower_limit_rule",
|
|
@@ -59,7 +58,6 @@ export interface IInitAbrManagerContext {
|
|
|
59
58
|
rtt$: IValueSubject<Milliseconds>;
|
|
60
59
|
throughputVariance$?: IValueSubject<number>;
|
|
61
60
|
element: HTMLMediaElement;
|
|
62
|
-
failedVideoTrack: Nullable<IVideoTrack>;
|
|
63
61
|
abrLogger: IComponentLogger;
|
|
64
62
|
panelSize?: IRectangle;
|
|
65
63
|
}
|
|
@@ -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
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ITuningConfig } from "./tuningConfig";
|
|
2
|
-
import type { Kbps, Milliseconds, IRectangle, QualityLimits, IComponentLogger
|
|
2
|
+
import type { Kbps, Milliseconds, IRectangle, QualityLimits, IComponentLogger } from "@vkontakte/videoplayer-shared";
|
|
3
3
|
import { type ExactVideoQuality } from "@vkontakte/videoplayer-shared";
|
|
4
4
|
import type { IAudioTrack, IBaseTrack, IVideoTrack } from "../player/types";
|
|
5
5
|
interface IConstraints<T extends IBaseTrack> {
|
|
@@ -11,7 +11,6 @@ interface IConstraints<T extends IBaseTrack> {
|
|
|
11
11
|
playbackRate?: number;
|
|
12
12
|
forwardBufferHealth?: number;
|
|
13
13
|
current?: T;
|
|
14
|
-
failedVideoTrack?: Nullable<T>;
|
|
15
14
|
visible?: boolean;
|
|
16
15
|
history?: TrackHistory<T>;
|
|
17
16
|
droppedVideoMaxQualityLimit?: ExactVideoQuality;
|
|
@@ -30,8 +29,8 @@ export declare class TrackHistory<T extends IBaseTrack> {
|
|
|
30
29
|
export declare const defaultEmptyArrayErrorMessage = "Assertion \"ABR Tracks is empty array\" failed";
|
|
31
30
|
export declare const getMinPossibleAudioForVideoOld: (videoTrack: IVideoTrack, videoTracks: IVideoTrack[], audioTracks: IAudioTrack[], minVideoAudioRatio: number) => IAudioTrack | undefined;
|
|
32
31
|
export declare const getMinPossibleAudioForVideoNew: (videoTrack: IVideoTrack, videoTracks: IVideoTrack[], audioTracks: IAudioTrack[], minVideoAudioRatio: number) => IAudioTrack | undefined;
|
|
33
|
-
export declare const autoSelectVideoTrackNew: (videoTracks: IVideoTrack[], { container, estimatedThroughput, tuning, limits, reserve, forwardBufferHealth, playbackRate, current,
|
|
34
|
-
export declare const autoSelectVideoTrackOld: (videoTracks: IVideoTrack[], { container, estimatedThroughput, tuning, limits, reserve, forwardBufferHealth, playbackRate, current,
|
|
32
|
+
export declare const autoSelectVideoTrackNew: (videoTracks: IVideoTrack[], { container, estimatedThroughput, tuning, limits, reserve, forwardBufferHealth, playbackRate, current, history, visible, droppedVideoMaxQualityLimit, stallsVideoMaxQualityLimit, stallsPredictedThroughput, abrLogger, panelSize }: IConstraints<IVideoTrack>) => IVideoTrack;
|
|
33
|
+
export declare const autoSelectVideoTrackOld: (videoTracks: IVideoTrack[], { container, estimatedThroughput, tuning, limits, reserve, forwardBufferHealth, playbackRate, current, history, visible, droppedVideoMaxQualityLimit, stallsVideoMaxQualityLimit, stallsPredictedThroughput, abrLogger, panelSize }: IConstraints<IVideoTrack>) => IVideoTrack;
|
|
35
34
|
export declare const autoSelectAudioTrackForVideoOld: (selectedVideoTrack: IVideoTrack, videoTracks: IVideoTrack[], audioTracks: IAudioTrack[], { estimatedThroughput, tuning, playbackRate, forwardBufferHealth, history, abrLogger, stallsPredictedThroughput }: IConstraints<IAudioTrack>) => IAudioTrack | undefined;
|
|
36
35
|
export declare const autoSelectAudioTrackForVideoNew: (selectedVideoTrack: IVideoTrack, videoTracks: IVideoTrack[], audioTracks: IAudioTrack[], { estimatedThroughput, tuning, playbackRate, forwardBufferHealth, history, abrLogger, stallsPredictedThroughput }: IConstraints<IAudioTrack>) => IAudioTrack | undefined;
|
|
37
36
|
export {};
|
|
@@ -184,6 +184,7 @@ export type ITuningConfig = {
|
|
|
184
184
|
mutexStallExitPolicy: boolean;
|
|
185
185
|
useFetchPriorityHints: boolean;
|
|
186
186
|
useAbortMSEFix: boolean;
|
|
187
|
+
useByteRangeNullFetchRecovery: boolean;
|
|
187
188
|
enableBaseUrlSupport: boolean;
|
|
188
189
|
maxSegmentRetryCount: number;
|
|
189
190
|
sourceOpenTimeout: number;
|
|
@@ -202,7 +203,6 @@ export type ITuningConfig = {
|
|
|
202
203
|
minNativeBufferSize: Milliseconds;
|
|
203
204
|
removeTimeShiftFromSegment: Milliseconds;
|
|
204
205
|
tickMaintainInterval: Milliseconds;
|
|
205
|
-
tickMaintainThrottle: Milliseconds;
|
|
206
206
|
minSafeBufferToPlay: Milliseconds;
|
|
207
207
|
useBufferHoldingOnlyOnStall: boolean;
|
|
208
208
|
useNewAbr: boolean;
|
|
@@ -210,9 +210,7 @@ export type ITuningConfig = {
|
|
|
210
210
|
abrVideoRules: VideoRuleName[];
|
|
211
211
|
abrAudioRules: AudioRuleName[];
|
|
212
212
|
useDynamicBirtateRule: boolean;
|
|
213
|
-
useNewFailoverLogic: boolean;
|
|
214
213
|
useFailoverHostsOnAllProviderCrash: boolean;
|
|
215
|
-
videoTrackBanAfterProviderFail: Milliseconds;
|
|
216
214
|
saveData3gQualityLimit: ExactVideoQuality;
|
|
217
215
|
saveData2gQualityLimit: ExactVideoQuality;
|
|
218
216
|
useConnectionDataUpperLimit: boolean;
|
|
@@ -253,6 +251,8 @@ export type ITuningConfig = {
|
|
|
253
251
|
dashMaxTvVideoQuality: boolean;
|
|
254
252
|
checkRepresentationCanPlayType: Extract<CanPlayTypeResult, "maybe" | "probably"> | false;
|
|
255
253
|
preloadFirstSegment: boolean;
|
|
254
|
+
jumpGapToNearestBuffer: boolean;
|
|
255
|
+
maxQualityForFirstSegmentPreload: ExactVideoQuality;
|
|
256
256
|
downloadTime: {
|
|
257
257
|
minLookaheadSegments: number;
|
|
258
258
|
safetyFactor: number;
|
|
@@ -456,6 +456,14 @@ export type ITuningConfig = {
|
|
|
456
456
|
useDurationFromSegments: boolean;
|
|
457
457
|
/** включен режим проигрывания только аудио (без видео) */
|
|
458
458
|
audioOnly: boolean;
|
|
459
|
+
/**
|
|
460
|
+
* Переводить провайдер в READY по loadedmetadata вместо canplay.
|
|
461
|
+
* canplay означает, что видео уже может играться, что избыточно для READY —
|
|
462
|
+
* достаточно получить манифест (loadedmetadata).
|
|
463
|
+
* Применяется только когда желаемое состояние — READY (preload): при автоплее
|
|
464
|
+
* провайдер по-прежнему ждёт canplay, чтобы play() не вызывался до появления данных.
|
|
465
|
+
*/
|
|
466
|
+
readyOnLoadedMetadata: boolean;
|
|
459
467
|
};
|
|
460
468
|
export type IOptionalTuningConfig = RecursivePartial<ITuningConfig>;
|
|
461
469
|
export declare const fillDefault: (partial: IOptionalTuningConfig) => ITuningConfig;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { IAbrRule, IAbrRuleResolution, IRuleInitContext, IVideoAbrContext } from "../../types";
|
|
2
|
-
import type { IVideoTrack } from "../../../../../player/types";
|
|
3
|
-
import type { Nullable } from "@vkontakte/videoplayer-shared";
|
|
4
|
-
import { LimitAboveRule } from "../limitAboveRule";
|
|
5
|
-
import type { RulePhaseConfig } from "../../controllers/abrPhaseController";
|
|
6
|
-
type FailedVideoTracLogsArgs = [banTrack: Nullable<IVideoTrack>];
|
|
7
|
-
export declare class FailedVideoTrackRule extends LimitAboveRule<IVideoTrack, IVideoAbrContext, FailedVideoTracLogsArgs> implements IAbrRule<IVideoTrack, IVideoAbrContext> {
|
|
8
|
-
protected banTrack: Nullable<IVideoTrack>;
|
|
9
|
-
constructor(phaseConfig: RulePhaseConfig);
|
|
10
|
-
init(initContext: IRuleInitContext): void;
|
|
11
|
-
execute(context: IVideoAbrContext): IAbrRuleResolution<IVideoTrack>;
|
|
12
|
-
protected createLogMessage(selectedTrack: IVideoTrack, banTrack: Nullable<IVideoTrack>): string;
|
|
13
|
-
}
|
|
14
|
-
export {};
|