@vkontakte/videoplayer-core 2.0.156-dev.fa4486263.0 → 2.0.156
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 +109 -19
- package/es2015.esm.js +110 -20
- package/es2018.cjs +109 -19
- package/es2018.esm.js +109 -19
- package/es2024.cjs +109 -19
- package/es2024.esm.js +110 -20
- package/esnext.cjs +109 -19
- package/esnext.esm.js +110 -20
- package/evergreen.esm.js +103 -13
- package/package.json +2 -2
- package/types/player/Player.d.ts +3 -2
- package/types/player/types.d.ts +6 -2
- package/types/providers/ChromecastPresentationApiProvider/types.d.ts +1 -1
- package/types/providers/ChromecastProvider/types.d.ts +1 -1
- package/types/providers/DashLiveProvider/DashLiveProvider.d.ts +1 -0
- package/types/providers/DashProvider/baseDashProvider.d.ts +4 -1
- package/types/providers/DashProvider/lib/buffer.d.ts +3 -1
- package/types/providers/DashProvider/lib/player.d.ts +2 -1
- package/types/providers/DashProviderVirtual/baseDashProvider.d.ts +11 -8
- package/types/providers/DashProviderVirtual/lib/buffer/types.d.ts +5 -3
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.d.ts +11 -4
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/byteRangeVirtualBufferManager.d.ts +1 -1
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/templateVirtualBufferManager.d.ts +1 -1
- package/types/providers/DashProviderVirtual/lib/fetcher.d.ts +1 -1
- package/types/providers/DashProviderVirtual/lib/player/basePlayer.d.ts +3 -2
- package/types/providers/HlsLiveProvider/index.d.ts +1 -0
- package/types/providers/HlsProvider/index.d.ts +1 -0
- package/types/providers/MpegProvider/index.d.ts +1 -0
- package/types/providers/ProviderContainer/index.d.ts +2 -0
- package/types/providers/ProviderContainer/utils/playbackHangup.d.ts +5 -2
- package/types/providers/WebRTCLiveProvider/WebRTCLiveProvider.d.ts +1 -0
- package/types/providers/types.d.ts +2 -0
- package/types/providers/utils/Abr/abrController.d.ts +15 -0
- package/types/providers/utils/Abr/abrManager.d.ts +18 -0
- package/types/providers/utils/Abr/controllers/stallsController.d.ts +33 -0
- package/types/providers/utils/Abr/rules/audio/audioThroughputRule.d.ts +12 -0
- package/types/providers/utils/Abr/rules/audio/minAudioForVideoRule.d.ts +11 -0
- package/types/providers/utils/Abr/rules/baseRule.d.ts +19 -0
- package/types/providers/utils/Abr/rules/limitAboveRule.d.ts +11 -0
- package/types/providers/utils/Abr/rules/limitBelowRule.d.ts +11 -0
- package/types/providers/utils/Abr/rules/video/bufferRule.d.ts +11 -0
- package/types/providers/utils/Abr/rules/video/fitsContainerRule.d.ts +14 -0
- package/types/providers/utils/Abr/rules/video/lowerLimitRule.d.ts +12 -0
- package/types/providers/utils/Abr/rules/video/stallsRule.d.ts +18 -0
- package/types/providers/utils/Abr/rules/video/throughputRule.d.ts +12 -0
- package/types/providers/utils/Abr/rules/video/upperLimitRule.d.ts +12 -0
- package/types/providers/utils/Abr/trackHistory.d.ts +9 -0
- package/types/providers/utils/Abr/types.d.ts +105 -0
- package/types/providers/utils/Abr/utils.d.ts +13 -0
- package/types/providers/{DashProvider/lib → utils/HTMLVideoElement}/ElementSizeManager.d.ts +1 -1
- package/types/providers/utils/HTMLVideoElement/pool.d.ts +4 -3
- package/types/providers/utils/syncDesiredState.d.ts +4 -2
- package/types/utils/tuningConfig.d.ts +24 -2
- package/types/providers/DashProviderVirtual/lib/ElementSizeManager.d.ts +0 -20
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IAbrRule, IAbrRuleResolution, IVideoAbrContext, RuleConfidence } from "../../types";
|
|
2
|
+
import type { IVideoTrack } from "../../../../../player/types";
|
|
3
|
+
import type { QualityLimits } from "@vkontakte/videoplayer-shared";
|
|
4
|
+
import { type ExactVideoQuality } from "@vkontakte/videoplayer-shared";
|
|
5
|
+
import { LimitBelowRule } from "../limitBelowRule";
|
|
6
|
+
type LowerLimitLogsArgs = [limitsAreInvalid: boolean, lowestAvailableQuality: ExactVideoQuality | undefined, highestAvailableQuality: ExactVideoQuality | undefined, limits: QualityLimits];
|
|
7
|
+
export declare class LowerLimitRule extends LimitBelowRule<IVideoTrack, IVideoAbrContext, LowerLimitLogsArgs> implements IAbrRule<IVideoTrack, IVideoAbrContext> {
|
|
8
|
+
constructor(confidence: RuleConfidence);
|
|
9
|
+
execute(context: IVideoAbrContext): IAbrRuleResolution<IVideoTrack>;
|
|
10
|
+
protected createLogMessage(selectedTrack: IVideoTrack, limitsAreInvalid: boolean, lowestAvailableQuality: ExactVideoQuality | undefined, highestAvailableQuality: ExactVideoQuality | undefined, limits: QualityLimits): string;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { IAbrRule, IAbrRuleResolution, IVideoAbrContext, RuleConfidence } from "../../types";
|
|
2
|
+
import type { IVideoTrack } from "../../../../../player/types";
|
|
3
|
+
import type { Kbps } from "@vkontakte/videoplayer-shared";
|
|
4
|
+
import { LimitAboveRule } from "../limitAboveRule";
|
|
5
|
+
import type { ITuningConfig } from "../../../../../utils/tuningConfig";
|
|
6
|
+
type StallLogsArgs = [forwardBufferHealth: number | undefined, playbackRate: number, reserve: Kbps, playbackRateFactor: number, bitrateFactor: number, tuning: ITuningConfig];
|
|
7
|
+
export declare class StallsRule extends LimitAboveRule<IVideoTrack, IVideoAbrContext, StallLogsArgs> implements IAbrRule<IVideoTrack, IVideoAbrContext> {
|
|
8
|
+
private severeStallOccurred;
|
|
9
|
+
private qualityRestrictionTimer;
|
|
10
|
+
private lastStallDurationRestriction;
|
|
11
|
+
private maxQualityLimitOnStall;
|
|
12
|
+
private predictedThroughputWithoutData;
|
|
13
|
+
constructor(confidence: RuleConfidence);
|
|
14
|
+
execute(context: IVideoAbrContext): IAbrRuleResolution<IVideoTrack>;
|
|
15
|
+
protected createLogMessage(selectedTrack: IVideoTrack, forwardBufferHealth: number | undefined, playbackRate: number, reserve: Kbps, playbackRateFactor: number, bitrateFactor: number, tuning: ITuningConfig): string;
|
|
16
|
+
private updateStallQualityLimits;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IAbrRule, IAbrRuleResolution, IVideoAbrContext, RuleConfidence } from "../../types";
|
|
2
|
+
import type { IVideoTrack } from "../../../../../player/types";
|
|
3
|
+
import type { Kbps } from "@vkontakte/videoplayer-shared";
|
|
4
|
+
import { LimitAboveRule } from "../limitAboveRule";
|
|
5
|
+
import type { ITuningConfig } from "../../../../../utils/tuningConfig";
|
|
6
|
+
type ThroughputLogsArgs = [forwardBufferHealth: number | undefined, playbackRate: number, reserve: Kbps, playbackRateFactor: number, bitrateFactor: number, estimatedThroughput: Kbps, tuning: ITuningConfig];
|
|
7
|
+
export declare class ThroughputRule extends LimitAboveRule<IVideoTrack, IVideoAbrContext, ThroughputLogsArgs> implements IAbrRule<IVideoTrack, IVideoAbrContext> {
|
|
8
|
+
constructor(confidence: RuleConfidence);
|
|
9
|
+
execute(context: IVideoAbrContext): IAbrRuleResolution<IVideoTrack>;
|
|
10
|
+
protected createLogMessage(selectedTrack: IVideoTrack, forwardBufferHealth: number | undefined, playbackRate: number, reserve: Kbps, playbackRateFactor: number, bitrateFactor: number, estimatedThroughput: Kbps, tuning: ITuningConfig): string;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IAbrRule, IAbrRuleResolution, IVideoAbrContext, RuleConfidence } from "../../types";
|
|
2
|
+
import type { IVideoTrack } from "../../../../../player/types";
|
|
3
|
+
import type { QualityLimits, VideoQuality } from "@vkontakte/videoplayer-shared";
|
|
4
|
+
import { type ExactVideoQuality } from "@vkontakte/videoplayer-shared";
|
|
5
|
+
import { LimitAboveRule } from "../limitAboveRule";
|
|
6
|
+
type UpperLimitsLogsArgs = [limitsAreInvalid: boolean, lowestAvailableQuality: ExactVideoQuality | undefined, highestAvailableQuality: ExactVideoQuality | undefined, visible: boolean, limits: QualityLimits, backgroundVideoQualityLimit: VideoQuality];
|
|
7
|
+
export declare class UpperLimitsRule extends LimitAboveRule<IVideoTrack, IVideoAbrContext, UpperLimitsLogsArgs> implements IAbrRule<IVideoTrack, IVideoAbrContext> {
|
|
8
|
+
constructor(confidence: RuleConfidence);
|
|
9
|
+
execute(context: IVideoAbrContext): IAbrRuleResolution<IVideoTrack>;
|
|
10
|
+
protected createLogMessage(selectedTrack: IVideoTrack, limitsAreInvalid: boolean, lowestAvailableQuality: ExactVideoQuality | undefined, highestAvailableQuality: ExactVideoQuality | undefined, visible: boolean, limits: QualityLimits, backgroundVideoQualityLimit: VideoQuality): string;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IBaseTrack } from "../../../player/types";
|
|
2
|
+
import type { Milliseconds } from "@vkontakte/videoplayer-shared";
|
|
3
|
+
export declare class TrackHistory<T extends IBaseTrack> {
|
|
4
|
+
last: T | undefined;
|
|
5
|
+
history: Record<IBaseTrack["id"], Milliseconds>;
|
|
6
|
+
recordSelection(track: T);
|
|
7
|
+
recordSwitch(track: T | undefined);
|
|
8
|
+
clear();
|
|
9
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { IAudioTrack, IBaseTrack, IVideoTrack } from "../../../player/types";
|
|
2
|
+
import type { IComponentLogger, IObservable, IRectangle, IValueSubject, Kbps, Milliseconds, QualityLimits } from "@vkontakte/videoplayer-shared";
|
|
3
|
+
import type { ITuningConfig } from "../../../utils/tuningConfig";
|
|
4
|
+
import type { Representation, Segment } from "../parsers/types";
|
|
5
|
+
import type { ElementSizeManager } from "../HTMLVideoElement/ElementSizeManager";
|
|
6
|
+
import type { IObservableVideo } from "../HTMLVideoElement/observable";
|
|
7
|
+
export declare enum RuleConfidence {
|
|
8
|
+
Low = 0,
|
|
9
|
+
Normal = 1,
|
|
10
|
+
High = 2
|
|
11
|
+
}
|
|
12
|
+
export declare enum VideoRuleName {
|
|
13
|
+
Buffer = "buffer_rule",
|
|
14
|
+
FitsContainer = "fits_container_rule",
|
|
15
|
+
Stalls = "stalls_rule",
|
|
16
|
+
LowerLimit = "lower_limit_rule",
|
|
17
|
+
UpperLimit = "upper_limit_rule",
|
|
18
|
+
Throughput = "throughput_rule"
|
|
19
|
+
}
|
|
20
|
+
export declare enum AudioRuleName {
|
|
21
|
+
MinAudioForVideo = "min_audio_for_video_rule",
|
|
22
|
+
Throughput = "throughput_rule"
|
|
23
|
+
}
|
|
24
|
+
export declare enum RuleType {
|
|
25
|
+
LimitBelow = "limit_below",
|
|
26
|
+
LimitAbove = "limit_above"
|
|
27
|
+
}
|
|
28
|
+
export interface IUpdatableAbrManagerContext {
|
|
29
|
+
isAuto: boolean;
|
|
30
|
+
videoTracks: IVideoTrack[];
|
|
31
|
+
audioTracks: IAudioTrack[];
|
|
32
|
+
currentVideoTrack: IVideoTrack | undefined;
|
|
33
|
+
desiredVideoTrack: IVideoTrack | undefined;
|
|
34
|
+
limits: QualityLimits;
|
|
35
|
+
forwardBufferHealth?: number;
|
|
36
|
+
forwardVideoBufferRepresentations: Map<Representation["id"], Segment[]> | undefined;
|
|
37
|
+
forwardAudioBufferRepresentations: Map<Representation["id"], Segment[]> | undefined;
|
|
38
|
+
}
|
|
39
|
+
export interface IInitAbrManagerContext {
|
|
40
|
+
tuning: ITuningConfig;
|
|
41
|
+
isSeeked$: IObservable<boolean>;
|
|
42
|
+
currentStallDuration$: IValueSubject<Milliseconds>;
|
|
43
|
+
videoLastDataObtainedTimestamp$: IValueSubject<Milliseconds>;
|
|
44
|
+
throughput$: IValueSubject<Kbps>;
|
|
45
|
+
rtt$: IValueSubject<Milliseconds>;
|
|
46
|
+
element: HTMLVideoElement;
|
|
47
|
+
abrLogger: IComponentLogger;
|
|
48
|
+
panelSize?: IRectangle;
|
|
49
|
+
}
|
|
50
|
+
export interface IVideoElementAbrManagerContext {
|
|
51
|
+
observableVideo: IObservableVideo;
|
|
52
|
+
elementVisible$: IValueSubject<boolean>;
|
|
53
|
+
elementSizeManager: ElementSizeManager;
|
|
54
|
+
}
|
|
55
|
+
export interface IVideoTracksContext {
|
|
56
|
+
videoTracksAsc: IVideoTrack[];
|
|
57
|
+
videoTracksDesc: IVideoTrack[];
|
|
58
|
+
}
|
|
59
|
+
export interface IAudioTracksContext {
|
|
60
|
+
audioTracksAsc: IAudioTrack[];
|
|
61
|
+
audioTracksDesc: IAudioTrack[];
|
|
62
|
+
}
|
|
63
|
+
export type IAbrManagerContext = Omit<IUpdatableAbrManagerContext, "videoTracks" | "audioTracks"> & IVideoElementAbrManagerContext & IInitAbrManagerContext & IVideoTracksContext & IAudioTracksContext;
|
|
64
|
+
export interface IAbrRuleResolution<T extends IBaseTrack> {
|
|
65
|
+
track: T;
|
|
66
|
+
confidence: number;
|
|
67
|
+
type: RuleType;
|
|
68
|
+
name: string;
|
|
69
|
+
logMessage: string;
|
|
70
|
+
}
|
|
71
|
+
export interface IAbrRule<
|
|
72
|
+
T extends IBaseTrack,
|
|
73
|
+
C extends IBaseAbrControllerContext
|
|
74
|
+
> {
|
|
75
|
+
init(): void;
|
|
76
|
+
destroy(): void;
|
|
77
|
+
execute(context: C): IAbrRuleResolution<T>;
|
|
78
|
+
}
|
|
79
|
+
export interface IAbrController<T extends IBaseTrack> {
|
|
80
|
+
init(rules: IAbrRule<T, IBaseAbrControllerContext>[]): void;
|
|
81
|
+
destroy(): void;
|
|
82
|
+
updateContext(context: IBaseAbrControllerContext): void;
|
|
83
|
+
autoSelectTrack(): T;
|
|
84
|
+
}
|
|
85
|
+
export interface IBaseAbrControllerContext extends IVideoTracksContext {
|
|
86
|
+
currentVideoTrack: IVideoTrack | undefined;
|
|
87
|
+
lastVideoTrackSelected: IVideoTrack | undefined;
|
|
88
|
+
tuning: ITuningConfig;
|
|
89
|
+
abrLogger: IComponentLogger;
|
|
90
|
+
estimatedThroughput: Kbps;
|
|
91
|
+
reserve: Kbps;
|
|
92
|
+
forwardBufferHealth: number | undefined;
|
|
93
|
+
playbackRate: number;
|
|
94
|
+
}
|
|
95
|
+
export interface IVideoAbrContext extends IBaseAbrControllerContext {
|
|
96
|
+
container: IRectangle | undefined;
|
|
97
|
+
panelSize: IRectangle | undefined;
|
|
98
|
+
forwardBufferRepresentations: Map<Representation["id"], Segment[]> | undefined;
|
|
99
|
+
limits: QualityLimits;
|
|
100
|
+
visible: boolean;
|
|
101
|
+
severeStallOccurred: boolean;
|
|
102
|
+
lastStallDuration: Milliseconds;
|
|
103
|
+
}
|
|
104
|
+
export type IAudioAbrContext = IBaseAbrControllerContext & IAudioTracksContext;
|
|
105
|
+
export declare const isAudioAbrContext: (context: IBaseAbrControllerContext) => context is IAudioAbrContext;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IAudioTrack, IBaseTrack, IVideoTrack } from "../../../player/types";
|
|
2
|
+
export declare enum CompareTrack {
|
|
3
|
+
Descending = -1,
|
|
4
|
+
Ascending = 1
|
|
5
|
+
}
|
|
6
|
+
export declare const isVideoTrack: (track: IBaseTrack) => track is IVideoTrack;
|
|
7
|
+
export declare const getAudioTrackComparator: (type: CompareTrack) => (track1: IAudioTrack, track2: IAudioTrack) => number;
|
|
8
|
+
export declare const getVideoTrackComparator: (type: CompareTrack) => (track1: IVideoTrack, track2: IVideoTrack) => number;
|
|
9
|
+
export declare const getTrackComparator: <T extends IBaseTrack>(compareTrack: CompareTrack) => (track1: T, track2: T) => number;
|
|
10
|
+
export declare const isLowerTrack: unknown;
|
|
11
|
+
export declare const logBase: (base: number, x: number) => number;
|
|
12
|
+
export declare const bitrateFactorFromBufferLevel: (forwardBufferHealth: number, emptyFactor: number, fullFactor: number) => number;
|
|
13
|
+
export declare const getMinPossibleAudioForVideo: (videoTrack: IVideoTrack | undefined, sortedVideoTracksAsc: IVideoTrack[], sortedAudioTracksAsc: IAudioTrack[], minVideoAudioRatio: number) => IAudioTrack | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IObservableVideo } from "
|
|
1
|
+
import type { IObservableVideo } from "./observable";
|
|
2
2
|
import type { IListener, IRectangle, ISubscription, IValueSubject } from "@vkontakte/videoplayer-shared";
|
|
3
3
|
interface ConnectParams {
|
|
4
4
|
video: HTMLVideoElement;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ITuningConfig } from "../../../utils/tuningConfig";
|
|
2
|
-
type
|
|
3
|
-
|
|
4
|
-
export declare const
|
|
2
|
+
type AllocateConstraints = Pick<ITuningConfig, "audioVideoSyncRate" | "disableYandexPiP" | "clearVideoElementInnerHTML" | "reuseOwnVideoElement">;
|
|
3
|
+
type DisposeConstraints = Pick<ITuningConfig, "keepVideoElement" | "clearVideoElementInnerHTML" | "reuseOwnVideoElement">;
|
|
4
|
+
export declare const allocate: (container: HTMLElement, { audioVideoSyncRate, disableYandexPiP, clearVideoElementInnerHTML, reuseOwnVideoElement }: AllocateConstraints) => HTMLVideoElement;
|
|
5
|
+
export declare const dispose: (videoElement: HTMLVideoElement, { keepVideoElement, clearVideoElementInnerHTML, reuseOwnVideoElement }: DisposeConstraints) => void;
|
|
5
6
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IListener, IObservable, ISubscription } from "@vkontakte/videoplayer-shared";
|
|
1
|
+
import type { IListener, IObservable, ISubscription, IValueSubject } from "@vkontakte/videoplayer-shared";
|
|
2
2
|
import type { IVolumeState, PlaybackRate } from "../../player/types";
|
|
3
3
|
import type { IStateMachine } from "../../utils/StateMachine/types";
|
|
4
4
|
declare const syncDesiredState: <Value>(desiredState: IStateMachine<Value | undefined>, get: () => Value | undefined, set: (value: Value | undefined) => void, { equal, changed$, onError }?: {
|
|
@@ -7,6 +7,8 @@ declare const syncDesiredState: <Value>(desiredState: IStateMachine<Value | unde
|
|
|
7
7
|
onError?: IListener<Error | unknown>;
|
|
8
8
|
}) => ISubscription;
|
|
9
9
|
export declare const syncVideoLooped: (video: HTMLVideoElement, desiredState: IStateMachine<boolean>, onError?: IListener<Error | unknown>) => ISubscription;
|
|
10
|
-
export declare const syncVideoVolumeState: (video: HTMLVideoElement, desiredState: IStateMachine<IVolumeState>, changed$: IObservable<IVolumeState>, onError?: IListener<Error | unknown
|
|
10
|
+
export declare const syncVideoVolumeState: (video: HTMLVideoElement, desiredState: IStateMachine<IVolumeState>, changed$: IObservable<IVolumeState>, onError?: IListener<Error | unknown>, params?: {
|
|
11
|
+
skipVideoElVolumeSync$: IValueSubject<boolean>;
|
|
12
|
+
}) => ISubscription;
|
|
11
13
|
export declare const syncVideoPlaybackRate: (video: HTMLVideoElement, desiredState: IStateMachine<PlaybackRate>, changed$: IObservable<PlaybackRate>, onError?: IListener<Error | unknown>) => ISubscription;
|
|
12
14
|
export default syncDesiredState;
|
|
@@ -11,6 +11,7 @@ export type ITuningConfig = {
|
|
|
11
11
|
* Если true, внутренний video элемент не будет уничтожаться при реините провайдера
|
|
12
12
|
* и при создании нового экземляра Player.
|
|
13
13
|
* Будет веcти себя аналогично элементу переданному снаружи
|
|
14
|
+
* Для кейса прямого использовани ядра
|
|
14
15
|
*/
|
|
15
16
|
keepVideoElement: boolean;
|
|
16
17
|
/**
|
|
@@ -136,11 +137,15 @@ export type ITuningConfig = {
|
|
|
136
137
|
liveStallReinitInterval: Milliseconds;
|
|
137
138
|
ignoreNetworkErrorsOnLoadInit: boolean;
|
|
138
139
|
bufferTolerance: Milliseconds;
|
|
139
|
-
|
|
140
|
+
minNativeBufferSize: Milliseconds;
|
|
141
|
+
removeTimeShiftFromSegment: Milliseconds;
|
|
140
142
|
tickMaintainInterval: Milliseconds;
|
|
141
143
|
minSafeBufferToPlay: Milliseconds;
|
|
142
144
|
useBufferHoldingOnlyOnStall: boolean;
|
|
145
|
+
useAbortResetNativeBufferMutex: boolean;
|
|
143
146
|
useNewStallExitPolicy: boolean;
|
|
147
|
+
useNewAbr: boolean;
|
|
148
|
+
useDynamicBirtateRule: boolean;
|
|
144
149
|
videoStreamRepresentaionsFilter: [VideoQuality, number, VideoCodec][];
|
|
145
150
|
};
|
|
146
151
|
dashCmafLive: {
|
|
@@ -188,6 +193,7 @@ export type ITuningConfig = {
|
|
|
188
193
|
* В случае превышения лимита при продолжении воспроизведения поток будет перезапущен с пересчитанным `offset`.
|
|
189
194
|
*/
|
|
190
195
|
maxPausedTime: number;
|
|
196
|
+
catchupLiveForMutedInactiveTab: boolean;
|
|
191
197
|
};
|
|
192
198
|
enableWakeLock: boolean;
|
|
193
199
|
enableTelemetryAtStart: boolean;
|
|
@@ -213,6 +219,8 @@ export type ITuningConfig = {
|
|
|
213
219
|
seekNearDurationBias: Seconds;
|
|
214
220
|
dashSeekInSegmentDurationThreshold: Milliseconds;
|
|
215
221
|
dashSeekInSegmentAlwaysSeekDelta: Milliseconds;
|
|
222
|
+
useDelayedPlaybackHangupWithData: boolean;
|
|
223
|
+
playbackHangupNoDataThreshold: Milliseconds;
|
|
216
224
|
endGapTolerance: Milliseconds;
|
|
217
225
|
stallIgnoreThreshold: Milliseconds;
|
|
218
226
|
gapWatchdogInterval: Milliseconds;
|
|
@@ -226,7 +234,16 @@ export type ITuningConfig = {
|
|
|
226
234
|
useNewAutoSelectVideoTrack: boolean;
|
|
227
235
|
useSafariEndlessRequestBugfix: boolean;
|
|
228
236
|
isAudioDisabled: boolean;
|
|
237
|
+
/**
|
|
238
|
+
* Разрешает ядру автостарт только если страница, на которой находится плеер активна
|
|
239
|
+
* использует document.hidden
|
|
240
|
+
*/
|
|
229
241
|
autoplayOnlyInActiveTab: boolean;
|
|
242
|
+
/**
|
|
243
|
+
* Разрешает ядру автостарт только если пдеер находится в зоне видимости
|
|
244
|
+
* использует requestAnimationFrame
|
|
245
|
+
*/
|
|
246
|
+
autoplayOnlyIfVisible: boolean;
|
|
230
247
|
dynamicImportTimeout: Milliseconds;
|
|
231
248
|
maxPlaybackTransitionInterval: Milliseconds;
|
|
232
249
|
providerErrorLimit: number;
|
|
@@ -270,7 +287,6 @@ export type ITuningConfig = {
|
|
|
270
287
|
*/
|
|
271
288
|
disableYandexPiP?: boolean;
|
|
272
289
|
asyncResolveClientChecker?: boolean;
|
|
273
|
-
autostartOnlyIfVisible?: boolean;
|
|
274
290
|
/**
|
|
275
291
|
* Если включен, то переключаем видео в состояние паузы при окончании видео.
|
|
276
292
|
*/
|
|
@@ -287,6 +303,12 @@ export type ITuningConfig = {
|
|
|
287
303
|
sendDashLiveDebug?: boolean;
|
|
288
304
|
logDashLiveDebug?: boolean;
|
|
289
305
|
useInvalidBufferFix?: boolean;
|
|
306
|
+
/**
|
|
307
|
+
* Включает режим переиспользования видеоэлемента плеера между инстансами плеера
|
|
308
|
+
* (нужно для передачи разрешений браузера от одного плеера другому, например: стартовать со звуком)
|
|
309
|
+
* (Скорее всего имеет смысл включить такой же флаг в настройках ui)
|
|
310
|
+
*/
|
|
311
|
+
reuseOwnVideoElement?: boolean;
|
|
290
312
|
};
|
|
291
313
|
export type IOptionalTuningConfig = RecursivePartial<ITuningConfig>;
|
|
292
314
|
export declare const fillDefault: (partial: IOptionalTuningConfig) => ITuningConfig;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { IObservableVideo } from "../../utils/HTMLVideoElement/observable";
|
|
2
|
-
import type { IListener, IRectangle, ISubscription } from "@vkontakte/videoplayer-shared";
|
|
3
|
-
import { ValueSubject } from "@vkontakte/videoplayer-shared";
|
|
4
|
-
interface ConnectParams {
|
|
5
|
-
video: HTMLVideoElement;
|
|
6
|
-
observableVideo: IObservableVideo;
|
|
7
|
-
}
|
|
8
|
-
export declare class ElementSizeManager {
|
|
9
|
-
private readonly subscription;
|
|
10
|
-
private readonly pipSize$;
|
|
11
|
-
private readonly videoSize$;
|
|
12
|
-
private readonly elementSize$;
|
|
13
|
-
private pictureInPictureWindowRemoveEventListener;
|
|
14
|
-
connect({ observableVideo, video }: ConnectParams): void;
|
|
15
|
-
getValue(): IRectangle<number> | undefined;
|
|
16
|
-
subscribe(listener: IListener<IRectangle<number> | undefined>, error?: IListener<Error | unknown>): ISubscription;
|
|
17
|
-
getObservable(): ValueSubject<IRectangle<number> | undefined>;
|
|
18
|
-
destroy(): void;
|
|
19
|
-
}
|
|
20
|
-
export {};
|