Commit Briefs

02e68a4c76 Oliver Lowe

m3u8: parse segment title from EXTINF (main, tags/v0.0.4)

Resolves: https://github.com/untangledco/streaming/issues/41


a42aeb2b57 Oliver Lowe

readme: note self-hosted livestream pause


c30923a3bd Oliver Lowe

wav: declare header var once

The rest are initialised to zero values so we don't have to do it ourselves.


837319ae0f Oliver Lowe

pcap: let caller decide to buffer writes

There was probably a bug here. Anyway it's less code!


54727822bf Oliver Lowe

mpegts: shorter return

No need to annotate the error; caller knows we're unmarshalling.


abc6381f91 Oliver Lowe

rtp: tidy marshal, unmarshal


3faffc6a91 Oliver Lowe

m3u8: keep Rendition writing validation separate from Encode

Consistent with the rest of playlist fields. While here delete duplicate Map writing function


896f602490 Oliver Lowe

sdp: use encoding.TextMarshaler for Session encoding

fmt.Stringer is not really meant for larger multi-line text. It sucks a bit that we may return an error, but this lets us put some validation logic in; we don't have any validation yet.


035ab79449 Oliver Lowe

scte35: early return

Clearer than keeping most of the code indented


fdd78130c1 Oliver Lowe

m3u8: de-indent variant parsing common path

Return early with guard statements


440f52398d Oliver Lowe

scte35: correctly pack AudioChannel

Couple of problems. First we were unnecessarily masking bits. Secondly we were toggling the wrong bits in the final byte of an encoded audio channel in an AudioDescriptor. Resolves: https://github.com/untangledco/streaming/issues/39


62d865db86 Oliver Lowe

m3u8: de-indent happy key, playlist parse path

Everything else are essentially guard statements


3df4029f13 Oliver Lowe

m3u8: unexport, use consistent timestamp layout (tags/v0.0.3)

The layout is meant to be used internally; the external interface is regular time.Time values.


a5e36fbfb6 Oliver Lowe

m3u8: define segment parsing once

It's a bit of a hack that we read one item too many from the lexer. This change modifies segment parsing by sending the already consumed lexer items and subsequent lexer items back through another channel. Maintaining the original order through a channel means we can parse a segment in a single loop. Much shorter than dealing with the first item and all other items separately. This puts off looking into any redesigns of the lexer. For now...?



4c423c95b5 Oliver Lowe

m3u8: include source of playlist

So we all know where it comes from if we want to get more.


3e2200b9e7 Oliver Lowe

m3u8: parse EXT-X-PROGRAM-DATE-TIME tag


9d0a9c380c Oliver Lowe

m3u8: support parsing EXT-X-MAP tag


a30e111bb1 Oliver Lowe

m3u8: support parsing segment keys


1146e3cfa5 Oliver Lowe

m3u8: add validation to segment parsing tests

Tests fail, but at least we have exposed the bugs


e5a2561859 Oliver Lowe

m3u8: ignore trailing commas, support quoted string attributes

Playlist from https://test-streams.mux.dev/dai-discontinuity-deltatre/manifest.m3u8 containing discontinuities exposed the bugs.


3083e3dd1c Oliver Lowe

m3u8: enable toggling lexer debug output


5b0199e067 Oliver Lowe

m3u8: add higher-level variant test

We weren't really testing whether variants we parse from a playlist were what we expect. References: https://github.com/untangledco/streaming/issues/34


a2109c70b8 Oliver Lowe

m3u8: test more bad resolutions

We don't necessarily need to make it easier to specify Variant test cases, we can pick the already easy-to-test bits of Variant to make better. References: https://github.com/untangledco/streaming/issues/34


18185121cc Oliver Lowe

avhelp: delete (tags/v0.0.2)

The idea was to have a little playground using the packages we developed. But it didn't really turn out to be useful.