Commit Briefs

035ab79449 Oliver Lowe

scte35: early return (main)

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


Branches

Tags

Tree

.gitignorecommits | blame
LICENSEcommits | blame
README.mdcommits | blame
cair/
cmcd/
cmd/
go.modcommits | blame
internal/
m3u8/
mpegts/
pcap/
rtp/
scte35/
sdp/
wav/

README.md

[![pkgsite](https://pkg.go.dev/badge/github.com/untangledco/streaming)](https://pkg.go.dev/github.com/untangledco/streaming)
[![0 dependencies!](https://www.olowe.co/0.svg)](https://0dependencies.dev)

This repository contains packages for developing media streaming systems in Go.
Watch it being developed live!

- [twitch.tv/untangledco]
- [youtube.com/@untangledco]

We use these packages to self-host the livestream at [olowe.co/live].

[twitch.tv/untangledco]: https://twitch.tv/untangledco
[youtube.com/@untangledco]: https://www.youtube.com/@untangledco
[olowe.co/live]: https://olowe.co/live

## Contributing

### Stuff to do

Larger, fleshed-out tasks are managed in
[issues](https://github.com/untangledco/streaming/issues).

There are `TODO` notes in the source code, too.
[godoc] provides a graphic interface to view these
with the `-notes` flag:

	godoc -notes TODO

Of course `grep` works too:

	git grep -n TODO

[godoc]: https://pkg.go.dev/golang.org/x/tools/cmd/godoc

### Patches

Patches are preferred via email so that we're not too locked in to GitHub.
Post them to the mailing list
[~otl/untangledco@lists.sr.ht] ([archives]).
or to [Oliver Lowe].
See [git-send-email.io] if you're unfamiliar with the workflow.

	git config sendemail.to '~otl/untangledco@lists.sr.ht'

We also accept changes via [pull request].

### Commit messages

Commit messages follow the same format used by the [Go] project (and others).
The commit subject starts with the affected package name then a brief description of the change.
The body may contain an explanation of the change and why it was made.
For example:

	sdp: store attributes as key-value pairs

	This matches what the spec allows, and lets users not worry about
	encoding.

[archives]: https://lists.sr.ht/~otl/untangledco
[~otl/untangledco@lists.sr.ht]: mailto:~otl/untangledco@lists.sr.ht
[git-send-email.io]: https://git-send-email.io
[pull request]: https://github.com/untangledco/streaming/pulls

### Code review

We try to make all code feel familiar to Go programmers
so that it's easier for others to learn from and contribute to in the
future.

In general we follow the guidelines laid out in the following articles:

- [Effective Go]
- [Go Code Review Comments]

Don't worry if you're asked about changing things around!
If there are trivial changes, we may make the changes ourselves.
In this case you still retain all authorship and copyright over your
submission.

If you've read this far and want to join in but feel a little unsure;
I know *exactly* how you feel.
Please feel free to email [Oliver Lowe] and maybe I can help out :)

[Effective Go]: https://go.dev/doc/effective_go
[Go Code Review Comments]: https://go.dev/wiki/CodeReviewComments
[Go]: https://go.dev/doc/contribute#commit_messages
[Oliver Lowe]: mailto:o@olowe.co

## License

Unless otherwise noted, this sotfware is licensed under the ISC License.
See LICENSE.