Commit Graph

73 Commits

Author SHA1 Message Date
ejurgensen
e20d2c544d [transcode] Comments and raise MAX_BAD_PACKETS to 5 2015-10-22 21:01:43 +02:00
ejurgensen
058b2fb0d6 [transcode] Improve decoding to allow for decoder special cases, like decoders not processing
entire packets, rejecting packets and not returning frames. Should fix issue with network
streams not opening.
2015-10-21 23:53:21 +02:00
ejurgensen
2a610812a5 Refactor transcode.c so it can actually transcode + use new capability to support mp3 streaming.
Also includes the skeleton for perhaps supporting video in the future. Adds more fine-grained
ffmpeg/libav compability checks. Dependency on libavresample/libswresample exchanged with
dependency on libavfilter, which seems more versatile.
2015-10-09 23:58:27 +02:00
chme
e1147c00a1 [player] Refactor player to better fit the queue refactor 2015-10-04 07:59:58 +02:00
ejurgensen
68912efa1f Enable resuming playback from saved position for certain media kinds (eg audiobooks) 2015-08-04 22:33:32 +02:00
chme
659f9c09bb Use enum values for data_kind and media_kind 2015-04-23 11:34:44 +02:00
ejurgensen
99cda05dab Remove player metadata event timer (use the existing instead) 2015-04-11 20:30:31 +02:00
ejurgensen
e72447954a Some cleaning up of ICY artwork retrieval 2015-04-09 22:22:42 +02:00
ejurgensen
56ece92209 Remember to actually request ICY metadata in transcode.c 2015-04-02 00:09:12 +02:00
ejurgensen
e49c941a00 Add a worker thread to support async tasks from the player thread
(and maybe others later)
2015-03-31 23:05:24 +02:00
ejurgensen
a529d78880 Don't crash on no metadata... 2015-03-29 20:16:56 +02:00
ejurgensen
b8d8df132b Support for remote m3u playlists (ref pr #79) 2015-03-20 23:40:42 +01:00
ejurgensen
6221e24f1b Support for live ICY metadata for streams (incl. artwork) 2015-03-14 21:42:53 +01:00
ejurgensen
2879458e98 Fix for issue #62 (slow internet streams), credit @chme 2015-01-02 23:24:44 +01:00
ejurgensen
a69619a5a7 Implement is_remote() and change how transcode_needed() is used
transcode_needed() was getting called needlessly in http_daapd.c,
because 1) once it is determined that a given codec needs transcoding
for a given client there is no reason to call and check again, 2)
transcoding is irrelevant for remotes. Also some cleaning up of
user_agent_filter().
2014-12-28 23:37:12 +01:00
chme
7889d92a81 Identify "android" user-agent as a remote client in transcode_needed()
(similar to the check in user_agent_filter())
2014-12-28 09:37:19 +01:00
ejurgensen
88fcfa061d Add compability with ffmpeg's libswresample 2014-10-02 22:48:50 +02:00
ejurgensen
cf091e8d8b Adjust daapcache so it serves User-Agent to httpd_daap's reply handlers 2014-08-23 00:02:01 +02:00
ejurgensen
17ffdc56ad Fix bug where streams with sample rate < 44100 stop too early (with libav 10+)
- avresample_convert should be passed max samples to convert, not
number of samples in input (which for low sample rates is lower
than output)
2014-07-06 23:31:20 +02:00
ejurgensen
2247fadbfa Some preprocessor conditions for compability on OpenWrt 2014-06-16 23:31:44 +02:00
ejurgensen
687f349927 Let configure check libevent version and include according to version 2014-03-13 23:33:35 +01:00
ejurgensen
7ed6cc98c3 Add support for Spotify (squashed commit), and:
- Try to not return items which a client can't play
    - Remove inotify subscription to IN_MODIFY and IN_CREATE
    - Fix crash on unknown codec type in transcode.c
    - Probably added some new bugs...
2014-03-11 23:20:29 +01:00
ejurgensen
7997377deb Adjust for libav 10 API
With libav 10 the API is (again...) changed, adjust for that and
add the appropriate version conditions
2014-02-17 23:05:24 +01:00
Justin Maggard
f9a76aeb1a Add User-Agent detection for iTunes video playback on OSX
iTunes on OSX has a different User-Agent when playing back video
files.  Detect this so we can deterimine his codec support.
2014-02-05 17:34:27 -08:00
ejurgensen
785383861b ffmpeg/libav conditions for CodecID and AVCODEC_MAX_AUDIO_FRAME_SIZE (thanks @freultwah) 2014-01-27 21:24:08 +01:00
ejurgensen
5d6d7c7f82 Only allocate transcode resample buffer once, but make it large 2014-01-19 23:27:39 +01:00
ejurgensen
c2c072eb58 Plug bad mem leak if using libavcodec 54.35 (libav9) or above 2014-01-19 23:09:40 +01:00
ejurgensen
efd4d56de5 Fix a few missing libav conditions 2014-01-06 21:41:30 +01:00
ejurgensen
edaa8fe4f2 Add libav version conditions 2014-01-02 22:49:18 +01:00
ejurgensen
21584fa1ff Minor adjustment of log message in transcode.c 2013-12-30 23:47:41 +01:00
ejurgensen
8663641e84 Account for no channel_layout (resample) + add free decode frame 2013-12-30 23:16:30 +01:00
ejurgensen
3a8936cd26 Change to libav 9 resampling (avresample)
Some of the previous libav stuff removed, re-add later
2013-12-30 13:03:53 +01:00
ejurgensen
73b2d08400 Rework of transcode.c for libav 9. Resampling is broken in this commit. 2013-12-30 00:40:16 +01:00
ejurgensen
0fd65b285d Fix some ffmpeg/libav compiler conditions 2013-11-25 19:43:17 +01:00
ejurgensen
dea8d02c76 Downgrade log message severity 2013-11-23 11:04:10 +01:00
ejurgensen
3471b6c147 Cleaning up deprecated ffmpeg/libav 2013-09-07 23:39:22 +02:00
ejurgensen
c1c171e21f Include for av_rescale_q was missing
- and has been for a while, it seems
2013-09-04 22:33:47 +02:00
ejurgensen
fa965dee75 Changed SAMPLE_FMT_S16 for ffmpeg 0.11 2013-05-24 20:33:26 +02:00
Julien BLACHE
ed20d3f7de libav 0.7: use av_get_bytes_per_sample() instead of av_get_bits_per_sample_fmt() 2011-09-10 12:48:14 +02:00
Julien BLACHE
dbe22c2c02 libav 0.7: use avformat_open_input() instead of av_open_input_file() 2011-09-10 12:48:14 +02:00
Julien BLACHE
b1d31feb53 libav 0.7: Switch from av_get_bits_per_sample_format() to ..._fmt() 2011-06-02 22:16:52 +02:00
Julien BLACHE
ecf064082f libav 0.7: Use skip_frame instead of hurry_up 2011-06-02 22:16:52 +02:00
Julien BLACHE
b203f1ea1f libav 0.7: Replace CODEC_TYPE_* with AVMEDIA_TYPE_* 2011-06-02 22:09:42 +02:00
Julien BLACHE
ec5ace7dc9 Reset hurry_up to 0 after we acquired a frame with known PTS 2011-06-02 22:06:44 +02:00
Julien BLACHE
67daf3259a Use avcodec_decode_audio3() when available (FFmpeg 0.6) 2011-02-23 18:26:42 +01:00
Julien BLACHE
75fb755db7 Assign ms to target_pts to ensure full 64bit computation of target_pts
Clang produced interesting results without this (or casting ms to int64_t),
as the seek target got mis-computed and fell short of the requested seek
target in ms (ex. wanted 18569 ms -> got 555 ms).
2010-09-13 22:06:53 +02:00
Julien BLACHE
115ded61d0 Move code around, no functional changes
Assign start_time right at the start, making the target_pts computation more
obvious wrt start_time and showing the symmetry of the target_pts and got_pts
computations.
2010-09-13 22:06:52 +02:00
Julien BLACHE
d1af41f0e7 Fix got_pts computation wrt start_time
Substract start_time from got_pts after actually getting got_pts, and then
rescale the result.
2010-09-13 22:06:12 +02:00
Julien BLACHE
17daace67f Add seek support to transcode 2010-05-02 11:21:08 +02:00
Julien BLACHE
9fb7ec8e5c Make the WAV header optional 2010-05-02 11:21:08 +02:00