summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/webrtc/v3/sdpsemantics.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/webrtc/v3/sdpsemantics.go')
-rw-r--r--vendor/github.com/pion/webrtc/v3/sdpsemantics.go74
1 files changed, 74 insertions, 0 deletions
diff --git a/vendor/github.com/pion/webrtc/v3/sdpsemantics.go b/vendor/github.com/pion/webrtc/v3/sdpsemantics.go
new file mode 100644
index 0000000..b8d396c
--- /dev/null
+++ b/vendor/github.com/pion/webrtc/v3/sdpsemantics.go
@@ -0,0 +1,74 @@
+package webrtc
+
+import (
+ "encoding/json"
+)
+
+// SDPSemantics determines which style of SDP offers and answers
+// can be used
+type SDPSemantics int
+
+const (
+ // SDPSemanticsUnifiedPlan uses unified-plan offers and answers
+ // (the default in Chrome since M72)
+ // https://tools.ietf.org/html/draft-roach-mmusic-unified-plan-00
+ SDPSemanticsUnifiedPlan SDPSemantics = iota
+
+ // SDPSemanticsPlanB uses plan-b offers and answers
+ // NB: This format should be considered deprecated
+ // https://tools.ietf.org/html/draft-uberti-rtcweb-plan-00
+ SDPSemanticsPlanB
+
+ // SDPSemanticsUnifiedPlanWithFallback prefers unified-plan
+ // offers and answers, but will respond to a plan-b offer
+ // with a plan-b answer
+ SDPSemanticsUnifiedPlanWithFallback
+)
+
+const (
+ sdpSemanticsUnifiedPlanWithFallback = "unified-plan-with-fallback"
+ sdpSemanticsUnifiedPlan = "unified-plan"
+ sdpSemanticsPlanB = "plan-b"
+)
+
+func newSDPSemantics(raw string) SDPSemantics {
+ switch raw {
+ case sdpSemanticsUnifiedPlan:
+ return SDPSemanticsUnifiedPlan
+ case sdpSemanticsPlanB:
+ return SDPSemanticsPlanB
+ case sdpSemanticsUnifiedPlanWithFallback:
+ return SDPSemanticsUnifiedPlanWithFallback
+ default:
+ return SDPSemantics(Unknown)
+ }
+}
+
+func (s SDPSemantics) String() string {
+ switch s {
+ case SDPSemanticsUnifiedPlanWithFallback:
+ return sdpSemanticsUnifiedPlanWithFallback
+ case SDPSemanticsUnifiedPlan:
+ return sdpSemanticsUnifiedPlan
+ case SDPSemanticsPlanB:
+ return sdpSemanticsPlanB
+ default:
+ return ErrUnknownType.Error()
+ }
+}
+
+// UnmarshalJSON parses the JSON-encoded data and stores the result
+func (s *SDPSemantics) UnmarshalJSON(b []byte) error {
+ var val string
+ if err := json.Unmarshal(b, &val); err != nil {
+ return err
+ }
+
+ *s = newSDPSemantics(val)
+ return nil
+}
+
+// MarshalJSON returns the JSON encoding
+func (s SDPSemantics) MarshalJSON() ([]byte, error) {
+ return json.Marshal(s.String())
+}