chore: Fix onesie request example and clean up

This commit is contained in:
Luan
2025-04-06 19:12:24 -03:00
parent d72f8b2dae
commit 159237ff92
27 changed files with 1721 additions and 389 deletions

View File

@@ -1,5 +1,4 @@
import Innertube, { Constants, UniversalCache } from 'youtubei.js';
import { type Context, YT } from 'youtubei.js';
import Innertube, { Constants, type Context, UniversalCache, YT } from 'youtubei.js';
import GoogleVideo, { base64ToU8, PART, Protos, QUALITY } from '../../dist/src/index.js';
import { decryptResponse, encryptRequest } from './utils.js';
@@ -67,7 +66,7 @@ async function prepareOnesieRequest(args: OnesieRequestArgs): Promise<OnesieRequ
// Change or remove these if you want to use a different client. I chose TVHTML5 purely for testing.
clonedInnerTubeContext.client.clientName = Constants.CLIENTS.TV.NAME;
clonedInnerTubeContext.client.clientVersion = Constants.CLIENTS.TV.VERSION;
const params: Record<string, any> = {
playbackContext: {
contentPlaybackContext: {
@@ -79,29 +78,31 @@ async function prepareOnesieRequest(args: OnesieRequestArgs): Promise<OnesieRequ
},
videoId
};
if (poToken) {
params.serviceIntegrityDimensions = {};
params.serviceIntegrityDimensions.poToken = poToken;
}
const playerRequestJson = {
context: clonedInnerTubeContext,
...params
};
const headers = [ {
name: 'Content-Type',
value: 'application/json'
},
{
name: 'User-Agent',
value: innertube.session.context.client.userAgent
},
{
name: 'X-Goog-Visitor-Id',
value: innertube.session.context.client.visitorData
} ];
const headers = [
{
name: 'Content-Type',
value: 'application/json'
},
{
name: 'User-Agent',
value: innertube.session.context.client.userAgent
},
{
name: 'X-Goog-Visitor-Id',
value: innertube.session.context.client.visitorData
}
];
const onesieRequest = Protos.OnesiePlayerRequest.encode({
url: 'https://youtubei.googleapis.com/youtubei/v1/player?key=AIzaSyDCU8hByM-4DrUqRUYnGn-3llEO78bcxq8',
@@ -122,15 +123,13 @@ async function prepareOnesieRequest(args: OnesieRequestArgs): Promise<OnesieRequ
* If you want to use an unencrypted player request:
* unencryptedOnesiePlayerRequest: onesieRequest,
*/
enableCompression: false,
enableCompression: true,
hmac: hmac,
iv: iv,
TQ: true,
useJsonformatterToParsePlayerResponse: false,
serializeResponseAsJson: true // If false, the response will be serialized as protobuf.
},
clientAbrState: {
timeSinceLastManualFormatSelectionMs: 0,
lastManualDirection: 0,
lastManualSelectedResolution: QUALITY.HD720,
stickyResolution: QUALITY.HD720,
playerTimeMs: 0,
@@ -142,7 +141,7 @@ async function prepareOnesieRequest(args: OnesieRequestArgs): Promise<OnesieRequ
poToken: poToken ? base64ToU8(poToken) : undefined,
playbackCookie: undefined,
clientInfo: {
clientName: parseInt(Constants.CLIENTS.TV.NAME_ID),
clientName: parseInt(Constants.CLIENT_NAME_IDS[clonedInnerTubeContext.client.clientName as keyof typeof Constants.CLIENT_NAME_IDS]),
clientVersion: clonedInnerTubeContext.client.clientVersion
}
},
@@ -190,7 +189,7 @@ async function getBasicInfo(innertube: Innertube, videoId: string): Promise<YT.V
method: 'POST',
headers: {
'accept': '*/*',
'content-type': 'text/plain'
'content-type': 'application/octet-stream'
},
referrer: 'https://www.youtube.com/',
body: onesieRequest.body
@@ -218,7 +217,7 @@ async function getBasicInfo(innertube: Innertube, videoId: string): Promise<YT.V
}
});
const onesiePlayerResponse = onesie.find((header) => header.type === Protos.OnesieHeaderType.PLAYER_RESPONSE);
const onesiePlayerResponse = onesie.find((header) => header.type === Protos.OnesieHeaderType.ONESIE_PLAYER_RESPONSE);
if (onesiePlayerResponse) {
if (!onesiePlayerResponse.cryptoParams)
@@ -227,8 +226,23 @@ async function getBasicInfo(innertube: Innertube, videoId: string): Promise<YT.V
const iv = onesiePlayerResponse.cryptoParams.iv;
const hmac = onesiePlayerResponse.cryptoParams.hmac;
let responseData = onesiePlayerResponse.data;
// Decompress the response data if compression is enabled.
if (responseData && onesiePlayerResponse.cryptoParams.compressionType === Protos.CompressionType.GZIP) {
if (typeof window === 'undefined') {
const zlib = await import('node:zlib');
responseData = new Uint8Array(zlib.gunzipSync(responseData));
} else {
const ds = new DecompressionStream('gzip');
const stream = new Blob([ responseData ]).stream().pipeThrough(ds);
responseData = await new Response(stream).arrayBuffer().then((buf) => new Uint8Array(buf));
}
}
// If skipResponseEncryption is set to true in the request, the response will not be encrypted.
const decryptedData = hmac?.length && iv?.length ? await decryptResponse(iv, hmac, onesiePlayerResponse.data, clientConfig.clientKeyData) : onesiePlayerResponse.data!;
const decryptedData = hmac?.length && iv?.length ?
await decryptResponse(iv, hmac, responseData, clientConfig.clientKeyData) : responseData!;
const response = Protos.OnesiePlayerResponse.decode(decryptedData);
if (response.onesieProxyStatus !== Protos.OnesieProxyStatus.ONESIE_PROXY_STATUS_OK)
@@ -253,4 +267,9 @@ const innertube = await Innertube.create({ cache: new UniversalCache(true) });
const videoInfo = await getBasicInfo(innertube, 'JAs6WyK-Kr0');
console.log('Basic info:', videoInfo);
console.log('Deciphered audio URL:', videoInfo.chooseFormat({ format: 'mp4', quality: 'best', type: 'audio' }).decipher(innertube.session.player));
console.log('Deciphered audio URL:');
console.log(videoInfo.chooseFormat({
format: 'mp4',
quality: 'best',
type: 'audio'
}).decipher(innertube.session.player));

View File

@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"youtubei.js": "^12.2.0"
"youtubei.js": "^13.3.0"
}
},
"node_modules/@bufbuild/protobuf": {
@@ -26,9 +26,9 @@
}
},
"node_modules/acorn": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"version": "8.14.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -38,9 +38,9 @@
}
},
"node_modules/jintr": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/jintr/-/jintr-3.2.0.tgz",
"integrity": "sha512-psD1yf05kMKDNsUdW1l5YhO59pHScQ6OIHHb8W5SKSM2dCOFPsqolmIuSHgVA8+3Dc47NJR181CXZ4alCAPTkA==",
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/jintr/-/jintr-3.3.0.tgz",
"integrity": "sha512-ZsaajJ4Hr5XR0tSPhOZOTjFhxA0qscKNSOs41NRjx7ZOGwpfdp8NKIBEUtvUPbA37JXyv1sJlgeOOZHjr3h76Q==",
"funding": [
"https://github.com/sponsors/LuanRT"
],
@@ -66,16 +66,16 @@
}
},
"node_modules/youtubei.js": {
"version": "12.2.0",
"resolved": "https://registry.npmjs.org/youtubei.js/-/youtubei.js-12.2.0.tgz",
"integrity": "sha512-G+50qrbJCToMYhu8jbaHiS3Vf+RRul+CcDbz3hEGwHkGPh+zLiWwD6SS+YhYF+2/op4ZU5zDYQJrGqJ+wKh7Gw==",
"version": "13.3.0",
"resolved": "https://registry.npmjs.org/youtubei.js/-/youtubei.js-13.3.0.tgz",
"integrity": "sha512-tbl7rxltpgKoSsmfGUe9JqWUAzv6HFLqrOn0N85EbTn5DLt24EXrjClnXdxyr3PBARMJ3LC4vbll100a0ABsYw==",
"funding": [
"https://github.com/sponsors/LuanRT"
],
"license": "MIT",
"dependencies": {
"@bufbuild/protobuf": "^2.0.0",
"jintr": "^3.2.0",
"jintr": "^3.3.0",
"tslib": "^2.5.0",
"undici": "^5.19.1"
}

View File

@@ -12,6 +12,6 @@
"author": "",
"license": "ISC",
"dependencies": {
"youtubei.js": "^12.2.0"
"youtubei.js": "^13.3.0"
}
}

View File

@@ -9,6 +9,960 @@ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
export const protobufPackage = "misc";
export enum AudioQuality {
AUDIO_QUALITY_UNKNOWN = 0,
AUDIO_QUALITY_ULTRALOW = 5,
AUDIO_QUALITY_LOW = 10,
AUDIO_QUALITY_MEDIUM = 20,
AUDIO_QUALITY_HIGH = 30,
UNRECOGNIZED = -1,
}
export function audioQualityFromJSON(object: any): AudioQuality {
switch (object) {
case 0:
case "AUDIO_QUALITY_UNKNOWN":
return AudioQuality.AUDIO_QUALITY_UNKNOWN;
case 5:
case "AUDIO_QUALITY_ULTRALOW":
return AudioQuality.AUDIO_QUALITY_ULTRALOW;
case 10:
case "AUDIO_QUALITY_LOW":
return AudioQuality.AUDIO_QUALITY_LOW;
case 20:
case "AUDIO_QUALITY_MEDIUM":
return AudioQuality.AUDIO_QUALITY_MEDIUM;
case 30:
case "AUDIO_QUALITY_HIGH":
return AudioQuality.AUDIO_QUALITY_HIGH;
case -1:
case "UNRECOGNIZED":
default:
return AudioQuality.UNRECOGNIZED;
}
}
export function audioQualityToJSON(object: AudioQuality): string {
switch (object) {
case AudioQuality.AUDIO_QUALITY_UNKNOWN:
return "AUDIO_QUALITY_UNKNOWN";
case AudioQuality.AUDIO_QUALITY_ULTRALOW:
return "AUDIO_QUALITY_ULTRALOW";
case AudioQuality.AUDIO_QUALITY_LOW:
return "AUDIO_QUALITY_LOW";
case AudioQuality.AUDIO_QUALITY_MEDIUM:
return "AUDIO_QUALITY_MEDIUM";
case AudioQuality.AUDIO_QUALITY_HIGH:
return "AUDIO_QUALITY_HIGH";
case AudioQuality.UNRECOGNIZED:
default:
return "UNRECOGNIZED";
}
}
export enum VideoQualitySetting {
VIDEO_QUALITY_SETTING_UNKNOWN = 0,
VIDEO_QUALITY_SETTING_HIGHER_QUALITY = 1,
VIDEO_QUALITY_SETTING_DATA_SAVER = 2,
VIDEO_QUALITY_SETTING_ADVANCED_MENU = 3,
UNRECOGNIZED = -1,
}
export function videoQualitySettingFromJSON(object: any): VideoQualitySetting {
switch (object) {
case 0:
case "VIDEO_QUALITY_SETTING_UNKNOWN":
return VideoQualitySetting.VIDEO_QUALITY_SETTING_UNKNOWN;
case 1:
case "VIDEO_QUALITY_SETTING_HIGHER_QUALITY":
return VideoQualitySetting.VIDEO_QUALITY_SETTING_HIGHER_QUALITY;
case 2:
case "VIDEO_QUALITY_SETTING_DATA_SAVER":
return VideoQualitySetting.VIDEO_QUALITY_SETTING_DATA_SAVER;
case 3:
case "VIDEO_QUALITY_SETTING_ADVANCED_MENU":
return VideoQualitySetting.VIDEO_QUALITY_SETTING_ADVANCED_MENU;
case -1:
case "UNRECOGNIZED":
default:
return VideoQualitySetting.UNRECOGNIZED;
}
}
export function videoQualitySettingToJSON(object: VideoQualitySetting): string {
switch (object) {
case VideoQualitySetting.VIDEO_QUALITY_SETTING_UNKNOWN:
return "VIDEO_QUALITY_SETTING_UNKNOWN";
case VideoQualitySetting.VIDEO_QUALITY_SETTING_HIGHER_QUALITY:
return "VIDEO_QUALITY_SETTING_HIGHER_QUALITY";
case VideoQualitySetting.VIDEO_QUALITY_SETTING_DATA_SAVER:
return "VIDEO_QUALITY_SETTING_DATA_SAVER";
case VideoQualitySetting.VIDEO_QUALITY_SETTING_ADVANCED_MENU:
return "VIDEO_QUALITY_SETTING_ADVANCED_MENU";
case VideoQualitySetting.UNRECOGNIZED:
default:
return "UNRECOGNIZED";
}
}
export enum PlaybackAudioRouteOutputType {
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_UNKNOWN = 0,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_LINE_OUT = 1,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HEADPHONES = 2,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_A2DP = 3,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_RECEIVER = 4,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_SPEAKER = 5,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HDMI = 6,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_AIR_PLAY = 7,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_LE = 8,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_HFP = 9,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_USB_AUDIO = 10,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_CAR_PLAY = 11,
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_ANDROID_AUDIO = 12,
UNRECOGNIZED = -1,
}
export function playbackAudioRouteOutputTypeFromJSON(object: any): PlaybackAudioRouteOutputType {
switch (object) {
case 0:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_UNKNOWN":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_UNKNOWN;
case 1:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_LINE_OUT":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_LINE_OUT;
case 2:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HEADPHONES":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HEADPHONES;
case 3:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_A2DP":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_A2DP;
case 4:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_RECEIVER":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_RECEIVER;
case 5:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_SPEAKER":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_SPEAKER;
case 6:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HDMI":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HDMI;
case 7:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_AIR_PLAY":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_AIR_PLAY;
case 8:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_LE":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_LE;
case 9:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_HFP":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_HFP;
case 10:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_USB_AUDIO":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_USB_AUDIO;
case 11:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_CAR_PLAY":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_CAR_PLAY;
case 12:
case "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_ANDROID_AUDIO":
return PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_ANDROID_AUDIO;
case -1:
case "UNRECOGNIZED":
default:
return PlaybackAudioRouteOutputType.UNRECOGNIZED;
}
}
export function playbackAudioRouteOutputTypeToJSON(object: PlaybackAudioRouteOutputType): string {
switch (object) {
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_UNKNOWN:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_UNKNOWN";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_LINE_OUT:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_LINE_OUT";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HEADPHONES:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HEADPHONES";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_A2DP:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_A2DP";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_RECEIVER:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_RECEIVER";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_SPEAKER:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_SPEAKER";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HDMI:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HDMI";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_AIR_PLAY:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_AIR_PLAY";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_LE:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_LE";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_HFP:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_HFP";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_USB_AUDIO:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_USB_AUDIO";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_CAR_PLAY:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_CAR_PLAY";
case PlaybackAudioRouteOutputType.PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_ANDROID_AUDIO:
return "PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_ANDROID_AUDIO";
case PlaybackAudioRouteOutputType.UNRECOGNIZED:
default:
return "UNRECOGNIZED";
}
}
export enum NetworkMeteredState {
NETWORK_METERED_STATE_UNKNOWN = 0,
NETWORK_METERED_STATE_UNMETERED = 1,
NETWORK_METERED_STATE_METERED = 2,
UNRECOGNIZED = -1,
}
export function networkMeteredStateFromJSON(object: any): NetworkMeteredState {
switch (object) {
case 0:
case "NETWORK_METERED_STATE_UNKNOWN":
return NetworkMeteredState.NETWORK_METERED_STATE_UNKNOWN;
case 1:
case "NETWORK_METERED_STATE_UNMETERED":
return NetworkMeteredState.NETWORK_METERED_STATE_UNMETERED;
case 2:
case "NETWORK_METERED_STATE_METERED":
return NetworkMeteredState.NETWORK_METERED_STATE_METERED;
case -1:
case "UNRECOGNIZED":
default:
return NetworkMeteredState.UNRECOGNIZED;
}
}
export function networkMeteredStateToJSON(object: NetworkMeteredState): string {
switch (object) {
case NetworkMeteredState.NETWORK_METERED_STATE_UNKNOWN:
return "NETWORK_METERED_STATE_UNKNOWN";
case NetworkMeteredState.NETWORK_METERED_STATE_UNMETERED:
return "NETWORK_METERED_STATE_UNMETERED";
case NetworkMeteredState.NETWORK_METERED_STATE_METERED:
return "NETWORK_METERED_STATE_METERED";
case NetworkMeteredState.UNRECOGNIZED:
default:
return "UNRECOGNIZED";
}
}
export enum SeekSource {
SEEK_SOURCE_UNKNOWN = 0,
SEEK_SOURCE_TIMESTAMP_IN_COMMENTS = 1,
SEEK_SOURCE_TIMESTAMP_IN_DESCRIPTION = 2,
SEEK_SOURCE_MACRO_MARKER_LIST_ITEM = 3,
SEEK_SOURCE_DOUBLE_TAP_TO_SEEK = 4,
SEEK_SOURCE_DOUBLE_TAP_TO_SKIP_CHAPTER = 5,
SEEK_SOURCE_PICK_UP_PLAY_HEAD = 6,
SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR = 7,
SEEK_SOURCE_SLIDE_ON_PLAYER = 8,
SEEK_SOURCE_SABR_PARTIAL_CHUNK = 9,
SEEK_SOURCE_SABR_SEEK_TO_HEAD = 10,
SEEK_SOURCE_SABR_LIVE_DVR_USER_SEEK = 11,
SEEK_SOURCE_SABR_SEEK_TO_DVR_LOWER_BOUND = 12,
SEEK_SOURCE_SABR_SEEK_TO_DVR_UPPER_BOUND = 13,
SEEK_SOURCE_SSDAI_INTERNAL = 14,
SEEK_SOURCE_START_PLAYBACK = 15,
SEEK_SOURCE_SABR_ACCURATE_SEEK = 17,
SEEK_SOURCE_START_PLAYBACK_SEEK_TO_END = 18,
SEEK_SOURCE_IOS_PLAYER_REMOVED_SEGMENTS = 19,
SEEK_SOURCE_IOS_PLAYER_SEGMENT_LIST = 20,
SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK = 21,
SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK_TO_END = 22,
SEEK_SOURCE_IOS_PLAYER_SEEK_TO_END_TO_RESYNC = 23,
SEEK_SOURCE_IOS_SEEK_ACCESSIBILITY_BUTTON = 24,
SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_FILMSTRIP = 25,
SEEK_SOURCE_FINE_SCRUBBER_TAP_ON_FILMSTRIP = 26,
SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_SCRUBBER_BAR = 27,
SEEK_SOURCE_SEEK_BUTTON_ON_PLAYER_CONTROL = 28,
SEEK_SOURCE_SABR_INGESTION_WALL_TIME_SEEK = 29,
SEEK_SOURCE_PLAYER_VIEW_REPARENT_INTERNAL = 30,
SEEK_SOURCE_PRESS_REWIND_PLAY_BACK_CONTROL = 31,
SEEK_SOURCE_PRESS_FAST_FORWARD_PLAY_BACK_CONTROL = 32,
SEEK_SOURCE_PRESS_LIVE_SYNC_ICON = 33,
SEEK_SOURCE_PEG_TO_LIVE = 34,
SEEK_SOURCE_ANDROID_MEDIA_SESSION = 35,
SEEK_SOURCE_TAP_ON_REPLAY_ACTION = 36,
SEEK_SOURCE_AUTOMATIC_REPLAY_ACTION = 37,
SEEK_SOURCE_NON_USER_SEEK_TO_PREVIOUS = 38,
SEEK_SOURCE_NON_USER_SEEK_TO_NEXT = 39,
SEEK_SOURCE_HIGHLIGHTS_TAP_PREVIOUS_PLAY = 66,
SEEK_SOURCE_HIGHLIGHTS_TAP_NEXT_PLAY = 40,
SEEK_SOURCE_HIGHLIGHTS_TAP_HIDDEN_NEXT_PLAY = 41,
SEEK_SOURCE_HIGHLIGHTS_TAP_LIST_ITEM = 42,
SEEK_SOURCE_HIGHLIGHTS_AUTOMATIC_NEXT_PLAY = 43,
SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_FIRST_PLAY = 44,
SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_END = 45,
SEEK_SOURCE_SEGMENTS_TAP_LIST_ITEM = 46,
SEEK_SOURCE_PIP_FAST_FORWARD_BUTTON = 47,
SEEK_SOURCE_PIP_REWIND_BUTTON = 48,
SEEK_SOURCE_PIP_RESUME_ON_HEAD = 49,
SEEK_SOURCE_MOVING_CLIP_FRAME = 50,
SEEK_SOURCE_RESUME_CLIP_PREVIOUS_POSITION = 51,
SEEK_SOURCE_SEEK_TO_NEXT_CHAPTER = 52,
SEEK_SOURCE_SEEK_TO_PREVIOUS_CHAPTER = 53,
SEEK_SOURCE_IOS_SHAREPLAY_PAUSE = 54,
SEEK_SOURCE_IOS_SHAREPLAY_SEEK = 55,
SEEK_SOURCE_IOS_SHAREPLAY_SYNC_RESPONSE = 56,
SEEK_SOURCE_SEEK_TO_HEAD_IMMERSIVE_LIVE_VIDEO = 57,
SEEK_SOURCE_SEEK_TO_START_OF_LOOPING_RANGE_OF_SHORTS = 58,
SEEK_SOURCE_SABR_SEEK_TO_CLOSEST_KEYFRAME = 59,
SEEK_SOURCE_SEEK_TO_END_OF_LOOPING_RANGE_OF_SHORTS = 60,
SEEK_SOURCE_CLIP_SLIDE_ON_FLIMSTRIP = 61,
SEEK_SOURCE_PICK_UP_CLIP_SLIDER = 62,
SEEK_SOURCE_FINE_SCRUBBER_CANCELLED = 63,
SEEK_SOURCE_INLINE_PLAYER_SEEK_CHAPTER = 64,
SEEK_SOURCE_INLINE_PLAYER_SEEK_SECONDS = 65,
SEEK_SOURCE_HIGHLIGHTS_PLAYER_EXIT_FULLSCREEN = 67,
SEEK_SOURCE_LARGE_CONTROLS_FORWARD_BUTTON = 68,
SEEK_SOURCE_LARGE_CONTROLS_REWIND_BUTTON = 69,
SEEK_SOURCE_LARGE_CONTROLS_SCRUBBER_BAR = 70,
SEEK_SOURCE_SEEK_BACKWARD_5S = 71,
SEEK_SOURCE_SEEK_FORWARD_5S = 72,
SEEK_SOURCE_SEEK_BACKWARD_10S = 73,
SEEK_SOURCE_SEEK_FORWARD_10S = 74,
SEEK_SOURCE_SEEK_FORWARD_60S = 75,
SEEK_SOURCE_SEEK_BACKWARD_60S = 76,
SEEK_SOURCE_SEEK_TO_NEXT_FRAME = 77,
SEEK_SOURCE_SEEK_TO_PREV_FRAME = 78,
SEEK_SOURCE_KEYBOARD_SEEK_TO_BEGINNING = 79,
SEEK_SOURCE_KEYBOARD_SEEK_TO_END = 80,
SEEK_SOURCE_SEEK_PERCENT_OF_VIDEO = 81,
SEEK_SOURCE_HIDDEN_FAST_FORWARD_BUTTON = 82,
SEEK_SOURCE_HIDDEN_REWIND_BUTTON = 83,
SEEK_SOURCE_TIMESTAMP = 84,
SEEK_SOURCE_LR_MEDIA_SESSION_SEEK = 87,
SEEK_SOURCE_MIDROLLS_WITH_TIME_RANGE = 88,
SEEK_SOURCE_SKIP_AD = 89,
SEEK_SOURCE_SEEK_TO_PREVIOUS = 90,
SEEK_SOURCE_SEEK_TO_NEXT = 91,
SEEK_SOURCE_LR_QUICK_SEEK = 92,
SEEK_SOURCE_ONESIE_LIVE = 93,
SEEK_SOURCE_LR_PLAYER_CONTROL_ACTION = 94,
SEEK_SOURCE_UNPLUGGED_LENS_START_CLIP = 95,
SEEK_SOURCE_LR_KEY_PLAYS = 96,
SEEK_SOURCE_SSAP_AD_FMT_FATAL = 97,
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_KEY_EVENT = 98,
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_CONTROLS = 99,
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCH = 100,
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCHPAD = 101,
SEEK_SOURCE_SEEK_TO_HEAD = 102,
SEEK_SOURCE_AUTOMATIC_PREVIEW_REPLAY_ACTION = 103,
SEEK_SOURCE_H5_MEDIA_ELEMENT_EVENT = 104,
SEEK_SOURCE_H5_WORKAROUND_SEEK = 105,
SEEK_SOURCE_MINIPLAYER_REWIND_BUTTON = 106,
SEEK_SOURCE_MINIPLAYER_FAST_FORWARD_BUTTON = 107,
SEEK_SOURCE_SABR_RELOAD_PLAYER_RESPONSE_TOKEN_SEEK = 108,
SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR_CHAPTER = 109,
SEEK_SOURCE_ANDROID_CLEAR_BUFFER = 110,
UNRECOGNIZED = -1,
}
export function seekSourceFromJSON(object: any): SeekSource {
switch (object) {
case 0:
case "SEEK_SOURCE_UNKNOWN":
return SeekSource.SEEK_SOURCE_UNKNOWN;
case 1:
case "SEEK_SOURCE_TIMESTAMP_IN_COMMENTS":
return SeekSource.SEEK_SOURCE_TIMESTAMP_IN_COMMENTS;
case 2:
case "SEEK_SOURCE_TIMESTAMP_IN_DESCRIPTION":
return SeekSource.SEEK_SOURCE_TIMESTAMP_IN_DESCRIPTION;
case 3:
case "SEEK_SOURCE_MACRO_MARKER_LIST_ITEM":
return SeekSource.SEEK_SOURCE_MACRO_MARKER_LIST_ITEM;
case 4:
case "SEEK_SOURCE_DOUBLE_TAP_TO_SEEK":
return SeekSource.SEEK_SOURCE_DOUBLE_TAP_TO_SEEK;
case 5:
case "SEEK_SOURCE_DOUBLE_TAP_TO_SKIP_CHAPTER":
return SeekSource.SEEK_SOURCE_DOUBLE_TAP_TO_SKIP_CHAPTER;
case 6:
case "SEEK_SOURCE_PICK_UP_PLAY_HEAD":
return SeekSource.SEEK_SOURCE_PICK_UP_PLAY_HEAD;
case 7:
case "SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR":
return SeekSource.SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR;
case 8:
case "SEEK_SOURCE_SLIDE_ON_PLAYER":
return SeekSource.SEEK_SOURCE_SLIDE_ON_PLAYER;
case 9:
case "SEEK_SOURCE_SABR_PARTIAL_CHUNK":
return SeekSource.SEEK_SOURCE_SABR_PARTIAL_CHUNK;
case 10:
case "SEEK_SOURCE_SABR_SEEK_TO_HEAD":
return SeekSource.SEEK_SOURCE_SABR_SEEK_TO_HEAD;
case 11:
case "SEEK_SOURCE_SABR_LIVE_DVR_USER_SEEK":
return SeekSource.SEEK_SOURCE_SABR_LIVE_DVR_USER_SEEK;
case 12:
case "SEEK_SOURCE_SABR_SEEK_TO_DVR_LOWER_BOUND":
return SeekSource.SEEK_SOURCE_SABR_SEEK_TO_DVR_LOWER_BOUND;
case 13:
case "SEEK_SOURCE_SABR_SEEK_TO_DVR_UPPER_BOUND":
return SeekSource.SEEK_SOURCE_SABR_SEEK_TO_DVR_UPPER_BOUND;
case 14:
case "SEEK_SOURCE_SSDAI_INTERNAL":
return SeekSource.SEEK_SOURCE_SSDAI_INTERNAL;
case 15:
case "SEEK_SOURCE_START_PLAYBACK":
return SeekSource.SEEK_SOURCE_START_PLAYBACK;
case 17:
case "SEEK_SOURCE_SABR_ACCURATE_SEEK":
return SeekSource.SEEK_SOURCE_SABR_ACCURATE_SEEK;
case 18:
case "SEEK_SOURCE_START_PLAYBACK_SEEK_TO_END":
return SeekSource.SEEK_SOURCE_START_PLAYBACK_SEEK_TO_END;
case 19:
case "SEEK_SOURCE_IOS_PLAYER_REMOVED_SEGMENTS":
return SeekSource.SEEK_SOURCE_IOS_PLAYER_REMOVED_SEGMENTS;
case 20:
case "SEEK_SOURCE_IOS_PLAYER_SEGMENT_LIST":
return SeekSource.SEEK_SOURCE_IOS_PLAYER_SEGMENT_LIST;
case 21:
case "SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK":
return SeekSource.SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK;
case 22:
case "SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK_TO_END":
return SeekSource.SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK_TO_END;
case 23:
case "SEEK_SOURCE_IOS_PLAYER_SEEK_TO_END_TO_RESYNC":
return SeekSource.SEEK_SOURCE_IOS_PLAYER_SEEK_TO_END_TO_RESYNC;
case 24:
case "SEEK_SOURCE_IOS_SEEK_ACCESSIBILITY_BUTTON":
return SeekSource.SEEK_SOURCE_IOS_SEEK_ACCESSIBILITY_BUTTON;
case 25:
case "SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_FILMSTRIP":
return SeekSource.SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_FILMSTRIP;
case 26:
case "SEEK_SOURCE_FINE_SCRUBBER_TAP_ON_FILMSTRIP":
return SeekSource.SEEK_SOURCE_FINE_SCRUBBER_TAP_ON_FILMSTRIP;
case 27:
case "SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_SCRUBBER_BAR":
return SeekSource.SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_SCRUBBER_BAR;
case 28:
case "SEEK_SOURCE_SEEK_BUTTON_ON_PLAYER_CONTROL":
return SeekSource.SEEK_SOURCE_SEEK_BUTTON_ON_PLAYER_CONTROL;
case 29:
case "SEEK_SOURCE_SABR_INGESTION_WALL_TIME_SEEK":
return SeekSource.SEEK_SOURCE_SABR_INGESTION_WALL_TIME_SEEK;
case 30:
case "SEEK_SOURCE_PLAYER_VIEW_REPARENT_INTERNAL":
return SeekSource.SEEK_SOURCE_PLAYER_VIEW_REPARENT_INTERNAL;
case 31:
case "SEEK_SOURCE_PRESS_REWIND_PLAY_BACK_CONTROL":
return SeekSource.SEEK_SOURCE_PRESS_REWIND_PLAY_BACK_CONTROL;
case 32:
case "SEEK_SOURCE_PRESS_FAST_FORWARD_PLAY_BACK_CONTROL":
return SeekSource.SEEK_SOURCE_PRESS_FAST_FORWARD_PLAY_BACK_CONTROL;
case 33:
case "SEEK_SOURCE_PRESS_LIVE_SYNC_ICON":
return SeekSource.SEEK_SOURCE_PRESS_LIVE_SYNC_ICON;
case 34:
case "SEEK_SOURCE_PEG_TO_LIVE":
return SeekSource.SEEK_SOURCE_PEG_TO_LIVE;
case 35:
case "SEEK_SOURCE_ANDROID_MEDIA_SESSION":
return SeekSource.SEEK_SOURCE_ANDROID_MEDIA_SESSION;
case 36:
case "SEEK_SOURCE_TAP_ON_REPLAY_ACTION":
return SeekSource.SEEK_SOURCE_TAP_ON_REPLAY_ACTION;
case 37:
case "SEEK_SOURCE_AUTOMATIC_REPLAY_ACTION":
return SeekSource.SEEK_SOURCE_AUTOMATIC_REPLAY_ACTION;
case 38:
case "SEEK_SOURCE_NON_USER_SEEK_TO_PREVIOUS":
return SeekSource.SEEK_SOURCE_NON_USER_SEEK_TO_PREVIOUS;
case 39:
case "SEEK_SOURCE_NON_USER_SEEK_TO_NEXT":
return SeekSource.SEEK_SOURCE_NON_USER_SEEK_TO_NEXT;
case 66:
case "SEEK_SOURCE_HIGHLIGHTS_TAP_PREVIOUS_PLAY":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_PREVIOUS_PLAY;
case 40:
case "SEEK_SOURCE_HIGHLIGHTS_TAP_NEXT_PLAY":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_NEXT_PLAY;
case 41:
case "SEEK_SOURCE_HIGHLIGHTS_TAP_HIDDEN_NEXT_PLAY":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_HIDDEN_NEXT_PLAY;
case 42:
case "SEEK_SOURCE_HIGHLIGHTS_TAP_LIST_ITEM":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_LIST_ITEM;
case 43:
case "SEEK_SOURCE_HIGHLIGHTS_AUTOMATIC_NEXT_PLAY":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_AUTOMATIC_NEXT_PLAY;
case 44:
case "SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_FIRST_PLAY":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_FIRST_PLAY;
case 45:
case "SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_END":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_END;
case 46:
case "SEEK_SOURCE_SEGMENTS_TAP_LIST_ITEM":
return SeekSource.SEEK_SOURCE_SEGMENTS_TAP_LIST_ITEM;
case 47:
case "SEEK_SOURCE_PIP_FAST_FORWARD_BUTTON":
return SeekSource.SEEK_SOURCE_PIP_FAST_FORWARD_BUTTON;
case 48:
case "SEEK_SOURCE_PIP_REWIND_BUTTON":
return SeekSource.SEEK_SOURCE_PIP_REWIND_BUTTON;
case 49:
case "SEEK_SOURCE_PIP_RESUME_ON_HEAD":
return SeekSource.SEEK_SOURCE_PIP_RESUME_ON_HEAD;
case 50:
case "SEEK_SOURCE_MOVING_CLIP_FRAME":
return SeekSource.SEEK_SOURCE_MOVING_CLIP_FRAME;
case 51:
case "SEEK_SOURCE_RESUME_CLIP_PREVIOUS_POSITION":
return SeekSource.SEEK_SOURCE_RESUME_CLIP_PREVIOUS_POSITION;
case 52:
case "SEEK_SOURCE_SEEK_TO_NEXT_CHAPTER":
return SeekSource.SEEK_SOURCE_SEEK_TO_NEXT_CHAPTER;
case 53:
case "SEEK_SOURCE_SEEK_TO_PREVIOUS_CHAPTER":
return SeekSource.SEEK_SOURCE_SEEK_TO_PREVIOUS_CHAPTER;
case 54:
case "SEEK_SOURCE_IOS_SHAREPLAY_PAUSE":
return SeekSource.SEEK_SOURCE_IOS_SHAREPLAY_PAUSE;
case 55:
case "SEEK_SOURCE_IOS_SHAREPLAY_SEEK":
return SeekSource.SEEK_SOURCE_IOS_SHAREPLAY_SEEK;
case 56:
case "SEEK_SOURCE_IOS_SHAREPLAY_SYNC_RESPONSE":
return SeekSource.SEEK_SOURCE_IOS_SHAREPLAY_SYNC_RESPONSE;
case 57:
case "SEEK_SOURCE_SEEK_TO_HEAD_IMMERSIVE_LIVE_VIDEO":
return SeekSource.SEEK_SOURCE_SEEK_TO_HEAD_IMMERSIVE_LIVE_VIDEO;
case 58:
case "SEEK_SOURCE_SEEK_TO_START_OF_LOOPING_RANGE_OF_SHORTS":
return SeekSource.SEEK_SOURCE_SEEK_TO_START_OF_LOOPING_RANGE_OF_SHORTS;
case 59:
case "SEEK_SOURCE_SABR_SEEK_TO_CLOSEST_KEYFRAME":
return SeekSource.SEEK_SOURCE_SABR_SEEK_TO_CLOSEST_KEYFRAME;
case 60:
case "SEEK_SOURCE_SEEK_TO_END_OF_LOOPING_RANGE_OF_SHORTS":
return SeekSource.SEEK_SOURCE_SEEK_TO_END_OF_LOOPING_RANGE_OF_SHORTS;
case 61:
case "SEEK_SOURCE_CLIP_SLIDE_ON_FLIMSTRIP":
return SeekSource.SEEK_SOURCE_CLIP_SLIDE_ON_FLIMSTRIP;
case 62:
case "SEEK_SOURCE_PICK_UP_CLIP_SLIDER":
return SeekSource.SEEK_SOURCE_PICK_UP_CLIP_SLIDER;
case 63:
case "SEEK_SOURCE_FINE_SCRUBBER_CANCELLED":
return SeekSource.SEEK_SOURCE_FINE_SCRUBBER_CANCELLED;
case 64:
case "SEEK_SOURCE_INLINE_PLAYER_SEEK_CHAPTER":
return SeekSource.SEEK_SOURCE_INLINE_PLAYER_SEEK_CHAPTER;
case 65:
case "SEEK_SOURCE_INLINE_PLAYER_SEEK_SECONDS":
return SeekSource.SEEK_SOURCE_INLINE_PLAYER_SEEK_SECONDS;
case 67:
case "SEEK_SOURCE_HIGHLIGHTS_PLAYER_EXIT_FULLSCREEN":
return SeekSource.SEEK_SOURCE_HIGHLIGHTS_PLAYER_EXIT_FULLSCREEN;
case 68:
case "SEEK_SOURCE_LARGE_CONTROLS_FORWARD_BUTTON":
return SeekSource.SEEK_SOURCE_LARGE_CONTROLS_FORWARD_BUTTON;
case 69:
case "SEEK_SOURCE_LARGE_CONTROLS_REWIND_BUTTON":
return SeekSource.SEEK_SOURCE_LARGE_CONTROLS_REWIND_BUTTON;
case 70:
case "SEEK_SOURCE_LARGE_CONTROLS_SCRUBBER_BAR":
return SeekSource.SEEK_SOURCE_LARGE_CONTROLS_SCRUBBER_BAR;
case 71:
case "SEEK_SOURCE_SEEK_BACKWARD_5S":
return SeekSource.SEEK_SOURCE_SEEK_BACKWARD_5S;
case 72:
case "SEEK_SOURCE_SEEK_FORWARD_5S":
return SeekSource.SEEK_SOURCE_SEEK_FORWARD_5S;
case 73:
case "SEEK_SOURCE_SEEK_BACKWARD_10S":
return SeekSource.SEEK_SOURCE_SEEK_BACKWARD_10S;
case 74:
case "SEEK_SOURCE_SEEK_FORWARD_10S":
return SeekSource.SEEK_SOURCE_SEEK_FORWARD_10S;
case 75:
case "SEEK_SOURCE_SEEK_FORWARD_60S":
return SeekSource.SEEK_SOURCE_SEEK_FORWARD_60S;
case 76:
case "SEEK_SOURCE_SEEK_BACKWARD_60S":
return SeekSource.SEEK_SOURCE_SEEK_BACKWARD_60S;
case 77:
case "SEEK_SOURCE_SEEK_TO_NEXT_FRAME":
return SeekSource.SEEK_SOURCE_SEEK_TO_NEXT_FRAME;
case 78:
case "SEEK_SOURCE_SEEK_TO_PREV_FRAME":
return SeekSource.SEEK_SOURCE_SEEK_TO_PREV_FRAME;
case 79:
case "SEEK_SOURCE_KEYBOARD_SEEK_TO_BEGINNING":
return SeekSource.SEEK_SOURCE_KEYBOARD_SEEK_TO_BEGINNING;
case 80:
case "SEEK_SOURCE_KEYBOARD_SEEK_TO_END":
return SeekSource.SEEK_SOURCE_KEYBOARD_SEEK_TO_END;
case 81:
case "SEEK_SOURCE_SEEK_PERCENT_OF_VIDEO":
return SeekSource.SEEK_SOURCE_SEEK_PERCENT_OF_VIDEO;
case 82:
case "SEEK_SOURCE_HIDDEN_FAST_FORWARD_BUTTON":
return SeekSource.SEEK_SOURCE_HIDDEN_FAST_FORWARD_BUTTON;
case 83:
case "SEEK_SOURCE_HIDDEN_REWIND_BUTTON":
return SeekSource.SEEK_SOURCE_HIDDEN_REWIND_BUTTON;
case 84:
case "SEEK_SOURCE_TIMESTAMP":
return SeekSource.SEEK_SOURCE_TIMESTAMP;
case 87:
case "SEEK_SOURCE_LR_MEDIA_SESSION_SEEK":
return SeekSource.SEEK_SOURCE_LR_MEDIA_SESSION_SEEK;
case 88:
case "SEEK_SOURCE_MIDROLLS_WITH_TIME_RANGE":
return SeekSource.SEEK_SOURCE_MIDROLLS_WITH_TIME_RANGE;
case 89:
case "SEEK_SOURCE_SKIP_AD":
return SeekSource.SEEK_SOURCE_SKIP_AD;
case 90:
case "SEEK_SOURCE_SEEK_TO_PREVIOUS":
return SeekSource.SEEK_SOURCE_SEEK_TO_PREVIOUS;
case 91:
case "SEEK_SOURCE_SEEK_TO_NEXT":
return SeekSource.SEEK_SOURCE_SEEK_TO_NEXT;
case 92:
case "SEEK_SOURCE_LR_QUICK_SEEK":
return SeekSource.SEEK_SOURCE_LR_QUICK_SEEK;
case 93:
case "SEEK_SOURCE_ONESIE_LIVE":
return SeekSource.SEEK_SOURCE_ONESIE_LIVE;
case 94:
case "SEEK_SOURCE_LR_PLAYER_CONTROL_ACTION":
return SeekSource.SEEK_SOURCE_LR_PLAYER_CONTROL_ACTION;
case 95:
case "SEEK_SOURCE_UNPLUGGED_LENS_START_CLIP":
return SeekSource.SEEK_SOURCE_UNPLUGGED_LENS_START_CLIP;
case 96:
case "SEEK_SOURCE_LR_KEY_PLAYS":
return SeekSource.SEEK_SOURCE_LR_KEY_PLAYS;
case 97:
case "SEEK_SOURCE_SSAP_AD_FMT_FATAL":
return SeekSource.SEEK_SOURCE_SSAP_AD_FMT_FATAL;
case 98:
case "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_KEY_EVENT":
return SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_KEY_EVENT;
case 99:
case "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_CONTROLS":
return SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_CONTROLS;
case 100:
case "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCH":
return SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCH;
case 101:
case "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCHPAD":
return SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCHPAD;
case 102:
case "SEEK_SOURCE_SEEK_TO_HEAD":
return SeekSource.SEEK_SOURCE_SEEK_TO_HEAD;
case 103:
case "SEEK_SOURCE_AUTOMATIC_PREVIEW_REPLAY_ACTION":
return SeekSource.SEEK_SOURCE_AUTOMATIC_PREVIEW_REPLAY_ACTION;
case 104:
case "SEEK_SOURCE_H5_MEDIA_ELEMENT_EVENT":
return SeekSource.SEEK_SOURCE_H5_MEDIA_ELEMENT_EVENT;
case 105:
case "SEEK_SOURCE_H5_WORKAROUND_SEEK":
return SeekSource.SEEK_SOURCE_H5_WORKAROUND_SEEK;
case 106:
case "SEEK_SOURCE_MINIPLAYER_REWIND_BUTTON":
return SeekSource.SEEK_SOURCE_MINIPLAYER_REWIND_BUTTON;
case 107:
case "SEEK_SOURCE_MINIPLAYER_FAST_FORWARD_BUTTON":
return SeekSource.SEEK_SOURCE_MINIPLAYER_FAST_FORWARD_BUTTON;
case 108:
case "SEEK_SOURCE_SABR_RELOAD_PLAYER_RESPONSE_TOKEN_SEEK":
return SeekSource.SEEK_SOURCE_SABR_RELOAD_PLAYER_RESPONSE_TOKEN_SEEK;
case 109:
case "SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR_CHAPTER":
return SeekSource.SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR_CHAPTER;
case 110:
case "SEEK_SOURCE_ANDROID_CLEAR_BUFFER":
return SeekSource.SEEK_SOURCE_ANDROID_CLEAR_BUFFER;
case -1:
case "UNRECOGNIZED":
default:
return SeekSource.UNRECOGNIZED;
}
}
export function seekSourceToJSON(object: SeekSource): string {
switch (object) {
case SeekSource.SEEK_SOURCE_UNKNOWN:
return "SEEK_SOURCE_UNKNOWN";
case SeekSource.SEEK_SOURCE_TIMESTAMP_IN_COMMENTS:
return "SEEK_SOURCE_TIMESTAMP_IN_COMMENTS";
case SeekSource.SEEK_SOURCE_TIMESTAMP_IN_DESCRIPTION:
return "SEEK_SOURCE_TIMESTAMP_IN_DESCRIPTION";
case SeekSource.SEEK_SOURCE_MACRO_MARKER_LIST_ITEM:
return "SEEK_SOURCE_MACRO_MARKER_LIST_ITEM";
case SeekSource.SEEK_SOURCE_DOUBLE_TAP_TO_SEEK:
return "SEEK_SOURCE_DOUBLE_TAP_TO_SEEK";
case SeekSource.SEEK_SOURCE_DOUBLE_TAP_TO_SKIP_CHAPTER:
return "SEEK_SOURCE_DOUBLE_TAP_TO_SKIP_CHAPTER";
case SeekSource.SEEK_SOURCE_PICK_UP_PLAY_HEAD:
return "SEEK_SOURCE_PICK_UP_PLAY_HEAD";
case SeekSource.SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR:
return "SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR";
case SeekSource.SEEK_SOURCE_SLIDE_ON_PLAYER:
return "SEEK_SOURCE_SLIDE_ON_PLAYER";
case SeekSource.SEEK_SOURCE_SABR_PARTIAL_CHUNK:
return "SEEK_SOURCE_SABR_PARTIAL_CHUNK";
case SeekSource.SEEK_SOURCE_SABR_SEEK_TO_HEAD:
return "SEEK_SOURCE_SABR_SEEK_TO_HEAD";
case SeekSource.SEEK_SOURCE_SABR_LIVE_DVR_USER_SEEK:
return "SEEK_SOURCE_SABR_LIVE_DVR_USER_SEEK";
case SeekSource.SEEK_SOURCE_SABR_SEEK_TO_DVR_LOWER_BOUND:
return "SEEK_SOURCE_SABR_SEEK_TO_DVR_LOWER_BOUND";
case SeekSource.SEEK_SOURCE_SABR_SEEK_TO_DVR_UPPER_BOUND:
return "SEEK_SOURCE_SABR_SEEK_TO_DVR_UPPER_BOUND";
case SeekSource.SEEK_SOURCE_SSDAI_INTERNAL:
return "SEEK_SOURCE_SSDAI_INTERNAL";
case SeekSource.SEEK_SOURCE_START_PLAYBACK:
return "SEEK_SOURCE_START_PLAYBACK";
case SeekSource.SEEK_SOURCE_SABR_ACCURATE_SEEK:
return "SEEK_SOURCE_SABR_ACCURATE_SEEK";
case SeekSource.SEEK_SOURCE_START_PLAYBACK_SEEK_TO_END:
return "SEEK_SOURCE_START_PLAYBACK_SEEK_TO_END";
case SeekSource.SEEK_SOURCE_IOS_PLAYER_REMOVED_SEGMENTS:
return "SEEK_SOURCE_IOS_PLAYER_REMOVED_SEGMENTS";
case SeekSource.SEEK_SOURCE_IOS_PLAYER_SEGMENT_LIST:
return "SEEK_SOURCE_IOS_PLAYER_SEGMENT_LIST";
case SeekSource.SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK:
return "SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK";
case SeekSource.SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK_TO_END:
return "SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK_TO_END";
case SeekSource.SEEK_SOURCE_IOS_PLAYER_SEEK_TO_END_TO_RESYNC:
return "SEEK_SOURCE_IOS_PLAYER_SEEK_TO_END_TO_RESYNC";
case SeekSource.SEEK_SOURCE_IOS_SEEK_ACCESSIBILITY_BUTTON:
return "SEEK_SOURCE_IOS_SEEK_ACCESSIBILITY_BUTTON";
case SeekSource.SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_FILMSTRIP:
return "SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_FILMSTRIP";
case SeekSource.SEEK_SOURCE_FINE_SCRUBBER_TAP_ON_FILMSTRIP:
return "SEEK_SOURCE_FINE_SCRUBBER_TAP_ON_FILMSTRIP";
case SeekSource.SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_SCRUBBER_BAR:
return "SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_SCRUBBER_BAR";
case SeekSource.SEEK_SOURCE_SEEK_BUTTON_ON_PLAYER_CONTROL:
return "SEEK_SOURCE_SEEK_BUTTON_ON_PLAYER_CONTROL";
case SeekSource.SEEK_SOURCE_SABR_INGESTION_WALL_TIME_SEEK:
return "SEEK_SOURCE_SABR_INGESTION_WALL_TIME_SEEK";
case SeekSource.SEEK_SOURCE_PLAYER_VIEW_REPARENT_INTERNAL:
return "SEEK_SOURCE_PLAYER_VIEW_REPARENT_INTERNAL";
case SeekSource.SEEK_SOURCE_PRESS_REWIND_PLAY_BACK_CONTROL:
return "SEEK_SOURCE_PRESS_REWIND_PLAY_BACK_CONTROL";
case SeekSource.SEEK_SOURCE_PRESS_FAST_FORWARD_PLAY_BACK_CONTROL:
return "SEEK_SOURCE_PRESS_FAST_FORWARD_PLAY_BACK_CONTROL";
case SeekSource.SEEK_SOURCE_PRESS_LIVE_SYNC_ICON:
return "SEEK_SOURCE_PRESS_LIVE_SYNC_ICON";
case SeekSource.SEEK_SOURCE_PEG_TO_LIVE:
return "SEEK_SOURCE_PEG_TO_LIVE";
case SeekSource.SEEK_SOURCE_ANDROID_MEDIA_SESSION:
return "SEEK_SOURCE_ANDROID_MEDIA_SESSION";
case SeekSource.SEEK_SOURCE_TAP_ON_REPLAY_ACTION:
return "SEEK_SOURCE_TAP_ON_REPLAY_ACTION";
case SeekSource.SEEK_SOURCE_AUTOMATIC_REPLAY_ACTION:
return "SEEK_SOURCE_AUTOMATIC_REPLAY_ACTION";
case SeekSource.SEEK_SOURCE_NON_USER_SEEK_TO_PREVIOUS:
return "SEEK_SOURCE_NON_USER_SEEK_TO_PREVIOUS";
case SeekSource.SEEK_SOURCE_NON_USER_SEEK_TO_NEXT:
return "SEEK_SOURCE_NON_USER_SEEK_TO_NEXT";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_PREVIOUS_PLAY:
return "SEEK_SOURCE_HIGHLIGHTS_TAP_PREVIOUS_PLAY";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_NEXT_PLAY:
return "SEEK_SOURCE_HIGHLIGHTS_TAP_NEXT_PLAY";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_HIDDEN_NEXT_PLAY:
return "SEEK_SOURCE_HIGHLIGHTS_TAP_HIDDEN_NEXT_PLAY";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_TAP_LIST_ITEM:
return "SEEK_SOURCE_HIGHLIGHTS_TAP_LIST_ITEM";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_AUTOMATIC_NEXT_PLAY:
return "SEEK_SOURCE_HIGHLIGHTS_AUTOMATIC_NEXT_PLAY";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_FIRST_PLAY:
return "SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_FIRST_PLAY";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_END:
return "SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_END";
case SeekSource.SEEK_SOURCE_SEGMENTS_TAP_LIST_ITEM:
return "SEEK_SOURCE_SEGMENTS_TAP_LIST_ITEM";
case SeekSource.SEEK_SOURCE_PIP_FAST_FORWARD_BUTTON:
return "SEEK_SOURCE_PIP_FAST_FORWARD_BUTTON";
case SeekSource.SEEK_SOURCE_PIP_REWIND_BUTTON:
return "SEEK_SOURCE_PIP_REWIND_BUTTON";
case SeekSource.SEEK_SOURCE_PIP_RESUME_ON_HEAD:
return "SEEK_SOURCE_PIP_RESUME_ON_HEAD";
case SeekSource.SEEK_SOURCE_MOVING_CLIP_FRAME:
return "SEEK_SOURCE_MOVING_CLIP_FRAME";
case SeekSource.SEEK_SOURCE_RESUME_CLIP_PREVIOUS_POSITION:
return "SEEK_SOURCE_RESUME_CLIP_PREVIOUS_POSITION";
case SeekSource.SEEK_SOURCE_SEEK_TO_NEXT_CHAPTER:
return "SEEK_SOURCE_SEEK_TO_NEXT_CHAPTER";
case SeekSource.SEEK_SOURCE_SEEK_TO_PREVIOUS_CHAPTER:
return "SEEK_SOURCE_SEEK_TO_PREVIOUS_CHAPTER";
case SeekSource.SEEK_SOURCE_IOS_SHAREPLAY_PAUSE:
return "SEEK_SOURCE_IOS_SHAREPLAY_PAUSE";
case SeekSource.SEEK_SOURCE_IOS_SHAREPLAY_SEEK:
return "SEEK_SOURCE_IOS_SHAREPLAY_SEEK";
case SeekSource.SEEK_SOURCE_IOS_SHAREPLAY_SYNC_RESPONSE:
return "SEEK_SOURCE_IOS_SHAREPLAY_SYNC_RESPONSE";
case SeekSource.SEEK_SOURCE_SEEK_TO_HEAD_IMMERSIVE_LIVE_VIDEO:
return "SEEK_SOURCE_SEEK_TO_HEAD_IMMERSIVE_LIVE_VIDEO";
case SeekSource.SEEK_SOURCE_SEEK_TO_START_OF_LOOPING_RANGE_OF_SHORTS:
return "SEEK_SOURCE_SEEK_TO_START_OF_LOOPING_RANGE_OF_SHORTS";
case SeekSource.SEEK_SOURCE_SABR_SEEK_TO_CLOSEST_KEYFRAME:
return "SEEK_SOURCE_SABR_SEEK_TO_CLOSEST_KEYFRAME";
case SeekSource.SEEK_SOURCE_SEEK_TO_END_OF_LOOPING_RANGE_OF_SHORTS:
return "SEEK_SOURCE_SEEK_TO_END_OF_LOOPING_RANGE_OF_SHORTS";
case SeekSource.SEEK_SOURCE_CLIP_SLIDE_ON_FLIMSTRIP:
return "SEEK_SOURCE_CLIP_SLIDE_ON_FLIMSTRIP";
case SeekSource.SEEK_SOURCE_PICK_UP_CLIP_SLIDER:
return "SEEK_SOURCE_PICK_UP_CLIP_SLIDER";
case SeekSource.SEEK_SOURCE_FINE_SCRUBBER_CANCELLED:
return "SEEK_SOURCE_FINE_SCRUBBER_CANCELLED";
case SeekSource.SEEK_SOURCE_INLINE_PLAYER_SEEK_CHAPTER:
return "SEEK_SOURCE_INLINE_PLAYER_SEEK_CHAPTER";
case SeekSource.SEEK_SOURCE_INLINE_PLAYER_SEEK_SECONDS:
return "SEEK_SOURCE_INLINE_PLAYER_SEEK_SECONDS";
case SeekSource.SEEK_SOURCE_HIGHLIGHTS_PLAYER_EXIT_FULLSCREEN:
return "SEEK_SOURCE_HIGHLIGHTS_PLAYER_EXIT_FULLSCREEN";
case SeekSource.SEEK_SOURCE_LARGE_CONTROLS_FORWARD_BUTTON:
return "SEEK_SOURCE_LARGE_CONTROLS_FORWARD_BUTTON";
case SeekSource.SEEK_SOURCE_LARGE_CONTROLS_REWIND_BUTTON:
return "SEEK_SOURCE_LARGE_CONTROLS_REWIND_BUTTON";
case SeekSource.SEEK_SOURCE_LARGE_CONTROLS_SCRUBBER_BAR:
return "SEEK_SOURCE_LARGE_CONTROLS_SCRUBBER_BAR";
case SeekSource.SEEK_SOURCE_SEEK_BACKWARD_5S:
return "SEEK_SOURCE_SEEK_BACKWARD_5S";
case SeekSource.SEEK_SOURCE_SEEK_FORWARD_5S:
return "SEEK_SOURCE_SEEK_FORWARD_5S";
case SeekSource.SEEK_SOURCE_SEEK_BACKWARD_10S:
return "SEEK_SOURCE_SEEK_BACKWARD_10S";
case SeekSource.SEEK_SOURCE_SEEK_FORWARD_10S:
return "SEEK_SOURCE_SEEK_FORWARD_10S";
case SeekSource.SEEK_SOURCE_SEEK_FORWARD_60S:
return "SEEK_SOURCE_SEEK_FORWARD_60S";
case SeekSource.SEEK_SOURCE_SEEK_BACKWARD_60S:
return "SEEK_SOURCE_SEEK_BACKWARD_60S";
case SeekSource.SEEK_SOURCE_SEEK_TO_NEXT_FRAME:
return "SEEK_SOURCE_SEEK_TO_NEXT_FRAME";
case SeekSource.SEEK_SOURCE_SEEK_TO_PREV_FRAME:
return "SEEK_SOURCE_SEEK_TO_PREV_FRAME";
case SeekSource.SEEK_SOURCE_KEYBOARD_SEEK_TO_BEGINNING:
return "SEEK_SOURCE_KEYBOARD_SEEK_TO_BEGINNING";
case SeekSource.SEEK_SOURCE_KEYBOARD_SEEK_TO_END:
return "SEEK_SOURCE_KEYBOARD_SEEK_TO_END";
case SeekSource.SEEK_SOURCE_SEEK_PERCENT_OF_VIDEO:
return "SEEK_SOURCE_SEEK_PERCENT_OF_VIDEO";
case SeekSource.SEEK_SOURCE_HIDDEN_FAST_FORWARD_BUTTON:
return "SEEK_SOURCE_HIDDEN_FAST_FORWARD_BUTTON";
case SeekSource.SEEK_SOURCE_HIDDEN_REWIND_BUTTON:
return "SEEK_SOURCE_HIDDEN_REWIND_BUTTON";
case SeekSource.SEEK_SOURCE_TIMESTAMP:
return "SEEK_SOURCE_TIMESTAMP";
case SeekSource.SEEK_SOURCE_LR_MEDIA_SESSION_SEEK:
return "SEEK_SOURCE_LR_MEDIA_SESSION_SEEK";
case SeekSource.SEEK_SOURCE_MIDROLLS_WITH_TIME_RANGE:
return "SEEK_SOURCE_MIDROLLS_WITH_TIME_RANGE";
case SeekSource.SEEK_SOURCE_SKIP_AD:
return "SEEK_SOURCE_SKIP_AD";
case SeekSource.SEEK_SOURCE_SEEK_TO_PREVIOUS:
return "SEEK_SOURCE_SEEK_TO_PREVIOUS";
case SeekSource.SEEK_SOURCE_SEEK_TO_NEXT:
return "SEEK_SOURCE_SEEK_TO_NEXT";
case SeekSource.SEEK_SOURCE_LR_QUICK_SEEK:
return "SEEK_SOURCE_LR_QUICK_SEEK";
case SeekSource.SEEK_SOURCE_ONESIE_LIVE:
return "SEEK_SOURCE_ONESIE_LIVE";
case SeekSource.SEEK_SOURCE_LR_PLAYER_CONTROL_ACTION:
return "SEEK_SOURCE_LR_PLAYER_CONTROL_ACTION";
case SeekSource.SEEK_SOURCE_UNPLUGGED_LENS_START_CLIP:
return "SEEK_SOURCE_UNPLUGGED_LENS_START_CLIP";
case SeekSource.SEEK_SOURCE_LR_KEY_PLAYS:
return "SEEK_SOURCE_LR_KEY_PLAYS";
case SeekSource.SEEK_SOURCE_SSAP_AD_FMT_FATAL:
return "SEEK_SOURCE_SSAP_AD_FMT_FATAL";
case SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_KEY_EVENT:
return "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_KEY_EVENT";
case SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_CONTROLS:
return "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_CONTROLS";
case SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCH:
return "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCH";
case SeekSource.SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCHPAD:
return "SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCHPAD";
case SeekSource.SEEK_SOURCE_SEEK_TO_HEAD:
return "SEEK_SOURCE_SEEK_TO_HEAD";
case SeekSource.SEEK_SOURCE_AUTOMATIC_PREVIEW_REPLAY_ACTION:
return "SEEK_SOURCE_AUTOMATIC_PREVIEW_REPLAY_ACTION";
case SeekSource.SEEK_SOURCE_H5_MEDIA_ELEMENT_EVENT:
return "SEEK_SOURCE_H5_MEDIA_ELEMENT_EVENT";
case SeekSource.SEEK_SOURCE_H5_WORKAROUND_SEEK:
return "SEEK_SOURCE_H5_WORKAROUND_SEEK";
case SeekSource.SEEK_SOURCE_MINIPLAYER_REWIND_BUTTON:
return "SEEK_SOURCE_MINIPLAYER_REWIND_BUTTON";
case SeekSource.SEEK_SOURCE_MINIPLAYER_FAST_FORWARD_BUTTON:
return "SEEK_SOURCE_MINIPLAYER_FAST_FORWARD_BUTTON";
case SeekSource.SEEK_SOURCE_SABR_RELOAD_PLAYER_RESPONSE_TOKEN_SEEK:
return "SEEK_SOURCE_SABR_RELOAD_PLAYER_RESPONSE_TOKEN_SEEK";
case SeekSource.SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR_CHAPTER:
return "SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR_CHAPTER";
case SeekSource.SEEK_SOURCE_ANDROID_CLEAR_BUFFER:
return "SEEK_SOURCE_ANDROID_CLEAR_BUFFER";
case SeekSource.UNRECOGNIZED:
default:
return "UNRECOGNIZED";
}
}
export enum OnesieRequestTarget {
ONESIE_REQUEST_TARGET_UNKNOWN = 0,
ONESIE_REQUEST_TARGET_ENCRYPTED_PLAYER_SERVICE = 1,
ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE_DEPRECATED = 2,
ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE = 3,
ONESIE_REQUEST_TARGET_INNERTUBE_ENCRYPTED_SERVICE = 4,
UNRECOGNIZED = -1,
}
export function onesieRequestTargetFromJSON(object: any): OnesieRequestTarget {
switch (object) {
case 0:
case "ONESIE_REQUEST_TARGET_UNKNOWN":
return OnesieRequestTarget.ONESIE_REQUEST_TARGET_UNKNOWN;
case 1:
case "ONESIE_REQUEST_TARGET_ENCRYPTED_PLAYER_SERVICE":
return OnesieRequestTarget.ONESIE_REQUEST_TARGET_ENCRYPTED_PLAYER_SERVICE;
case 2:
case "ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE_DEPRECATED":
return OnesieRequestTarget.ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE_DEPRECATED;
case 3:
case "ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE":
return OnesieRequestTarget.ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE;
case 4:
case "ONESIE_REQUEST_TARGET_INNERTUBE_ENCRYPTED_SERVICE":
return OnesieRequestTarget.ONESIE_REQUEST_TARGET_INNERTUBE_ENCRYPTED_SERVICE;
case -1:
case "UNRECOGNIZED":
default:
return OnesieRequestTarget.UNRECOGNIZED;
}
}
export function onesieRequestTargetToJSON(object: OnesieRequestTarget): string {
switch (object) {
case OnesieRequestTarget.ONESIE_REQUEST_TARGET_UNKNOWN:
return "ONESIE_REQUEST_TARGET_UNKNOWN";
case OnesieRequestTarget.ONESIE_REQUEST_TARGET_ENCRYPTED_PLAYER_SERVICE:
return "ONESIE_REQUEST_TARGET_ENCRYPTED_PLAYER_SERVICE";
case OnesieRequestTarget.ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE_DEPRECATED:
return "ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE_DEPRECATED";
case OnesieRequestTarget.ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE:
return "ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE";
case OnesieRequestTarget.ONESIE_REQUEST_TARGET_INNERTUBE_ENCRYPTED_SERVICE:
return "ONESIE_REQUEST_TARGET_INNERTUBE_ENCRYPTED_SERVICE";
case OnesieRequestTarget.UNRECOGNIZED:
default:
return "UNRECOGNIZED";
}
}
export interface HttpHeader {
name?: string | undefined;
value?: string | undefined;

View File

@@ -6,6 +6,20 @@
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import {
AudioQuality,
audioQualityFromJSON,
audioQualityToJSON,
NetworkMeteredState,
networkMeteredStateFromJSON,
networkMeteredStateToJSON,
PlaybackAudioRouteOutputType,
playbackAudioRouteOutputTypeFromJSON,
playbackAudioRouteOutputTypeToJSON,
VideoQualitySetting,
videoQualitySettingFromJSON,
videoQualitySettingToJSON,
} from "../misc/common.js";
export const protobufPackage = "video_streaming";
@@ -16,13 +30,18 @@ export interface ClientAbrState {
detailedNetworkType?: number | undefined;
clientViewportWidth?: number | undefined;
clientViewportHeight?: number | undefined;
clientBitrateCap?: number | undefined;
clientBitrateCapBytesPerSec?: number | undefined;
stickyResolution?: number | undefined;
clientViewportIsFlexible?: boolean | undefined;
bandwidthEstimate?: number | undefined;
minAudioQuality?: AudioQuality | undefined;
maxAudioQuality?: AudioQuality | undefined;
videoQualitySetting?: VideoQualitySetting | undefined;
audioRoute?: PlaybackAudioRouteOutputType | undefined;
playerTimeMs?: number | undefined;
timeSinceLastSeek?: number | undefined;
dataSaverMode?: boolean | undefined;
networkMeteredState?: NetworkMeteredState | undefined;
visibility?: number | undefined;
playbackRate?: number | undefined;
elapsedWallTimeMs?: number | undefined;
@@ -58,13 +77,18 @@ function createBaseClientAbrState(): ClientAbrState {
detailedNetworkType: 0,
clientViewportWidth: 0,
clientViewportHeight: 0,
clientBitrateCap: 0,
clientBitrateCapBytesPerSec: 0,
stickyResolution: 0,
clientViewportIsFlexible: false,
bandwidthEstimate: 0,
minAudioQuality: 0,
maxAudioQuality: 0,
videoQualitySetting: 0,
audioRoute: 0,
playerTimeMs: 0,
timeSinceLastSeek: 0,
dataSaverMode: false,
networkMeteredState: 0,
visibility: 0,
playbackRate: 0,
elapsedWallTimeMs: 0,
@@ -98,10 +122,10 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
if (
message.timeSinceLastManualFormatSelectionMs !== undefined && message.timeSinceLastManualFormatSelectionMs !== 0
) {
writer.uint32(104).int32(message.timeSinceLastManualFormatSelectionMs);
writer.uint32(104).int64(message.timeSinceLastManualFormatSelectionMs);
}
if (message.lastManualDirection !== undefined && message.lastManualDirection !== 0) {
writer.uint32(112).int32(message.lastManualDirection);
writer.uint32(112).sint32(message.lastManualDirection);
}
if (message.lastManualSelectedResolution !== undefined && message.lastManualSelectedResolution !== 0) {
writer.uint32(128).int32(message.lastManualSelectedResolution);
@@ -115,8 +139,8 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
if (message.clientViewportHeight !== undefined && message.clientViewportHeight !== 0) {
writer.uint32(152).int32(message.clientViewportHeight);
}
if (message.clientBitrateCap !== undefined && message.clientBitrateCap !== 0) {
writer.uint32(160).int64(message.clientBitrateCap);
if (message.clientBitrateCapBytesPerSec !== undefined && message.clientBitrateCapBytesPerSec !== 0) {
writer.uint32(160).int64(message.clientBitrateCapBytesPerSec);
}
if (message.stickyResolution !== undefined && message.stickyResolution !== 0) {
writer.uint32(168).int32(message.stickyResolution);
@@ -125,7 +149,19 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
writer.uint32(176).bool(message.clientViewportIsFlexible);
}
if (message.bandwidthEstimate !== undefined && message.bandwidthEstimate !== 0) {
writer.uint32(184).int32(message.bandwidthEstimate);
writer.uint32(184).int64(message.bandwidthEstimate);
}
if (message.minAudioQuality !== undefined && message.minAudioQuality !== 0) {
writer.uint32(192).int32(message.minAudioQuality);
}
if (message.maxAudioQuality !== undefined && message.maxAudioQuality !== 0) {
writer.uint32(200).int32(message.maxAudioQuality);
}
if (message.videoQualitySetting !== undefined && message.videoQualitySetting !== 0) {
writer.uint32(208).int32(message.videoQualitySetting);
}
if (message.audioRoute !== undefined && message.audioRoute !== 0) {
writer.uint32(216).int32(message.audioRoute);
}
if (message.playerTimeMs !== undefined && message.playerTimeMs !== 0) {
writer.uint32(224).int64(message.playerTimeMs);
@@ -136,6 +172,9 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
if (message.dataSaverMode !== undefined && message.dataSaverMode !== false) {
writer.uint32(240).bool(message.dataSaverMode);
}
if (message.networkMeteredState !== undefined && message.networkMeteredState !== 0) {
writer.uint32(256).int32(message.networkMeteredState);
}
if (message.visibility !== undefined && message.visibility !== 0) {
writer.uint32(272).int32(message.visibility);
}
@@ -229,14 +268,14 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
break;
}
message.timeSinceLastManualFormatSelectionMs = reader.int32();
message.timeSinceLastManualFormatSelectionMs = longToNumber(reader.int64());
continue;
case 14:
if (tag !== 112) {
break;
}
message.lastManualDirection = reader.int32();
message.lastManualDirection = reader.sint32();
continue;
case 16:
if (tag !== 128) {
@@ -271,7 +310,7 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
break;
}
message.clientBitrateCap = longToNumber(reader.int64());
message.clientBitrateCapBytesPerSec = longToNumber(reader.int64());
continue;
case 21:
if (tag !== 168) {
@@ -292,7 +331,35 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
break;
}
message.bandwidthEstimate = reader.int32();
message.bandwidthEstimate = longToNumber(reader.int64());
continue;
case 24:
if (tag !== 192) {
break;
}
message.minAudioQuality = reader.int32() as any;
continue;
case 25:
if (tag !== 200) {
break;
}
message.maxAudioQuality = reader.int32() as any;
continue;
case 26:
if (tag !== 208) {
break;
}
message.videoQualitySetting = reader.int32() as any;
continue;
case 27:
if (tag !== 216) {
break;
}
message.audioRoute = reader.int32() as any;
continue;
case 28:
if (tag !== 224) {
@@ -315,6 +382,13 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
message.dataSaverMode = reader.bool();
continue;
case 32:
if (tag !== 256) {
break;
}
message.networkMeteredState = reader.int32() as any;
continue;
case 34:
if (tag !== 272) {
break;
@@ -511,15 +585,26 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
detailedNetworkType: isSet(object.detailedNetworkType) ? globalThis.Number(object.detailedNetworkType) : 0,
clientViewportWidth: isSet(object.clientViewportWidth) ? globalThis.Number(object.clientViewportWidth) : 0,
clientViewportHeight: isSet(object.clientViewportHeight) ? globalThis.Number(object.clientViewportHeight) : 0,
clientBitrateCap: isSet(object.clientBitrateCap) ? globalThis.Number(object.clientBitrateCap) : 0,
clientBitrateCapBytesPerSec: isSet(object.clientBitrateCapBytesPerSec)
? globalThis.Number(object.clientBitrateCapBytesPerSec)
: 0,
stickyResolution: isSet(object.stickyResolution) ? globalThis.Number(object.stickyResolution) : 0,
clientViewportIsFlexible: isSet(object.clientViewportIsFlexible)
? globalThis.Boolean(object.clientViewportIsFlexible)
: false,
bandwidthEstimate: isSet(object.bandwidthEstimate) ? globalThis.Number(object.bandwidthEstimate) : 0,
minAudioQuality: isSet(object.minAudioQuality) ? audioQualityFromJSON(object.minAudioQuality) : 0,
maxAudioQuality: isSet(object.maxAudioQuality) ? audioQualityFromJSON(object.maxAudioQuality) : 0,
videoQualitySetting: isSet(object.videoQualitySetting)
? videoQualitySettingFromJSON(object.videoQualitySetting)
: 0,
audioRoute: isSet(object.audioRoute) ? playbackAudioRouteOutputTypeFromJSON(object.audioRoute) : 0,
playerTimeMs: isSet(object.playerTimeMs) ? globalThis.Number(object.playerTimeMs) : 0,
timeSinceLastSeek: isSet(object.timeSinceLastSeek) ? globalThis.Number(object.timeSinceLastSeek) : 0,
dataSaverMode: isSet(object.dataSaverMode) ? globalThis.Boolean(object.dataSaverMode) : false,
networkMeteredState: isSet(object.networkMeteredState)
? networkMeteredStateFromJSON(object.networkMeteredState)
: 0,
visibility: isSet(object.visibility) ? globalThis.Number(object.visibility) : 0,
playbackRate: isSet(object.playbackRate) ? globalThis.Number(object.playbackRate) : 0,
elapsedWallTimeMs: isSet(object.elapsedWallTimeMs) ? globalThis.Number(object.elapsedWallTimeMs) : 0,
@@ -584,8 +669,8 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
if (message.clientViewportHeight !== undefined && message.clientViewportHeight !== 0) {
obj.clientViewportHeight = Math.round(message.clientViewportHeight);
}
if (message.clientBitrateCap !== undefined && message.clientBitrateCap !== 0) {
obj.clientBitrateCap = Math.round(message.clientBitrateCap);
if (message.clientBitrateCapBytesPerSec !== undefined && message.clientBitrateCapBytesPerSec !== 0) {
obj.clientBitrateCapBytesPerSec = Math.round(message.clientBitrateCapBytesPerSec);
}
if (message.stickyResolution !== undefined && message.stickyResolution !== 0) {
obj.stickyResolution = Math.round(message.stickyResolution);
@@ -596,6 +681,18 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
if (message.bandwidthEstimate !== undefined && message.bandwidthEstimate !== 0) {
obj.bandwidthEstimate = Math.round(message.bandwidthEstimate);
}
if (message.minAudioQuality !== undefined && message.minAudioQuality !== 0) {
obj.minAudioQuality = audioQualityToJSON(message.minAudioQuality);
}
if (message.maxAudioQuality !== undefined && message.maxAudioQuality !== 0) {
obj.maxAudioQuality = audioQualityToJSON(message.maxAudioQuality);
}
if (message.videoQualitySetting !== undefined && message.videoQualitySetting !== 0) {
obj.videoQualitySetting = videoQualitySettingToJSON(message.videoQualitySetting);
}
if (message.audioRoute !== undefined && message.audioRoute !== 0) {
obj.audioRoute = playbackAudioRouteOutputTypeToJSON(message.audioRoute);
}
if (message.playerTimeMs !== undefined && message.playerTimeMs !== 0) {
obj.playerTimeMs = Math.round(message.playerTimeMs);
}
@@ -605,6 +702,9 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
if (message.dataSaverMode !== undefined && message.dataSaverMode !== false) {
obj.dataSaverMode = message.dataSaverMode;
}
if (message.networkMeteredState !== undefined && message.networkMeteredState !== 0) {
obj.networkMeteredState = networkMeteredStateToJSON(message.networkMeteredState);
}
if (message.visibility !== undefined && message.visibility !== 0) {
obj.visibility = Math.round(message.visibility);
}
@@ -697,13 +797,18 @@ export const ClientAbrState: MessageFns<ClientAbrState> = {
message.detailedNetworkType = object.detailedNetworkType ?? 0;
message.clientViewportWidth = object.clientViewportWidth ?? 0;
message.clientViewportHeight = object.clientViewportHeight ?? 0;
message.clientBitrateCap = object.clientBitrateCap ?? 0;
message.clientBitrateCapBytesPerSec = object.clientBitrateCapBytesPerSec ?? 0;
message.stickyResolution = object.stickyResolution ?? 0;
message.clientViewportIsFlexible = object.clientViewportIsFlexible ?? false;
message.bandwidthEstimate = object.bandwidthEstimate ?? 0;
message.minAudioQuality = object.minAudioQuality ?? 0;
message.maxAudioQuality = object.maxAudioQuality ?? 0;
message.videoQualitySetting = object.videoQualitySetting ?? 0;
message.audioRoute = object.audioRoute ?? 0;
message.playerTimeMs = object.playerTimeMs ?? 0;
message.timeSinceLastSeek = object.timeSinceLastSeek ?? 0;
message.dataSaverMode = object.dataSaverMode ?? false;
message.networkMeteredState = object.networkMeteredState ?? 0;
message.visibility = object.visibility ?? 0;
message.playbackRate = object.playbackRate ?? 0;
message.elapsedWallTimeMs = object.elapsedWallTimeMs ?? 0;

View File

@@ -16,23 +16,23 @@ export interface CryptoParams {
}
export enum CryptoParams_CompressionType {
VAL_0 = 0,
VAL_1 = 1,
VAL_2 = 2,
NONE = 0,
GZIP = 1,
BROTLI = 2,
UNRECOGNIZED = -1,
}
export function cryptoParams_CompressionTypeFromJSON(object: any): CryptoParams_CompressionType {
switch (object) {
case 0:
case "VAL_0":
return CryptoParams_CompressionType.VAL_0;
case "NONE":
return CryptoParams_CompressionType.NONE;
case 1:
case "VAL_1":
return CryptoParams_CompressionType.VAL_1;
case "GZIP":
return CryptoParams_CompressionType.GZIP;
case 2:
case "VAL_2":
return CryptoParams_CompressionType.VAL_2;
case "BROTLI":
return CryptoParams_CompressionType.BROTLI;
case -1:
case "UNRECOGNIZED":
default:
@@ -42,12 +42,12 @@ export function cryptoParams_CompressionTypeFromJSON(object: any): CryptoParams_
export function cryptoParams_CompressionTypeToJSON(object: CryptoParams_CompressionType): string {
switch (object) {
case CryptoParams_CompressionType.VAL_0:
return "VAL_0";
case CryptoParams_CompressionType.VAL_1:
return "VAL_1";
case CryptoParams_CompressionType.VAL_2:
return "VAL_2";
case CryptoParams_CompressionType.NONE:
return "NONE";
case CryptoParams_CompressionType.GZIP:
return "GZIP";
case CryptoParams_CompressionType.BROTLI:
return "BROTLI";
case CryptoParams_CompressionType.UNRECOGNIZED:
default:
return "UNRECOGNIZED";

View File

@@ -17,10 +17,15 @@ export interface EncryptedPlayerRequest {
hmac?: Uint8Array | undefined;
reverseProxyConfig?: string | undefined;
serializeResponseAsJson?: boolean | undefined;
pM?: boolean | undefined;
enableAdPlacementsPreroll?: boolean | undefined;
enableCompression?: boolean | undefined;
ustreamerFlags?: EncryptedPlayerRequest_UstreamerFlags | undefined;
unencryptedOnesiePlayerRequest?: Uint8Array | undefined;
TQ?: boolean | undefined;
useJsonformatterToParsePlayerResponse?: boolean | undefined;
}
export interface EncryptedPlayerRequest_UstreamerFlags {
sendVideoPlaybackConfig?: boolean | undefined;
}
function createBaseEncryptedPlayerRequest(): EncryptedPlayerRequest {
@@ -32,10 +37,11 @@ function createBaseEncryptedPlayerRequest(): EncryptedPlayerRequest {
hmac: new Uint8Array(0),
reverseProxyConfig: "",
serializeResponseAsJson: false,
pM: false,
enableAdPlacementsPreroll: false,
enableCompression: false,
ustreamerFlags: undefined,
unencryptedOnesiePlayerRequest: new Uint8Array(0),
TQ: false,
useJsonformatterToParsePlayerResponse: false,
};
}
@@ -62,17 +68,23 @@ export const EncryptedPlayerRequest: MessageFns<EncryptedPlayerRequest> = {
if (message.serializeResponseAsJson !== undefined && message.serializeResponseAsJson !== false) {
writer.uint32(80).bool(message.serializeResponseAsJson);
}
if (message.pM !== undefined && message.pM !== false) {
writer.uint32(104).bool(message.pM);
if (message.enableAdPlacementsPreroll !== undefined && message.enableAdPlacementsPreroll !== false) {
writer.uint32(104).bool(message.enableAdPlacementsPreroll);
}
if (message.enableCompression !== undefined && message.enableCompression !== false) {
writer.uint32(112).bool(message.enableCompression);
}
if (message.ustreamerFlags !== undefined) {
EncryptedPlayerRequest_UstreamerFlags.encode(message.ustreamerFlags, writer.uint32(122).fork()).join();
}
if (message.unencryptedOnesiePlayerRequest !== undefined && message.unencryptedOnesiePlayerRequest.length !== 0) {
writer.uint32(130).bytes(message.unencryptedOnesiePlayerRequest);
}
if (message.TQ !== undefined && message.TQ !== false) {
writer.uint32(136).bool(message.TQ);
if (
message.useJsonformatterToParsePlayerResponse !== undefined &&
message.useJsonformatterToParsePlayerResponse !== false
) {
writer.uint32(136).bool(message.useJsonformatterToParsePlayerResponse);
}
return writer;
},
@@ -138,7 +150,7 @@ export const EncryptedPlayerRequest: MessageFns<EncryptedPlayerRequest> = {
break;
}
message.pM = reader.bool();
message.enableAdPlacementsPreroll = reader.bool();
continue;
case 14:
if (tag !== 112) {
@@ -147,6 +159,13 @@ export const EncryptedPlayerRequest: MessageFns<EncryptedPlayerRequest> = {
message.enableCompression = reader.bool();
continue;
case 15:
if (tag !== 122) {
break;
}
message.ustreamerFlags = EncryptedPlayerRequest_UstreamerFlags.decode(reader, reader.uint32());
continue;
case 16:
if (tag !== 130) {
break;
@@ -159,7 +178,7 @@ export const EncryptedPlayerRequest: MessageFns<EncryptedPlayerRequest> = {
break;
}
message.TQ = reader.bool();
message.useJsonformatterToParsePlayerResponse = reader.bool();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
@@ -185,12 +204,19 @@ export const EncryptedPlayerRequest: MessageFns<EncryptedPlayerRequest> = {
serializeResponseAsJson: isSet(object.serializeResponseAsJson)
? globalThis.Boolean(object.serializeResponseAsJson)
: false,
pM: isSet(object.pM) ? globalThis.Boolean(object.pM) : false,
enableAdPlacementsPreroll: isSet(object.enableAdPlacementsPreroll)
? globalThis.Boolean(object.enableAdPlacementsPreroll)
: false,
enableCompression: isSet(object.enableCompression) ? globalThis.Boolean(object.enableCompression) : false,
ustreamerFlags: isSet(object.ustreamerFlags)
? EncryptedPlayerRequest_UstreamerFlags.fromJSON(object.ustreamerFlags)
: undefined,
unencryptedOnesiePlayerRequest: isSet(object.unencryptedOnesiePlayerRequest)
? bytesFromBase64(object.unencryptedOnesiePlayerRequest)
: new Uint8Array(0),
TQ: isSet(object.TQ) ? globalThis.Boolean(object.TQ) : false,
useJsonformatterToParsePlayerResponse: isSet(object.useJsonformatterToParsePlayerResponse)
? globalThis.Boolean(object.useJsonformatterToParsePlayerResponse)
: false,
};
},
@@ -217,17 +243,23 @@ export const EncryptedPlayerRequest: MessageFns<EncryptedPlayerRequest> = {
if (message.serializeResponseAsJson !== undefined && message.serializeResponseAsJson !== false) {
obj.serializeResponseAsJson = message.serializeResponseAsJson;
}
if (message.pM !== undefined && message.pM !== false) {
obj.pM = message.pM;
if (message.enableAdPlacementsPreroll !== undefined && message.enableAdPlacementsPreroll !== false) {
obj.enableAdPlacementsPreroll = message.enableAdPlacementsPreroll;
}
if (message.enableCompression !== undefined && message.enableCompression !== false) {
obj.enableCompression = message.enableCompression;
}
if (message.ustreamerFlags !== undefined) {
obj.ustreamerFlags = EncryptedPlayerRequest_UstreamerFlags.toJSON(message.ustreamerFlags);
}
if (message.unencryptedOnesiePlayerRequest !== undefined && message.unencryptedOnesiePlayerRequest.length !== 0) {
obj.unencryptedOnesiePlayerRequest = base64FromBytes(message.unencryptedOnesiePlayerRequest);
}
if (message.TQ !== undefined && message.TQ !== false) {
obj.TQ = message.TQ;
if (
message.useJsonformatterToParsePlayerResponse !== undefined &&
message.useJsonformatterToParsePlayerResponse !== false
) {
obj.useJsonformatterToParsePlayerResponse = message.useJsonformatterToParsePlayerResponse;
}
return obj;
},
@@ -244,10 +276,78 @@ export const EncryptedPlayerRequest: MessageFns<EncryptedPlayerRequest> = {
message.hmac = object.hmac ?? new Uint8Array(0);
message.reverseProxyConfig = object.reverseProxyConfig ?? "";
message.serializeResponseAsJson = object.serializeResponseAsJson ?? false;
message.pM = object.pM ?? false;
message.enableAdPlacementsPreroll = object.enableAdPlacementsPreroll ?? false;
message.enableCompression = object.enableCompression ?? false;
message.ustreamerFlags = (object.ustreamerFlags !== undefined && object.ustreamerFlags !== null)
? EncryptedPlayerRequest_UstreamerFlags.fromPartial(object.ustreamerFlags)
: undefined;
message.unencryptedOnesiePlayerRequest = object.unencryptedOnesiePlayerRequest ?? new Uint8Array(0);
message.TQ = object.TQ ?? false;
message.useJsonformatterToParsePlayerResponse = object.useJsonformatterToParsePlayerResponse ?? false;
return message;
},
};
function createBaseEncryptedPlayerRequest_UstreamerFlags(): EncryptedPlayerRequest_UstreamerFlags {
return { sendVideoPlaybackConfig: false };
}
export const EncryptedPlayerRequest_UstreamerFlags: MessageFns<EncryptedPlayerRequest_UstreamerFlags> = {
encode(message: EncryptedPlayerRequest_UstreamerFlags, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.sendVideoPlaybackConfig !== undefined && message.sendVideoPlaybackConfig !== false) {
writer.uint32(16).bool(message.sendVideoPlaybackConfig);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): EncryptedPlayerRequest_UstreamerFlags {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseEncryptedPlayerRequest_UstreamerFlags();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 2:
if (tag !== 16) {
break;
}
message.sendVideoPlaybackConfig = reader.bool();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): EncryptedPlayerRequest_UstreamerFlags {
return {
sendVideoPlaybackConfig: isSet(object.sendVideoPlaybackConfig)
? globalThis.Boolean(object.sendVideoPlaybackConfig)
: false,
};
},
toJSON(message: EncryptedPlayerRequest_UstreamerFlags): unknown {
const obj: any = {};
if (message.sendVideoPlaybackConfig !== undefined && message.sendVideoPlaybackConfig !== false) {
obj.sendVideoPlaybackConfig = message.sendVideoPlaybackConfig;
}
return obj;
},
create<I extends Exact<DeepPartial<EncryptedPlayerRequest_UstreamerFlags>, I>>(
base?: I,
): EncryptedPlayerRequest_UstreamerFlags {
return EncryptedPlayerRequest_UstreamerFlags.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<EncryptedPlayerRequest_UstreamerFlags>, I>>(
object: I,
): EncryptedPlayerRequest_UstreamerFlags {
const message = createBaseEncryptedPlayerRequest_UstreamerFlags();
message.sendVideoPlaybackConfig = object.sendVideoPlaybackConfig ?? false;
return message;
},
};

View File

@@ -14,7 +14,7 @@ export interface FormatInitializationMetadata {
videoId?: string | undefined;
formatId?: FormatId | undefined;
endTimeMs?: number | undefined;
field4?: number | undefined;
endSegmentNumber?: number | undefined;
mimeType?: string | undefined;
initRange?: InitRange | undefined;
indexRange?: IndexRange | undefined;
@@ -28,7 +28,7 @@ function createBaseFormatInitializationMetadata(): FormatInitializationMetadata
videoId: "",
formatId: undefined,
endTimeMs: 0,
field4: 0,
endSegmentNumber: 0,
mimeType: "",
initRange: undefined,
indexRange: undefined,
@@ -49,8 +49,8 @@ export const FormatInitializationMetadata: MessageFns<FormatInitializationMetada
if (message.endTimeMs !== undefined && message.endTimeMs !== 0) {
writer.uint32(24).int32(message.endTimeMs);
}
if (message.field4 !== undefined && message.field4 !== 0) {
writer.uint32(32).int32(message.field4);
if (message.endSegmentNumber !== undefined && message.endSegmentNumber !== 0) {
writer.uint32(32).int64(message.endSegmentNumber);
}
if (message.mimeType !== undefined && message.mimeType !== "") {
writer.uint32(42).string(message.mimeType);
@@ -106,7 +106,7 @@ export const FormatInitializationMetadata: MessageFns<FormatInitializationMetada
break;
}
message.field4 = reader.int32();
message.endSegmentNumber = longToNumber(reader.int64());
continue;
case 5:
if (tag !== 42) {
@@ -164,7 +164,7 @@ export const FormatInitializationMetadata: MessageFns<FormatInitializationMetada
videoId: isSet(object.videoId) ? globalThis.String(object.videoId) : "",
formatId: isSet(object.formatId) ? FormatId.fromJSON(object.formatId) : undefined,
endTimeMs: isSet(object.endTimeMs) ? globalThis.Number(object.endTimeMs) : 0,
field4: isSet(object.field4) ? globalThis.Number(object.field4) : 0,
endSegmentNumber: isSet(object.endSegmentNumber) ? globalThis.Number(object.endSegmentNumber) : 0,
mimeType: isSet(object.mimeType) ? globalThis.String(object.mimeType) : "",
initRange: isSet(object.initRange) ? InitRange.fromJSON(object.initRange) : undefined,
indexRange: isSet(object.indexRange) ? IndexRange.fromJSON(object.indexRange) : undefined,
@@ -185,8 +185,8 @@ export const FormatInitializationMetadata: MessageFns<FormatInitializationMetada
if (message.endTimeMs !== undefined && message.endTimeMs !== 0) {
obj.endTimeMs = Math.round(message.endTimeMs);
}
if (message.field4 !== undefined && message.field4 !== 0) {
obj.field4 = Math.round(message.field4);
if (message.endSegmentNumber !== undefined && message.endSegmentNumber !== 0) {
obj.endSegmentNumber = Math.round(message.endSegmentNumber);
}
if (message.mimeType !== undefined && message.mimeType !== "") {
obj.mimeType = message.mimeType;
@@ -219,7 +219,7 @@ export const FormatInitializationMetadata: MessageFns<FormatInitializationMetada
? FormatId.fromPartial(object.formatId)
: undefined;
message.endTimeMs = object.endTimeMs ?? 0;
message.field4 = object.field4 ?? 0;
message.endSegmentNumber = object.endSegmentNumber ?? 0;
message.mimeType = object.mimeType ?? "";
message.initRange = (object.initRange !== undefined && object.initRange !== null)
? InitRange.fromPartial(object.initRange)
@@ -246,6 +246,17 @@ type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
function longToNumber(int64: { toString(): string }): number {
const num = globalThis.Number(int64.toString());
if (num > globalThis.Number.MAX_SAFE_INTEGER) {
throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
}
if (num < globalThis.Number.MIN_SAFE_INTEGER) {
throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER");
}
return num;
}
function isSet(value: any): boolean {
return value !== null && value !== undefined;
}

View File

@@ -10,54 +10,69 @@ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
export const protobufPackage = "video_streaming";
export interface LiveMetadata {
broadcastId?: string | undefined;
headSequenceNumber?: number | undefined;
headTimeMs?: number | undefined;
wallTimeMs?: number | undefined;
field10?: number | undefined;
field12?: number | undefined;
field13?: number | undefined;
headTimeUsec?: number | undefined;
field15?: number | undefined;
videoId?: string | undefined;
postLiveDvr?: boolean | undefined;
headm?: number | undefined;
minSeekableTimeTicks?: number | undefined;
minSeekableTimescale?: number | undefined;
maxSeekableTimeTicks?: number | undefined;
maxSeekableTimescale?: number | undefined;
}
function createBaseLiveMetadata(): LiveMetadata {
return {
broadcastId: "",
headSequenceNumber: 0,
headTimeMs: 0,
wallTimeMs: 0,
field10: 0,
field12: 0,
field13: 0,
headTimeUsec: 0,
field15: 0,
videoId: "",
postLiveDvr: false,
headm: 0,
minSeekableTimeTicks: 0,
minSeekableTimescale: 0,
maxSeekableTimeTicks: 0,
maxSeekableTimescale: 0,
};
}
export const LiveMetadata: MessageFns<LiveMetadata> = {
encode(message: LiveMetadata, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.broadcastId !== undefined && message.broadcastId !== "") {
writer.uint32(10).string(message.broadcastId);
}
if (message.headSequenceNumber !== undefined && message.headSequenceNumber !== 0) {
writer.uint32(24).uint32(message.headSequenceNumber);
writer.uint32(24).int64(message.headSequenceNumber);
}
if (message.headTimeMs !== undefined && message.headTimeMs !== 0) {
writer.uint32(32).uint64(message.headTimeMs);
writer.uint32(32).int64(message.headTimeMs);
}
if (message.wallTimeMs !== undefined && message.wallTimeMs !== 0) {
writer.uint32(40).uint64(message.wallTimeMs);
writer.uint32(40).int64(message.wallTimeMs);
}
if (message.field10 !== undefined && message.field10 !== 0) {
writer.uint32(80).uint64(message.field10);
if (message.videoId !== undefined && message.videoId !== "") {
writer.uint32(50).string(message.videoId);
}
if (message.field12 !== undefined && message.field12 !== 0) {
writer.uint32(96).uint64(message.field12);
if (message.postLiveDvr !== undefined && message.postLiveDvr !== false) {
writer.uint32(64).bool(message.postLiveDvr);
}
if (message.field13 !== undefined && message.field13 !== 0) {
writer.uint32(104).uint64(message.field13);
if (message.headm !== undefined && message.headm !== 0) {
writer.uint32(80).int64(message.headm);
}
if (message.headTimeUsec !== undefined && message.headTimeUsec !== 0) {
writer.uint32(112).uint64(message.headTimeUsec);
if (message.minSeekableTimeTicks !== undefined && message.minSeekableTimeTicks !== 0) {
writer.uint32(96).int64(message.minSeekableTimeTicks);
}
if (message.field15 !== undefined && message.field15 !== 0) {
writer.uint32(120).uint64(message.field15);
if (message.minSeekableTimescale !== undefined && message.minSeekableTimescale !== 0) {
writer.uint32(104).int32(message.minSeekableTimescale);
}
if (message.maxSeekableTimeTicks !== undefined && message.maxSeekableTimeTicks !== 0) {
writer.uint32(112).int64(message.maxSeekableTimeTicks);
}
if (message.maxSeekableTimescale !== undefined && message.maxSeekableTimescale !== 0) {
writer.uint32(120).int32(message.maxSeekableTimescale);
}
return writer;
},
@@ -69,61 +84,82 @@ export const LiveMetadata: MessageFns<LiveMetadata> = {
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
if (tag !== 10) {
break;
}
message.broadcastId = reader.string();
continue;
case 3:
if (tag !== 24) {
break;
}
message.headSequenceNumber = reader.uint32();
message.headSequenceNumber = longToNumber(reader.int64());
continue;
case 4:
if (tag !== 32) {
break;
}
message.headTimeMs = longToNumber(reader.uint64());
message.headTimeMs = longToNumber(reader.int64());
continue;
case 5:
if (tag !== 40) {
break;
}
message.wallTimeMs = longToNumber(reader.uint64());
message.wallTimeMs = longToNumber(reader.int64());
continue;
case 6:
if (tag !== 50) {
break;
}
message.videoId = reader.string();
continue;
case 8:
if (tag !== 64) {
break;
}
message.postLiveDvr = reader.bool();
continue;
case 10:
if (tag !== 80) {
break;
}
message.field10 = longToNumber(reader.uint64());
message.headm = longToNumber(reader.int64());
continue;
case 12:
if (tag !== 96) {
break;
}
message.field12 = longToNumber(reader.uint64());
message.minSeekableTimeTicks = longToNumber(reader.int64());
continue;
case 13:
if (tag !== 104) {
break;
}
message.field13 = longToNumber(reader.uint64());
message.minSeekableTimescale = reader.int32();
continue;
case 14:
if (tag !== 112) {
break;
}
message.headTimeUsec = longToNumber(reader.uint64());
message.maxSeekableTimeTicks = longToNumber(reader.int64());
continue;
case 15:
if (tag !== 120) {
break;
}
message.field15 = longToNumber(reader.uint64());
message.maxSeekableTimescale = reader.int32();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
@@ -136,19 +172,25 @@ export const LiveMetadata: MessageFns<LiveMetadata> = {
fromJSON(object: any): LiveMetadata {
return {
broadcastId: isSet(object.broadcastId) ? globalThis.String(object.broadcastId) : "",
headSequenceNumber: isSet(object.headSequenceNumber) ? globalThis.Number(object.headSequenceNumber) : 0,
headTimeMs: isSet(object.headTimeMs) ? globalThis.Number(object.headTimeMs) : 0,
wallTimeMs: isSet(object.wallTimeMs) ? globalThis.Number(object.wallTimeMs) : 0,
field10: isSet(object.field10) ? globalThis.Number(object.field10) : 0,
field12: isSet(object.field12) ? globalThis.Number(object.field12) : 0,
field13: isSet(object.field13) ? globalThis.Number(object.field13) : 0,
headTimeUsec: isSet(object.headTimeUsec) ? globalThis.Number(object.headTimeUsec) : 0,
field15: isSet(object.field15) ? globalThis.Number(object.field15) : 0,
videoId: isSet(object.videoId) ? globalThis.String(object.videoId) : "",
postLiveDvr: isSet(object.postLiveDvr) ? globalThis.Boolean(object.postLiveDvr) : false,
headm: isSet(object.headm) ? globalThis.Number(object.headm) : 0,
minSeekableTimeTicks: isSet(object.minSeekableTimeTicks) ? globalThis.Number(object.minSeekableTimeTicks) : 0,
minSeekableTimescale: isSet(object.minSeekableTimescale) ? globalThis.Number(object.minSeekableTimescale) : 0,
maxSeekableTimeTicks: isSet(object.maxSeekableTimeTicks) ? globalThis.Number(object.maxSeekableTimeTicks) : 0,
maxSeekableTimescale: isSet(object.maxSeekableTimescale) ? globalThis.Number(object.maxSeekableTimescale) : 0,
};
},
toJSON(message: LiveMetadata): unknown {
const obj: any = {};
if (message.broadcastId !== undefined && message.broadcastId !== "") {
obj.broadcastId = message.broadcastId;
}
if (message.headSequenceNumber !== undefined && message.headSequenceNumber !== 0) {
obj.headSequenceNumber = Math.round(message.headSequenceNumber);
}
@@ -158,20 +200,26 @@ export const LiveMetadata: MessageFns<LiveMetadata> = {
if (message.wallTimeMs !== undefined && message.wallTimeMs !== 0) {
obj.wallTimeMs = Math.round(message.wallTimeMs);
}
if (message.field10 !== undefined && message.field10 !== 0) {
obj.field10 = Math.round(message.field10);
if (message.videoId !== undefined && message.videoId !== "") {
obj.videoId = message.videoId;
}
if (message.field12 !== undefined && message.field12 !== 0) {
obj.field12 = Math.round(message.field12);
if (message.postLiveDvr !== undefined && message.postLiveDvr !== false) {
obj.postLiveDvr = message.postLiveDvr;
}
if (message.field13 !== undefined && message.field13 !== 0) {
obj.field13 = Math.round(message.field13);
if (message.headm !== undefined && message.headm !== 0) {
obj.headm = Math.round(message.headm);
}
if (message.headTimeUsec !== undefined && message.headTimeUsec !== 0) {
obj.headTimeUsec = Math.round(message.headTimeUsec);
if (message.minSeekableTimeTicks !== undefined && message.minSeekableTimeTicks !== 0) {
obj.minSeekableTimeTicks = Math.round(message.minSeekableTimeTicks);
}
if (message.field15 !== undefined && message.field15 !== 0) {
obj.field15 = Math.round(message.field15);
if (message.minSeekableTimescale !== undefined && message.minSeekableTimescale !== 0) {
obj.minSeekableTimescale = Math.round(message.minSeekableTimescale);
}
if (message.maxSeekableTimeTicks !== undefined && message.maxSeekableTimeTicks !== 0) {
obj.maxSeekableTimeTicks = Math.round(message.maxSeekableTimeTicks);
}
if (message.maxSeekableTimescale !== undefined && message.maxSeekableTimescale !== 0) {
obj.maxSeekableTimescale = Math.round(message.maxSeekableTimescale);
}
return obj;
},
@@ -181,14 +229,17 @@ export const LiveMetadata: MessageFns<LiveMetadata> = {
},
fromPartial<I extends Exact<DeepPartial<LiveMetadata>, I>>(object: I): LiveMetadata {
const message = createBaseLiveMetadata();
message.broadcastId = object.broadcastId ?? "";
message.headSequenceNumber = object.headSequenceNumber ?? 0;
message.headTimeMs = object.headTimeMs ?? 0;
message.wallTimeMs = object.wallTimeMs ?? 0;
message.field10 = object.field10 ?? 0;
message.field12 = object.field12 ?? 0;
message.field13 = object.field13 ?? 0;
message.headTimeUsec = object.headTimeUsec ?? 0;
message.field15 = object.field15 ?? 0;
message.videoId = object.videoId ?? "";
message.postLiveDvr = object.postLiveDvr ?? false;
message.headm = object.headm ?? 0;
message.minSeekableTimeTicks = object.minSeekableTimeTicks ?? 0;
message.minSeekableTimescale = object.minSeekableTimescale ?? 0;
message.maxSeekableTimeTicks = object.maxSeekableTimeTicks ?? 0;
message.maxSeekableTimescale = object.maxSeekableTimescale ?? 0;
return message;
},
};

View File

@@ -17,8 +17,8 @@ export interface MediaHeader {
itag?: number | undefined;
lmt?: number | undefined;
xtags?: string | undefined;
startDataRange?: number | undefined;
compression?: MediaHeader_Compression | undefined;
startRange?: number | undefined;
compressionAlgorithm?: MediaHeader_CompressionAlgorithm | undefined;
isInitSeg?: boolean | undefined;
sequenceNumber?: number | undefined;
field10?: number | undefined;
@@ -29,40 +29,40 @@ export interface MediaHeader {
timeRange?: TimeRange | undefined;
}
export enum MediaHeader_Compression {
VAL0 = 0,
VAL1 = 1,
export enum MediaHeader_CompressionAlgorithm {
UNKNOWN = 0,
NONE = 1,
GZIP = 2,
UNRECOGNIZED = -1,
}
export function mediaHeader_CompressionFromJSON(object: any): MediaHeader_Compression {
export function mediaHeader_CompressionAlgorithmFromJSON(object: any): MediaHeader_CompressionAlgorithm {
switch (object) {
case 0:
case "VAL0":
return MediaHeader_Compression.VAL0;
case "UNKNOWN":
return MediaHeader_CompressionAlgorithm.UNKNOWN;
case 1:
case "VAL1":
return MediaHeader_Compression.VAL1;
case "NONE":
return MediaHeader_CompressionAlgorithm.NONE;
case 2:
case "GZIP":
return MediaHeader_Compression.GZIP;
return MediaHeader_CompressionAlgorithm.GZIP;
case -1:
case "UNRECOGNIZED":
default:
return MediaHeader_Compression.UNRECOGNIZED;
return MediaHeader_CompressionAlgorithm.UNRECOGNIZED;
}
}
export function mediaHeader_CompressionToJSON(object: MediaHeader_Compression): string {
export function mediaHeader_CompressionAlgorithmToJSON(object: MediaHeader_CompressionAlgorithm): string {
switch (object) {
case MediaHeader_Compression.VAL0:
return "VAL0";
case MediaHeader_Compression.VAL1:
return "VAL1";
case MediaHeader_Compression.GZIP:
case MediaHeader_CompressionAlgorithm.UNKNOWN:
return "UNKNOWN";
case MediaHeader_CompressionAlgorithm.NONE:
return "NONE";
case MediaHeader_CompressionAlgorithm.GZIP:
return "GZIP";
case MediaHeader_Compression.UNRECOGNIZED:
case MediaHeader_CompressionAlgorithm.UNRECOGNIZED:
default:
return "UNRECOGNIZED";
}
@@ -75,8 +75,8 @@ function createBaseMediaHeader(): MediaHeader {
itag: 0,
lmt: 0,
xtags: "",
startDataRange: 0,
compression: 0,
startRange: 0,
compressionAlgorithm: 0,
isInitSeg: false,
sequenceNumber: 0,
field10: 0,
@@ -105,11 +105,11 @@ export const MediaHeader: MessageFns<MediaHeader> = {
if (message.xtags !== undefined && message.xtags !== "") {
writer.uint32(42).string(message.xtags);
}
if (message.startDataRange !== undefined && message.startDataRange !== 0) {
writer.uint32(48).int32(message.startDataRange);
if (message.startRange !== undefined && message.startRange !== 0) {
writer.uint32(48).int64(message.startRange);
}
if (message.compression !== undefined && message.compression !== 0) {
writer.uint32(56).int32(message.compression);
if (message.compressionAlgorithm !== undefined && message.compressionAlgorithm !== 0) {
writer.uint32(56).int32(message.compressionAlgorithm);
}
if (message.isInitSeg !== undefined && message.isInitSeg !== false) {
writer.uint32(64).bool(message.isInitSeg);
@@ -121,10 +121,10 @@ export const MediaHeader: MessageFns<MediaHeader> = {
writer.uint32(80).int64(message.field10);
}
if (message.startMs !== undefined && message.startMs !== 0) {
writer.uint32(88).int32(message.startMs);
writer.uint32(88).int64(message.startMs);
}
if (message.durationMs !== undefined && message.durationMs !== 0) {
writer.uint32(96).int32(message.durationMs);
writer.uint32(96).int64(message.durationMs);
}
if (message.formatId !== undefined) {
FormatId.encode(message.formatId, writer.uint32(106).fork()).join();
@@ -185,14 +185,14 @@ export const MediaHeader: MessageFns<MediaHeader> = {
break;
}
message.startDataRange = reader.int32();
message.startRange = longToNumber(reader.int64());
continue;
case 7:
if (tag !== 56) {
break;
}
message.compression = reader.int32() as any;
message.compressionAlgorithm = reader.int32() as any;
continue;
case 8:
if (tag !== 64) {
@@ -220,14 +220,14 @@ export const MediaHeader: MessageFns<MediaHeader> = {
break;
}
message.startMs = reader.int32();
message.startMs = longToNumber(reader.int64());
continue;
case 12:
if (tag !== 96) {
break;
}
message.durationMs = reader.int32();
message.durationMs = longToNumber(reader.int64());
continue;
case 13:
if (tag !== 106) {
@@ -266,8 +266,10 @@ export const MediaHeader: MessageFns<MediaHeader> = {
itag: isSet(object.itag) ? globalThis.Number(object.itag) : 0,
lmt: isSet(object.lmt) ? globalThis.Number(object.lmt) : 0,
xtags: isSet(object.xtags) ? globalThis.String(object.xtags) : "",
startDataRange: isSet(object.startDataRange) ? globalThis.Number(object.startDataRange) : 0,
compression: isSet(object.compression) ? mediaHeader_CompressionFromJSON(object.compression) : 0,
startRange: isSet(object.startRange) ? globalThis.Number(object.startRange) : 0,
compressionAlgorithm: isSet(object.compressionAlgorithm)
? mediaHeader_CompressionAlgorithmFromJSON(object.compressionAlgorithm)
: 0,
isInitSeg: isSet(object.isInitSeg) ? globalThis.Boolean(object.isInitSeg) : false,
sequenceNumber: isSet(object.sequenceNumber) ? globalThis.Number(object.sequenceNumber) : 0,
field10: isSet(object.field10) ? globalThis.Number(object.field10) : 0,
@@ -296,11 +298,11 @@ export const MediaHeader: MessageFns<MediaHeader> = {
if (message.xtags !== undefined && message.xtags !== "") {
obj.xtags = message.xtags;
}
if (message.startDataRange !== undefined && message.startDataRange !== 0) {
obj.startDataRange = Math.round(message.startDataRange);
if (message.startRange !== undefined && message.startRange !== 0) {
obj.startRange = Math.round(message.startRange);
}
if (message.compression !== undefined && message.compression !== 0) {
obj.compression = mediaHeader_CompressionToJSON(message.compression);
if (message.compressionAlgorithm !== undefined && message.compressionAlgorithm !== 0) {
obj.compressionAlgorithm = mediaHeader_CompressionAlgorithmToJSON(message.compressionAlgorithm);
}
if (message.isInitSeg !== undefined && message.isInitSeg !== false) {
obj.isInitSeg = message.isInitSeg;
@@ -339,8 +341,8 @@ export const MediaHeader: MessageFns<MediaHeader> = {
message.itag = object.itag ?? 0;
message.lmt = object.lmt ?? 0;
message.xtags = object.xtags ?? "";
message.startDataRange = object.startDataRange ?? 0;
message.compression = object.compression ?? 0;
message.startRange = object.startRange ?? 0;
message.compressionAlgorithm = object.compressionAlgorithm ?? 0;
message.isInitSeg = object.isInitSeg ?? false;
message.sequenceNumber = object.sequenceNumber ?? 0;
message.field10 = object.field10 ?? 0;

View File

@@ -17,7 +17,7 @@ export interface OnesieHeader {
itag?: string | undefined;
cryptoParams?: CryptoParams | undefined;
lastModified?: number | undefined;
mediaSizeBytes?: number | undefined;
expectedMediaSizeBytes?: number | undefined;
restrictedFormats: string[];
xtags?: string | undefined;
sequenceNumber?: number | undefined;
@@ -40,7 +40,7 @@ function createBaseOnesieHeader(): OnesieHeader {
itag: "",
cryptoParams: undefined,
lastModified: 0,
mediaSizeBytes: 0,
expectedMediaSizeBytes: 0,
restrictedFormats: [],
xtags: "",
sequenceNumber: 0,
@@ -66,8 +66,8 @@ export const OnesieHeader: MessageFns<OnesieHeader> = {
if (message.lastModified !== undefined && message.lastModified !== 0) {
writer.uint32(40).uint64(message.lastModified);
}
if (message.mediaSizeBytes !== undefined && message.mediaSizeBytes !== 0) {
writer.uint32(56).int64(message.mediaSizeBytes);
if (message.expectedMediaSizeBytes !== undefined && message.expectedMediaSizeBytes !== 0) {
writer.uint32(56).int64(message.expectedMediaSizeBytes);
}
for (const v of message.restrictedFormats) {
writer.uint32(90).string(v!);
@@ -134,7 +134,7 @@ export const OnesieHeader: MessageFns<OnesieHeader> = {
break;
}
message.mediaSizeBytes = longToNumber(reader.int64());
message.expectedMediaSizeBytes = longToNumber(reader.int64());
continue;
case 11:
if (tag !== 90) {
@@ -187,7 +187,9 @@ export const OnesieHeader: MessageFns<OnesieHeader> = {
itag: isSet(object.itag) ? globalThis.String(object.itag) : "",
cryptoParams: isSet(object.cryptoParams) ? CryptoParams.fromJSON(object.cryptoParams) : undefined,
lastModified: isSet(object.lastModified) ? globalThis.Number(object.lastModified) : 0,
mediaSizeBytes: isSet(object.mediaSizeBytes) ? globalThis.Number(object.mediaSizeBytes) : 0,
expectedMediaSizeBytes: isSet(object.expectedMediaSizeBytes)
? globalThis.Number(object.expectedMediaSizeBytes)
: 0,
restrictedFormats: globalThis.Array.isArray(object?.restrictedFormats)
? object.restrictedFormats.map((e: any) => globalThis.String(e))
: [],
@@ -215,8 +217,8 @@ export const OnesieHeader: MessageFns<OnesieHeader> = {
if (message.lastModified !== undefined && message.lastModified !== 0) {
obj.lastModified = Math.round(message.lastModified);
}
if (message.mediaSizeBytes !== undefined && message.mediaSizeBytes !== 0) {
obj.mediaSizeBytes = Math.round(message.mediaSizeBytes);
if (message.expectedMediaSizeBytes !== undefined && message.expectedMediaSizeBytes !== 0) {
obj.expectedMediaSizeBytes = Math.round(message.expectedMediaSizeBytes);
}
if (message.restrictedFormats?.length) {
obj.restrictedFormats = message.restrictedFormats;
@@ -248,7 +250,7 @@ export const OnesieHeader: MessageFns<OnesieHeader> = {
? CryptoParams.fromPartial(object.cryptoParams)
: undefined;
message.lastModified = object.lastModified ?? 0;
message.mediaSizeBytes = object.mediaSizeBytes ?? 0;
message.expectedMediaSizeBytes = object.expectedMediaSizeBytes ?? 0;
message.restrictedFormats = object.restrictedFormats?.map((e) => e) || [];
message.xtags = object.xtags ?? "";
message.sequenceNumber = object.sequenceNumber ?? 0;

View File

@@ -9,31 +9,17 @@
export const protobufPackage = "video_streaming";
export enum OnesieHeaderType {
PLAYER_RESPONSE = 0,
HEADER_TYPE_1 = 1,
ONESIE_PLAYER_RESPONSE = 0,
MEDIA = 1,
MEDIA_DECRYPTION_KEY = 2,
HEADER_TYPE_3 = 3,
HEADER_TYPE_4 = 4,
HEADER_TYPE_5 = 5,
NEW_HOST = 6,
HEADER_TYPE_7 = 7,
HEADER_TYPE_8 = 8,
HEADER_TYPE_9 = 9,
HEADER_TYPE_10 = 10,
HEADER_TYPE_11 = 11,
HEADER_TYPE_12 = 12,
HEADER_TYPE_13 = 13,
RESTRICTED_FORMATS_HINT = 14,
HEADER_TYPE_15 = 15,
CLEAR_MEDIA = 3,
CLEAR_INIT_SEGMENT = 4,
ACK = 5,
MEDIA_STREAMER_HOSTNAME = 6,
MEDIA_SIZE_HINT = 7,
PLAYER_SERVICE_RESPONSE_PUSH_URL = 8,
LAST_HIGH_PRIORITY_HINT = 9,
STREAM_METADATA = 16,
HEADER_TYPE_17 = 17,
HEADER_TYPE_18 = 18,
HEADER_TYPE_19 = 19,
HEADER_TYPE_20 = 20,
HEADER_TYPE_21 = 21,
HEADER_TYPE_22 = 22,
HEADER_TYPE_23 = 23,
HEADER_TYPE_24 = 24,
ENCRYPTED_INNERTUBE_RESPONSE_PART = 25,
UNRECOGNIZED = -1,
}
@@ -41,80 +27,38 @@ export enum OnesieHeaderType {
export function onesieHeaderTypeFromJSON(object: any): OnesieHeaderType {
switch (object) {
case 0:
case "PLAYER_RESPONSE":
return OnesieHeaderType.PLAYER_RESPONSE;
case "ONESIE_PLAYER_RESPONSE":
return OnesieHeaderType.ONESIE_PLAYER_RESPONSE;
case 1:
case "HEADER_TYPE_1":
return OnesieHeaderType.HEADER_TYPE_1;
case "MEDIA":
return OnesieHeaderType.MEDIA;
case 2:
case "MEDIA_DECRYPTION_KEY":
return OnesieHeaderType.MEDIA_DECRYPTION_KEY;
case 3:
case "HEADER_TYPE_3":
return OnesieHeaderType.HEADER_TYPE_3;
case "CLEAR_MEDIA":
return OnesieHeaderType.CLEAR_MEDIA;
case 4:
case "HEADER_TYPE_4":
return OnesieHeaderType.HEADER_TYPE_4;
case "CLEAR_INIT_SEGMENT":
return OnesieHeaderType.CLEAR_INIT_SEGMENT;
case 5:
case "HEADER_TYPE_5":
return OnesieHeaderType.HEADER_TYPE_5;
case "ACK":
return OnesieHeaderType.ACK;
case 6:
case "NEW_HOST":
return OnesieHeaderType.NEW_HOST;
case "MEDIA_STREAMER_HOSTNAME":
return OnesieHeaderType.MEDIA_STREAMER_HOSTNAME;
case 7:
case "HEADER_TYPE_7":
return OnesieHeaderType.HEADER_TYPE_7;
case "MEDIA_SIZE_HINT":
return OnesieHeaderType.MEDIA_SIZE_HINT;
case 8:
case "HEADER_TYPE_8":
return OnesieHeaderType.HEADER_TYPE_8;
case "PLAYER_SERVICE_RESPONSE_PUSH_URL":
return OnesieHeaderType.PLAYER_SERVICE_RESPONSE_PUSH_URL;
case 9:
case "HEADER_TYPE_9":
return OnesieHeaderType.HEADER_TYPE_9;
case 10:
case "HEADER_TYPE_10":
return OnesieHeaderType.HEADER_TYPE_10;
case 11:
case "HEADER_TYPE_11":
return OnesieHeaderType.HEADER_TYPE_11;
case 12:
case "HEADER_TYPE_12":
return OnesieHeaderType.HEADER_TYPE_12;
case 13:
case "HEADER_TYPE_13":
return OnesieHeaderType.HEADER_TYPE_13;
case 14:
case "RESTRICTED_FORMATS_HINT":
return OnesieHeaderType.RESTRICTED_FORMATS_HINT;
case 15:
case "HEADER_TYPE_15":
return OnesieHeaderType.HEADER_TYPE_15;
case "LAST_HIGH_PRIORITY_HINT":
return OnesieHeaderType.LAST_HIGH_PRIORITY_HINT;
case 16:
case "STREAM_METADATA":
return OnesieHeaderType.STREAM_METADATA;
case 17:
case "HEADER_TYPE_17":
return OnesieHeaderType.HEADER_TYPE_17;
case 18:
case "HEADER_TYPE_18":
return OnesieHeaderType.HEADER_TYPE_18;
case 19:
case "HEADER_TYPE_19":
return OnesieHeaderType.HEADER_TYPE_19;
case 20:
case "HEADER_TYPE_20":
return OnesieHeaderType.HEADER_TYPE_20;
case 21:
case "HEADER_TYPE_21":
return OnesieHeaderType.HEADER_TYPE_21;
case 22:
case "HEADER_TYPE_22":
return OnesieHeaderType.HEADER_TYPE_22;
case 23:
case "HEADER_TYPE_23":
return OnesieHeaderType.HEADER_TYPE_23;
case 24:
case "HEADER_TYPE_24":
return OnesieHeaderType.HEADER_TYPE_24;
case 25:
case "ENCRYPTED_INNERTUBE_RESPONSE_PART":
return OnesieHeaderType.ENCRYPTED_INNERTUBE_RESPONSE_PART;
@@ -127,56 +71,28 @@ export function onesieHeaderTypeFromJSON(object: any): OnesieHeaderType {
export function onesieHeaderTypeToJSON(object: OnesieHeaderType): string {
switch (object) {
case OnesieHeaderType.PLAYER_RESPONSE:
return "PLAYER_RESPONSE";
case OnesieHeaderType.HEADER_TYPE_1:
return "HEADER_TYPE_1";
case OnesieHeaderType.ONESIE_PLAYER_RESPONSE:
return "ONESIE_PLAYER_RESPONSE";
case OnesieHeaderType.MEDIA:
return "MEDIA";
case OnesieHeaderType.MEDIA_DECRYPTION_KEY:
return "MEDIA_DECRYPTION_KEY";
case OnesieHeaderType.HEADER_TYPE_3:
return "HEADER_TYPE_3";
case OnesieHeaderType.HEADER_TYPE_4:
return "HEADER_TYPE_4";
case OnesieHeaderType.HEADER_TYPE_5:
return "HEADER_TYPE_5";
case OnesieHeaderType.NEW_HOST:
return "NEW_HOST";
case OnesieHeaderType.HEADER_TYPE_7:
return "HEADER_TYPE_7";
case OnesieHeaderType.HEADER_TYPE_8:
return "HEADER_TYPE_8";
case OnesieHeaderType.HEADER_TYPE_9:
return "HEADER_TYPE_9";
case OnesieHeaderType.HEADER_TYPE_10:
return "HEADER_TYPE_10";
case OnesieHeaderType.HEADER_TYPE_11:
return "HEADER_TYPE_11";
case OnesieHeaderType.HEADER_TYPE_12:
return "HEADER_TYPE_12";
case OnesieHeaderType.HEADER_TYPE_13:
return "HEADER_TYPE_13";
case OnesieHeaderType.RESTRICTED_FORMATS_HINT:
return "RESTRICTED_FORMATS_HINT";
case OnesieHeaderType.HEADER_TYPE_15:
return "HEADER_TYPE_15";
case OnesieHeaderType.CLEAR_MEDIA:
return "CLEAR_MEDIA";
case OnesieHeaderType.CLEAR_INIT_SEGMENT:
return "CLEAR_INIT_SEGMENT";
case OnesieHeaderType.ACK:
return "ACK";
case OnesieHeaderType.MEDIA_STREAMER_HOSTNAME:
return "MEDIA_STREAMER_HOSTNAME";
case OnesieHeaderType.MEDIA_SIZE_HINT:
return "MEDIA_SIZE_HINT";
case OnesieHeaderType.PLAYER_SERVICE_RESPONSE_PUSH_URL:
return "PLAYER_SERVICE_RESPONSE_PUSH_URL";
case OnesieHeaderType.LAST_HIGH_PRIORITY_HINT:
return "LAST_HIGH_PRIORITY_HINT";
case OnesieHeaderType.STREAM_METADATA:
return "STREAM_METADATA";
case OnesieHeaderType.HEADER_TYPE_17:
return "HEADER_TYPE_17";
case OnesieHeaderType.HEADER_TYPE_18:
return "HEADER_TYPE_18";
case OnesieHeaderType.HEADER_TYPE_19:
return "HEADER_TYPE_19";
case OnesieHeaderType.HEADER_TYPE_20:
return "HEADER_TYPE_20";
case OnesieHeaderType.HEADER_TYPE_21:
return "HEADER_TYPE_21";
case OnesieHeaderType.HEADER_TYPE_22:
return "HEADER_TYPE_22";
case OnesieHeaderType.HEADER_TYPE_23:
return "HEADER_TYPE_23";
case OnesieHeaderType.HEADER_TYPE_24:
return "HEADER_TYPE_24";
case OnesieHeaderType.ENCRYPTED_INNERTUBE_RESPONSE_PART:
return "ENCRYPTED_INNERTUBE_RESPONSE_PART";
case OnesieHeaderType.UNRECOGNIZED:

View File

@@ -6,6 +6,7 @@
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { OnesieRequestTarget, onesieRequestTargetFromJSON, onesieRequestTargetToJSON } from "../misc/common.js";
import { BufferedRange } from "./buffered_range.js";
import { ClientAbrState } from "./client_abr_state.js";
import { EncryptedPlayerRequest } from "./encrypted_player_request.js";
@@ -24,7 +25,7 @@ export interface OnesieRequest {
| StreamerContext
| undefined;
/** MLOnesieRequestTarget */
requestTarget?: number | undefined;
requestTarget?: OnesieRequestTarget | undefined;
bufferedRanges: BufferedRange[];
}
@@ -135,7 +136,7 @@ export const OnesieRequest: MessageFns<OnesieRequest> = {
break;
}
message.requestTarget = reader.int32();
message.requestTarget = reader.int32() as any;
continue;
case 14:
if (tag !== 114) {
@@ -164,7 +165,7 @@ export const OnesieRequest: MessageFns<OnesieRequest> = {
maxVp9Height: isSet(object.maxVp9Height) ? globalThis.Number(object.maxVp9Height) : 0,
clientDisplayHeight: isSet(object.clientDisplayHeight) ? globalThis.Number(object.clientDisplayHeight) : 0,
streamerContext: isSet(object.streamerContext) ? StreamerContext.fromJSON(object.streamerContext) : undefined,
requestTarget: isSet(object.requestTarget) ? globalThis.Number(object.requestTarget) : 0,
requestTarget: isSet(object.requestTarget) ? onesieRequestTargetFromJSON(object.requestTarget) : 0,
bufferedRanges: globalThis.Array.isArray(object?.bufferedRanges)
? object.bufferedRanges.map((e: any) => BufferedRange.fromJSON(e))
: [],
@@ -195,7 +196,7 @@ export const OnesieRequest: MessageFns<OnesieRequest> = {
obj.streamerContext = StreamerContext.toJSON(message.streamerContext);
}
if (message.requestTarget !== undefined && message.requestTarget !== 0) {
obj.requestTarget = Math.round(message.requestTarget);
obj.requestTarget = onesieRequestTargetToJSON(message.requestTarget);
}
if (message.bufferedRanges?.length) {
obj.bufferedRanges = message.bufferedRanges.map((e) => BufferedRange.toJSON(e));

View File

@@ -25,4 +25,160 @@ message IndexRange {
message KeyValuePair {
optional string key = 1;
optional string value = 2;
}
enum AudioQuality {
AUDIO_QUALITY_UNKNOWN = 0;
AUDIO_QUALITY_ULTRALOW = 5;
AUDIO_QUALITY_LOW = 10;
AUDIO_QUALITY_MEDIUM = 20;
AUDIO_QUALITY_HIGH = 30;
}
enum VideoQualitySetting {
VIDEO_QUALITY_SETTING_UNKNOWN = 0;
VIDEO_QUALITY_SETTING_HIGHER_QUALITY = 1;
VIDEO_QUALITY_SETTING_DATA_SAVER = 2;
VIDEO_QUALITY_SETTING_ADVANCED_MENU = 3;
}
enum PlaybackAudioRouteOutputType {
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_UNKNOWN = 0;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_LINE_OUT = 1;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HEADPHONES = 2;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_A2DP = 3;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_RECEIVER = 4;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BUILT_IN_SPEAKER = 5;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_HDMI = 6;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_AIR_PLAY = 7;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_LE = 8;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_BLUETOOTH_HFP = 9;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_USB_AUDIO = 10;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_CAR_PLAY = 11;
PLAYBACK_AUDIO_ROUTE_OUTPUT_TYPE_ANDROID_AUDIO = 12;
}
enum NetworkMeteredState {
NETWORK_METERED_STATE_UNKNOWN = 0;
NETWORK_METERED_STATE_UNMETERED = 1;
NETWORK_METERED_STATE_METERED = 2;
}
enum SeekSource {
SEEK_SOURCE_UNKNOWN = 0;
SEEK_SOURCE_TIMESTAMP_IN_COMMENTS = 1;
SEEK_SOURCE_TIMESTAMP_IN_DESCRIPTION = 2;
SEEK_SOURCE_MACRO_MARKER_LIST_ITEM = 3;
SEEK_SOURCE_DOUBLE_TAP_TO_SEEK = 4;
SEEK_SOURCE_DOUBLE_TAP_TO_SKIP_CHAPTER = 5;
SEEK_SOURCE_PICK_UP_PLAY_HEAD = 6;
SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR = 7;
SEEK_SOURCE_SLIDE_ON_PLAYER = 8;
SEEK_SOURCE_SABR_PARTIAL_CHUNK = 9;
SEEK_SOURCE_SABR_SEEK_TO_HEAD = 10;
SEEK_SOURCE_SABR_LIVE_DVR_USER_SEEK = 11;
SEEK_SOURCE_SABR_SEEK_TO_DVR_LOWER_BOUND = 12;
SEEK_SOURCE_SABR_SEEK_TO_DVR_UPPER_BOUND = 13;
SEEK_SOURCE_SSDAI_INTERNAL = 14;
SEEK_SOURCE_START_PLAYBACK = 15;
SEEK_SOURCE_SABR_ACCURATE_SEEK = 17;
SEEK_SOURCE_START_PLAYBACK_SEEK_TO_END = 18;
SEEK_SOURCE_IOS_PLAYER_REMOVED_SEGMENTS = 19;
SEEK_SOURCE_IOS_PLAYER_SEGMENT_LIST = 20;
SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK = 21;
SEEK_SOURCE_IOS_PLAYER_ITEM_SEEK_TO_END = 22;
SEEK_SOURCE_IOS_PLAYER_SEEK_TO_END_TO_RESYNC = 23;
SEEK_SOURCE_IOS_SEEK_ACCESSIBILITY_BUTTON = 24;
SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_FILMSTRIP = 25;
SEEK_SOURCE_FINE_SCRUBBER_TAP_ON_FILMSTRIP = 26;
SEEK_SOURCE_FINE_SCRUBBER_SLIDE_ON_SCRUBBER_BAR = 27;
SEEK_SOURCE_SEEK_BUTTON_ON_PLAYER_CONTROL = 28;
SEEK_SOURCE_SABR_INGESTION_WALL_TIME_SEEK = 29;
SEEK_SOURCE_PLAYER_VIEW_REPARENT_INTERNAL = 30;
SEEK_SOURCE_PRESS_REWIND_PLAY_BACK_CONTROL = 31;
SEEK_SOURCE_PRESS_FAST_FORWARD_PLAY_BACK_CONTROL = 32;
SEEK_SOURCE_PRESS_LIVE_SYNC_ICON = 33;
SEEK_SOURCE_PEG_TO_LIVE = 34;
SEEK_SOURCE_ANDROID_MEDIA_SESSION = 35;
SEEK_SOURCE_TAP_ON_REPLAY_ACTION = 36;
SEEK_SOURCE_AUTOMATIC_REPLAY_ACTION = 37;
SEEK_SOURCE_NON_USER_SEEK_TO_PREVIOUS = 38;
SEEK_SOURCE_NON_USER_SEEK_TO_NEXT = 39;
SEEK_SOURCE_HIGHLIGHTS_TAP_PREVIOUS_PLAY = 66;
SEEK_SOURCE_HIGHLIGHTS_TAP_NEXT_PLAY = 40;
SEEK_SOURCE_HIGHLIGHTS_TAP_HIDDEN_NEXT_PLAY = 41;
SEEK_SOURCE_HIGHLIGHTS_TAP_LIST_ITEM = 42;
SEEK_SOURCE_HIGHLIGHTS_AUTOMATIC_NEXT_PLAY = 43;
SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_FIRST_PLAY = 44;
SEEK_SOURCE_HIGHLIGHTS_SEEK_TO_END = 45;
SEEK_SOURCE_SEGMENTS_TAP_LIST_ITEM = 46;
SEEK_SOURCE_PIP_FAST_FORWARD_BUTTON = 47;
SEEK_SOURCE_PIP_REWIND_BUTTON = 48;
SEEK_SOURCE_PIP_RESUME_ON_HEAD = 49;
SEEK_SOURCE_MOVING_CLIP_FRAME = 50;
SEEK_SOURCE_RESUME_CLIP_PREVIOUS_POSITION = 51;
SEEK_SOURCE_SEEK_TO_NEXT_CHAPTER = 52;
SEEK_SOURCE_SEEK_TO_PREVIOUS_CHAPTER = 53;
SEEK_SOURCE_IOS_SHAREPLAY_PAUSE = 54;
SEEK_SOURCE_IOS_SHAREPLAY_SEEK = 55;
SEEK_SOURCE_IOS_SHAREPLAY_SYNC_RESPONSE = 56;
SEEK_SOURCE_SEEK_TO_HEAD_IMMERSIVE_LIVE_VIDEO = 57;
SEEK_SOURCE_SEEK_TO_START_OF_LOOPING_RANGE_OF_SHORTS = 58;
SEEK_SOURCE_SABR_SEEK_TO_CLOSEST_KEYFRAME = 59;
SEEK_SOURCE_SEEK_TO_END_OF_LOOPING_RANGE_OF_SHORTS = 60;
SEEK_SOURCE_CLIP_SLIDE_ON_FLIMSTRIP = 61;
SEEK_SOURCE_PICK_UP_CLIP_SLIDER = 62;
SEEK_SOURCE_FINE_SCRUBBER_CANCELLED = 63;
SEEK_SOURCE_INLINE_PLAYER_SEEK_CHAPTER = 64;
SEEK_SOURCE_INLINE_PLAYER_SEEK_SECONDS = 65;
SEEK_SOURCE_HIGHLIGHTS_PLAYER_EXIT_FULLSCREEN = 67;
SEEK_SOURCE_LARGE_CONTROLS_FORWARD_BUTTON = 68;
SEEK_SOURCE_LARGE_CONTROLS_REWIND_BUTTON = 69;
SEEK_SOURCE_LARGE_CONTROLS_SCRUBBER_BAR = 70;
SEEK_SOURCE_SEEK_BACKWARD_5S = 71;
SEEK_SOURCE_SEEK_FORWARD_5S = 72;
SEEK_SOURCE_SEEK_BACKWARD_10S = 73;
SEEK_SOURCE_SEEK_FORWARD_10S = 74;
SEEK_SOURCE_SEEK_FORWARD_60S = 75;
SEEK_SOURCE_SEEK_BACKWARD_60S = 76;
SEEK_SOURCE_SEEK_TO_NEXT_FRAME = 77;
SEEK_SOURCE_SEEK_TO_PREV_FRAME = 78;
SEEK_SOURCE_KEYBOARD_SEEK_TO_BEGINNING = 79;
SEEK_SOURCE_KEYBOARD_SEEK_TO_END = 80;
SEEK_SOURCE_SEEK_PERCENT_OF_VIDEO = 81;
SEEK_SOURCE_HIDDEN_FAST_FORWARD_BUTTON = 82;
SEEK_SOURCE_HIDDEN_REWIND_BUTTON = 83;
SEEK_SOURCE_TIMESTAMP = 84;
SEEK_SOURCE_LR_MEDIA_SESSION_SEEK = 87;
SEEK_SOURCE_MIDROLLS_WITH_TIME_RANGE = 88;
SEEK_SOURCE_SKIP_AD = 89;
SEEK_SOURCE_SEEK_TO_PREVIOUS = 90;
SEEK_SOURCE_SEEK_TO_NEXT = 91;
SEEK_SOURCE_LR_QUICK_SEEK = 92;
SEEK_SOURCE_ONESIE_LIVE = 93;
SEEK_SOURCE_LR_PLAYER_CONTROL_ACTION = 94;
SEEK_SOURCE_UNPLUGGED_LENS_START_CLIP = 95;
SEEK_SOURCE_LR_KEY_PLAYS = 96;
SEEK_SOURCE_SSAP_AD_FMT_FATAL = 97;
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_KEY_EVENT = 98;
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_CONTROLS = 99;
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCH = 100;
SEEK_SOURCE_TVHTML5_INPUT_SOURCE_TOUCHPAD = 101;
SEEK_SOURCE_SEEK_TO_HEAD = 102;
SEEK_SOURCE_AUTOMATIC_PREVIEW_REPLAY_ACTION = 103;
SEEK_SOURCE_H5_MEDIA_ELEMENT_EVENT = 104;
SEEK_SOURCE_H5_WORKAROUND_SEEK = 105;
SEEK_SOURCE_MINIPLAYER_REWIND_BUTTON = 106;
SEEK_SOURCE_MINIPLAYER_FAST_FORWARD_BUTTON = 107;
SEEK_SOURCE_SABR_RELOAD_PLAYER_RESPONSE_TOKEN_SEEK = 108;
SEEK_SOURCE_SLIDE_ON_SCRUBBER_BAR_CHAPTER = 109;
SEEK_SOURCE_ANDROID_CLEAR_BUFFER = 110;
}
enum OnesieRequestTarget {
ONESIE_REQUEST_TARGET_UNKNOWN = 0;
ONESIE_REQUEST_TARGET_ENCRYPTED_PLAYER_SERVICE = 1;
ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE_DEPRECATED = 2;
ONESIE_REQUEST_TARGET_ENCRYPTED_WATCH_SERVICE = 3;
ONESIE_REQUEST_TARGET_INNERTUBE_ENCRYPTED_SERVICE = 4;
}

View File

@@ -1,20 +1,27 @@
syntax = "proto2";
package video_streaming;
import "misc/common.proto";
message ClientAbrState {
optional int32 time_since_last_manual_format_selection_ms = 13;
optional int32 last_manual_direction = 14;
optional int64 time_since_last_manual_format_selection_ms = 13;
optional sint32 last_manual_direction = 14;
optional int32 last_manual_selected_resolution = 16;
optional int32 detailed_network_type = 17;
optional int32 client_viewport_width = 18;
optional int32 client_viewport_height = 19;
optional int64 client_bitrate_cap = 20;
optional int64 client_bitrate_cap_bytes_per_sec = 20;
optional int32 sticky_resolution = 21;
optional bool client_viewport_is_flexible = 22;
optional int32 bandwidth_estimate = 23;
optional int64 bandwidth_estimate = 23;
optional .misc.AudioQuality min_audio_quality = 24;
optional .misc.AudioQuality max_audio_quality = 25;
optional .misc.VideoQualitySetting video_quality_setting = 26;
optional .misc.PlaybackAudioRouteOutputType audio_route = 27;
optional int64 player_time_ms = 28;
optional int64 time_since_last_seek = 29;
optional bool data_saver_mode = 30;
optional .misc.NetworkMeteredState network_metered_state = 32;
optional int32 visibility = 34;
optional float playback_rate = 35;
optional int64 elapsed_wall_time_ms = 36;

View File

@@ -3,10 +3,11 @@ package video_streaming;
message CryptoParams {
enum CompressionType {
VAL_0 = 0;
VAL_1 = 1;
VAL_2 = 2;
NONE = 0;
GZIP = 1;
BROTLI = 2;
}
optional bytes hmac = 4;
optional bytes iv = 5;
optional CompressionType compression_type = 6;

View File

@@ -9,8 +9,15 @@ message EncryptedPlayerRequest {
optional bytes hmac = 7;
optional string reverse_proxy_config = 9;
optional bool serialize_response_as_json = 10;
optional bool pM = 13;
optional bool enable_ad_placements_preroll = 13;
optional bool enable_compression = 14;
optional bytes unencrypted_onesie_player_request = 16;
optional bool TQ = 17;
message UstreamerFlags {
optional bool send_video_playback_config = 2;
}
optional UstreamerFlags ustreamer_flags = 15;
optional bytes unencrypted_onesie_player_request = 16;
optional bool use_jsonformatter_to_parse_player_response = 17;
}

View File

@@ -7,7 +7,7 @@ message FormatInitializationMetadata {
optional string video_id = 1;
optional .misc.FormatId format_id = 2;
optional int32 end_time_ms = 3;
optional int32 field4 = 4;
optional int64 end_segment_number = 4;
optional string mime_type = 5;
optional .misc.InitRange init_range = 6;
optional .misc.IndexRange index_range = 7;

View File

@@ -2,12 +2,15 @@ syntax = "proto2";
package video_streaming;
message LiveMetadata {
optional uint32 head_sequence_number = 3;
optional uint64 head_time_ms = 4;
optional uint64 wall_time_ms = 5;
optional uint64 field10 = 10;
optional uint64 field12 = 12;
optional uint64 field13 = 13;
optional uint64 head_time_usec = 14;
optional uint64 field15 = 15;
optional string broadcast_id = 1;
optional int64 head_sequence_number = 3;
optional int64 head_time_ms = 4;
optional int64 wall_time_ms = 5;
optional string video_id = 6;
optional bool post_live_dvr = 8;
optional int64 headm = 10;
optional int64 min_seekable_time_ticks = 12;
optional int32 min_seekable_timescale = 13;
optional int64 max_seekable_time_ticks = 14;
optional int32 max_seekable_timescale = 15;
}

View File

@@ -3,8 +3,8 @@ package video_streaming;
message MediaCapabilities {
repeated VideoFormatCapability video_format_capabilities = 1;
repeated AudioFormatCapability audio_format_capabilities = 2;
optional int32 hdr_mode_bitmask = 5;
repeated AudioFormatCapability audio_format_capabilities = 2;
optional int32 hdr_mode_bitmask = 5;
message VideoFormatCapability {
optional int32 video_codec = 1;

View File

@@ -5,26 +5,25 @@ import "misc/common.proto";
import "video_streaming/time_range.proto";
message MediaHeader {
optional uint32 header_id = 1;
optional uint32 header_id = 1;
optional string video_id = 2;
optional int32 itag = 3;
optional uint64 lmt = 4;
optional string xtags = 5;
optional int32 start_data_range = 6;
optional Compression compression = 7;
optional int64 start_range = 6;
optional CompressionAlgorithm compression_algorithm = 7;
optional bool is_init_seg = 8;
optional int64 sequence_number = 9;
optional int64 field10 = 10;
optional int32 start_ms = 11;
optional int32 duration_ms = 12;
optional int64 start_ms = 11;
optional int64 duration_ms = 12;
optional .misc.FormatId format_id = 13;
optional int64 content_length = 14;
optional TimeRange time_range = 15;
optional TimeRange time_range = 15;
enum Compression {
VAL0 = 0;
VAL1 = 1;
enum CompressionAlgorithm {
UNKNOWN = 0;
NONE = 1;
GZIP = 2;
}
}

View File

@@ -18,7 +18,7 @@ message OnesieHeader {
optional string itag = 3;
optional CryptoParams crypto_params = 4;
optional uint64 last_modified = 5;
optional int64 media_size_bytes = 7;
optional int64 expected_media_size_bytes = 7;
repeated string restricted_formats = 11;
optional string xtags = 15;
optional int64 sequence_number = 18;

View File

@@ -2,30 +2,16 @@ syntax = "proto2";
package video_streaming;
enum OnesieHeaderType {
PLAYER_RESPONSE = 0;
HEADER_TYPE_1 = 1;
MEDIA_DECRYPTION_KEY = 2;
HEADER_TYPE_3 = 3;
HEADER_TYPE_4 = 4;
HEADER_TYPE_5 = 5;
NEW_HOST = 6;
HEADER_TYPE_7 = 7;
HEADER_TYPE_8 = 8;
HEADER_TYPE_9 = 9;
HEADER_TYPE_10 = 10;
HEADER_TYPE_11 = 11;
HEADER_TYPE_12 = 12;
HEADER_TYPE_13 = 13;
RESTRICTED_FORMATS_HINT = 14;
HEADER_TYPE_15 = 15;
STREAM_METADATA = 16;
HEADER_TYPE_17 = 17;
HEADER_TYPE_18 = 18;
HEADER_TYPE_19 = 19;
HEADER_TYPE_20 = 20;
HEADER_TYPE_21 = 21;
HEADER_TYPE_22 = 22;
HEADER_TYPE_23 = 23;
HEADER_TYPE_24 = 24;
ENCRYPTED_INNERTUBE_RESPONSE_PART = 25;
ONESIE_PLAYER_RESPONSE = 0;
MEDIA = 1;
MEDIA_DECRYPTION_KEY = 2;
CLEAR_MEDIA = 3;
CLEAR_INIT_SEGMENT = 4;
ACK = 5;
MEDIA_STREAMER_HOSTNAME = 6;
MEDIA_SIZE_HINT = 7;
PLAYER_SERVICE_RESPONSE_PUSH_URL = 8;
LAST_HIGH_PRIORITY_HINT = 9;
STREAM_METADATA = 16;
ENCRYPTED_INNERTUBE_RESPONSE_PART = 25;
}

View File

@@ -5,6 +5,7 @@ import "video_streaming/client_abr_state.proto";
import "video_streaming/encrypted_player_request.proto";
import "video_streaming/streamer_context.proto";
import "video_streaming/buffered_range.proto";
import "misc/common.proto";
message OnesieRequest {
repeated string urls = 1;
@@ -14,6 +15,6 @@ message OnesieRequest {
optional int32 max_vp9_height = 5;
optional int32 client_display_height = 6;
optional StreamerContext streamer_context = 10;
optional int32 request_target = 13; // MLOnesieRequestTarget
optional .misc.OnesieRequestTarget request_target = 13; // MLOnesieRequestTarget
repeated BufferedRange buffered_ranges = 14;
}

View File

@@ -0,0 +1,10 @@
syntax = "proto2";
package video_streaming;
import "misc/common.proto";
message SabrSeek {
optional int64 seek_media_time = 1;
optional int32 seek_media_timescale = 2;
optional .misc.SeekSource seek_source = 3;
}

View File

@@ -240,7 +240,7 @@ export class ServerAbrStream extends EventEmitterLike {
isInitSegment: mediaHeader.isInitSeg,
durationMs: mediaHeader.durationMs,
startMs: mediaHeader.startMs,
startDataRange: mediaHeader.startDataRange,
startDataRange: mediaHeader.startRange,
sequenceNumber: mediaHeader.sequenceNumber,
contentLength: mediaHeader.contentLength,
timeRange: mediaHeader.timeRange
@@ -300,7 +300,7 @@ export class ServerAbrStream extends EventEmitterLike {
formatKey: formatKey,
durationMs: data.durationMs,
mimeType: 'mimeType' in data ? data.mimeType : undefined,
sequenceCount: 'field4' in data ? data.field4 : undefined,
sequenceCount: 'endSegmentNumber' in data ? data.endSegmentNumber : undefined,
sequenceList: [],
mediaChunks: [],
_state: {

View File

@@ -21,4 +21,5 @@ export { ProxyStatus } from '../../protos/generated/video_streaming/proxy_status
export { MediaCapabilities } from '../../protos/generated/video_streaming/media_capabilities.js';
export { CryptoParams } from '../../protos/generated/video_streaming/crypto_params.js';
export { LiveMetadata } from '../../protos/generated/video_streaming/live_metadata.js';
export { FormatId, KeyValuePair, InitRange, IndexRange, HttpHeader } from '../../protos/generated/misc/common.js';
export { FormatId, KeyValuePair, InitRange, IndexRange, HttpHeader } from '../../protos/generated/misc/common.js';
export { CryptoParams_CompressionType as CompressionType } from '../../protos/generated/video_streaming/crypto_params.js';