summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2019-02-14player: Use floating point arithmetic instead of AVRationalLars-Dominik Braun1-9/+7
av_mul_q calls av_reduce, whose runtime depends on its inputs. This is a latency-sensitive calculation though.
2019-02-14player: Fix buffering issue with mp3Lars-Dominik Braun1-1/+5
Again, I used the wrong time_base. Since lastTimestamp and the decoder’s frame->pts used different time_base’s, the buffer health was wrong, resulting in an indefinite stall (“buffer is full” when it was not). See #678.
2019-02-14player: Fix time display for MP3 filesLars-Dominik Braun1-3/+6
Their time_base is not the same for stream and buffersink. See issue #678.
2019-02-14player: attach names to filtersLars-Dominik Braun1-4/+4
Mainly useful for debugging with AV_LOG_DEBUG.
2019-02-01Back to -devLars-Dominik Braun1-1/+1
2019-01-25Release 2019.01.252019.01.25Lars-Dominik Braun1-1/+1
2019-01-19player: Avoid deadlockLars-Dominik Braun1-0/+1
When the play thread receives an error (ret < 0), it waits for aoplayCond. But if the buffer is full (decode thread waiting for aoplayCond), the player deadlocks. See #672.
2018-10-15Expose audio buffer size settingLars-Dominik Braun3-2/+5
See issue #672.
2018-10-15Increase max_retries default valueLars-Dominik Braun2-2/+3
Back to default value before ff4f15214100d209f39e4ed85f47e572c8fe9289. It is used by the player as well and since 403’s are considered an “error” it must be larger than the number of files per playlist (4). See issue #672.
2018-09-23Don’t use deprecated ffmpeg functionsLars-Dominik Braun2-4/+32
These are now optional according to doc/APIchanges. Closes #670.
2018-09-15Implement audio bufferingedward-p3-42/+108
Prevent stuttering on low-power devices like Android phones by moving playback to its own thread and decoupling it from decoding through a reasonably sized buffer. Fixes #665.
2018-08-12Improve QuickMix selection error messageLars-Dominik Braun1-3/+3
See #668.
2018-06-22Back to -devLars-Dominik Braun1-1/+1
2018-06-22Release 2018.06.222018.06.22Lars-Dominik Braun1-1/+1
HAPPY 10TH BIRTHDAY PIANOBAR! It’s first public release was created on 2008-06-05. So I’m slightly late to the party. Sorry about that. Also, I never thought a piece of software *I* wrote would last that long.
2018-04-16Remove deprecated header avfiltergraph.hLars-Dominik Braun2-2/+0
Has been merged into avfilter.h. Closes #660.
2018-04-07Add network timeouts and retriesLars-Dominik Braun5-7/+33
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.
2018-03-15Properly protect player struct with mutexLars-Dominik Braun6-82/+149
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
2017-10-07Fix logic for marking station (deleted)Lars-Dominik Braun1-8/+7
For songs with no station associated (NULL) “(deleted)” was shown unconditionally. Hide it. Fixes commit 4dfca5b56b441faf4938b6c8e97585f68e468039.
2017-10-07piano: Fetch extended attribs for station infoLars-Dominik Braun2-0/+8
We can show the song length in the feedback list now.
2017-10-02Show station in song listsLars-Dominik Braun4-16/+38
Iff song’s station is not the current station. This is only the case for the song history right now. Closes #638
2017-09-30Add tired rating to songLars-Dominik Braun6-8/+35
Now we can show a tired icon in the history. Closes #637.
2017-09-30Add (optional) song duration to song list format stringLars-Dominik Braun1-4/+11
Closes #636.
2017-08-30Back to -devLars-Dominik Braun1-1/+1
2017-08-30Prepare for release 2017.08.302017.08.30Lars-Dominik Braun1-1/+1
2017-04-26Fix use-after-free when deleting stationLars-Dominik Braun1-0/+2
Eventcmd uses both, selStation and selSong. Fixes #617.
2017-03-25Switch to #pragma onceLars-Dominik Braun10-34/+12
2017-03-25piano: Replace deprecated json_object_object_getLars-Dominik Braun1-74/+105
2017-03-24Replace deprecated avcodec_decode_audio4Lars-Dominik Braun3-75/+73
Use new send_packet/receive_frame API. Bumps libav and ffmpeg version requirements. Revert this commit if you need an older version.
2017-03-14Added gain_mul setting to soften effect of replaygain.Sean Greenslade3-2/+6
2016-12-02Exit when no email/password was entered or ^C was pressedLars-Dominik Braun1-2/+7
Fixes #600.
2016-10-29Replace getline() with fgets()Lars-Dominik Braun1-6/+9
Mac OS X 10.6 compatibility, fixes #572.
2016-10-15Support binding to a specific network interfaceblmpl3-0/+13
Closes #597.
2016-10-15Turn off ffmpeg’s error messagesLars-Dominik Braun1-0/+1
See #577.
2016-06-02Back to -devLars-Dominik Braun1-1/+1
2016-06-02Prepare for release 2016.06.022016.06.02Lars-Dominik Braun1-1/+1
2016-04-14Fix songfinish event when changing stationsLars-Dominik Braun4-25/+30
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.
2016-03-05Quit upon reception of two SIGINTLars-Dominik Braun3-10/+20
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.
2016-02-11Add default value for rpcTlsPortLars-Dominik Braun2-1/+5
Passing NULL to printf and the result to curl may or may not work. YMMV. Fixes #574.
2015-11-22Back to -devLars-Dominik Braun1-1/+1
2015-11-22Prepare for release 2015.11.222015.11.22Lars-Dominik Braun1-1/+1
2015-10-23Interruptible requestsLars-Dominik Braun9-111/+129
^C now works as expected: It interrupts API requests, input prompts and audio streaming. Timeouts have been removed.
2015-09-25settings: Fix config file parserLars-Dominik Braun1-7/+60
scanf’s %s matches non-whitespace characters only and thus ‘# foo = bar’ is parsed as ‘foo’, ‘bar’ and not ‘# foo’, ‘bar’ (as expected). Thus comments did not work if they a) started with a valid key and b) had a space between hash-sign and key. Fixes issue #526.
2015-09-06player: Fix strange volume bugLars-Dominik Braun1-1/+1
On one of my machines the first song plays fine, but every track thereafter fails playing with the following error message: [volume @ 0x7f6b1c0a1200] [Eval @ 0x7f6b21ab6b60] Invalid chars '.0' at the end of expression '1.0' [volume @ 0x7f6b1c0a1200] Error when evaluating the volume expression '1.0' /!\ create_filter volume (Das Argument ist ungültig) I’m not sure why this fixes the issue, but it might be a bug in ffmpeg.
2015-09-06player: Replace deprecated ffmpeg API callsLars-Dominik Braun1-17/+7
A few changes were made to AVFrame and the buffersink. Should be compatible with ffmpeg >= 2.1 and libav >= 10. Version 1.2/9 do not work at this point.
2015-08-10Move feature test macros to config.hLars-Dominik Braun12-34/+14
I removed most of the *BSD-related stuff, because I can’t test these. If this breaks your build, send me a patch please.
2015-08-10Add feature to change Pandora settingsLars-Dominik Braun8-1/+181
Currently exposed settings: Username, password and explicit content filter. New key for settings is ‘!’, changeable with “act_settings”. Fixes issues #524 and #506.
2015-08-04Add missing includeLars-Dominik Braun1-0/+1
2015-08-04Set ffmpeg proxyLars-Dominik Braun1-0/+5
The proxy config setting did not set ffmpeg’s http proxy previously. See issue #531.
2015-06-15Replace setting tls_fingerprint with ca_bundleLars-Dominik Braun3-15/+7
2015-04-06Switch back to libcurlLars-Dominik Braun12-1611/+136
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.