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  }