-
Notifications
You must be signed in to change notification settings - Fork 8
/
video_quality.go
57 lines (51 loc) · 1.1 KB
/
video_quality.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package camera
type VideoQuality uint8
const (
VideoQualityNormal VideoQuality = iota
VideoQualityGood
VideoQualityBest
VideoQualityCount
)
// String returns the video quality as a string.
func (vq VideoQuality) String() string {
switch vq {
case VideoQualityNormal:
return "Normal"
case VideoQualityGood:
return "Good"
case VideoQualityBest:
return "Best"
default:
return "Invalid"
}
}
// ToRate returns the video quality as a rate (in megabits per second).
func (vq VideoQuality) ToRate() float32 {
switch vq {
case VideoQualityNormal:
return 2.4
case VideoQualityGood:
return 3.4
case VideoQualityBest:
return 6.0
default:
return 0.0
}
}
// VideoQualityFromRate returns the video quality from a rate (in megabits per second).
func VideoQualityFromRate(rate float32) VideoQuality {
switch rate {
case 2.4:
return VideoQualityNormal
case 3.4:
return VideoQualityGood
case 6.0:
return VideoQualityBest
default:
return VideoQualityCount // invalid
}
}
// Valid returns true if the video quality is valid.
func (vq VideoQuality) Valid() bool {
return vq < VideoQualityCount
}