Commit Graph

4627 Commits

Author SHA1 Message Date
ejurgensen 201c97fdf8 Fixup 3 - remove small risk of crash if encode_setup called incorrectly 2019-03-18 23:06:08 +01:00
ejurgensen de55acf797 [input] Fixup 2: Seeking when rewinding to 0 2019-03-18 23:06:08 +01:00
ejurgensen c74b305983 [outputs] Fix crash, invalid reference to device after outputs_device_add 2019-03-18 23:06:08 +01:00
ejurgensen b7add1d0fa [inputs/player] Fixup part 1 2019-03-18 23:06:08 +01:00
ejurgensen d008e241cf [outputs] Make outputs_device_flush (per device flushing)
Works better with the callback mechanism
2019-03-18 23:06:08 +01:00
ejurgensen 87ca6363ae [player/input] Refactor - WIP
* Open input sources earlier
* Gapless playback
* Remove fixed 44100/16 from player
* Complete restructure player internals
2019-03-18 23:06:08 +01:00
ejurgensen e97ad7d970 [outputs] Reinstate device->activated, so that mdns flukes can't bring down playback 2019-03-18 23:06:08 +01:00
ejurgensen 936103f462 [outputs] Move device_add/rm to outputs and get rid of advertised flag 2019-03-18 23:06:08 +01:00
ejurgensen a7e8476996 [outputs] Refactor outputs some more, eg change callback system 2019-03-18 23:06:08 +01:00
ejurgensen e99f20992e [player/outputs] Implement changed output interfaces in most backends
Still missing cast, alsa and pulseaudio, but these can so far just be
disabled with configure.

Otherwise still mostly untested.
2019-03-18 23:06:08 +01:00
ejurgensen 14a6d318f0 [outputs] Changes to interface of outputs module
* Drop output_sessions, was just a pointer to the actual session anyway
* Drop the old write, flush and stop prototypes
* Some minor changes/renaming

Purpose of this is also to fix a race condition in player.c where it
could try to start two sessions on the same speaker. This could happen
because outputs_device_start() in line 2093 is conditional on device->session
which however is false while a device is starting up.
2019-03-18 23:06:08 +01:00
ejurgensen cee740ae51 [misc] Move MIN() macro from raop.c to misc.c 2019-03-18 23:06:08 +01:00
ejurgensen 94dfef6e78 [input] Return quality flag even if read size is zero
First input_read() has bufsize 0, because we don't know quality yet
2019-03-18 23:06:08 +01:00
ejurgensen 0cb3881621 [player/outputs/raop] Get rid of outputs_playback_start() (still WIP)
outputs_playback_start() had the problem that was not consistently invoked: If
for instance local audio playback was running and a Airplay device was then
activated, the raop's playback_start would never be invoked (and vice versa,
of course).

Instead, the player now writes the presentation timestamp every time to the
output, so it doesn't need to keep track of it from the start.
2019-03-18 23:06:08 +01:00
ejurgensen a924a8dd66 [raop] Reorganise code a little 2019-03-18 23:06:08 +01:00
ejurgensen fcc91ecd86 [player/outputs] Handle multiple quality levels + use rtp_common (WIP!)
* Untie Airtunes stuff further from player and non-Airplay outputs
* Change raop.c to use rtp_common.c (step 1)
* Change heartbeat of player to 100 ticks/sec, since we have untied from
  Airtunes 352 samples per packet (which equals 126 ticks/sec at 44100)

Still a lot to be done in the player, since the rtptime's in it don't
are probably broken.
2019-03-18 23:06:08 +01:00
ejurgensen cdd0aa884b [outputs] Add ability to deal with multiple qualities
Output module can now take input data in multiple quality levels, and
can resample to those output modules that would require a certain quality
level, like raop.c would
2019-03-18 23:06:08 +01:00
ejurgensen 7e48887adc [rtp] Add RTP utility module: rtp_common.c rtp_common.h
Expectation is to use this for both Airplay and Chromecast RTP streaming
2019-03-18 23:06:08 +01:00
ejurgensen 76bbfb6d2c [streaming] Adjust httpd_streaming to new transcode interface 2019-03-18 23:06:08 +01:00
ejurgensen 4fe5c47526 [inputs] Change pipe and file_http inputs to use media_quality 2019-03-18 23:06:08 +01:00
ejurgensen 7048a72d86 [spotify] Use media_quality instead of input_quality
and allow more than 2 channels ... probably wouldn't actually work, hard to test
2019-03-18 23:06:08 +01:00
ejurgensen a9085e978d [input] Change input abstraction to use media_quality instead of input_quality 2019-03-18 23:06:08 +01:00
ejurgensen 462d787fab [misc] Add media_quality struct for storing sample rate, bps and channels 2019-03-18 23:06:08 +01:00
ejurgensen ad77a42dbb [xcode] Adapt to allow for new raw PCM input profiles, e.g. 48000/16 2019-03-18 23:06:08 +01:00
ejurgensen 1696fc3384 [input] Adapt input_buffer so it can handle dynamic quality (sample rates etc)
Still WIP, player and outputs cannot handle this yet
2019-03-18 23:06:08 +01:00
ejurgensen 9182597605 [input/xcode] Write to input buffer with the sources native sample rate/format
Still WIP at this point since the player and output can't use the use improved
quality yet, and because rtptimes etc. are likely incorrect
2019-03-18 23:06:08 +01:00
ejurgensen 84e813038b [player] Some additional comments 2019-03-18 23:06:08 +01:00
ejurgensen d850c2e691 [xcode] Add OPUS encoding profile for RTP Chromecasting 2019-03-18 23:06:08 +01:00
ejurgensen 8e474dfd7f Bump to version 26.5 2019-03-17 22:52:41 +01:00
ejurgensen 864bdb8f6f ChangeLog and README for forked-daapd 26.5 2019-03-17 22:52:06 +01:00
ejurgensen c3a7ec5163
Merge pull request #708 from chme/travis
[travis-ci] Build forked-daapd in the latest Ubuntu LTS docker image
2019-03-11 20:07:37 +01:00
chme f3cb20543b [travis-ci] Build forked-daapd in the latest Ubuntu LTS docker image 2019-03-11 17:46:11 +01:00
ejurgensen 7bd12bb317
Merge pull request #700 from whatdoineed2do/systemd-svc-memorymax
[systemd] add MemoryMax to service
2019-02-24 15:07:10 +01:00
whatdoineed2do/Ray 23721fc620 [systemd] add MemoryMax to enforce mem upper limit
to enable after re-installing on existing system:
            systemctl daemon-reload && \
            systemctl restart forked-daapd
2019-02-24 10:20:55 +00:00
Christian Meffert fb98eb68ca
Merge pull request #703 from chme/json_web
Small JSON API fixes + small web interface updates (v0.5.1)
2019-02-24 07:30:47 +01:00
chme 96f5d90849 [htdocs] Rebuild player web interface v0.5.1 2019-02-23 11:02:12 +01:00
chme aa0fd5b0cb [web-src] Update dependencies and increase version to 0.5.1 2019-02-23 11:02:12 +01:00
chme d1f866bd76 [web-src] Add data/media kind to queue item dialog with links to spotify 2019-02-23 11:02:12 +01:00
chme df455ce069 [web-src] Make use of extended queue/item/add endpoint
Should speed up starting playback from the web ui (reduces number of web 
api requests)
2019-02-23 11:02:12 +01:00
chme d931385886 [web-src] Show track title for streams in bottom navbar
If queue item is a radio stream, title contains the radio stream name, 
artist contains the artist of the current streaming song and album 
contains the title of the current streaming song.
2019-02-23 11:02:12 +01:00
chme 4a06b05365 [README] Add new query parameter for queue/items/add endpoint 2019-02-23 11:02:12 +01:00
chme 47e464ee97 [README] Fix wrong data_kind value in track object 2019-02-23 11:02:12 +01:00
chme f85df07308 [jsonapi] Respect order defined in smartpl expression in queue/items/add 2019-02-23 11:02:12 +01:00
chme e078ba8ed0 [jsonapi] Use same order by clause when adding queue items by
expressions as is used in search tracks by expression
2019-02-23 11:02:12 +01:00
chme a3f2551eea [jsonapi] Support starting playback from position in queue/items/add 2019-02-23 09:41:58 +01:00
Christian Meffert 4c2f178aa0
Merge pull request #695 from chme/web_interface_v043
Update player web interface (v0.5.0)
2019-02-21 16:37:59 +01:00
ejurgensen ddb27108ac
Merge pull request #697 from chme/spotify_playlist_uri
Switch to new Spotify web api playlist uris and support adding artist tracks to queue
2019-02-20 11:54:46 +01:00
chme 2e70d39a3a [htdocs] Rebuild player web interface v0.5.0
- Support links to album, artist and genre from queue item modal (#686)
- Improve podcasts views in player web interface (#689)
- Add play stream option in menu (pr #693)
- Add button to open details dialog in artist/album/playlist views (pr
- Fix links to genre page (pr #693)
- Update dependencies
2019-02-20 10:36:51 +01:00
chme 6c546b522c [web-src] Update dependencies and set internal version to 0.5.0 2019-02-20 10:35:35 +01:00
chme 7a30a50bd7 [web-src] Add info button to artist tracks, genre and spotify pages 2019-02-20 10:34:15 +01:00