@vkontakte/videoplayer-core 2.0.171-dev.4982aad68.0 → 2.0.171-dev.881304e5f.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 +37 -43
- package/es2015.esm.js +38 -44
- package/esnext.cjs +29 -35
- package/esnext.esm.js +34 -40
- package/evergreen.esm.js +34 -40
- package/package.json +2 -2
- package/types/player/Player.d.ts +1 -0
- package/types/providers/DashLiveProvider/utils/LiveDashPlayer.d.ts +2 -0
- package/types/providers/DashProvider/baseDashProvider.d.ts +1 -2
- package/types/providers/DashProvider/lib/buffer.d.ts +0 -2
- package/types/providers/DashProvider/lib/fetcher.d.ts +4 -6
- package/types/providers/DashProvider/lib/player.d.ts +0 -1
- package/types/providers/DashProvider/lib/urlsCache.d.ts +23 -0
- package/types/providers/DashProviderVirtual/baseDashProvider.d.ts +1 -2
- package/types/providers/DashProviderVirtual/lib/buffer/types.d.ts +0 -2
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.versionA.d.ts +1 -3
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/byteRangeVirtualBufferManager.versionA.d.ts +0 -1
- package/types/providers/DashProviderVirtual/lib/fetcher.d.ts +4 -6
- package/types/providers/DashProviderVirtual/lib/player/basePlayer.d.ts +0 -2
- package/types/providers/DashProviderVirtual/lib/urlsCache.d.ts +22 -0
- package/types/providers/ProviderContainer/index.d.ts +0 -3
- package/types/providers/ProviderContainer/utils/formatsSupport.d.ts +0 -1
- package/types/providers/utils/Abr/types.d.ts +1 -4
- package/types/providers/utils/Abr/utils.d.ts +1 -3
- package/types/utils/timers.d.ts +2 -0
- package/types/utils/tuningConfig.d.ts +13 -19
- package/types/providers/utils/Abr/rules/video/downloadTimeRule.d.ts +0 -15
- package/types/providers/utils/segmentCache/IndexedDbSegmentCacheStorage.d.ts +0 -52
- package/types/providers/utils/segmentCache/SegmentCache.d.ts +0 -40
- package/types/providers/utils/segmentCache/constants.d.ts +0 -20
- package/types/providers/utils/segmentCache/index.d.ts +0 -8
- package/types/providers/utils/segmentCache/segmentCacheDb.d.ts +0 -25
- package/types/providers/utils/segmentCache/segmentCacheUtils.d.ts +0 -25
- package/types/providers/utils/segmentCache/types.d.ts +0 -74
- package/types/utils/buffer/dynamicBufferTarget.d.ts +0 -10
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { Byte, IRange } from "@vkontakte/videoplayer-shared";
|
|
2
|
-
import type { CacheMetadata, CacheMetadataEntry, InitSegmentRangeType, CachePrimaryKey } from "./types";
|
|
3
|
-
import { CacheEntryType } from "./constants";
|
|
4
|
-
/** Приводит URL к каноническому виду: заменяет hostname на cache.local и удаляет CDN-параметры (sig, expires, bytes, fromCache). */
|
|
5
|
-
export declare function normalizeSegmentCacheUrl(url: string): string;
|
|
6
|
-
export declare function toEntryType(rangeType: InitSegmentRangeType): CacheEntryType;
|
|
7
|
-
export declare function createMediaKey(normalizedUrl: string, segmentIndex: number): CachePrimaryKey;
|
|
8
|
-
export declare function createInitKey(normalizedUrl: string, entryType: CacheEntryType, rangeFrom: number, rangeTo: number): CachePrimaryKey;
|
|
9
|
-
export declare function isQuotaExceededError(error: unknown): boolean;
|
|
10
|
-
export type SubRange = {
|
|
11
|
-
range: IRange<Byte>;
|
|
12
|
-
segments: CacheMetadataEntry[];
|
|
13
|
-
};
|
|
14
|
-
/** Проверяет, что сегменты идут подряд по индексам — без разрывов между ними. Ожидает отсортированный массив. */
|
|
15
|
-
export declare function isContiguous(segments: CacheMetadataEntry[]): boolean;
|
|
16
|
-
/** Склеивает буферы закэшированных сегментов в один ArrayBuffer. Используется при full hit. */
|
|
17
|
-
export declare function assembleFromCached(metadata: CacheMetadata, cached: Map<number, ArrayBuffer>): ArrayBuffer;
|
|
18
|
-
/** Склеивает закэшированные и сетевые данные в один ArrayBuffer для partial hit. */
|
|
19
|
-
export declare function assemblePartialBuffer({ metadata, cached, missingRange, networkData, networkDataOffset }: {
|
|
20
|
-
metadata: CacheMetadata;
|
|
21
|
-
cached: Map<number, ArrayBuffer>;
|
|
22
|
-
missingRange: SubRange;
|
|
23
|
-
networkData: ArrayBuffer;
|
|
24
|
-
networkDataOffset?: number;
|
|
25
|
-
}): ArrayBuffer;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { Byte, IRange } from "@vkontakte/videoplayer-shared";
|
|
2
|
-
import type { CacheEntryType } from "./constants";
|
|
3
|
-
export type InitSegmentRangeType = "init" | "index";
|
|
4
|
-
export interface SegmentCacheEntry {
|
|
5
|
-
data: ArrayBuffer;
|
|
6
|
-
segmentIndex: number;
|
|
7
|
-
}
|
|
8
|
-
export interface InitSegmentParams {
|
|
9
|
-
normalizedUrl: string;
|
|
10
|
-
rangeType: InitSegmentRangeType;
|
|
11
|
-
range: IRange<Byte>;
|
|
12
|
-
}
|
|
13
|
-
export interface SetMediaSegmentParams {
|
|
14
|
-
type: "media";
|
|
15
|
-
normalizedUrl: string;
|
|
16
|
-
segmentIndex: number;
|
|
17
|
-
data: ArrayBuffer;
|
|
18
|
-
}
|
|
19
|
-
export interface SetInitSegmentParams {
|
|
20
|
-
type: "init";
|
|
21
|
-
normalizedUrl: string;
|
|
22
|
-
rangeType: InitSegmentRangeType;
|
|
23
|
-
range: IRange<Byte>;
|
|
24
|
-
data: ArrayBuffer;
|
|
25
|
-
}
|
|
26
|
-
export type SetSegmentParams = SetMediaSegmentParams | SetInitSegmentParams;
|
|
27
|
-
export interface ISegmentCacheStorage {
|
|
28
|
-
getSegments(normalizedUrl: string, indices: number[]): Promise<Map<number, ArrayBuffer>>;
|
|
29
|
-
setSegment(params: SetSegmentParams): Promise<void>;
|
|
30
|
-
getInitSegment(params: InitSegmentParams): Promise<ArrayBuffer | null>;
|
|
31
|
-
/** Полная очистка кэша (все записи, без привязки к url) с рассылкой события другим инстансам */
|
|
32
|
-
clear(): Promise<void>;
|
|
33
|
-
destroy(): void;
|
|
34
|
-
}
|
|
35
|
-
export interface CacheMetadataEntry {
|
|
36
|
-
index: number;
|
|
37
|
-
byteRange: IRange<Byte>;
|
|
38
|
-
}
|
|
39
|
-
export interface CacheMetadata {
|
|
40
|
-
segments: CacheMetadataEntry[];
|
|
41
|
-
}
|
|
42
|
-
export interface SegmentCacheConfig {
|
|
43
|
-
/** Включает кэширование media-сегментов в IndexedDB */
|
|
44
|
-
enabled: boolean;
|
|
45
|
-
/** Лимит суммарного размера кэша (media + init/index сегменты) в байтах. При QuotaExceededError автоматически опускается до текущего размера */
|
|
46
|
-
maxTotalSizeBytes: number;
|
|
47
|
-
/** Доля от эффективного лимита, при превышении которой запускается LRU-эвикт (0.9 = 90%) */
|
|
48
|
-
evictionThreshold: number;
|
|
49
|
-
/** Доля от максимального хранимого кэша, до которой LRU-эвикт очищает кэш (0.7 = 70%).
|
|
50
|
-
* Должна быть ниже evictionThreshold: запас между ними не даёт эвикту срабатывать на каждую запись у границы лимита
|
|
51
|
-
* */
|
|
52
|
-
evictionTargetPercent: number;
|
|
53
|
-
/** Максимальный объём данных в байтах, который LRU-эвикт удаляет за один проход (ограничивает длительность одной транзакции) */
|
|
54
|
-
evictionBatchMaxBytes: number;
|
|
55
|
-
/** Доля от maxTotalStoredBytes, которую нужно освободить при QuotaExceededError (0.5 = 50%) */
|
|
56
|
-
quotaExceededEvictPercent: number;
|
|
57
|
-
/** TTL для media-сегментов в миллисекундах. Протухшие записи удаляются при чтении и при rehydrate */
|
|
58
|
-
ttlMs: number;
|
|
59
|
-
/** TTL для init/index-сегментов в миллисекундах (обычно длиннее, т.к. они стабильнее) */
|
|
60
|
-
initTtlMs: number;
|
|
61
|
-
/** Стратегия очистки кэша при ошибках декодера/фетчера: 'once' — один раз за жизнь контейнера, 'always' — на каждую ошибку */
|
|
62
|
-
clearOnErrorStrategy: "once" | "always";
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Единая запись кэша. Ключ передаётся явно (out-of-line) через createMediaKey / createInitKey.
|
|
66
|
-
*/
|
|
67
|
-
export interface CacheRecord {
|
|
68
|
-
normalizedUrl: string;
|
|
69
|
-
data: ArrayBuffer;
|
|
70
|
-
byteLength: number;
|
|
71
|
-
createdAt: number;
|
|
72
|
-
lastAccessAt: number;
|
|
73
|
-
}
|
|
74
|
-
export type CachePrimaryKey = [string, CacheEntryType, number, number];
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Kbps, Milliseconds, Nullable } from "@vkontakte/videoplayer-shared";
|
|
2
|
-
import type { ITuningConfig } from "../tuningConfig";
|
|
3
|
-
type DynamicBufferTargetConfig = ITuningConfig["dash"]["dynamicBufferTarget"];
|
|
4
|
-
export interface IDynamicBufferTargetState {
|
|
5
|
-
throughputKbps: Kbps;
|
|
6
|
-
currentBitrateKbps: Nullable<Kbps>;
|
|
7
|
-
baseTargetMs: Milliseconds;
|
|
8
|
-
}
|
|
9
|
-
export declare const computeDynamicBufferTarget: (state: IDynamicBufferTargetState, config: DynamicBufferTargetConfig) => Milliseconds;
|
|
10
|
-
export {};
|