Commits


internal/sip: extract containsSpace function We'll need it later and we're a few nested for loops and if stmts down so a little cleaner once we do this a few more times.


sip: handle To, From fields in the header with their own type Now we handle the tag header parameter, and all the different forms the values of To and From can have.


sip: validate Via header field on writing requests


sip: write body of request only when it's non-nil duh


internal/sip: correctly format and write requests


internal/sip: initial little testing


Unpublish draft jxs package Not ready... if ever?


mpegts: test for expected PCR base, extension values Parsing the base and extension ticks of the PCR was actually incorrect. Whilst we were consistently storing and decoding values, they were incorrect values. This patch adds tests which concretely exposed the bug spotted by @kevmo314. Thanks again!


fix incorrect pcr base calculation Fixes the base calculation by removing the 7 rightmost reserved and extension bits.


wav: support format extension field It's an optional field, but aucat(1) from OpenBSD creates files with this field populated so I feel like it may not be that obscure in the wild.


add package for WAVE files


m3u8: put hlsserve with all the other commands


delete dummy ptp package We can create it when we want to create it. Think this was accidentally added by me, sorry!


fix: play rate as decimal


Advertise zero dependencies Because it’s a distinguishing feature of the project!


rtp: let test session only accept local connections


scte35: support decoding private commands Resolves: https://github.com/untangledco/streaming/issues/29


rtp: finish header length documentation


pcap: export Encode, Decode functions Use Go's io.Reader and io.Writer so that we don't have to keep everything in memory, and it works in a way that Go programmers are familiar with.


mpegts: let callers handle packet length errors explicitly


m3u8: clarify purpose of some sample playlists Big Buck Bunny is the classic test sample for a lot of video dev work. tos.m3u8 is here because it is a valid playlist containing lots of comments and empty lines. Unusual, but still a valid playlist; hoping it will help catch bugs in our parser's handling of comments and whitespace.


sdp: only apply TTL field to ipv4 connections As per section 5.7 of RFC 8866: "IP6" multicast does not use TTL scoping, and hence the TTL value MUST NOT be present for "IP6" multicast. Amends comment to clarify it only applies to IPv4 packets.


sdp: resolve remaining validation, documentation TODOs No real changes, just notes. Always encode a valid timestamp when session start time is unset but an end time is set. Document the TTL in ConnInfo is a specific property of multicast traffic. No need to impose more structure on session Attributes when the data is pretty free-form anyway (similar to http.Header). Safely round times in session repeat schedules to ensure we never write invalid decimal places.


rtp: correct string values for PCM audio payload types


sdp: use a working live audio stream description for the example