github.com/livekit/protocol@v1.39.3/observability/roomobs/room.go (about) 1 package roomobs 2 3 import ( 4 "fmt" 5 "strings" 6 "unsafe" 7 8 "github.com/livekit/protocol/livekit" 9 ) 10 11 func PackTrackLayer(x, y uint32) uint32 { 12 return uint32(x<<16 | y) 13 } 14 15 func UnpackTrackLayer(layer uint32) (x, y int) { 16 return int(layer >> 16), int(layer & 0xffff) 17 } 18 19 func PackCountryCode(isoAlpha2 string) uint16 { 20 if len(isoAlpha2) != 2 { 21 return PackCountryCode("??") 22 } 23 return uint16(isoAlpha2[0])<<8 | uint16(isoAlpha2[1]) 24 } 25 26 func UnpackCountryCode(code uint16) (isoAlpha2 string) { 27 b := [2]byte{byte(code >> 8), byte(code)} 28 return unsafe.String(&b[0], 2) 29 } 30 31 func ToClientOS(os string) ClientOS { 32 os = strings.ToLower(os) 33 34 switch os { 35 case "": 36 return ClientOSUndefined 37 case "ios": 38 return ClientOSIos 39 case "android": 40 return ClientOSAndroid 41 case "windows": 42 return ClientOSWindows 43 case "mac", "mac os x", "darwin", "macos": 44 return ClientOSMac 45 case "linux", "chrome os": 46 return ClientOSLinux 47 default: 48 return ClientOSUndefined 49 } 50 } 51 52 func FormatBrowser(clientInfo *livekit.ClientInfo) string { 53 return strings.TrimSpace(fmt.Sprintf("%s %s", clientInfo.GetBrowser(), clientInfo.GetBrowserVersion())) 54 55 } 56 57 func FormatSDKVersion(clientInfo *livekit.ClientInfo) string { 58 return strings.TrimSpace(fmt.Sprintf("%s %s", clientInfo.GetSdk(), clientInfo.GetVersion())) 59 } 60 61 func TrackKindFromProto(p livekit.StreamType) TrackKind { 62 switch p { 63 case livekit.StreamType_UPSTREAM: 64 return TrackKindSub 65 case livekit.StreamType_DOWNSTREAM: 66 return TrackKindPub 67 default: 68 return TrackKindUndefined 69 } 70 } 71 72 func TrackTypeFromProto(p livekit.TrackType) TrackType { 73 switch p { 74 case livekit.TrackType_AUDIO: 75 return TrackTypeAudio 76 case livekit.TrackType_VIDEO: 77 return TrackTypeVideo 78 case livekit.TrackType_DATA: 79 return TrackTypeData 80 default: 81 return TrackTypeUndefined 82 } 83 } 84 85 func TrackSourceFromProto(p livekit.TrackSource) TrackSource { 86 switch p { 87 case livekit.TrackSource_UNKNOWN: 88 return TrackSourceUndefined 89 case livekit.TrackSource_CAMERA: 90 return TrackSourceCamera 91 case livekit.TrackSource_MICROPHONE: 92 return TrackSourceMicrophone 93 case livekit.TrackSource_SCREEN_SHARE: 94 return TrackSourceScreenShare 95 case livekit.TrackSource_SCREEN_SHARE_AUDIO: 96 return TrackSourceScreenShareAudio 97 default: 98 return TrackSourceUndefined 99 } 100 }