github.com/pion/webrtc/v4@v4.0.1/pkg/media/samplebuilder/sampleSequenceLocation.go (about) 1 // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly> 2 // SPDX-License-Identifier: MIT 3 4 // Package samplebuilder provides functionality to reconstruct media frames from RTP packets. 5 package samplebuilder 6 7 type sampleSequenceLocation struct { 8 // head is the first packet in a sequence 9 head uint16 10 // tail is always set to one after the final sequence number, 11 // so if head == tail then the sequence is empty 12 tail uint16 13 } 14 15 func (l sampleSequenceLocation) empty() bool { 16 return l.head == l.tail 17 } 18 19 func (l sampleSequenceLocation) hasData() bool { 20 return l.head != l.tail 21 } 22 23 func (l sampleSequenceLocation) count() uint16 { 24 return seqnumDistance(l.head, l.tail) 25 } 26 27 const ( 28 slCompareVoid = iota 29 slCompareBefore 30 slCompareInside 31 slCompareAfter 32 ) 33 34 func (l sampleSequenceLocation) compare(pos uint16) int { 35 if l.head == l.tail { 36 return slCompareVoid 37 } 38 39 if l.head < l.tail { 40 if l.head <= pos && pos < l.tail { 41 return slCompareInside 42 } 43 } else { 44 if l.head <= pos || pos < l.tail { 45 return slCompareInside 46 } 47 } 48 49 if l.head-pos <= pos-l.tail { 50 return slCompareBefore 51 } 52 return slCompareAfter 53 }