Age | Commit message (Collapse) | Author | Files | Lines |
|
Introduce new format string for playback time, supporting formats like
-remaining/total, elapsed/total, …
Fixes #699.
|
|
Compile *without* -DNDEBUG. The environment variable PIANOBAR_DEBUG
accepts a bitfield which enables (1) network (2) audio (4) UI debug
messages.
|
|
All network operations can time out now. API requests are retried up to
three times (default). Replaces setting max_player_errors with
max_retries, which is used for player and API. Adds timeout setting.
Partially reverts 436a1d4012553a2f33d0e3a5180b3b5ae0378bdd and fixes
(at least) issue #657.
Thanks to @exarkun for testing.
|
|
The volatile keyword neither guarantees atomic access nor memory
visibility[1]. Although this is usually not a problem on x86, it is
incorrect to rely on this. Use mutex locks to protect all shared player
variables and enforce memory visibility.
[1] https://wiki.sei.cmu.edu/confluence/display/c/CON02-C.+Do+not+use+volatile+as+a+synchronization+primitive
|
|
Fixes #600.
|
|
The event did not contain any song data (title, artist, …), because the
playlist was destroyed by the ui command. Now the actual station switch
is deferred by introducing nextStation and letting the main loop handle
it.
Fixes issue #584.
|
|
If player is running one SIGINT restarts current track request, two
SIGINT (or more) quit pianobar. Idle main loop (i.e. no player or
submenu) quits on SIGINT. Fixes issue #564.
|
|
^C now works as expected: It interrupts API requests, input prompts and
audio streaming. Timeouts have been removed.
|
|
I removed most of the *BSD-related stuff, because I can’t test these. If
this breaks your build, send me a patch please.
|
|
Currently exposed settings: Username, password and explicit content
filter. New key for settings is ‘!’, changeable with “act_settings”.
Fixes issues #524 and #506.
|
|
Drops libwaitress. Adds the new dependency libcurl and drops gnutls.
I wouldn’t say writing my own HTTP library was a mistake – it was not
and the experience gained was worth it. Instead I have to acknowledge
that libcurl is just better than my own implementation. Sure, it does a
lot more than HTTP – one could call that bloat. Yet if you just want to
get the job done™ reusing code is the way to go.
See #512 and #513.
|
|
Fixes issue #508.
|
|
And simplify code that nobody touched in a long long time… Fixes input
issues reported in #458.
|
|
|
|
Thanks to Unit 193 for the suggestion.
|
|
Song timer was shown without song playing.
|
|
libav 9.12 and ffmpeg 2.2 have been tested.
Here’s why: My mp4 “parser” *cough* never was a mp4 parser in the sense
that it actually understood the file format. Instead it grepped the
input stream for “magic” strings (section identifiers). That alone
should be sufficient to throw away the code and rewrite it. Additionally
libfaad2 has not been updated for ages. I guess it was abandoned in
favor of libav/ffmpeg.
With libav/ffmpeg, which we support both as long as the API’s don’t
diverge too much, pianobar gains fast and reliable AAC and MP3 decoding
without bothering too much about the details. Most users will have it
installed already. On my own machine libav consumes about 2/3 CPU time
compared to the previous solution when playing AAC. Unfortunately memory
usage doubled and my attempts to disable unused protocols/formats/codec
failed due to libav’s API limitations.
While cleaning up a small detail regarding the eventcmd API has changed
too: Song duration and position are measured in seconds instead of
milliseconds now. Since libav/ffmpeg keeps track of accurate timing the
precision pianobar keeps track of can be reduced, while still being
sufficient for most users.
|
|
The returned length is used as first length estimate before enough audio
data arrives to show the real length and for the eventcmd API. See #427
and #64.
|
|
|
|
Introduces generic linked list structure and functions (like append,
delete, …). Removes a lot of copy&pasted code and improves code
readability/reusability.
Heads up: This change breaks libpiano’s ABI.
|
|
Fixes mysterious segfaults from issue #369 and #293.
|
|
1) Make sure that multiple bad playlists in a row don’t result in a
temporary ban
2) Ignore songs skipped because the playlist timed out after pausing for
too long
|
|
Add commands that always play and always pause, in addition to the
current toggle pause command.
Closes #342.
|
|
Useful for tuner-beta.savagebeast.com:8443. Closes #319.
|
|
Closes #314.
|
|
… and restore both on startup. To disable run `ln -sv /dev/null
~/.config/pianobar/state`. Setting an invalid autostart_station in the
config file prevents automatic station selection on startup.
Closes #305.
|
|
With `history = 0` playlist items are discarded, but not freed.
|
|
Closes #287
|
|
We have all the error handling in place, no need to kill the program.
See #274.
|
|
Pandora limited the audio formats we can request explicitly. Don’t rely
on this and use the formats available with the given partner
credentials. Closes #271.
|
|
Closes #250.
|
|
This reverts commit 7df9371491e96a99c1e463f7787aede352ac5a37.
|
|
No more mutex locking/checking for quit condition. Should (slightly)
increase responsiveness of the player thread. Closes #250.
|
|
In case someone wants to use internal-tuner.pandora.com. See #243.
|
|
Always run cleanup, ensure thread is joined and player struct is reset.
See #250.
|
|
It’s a bad idea to hardcode these, although playback does not work with
non-android login yet.
|
|
Ordinary files are not supported and cause problems, so close the fd and
print a warning instead. Thanks to Sergey Bronnikov for the initial
patch.
|
|
See #231.
|
|
Closes #201
|
|
|
|
Reduces memory usage, protects against 0wned CA's and avoids ca-bundle
confusion.
Closes #175
|
|
|
|
|
|
|
|
|
|
Reusable.
|
|
|
|
Fixes #165
|
|
See #149.
|
|
Fixes #144
|