IQ.Pilot Prebuilt Release @ 27f668a
This commit is contained in:
37
iqpilot/system/webrtc/rtc/info.py
Normal file
37
iqpilot/system/webrtc/rtc/info.py
Normal file
@@ -0,0 +1,37 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user