Commit Briefs

Omar Polo

add a simple filetype detector instead of relying on file extension

just a bit of "magic" :) Flac are easy, they always start with "fLaC". mp3 are weird because they either start with "ID3" (but this theoretically only ensures that's a tagged file, not an mp3) or 0xFF 0xFB. Ogg Opus should have a magic sequence "OpusHead" somewhere near the start of the file but also have the ogg' "OggS" magic bytes. I hope it's enough to distinguish between Ogg Opus and Vorbis. Another option would be to refactor play_oggvorbis/opus to not close the file on failure and try in cascade the play_* functions, but it's more complex and this solution seems to be enough.



Omar Polo

refactor player_playnext: return status code

let the caller decide to call senderr or sendeof.




Omar Polo

we're on -current now


Omar Polo

amused 0.5 (tags/0.5)

* unbreak opus and ogg vorbis * handle flacs with bps != 16 and/or channels != 2 * speed up `load' a lot (especially if over NFS)


Omar Polo

add back missing memzero


Omar Polo

use a more readable strncmp to look for prefixes

also while here stick an `else' before the second clausole. We're supposed to trim out only '> ' and ' ', but the missing else would also trim out ' ' after a '> '!


Omar Polo

get rid of realpath during load

it has a non-ignorable cost over NFS (sdk@ reported ~30 seconds to load 64k songs, and up to 5 minutes over wifi!) and don't provide us any real gain: files can still vanish after being imported or may appear later. The only advantage of realpath was that it would clean up the path from segments like "/./" and resolve the ".." components, but that's a minor issue anyway. prodded by, discussed with and tested by sdk@, thanks a lot!


Omar Polo

typo


Omar Polo

tweak the readme



Omar Polo

reuse main_send_player

instead of filling the params for imsg_compose_event.


Omar Polo

...and unbreak ogg vorbis too...

i'm seriously shocked at how bad i did the play_* refactoring. missed too many details.