9 Commits

Author SHA1 Message Date
Chris Robinson 7a7350af2b Handle LAF file read errors more robustly 2024-08-03 22:43:39 -07:00
Chris Robinson 9e799a1120 Use the correct type to offset an iterator 2024-08-02 11:48:48 -07:00
Chris Robinson 0b528bc2e5 Be more robust when looking for LAF files' HEAD marker 2024-07-29 09:56:47 -07:00
Chris Robinson 1318bea2e0 Support 24-bit LAF files 2024-07-28 09:52:20 -07:00
Chris Robinson cca3d47c8c Check for AL_EXT_FLOAT32 support before using it 2024-07-28 08:41:44 -07:00
Chris Robinson f83b0549b1 Support big-endian targets in allafplay 2024-07-28 06:58:30 -07:00
Chris Robinson a3dff1d6c1 Fix max enable bit check 2024-07-27 18:16:19 -07:00
Chris Robinson a93915cade Use std::accumulate instead of std::reduce 2024-07-27 18:11:49 -07:00
Chris Robinson 3b10c6f9bc Add a LAF file player example
This is an object-based audio file format, allowing for more flexible channel
arrangements instead of the fixed quad, 5.1, 7.1, etc layouts (including with
height), along with dynamic movement of channels, where they'll be mixed in
real-time according to the device configuration.

Its primary drawback is the lack of any real compression, supporting only 8-,
16-, and 24-bit integer and 32-bit float PCM. Although it is capable of
skipping seconds-long periods of silence for each track, such space-saving
measures could be better served with proper compression like FLAC or Opus, the
latter of which at least is unlikely to work without some redesigns to the
format.

Regardless, this example player is still effective at showing how object-based
audio formats in general can be played with OpenAL, and can be adapted or
updated to other formats that may exist now or in the future.
2024-07-27 08:26:54 -07:00