Files
github-actions[bot] 5c97379765 sunnypilot v2026.003.000 release
date: 2026-08-01T16:05:18
master commit: 3a05c03079d796f533f342489b3f681cfd21f98d
2026-08-01 16:09:01 +08:00

38 lines
1.2 KiB
Python

import dataclasses
from libdatachannel import Description
@dataclasses.dataclass
class StreamingMediaInfo:
n_expected_camera_tracks: int
expected_audio_track: bool
incoming_audio_track: bool
incoming_datachannel: bool
def parse_info_from_offer(sdp: str) -> StreamingMediaInfo:
"""
helper function to parse info about outgoing and incoming streams from an offer sdp
"""
desc = Description(sdp, Description.Type.Offer)
n_video = 0
expected_audio_track = False
incoming_audio_track = False
incoming_datachannel = desc.has_application()
for i in range(desc.media_count()):
media = desc.media(i)
if media is None:
continue
direction = media.direction()
if media.type() == "video" and direction in (Description.Direction.RecvOnly, Description.Direction.SendRecv):
n_video += 1
elif media.type() == "audio":
if direction in (Description.Direction.RecvOnly, Description.Direction.SendRecv):
expected_audio_track = True
if direction in (Description.Direction.SendOnly, Description.Direction.SendRecv):
incoming_audio_track = True
return StreamingMediaInfo(n_video, expected_audio_track, incoming_audio_track, incoming_datachannel)