diff --git a/examples/onesie-request/main.ts b/examples/onesie-request/main.ts index 84c458b..0770111 100644 --- a/examples/onesie-request/main.ts +++ b/examples/onesie-request/main.ts @@ -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 = { playbackContext: { contentPlaybackContext: { @@ -79,29 +78,31 @@ async function prepareOnesieRequest(args: OnesieRequestArgs): Promise 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 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)); \ No newline at end of file +console.log('Deciphered audio URL:'); +console.log(videoInfo.chooseFormat({ + format: 'mp4', + quality: 'best', + type: 'audio' +}).decipher(innertube.session.player)); \ No newline at end of file diff --git a/examples/onesie-request/package-lock.json b/examples/onesie-request/package-lock.json index 54ae650..30720b1 100644 --- a/examples/onesie-request/package-lock.json +++ b/examples/onesie-request/package-lock.json @@ -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" } diff --git a/examples/onesie-request/package.json b/examples/onesie-request/package.json index 9ccfd67..84c8f16 100644 --- a/examples/onesie-request/package.json +++ b/examples/onesie-request/package.json @@ -12,6 +12,6 @@ "author": "", "license": "ISC", "dependencies": { - "youtubei.js": "^12.2.0" + "youtubei.js": "^13.3.0" } } diff --git a/protos/generated/misc/common.ts b/protos/generated/misc/common.ts index dc38196..1979788 100644 --- a/protos/generated/misc/common.ts +++ b/protos/generated/misc/common.ts @@ -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; diff --git a/protos/generated/video_streaming/client_abr_state.ts b/protos/generated/video_streaming/client_abr_state.ts index 9f01041..8ceb0fe 100644 --- a/protos/generated/video_streaming/client_abr_state.ts +++ b/protos/generated/video_streaming/client_abr_state.ts @@ -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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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; diff --git a/protos/generated/video_streaming/crypto_params.ts b/protos/generated/video_streaming/crypto_params.ts index 4018056..3a3d88c 100644 --- a/protos/generated/video_streaming/crypto_params.ts +++ b/protos/generated/video_streaming/crypto_params.ts @@ -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"; diff --git a/protos/generated/video_streaming/encrypted_player_request.ts b/protos/generated/video_streaming/encrypted_player_request.ts index 3829dc1..18b4479 100644 --- a/protos/generated/video_streaming/encrypted_player_request.ts +++ b/protos/generated/video_streaming/encrypted_player_request.ts @@ -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 = { 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 = { break; } - message.pM = reader.bool(); + message.enableAdPlacementsPreroll = reader.bool(); continue; case 14: if (tag !== 112) { @@ -147,6 +159,13 @@ export const EncryptedPlayerRequest: MessageFns = { 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 = { break; } - message.TQ = reader.bool(); + message.useJsonformatterToParsePlayerResponse = reader.bool(); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -185,12 +204,19 @@ export const EncryptedPlayerRequest: MessageFns = { 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 = { 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 = { 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 = { + 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>>( + base?: I, + ): EncryptedPlayerRequest_UstreamerFlags { + return EncryptedPlayerRequest_UstreamerFlags.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): EncryptedPlayerRequest_UstreamerFlags { + const message = createBaseEncryptedPlayerRequest_UstreamerFlags(); + message.sendVideoPlaybackConfig = object.sendVideoPlaybackConfig ?? false; return message; }, }; diff --git a/protos/generated/video_streaming/format_initialization_metadata.ts b/protos/generated/video_streaming/format_initialization_metadata.ts index c3c527d..34fc4ff 100644 --- a/protos/generated/video_streaming/format_initialization_metadata.ts +++ b/protos/generated/video_streaming/format_initialization_metadata.ts @@ -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 = T extends T ? keyof T : never; export type Exact = P extends Builtin ? P : P & { [K in keyof P]: Exact } & { [K in Exclude>]: 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; } diff --git a/protos/generated/video_streaming/live_metadata.ts b/protos/generated/video_streaming/live_metadata.ts index cb072a8..9871a25 100644 --- a/protos/generated/video_streaming/live_metadata.ts +++ b/protos/generated/video_streaming/live_metadata.ts @@ -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 = { 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 = { 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 = { 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 = { 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 = { }, fromPartial, 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; }, }; diff --git a/protos/generated/video_streaming/media_header.ts b/protos/generated/video_streaming/media_header.ts index 7d2e17a..a117c1a 100644 --- a/protos/generated/video_streaming/media_header.ts +++ b/protos/generated/video_streaming/media_header.ts @@ -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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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; diff --git a/protos/generated/video_streaming/onesie_header.ts b/protos/generated/video_streaming/onesie_header.ts index db0cba6..04e2eba 100644 --- a/protos/generated/video_streaming/onesie_header.ts +++ b/protos/generated/video_streaming/onesie_header.ts @@ -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 = { 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 = { 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 = { 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 = { 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 = { ? 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; diff --git a/protos/generated/video_streaming/onesie_header_type.ts b/protos/generated/video_streaming/onesie_header_type.ts index 20fcf00..881ca29 100644 --- a/protos/generated/video_streaming/onesie_header_type.ts +++ b/protos/generated/video_streaming/onesie_header_type.ts @@ -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: diff --git a/protos/generated/video_streaming/onesie_request.ts b/protos/generated/video_streaming/onesie_request.ts index 0ec59ba..7a4007f 100644 --- a/protos/generated/video_streaming/onesie_request.ts +++ b/protos/generated/video_streaming/onesie_request.ts @@ -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 = { 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 = { 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 = { 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)); diff --git a/protos/misc/common.proto b/protos/misc/common.proto index 58ff263..3610ca1 100644 --- a/protos/misc/common.proto +++ b/protos/misc/common.proto @@ -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; } \ No newline at end of file diff --git a/protos/video_streaming/client_abr_state.proto b/protos/video_streaming/client_abr_state.proto index d64306a..2cf9e9c 100644 --- a/protos/video_streaming/client_abr_state.proto +++ b/protos/video_streaming/client_abr_state.proto @@ -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; diff --git a/protos/video_streaming/crypto_params.proto b/protos/video_streaming/crypto_params.proto index 4c606ae..514150a 100644 --- a/protos/video_streaming/crypto_params.proto +++ b/protos/video_streaming/crypto_params.proto @@ -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; diff --git a/protos/video_streaming/encrypted_player_request.proto b/protos/video_streaming/encrypted_player_request.proto index ff9ef76..7cc8a6b 100644 --- a/protos/video_streaming/encrypted_player_request.proto +++ b/protos/video_streaming/encrypted_player_request.proto @@ -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; } \ No newline at end of file diff --git a/protos/video_streaming/format_initialization_metadata.proto b/protos/video_streaming/format_initialization_metadata.proto index cf43f4a..63fd8e8 100644 --- a/protos/video_streaming/format_initialization_metadata.proto +++ b/protos/video_streaming/format_initialization_metadata.proto @@ -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; diff --git a/protos/video_streaming/live_metadata.proto b/protos/video_streaming/live_metadata.proto index 3a01277..d504eb3 100644 --- a/protos/video_streaming/live_metadata.proto +++ b/protos/video_streaming/live_metadata.proto @@ -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; } \ No newline at end of file diff --git a/protos/video_streaming/media_capabilities.proto b/protos/video_streaming/media_capabilities.proto index f841b49..20ea84a 100644 --- a/protos/video_streaming/media_capabilities.proto +++ b/protos/video_streaming/media_capabilities.proto @@ -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; diff --git a/protos/video_streaming/media_header.proto b/protos/video_streaming/media_header.proto index 31cb141..bfa5101 100644 --- a/protos/video_streaming/media_header.proto +++ b/protos/video_streaming/media_header.proto @@ -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; } - } \ No newline at end of file diff --git a/protos/video_streaming/onesie_header.proto b/protos/video_streaming/onesie_header.proto index b66f25b..ca66ede 100644 --- a/protos/video_streaming/onesie_header.proto +++ b/protos/video_streaming/onesie_header.proto @@ -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; diff --git a/protos/video_streaming/onesie_header_type.proto b/protos/video_streaming/onesie_header_type.proto index 58c301e..9c75c9f 100644 --- a/protos/video_streaming/onesie_header_type.proto +++ b/protos/video_streaming/onesie_header_type.proto @@ -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; } \ No newline at end of file diff --git a/protos/video_streaming/onesie_request.proto b/protos/video_streaming/onesie_request.proto index 8f8030e..c3d9430 100644 --- a/protos/video_streaming/onesie_request.proto +++ b/protos/video_streaming/onesie_request.proto @@ -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; } \ No newline at end of file diff --git a/protos/video_streaming/sabr_seek.proto b/protos/video_streaming/sabr_seek.proto new file mode 100644 index 0000000..7481121 --- /dev/null +++ b/protos/video_streaming/sabr_seek.proto @@ -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; +} \ No newline at end of file diff --git a/src/core/ServerAbrStream.ts b/src/core/ServerAbrStream.ts index a91835f..a6801e7 100644 --- a/src/core/ServerAbrStream.ts +++ b/src/core/ServerAbrStream.ts @@ -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: { diff --git a/src/utils/Protos.ts b/src/utils/Protos.ts index 7b2c43a..d69f034 100644 --- a/src/utils/Protos.ts +++ b/src/utils/Protos.ts @@ -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'; \ No newline at end of file +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'; \ No newline at end of file