livekit 1.2.1__py3-none-win_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- livekit/rtc/__init__.py +264 -0
- livekit/rtc/_ffi_client.py +321 -0
- livekit/rtc/_proto/__init__.py +0 -0
- livekit/rtc/_proto/audio_frame_pb2.py +159 -0
- livekit/rtc/_proto/audio_frame_pb2.pyi +1560 -0
- livekit/rtc/_proto/capture_pb2.py +70 -0
- livekit/rtc/_proto/capture_pb2.pyi +559 -0
- livekit/rtc/_proto/data_stream_pb2.py +171 -0
- livekit/rtc/_proto/data_stream_pb2.pyi +1498 -0
- livekit/rtc/_proto/data_track_pb2.py +120 -0
- livekit/rtc/_proto/data_track_pb2.pyi +1073 -0
- livekit/rtc/_proto/e2ee_pb2.py +81 -0
- livekit/rtc/_proto/e2ee_pb2.pyi +591 -0
- livekit/rtc/_proto/ffi_pb2.py +55 -0
- livekit/rtc/_proto/ffi_pb2.pyi +1246 -0
- livekit/rtc/_proto/handle_pb2.py +27 -0
- livekit/rtc/_proto/handle_pb2.pyi +51 -0
- livekit/rtc/_proto/participant_pb2.py +45 -0
- livekit/rtc/_proto/participant_pb2.pyi +313 -0
- livekit/rtc/_proto/room_pb2.py +311 -0
- livekit/rtc/_proto/room_pb2.pyi +3136 -0
- livekit/rtc/_proto/rpc_pb2.py +47 -0
- livekit/rtc/_proto/rpc_pb2.pyi +261 -0
- livekit/rtc/_proto/stats_pb2.py +123 -0
- livekit/rtc/_proto/stats_pb2.pyi +1514 -0
- livekit/rtc/_proto/track_pb2.py +76 -0
- livekit/rtc/_proto/track_pb2.pyi +544 -0
- livekit/rtc/_proto/track_publication_pb2.py +39 -0
- livekit/rtc/_proto/track_publication_pb2.pyi +145 -0
- livekit/rtc/_proto/video_frame_pb2.py +97 -0
- livekit/rtc/_proto/video_frame_pb2.pyi +838 -0
- livekit/rtc/_utils.py +187 -0
- livekit/rtc/apm.py +119 -0
- livekit/rtc/audio_filter.py +23 -0
- livekit/rtc/audio_frame.py +242 -0
- livekit/rtc/audio_mixer.py +247 -0
- livekit/rtc/audio_resampler.py +174 -0
- livekit/rtc/audio_source.py +191 -0
- livekit/rtc/audio_stream.py +354 -0
- livekit/rtc/data_stream.py +640 -0
- livekit/rtc/data_track.py +296 -0
- livekit/rtc/e2ee.py +320 -0
- livekit/rtc/encoded_video.py +127 -0
- livekit/rtc/event_emitter.py +215 -0
- livekit/rtc/frame_processor.py +37 -0
- livekit/rtc/jupyter.py +68 -0
- livekit/rtc/log.py +3 -0
- livekit/rtc/media_devices.py +596 -0
- livekit/rtc/participant.py +1171 -0
- livekit/rtc/platform_audio.py +426 -0
- livekit/rtc/py.typed +0 -0
- livekit/rtc/resources/LICENSE.md +4055 -0
- livekit/rtc/resources/__init__.py +1 -0
- livekit/rtc/resources/jupyter-html/index.html +101 -0
- livekit/rtc/resources/livekit_ffi.dll +0 -0
- livekit/rtc/resources/livekit_ffi.h +42 -0
- livekit/rtc/room.py +1304 -0
- livekit/rtc/rpc.py +244 -0
- livekit/rtc/synchronizer.py +202 -0
- livekit/rtc/track.py +264 -0
- livekit/rtc/track_publication.py +145 -0
- livekit/rtc/transcription.py +19 -0
- livekit/rtc/utils.py +138 -0
- livekit/rtc/version.py +1 -0
- livekit/rtc/video_frame.py +347 -0
- livekit/rtc/video_source.py +74 -0
- livekit/rtc/video_stream.py +191 -0
- livekit-1.2.1.dist-info/METADATA +80 -0
- livekit-1.2.1.dist-info/RECORD +71 -0
- livekit-1.2.1.dist-info/WHEEL +5 -0
- livekit-1.2.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,1560 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
Copyright 2025 LiveKit, Inc.
|
|
5
|
+
|
|
6
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
you may not use this file except in compliance with the License.
|
|
8
|
+
You may obtain a copy of the License at
|
|
9
|
+
|
|
10
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
|
|
12
|
+
Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
See the License for the specific language governing permissions and
|
|
16
|
+
limitations under the License.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import builtins
|
|
20
|
+
import collections.abc
|
|
21
|
+
import google.protobuf.descriptor
|
|
22
|
+
import google.protobuf.internal.containers
|
|
23
|
+
import google.protobuf.internal.enum_type_wrapper
|
|
24
|
+
import google.protobuf.message
|
|
25
|
+
from . import handle_pb2
|
|
26
|
+
import sys
|
|
27
|
+
from . import track_pb2
|
|
28
|
+
import typing
|
|
29
|
+
|
|
30
|
+
if sys.version_info >= (3, 10):
|
|
31
|
+
import typing as typing_extensions
|
|
32
|
+
else:
|
|
33
|
+
import typing_extensions
|
|
34
|
+
|
|
35
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
36
|
+
|
|
37
|
+
class _SoxResamplerDataType:
|
|
38
|
+
ValueType = typing.NewType("ValueType", builtins.int)
|
|
39
|
+
V: typing_extensions.TypeAlias = ValueType
|
|
40
|
+
|
|
41
|
+
class _SoxResamplerDataTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SoxResamplerDataType.ValueType], builtins.type):
|
|
42
|
+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
43
|
+
SOXR_DATATYPE_INT16I: _SoxResamplerDataType.ValueType # 0
|
|
44
|
+
"""TODO(theomonnom): support other datatypes (shouldn't really be needed)"""
|
|
45
|
+
SOXR_DATATYPE_INT16S: _SoxResamplerDataType.ValueType # 1
|
|
46
|
+
|
|
47
|
+
class SoxResamplerDataType(_SoxResamplerDataType, metaclass=_SoxResamplerDataTypeEnumTypeWrapper): ...
|
|
48
|
+
|
|
49
|
+
SOXR_DATATYPE_INT16I: SoxResamplerDataType.ValueType # 0
|
|
50
|
+
"""TODO(theomonnom): support other datatypes (shouldn't really be needed)"""
|
|
51
|
+
SOXR_DATATYPE_INT16S: SoxResamplerDataType.ValueType # 1
|
|
52
|
+
global___SoxResamplerDataType = SoxResamplerDataType
|
|
53
|
+
|
|
54
|
+
class _SoxQualityRecipe:
|
|
55
|
+
ValueType = typing.NewType("ValueType", builtins.int)
|
|
56
|
+
V: typing_extensions.TypeAlias = ValueType
|
|
57
|
+
|
|
58
|
+
class _SoxQualityRecipeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SoxQualityRecipe.ValueType], builtins.type):
|
|
59
|
+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
60
|
+
SOXR_QUALITY_QUICK: _SoxQualityRecipe.ValueType # 0
|
|
61
|
+
SOXR_QUALITY_LOW: _SoxQualityRecipe.ValueType # 1
|
|
62
|
+
SOXR_QUALITY_MEDIUM: _SoxQualityRecipe.ValueType # 2
|
|
63
|
+
SOXR_QUALITY_HIGH: _SoxQualityRecipe.ValueType # 3
|
|
64
|
+
SOXR_QUALITY_VERYHIGH: _SoxQualityRecipe.ValueType # 4
|
|
65
|
+
|
|
66
|
+
class SoxQualityRecipe(_SoxQualityRecipe, metaclass=_SoxQualityRecipeEnumTypeWrapper): ...
|
|
67
|
+
|
|
68
|
+
SOXR_QUALITY_QUICK: SoxQualityRecipe.ValueType # 0
|
|
69
|
+
SOXR_QUALITY_LOW: SoxQualityRecipe.ValueType # 1
|
|
70
|
+
SOXR_QUALITY_MEDIUM: SoxQualityRecipe.ValueType # 2
|
|
71
|
+
SOXR_QUALITY_HIGH: SoxQualityRecipe.ValueType # 3
|
|
72
|
+
SOXR_QUALITY_VERYHIGH: SoxQualityRecipe.ValueType # 4
|
|
73
|
+
global___SoxQualityRecipe = SoxQualityRecipe
|
|
74
|
+
|
|
75
|
+
class _SoxFlagBits:
|
|
76
|
+
ValueType = typing.NewType("ValueType", builtins.int)
|
|
77
|
+
V: typing_extensions.TypeAlias = ValueType
|
|
78
|
+
|
|
79
|
+
class _SoxFlagBitsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SoxFlagBits.ValueType], builtins.type):
|
|
80
|
+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
81
|
+
SOXR_ROLLOFF_SMALL: _SoxFlagBits.ValueType # 0
|
|
82
|
+
"""1 << 0"""
|
|
83
|
+
SOXR_ROLLOFF_MEDIUM: _SoxFlagBits.ValueType # 1
|
|
84
|
+
"""1 << 1"""
|
|
85
|
+
SOXR_ROLLOFF_NONE: _SoxFlagBits.ValueType # 2
|
|
86
|
+
"""1 << 2"""
|
|
87
|
+
SOXR_HIGH_PREC_CLOCK: _SoxFlagBits.ValueType # 3
|
|
88
|
+
"""1 << 3"""
|
|
89
|
+
SOXR_DOUBLE_PRECISION: _SoxFlagBits.ValueType # 4
|
|
90
|
+
"""1 << 4"""
|
|
91
|
+
SOXR_VR: _SoxFlagBits.ValueType # 5
|
|
92
|
+
"""1 << 5"""
|
|
93
|
+
|
|
94
|
+
class SoxFlagBits(_SoxFlagBits, metaclass=_SoxFlagBitsEnumTypeWrapper): ...
|
|
95
|
+
|
|
96
|
+
SOXR_ROLLOFF_SMALL: SoxFlagBits.ValueType # 0
|
|
97
|
+
"""1 << 0"""
|
|
98
|
+
SOXR_ROLLOFF_MEDIUM: SoxFlagBits.ValueType # 1
|
|
99
|
+
"""1 << 1"""
|
|
100
|
+
SOXR_ROLLOFF_NONE: SoxFlagBits.ValueType # 2
|
|
101
|
+
"""1 << 2"""
|
|
102
|
+
SOXR_HIGH_PREC_CLOCK: SoxFlagBits.ValueType # 3
|
|
103
|
+
"""1 << 3"""
|
|
104
|
+
SOXR_DOUBLE_PRECISION: SoxFlagBits.ValueType # 4
|
|
105
|
+
"""1 << 4"""
|
|
106
|
+
SOXR_VR: SoxFlagBits.ValueType # 5
|
|
107
|
+
"""1 << 5"""
|
|
108
|
+
global___SoxFlagBits = SoxFlagBits
|
|
109
|
+
|
|
110
|
+
class _AudioStreamType:
|
|
111
|
+
ValueType = typing.NewType("ValueType", builtins.int)
|
|
112
|
+
V: typing_extensions.TypeAlias = ValueType
|
|
113
|
+
|
|
114
|
+
class _AudioStreamTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AudioStreamType.ValueType], builtins.type):
|
|
115
|
+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
116
|
+
AUDIO_STREAM_NATIVE: _AudioStreamType.ValueType # 0
|
|
117
|
+
AUDIO_STREAM_HTML: _AudioStreamType.ValueType # 1
|
|
118
|
+
|
|
119
|
+
class AudioStreamType(_AudioStreamType, metaclass=_AudioStreamTypeEnumTypeWrapper):
|
|
120
|
+
"""
|
|
121
|
+
AudioStream
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
AUDIO_STREAM_NATIVE: AudioStreamType.ValueType # 0
|
|
125
|
+
AUDIO_STREAM_HTML: AudioStreamType.ValueType # 1
|
|
126
|
+
global___AudioStreamType = AudioStreamType
|
|
127
|
+
|
|
128
|
+
class _AudioSourceType:
|
|
129
|
+
ValueType = typing.NewType("ValueType", builtins.int)
|
|
130
|
+
V: typing_extensions.TypeAlias = ValueType
|
|
131
|
+
|
|
132
|
+
class _AudioSourceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AudioSourceType.ValueType], builtins.type):
|
|
133
|
+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
134
|
+
AUDIO_SOURCE_NATIVE: _AudioSourceType.ValueType # 0
|
|
135
|
+
"""Push-based audio source - manually capture frames via CaptureAudioFrameRequest"""
|
|
136
|
+
AUDIO_SOURCE_PLATFORM: _AudioSourceType.ValueType # 1
|
|
137
|
+
"""Platform ADM-based audio source - captures from microphone automatically
|
|
138
|
+
Requires PlatformAudio to be created first to enable ADM recording
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
class AudioSourceType(_AudioSourceType, metaclass=_AudioSourceTypeEnumTypeWrapper): ...
|
|
142
|
+
|
|
143
|
+
AUDIO_SOURCE_NATIVE: AudioSourceType.ValueType # 0
|
|
144
|
+
"""Push-based audio source - manually capture frames via CaptureAudioFrameRequest"""
|
|
145
|
+
AUDIO_SOURCE_PLATFORM: AudioSourceType.ValueType # 1
|
|
146
|
+
"""Platform ADM-based audio source - captures from microphone automatically
|
|
147
|
+
Requires PlatformAudio to be created first to enable ADM recording
|
|
148
|
+
"""
|
|
149
|
+
global___AudioSourceType = AudioSourceType
|
|
150
|
+
|
|
151
|
+
@typing.final
|
|
152
|
+
class NewAudioStreamRequest(google.protobuf.message.Message):
|
|
153
|
+
"""Create a new AudioStream
|
|
154
|
+
AudioStream is used to receive audio frames from a track
|
|
155
|
+
"""
|
|
156
|
+
|
|
157
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
158
|
+
|
|
159
|
+
TRACK_HANDLE_FIELD_NUMBER: builtins.int
|
|
160
|
+
TYPE_FIELD_NUMBER: builtins.int
|
|
161
|
+
SAMPLE_RATE_FIELD_NUMBER: builtins.int
|
|
162
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
163
|
+
AUDIO_FILTER_MODULE_ID_FIELD_NUMBER: builtins.int
|
|
164
|
+
AUDIO_FILTER_OPTIONS_FIELD_NUMBER: builtins.int
|
|
165
|
+
FRAME_SIZE_MS_FIELD_NUMBER: builtins.int
|
|
166
|
+
QUEUE_SIZE_FRAMES_FIELD_NUMBER: builtins.int
|
|
167
|
+
track_handle: builtins.int
|
|
168
|
+
type: global___AudioStreamType.ValueType
|
|
169
|
+
sample_rate: builtins.int
|
|
170
|
+
num_channels: builtins.int
|
|
171
|
+
audio_filter_module_id: builtins.str
|
|
172
|
+
"""Unique identifier passed in LoadAudioFilterPluginRequest"""
|
|
173
|
+
audio_filter_options: builtins.str
|
|
174
|
+
frame_size_ms: builtins.int
|
|
175
|
+
queue_size_frames: builtins.int
|
|
176
|
+
"""Maximum number of queued WebRTC sink frames. Each frame is typically 10 ms
|
|
177
|
+
of decoded PCM audio on the receive path. Omit this field to use the
|
|
178
|
+
default bounded queue size of 10 frames. Set it to 0 to request unbounded
|
|
179
|
+
buffering.
|
|
180
|
+
|
|
181
|
+
If your application consumes both audio and video, keep the queue sizing
|
|
182
|
+
strategy coordinated across both streams. Using a much larger queue, or
|
|
183
|
+
unbounded buffering, for only one of them can increase end-to-end latency
|
|
184
|
+
for that stream and cause audio/video drift.
|
|
185
|
+
"""
|
|
186
|
+
def __init__(
|
|
187
|
+
self,
|
|
188
|
+
*,
|
|
189
|
+
track_handle: builtins.int | None = ...,
|
|
190
|
+
type: global___AudioStreamType.ValueType | None = ...,
|
|
191
|
+
sample_rate: builtins.int | None = ...,
|
|
192
|
+
num_channels: builtins.int | None = ...,
|
|
193
|
+
audio_filter_module_id: builtins.str | None = ...,
|
|
194
|
+
audio_filter_options: builtins.str | None = ...,
|
|
195
|
+
frame_size_ms: builtins.int | None = ...,
|
|
196
|
+
queue_size_frames: builtins.int | None = ...,
|
|
197
|
+
) -> None: ...
|
|
198
|
+
def HasField(self, field_name: typing.Literal["audio_filter_module_id", b"audio_filter_module_id", "audio_filter_options", b"audio_filter_options", "frame_size_ms", b"frame_size_ms", "num_channels", b"num_channels", "queue_size_frames", b"queue_size_frames", "sample_rate", b"sample_rate", "track_handle", b"track_handle", "type", b"type"]) -> builtins.bool: ...
|
|
199
|
+
def ClearField(self, field_name: typing.Literal["audio_filter_module_id", b"audio_filter_module_id", "audio_filter_options", b"audio_filter_options", "frame_size_ms", b"frame_size_ms", "num_channels", b"num_channels", "queue_size_frames", b"queue_size_frames", "sample_rate", b"sample_rate", "track_handle", b"track_handle", "type", b"type"]) -> None: ...
|
|
200
|
+
|
|
201
|
+
global___NewAudioStreamRequest = NewAudioStreamRequest
|
|
202
|
+
|
|
203
|
+
@typing.final
|
|
204
|
+
class NewAudioStreamResponse(google.protobuf.message.Message):
|
|
205
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
206
|
+
|
|
207
|
+
STREAM_FIELD_NUMBER: builtins.int
|
|
208
|
+
@property
|
|
209
|
+
def stream(self) -> global___OwnedAudioStream: ...
|
|
210
|
+
def __init__(
|
|
211
|
+
self,
|
|
212
|
+
*,
|
|
213
|
+
stream: global___OwnedAudioStream | None = ...,
|
|
214
|
+
) -> None: ...
|
|
215
|
+
def HasField(self, field_name: typing.Literal["stream", b"stream"]) -> builtins.bool: ...
|
|
216
|
+
def ClearField(self, field_name: typing.Literal["stream", b"stream"]) -> None: ...
|
|
217
|
+
|
|
218
|
+
global___NewAudioStreamResponse = NewAudioStreamResponse
|
|
219
|
+
|
|
220
|
+
@typing.final
|
|
221
|
+
class AudioStreamFromParticipantRequest(google.protobuf.message.Message):
|
|
222
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
223
|
+
|
|
224
|
+
PARTICIPANT_HANDLE_FIELD_NUMBER: builtins.int
|
|
225
|
+
TYPE_FIELD_NUMBER: builtins.int
|
|
226
|
+
TRACK_SOURCE_FIELD_NUMBER: builtins.int
|
|
227
|
+
SAMPLE_RATE_FIELD_NUMBER: builtins.int
|
|
228
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
229
|
+
AUDIO_FILTER_MODULE_ID_FIELD_NUMBER: builtins.int
|
|
230
|
+
AUDIO_FILTER_OPTIONS_FIELD_NUMBER: builtins.int
|
|
231
|
+
FRAME_SIZE_MS_FIELD_NUMBER: builtins.int
|
|
232
|
+
QUEUE_SIZE_FRAMES_FIELD_NUMBER: builtins.int
|
|
233
|
+
participant_handle: builtins.int
|
|
234
|
+
type: global___AudioStreamType.ValueType
|
|
235
|
+
track_source: track_pb2.TrackSource.ValueType
|
|
236
|
+
sample_rate: builtins.int
|
|
237
|
+
num_channels: builtins.int
|
|
238
|
+
audio_filter_module_id: builtins.str
|
|
239
|
+
audio_filter_options: builtins.str
|
|
240
|
+
frame_size_ms: builtins.int
|
|
241
|
+
queue_size_frames: builtins.int
|
|
242
|
+
"""Maximum number of queued WebRTC sink frames. Each frame is typically 10 ms
|
|
243
|
+
of decoded PCM audio on the receive path. Omit this field to use the
|
|
244
|
+
default bounded queue size of 10 frames. Set it to 0 to request unbounded
|
|
245
|
+
buffering.
|
|
246
|
+
|
|
247
|
+
If your application consumes both audio and video, keep the queue sizing
|
|
248
|
+
strategy coordinated across both streams. Using a much larger queue, or
|
|
249
|
+
unbounded buffering, for only one of them can increase end-to-end latency
|
|
250
|
+
for that stream and cause audio/video drift.
|
|
251
|
+
"""
|
|
252
|
+
def __init__(
|
|
253
|
+
self,
|
|
254
|
+
*,
|
|
255
|
+
participant_handle: builtins.int | None = ...,
|
|
256
|
+
type: global___AudioStreamType.ValueType | None = ...,
|
|
257
|
+
track_source: track_pb2.TrackSource.ValueType | None = ...,
|
|
258
|
+
sample_rate: builtins.int | None = ...,
|
|
259
|
+
num_channels: builtins.int | None = ...,
|
|
260
|
+
audio_filter_module_id: builtins.str | None = ...,
|
|
261
|
+
audio_filter_options: builtins.str | None = ...,
|
|
262
|
+
frame_size_ms: builtins.int | None = ...,
|
|
263
|
+
queue_size_frames: builtins.int | None = ...,
|
|
264
|
+
) -> None: ...
|
|
265
|
+
def HasField(self, field_name: typing.Literal["audio_filter_module_id", b"audio_filter_module_id", "audio_filter_options", b"audio_filter_options", "frame_size_ms", b"frame_size_ms", "num_channels", b"num_channels", "participant_handle", b"participant_handle", "queue_size_frames", b"queue_size_frames", "sample_rate", b"sample_rate", "track_source", b"track_source", "type", b"type"]) -> builtins.bool: ...
|
|
266
|
+
def ClearField(self, field_name: typing.Literal["audio_filter_module_id", b"audio_filter_module_id", "audio_filter_options", b"audio_filter_options", "frame_size_ms", b"frame_size_ms", "num_channels", b"num_channels", "participant_handle", b"participant_handle", "queue_size_frames", b"queue_size_frames", "sample_rate", b"sample_rate", "track_source", b"track_source", "type", b"type"]) -> None: ...
|
|
267
|
+
|
|
268
|
+
global___AudioStreamFromParticipantRequest = AudioStreamFromParticipantRequest
|
|
269
|
+
|
|
270
|
+
@typing.final
|
|
271
|
+
class AudioStreamFromParticipantResponse(google.protobuf.message.Message):
|
|
272
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
273
|
+
|
|
274
|
+
STREAM_FIELD_NUMBER: builtins.int
|
|
275
|
+
@property
|
|
276
|
+
def stream(self) -> global___OwnedAudioStream: ...
|
|
277
|
+
def __init__(
|
|
278
|
+
self,
|
|
279
|
+
*,
|
|
280
|
+
stream: global___OwnedAudioStream | None = ...,
|
|
281
|
+
) -> None: ...
|
|
282
|
+
def HasField(self, field_name: typing.Literal["stream", b"stream"]) -> builtins.bool: ...
|
|
283
|
+
def ClearField(self, field_name: typing.Literal["stream", b"stream"]) -> None: ...
|
|
284
|
+
|
|
285
|
+
global___AudioStreamFromParticipantResponse = AudioStreamFromParticipantResponse
|
|
286
|
+
|
|
287
|
+
@typing.final
|
|
288
|
+
class NewAudioSourceRequest(google.protobuf.message.Message):
|
|
289
|
+
"""Create a new AudioSource"""
|
|
290
|
+
|
|
291
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
292
|
+
|
|
293
|
+
TYPE_FIELD_NUMBER: builtins.int
|
|
294
|
+
OPTIONS_FIELD_NUMBER: builtins.int
|
|
295
|
+
SAMPLE_RATE_FIELD_NUMBER: builtins.int
|
|
296
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
297
|
+
QUEUE_SIZE_MS_FIELD_NUMBER: builtins.int
|
|
298
|
+
PLATFORM_AUDIO_HANDLE_FIELD_NUMBER: builtins.int
|
|
299
|
+
type: global___AudioSourceType.ValueType
|
|
300
|
+
sample_rate: builtins.int
|
|
301
|
+
"""Sample rate in Hz. Optional - defaults to 48000 if not specified.
|
|
302
|
+
For AudioSourcePlatform: ignored, ADM uses hardware native sample rate.
|
|
303
|
+
For AudioSourceNative with queue_size_ms=0 (fast path): ignored, frame values used directly.
|
|
304
|
+
"""
|
|
305
|
+
num_channels: builtins.int
|
|
306
|
+
"""Number of audio channels. Optional - defaults to 1 (mono) if not specified.
|
|
307
|
+
For AudioSourcePlatform: ignored, ADM uses hardware native channels.
|
|
308
|
+
For AudioSourceNative with queue_size_ms=0 (fast path): ignored, frame values used directly.
|
|
309
|
+
"""
|
|
310
|
+
queue_size_ms: builtins.int
|
|
311
|
+
platform_audio_handle: builtins.int
|
|
312
|
+
"""For AudioSourcePlatform: the PlatformAudio handle to configure audio processing on.
|
|
313
|
+
If provided with options, audio processing will be configured on the PlatformAudio.
|
|
314
|
+
"""
|
|
315
|
+
@property
|
|
316
|
+
def options(self) -> global___AudioSourceOptions: ...
|
|
317
|
+
def __init__(
|
|
318
|
+
self,
|
|
319
|
+
*,
|
|
320
|
+
type: global___AudioSourceType.ValueType | None = ...,
|
|
321
|
+
options: global___AudioSourceOptions | None = ...,
|
|
322
|
+
sample_rate: builtins.int | None = ...,
|
|
323
|
+
num_channels: builtins.int | None = ...,
|
|
324
|
+
queue_size_ms: builtins.int | None = ...,
|
|
325
|
+
platform_audio_handle: builtins.int | None = ...,
|
|
326
|
+
) -> None: ...
|
|
327
|
+
def HasField(self, field_name: typing.Literal["num_channels", b"num_channels", "options", b"options", "platform_audio_handle", b"platform_audio_handle", "queue_size_ms", b"queue_size_ms", "sample_rate", b"sample_rate", "type", b"type"]) -> builtins.bool: ...
|
|
328
|
+
def ClearField(self, field_name: typing.Literal["num_channels", b"num_channels", "options", b"options", "platform_audio_handle", b"platform_audio_handle", "queue_size_ms", b"queue_size_ms", "sample_rate", b"sample_rate", "type", b"type"]) -> None: ...
|
|
329
|
+
|
|
330
|
+
global___NewAudioSourceRequest = NewAudioSourceRequest
|
|
331
|
+
|
|
332
|
+
@typing.final
|
|
333
|
+
class NewAudioSourceResponse(google.protobuf.message.Message):
|
|
334
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
335
|
+
|
|
336
|
+
SOURCE_FIELD_NUMBER: builtins.int
|
|
337
|
+
@property
|
|
338
|
+
def source(self) -> global___OwnedAudioSource: ...
|
|
339
|
+
def __init__(
|
|
340
|
+
self,
|
|
341
|
+
*,
|
|
342
|
+
source: global___OwnedAudioSource | None = ...,
|
|
343
|
+
) -> None: ...
|
|
344
|
+
def HasField(self, field_name: typing.Literal["source", b"source"]) -> builtins.bool: ...
|
|
345
|
+
def ClearField(self, field_name: typing.Literal["source", b"source"]) -> None: ...
|
|
346
|
+
|
|
347
|
+
global___NewAudioSourceResponse = NewAudioSourceResponse
|
|
348
|
+
|
|
349
|
+
@typing.final
|
|
350
|
+
class CaptureAudioFrameRequest(google.protobuf.message.Message):
|
|
351
|
+
"""Push a frame to an AudioSource
|
|
352
|
+
The data provided must be available as long as the client receive the callback.
|
|
353
|
+
"""
|
|
354
|
+
|
|
355
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
356
|
+
|
|
357
|
+
SOURCE_HANDLE_FIELD_NUMBER: builtins.int
|
|
358
|
+
BUFFER_FIELD_NUMBER: builtins.int
|
|
359
|
+
REQUEST_ASYNC_ID_FIELD_NUMBER: builtins.int
|
|
360
|
+
source_handle: builtins.int
|
|
361
|
+
request_async_id: builtins.int
|
|
362
|
+
@property
|
|
363
|
+
def buffer(self) -> global___AudioFrameBufferInfo: ...
|
|
364
|
+
def __init__(
|
|
365
|
+
self,
|
|
366
|
+
*,
|
|
367
|
+
source_handle: builtins.int | None = ...,
|
|
368
|
+
buffer: global___AudioFrameBufferInfo | None = ...,
|
|
369
|
+
request_async_id: builtins.int | None = ...,
|
|
370
|
+
) -> None: ...
|
|
371
|
+
def HasField(self, field_name: typing.Literal["buffer", b"buffer", "request_async_id", b"request_async_id", "source_handle", b"source_handle"]) -> builtins.bool: ...
|
|
372
|
+
def ClearField(self, field_name: typing.Literal["buffer", b"buffer", "request_async_id", b"request_async_id", "source_handle", b"source_handle"]) -> None: ...
|
|
373
|
+
|
|
374
|
+
global___CaptureAudioFrameRequest = CaptureAudioFrameRequest
|
|
375
|
+
|
|
376
|
+
@typing.final
|
|
377
|
+
class CaptureAudioFrameResponse(google.protobuf.message.Message):
|
|
378
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
379
|
+
|
|
380
|
+
ASYNC_ID_FIELD_NUMBER: builtins.int
|
|
381
|
+
async_id: builtins.int
|
|
382
|
+
def __init__(
|
|
383
|
+
self,
|
|
384
|
+
*,
|
|
385
|
+
async_id: builtins.int | None = ...,
|
|
386
|
+
) -> None: ...
|
|
387
|
+
def HasField(self, field_name: typing.Literal["async_id", b"async_id"]) -> builtins.bool: ...
|
|
388
|
+
def ClearField(self, field_name: typing.Literal["async_id", b"async_id"]) -> None: ...
|
|
389
|
+
|
|
390
|
+
global___CaptureAudioFrameResponse = CaptureAudioFrameResponse
|
|
391
|
+
|
|
392
|
+
@typing.final
|
|
393
|
+
class CaptureAudioFrameCallback(google.protobuf.message.Message):
|
|
394
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
395
|
+
|
|
396
|
+
ASYNC_ID_FIELD_NUMBER: builtins.int
|
|
397
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
398
|
+
async_id: builtins.int
|
|
399
|
+
error: builtins.str
|
|
400
|
+
def __init__(
|
|
401
|
+
self,
|
|
402
|
+
*,
|
|
403
|
+
async_id: builtins.int | None = ...,
|
|
404
|
+
error: builtins.str | None = ...,
|
|
405
|
+
) -> None: ...
|
|
406
|
+
def HasField(self, field_name: typing.Literal["async_id", b"async_id", "error", b"error"]) -> builtins.bool: ...
|
|
407
|
+
def ClearField(self, field_name: typing.Literal["async_id", b"async_id", "error", b"error"]) -> None: ...
|
|
408
|
+
|
|
409
|
+
global___CaptureAudioFrameCallback = CaptureAudioFrameCallback
|
|
410
|
+
|
|
411
|
+
@typing.final
|
|
412
|
+
class ClearAudioBufferRequest(google.protobuf.message.Message):
|
|
413
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
414
|
+
|
|
415
|
+
SOURCE_HANDLE_FIELD_NUMBER: builtins.int
|
|
416
|
+
source_handle: builtins.int
|
|
417
|
+
def __init__(
|
|
418
|
+
self,
|
|
419
|
+
*,
|
|
420
|
+
source_handle: builtins.int | None = ...,
|
|
421
|
+
) -> None: ...
|
|
422
|
+
def HasField(self, field_name: typing.Literal["source_handle", b"source_handle"]) -> builtins.bool: ...
|
|
423
|
+
def ClearField(self, field_name: typing.Literal["source_handle", b"source_handle"]) -> None: ...
|
|
424
|
+
|
|
425
|
+
global___ClearAudioBufferRequest = ClearAudioBufferRequest
|
|
426
|
+
|
|
427
|
+
@typing.final
|
|
428
|
+
class ClearAudioBufferResponse(google.protobuf.message.Message):
|
|
429
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
430
|
+
|
|
431
|
+
def __init__(
|
|
432
|
+
self,
|
|
433
|
+
) -> None: ...
|
|
434
|
+
|
|
435
|
+
global___ClearAudioBufferResponse = ClearAudioBufferResponse
|
|
436
|
+
|
|
437
|
+
@typing.final
|
|
438
|
+
class NewAudioResamplerRequest(google.protobuf.message.Message):
|
|
439
|
+
"""Create a new AudioResampler"""
|
|
440
|
+
|
|
441
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
442
|
+
|
|
443
|
+
def __init__(
|
|
444
|
+
self,
|
|
445
|
+
) -> None: ...
|
|
446
|
+
|
|
447
|
+
global___NewAudioResamplerRequest = NewAudioResamplerRequest
|
|
448
|
+
|
|
449
|
+
@typing.final
|
|
450
|
+
class NewAudioResamplerResponse(google.protobuf.message.Message):
|
|
451
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
452
|
+
|
|
453
|
+
RESAMPLER_FIELD_NUMBER: builtins.int
|
|
454
|
+
@property
|
|
455
|
+
def resampler(self) -> global___OwnedAudioResampler: ...
|
|
456
|
+
def __init__(
|
|
457
|
+
self,
|
|
458
|
+
*,
|
|
459
|
+
resampler: global___OwnedAudioResampler | None = ...,
|
|
460
|
+
) -> None: ...
|
|
461
|
+
def HasField(self, field_name: typing.Literal["resampler", b"resampler"]) -> builtins.bool: ...
|
|
462
|
+
def ClearField(self, field_name: typing.Literal["resampler", b"resampler"]) -> None: ...
|
|
463
|
+
|
|
464
|
+
global___NewAudioResamplerResponse = NewAudioResamplerResponse
|
|
465
|
+
|
|
466
|
+
@typing.final
|
|
467
|
+
class RemixAndResampleRequest(google.protobuf.message.Message):
|
|
468
|
+
"""Remix and resample an audio frame"""
|
|
469
|
+
|
|
470
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
471
|
+
|
|
472
|
+
RESAMPLER_HANDLE_FIELD_NUMBER: builtins.int
|
|
473
|
+
BUFFER_FIELD_NUMBER: builtins.int
|
|
474
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
475
|
+
SAMPLE_RATE_FIELD_NUMBER: builtins.int
|
|
476
|
+
resampler_handle: builtins.int
|
|
477
|
+
num_channels: builtins.int
|
|
478
|
+
sample_rate: builtins.int
|
|
479
|
+
@property
|
|
480
|
+
def buffer(self) -> global___AudioFrameBufferInfo: ...
|
|
481
|
+
def __init__(
|
|
482
|
+
self,
|
|
483
|
+
*,
|
|
484
|
+
resampler_handle: builtins.int | None = ...,
|
|
485
|
+
buffer: global___AudioFrameBufferInfo | None = ...,
|
|
486
|
+
num_channels: builtins.int | None = ...,
|
|
487
|
+
sample_rate: builtins.int | None = ...,
|
|
488
|
+
) -> None: ...
|
|
489
|
+
def HasField(self, field_name: typing.Literal["buffer", b"buffer", "num_channels", b"num_channels", "resampler_handle", b"resampler_handle", "sample_rate", b"sample_rate"]) -> builtins.bool: ...
|
|
490
|
+
def ClearField(self, field_name: typing.Literal["buffer", b"buffer", "num_channels", b"num_channels", "resampler_handle", b"resampler_handle", "sample_rate", b"sample_rate"]) -> None: ...
|
|
491
|
+
|
|
492
|
+
global___RemixAndResampleRequest = RemixAndResampleRequest
|
|
493
|
+
|
|
494
|
+
@typing.final
|
|
495
|
+
class RemixAndResampleResponse(google.protobuf.message.Message):
|
|
496
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
497
|
+
|
|
498
|
+
BUFFER_FIELD_NUMBER: builtins.int
|
|
499
|
+
@property
|
|
500
|
+
def buffer(self) -> global___OwnedAudioFrameBuffer: ...
|
|
501
|
+
def __init__(
|
|
502
|
+
self,
|
|
503
|
+
*,
|
|
504
|
+
buffer: global___OwnedAudioFrameBuffer | None = ...,
|
|
505
|
+
) -> None: ...
|
|
506
|
+
def HasField(self, field_name: typing.Literal["buffer", b"buffer"]) -> builtins.bool: ...
|
|
507
|
+
def ClearField(self, field_name: typing.Literal["buffer", b"buffer"]) -> None: ...
|
|
508
|
+
|
|
509
|
+
global___RemixAndResampleResponse = RemixAndResampleResponse
|
|
510
|
+
|
|
511
|
+
@typing.final
|
|
512
|
+
class NewApmRequest(google.protobuf.message.Message):
|
|
513
|
+
"""AEC"""
|
|
514
|
+
|
|
515
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
516
|
+
|
|
517
|
+
ECHO_CANCELLER_ENABLED_FIELD_NUMBER: builtins.int
|
|
518
|
+
GAIN_CONTROLLER_ENABLED_FIELD_NUMBER: builtins.int
|
|
519
|
+
HIGH_PASS_FILTER_ENABLED_FIELD_NUMBER: builtins.int
|
|
520
|
+
NOISE_SUPPRESSION_ENABLED_FIELD_NUMBER: builtins.int
|
|
521
|
+
echo_canceller_enabled: builtins.bool
|
|
522
|
+
gain_controller_enabled: builtins.bool
|
|
523
|
+
high_pass_filter_enabled: builtins.bool
|
|
524
|
+
noise_suppression_enabled: builtins.bool
|
|
525
|
+
def __init__(
|
|
526
|
+
self,
|
|
527
|
+
*,
|
|
528
|
+
echo_canceller_enabled: builtins.bool | None = ...,
|
|
529
|
+
gain_controller_enabled: builtins.bool | None = ...,
|
|
530
|
+
high_pass_filter_enabled: builtins.bool | None = ...,
|
|
531
|
+
noise_suppression_enabled: builtins.bool | None = ...,
|
|
532
|
+
) -> None: ...
|
|
533
|
+
def HasField(self, field_name: typing.Literal["echo_canceller_enabled", b"echo_canceller_enabled", "gain_controller_enabled", b"gain_controller_enabled", "high_pass_filter_enabled", b"high_pass_filter_enabled", "noise_suppression_enabled", b"noise_suppression_enabled"]) -> builtins.bool: ...
|
|
534
|
+
def ClearField(self, field_name: typing.Literal["echo_canceller_enabled", b"echo_canceller_enabled", "gain_controller_enabled", b"gain_controller_enabled", "high_pass_filter_enabled", b"high_pass_filter_enabled", "noise_suppression_enabled", b"noise_suppression_enabled"]) -> None: ...
|
|
535
|
+
|
|
536
|
+
global___NewApmRequest = NewApmRequest
|
|
537
|
+
|
|
538
|
+
@typing.final
|
|
539
|
+
class NewApmResponse(google.protobuf.message.Message):
|
|
540
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
541
|
+
|
|
542
|
+
APM_FIELD_NUMBER: builtins.int
|
|
543
|
+
@property
|
|
544
|
+
def apm(self) -> global___OwnedApm: ...
|
|
545
|
+
def __init__(
|
|
546
|
+
self,
|
|
547
|
+
*,
|
|
548
|
+
apm: global___OwnedApm | None = ...,
|
|
549
|
+
) -> None: ...
|
|
550
|
+
def HasField(self, field_name: typing.Literal["apm", b"apm"]) -> builtins.bool: ...
|
|
551
|
+
def ClearField(self, field_name: typing.Literal["apm", b"apm"]) -> None: ...
|
|
552
|
+
|
|
553
|
+
global___NewApmResponse = NewApmResponse
|
|
554
|
+
|
|
555
|
+
@typing.final
|
|
556
|
+
class ApmProcessStreamRequest(google.protobuf.message.Message):
|
|
557
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
558
|
+
|
|
559
|
+
APM_HANDLE_FIELD_NUMBER: builtins.int
|
|
560
|
+
DATA_PTR_FIELD_NUMBER: builtins.int
|
|
561
|
+
SIZE_FIELD_NUMBER: builtins.int
|
|
562
|
+
SAMPLE_RATE_FIELD_NUMBER: builtins.int
|
|
563
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
564
|
+
apm_handle: builtins.int
|
|
565
|
+
data_ptr: builtins.int
|
|
566
|
+
"""*mut i16"""
|
|
567
|
+
size: builtins.int
|
|
568
|
+
"""in bytes"""
|
|
569
|
+
sample_rate: builtins.int
|
|
570
|
+
num_channels: builtins.int
|
|
571
|
+
def __init__(
|
|
572
|
+
self,
|
|
573
|
+
*,
|
|
574
|
+
apm_handle: builtins.int | None = ...,
|
|
575
|
+
data_ptr: builtins.int | None = ...,
|
|
576
|
+
size: builtins.int | None = ...,
|
|
577
|
+
sample_rate: builtins.int | None = ...,
|
|
578
|
+
num_channels: builtins.int | None = ...,
|
|
579
|
+
) -> None: ...
|
|
580
|
+
def HasField(self, field_name: typing.Literal["apm_handle", b"apm_handle", "data_ptr", b"data_ptr", "num_channels", b"num_channels", "sample_rate", b"sample_rate", "size", b"size"]) -> builtins.bool: ...
|
|
581
|
+
def ClearField(self, field_name: typing.Literal["apm_handle", b"apm_handle", "data_ptr", b"data_ptr", "num_channels", b"num_channels", "sample_rate", b"sample_rate", "size", b"size"]) -> None: ...
|
|
582
|
+
|
|
583
|
+
global___ApmProcessStreamRequest = ApmProcessStreamRequest
|
|
584
|
+
|
|
585
|
+
@typing.final
|
|
586
|
+
class ApmProcessStreamResponse(google.protobuf.message.Message):
|
|
587
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
588
|
+
|
|
589
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
590
|
+
error: builtins.str
|
|
591
|
+
def __init__(
|
|
592
|
+
self,
|
|
593
|
+
*,
|
|
594
|
+
error: builtins.str | None = ...,
|
|
595
|
+
) -> None: ...
|
|
596
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
597
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
598
|
+
|
|
599
|
+
global___ApmProcessStreamResponse = ApmProcessStreamResponse
|
|
600
|
+
|
|
601
|
+
@typing.final
|
|
602
|
+
class ApmProcessReverseStreamRequest(google.protobuf.message.Message):
|
|
603
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
604
|
+
|
|
605
|
+
APM_HANDLE_FIELD_NUMBER: builtins.int
|
|
606
|
+
DATA_PTR_FIELD_NUMBER: builtins.int
|
|
607
|
+
SIZE_FIELD_NUMBER: builtins.int
|
|
608
|
+
SAMPLE_RATE_FIELD_NUMBER: builtins.int
|
|
609
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
610
|
+
apm_handle: builtins.int
|
|
611
|
+
data_ptr: builtins.int
|
|
612
|
+
"""*mut i16"""
|
|
613
|
+
size: builtins.int
|
|
614
|
+
"""in bytes"""
|
|
615
|
+
sample_rate: builtins.int
|
|
616
|
+
num_channels: builtins.int
|
|
617
|
+
def __init__(
|
|
618
|
+
self,
|
|
619
|
+
*,
|
|
620
|
+
apm_handle: builtins.int | None = ...,
|
|
621
|
+
data_ptr: builtins.int | None = ...,
|
|
622
|
+
size: builtins.int | None = ...,
|
|
623
|
+
sample_rate: builtins.int | None = ...,
|
|
624
|
+
num_channels: builtins.int | None = ...,
|
|
625
|
+
) -> None: ...
|
|
626
|
+
def HasField(self, field_name: typing.Literal["apm_handle", b"apm_handle", "data_ptr", b"data_ptr", "num_channels", b"num_channels", "sample_rate", b"sample_rate", "size", b"size"]) -> builtins.bool: ...
|
|
627
|
+
def ClearField(self, field_name: typing.Literal["apm_handle", b"apm_handle", "data_ptr", b"data_ptr", "num_channels", b"num_channels", "sample_rate", b"sample_rate", "size", b"size"]) -> None: ...
|
|
628
|
+
|
|
629
|
+
global___ApmProcessReverseStreamRequest = ApmProcessReverseStreamRequest
|
|
630
|
+
|
|
631
|
+
@typing.final
|
|
632
|
+
class ApmProcessReverseStreamResponse(google.protobuf.message.Message):
|
|
633
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
634
|
+
|
|
635
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
636
|
+
error: builtins.str
|
|
637
|
+
def __init__(
|
|
638
|
+
self,
|
|
639
|
+
*,
|
|
640
|
+
error: builtins.str | None = ...,
|
|
641
|
+
) -> None: ...
|
|
642
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
643
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
644
|
+
|
|
645
|
+
global___ApmProcessReverseStreamResponse = ApmProcessReverseStreamResponse
|
|
646
|
+
|
|
647
|
+
@typing.final
|
|
648
|
+
class ApmSetStreamDelayRequest(google.protobuf.message.Message):
|
|
649
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
650
|
+
|
|
651
|
+
APM_HANDLE_FIELD_NUMBER: builtins.int
|
|
652
|
+
DELAY_MS_FIELD_NUMBER: builtins.int
|
|
653
|
+
apm_handle: builtins.int
|
|
654
|
+
delay_ms: builtins.int
|
|
655
|
+
def __init__(
|
|
656
|
+
self,
|
|
657
|
+
*,
|
|
658
|
+
apm_handle: builtins.int | None = ...,
|
|
659
|
+
delay_ms: builtins.int | None = ...,
|
|
660
|
+
) -> None: ...
|
|
661
|
+
def HasField(self, field_name: typing.Literal["apm_handle", b"apm_handle", "delay_ms", b"delay_ms"]) -> builtins.bool: ...
|
|
662
|
+
def ClearField(self, field_name: typing.Literal["apm_handle", b"apm_handle", "delay_ms", b"delay_ms"]) -> None: ...
|
|
663
|
+
|
|
664
|
+
global___ApmSetStreamDelayRequest = ApmSetStreamDelayRequest
|
|
665
|
+
|
|
666
|
+
@typing.final
|
|
667
|
+
class ApmSetStreamDelayResponse(google.protobuf.message.Message):
|
|
668
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
669
|
+
|
|
670
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
671
|
+
error: builtins.str
|
|
672
|
+
def __init__(
|
|
673
|
+
self,
|
|
674
|
+
*,
|
|
675
|
+
error: builtins.str | None = ...,
|
|
676
|
+
) -> None: ...
|
|
677
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
678
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
679
|
+
|
|
680
|
+
global___ApmSetStreamDelayResponse = ApmSetStreamDelayResponse
|
|
681
|
+
|
|
682
|
+
@typing.final
|
|
683
|
+
class NewSoxResamplerRequest(google.protobuf.message.Message):
|
|
684
|
+
"""New resampler using SoX (much better quality)"""
|
|
685
|
+
|
|
686
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
687
|
+
|
|
688
|
+
INPUT_RATE_FIELD_NUMBER: builtins.int
|
|
689
|
+
OUTPUT_RATE_FIELD_NUMBER: builtins.int
|
|
690
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
691
|
+
INPUT_DATA_TYPE_FIELD_NUMBER: builtins.int
|
|
692
|
+
OUTPUT_DATA_TYPE_FIELD_NUMBER: builtins.int
|
|
693
|
+
QUALITY_RECIPE_FIELD_NUMBER: builtins.int
|
|
694
|
+
FLAGS_FIELD_NUMBER: builtins.int
|
|
695
|
+
input_rate: builtins.float
|
|
696
|
+
output_rate: builtins.float
|
|
697
|
+
num_channels: builtins.int
|
|
698
|
+
input_data_type: global___SoxResamplerDataType.ValueType
|
|
699
|
+
output_data_type: global___SoxResamplerDataType.ValueType
|
|
700
|
+
quality_recipe: global___SoxQualityRecipe.ValueType
|
|
701
|
+
flags: builtins.int
|
|
702
|
+
def __init__(
|
|
703
|
+
self,
|
|
704
|
+
*,
|
|
705
|
+
input_rate: builtins.float | None = ...,
|
|
706
|
+
output_rate: builtins.float | None = ...,
|
|
707
|
+
num_channels: builtins.int | None = ...,
|
|
708
|
+
input_data_type: global___SoxResamplerDataType.ValueType | None = ...,
|
|
709
|
+
output_data_type: global___SoxResamplerDataType.ValueType | None = ...,
|
|
710
|
+
quality_recipe: global___SoxQualityRecipe.ValueType | None = ...,
|
|
711
|
+
flags: builtins.int | None = ...,
|
|
712
|
+
) -> None: ...
|
|
713
|
+
def HasField(self, field_name: typing.Literal["flags", b"flags", "input_data_type", b"input_data_type", "input_rate", b"input_rate", "num_channels", b"num_channels", "output_data_type", b"output_data_type", "output_rate", b"output_rate", "quality_recipe", b"quality_recipe"]) -> builtins.bool: ...
|
|
714
|
+
def ClearField(self, field_name: typing.Literal["flags", b"flags", "input_data_type", b"input_data_type", "input_rate", b"input_rate", "num_channels", b"num_channels", "output_data_type", b"output_data_type", "output_rate", b"output_rate", "quality_recipe", b"quality_recipe"]) -> None: ...
|
|
715
|
+
|
|
716
|
+
global___NewSoxResamplerRequest = NewSoxResamplerRequest
|
|
717
|
+
|
|
718
|
+
@typing.final
|
|
719
|
+
class NewSoxResamplerResponse(google.protobuf.message.Message):
|
|
720
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
721
|
+
|
|
722
|
+
RESAMPLER_FIELD_NUMBER: builtins.int
|
|
723
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
724
|
+
error: builtins.str
|
|
725
|
+
@property
|
|
726
|
+
def resampler(self) -> global___OwnedSoxResampler: ...
|
|
727
|
+
def __init__(
|
|
728
|
+
self,
|
|
729
|
+
*,
|
|
730
|
+
resampler: global___OwnedSoxResampler | None = ...,
|
|
731
|
+
error: builtins.str | None = ...,
|
|
732
|
+
) -> None: ...
|
|
733
|
+
def HasField(self, field_name: typing.Literal["error", b"error", "message", b"message", "resampler", b"resampler"]) -> builtins.bool: ...
|
|
734
|
+
def ClearField(self, field_name: typing.Literal["error", b"error", "message", b"message", "resampler", b"resampler"]) -> None: ...
|
|
735
|
+
def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.Literal["resampler", "error"] | None: ...
|
|
736
|
+
|
|
737
|
+
global___NewSoxResamplerResponse = NewSoxResamplerResponse
|
|
738
|
+
|
|
739
|
+
@typing.final
|
|
740
|
+
class PushSoxResamplerRequest(google.protobuf.message.Message):
|
|
741
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
742
|
+
|
|
743
|
+
RESAMPLER_HANDLE_FIELD_NUMBER: builtins.int
|
|
744
|
+
DATA_PTR_FIELD_NUMBER: builtins.int
|
|
745
|
+
SIZE_FIELD_NUMBER: builtins.int
|
|
746
|
+
resampler_handle: builtins.int
|
|
747
|
+
data_ptr: builtins.int
|
|
748
|
+
"""*const i16"""
|
|
749
|
+
size: builtins.int
|
|
750
|
+
"""in bytes"""
|
|
751
|
+
def __init__(
|
|
752
|
+
self,
|
|
753
|
+
*,
|
|
754
|
+
resampler_handle: builtins.int | None = ...,
|
|
755
|
+
data_ptr: builtins.int | None = ...,
|
|
756
|
+
size: builtins.int | None = ...,
|
|
757
|
+
) -> None: ...
|
|
758
|
+
def HasField(self, field_name: typing.Literal["data_ptr", b"data_ptr", "resampler_handle", b"resampler_handle", "size", b"size"]) -> builtins.bool: ...
|
|
759
|
+
def ClearField(self, field_name: typing.Literal["data_ptr", b"data_ptr", "resampler_handle", b"resampler_handle", "size", b"size"]) -> None: ...
|
|
760
|
+
|
|
761
|
+
global___PushSoxResamplerRequest = PushSoxResamplerRequest
|
|
762
|
+
|
|
763
|
+
@typing.final
|
|
764
|
+
class PushSoxResamplerResponse(google.protobuf.message.Message):
|
|
765
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
766
|
+
|
|
767
|
+
OUTPUT_PTR_FIELD_NUMBER: builtins.int
|
|
768
|
+
SIZE_FIELD_NUMBER: builtins.int
|
|
769
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
770
|
+
output_ptr: builtins.int
|
|
771
|
+
"""*const i16 (could be null)"""
|
|
772
|
+
size: builtins.int
|
|
773
|
+
"""in bytes"""
|
|
774
|
+
error: builtins.str
|
|
775
|
+
def __init__(
|
|
776
|
+
self,
|
|
777
|
+
*,
|
|
778
|
+
output_ptr: builtins.int | None = ...,
|
|
779
|
+
size: builtins.int | None = ...,
|
|
780
|
+
error: builtins.str | None = ...,
|
|
781
|
+
) -> None: ...
|
|
782
|
+
def HasField(self, field_name: typing.Literal["error", b"error", "output_ptr", b"output_ptr", "size", b"size"]) -> builtins.bool: ...
|
|
783
|
+
def ClearField(self, field_name: typing.Literal["error", b"error", "output_ptr", b"output_ptr", "size", b"size"]) -> None: ...
|
|
784
|
+
|
|
785
|
+
global___PushSoxResamplerResponse = PushSoxResamplerResponse
|
|
786
|
+
|
|
787
|
+
@typing.final
|
|
788
|
+
class FlushSoxResamplerRequest(google.protobuf.message.Message):
|
|
789
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
790
|
+
|
|
791
|
+
RESAMPLER_HANDLE_FIELD_NUMBER: builtins.int
|
|
792
|
+
resampler_handle: builtins.int
|
|
793
|
+
def __init__(
|
|
794
|
+
self,
|
|
795
|
+
*,
|
|
796
|
+
resampler_handle: builtins.int | None = ...,
|
|
797
|
+
) -> None: ...
|
|
798
|
+
def HasField(self, field_name: typing.Literal["resampler_handle", b"resampler_handle"]) -> builtins.bool: ...
|
|
799
|
+
def ClearField(self, field_name: typing.Literal["resampler_handle", b"resampler_handle"]) -> None: ...
|
|
800
|
+
|
|
801
|
+
global___FlushSoxResamplerRequest = FlushSoxResamplerRequest
|
|
802
|
+
|
|
803
|
+
@typing.final
|
|
804
|
+
class FlushSoxResamplerResponse(google.protobuf.message.Message):
|
|
805
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
806
|
+
|
|
807
|
+
OUTPUT_PTR_FIELD_NUMBER: builtins.int
|
|
808
|
+
SIZE_FIELD_NUMBER: builtins.int
|
|
809
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
810
|
+
output_ptr: builtins.int
|
|
811
|
+
"""*const i16 (could be null)"""
|
|
812
|
+
size: builtins.int
|
|
813
|
+
"""in bytes"""
|
|
814
|
+
error: builtins.str
|
|
815
|
+
def __init__(
|
|
816
|
+
self,
|
|
817
|
+
*,
|
|
818
|
+
output_ptr: builtins.int | None = ...,
|
|
819
|
+
size: builtins.int | None = ...,
|
|
820
|
+
error: builtins.str | None = ...,
|
|
821
|
+
) -> None: ...
|
|
822
|
+
def HasField(self, field_name: typing.Literal["error", b"error", "output_ptr", b"output_ptr", "size", b"size"]) -> builtins.bool: ...
|
|
823
|
+
def ClearField(self, field_name: typing.Literal["error", b"error", "output_ptr", b"output_ptr", "size", b"size"]) -> None: ...
|
|
824
|
+
|
|
825
|
+
global___FlushSoxResamplerResponse = FlushSoxResamplerResponse
|
|
826
|
+
|
|
827
|
+
@typing.final
|
|
828
|
+
class AudioFrameBufferInfo(google.protobuf.message.Message):
|
|
829
|
+
"""
|
|
830
|
+
AudioFrame buffer
|
|
831
|
+
"""
|
|
832
|
+
|
|
833
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
834
|
+
|
|
835
|
+
DATA_PTR_FIELD_NUMBER: builtins.int
|
|
836
|
+
NUM_CHANNELS_FIELD_NUMBER: builtins.int
|
|
837
|
+
SAMPLE_RATE_FIELD_NUMBER: builtins.int
|
|
838
|
+
SAMPLES_PER_CHANNEL_FIELD_NUMBER: builtins.int
|
|
839
|
+
data_ptr: builtins.int
|
|
840
|
+
"""*const i16"""
|
|
841
|
+
num_channels: builtins.int
|
|
842
|
+
sample_rate: builtins.int
|
|
843
|
+
samples_per_channel: builtins.int
|
|
844
|
+
def __init__(
|
|
845
|
+
self,
|
|
846
|
+
*,
|
|
847
|
+
data_ptr: builtins.int | None = ...,
|
|
848
|
+
num_channels: builtins.int | None = ...,
|
|
849
|
+
sample_rate: builtins.int | None = ...,
|
|
850
|
+
samples_per_channel: builtins.int | None = ...,
|
|
851
|
+
) -> None: ...
|
|
852
|
+
def HasField(self, field_name: typing.Literal["data_ptr", b"data_ptr", "num_channels", b"num_channels", "sample_rate", b"sample_rate", "samples_per_channel", b"samples_per_channel"]) -> builtins.bool: ...
|
|
853
|
+
def ClearField(self, field_name: typing.Literal["data_ptr", b"data_ptr", "num_channels", b"num_channels", "sample_rate", b"sample_rate", "samples_per_channel", b"samples_per_channel"]) -> None: ...
|
|
854
|
+
|
|
855
|
+
global___AudioFrameBufferInfo = AudioFrameBufferInfo
|
|
856
|
+
|
|
857
|
+
@typing.final
|
|
858
|
+
class OwnedAudioFrameBuffer(google.protobuf.message.Message):
|
|
859
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
860
|
+
|
|
861
|
+
HANDLE_FIELD_NUMBER: builtins.int
|
|
862
|
+
INFO_FIELD_NUMBER: builtins.int
|
|
863
|
+
@property
|
|
864
|
+
def handle(self) -> handle_pb2.FfiOwnedHandle: ...
|
|
865
|
+
@property
|
|
866
|
+
def info(self) -> global___AudioFrameBufferInfo: ...
|
|
867
|
+
def __init__(
|
|
868
|
+
self,
|
|
869
|
+
*,
|
|
870
|
+
handle: handle_pb2.FfiOwnedHandle | None = ...,
|
|
871
|
+
info: global___AudioFrameBufferInfo | None = ...,
|
|
872
|
+
) -> None: ...
|
|
873
|
+
def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
|
|
874
|
+
def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...
|
|
875
|
+
|
|
876
|
+
global___OwnedAudioFrameBuffer = OwnedAudioFrameBuffer
|
|
877
|
+
|
|
878
|
+
@typing.final
|
|
879
|
+
class AudioStreamInfo(google.protobuf.message.Message):
|
|
880
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
881
|
+
|
|
882
|
+
TYPE_FIELD_NUMBER: builtins.int
|
|
883
|
+
type: global___AudioStreamType.ValueType
|
|
884
|
+
def __init__(
|
|
885
|
+
self,
|
|
886
|
+
*,
|
|
887
|
+
type: global___AudioStreamType.ValueType | None = ...,
|
|
888
|
+
) -> None: ...
|
|
889
|
+
def HasField(self, field_name: typing.Literal["type", b"type"]) -> builtins.bool: ...
|
|
890
|
+
def ClearField(self, field_name: typing.Literal["type", b"type"]) -> None: ...
|
|
891
|
+
|
|
892
|
+
global___AudioStreamInfo = AudioStreamInfo
|
|
893
|
+
|
|
894
|
+
@typing.final
|
|
895
|
+
class OwnedAudioStream(google.protobuf.message.Message):
|
|
896
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
897
|
+
|
|
898
|
+
HANDLE_FIELD_NUMBER: builtins.int
|
|
899
|
+
INFO_FIELD_NUMBER: builtins.int
|
|
900
|
+
@property
|
|
901
|
+
def handle(self) -> handle_pb2.FfiOwnedHandle: ...
|
|
902
|
+
@property
|
|
903
|
+
def info(self) -> global___AudioStreamInfo: ...
|
|
904
|
+
def __init__(
|
|
905
|
+
self,
|
|
906
|
+
*,
|
|
907
|
+
handle: handle_pb2.FfiOwnedHandle | None = ...,
|
|
908
|
+
info: global___AudioStreamInfo | None = ...,
|
|
909
|
+
) -> None: ...
|
|
910
|
+
def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
|
|
911
|
+
def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...
|
|
912
|
+
|
|
913
|
+
global___OwnedAudioStream = OwnedAudioStream
|
|
914
|
+
|
|
915
|
+
@typing.final
|
|
916
|
+
class AudioStreamEvent(google.protobuf.message.Message):
|
|
917
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
918
|
+
|
|
919
|
+
STREAM_HANDLE_FIELD_NUMBER: builtins.int
|
|
920
|
+
FRAME_RECEIVED_FIELD_NUMBER: builtins.int
|
|
921
|
+
EOS_FIELD_NUMBER: builtins.int
|
|
922
|
+
stream_handle: builtins.int
|
|
923
|
+
@property
|
|
924
|
+
def frame_received(self) -> global___AudioFrameReceived: ...
|
|
925
|
+
@property
|
|
926
|
+
def eos(self) -> global___AudioStreamEOS: ...
|
|
927
|
+
def __init__(
|
|
928
|
+
self,
|
|
929
|
+
*,
|
|
930
|
+
stream_handle: builtins.int | None = ...,
|
|
931
|
+
frame_received: global___AudioFrameReceived | None = ...,
|
|
932
|
+
eos: global___AudioStreamEOS | None = ...,
|
|
933
|
+
) -> None: ...
|
|
934
|
+
def HasField(self, field_name: typing.Literal["eos", b"eos", "frame_received", b"frame_received", "message", b"message", "stream_handle", b"stream_handle"]) -> builtins.bool: ...
|
|
935
|
+
def ClearField(self, field_name: typing.Literal["eos", b"eos", "frame_received", b"frame_received", "message", b"message", "stream_handle", b"stream_handle"]) -> None: ...
|
|
936
|
+
def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.Literal["frame_received", "eos"] | None: ...
|
|
937
|
+
|
|
938
|
+
global___AudioStreamEvent = AudioStreamEvent
|
|
939
|
+
|
|
940
|
+
@typing.final
|
|
941
|
+
class AudioFrameReceived(google.protobuf.message.Message):
|
|
942
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
943
|
+
|
|
944
|
+
FRAME_FIELD_NUMBER: builtins.int
|
|
945
|
+
@property
|
|
946
|
+
def frame(self) -> global___OwnedAudioFrameBuffer: ...
|
|
947
|
+
def __init__(
|
|
948
|
+
self,
|
|
949
|
+
*,
|
|
950
|
+
frame: global___OwnedAudioFrameBuffer | None = ...,
|
|
951
|
+
) -> None: ...
|
|
952
|
+
def HasField(self, field_name: typing.Literal["frame", b"frame"]) -> builtins.bool: ...
|
|
953
|
+
def ClearField(self, field_name: typing.Literal["frame", b"frame"]) -> None: ...
|
|
954
|
+
|
|
955
|
+
global___AudioFrameReceived = AudioFrameReceived
|
|
956
|
+
|
|
957
|
+
@typing.final
|
|
958
|
+
class AudioStreamEOS(google.protobuf.message.Message):
|
|
959
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
960
|
+
|
|
961
|
+
def __init__(
|
|
962
|
+
self,
|
|
963
|
+
) -> None: ...
|
|
964
|
+
|
|
965
|
+
global___AudioStreamEOS = AudioStreamEOS
|
|
966
|
+
|
|
967
|
+
@typing.final
|
|
968
|
+
class AudioSourceOptions(google.protobuf.message.Message):
|
|
969
|
+
"""
|
|
970
|
+
AudioSource
|
|
971
|
+
"""
|
|
972
|
+
|
|
973
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
974
|
+
|
|
975
|
+
ECHO_CANCELLATION_FIELD_NUMBER: builtins.int
|
|
976
|
+
NOISE_SUPPRESSION_FIELD_NUMBER: builtins.int
|
|
977
|
+
AUTO_GAIN_CONTROL_FIELD_NUMBER: builtins.int
|
|
978
|
+
PREFER_HARDWARE_FIELD_NUMBER: builtins.int
|
|
979
|
+
echo_cancellation: builtins.bool
|
|
980
|
+
noise_suppression: builtins.bool
|
|
981
|
+
auto_gain_control: builtins.bool
|
|
982
|
+
prefer_hardware: builtins.bool
|
|
983
|
+
"""Prefer hardware audio processing (e.g., iOS VPIO). Lower latency.
|
|
984
|
+
Only applies to AudioSourcePlatform. Default: true.
|
|
985
|
+
"""
|
|
986
|
+
def __init__(
|
|
987
|
+
self,
|
|
988
|
+
*,
|
|
989
|
+
echo_cancellation: builtins.bool | None = ...,
|
|
990
|
+
noise_suppression: builtins.bool | None = ...,
|
|
991
|
+
auto_gain_control: builtins.bool | None = ...,
|
|
992
|
+
prefer_hardware: builtins.bool | None = ...,
|
|
993
|
+
) -> None: ...
|
|
994
|
+
def HasField(self, field_name: typing.Literal["auto_gain_control", b"auto_gain_control", "echo_cancellation", b"echo_cancellation", "noise_suppression", b"noise_suppression", "prefer_hardware", b"prefer_hardware"]) -> builtins.bool: ...
|
|
995
|
+
def ClearField(self, field_name: typing.Literal["auto_gain_control", b"auto_gain_control", "echo_cancellation", b"echo_cancellation", "noise_suppression", b"noise_suppression", "prefer_hardware", b"prefer_hardware"]) -> None: ...
|
|
996
|
+
|
|
997
|
+
global___AudioSourceOptions = AudioSourceOptions
|
|
998
|
+
|
|
999
|
+
@typing.final
|
|
1000
|
+
class AudioSourceInfo(google.protobuf.message.Message):
|
|
1001
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1002
|
+
|
|
1003
|
+
TYPE_FIELD_NUMBER: builtins.int
|
|
1004
|
+
type: global___AudioSourceType.ValueType
|
|
1005
|
+
def __init__(
|
|
1006
|
+
self,
|
|
1007
|
+
*,
|
|
1008
|
+
type: global___AudioSourceType.ValueType | None = ...,
|
|
1009
|
+
) -> None: ...
|
|
1010
|
+
def HasField(self, field_name: typing.Literal["type", b"type"]) -> builtins.bool: ...
|
|
1011
|
+
def ClearField(self, field_name: typing.Literal["type", b"type"]) -> None: ...
|
|
1012
|
+
|
|
1013
|
+
global___AudioSourceInfo = AudioSourceInfo
|
|
1014
|
+
|
|
1015
|
+
@typing.final
|
|
1016
|
+
class OwnedAudioSource(google.protobuf.message.Message):
|
|
1017
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1018
|
+
|
|
1019
|
+
HANDLE_FIELD_NUMBER: builtins.int
|
|
1020
|
+
INFO_FIELD_NUMBER: builtins.int
|
|
1021
|
+
@property
|
|
1022
|
+
def handle(self) -> handle_pb2.FfiOwnedHandle: ...
|
|
1023
|
+
@property
|
|
1024
|
+
def info(self) -> global___AudioSourceInfo: ...
|
|
1025
|
+
def __init__(
|
|
1026
|
+
self,
|
|
1027
|
+
*,
|
|
1028
|
+
handle: handle_pb2.FfiOwnedHandle | None = ...,
|
|
1029
|
+
info: global___AudioSourceInfo | None = ...,
|
|
1030
|
+
) -> None: ...
|
|
1031
|
+
def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
|
|
1032
|
+
def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...
|
|
1033
|
+
|
|
1034
|
+
global___OwnedAudioSource = OwnedAudioSource
|
|
1035
|
+
|
|
1036
|
+
@typing.final
|
|
1037
|
+
class AudioResamplerInfo(google.protobuf.message.Message):
|
|
1038
|
+
"""
|
|
1039
|
+
AudioResampler
|
|
1040
|
+
"""
|
|
1041
|
+
|
|
1042
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1043
|
+
|
|
1044
|
+
def __init__(
|
|
1045
|
+
self,
|
|
1046
|
+
) -> None: ...
|
|
1047
|
+
|
|
1048
|
+
global___AudioResamplerInfo = AudioResamplerInfo
|
|
1049
|
+
|
|
1050
|
+
@typing.final
|
|
1051
|
+
class OwnedAudioResampler(google.protobuf.message.Message):
|
|
1052
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1053
|
+
|
|
1054
|
+
HANDLE_FIELD_NUMBER: builtins.int
|
|
1055
|
+
INFO_FIELD_NUMBER: builtins.int
|
|
1056
|
+
@property
|
|
1057
|
+
def handle(self) -> handle_pb2.FfiOwnedHandle: ...
|
|
1058
|
+
@property
|
|
1059
|
+
def info(self) -> global___AudioResamplerInfo: ...
|
|
1060
|
+
def __init__(
|
|
1061
|
+
self,
|
|
1062
|
+
*,
|
|
1063
|
+
handle: handle_pb2.FfiOwnedHandle | None = ...,
|
|
1064
|
+
info: global___AudioResamplerInfo | None = ...,
|
|
1065
|
+
) -> None: ...
|
|
1066
|
+
def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
|
|
1067
|
+
def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...
|
|
1068
|
+
|
|
1069
|
+
global___OwnedAudioResampler = OwnedAudioResampler
|
|
1070
|
+
|
|
1071
|
+
@typing.final
|
|
1072
|
+
class OwnedApm(google.protobuf.message.Message):
|
|
1073
|
+
"""
|
|
1074
|
+
AEC
|
|
1075
|
+
"""
|
|
1076
|
+
|
|
1077
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1078
|
+
|
|
1079
|
+
HANDLE_FIELD_NUMBER: builtins.int
|
|
1080
|
+
@property
|
|
1081
|
+
def handle(self) -> handle_pb2.FfiOwnedHandle: ...
|
|
1082
|
+
def __init__(
|
|
1083
|
+
self,
|
|
1084
|
+
*,
|
|
1085
|
+
handle: handle_pb2.FfiOwnedHandle | None = ...,
|
|
1086
|
+
) -> None: ...
|
|
1087
|
+
def HasField(self, field_name: typing.Literal["handle", b"handle"]) -> builtins.bool: ...
|
|
1088
|
+
def ClearField(self, field_name: typing.Literal["handle", b"handle"]) -> None: ...
|
|
1089
|
+
|
|
1090
|
+
global___OwnedApm = OwnedApm
|
|
1091
|
+
|
|
1092
|
+
@typing.final
|
|
1093
|
+
class SoxResamplerInfo(google.protobuf.message.Message):
|
|
1094
|
+
"""
|
|
1095
|
+
Sox AudioResampler
|
|
1096
|
+
"""
|
|
1097
|
+
|
|
1098
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1099
|
+
|
|
1100
|
+
def __init__(
|
|
1101
|
+
self,
|
|
1102
|
+
) -> None: ...
|
|
1103
|
+
|
|
1104
|
+
global___SoxResamplerInfo = SoxResamplerInfo
|
|
1105
|
+
|
|
1106
|
+
@typing.final
|
|
1107
|
+
class OwnedSoxResampler(google.protobuf.message.Message):
|
|
1108
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1109
|
+
|
|
1110
|
+
HANDLE_FIELD_NUMBER: builtins.int
|
|
1111
|
+
INFO_FIELD_NUMBER: builtins.int
|
|
1112
|
+
@property
|
|
1113
|
+
def handle(self) -> handle_pb2.FfiOwnedHandle: ...
|
|
1114
|
+
@property
|
|
1115
|
+
def info(self) -> global___SoxResamplerInfo: ...
|
|
1116
|
+
def __init__(
|
|
1117
|
+
self,
|
|
1118
|
+
*,
|
|
1119
|
+
handle: handle_pb2.FfiOwnedHandle | None = ...,
|
|
1120
|
+
info: global___SoxResamplerInfo | None = ...,
|
|
1121
|
+
) -> None: ...
|
|
1122
|
+
def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
|
|
1123
|
+
def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...
|
|
1124
|
+
|
|
1125
|
+
global___OwnedSoxResampler = OwnedSoxResampler
|
|
1126
|
+
|
|
1127
|
+
@typing.final
|
|
1128
|
+
class LoadAudioFilterPluginRequest(google.protobuf.message.Message):
|
|
1129
|
+
"""Audio Filter Plugin"""
|
|
1130
|
+
|
|
1131
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1132
|
+
|
|
1133
|
+
PLUGIN_PATH_FIELD_NUMBER: builtins.int
|
|
1134
|
+
DEPENDENCIES_FIELD_NUMBER: builtins.int
|
|
1135
|
+
MODULE_ID_FIELD_NUMBER: builtins.int
|
|
1136
|
+
plugin_path: builtins.str
|
|
1137
|
+
"""path for ffi audio filter plugin"""
|
|
1138
|
+
module_id: builtins.str
|
|
1139
|
+
"""Unique identifier of the plugin"""
|
|
1140
|
+
@property
|
|
1141
|
+
def dependencies(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
|
|
1142
|
+
"""Optional: paths for dependency dylibs"""
|
|
1143
|
+
|
|
1144
|
+
def __init__(
|
|
1145
|
+
self,
|
|
1146
|
+
*,
|
|
1147
|
+
plugin_path: builtins.str | None = ...,
|
|
1148
|
+
dependencies: collections.abc.Iterable[builtins.str] | None = ...,
|
|
1149
|
+
module_id: builtins.str | None = ...,
|
|
1150
|
+
) -> None: ...
|
|
1151
|
+
def HasField(self, field_name: typing.Literal["module_id", b"module_id", "plugin_path", b"plugin_path"]) -> builtins.bool: ...
|
|
1152
|
+
def ClearField(self, field_name: typing.Literal["dependencies", b"dependencies", "module_id", b"module_id", "plugin_path", b"plugin_path"]) -> None: ...
|
|
1153
|
+
|
|
1154
|
+
global___LoadAudioFilterPluginRequest = LoadAudioFilterPluginRequest
|
|
1155
|
+
|
|
1156
|
+
@typing.final
|
|
1157
|
+
class LoadAudioFilterPluginResponse(google.protobuf.message.Message):
|
|
1158
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1159
|
+
|
|
1160
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
1161
|
+
error: builtins.str
|
|
1162
|
+
def __init__(
|
|
1163
|
+
self,
|
|
1164
|
+
*,
|
|
1165
|
+
error: builtins.str | None = ...,
|
|
1166
|
+
) -> None: ...
|
|
1167
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
1168
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
1169
|
+
|
|
1170
|
+
global___LoadAudioFilterPluginResponse = LoadAudioFilterPluginResponse
|
|
1171
|
+
|
|
1172
|
+
@typing.final
|
|
1173
|
+
class AudioDeviceInfo(google.protobuf.message.Message):
|
|
1174
|
+
"""
|
|
1175
|
+
PlatformAudio - Platform audio device management via WebRTC's ADM
|
|
1176
|
+
|
|
1177
|
+
PlatformAudio provides access to the platform's audio devices (microphones and
|
|
1178
|
+
speakers) via WebRTC's Audio Device Module (ADM). Use it to:
|
|
1179
|
+
|
|
1180
|
+
- Capture audio from the microphone for publishing
|
|
1181
|
+
- Play received audio through the speakers
|
|
1182
|
+
- Enumerate and select audio devices
|
|
1183
|
+
|
|
1184
|
+
# Usage
|
|
1185
|
+
|
|
1186
|
+
1. Create a PlatformAudio handle with NewPlatformAudioRequest
|
|
1187
|
+
2. Enumerate devices with GetAudioDevicesRequest (optional)
|
|
1188
|
+
3. Select devices with SetRecordingDeviceRequest/SetPlayoutDeviceRequest (optional)
|
|
1189
|
+
4. Create an audio track using AudioSourcePlatform type
|
|
1190
|
+
5. When done, drop the handle (the ADM is disabled when all handles are released)
|
|
1191
|
+
|
|
1192
|
+
Information about an audio device.
|
|
1193
|
+
"""
|
|
1194
|
+
|
|
1195
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1196
|
+
|
|
1197
|
+
INDEX_FIELD_NUMBER: builtins.int
|
|
1198
|
+
NAME_FIELD_NUMBER: builtins.int
|
|
1199
|
+
GUID_FIELD_NUMBER: builtins.int
|
|
1200
|
+
index: builtins.int
|
|
1201
|
+
"""Device index (0-based). Note: indices can change when devices are added/removed."""
|
|
1202
|
+
name: builtins.str
|
|
1203
|
+
"""Device name as reported by the operating system."""
|
|
1204
|
+
guid: builtins.str
|
|
1205
|
+
"""Platform-specific unique device identifier (GUID).
|
|
1206
|
+
This is stable across device additions/removals and should be preferred
|
|
1207
|
+
over index for device selection. Format varies by platform:
|
|
1208
|
+
- Windows: Device interface path
|
|
1209
|
+
- macOS: AudioObjectID as string
|
|
1210
|
+
- Linux: ALSA/PulseAudio device identifier
|
|
1211
|
+
"""
|
|
1212
|
+
def __init__(
|
|
1213
|
+
self,
|
|
1214
|
+
*,
|
|
1215
|
+
index: builtins.int | None = ...,
|
|
1216
|
+
name: builtins.str | None = ...,
|
|
1217
|
+
guid: builtins.str | None = ...,
|
|
1218
|
+
) -> None: ...
|
|
1219
|
+
def HasField(self, field_name: typing.Literal["guid", b"guid", "index", b"index", "name", b"name"]) -> builtins.bool: ...
|
|
1220
|
+
def ClearField(self, field_name: typing.Literal["guid", b"guid", "index", b"index", "name", b"name"]) -> None: ...
|
|
1221
|
+
|
|
1222
|
+
global___AudioDeviceInfo = AudioDeviceInfo
|
|
1223
|
+
|
|
1224
|
+
@typing.final
|
|
1225
|
+
class PlatformAudioInfo(google.protobuf.message.Message):
|
|
1226
|
+
"""Information about a PlatformAudio instance."""
|
|
1227
|
+
|
|
1228
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1229
|
+
|
|
1230
|
+
RECORDING_DEVICE_COUNT_FIELD_NUMBER: builtins.int
|
|
1231
|
+
PLAYOUT_DEVICE_COUNT_FIELD_NUMBER: builtins.int
|
|
1232
|
+
recording_device_count: builtins.int
|
|
1233
|
+
"""Number of available recording (microphone) devices."""
|
|
1234
|
+
playout_device_count: builtins.int
|
|
1235
|
+
"""Number of available playout (speaker) devices."""
|
|
1236
|
+
def __init__(
|
|
1237
|
+
self,
|
|
1238
|
+
*,
|
|
1239
|
+
recording_device_count: builtins.int | None = ...,
|
|
1240
|
+
playout_device_count: builtins.int | None = ...,
|
|
1241
|
+
) -> None: ...
|
|
1242
|
+
def HasField(self, field_name: typing.Literal["playout_device_count", b"playout_device_count", "recording_device_count", b"recording_device_count"]) -> builtins.bool: ...
|
|
1243
|
+
def ClearField(self, field_name: typing.Literal["playout_device_count", b"playout_device_count", "recording_device_count", b"recording_device_count"]) -> None: ...
|
|
1244
|
+
|
|
1245
|
+
global___PlatformAudioInfo = PlatformAudioInfo
|
|
1246
|
+
|
|
1247
|
+
@typing.final
|
|
1248
|
+
class OwnedPlatformAudio(google.protobuf.message.Message):
|
|
1249
|
+
"""Owned PlatformAudio handle with info."""
|
|
1250
|
+
|
|
1251
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1252
|
+
|
|
1253
|
+
HANDLE_FIELD_NUMBER: builtins.int
|
|
1254
|
+
INFO_FIELD_NUMBER: builtins.int
|
|
1255
|
+
@property
|
|
1256
|
+
def handle(self) -> handle_pb2.FfiOwnedHandle: ...
|
|
1257
|
+
@property
|
|
1258
|
+
def info(self) -> global___PlatformAudioInfo: ...
|
|
1259
|
+
def __init__(
|
|
1260
|
+
self,
|
|
1261
|
+
*,
|
|
1262
|
+
handle: handle_pb2.FfiOwnedHandle | None = ...,
|
|
1263
|
+
info: global___PlatformAudioInfo | None = ...,
|
|
1264
|
+
) -> None: ...
|
|
1265
|
+
def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
|
|
1266
|
+
def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...
|
|
1267
|
+
|
|
1268
|
+
global___OwnedPlatformAudio = OwnedPlatformAudio
|
|
1269
|
+
|
|
1270
|
+
@typing.final
|
|
1271
|
+
class NewPlatformAudioRequest(google.protobuf.message.Message):
|
|
1272
|
+
"""Create a new PlatformAudio instance.
|
|
1273
|
+
|
|
1274
|
+
This enables the platform ADM for microphone capture and speaker playout.
|
|
1275
|
+
If another PlatformAudio instance exists, this reuses the same underlying ADM.
|
|
1276
|
+
|
|
1277
|
+
The returned handle must be kept alive while platform audio is needed.
|
|
1278
|
+
When all handles are released, the ADM is automatically disabled.
|
|
1279
|
+
"""
|
|
1280
|
+
|
|
1281
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1282
|
+
|
|
1283
|
+
def __init__(
|
|
1284
|
+
self,
|
|
1285
|
+
) -> None: ...
|
|
1286
|
+
|
|
1287
|
+
global___NewPlatformAudioRequest = NewPlatformAudioRequest
|
|
1288
|
+
|
|
1289
|
+
@typing.final
|
|
1290
|
+
class NewPlatformAudioResponse(google.protobuf.message.Message):
|
|
1291
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1292
|
+
|
|
1293
|
+
PLATFORM_AUDIO_FIELD_NUMBER: builtins.int
|
|
1294
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
1295
|
+
error: builtins.str
|
|
1296
|
+
"""Error message if creation failed."""
|
|
1297
|
+
@property
|
|
1298
|
+
def platform_audio(self) -> global___OwnedPlatformAudio:
|
|
1299
|
+
"""The PlatformAudio handle on success."""
|
|
1300
|
+
|
|
1301
|
+
def __init__(
|
|
1302
|
+
self,
|
|
1303
|
+
*,
|
|
1304
|
+
platform_audio: global___OwnedPlatformAudio | None = ...,
|
|
1305
|
+
error: builtins.str | None = ...,
|
|
1306
|
+
) -> None: ...
|
|
1307
|
+
def HasField(self, field_name: typing.Literal["error", b"error", "message", b"message", "platform_audio", b"platform_audio"]) -> builtins.bool: ...
|
|
1308
|
+
def ClearField(self, field_name: typing.Literal["error", b"error", "message", b"message", "platform_audio", b"platform_audio"]) -> None: ...
|
|
1309
|
+
def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.Literal["platform_audio", "error"] | None: ...
|
|
1310
|
+
|
|
1311
|
+
global___NewPlatformAudioResponse = NewPlatformAudioResponse
|
|
1312
|
+
|
|
1313
|
+
@typing.final
|
|
1314
|
+
class GetAudioDevicesRequest(google.protobuf.message.Message):
|
|
1315
|
+
"""Get available audio devices.
|
|
1316
|
+
|
|
1317
|
+
Returns lists of available recording (microphone) and playout (speaker) devices.
|
|
1318
|
+
|
|
1319
|
+
# Platform Notes
|
|
1320
|
+
|
|
1321
|
+
- Desktop (Windows/macOS/Linux): Returns all available devices with names and GUIDs.
|
|
1322
|
+
- Mobile (iOS/Android): Returns only one "default" device with empty name and GUID.
|
|
1323
|
+
Device enumeration is not meaningful on mobile - use for device count only.
|
|
1324
|
+
"""
|
|
1325
|
+
|
|
1326
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1327
|
+
|
|
1328
|
+
PLATFORM_AUDIO_HANDLE_FIELD_NUMBER: builtins.int
|
|
1329
|
+
platform_audio_handle: builtins.int
|
|
1330
|
+
"""The PlatformAudio handle."""
|
|
1331
|
+
def __init__(
|
|
1332
|
+
self,
|
|
1333
|
+
*,
|
|
1334
|
+
platform_audio_handle: builtins.int | None = ...,
|
|
1335
|
+
) -> None: ...
|
|
1336
|
+
def HasField(self, field_name: typing.Literal["platform_audio_handle", b"platform_audio_handle"]) -> builtins.bool: ...
|
|
1337
|
+
def ClearField(self, field_name: typing.Literal["platform_audio_handle", b"platform_audio_handle"]) -> None: ...
|
|
1338
|
+
|
|
1339
|
+
global___GetAudioDevicesRequest = GetAudioDevicesRequest
|
|
1340
|
+
|
|
1341
|
+
@typing.final
|
|
1342
|
+
class GetAudioDevicesResponse(google.protobuf.message.Message):
|
|
1343
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1344
|
+
|
|
1345
|
+
PLAYOUT_DEVICES_FIELD_NUMBER: builtins.int
|
|
1346
|
+
RECORDING_DEVICES_FIELD_NUMBER: builtins.int
|
|
1347
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
1348
|
+
error: builtins.str
|
|
1349
|
+
"""Error message if enumeration failed, empty/absent on success."""
|
|
1350
|
+
@property
|
|
1351
|
+
def playout_devices(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AudioDeviceInfo]:
|
|
1352
|
+
"""Available playout devices (speakers/headphones)."""
|
|
1353
|
+
|
|
1354
|
+
@property
|
|
1355
|
+
def recording_devices(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AudioDeviceInfo]:
|
|
1356
|
+
"""Available recording devices (microphones)."""
|
|
1357
|
+
|
|
1358
|
+
def __init__(
|
|
1359
|
+
self,
|
|
1360
|
+
*,
|
|
1361
|
+
playout_devices: collections.abc.Iterable[global___AudioDeviceInfo] | None = ...,
|
|
1362
|
+
recording_devices: collections.abc.Iterable[global___AudioDeviceInfo] | None = ...,
|
|
1363
|
+
error: builtins.str | None = ...,
|
|
1364
|
+
) -> None: ...
|
|
1365
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
1366
|
+
def ClearField(self, field_name: typing.Literal["error", b"error", "playout_devices", b"playout_devices", "recording_devices", b"recording_devices"]) -> None: ...
|
|
1367
|
+
|
|
1368
|
+
global___GetAudioDevicesResponse = GetAudioDevicesResponse
|
|
1369
|
+
|
|
1370
|
+
@typing.final
|
|
1371
|
+
class SetRecordingDeviceRequest(google.protobuf.message.Message):
|
|
1372
|
+
"""Set the recording device (microphone).
|
|
1373
|
+
|
|
1374
|
+
Call this before creating audio tracks to select which microphone to use.
|
|
1375
|
+
Use the GUID from AudioDeviceInfo for stable device selection across hot-plug events.
|
|
1376
|
+
|
|
1377
|
+
# Platform Notes
|
|
1378
|
+
|
|
1379
|
+
- Desktop: Works as expected - selects from enumerated devices.
|
|
1380
|
+
- Mobile (iOS/Android): No-op. Mobile platforms handle microphone selection at the
|
|
1381
|
+
system level. This will succeed but has no effect. Skip calling on mobile.
|
|
1382
|
+
"""
|
|
1383
|
+
|
|
1384
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1385
|
+
|
|
1386
|
+
PLATFORM_AUDIO_HANDLE_FIELD_NUMBER: builtins.int
|
|
1387
|
+
DEVICE_ID_FIELD_NUMBER: builtins.int
|
|
1388
|
+
platform_audio_handle: builtins.int
|
|
1389
|
+
"""The PlatformAudio handle."""
|
|
1390
|
+
device_id: builtins.str
|
|
1391
|
+
"""Device GUID from AudioDeviceInfo.guid - stable across device additions/removals."""
|
|
1392
|
+
def __init__(
|
|
1393
|
+
self,
|
|
1394
|
+
*,
|
|
1395
|
+
platform_audio_handle: builtins.int | None = ...,
|
|
1396
|
+
device_id: builtins.str | None = ...,
|
|
1397
|
+
) -> None: ...
|
|
1398
|
+
def HasField(self, field_name: typing.Literal["device_id", b"device_id", "platform_audio_handle", b"platform_audio_handle"]) -> builtins.bool: ...
|
|
1399
|
+
def ClearField(self, field_name: typing.Literal["device_id", b"device_id", "platform_audio_handle", b"platform_audio_handle"]) -> None: ...
|
|
1400
|
+
|
|
1401
|
+
global___SetRecordingDeviceRequest = SetRecordingDeviceRequest
|
|
1402
|
+
|
|
1403
|
+
@typing.final
|
|
1404
|
+
class SetRecordingDeviceResponse(google.protobuf.message.Message):
|
|
1405
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1406
|
+
|
|
1407
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
1408
|
+
error: builtins.str
|
|
1409
|
+
"""Error message if the operation failed.
|
|
1410
|
+
Empty/absent on success (including no-op success on mobile).
|
|
1411
|
+
"""
|
|
1412
|
+
def __init__(
|
|
1413
|
+
self,
|
|
1414
|
+
*,
|
|
1415
|
+
error: builtins.str | None = ...,
|
|
1416
|
+
) -> None: ...
|
|
1417
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
1418
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
1419
|
+
|
|
1420
|
+
global___SetRecordingDeviceResponse = SetRecordingDeviceResponse
|
|
1421
|
+
|
|
1422
|
+
@typing.final
|
|
1423
|
+
class SetPlayoutDeviceRequest(google.protobuf.message.Message):
|
|
1424
|
+
"""Set the playout device (speaker/headphones).
|
|
1425
|
+
|
|
1426
|
+
Call this before connecting to select which speaker to use for audio output.
|
|
1427
|
+
Use the GUID from AudioDeviceInfo for stable device selection across hot-plug events.
|
|
1428
|
+
|
|
1429
|
+
# Platform Notes
|
|
1430
|
+
|
|
1431
|
+
- Desktop: Works as expected - selects from enumerated devices.
|
|
1432
|
+
- Mobile (iOS/Android): No-op. Mobile platforms handle audio routing at the system level.
|
|
1433
|
+
This will succeed but has no effect. For audio routing on mobile:
|
|
1434
|
+
- iOS: Use AVAudioSession to control speaker/earpiece/Bluetooth routing
|
|
1435
|
+
- Android: Use AudioManager.setSpeakerphoneOn() to switch outputs
|
|
1436
|
+
"""
|
|
1437
|
+
|
|
1438
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1439
|
+
|
|
1440
|
+
PLATFORM_AUDIO_HANDLE_FIELD_NUMBER: builtins.int
|
|
1441
|
+
DEVICE_ID_FIELD_NUMBER: builtins.int
|
|
1442
|
+
platform_audio_handle: builtins.int
|
|
1443
|
+
"""The PlatformAudio handle."""
|
|
1444
|
+
device_id: builtins.str
|
|
1445
|
+
"""Device GUID from AudioDeviceInfo.guid - stable across device additions/removals."""
|
|
1446
|
+
def __init__(
|
|
1447
|
+
self,
|
|
1448
|
+
*,
|
|
1449
|
+
platform_audio_handle: builtins.int | None = ...,
|
|
1450
|
+
device_id: builtins.str | None = ...,
|
|
1451
|
+
) -> None: ...
|
|
1452
|
+
def HasField(self, field_name: typing.Literal["device_id", b"device_id", "platform_audio_handle", b"platform_audio_handle"]) -> builtins.bool: ...
|
|
1453
|
+
def ClearField(self, field_name: typing.Literal["device_id", b"device_id", "platform_audio_handle", b"platform_audio_handle"]) -> None: ...
|
|
1454
|
+
|
|
1455
|
+
global___SetPlayoutDeviceRequest = SetPlayoutDeviceRequest
|
|
1456
|
+
|
|
1457
|
+
@typing.final
|
|
1458
|
+
class SetPlayoutDeviceResponse(google.protobuf.message.Message):
|
|
1459
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1460
|
+
|
|
1461
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
1462
|
+
error: builtins.str
|
|
1463
|
+
"""Error message if the operation failed.
|
|
1464
|
+
Empty/absent on success (including no-op success on mobile).
|
|
1465
|
+
"""
|
|
1466
|
+
def __init__(
|
|
1467
|
+
self,
|
|
1468
|
+
*,
|
|
1469
|
+
error: builtins.str | None = ...,
|
|
1470
|
+
) -> None: ...
|
|
1471
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
1472
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
1473
|
+
|
|
1474
|
+
global___SetPlayoutDeviceResponse = SetPlayoutDeviceResponse
|
|
1475
|
+
|
|
1476
|
+
@typing.final
|
|
1477
|
+
class StartRecordingRequest(google.protobuf.message.Message):
|
|
1478
|
+
"""Start recording from the microphone.
|
|
1479
|
+
|
|
1480
|
+
Recording is started automatically when PlatformAudio is created.
|
|
1481
|
+
Use this to resume recording after calling StopRecording.
|
|
1482
|
+
This also turns on the system's recording privacy indicator.
|
|
1483
|
+
"""
|
|
1484
|
+
|
|
1485
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1486
|
+
|
|
1487
|
+
PLATFORM_AUDIO_HANDLE_FIELD_NUMBER: builtins.int
|
|
1488
|
+
platform_audio_handle: builtins.int
|
|
1489
|
+
"""The PlatformAudio handle."""
|
|
1490
|
+
def __init__(
|
|
1491
|
+
self,
|
|
1492
|
+
*,
|
|
1493
|
+
platform_audio_handle: builtins.int | None = ...,
|
|
1494
|
+
) -> None: ...
|
|
1495
|
+
def HasField(self, field_name: typing.Literal["platform_audio_handle", b"platform_audio_handle"]) -> builtins.bool: ...
|
|
1496
|
+
def ClearField(self, field_name: typing.Literal["platform_audio_handle", b"platform_audio_handle"]) -> None: ...
|
|
1497
|
+
|
|
1498
|
+
global___StartRecordingRequest = StartRecordingRequest
|
|
1499
|
+
|
|
1500
|
+
@typing.final
|
|
1501
|
+
class StartRecordingResponse(google.protobuf.message.Message):
|
|
1502
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1503
|
+
|
|
1504
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
1505
|
+
error: builtins.str
|
|
1506
|
+
"""Error message if the operation failed.
|
|
1507
|
+
Empty/absent on success.
|
|
1508
|
+
"""
|
|
1509
|
+
def __init__(
|
|
1510
|
+
self,
|
|
1511
|
+
*,
|
|
1512
|
+
error: builtins.str | None = ...,
|
|
1513
|
+
) -> None: ...
|
|
1514
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
1515
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
1516
|
+
|
|
1517
|
+
global___StartRecordingResponse = StartRecordingResponse
|
|
1518
|
+
|
|
1519
|
+
@typing.final
|
|
1520
|
+
class StopRecordingRequest(google.protobuf.message.Message):
|
|
1521
|
+
"""Stop recording from the microphone.
|
|
1522
|
+
|
|
1523
|
+
Use this to temporarily stop recording without disposing PlatformAudio.
|
|
1524
|
+
This will turn off the system's recording privacy indicator (e.g., on macOS/iOS).
|
|
1525
|
+
Call StartRecording to resume recording.
|
|
1526
|
+
"""
|
|
1527
|
+
|
|
1528
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1529
|
+
|
|
1530
|
+
PLATFORM_AUDIO_HANDLE_FIELD_NUMBER: builtins.int
|
|
1531
|
+
platform_audio_handle: builtins.int
|
|
1532
|
+
"""The PlatformAudio handle."""
|
|
1533
|
+
def __init__(
|
|
1534
|
+
self,
|
|
1535
|
+
*,
|
|
1536
|
+
platform_audio_handle: builtins.int | None = ...,
|
|
1537
|
+
) -> None: ...
|
|
1538
|
+
def HasField(self, field_name: typing.Literal["platform_audio_handle", b"platform_audio_handle"]) -> builtins.bool: ...
|
|
1539
|
+
def ClearField(self, field_name: typing.Literal["platform_audio_handle", b"platform_audio_handle"]) -> None: ...
|
|
1540
|
+
|
|
1541
|
+
global___StopRecordingRequest = StopRecordingRequest
|
|
1542
|
+
|
|
1543
|
+
@typing.final
|
|
1544
|
+
class StopRecordingResponse(google.protobuf.message.Message):
|
|
1545
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
1546
|
+
|
|
1547
|
+
ERROR_FIELD_NUMBER: builtins.int
|
|
1548
|
+
error: builtins.str
|
|
1549
|
+
"""Error message if the operation failed.
|
|
1550
|
+
Empty/absent on success.
|
|
1551
|
+
"""
|
|
1552
|
+
def __init__(
|
|
1553
|
+
self,
|
|
1554
|
+
*,
|
|
1555
|
+
error: builtins.str | None = ...,
|
|
1556
|
+
) -> None: ...
|
|
1557
|
+
def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
|
|
1558
|
+
def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...
|
|
1559
|
+
|
|
1560
|
+
global___StopRecordingResponse = StopRecordingResponse
|