-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmultistream_application.go
More file actions
34 lines (31 loc) · 1.07 KB
/
multistream_application.go
File metadata and controls
34 lines (31 loc) · 1.07 KB
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
package gopus
// SetApplication updates the encoder application hint.
//
// Valid values are ApplicationVoIP, ApplicationAudio, and ApplicationLowDelay.
func (e *MultistreamEncoder) SetApplication(application Application) error {
if err := validateMutableApplication(e.application, e.encodedOnce, application); err != nil {
return err
}
return e.applyApplication(application)
}
// Application returns the current encoder application hint.
func (e *MultistreamEncoder) Application() Application {
return e.application
}
// applyApplication records the application hint and forwards per-stream policy.
//
// Match libopus multistream OPUS_SET_APPLICATION forwarding semantics while
// preserving bitrate/complexity controls.
func (e *MultistreamEncoder) applyApplication(app Application) error {
settings, err := settingsForApplication(app)
if err != nil {
return err
}
e.application = app
e.enc.SetLowDelay(settings.lowDelay)
e.enc.SetVoIPApplication(settings.voip)
e.enc.SetMode(settings.mode)
e.enc.SetBandwidth(settings.bandwidth)
e.enc.SetSignal(settings.signal)
return nil
}