Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ jobs:
- name: Sync environment & install dev extras
run: |
uv sync --all-packages --all-extras --dev --all-groups
uv remove twirp@git+https://github.com/tbarbugli/twirpy --group dev || true
uv add twirp || true

- name: Build core distributions
run: |
Expand Down
30 changes: 13 additions & 17 deletions generate_webrtc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,25 +43,21 @@ fi
echo "Installing Python dependencies..."
uv sync --all-extras --dev --all-packages

# Install Twirp Python generator if not available
if ! command -v protoc-gen-twirpy &> /dev/null; then
echo "Installing protoc-gen-twirpy..."

# Ensure Go tools are available for Twirp
if ! command -v go &> /dev/null; then
echo "go is not installed. Please install it to generate Twirp client code."
exit 1
fi

go install github.com/verloop/twirpy/protoc-gen-twirpy@latest

# Ensure that Go path is in path otherwise protoc will not
if ! echo "$PATH" | grep -q "$(go env GOPATH)/bin"; then
echo "$(go env GOPATH)/bin is not in PATH"
exit 1
fi
# Ensure Go tools are available for Twirp
if ! command -v go &> /dev/null; then
echo "go is not installed. Please install it to generate Twirp client code."
exit 1
fi

# Ensure that Go path is in path otherwise protoc will not
if ! echo "$PATH" | grep -q "$(go env GOPATH)/bin"; then
echo "$(go env GOPATH)/bin is not in PATH"
exit 1
fi

echo "Installing protoc-gen-twirpy..."
go install github.com/tbarbugli/twirpy/protoc-gen-twirpy@423caa6

# Get the path to protoc
PROTOC_PATH=$(command -v protoc)
if [ -z "$PROTOC_PATH" ]; then
Expand Down
96 changes: 48 additions & 48 deletions getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.py

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,7 @@ class JoinRequest(google.protobuf.message.Message):

TOKEN_FIELD_NUMBER: builtins.int
SESSION_ID_FIELD_NUMBER: builtins.int
UNIFIED_SESSION_ID_FIELD_NUMBER: builtins.int
SUBSCRIBER_SDP_FIELD_NUMBER: builtins.int
PUBLISHER_SDP_FIELD_NUMBER: builtins.int
CLIENT_DETAILS_FIELD_NUMBER: builtins.int
Expand All @@ -698,8 +699,14 @@ class JoinRequest(google.protobuf.message.Message):
PREFERRED_PUBLISH_OPTIONS_FIELD_NUMBER: builtins.int
PREFERRED_SUBSCRIBE_OPTIONS_FIELD_NUMBER: builtins.int
CAPABILITIES_FIELD_NUMBER: builtins.int
SOURCE_FIELD_NUMBER: builtins.int
token: builtins.str
session_id: builtins.str
unified_session_id: builtins.str
"""user_session id can change during reconnects, this helps us to
identify the user across reconnects and should remain consistent until the user explicitly
disconnects, is kicked or the call is ended.
"""
subscriber_sdp: builtins.str
"""dumb SDP that allow us to extract subscriber's decode codecs"""
publisher_sdp: builtins.str
Expand Down Expand Up @@ -739,11 +746,13 @@ class JoinRequest(google.protobuf.message.Message):
) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[
video.sfu.models.models_pb2.ClientCapability.ValueType
]: ...
source: video.sfu.models.models_pb2.ParticipantSource.ValueType
def __init__(
self,
*,
token: builtins.str = ...,
session_id: builtins.str = ...,
unified_session_id: builtins.str = ...,
subscriber_sdp: builtins.str = ...,
publisher_sdp: builtins.str = ...,
client_details: video.sfu.models.models_pb2.ClientDetails | None = ...,
Expand All @@ -762,6 +771,7 @@ class JoinRequest(google.protobuf.message.Message):
video.sfu.models.models_pb2.ClientCapability.ValueType
]
| None = ...,
source: video.sfu.models.models_pb2.ParticipantSource.ValueType = ...,
) -> None: ...
def HasField(
self,
Expand Down Expand Up @@ -795,10 +805,14 @@ class JoinRequest(google.protobuf.message.Message):
b"reconnect_details",
"session_id",
b"session_id",
"source",
b"source",
"subscriber_sdp",
b"subscriber_sdp",
"token",
b"token",
"unified_session_id",
b"unified_session_id",
],
) -> None: ...

Expand Down
150 changes: 78 additions & 72 deletions getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.py

Large diffs are not rendered by default.

97 changes: 97 additions & 0 deletions getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,63 @@ TRACK_TYPE_SCREEN_SHARE: TrackType.ValueType # 3
TRACK_TYPE_SCREEN_SHARE_AUDIO: TrackType.ValueType # 4
global___TrackType = TrackType

class _ParticipantSource:
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType

class _ParticipantSourceEnumTypeWrapper(
google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[
_ParticipantSource.ValueType
],
builtins.type,
):
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
PARTICIPANT_SOURCE_WEBRTC_UNSPECIFIED: _ParticipantSource.ValueType # 0
PARTICIPANT_SOURCE_RTMP: _ParticipantSource.ValueType # 1
PARTICIPANT_SOURCE_WHIP: _ParticipantSource.ValueType # 2
PARTICIPANT_SOURCE_SIP: _ParticipantSource.ValueType # 3
PARTICIPANT_SOURCE_RTSP: _ParticipantSource.ValueType # 4
PARTICIPANT_SOURCE_SRT: _ParticipantSource.ValueType # 5

class ParticipantSource(
_ParticipantSource, metaclass=_ParticipantSourceEnumTypeWrapper
):
"""must be aligned with kit"""

PARTICIPANT_SOURCE_WEBRTC_UNSPECIFIED: ParticipantSource.ValueType # 0
PARTICIPANT_SOURCE_RTMP: ParticipantSource.ValueType # 1
PARTICIPANT_SOURCE_WHIP: ParticipantSource.ValueType # 2
PARTICIPANT_SOURCE_SIP: ParticipantSource.ValueType # 3
PARTICIPANT_SOURCE_RTSP: ParticipantSource.ValueType # 4
PARTICIPANT_SOURCE_SRT: ParticipantSource.ValueType # 5
global___ParticipantSource = ParticipantSource

class _AudioBitrateProfile:
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType

class _AudioBitrateProfileEnumTypeWrapper(
google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[
_AudioBitrateProfile.ValueType
],
builtins.type,
):
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
AUDIO_BITRATE_PROFILE_VOICE_STANDARD_UNSPECIFIED: (
_AudioBitrateProfile.ValueType
) # 0
AUDIO_BITRATE_PROFILE_VOICE_HIGH_QUALITY: _AudioBitrateProfile.ValueType # 1
AUDIO_BITRATE_PROFILE_MUSIC_HIGH_QUALITY: _AudioBitrateProfile.ValueType # 2

class AudioBitrateProfile(
_AudioBitrateProfile, metaclass=_AudioBitrateProfileEnumTypeWrapper
): ...

AUDIO_BITRATE_PROFILE_VOICE_STANDARD_UNSPECIFIED: AudioBitrateProfile.ValueType # 0
AUDIO_BITRATE_PROFILE_VOICE_HIGH_QUALITY: AudioBitrateProfile.ValueType # 1
AUDIO_BITRATE_PROFILE_MUSIC_HIGH_QUALITY: AudioBitrateProfile.ValueType # 2
global___AudioBitrateProfile = AudioBitrateProfile

class _ErrorCode:
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType
Expand Down Expand Up @@ -587,6 +644,7 @@ class Participant(google.protobuf.message.Message):
IMAGE_FIELD_NUMBER: builtins.int
CUSTOM_FIELD_NUMBER: builtins.int
ROLES_FIELD_NUMBER: builtins.int
SOURCE_FIELD_NUMBER: builtins.int
user_id: builtins.str
session_id: builtins.str
@property
Expand All @@ -613,6 +671,7 @@ class Participant(google.protobuf.message.Message):
) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[
builtins.str
]: ...
source: global___ParticipantSource.ValueType
def __init__(
self,
*,
Expand All @@ -630,6 +689,7 @@ class Participant(google.protobuf.message.Message):
image: builtins.str = ...,
custom: google.protobuf.struct_pb2.Struct | None = ...,
roles: collections.abc.Iterable[builtins.str] | None = ...,
source: global___ParticipantSource.ValueType = ...,
) -> None: ...
def HasField(
self,
Expand Down Expand Up @@ -662,6 +722,8 @@ class Participant(google.protobuf.message.Message):
b"roles",
"session_id",
b"session_id",
"source",
b"source",
"track_lookup_prefix",
b"track_lookup_prefix",
"user_id",
Expand Down Expand Up @@ -810,6 +872,7 @@ class PublishOption(google.protobuf.message.Message):
VIDEO_DIMENSION_FIELD_NUMBER: builtins.int
ID_FIELD_NUMBER: builtins.int
USE_SINGLE_LAYER_FIELD_NUMBER: builtins.int
AUDIO_BITRATE_PROFILES_FIELD_NUMBER: builtins.int
track_type: global___TrackType.ValueType
"""The type of the track being published (e.g., video, screenshare)."""
@property
Expand Down Expand Up @@ -860,6 +923,13 @@ class PublishOption(google.protobuf.message.Message):
disabling all lower layers. This applies to simulcast encodings.
For SVC codecs, prefer using the L1T3 (single spatial, 3 temporal layers) mode instead.
"""
@property
def audio_bitrate_profiles(
self,
) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[
global___AudioBitrate
]:
"""Audio bitrate profiles for different audio quality profiles."""
def __init__(
self,
*,
Expand All @@ -872,6 +942,8 @@ class PublishOption(google.protobuf.message.Message):
video_dimension: global___VideoDimension | None = ...,
id: builtins.int = ...,
use_single_layer: builtins.bool = ...,
audio_bitrate_profiles: collections.abc.Iterable[global___AudioBitrate]
| None = ...,
) -> None: ...
def HasField(
self,
Expand All @@ -882,6 +954,8 @@ class PublishOption(google.protobuf.message.Message):
def ClearField(
self,
field_name: typing_extensions.Literal[
"audio_bitrate_profiles",
b"audio_bitrate_profiles",
"bitrate",
b"bitrate",
"codec",
Expand Down Expand Up @@ -977,6 +1051,29 @@ class ICETrickle(google.protobuf.message.Message):

global___ICETrickle = ICETrickle

@typing_extensions.final
class AudioBitrate(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor

PROFILE_FIELD_NUMBER: builtins.int
BITRATE_FIELD_NUMBER: builtins.int
profile: global___AudioBitrateProfile.ValueType
bitrate: builtins.int
def __init__(
self,
*,
profile: global___AudioBitrateProfile.ValueType = ...,
bitrate: builtins.int = ...,
) -> None: ...
def ClearField(
self,
field_name: typing_extensions.Literal[
"bitrate", b"bitrate", "profile", b"profile"
],
) -> None: ...

global___AudioBitrate = AudioBitrate

@typing_extensions.final
class TrackInfo(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading