Max Kellermann 
							
						 
					 
					
						
						
							
						
						8f981845dc 
					 
					
						
						
							
							switch to C++17  
						
						 
						
						... 
						
						
						
						Time to move on, two years after 2017. 
						
						
					 
					
						2019-08-03 12:57:56 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c764b70b3a 
					 
					
						
						
							
							decoder/mad: merge DecodeNextFrame() and DecodeNextFrameHeader()  
						
						 
						
						
						
						
					 
					
						2019-08-03 12:55:56 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						52bb03e136 
					 
					
						
						
							
							decoder/mad: eliminate redundant error handling from DecodeNextFrame()  
						
						 
						
						... 
						
						
						
						Much of that is not possible when mad_header_decode() has already been
called. 
						
						
					 
					
						2019-08-03 12:55:48 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a90685d6cf 
					 
					
						
						
							
							Merge tag 'v0.21.12'  
						
						 
						
						... 
						
						
						
						release v0.21.12 
						
						
					 
					
						2019-08-03 12:53:23 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f2d8fd769d 
					 
					
						
						
							
							player/Thread: don't restart unseekable song after failed seek attempt  
						
						 
						
						... 
						
						
						
						The check IsSeekableCurrentSong() was added by commit
44b200240f  in version 0.20.19, but it
caused a regression: by doing the branch only if the current song is
seekable, the player would restart the current song if it was not
seekable, and later the initial seek would fail; but we already know
it's not seekable, and so we should fail early. 
						
						
					 
					
						2019-08-03 12:30:10 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9661062ae2 
					 
					
						
						
							
							decoder/mad: pass const reference to RecoverFrameError()  
						
						 
						
						
						
						
					 
					
						2019-08-03 11:59:41 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2a07354cad 
					 
					
						
						
							
							decoder/mad: change integers to size_t  
						
						 
						
						
						
						
					 
					
						2019-08-03 11:44:02 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						fc18fd571c 
					 
					
						
						
							
							decoder/mad: return from SynthAndSubmit() early  
						
						 
						
						
						
						
					 
					
						2019-08-03 11:42:05 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						51abed9732 
					 
					
						
						
							
							decoder/mad: pass mad_pcm to mad_fixed_to_24_buffer()  
						
						 
						
						
						
						
					 
					
						2019-08-03 11:40:06 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						d00afc912c 
					 
					
						
						
							
							decoder/mad: eliminate the loop in SubmitPCM()  
						
						 
						
						... 
						
						
						
						libmad has a hard-coded maximum PCM buffer size; if we make our
output_buffer just as large, we can avoid the loop, because any
possible size will fit. 
						
						
					 
					
						2019-08-03 11:36:05 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9d0fe725eb 
					 
					
						
						
							
							decoder/mad: rename a few misnamed methods  
						
						 
						
						
						
						
					 
					
						2019-08-03 11:32:42 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						8a432c9b7f 
					 
					
						
						
							
							decoder/mad: move code to LoadNextFrame()  
						
						 
						
						
						
						
					 
					
						2019-08-03 11:32:06 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						187204f03c 
					 
					
						
						
							
							decoder/mad: move code to HandleCurrentFrame()  
						
						 
						
						
						
						
					 
					
						2019-08-03 11:32:06 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						5e5fadb5f2 
					 
					
						
						
							
							decoder/mad: remove unnecessary initializers  
						
						 
						
						... 
						
						
						
						These will not be used until they are initialized in SyncAndSend(). 
						
						
					 
					
						2019-08-03 08:49:26 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						952c793235 
					 
					
						
						
							
							decoder/mad: subtract libmad decoder delay from LAME encoder padding  
						
						 
						
						... 
						
						
						
						Apparently, libmad not only inserts 529 samples of silence at the
beginning of the file, but also removes them at the end.
This solves the last piece of
https://github.com/MusicPlayerDaemon/MPD/issues/601 
Closes https://github.com/MusicPlayerDaemon/MPD/issues/601  
						
						
					 
					
						2019-08-03 08:35:00 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						3e3d8c7f9d 
					 
					
						
						
							
							decoder/mad: pad the input buffer with zero bytes and end of file  
						
						 
						
						... 
						
						
						
						libmad requires padding the input buffer with "MAD_BUFFER_GUARD" zero
bytes at the end of the file, or else it is unable to decode the last
frame.
This fixes yet another bug which prevented this plugin from decoding
the last frame, see
https://github.com/MusicPlayerDaemon/MPD/issues/601  
						
						
					 
					
						2019-08-03 08:32:27 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9b99a9897a 
					 
					
						
						
							
							decoder/mad: don't count the Xing/LAME metadata frame  
						
						 
						
						... 
						
						
						
						The Xing/LAME frame indicates how many frames there are, but that
excludes the initial Xing/LAME frame.  Therefore, it should not be
counted.
This fixes an off-by-one bug which caused the last frame to be
skipped, fixing one part of
https://github.com/MusicPlayerDaemon/MPD/issues/601  
						
						
					 
					
						2019-08-03 08:25:48 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						4f56fdc397 
					 
					
						
						
							
							decoder/mad: make "current_frame" zero-based  
						
						 
						
						... 
						
						
						
						Increment "current_frame" after processing the frame. 
						
						
					 
					
						2019-08-03 08:24:25 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c87d6825ec 
					 
					
						
						
							
							decoder/mad: add API documentation  
						
						 
						
						
						
						
					 
					
						2019-08-03 08:07:30 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						00830a20e3 
					 
					
						
						
							
							decoder/mad: convert to class, make almost everything private  
						
						 
						
						
						
						
					 
					
						2019-08-03 07:52:51 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						d39d2874b4 
					 
					
						
						
							
							decoder/mad: move code to methods RunDecoder(), RunScan()  
						
						 
						
						
						
						
					 
					
						2019-08-03 07:49:41 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a0a74951b8 
					 
					
						
						
							
							decoder/mad: eliminate attribute "bit_rate"  
						
						 
						
						... 
						
						
						
						This also fixes a bug which caused the bit rate to not update after
seeking. 
						
						
					 
					
						2019-08-03 00:38:45 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						779a6855ff 
					 
					
						
						
							
							decoder/mad: add noexcept  
						
						 
						
						
						
						
					 
					
						2019-08-03 00:28:59 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f7ed7446ae 
					 
					
						
						
							
							decoder/mad: use MAD_F_MIN and MAD_F_MAX  
						
						 
						
						
						
						
					 
					
						2019-08-03 00:27:59 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9d44a6d2ae 
					 
					
						
						
							
							decoder/mad: use Clamp()  
						
						 
						
						
						
						
					 
					
						2019-08-03 00:26:57 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						10da9ee7ba 
					 
					
						
						
							
							decoder/mad: refactor local variables in FillBuffer()  
						
						 
						
						
						
						
					 
					
						2019-08-02 23:19:11 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f9eff31205 
					 
					
						
						
							
							decoder/mad: use sizeof(input_buffer)  
						
						 
						
						
						
						
					 
					
						2019-08-02 23:19:11 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						1d74a029a2 
					 
					
						
						
							
							decoder/mad: simplify variable initialization in FillBuffer()  
						
						 
						
						
						
						
					 
					
						2019-08-02 23:19:11 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6b8ca514bb 
					 
					
						
						
							
							decoder/mad: fix broken log message  
						
						 
						
						... 
						
						
						
						Broken since commit f8bfea8bae 
						
						
					 
					
						2019-08-02 22:58:16 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f51e555154 
					 
					
						
						
							
							decoder/mad: change "mp3_" suffix to "mad_"  
						
						 
						
						
						
						
					 
					
						2019-08-02 22:49:55 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						61a3c69a06 
					 
					
						
						
							
							decoder/mad: make enums strictly-typed  
						
						 
						
						
						
						
					 
					
						2019-08-02 22:49:55 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						089615a01e 
					 
					
						
						
							
							decoder/mad: include cleanup  
						
						 
						
						
						
						
					 
					
						2019-08-02 22:49:55 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						52bee8f81f 
					 
					
						
						
							
							util/StaticFifoBuffer: add GetAvailable()  
						
						 
						
						
						
						
					 
					
						2019-08-02 22:49:55 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						adc25e648f 
					 
					
						
						
							
							util/StaticFifoBuffer: add constexpr  
						
						 
						
						
						
						
					 
					
						2019-08-02 22:49:33 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						31da8eac9b 
					 
					
						
						
							
							util/StaticFifoBuffer: add noexcept  
						
						 
						
						
						
						
					 
					
						2019-08-02 22:49:05 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						e00464435b 
					 
					
						
						
							
							util/Compiler.h: move compiler version checks to meson.build  
						
						 
						
						
						
						
					 
					
						2019-08-02 15:53:16 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Diomendius 
							
						 
					 
					
						
						
							
						
						b81138bda1 
					 
					
						
						
							
							Fix JACK plugin outputting only to left channel  
						
						 
						
						... 
						
						
						
						The JACK output plugin would not correctly upmix mono input files when exactly 2 output ports were configured. This fixes that. 
						
						
					 
					
						2019-08-02 15:52:20 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						fe2f8c088a 
					 
					
						
						
							
							Partition, ...: add noexcept to callback methods  
						
						 
						
						
						
						
					 
					
						2019-08-02 14:44:00 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6de088140b 
					 
					
						
						
							
							lib/xiph/OggVisitor: invoke OnOggPacket() with the "E_O_S" packet  
						
						 
						
						... 
						
						
						
						The "end of stream" packet is not special; it contains normal data,
and thus we should pass it to OnOggPacket().
This fixes one part of https://github.com/MusicPlayerDaemon/MPD/issues/601  
						
						
					 
					
						2019-08-02 14:04:08 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						86d0534638 
					 
					
						
						
							
							lib/xiph/OggVisitor: more API documentation  
						
						 
						
						
						
						
					 
					
						2019-08-02 13:56:00 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						af99f9fc90 
					 
					
						
						
							
							pcm/Volume: convert S16 to S24 to preserve quality and reduce noise  
						
						 
						
						... 
						
						
						
						Applying software volume to S16 samples means several bits of
precision are lost; at 25% volume, two bits are lost.  Additionally,
dithering adds some noise.
The problem gets worse when you apply the software volume code twice:
for the software mixer volume, and again for the replay gain.  This
loses some more precision and adds even more dithering noise, which
can become audible (see
https://github.com/MusicPlayerDaemon/MPD/issues/542 ).
By converting everything to 24 bit, we need to shift only two bits to
the right instead of ten, losing nearly no precision, and dithering is
not needed.  Even if the output device is unable to play S24 directly,
we can convert back to S16 with only one stage of dithering.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/542  
						
						
					 
					
						2019-07-30 20:03:37 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a784c8b1ae 
					 
					
						
						
							
							net/Resolver: replace memset(0) with empty C++ initializer list  
						
						 
						
						
						
						
					 
					
						2019-07-29 11:32:06 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						991bbea875 
					 
					
						
						
							
							Merge branch 'v0.21.x'  
						
						 
						
						
						
						
					 
					
						2019-07-29 11:32:00 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						1033dbca2b 
					 
					
						
						
							
							playlist/Song: add missing includes  
						
						 
						
						
						
						
					 
					
						2019-07-29 11:31:30 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a2d2210713 
					 
					
						
						
							
							ls: fix early return in uri_supported_scheme()  
						
						 
						
						... 
						
						
						
						Fixes regression by commit 4e2a551f30 
Closes https://github.com/MusicPlayerDaemon/MPD/issues/599  
						
						
					 
					
						2019-07-29 11:08:47 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						b955334882 
					 
					
						
						
							
							decoder/opus: ignore case in replay gain tag names  
						
						 
						
						... 
						
						
						
						Closes https://github.com/MusicPlayerDaemon/MPD/issues/604  
						
						
					 
					
						2019-07-29 10:40:37 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						90ea3bf985 
					 
					
						
						
							
							playlist/Song: support backslash in relative URIs  
						
						 
						
						... 
						
						
						
						Closes https://github.com/MusicPlayerDaemon/MPD/issues/607  
						
						
					 
					
						2019-07-29 09:58:53 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						426891ab31 
					 
					
						
						
							
							output/Init: pass MixerType to _load_mixer()  
						
						 
						
						
						
						
					 
					
						2019-07-12 17:11:14 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						b94de51ac4 
					 
					
						
						
							
							system/Error: move code to IsErrno()  
						
						 
						
						
						
						
					 
					
						2019-07-12 17:11:14 +02:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						db024c27d5 
					 
					
						
						
							
							output/Source: allow the ReplayGainFilter to change the AudioFormat  
						
						 
						
						... 
						
						
						
						Just in case. 
						
						
					 
					
						2019-07-08 20:16:53 +02:00