Max Kellermann 
							
						 
					 
					
						
						
							
						
						6d013b092f 
					 
					
						
						
							
							output/osx: remove trailing newline from exception messages  
						
						
						
						
					 
					
						2019-07-03 22:21:43 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						ccb182865c 
					 
					
						
						
							
							output/osx: fix coding style  
						
						
						
						
					 
					
						2019-07-03 22:12:47 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						412b04be58 
					 
					
						
						
							
							output: allow throwing any exception  
						
						
						
						
					 
					
						2019-07-03 22:10:26 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						510e6841a0 
					 
					
						
						
							
							net/AllocatedSocketAddress: import std::swap  
						
						
						
						
					 
					
						2019-07-03 22:06:40 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2089c99348 
					 
					
						
						
							
							net/{Allocated,Static}SocketAddress: use IPv[46]Address::SetPort()  
						
						
						
						
					 
					
						2019-07-03 21:59:23 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						77b5b4158c 
					 
					
						
						
							
							net/ToString: move UnmapV4() to class IPv6Address  
						
						
						
						
					 
					
						2019-07-03 21:56:56 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						08552f3938 
					 
					
						
						
							
							net/ToString: UnmapV4() returns IPv4Address  
						
						
						
						
					 
					
						2019-07-03 21:56:27 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2700265769 
					 
					
						
						
							
							net/SocketAddress: use IPv[46]Address::Cast()  
						
						
						
						
					 
					
						2019-07-03 21:53:42 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						557098644b 
					 
					
						
						
							
							Merge tag 'v0.21.11'  
						
						... 
						
						
						
						release v0.21.11 
						
						
					 
					
						2019-07-03 15:36:45 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						44aaf51345 
					 
					
						
						
							
							Merge branch 'runtime_enumeration' of git://github.com/eugene2k/MPD  
						
						
						
						
					 
					
						2019-07-01 09:48:33 +02:00 
						 
				 
			
				
					
						
							
							
								Eugene Gorodinsky 
							
						 
					 
					
						
						
							
						
						4e2a551f30 
					 
					
						
						
							
							Add runtime enumeration of supported schemas.  
						
						... 
						
						
						
						Fix src/ls.cxx to only print unique schemas.
Refactor src/ls.cxx to use src/input/InputPlugin functionality.
Add dynamic enumeration support to curl plugin. 
						
						
					 
					
						2019-07-01 09:49:34 +03:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f780ac418a 
					 
					
						
						
							
							output/alsa: log when generating silence due to slow decoder  
						
						... 
						
						
						
						MPD used to do that when this code lived in the player thread, but it
was removed by commit 98a7c62d7a4f716d90af6d78e18d1a3b10bc54b3; and
the replacement code in the ALSA output plugin didn't have it. 
						
						
					 
					
						2019-06-28 18:15:30 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						61a72a5d13 
					 
					
						
						
							
							output/alsa: schedule a timer to generate silence  
						
						... 
						
						
						
						Without this timer, DispatchSockets() may disable the
MultiSocketMonitor and if Play() doesn't get called soon, it never
gets a chance to generate silence.  However if Play() gets called,
generating silence isn't necessary anymore...
Resulting from this misdesign (added by commit ccafe3f3cf 
						
						
					 
					
						2019-06-28 18:04:49 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						0c0a354753 
					 
					
						
						
							
							output/alsa: add a new flag "waiting" for xrun management  
						
						... 
						
						
						
						In DispatchSockets(), when there was not enough data, but enough for
current playback, the method would disable the "active" flag so the
next Play() call would re-enable the MultiSocketMonitor.
This was an abuse of the flag which could result in a crash
in Cancel(), because that method asserts that the period_buffer is
empty, which it may be not.
The solution is to add anther flag called "waiting" which shares some
behavior with the old flag. 
						
						
					 
					
						2019-06-28 18:04:49 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						3c5f860fb8 
					 
					
						
						
							
							output/alsa: Cancel() also affects "active" (documentation)  
						
						
						
						
					 
					
						2019-06-28 18:04:49 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						3da1fa88d0 
					 
					
						
						
							
							output/alsa: fix comment typo  
						
						
						
						
					 
					
						2019-06-28 18:04:49 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						fac15aaffb 
					 
					
						
						
							
							output/alsa: fix comment typo  
						
						
						
						
					 
					
						2019-06-28 14:39:54 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						5b01373356 
					 
					
						
						
							
							output/alsa: more assertions in class PeriodBuffer  
						
						
						
						
					 
					
						2019-06-28 09:31:51 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a92aa0bedc 
					 
					
						
						
							
							output/alsa: use IsCleared() instead of IsDrained() in DrainInternal()  
						
						... 
						
						
						
						Really drain all data from the period_buffer in any case. 
						
						
					 
					
						2019-06-28 09:30:33 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						d66f5a8590 
					 
					
						
						
							
							output/alsa: replace PeriodBuffer::IsEmpty() with IsCleared()  
						
						... 
						
						
						
						This assertion is not about whether all data has been consumed, but
about whether there has been any data at all. 
						
						
					 
					
						2019-06-28 09:29:18 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						30ca6b8881 
					 
					
						
						
							
							Merge branch 'v0.21.x'  
						
						
						
						
					 
					
						2019-06-28 09:28:04 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c926021599 
					 
					
						
						
							
							output/alsa: always redo DrainInternal() after writing  
						
						... 
						
						
						
						Draining isn't finished just because the period_buffer has run empty.
It is only finished after snd_pcm_drain() has succeeded. 
						
						
					 
					
						2019-06-28 09:10:16 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						543776d9c9 
					 
					
						
						
							
							output/alsa: check PCM state before calling snd_pcm_drain()  
						
						... 
						
						
						
						Apparently, if snd_pcm_drain() returns EAGAIN, it does not actually
want to be called again; the next call will snd_pcm_drain() will also
return EAGAIN, forever, even though the PCM state has meanwhile
switched to SND_PCM_STATE_SETUP.  This causes a busy loop; to fix
this, we should always check snd_pcm_state() to see if draining is
really required. 
						
						
					 
					
						2019-06-28 08:55:25 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						cf631fca50 
					 
					
						
						
							
							output/alsa: check GetFrames()>0 instead of IsEmpty() in WriteFromPeriodBuffer()  
						
						
						
						
					 
					
						2019-06-27 21:59:43 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f0ac63d5af 
					 
					
						
						
							
							output/alsa: DrainInternal() ignores postponed partial frame  
						
						
						
						
					 
					
						2019-06-27 21:23:28 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c1eb0583c4 
					 
					
						
						
							
							output/alsa: add "full" assertion to WriteFromPeriodBuffer()  
						
						
						
						
					 
					
						2019-06-27 21:22:52 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						549faa8a9c 
					 
					
						
						
							
							output/alsa: add full check before calling FillWithSilence()  
						
						
						
						
					 
					
						2019-06-27 21:20:38 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						8f6c750064 
					 
					
						
						
							
							output/alsa: improve silence generator test in DrainInternal()  
						
						... 
						
						
						
						There cannot be partial frames in the buffer, so we don't need
GetPeriodPosition(); it's enough to check whether head has been moved
in this period. 
						
						
					 
					
						2019-06-27 21:17:37 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9fc1668de3 
					 
					
						
						
							
							output/alsa: hold back snd_pcm_writei() until period_buffer is full  
						
						... 
						
						
						
						This gives MPD more control, because attempts to avoid having partial
periods in the ALSA period buffer.  For example, this means that
DrainInternal() doesn't need to generate silence to fill the partial
period. 
						
						
					 
					
						2019-06-27 15:40:07 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						e9190f4249 
					 
					
						
						
							
							lib/alsa/PeriodBuffer: add missing include  
						
						
						
						
					 
					
						2019-06-27 15:34:40 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						127b464c59 
					 
					
						
						
							
							lib/alsa/PeriodBuffer: add API documentation  
						
						
						
						
					 
					
						2019-06-27 14:58:19 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						01fd6e5e82 
					 
					
						
						
							
							Merge branch 'v0.21.x'  
						
						
						
						
					 
					
						2019-06-27 14:51:05 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						8bf3f9b874 
					 
					
						
						
							
							input/tidal: deprecated because Tidal has changed the protocol  
						
						... 
						
						
						
						See https://github.com/MusicPlayerDaemon/MPD/issues/545  
						
						
					 
					
						2019-06-26 23:14:07 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f07f8f7d88 
					 
					
						
						
							
							decoder/wildmidi: add fallbacks for libwildmidi<0.4  
						
						... 
						
						
						
						Fix build breakage from commit ea639269d8 
						
						
					 
					
						2019-06-26 23:13:23 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						39b40ac1fd 
					 
					
						
						
							
							decoder/wildmidi: remove unused variable wildmidi_domain  
						
						
						
						
					 
					
						2019-06-26 23:10:20 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						ea639269d8 
					 
					
						
						
							
							decoder/wildmidi: throw PluginUnavailable on WildMidi_Init() error  
						
						... 
						
						
						
						Closes https://github.com/MusicPlayerDaemon/MPD/issues/589  
						
						
					 
					
						2019-06-26 22:40:27 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						0abaa3ecc5 
					 
					
						
						
							
							decoder/wildmidi: throw PluginUnavailable if config file does not exist  
						
						... 
						
						
						
						This makes the configuration error more visible, possibly addressing
one part of https://github.com/MusicPlayerDaemon/MPD/issues/589  
						
						
					 
					
						2019-06-26 22:38:40 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c4d3efe71d 
					 
					
						
						
							
							decoder/List: handle exception PluginUnavailable  
						
						
						
						
					 
					
						2019-06-26 22:02:54 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						85e82e3d4d 
					 
					
						
						
							
							decoder/List: annotate exceptions thrown by DecoderPlugin::Init()  
						
						
						
						
					 
					
						2019-06-26 22:01:45 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						beed004b10 
					 
					
						
						
							
							pcm/Export: add GetSilence()  
						
						
						
						
					 
					
						2019-06-26 16:04:46 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						34c6337887 
					 
					
						
						
							
							pcm/Export: add GetInputBlockSize(), GetOutputBlockSize()  
						
						
						
						
					 
					
						2019-06-26 15:49:08 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2093e53641 
					 
					
						
						
							
							pcm/Export: add GetInputFrameSize()  
						
						
						
						
					 
					
						2019-06-26 15:48:18 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2f243f2295 
					 
					
						
						
							
							pcm/Export: rename GetFrameSize() to GetOutputFrameSize()  
						
						
						
						
					 
					
						2019-06-26 15:46:49 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						e69fd0300a 
					 
					
						
						
							
							pcm/Export: rename CalcSourceSize() to CalcInputSize()  
						
						
						
						
					 
					
						2019-06-26 15:46:05 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f43cafbf7d 
					 
					
						
						
							
							pcm/Export: eliminate the AudioFormat parameter from GetFrameSize()  
						
						
						
						
					 
					
						2019-06-26 15:42:47 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						53faf77d20 
					 
					
						
						
							
							pcm/Export: use the "channels" attribute in GetFrameSize()  
						
						
						
						
					 
					
						2019-06-26 15:41:07 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						bf574dcb0a 
					 
					
						
						
							
							pcm/RestBuffer: make internal methods private  
						
						
						
						
					 
					
						2019-06-26 14:44:20 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						72b8f33272 
					 
					
						
						
							
							pcm/Export: split src_sample_format from alsa_channel_order  
						
						... 
						
						
						
						Combining these two in one single value saves some memory, but is
complicated and we may need the src_sample_format for new features
later. 
						
						
					 
					
						2019-06-18 12:19:40 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a17f420d6b 
					 
					
						
						
							
							pcm/Export: update API documentation  
						
						
						
						
					 
					
						2019-06-18 12:19:40 +02:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f97a9ce765 
					 
					
						
						
							
							Revert "MusicChunk: pad MusicChunkInfo to a multiple of 8 bytes"  
						
						... 
						
						
						
						This reverts commit 2c3eeb7194bf26adf55532380d1db0 
						
						
					 
					
						2019-06-18 11:49:52 +02:00