From 418000aee38330fa6bb2dafa7288b4a5fa879429 Mon Sep 17 00:00:00 2001 From: ed Date: Wed, 19 Apr 2023 21:46:33 +0000 Subject: [PATCH] explain tus incompatibility + update docs --- README.md | 10 ++++++---- docs/devnotes.md | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dcbfcfab..d285f3c9 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ turn almost any device into a file server with resumable uploads/downloads using * [recovering from crashes](#recovering-from-crashes) * [client crashes](#client-crashes) * [frefox wsod](#frefox-wsod) - firefox 87 can crash during uploads -* [HTTP API](#HTTP-API) - see [devnotes](#./docs/devnotes.md#http-api) +* [HTTP API](#HTTP-API) - see [devnotes](./docs/devnotes.md#http-api) * [dependencies](#dependencies) - mandatory deps * [optional dependencies](#optional-dependencies) - install these to enable bonus features * [optional gpl stuff](#optional-gpl-stuff) @@ -664,9 +664,9 @@ plays almost every audio format there is (if the server has FFmpeg installed fo the following audio formats are usually always playable, even without FFmpeg: `aac|flac|m4a|mp3|ogg|opus|wav` some hilights: -* OS integration; control playback from your phone's lockscreen +* OS integration; control playback from your phone's lockscreen ([windows](https://user-images.githubusercontent.com/241032/233213022-298a98ba-721a-4cf1-a3d4-f62634bc53d5.png) // [iOS](https://user-images.githubusercontent.com/241032/142711926-0700be6c-3e31-47b3-9928-53722221f722.png) // [android](https://user-images.githubusercontent.com/241032/233212311-a7368590-08c7-4f9f-a1af-48ccf3f36fad.png)) * shows the audio waveform in the seekbar -* not perfectly gapless but can get really close (see settings below); good enough to enjoy gapless albums as intended +* not perfectly gapless but can get really close (see settings + eq below); good enough to enjoy gapless albums as intended click the `play` link next to an audio file, or copy the link target to [share it](https://a.ocv.me/pub/demo/music/Ubiktune%20-%20SOUNDSHOCK%202%20-%20FM%20FUNK%20TERRROR!!/#af-1fbfba61&t=18) (optionally with a timestamp to start playing from, like that example does) @@ -698,6 +698,8 @@ bass boosted can also boost the volume in general, or increase/decrease stereo width (like [crossfeed](https://www.foobar2000.org/components/view/foo_dsp_meiercf) just worse) +has the convenient side-effect of reducing the pause between songs, so gapless albums play better with the eq enabled (just make it flat) + ## markdown viewer @@ -1538,7 +1540,7 @@ however you can hit `F12` in the up2k tab and use the devtools to see how far yo # HTTP API -see [devnotes](#./docs/devnotes.md#http-api) +see [devnotes](./docs/devnotes.md#http-api) # dependencies diff --git a/docs/devnotes.md b/docs/devnotes.md index 5582216b..8920ddb4 100644 --- a/docs/devnotes.md +++ b/docs/devnotes.md @@ -4,6 +4,7 @@ * [future plans](#future-plans) - some improvement ideas * [design](#design) * [up2k](#up2k) - quick outline of the up2k protocol + * [why not tus](#why-not-tus) - I didn't know about [tus](https://tus.io/) * [why chunk-hashes](#why-chunk-hashes) - a single sha512 would be better, right? * [http api](#http-api) * [read](#read) @@ -66,6 +67,13 @@ regarding the frequent server log message during uploads; * on this http connection, `2.77 GiB` transferred, `102.9 MiB/s` average, `948` chunks handled * client says `4` uploads OK, `0` failed, `3` busy, `1` queued, `10042 MiB` total size, `7198 MiB` and `00:01:09` left +## why not tus + +I didn't know about [tus](https://tus.io/) when I made this, but: +* up2k has the advantage that it supports parallel uploading of non-contiguous chunks straight into the final file -- [tus does a merge at the end](https://tus.io/protocols/resumable-upload.html#concatenation) which is slow and taxing on the server HDD / filesystem (unless i'm misunderstanding) +* up2k has the slight disadvantage of requiring the client to hash the entire file before an upload can begin, but this has the benefit of immediately skipping duplicate files + * and the hashing happens in a separate thread anyways so it's usually not a bottleneck + ## why chunk-hashes a single sha512 would be better, right?