Commit Graph

24 Commits (main)

Author SHA1 Message Date
_ 84dc1a983f HTTP playback works, for Ogg/Vorbis only for now
This is really cool. Since I own the whole I/O stack, I could also make it run
over QUIC or some compressed format or anything I like.

And I can probably sniff the first packet by hand to suport both Vorbis and
Opus. That would cover most of my music library.
2021-11-14 19:31:54 +00:00
_ 99b3bfe231 ♻️ refactor 2021-11-14 18:12:07 +00:00
_ 57c53a31dd passing `cargo check` 2021-11-14 18:03:37 +00:00
_ 086b2942fa 🚧 wip: http 2021-11-14 11:59:14 -06:00
_ 8e8b2ef17d 🚧 wip: demuxing over HTTP, for Ogg formats only 2021-11-13 21:40:03 -06:00
_ 10d3cd62c5 GUI is very much WIP but it does work 2021-11-13 23:45:26 +00:00
_ f2484dda91 🚧 wip: FLTK GUI demo 2021-11-13 19:51:03 +00:00
_ 70e5182dfc ♻️ refactor: extract DecoderThread and clean up identifiers 2021-11-13 19:45:16 +00:00
_ f7c38d88de ♻️ refactor: extract AudioOutput 2021-11-13 19:34:41 +00:00
_ 3b45f4309f 👕 refactor: removed the memcpy by moving it to a place where I had to memcpy anyway 2021-11-13 17:51:06 +00:00
_ f6b85a24da 👕 refactor: move SharedState to main.rs 2021-11-13 17:43:25 +00:00
_ be3c76d9d8 👕 refactor: hide ffmpeg audio frame from public decoder API 2021-11-13 17:37:55 +00:00
_ 68461866d8 🐛 bug: popping is gone
It was a combination of two bugs:

1. For some reason, libswresample sometimes returns more data than you need.
Like, it'll return X samples but _more than_ 8X bytes, for f32 stereo.

2. I wasn't supposed to be calling `flush`. I should have been calling
`run` with a dummy frame. This isn't intuitive to me, and it required
me to construct a dummy frame and keep it around in my code. I think
this is pretty inelegant. And looking at the ffmpeg code, I think it's
a flaw in the API design of the `ffmpeg_next` crate. I may ask them
about it in the future.
2021-11-13 11:23:10 -06:00
_ 9c3368f28b 🚧 wip: I might have fixed the popping.
I was not supposed to be calling `flush` in the first place
2021-11-13 11:05:32 -06:00
_ e6c157b556 👕 refactor: took apart the decoder and put it back together as an iterator
popping is still there
2021-11-13 10:31:58 -06:00
_ 9292f0767e 🚧 still trying to debug the popping. I've narrowed it down. 2021-11-13 02:42:31 +00:00
_ 3f5be609ea it's good and seamless except for that dang popping! 2021-11-13 01:11:11 +00:00
_ 336c94e39c 🐛 bug: yep sure enough I wasn't flushing the resampler properly.
I feel like I've done this _exact_ project 3 times now
2021-11-13 00:34:02 +00:00
_ 096b5aeb65 👕 refactor: use decoder module 2021-11-12 23:56:38 +00:00
_ 722821e2c4 👕 refactor: extract decoder module 2021-11-12 23:51:56 +00:00
_ a98fea30b4 still some bugs 2021-11-12 23:34:18 +00:00
_ ceb06dad16 fix some issues 2021-11-12 15:54:24 -06:00
_ b11c4ac0b8 playing audio 2021-11-12 14:33:38 -06:00
_ 15980d347c 🐣 2021-11-12 12:14:15 -06:00