Commit Briefs

Omar Polo

don't send the song' path to the player process

we're not relying anymore on the file extension, so this information is useless for the player.


Omar Polo

don't call player_sendeof on IMSG_STOP

the refactoring introduced this error where we call report an EOF upon IMSG_STOP, making the player infinitely loop.


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

pledge audio too

while for my particular use-case this has always worked with only "stdio recvfd", sio_open(3) mentions that if no further sio_open calls are made all pledges can be dropped except for "audio", so let's keep it.


Omar Polo

remove the got_stop hack

now player_playnext has enough information to decide wheter to call player_senderr or player_sendeof.




Omar Polo

change the log debug string for player_setup

now it includes all the params, not only the rate


Omar Polo

fix player wrt unknown files


Omar Polo

allow changing sample bit size



Omar Polo

implement `load' command