|
|
hace 1 mes | |
|---|---|---|
| .. | ||
| src | hace 1 mes | |
| COPYING | hace 1 mes | |
| README.md | hace 1 mes | |
| UPSTREAM_VERSION.txt | hace 1 mes | |
| library.json | hace 1 mes | |
Vendored verbatim from toots/shine at commit
ab5e3526 (2023-01-01). See UPSTREAM_VERSION.txt.
Treat this as third party, the same way lib/ST7305_U8g2/ is treated: fix bugs
upstream-style and keep local changes minimal and commented. There are
currently no local changes — src/ is a straight copy of upstream's
src/lib/.
The ESP32-S3 has no hardware audio encoder, and raw 16-bit PCM from the ES7210 is 32 kB/s — about four minutes into the whole PSRAM heap. Shine is fixed-point and skips psychoacoustic analysis entirely, which is what makes real-time encoding possible on this part at all. It is the encoder the ESP32 audio community has settled on for exactly this reason.
Only the parts of upstream needed to build the library are copied: the autotools
scripts, the JS/Android bindings and the command-line front end are all left
behind. Shine needs no generated config.h, so it compiles as-is.
Upstream supports MPEG-2 LSF, so 16 kHz is a valid sample rate (tables.c
lists 16000 under MPEG-II). Some older forks are MPEG-1 only, which is where the
widely repeated "shine cannot go below 32 kHz" claim comes from. It does not
apply to this copy.
Shine is LGPL-2.1, which is more restrictive than everything else in this
repository. Statically linked into a firmware image, the LGPL's relinking
obligation is only really satisfiable by publishing the object files or the
source. That is not a problem for a personal device whose source is already
public, but it is worth knowing before this firmware is distributed as a binary.
COPYING is upstream's licence text, unmodified.