summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/rtcp/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/rtcp/util.go')
-rw-r--r--vendor/github.com/pion/rtcp/util.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/vendor/github.com/pion/rtcp/util.go b/vendor/github.com/pion/rtcp/util.go
new file mode 100644
index 0000000..5702d35
--- /dev/null
+++ b/vendor/github.com/pion/rtcp/util.go
@@ -0,0 +1,38 @@
+package rtcp
+
+// getPadding Returns the padding required to make the length a multiple of 4
+func getPadding(len int) int {
+ if len%4 == 0 {
+ return 0
+ }
+ return 4 - (len % 4)
+}
+
+// setNBitsOfUint16 will truncate the value to size, left-shift to startIndex position and set
+func setNBitsOfUint16(src, size, startIndex, val uint16) (uint16, error) {
+ if startIndex+size > 16 {
+ return 0, errInvalidSizeOrStartIndex
+ }
+
+ // truncate val to size bits
+ val &= (1 << size) - 1
+
+ return src | (val << (16 - size - startIndex)), nil
+}
+
+// appendBit32 will left-shift and append n bits of val
+func appendNBitsToUint32(src, n, val uint32) uint32 {
+ return (src << n) | (val & (0xFFFFFFFF >> (32 - n)))
+}
+
+// getNBit get n bits from 1 byte, begin with a position
+func getNBitsFromByte(b byte, begin, n uint16) uint16 {
+ endShift := 8 - (begin + n)
+ mask := (0xFF >> begin) & uint8(0xFF<<endShift)
+ return uint16(b&mask) >> endShift
+}
+
+// get24BitFromBytes get 24bits from `[3]byte` slice
+func get24BitsFromBytes(b []byte) uint32 {
+ return uint32(b[0])<<16 + uint32(b[1])<<8 + uint32(b[2])
+}