Max Kellermann 
							
						 
					 
					
						
						
							
						
						964442c5ad 
					 
					
						
						
							
							ffmpeg: call tag_free() instead of free()  
						
						... 
						
						
						
						tag objects must be freed with tag_free() to ensure that all resources
are freed. 
						
						
					 
					
						2008-10-30 19:01:36 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						25f4efcdb8 
					 
					
						
						
							
							ffmpeg: eliminated local variable "tag"  
						
						... 
						
						
						
						The function ffmpeg_tag() already has the variable base.tag, which can
be used for this. 
						
						
					 
					
						2008-10-30 19:01:31 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						7cbd9821c6 
					 
					
						
						
							
							ffmpeg: make ffmpeg_helper() return bool  
						
						... 
						
						
						
						ffmpeg_try_decode() did not interpret ffmpeg_helper()'s return value
properly; migrate everything to bool to make it consistent. 
						
						
					 
					
						2008-10-30 19:01:23 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						078d83ca13 
					 
					
						
						
							
							ffmpeg: removed debug messages  
						
						... 
						
						
						
						We don't need those anymore, they just fill the log. 
						
						
					 
					
						2008-10-30 19:01:18 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						b180d0b47f 
					 
					
						
						
							
							ffmpeg: initialize base.decoder  
						
						... 
						
						
						
						ffmpeg_tag() did not initialize base.decoder, which made valgrind
unhappy, and can lead to a egmentation fault. 
						
						
					 
					
						2008-10-30 18:08:52 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						4d72bda4c3 
					 
					
						
						
							
							listen: set file mode 666 on the unix socket  
						
						... 
						
						
						
						Depending on MPD's umask, the file permissions of the unix socket were
too restrictive, and many clients were not able to connect.  Do a
chmod(0666) on the socket, to allow everybody to connect. 
						
						
					 
					
						2008-10-30 18:03:18 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9ec695559f 
					 
					
						
						
							
							pulse: fix segfault without sink name  
						
						... 
						
						
						
						Commit d692e9 broke configurations without explicit server or sink
configuration.  Check for getBlockParam()==NULL. 
						
						
					 
					
						2008-10-30 17:46:56 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						5f6383d68c 
					 
					
						
						
							
							mpc: provide 24 bit samples  
						
						... 
						
						
						
						Similar to libmad, libmpcdec provides samples with higher quality than
16 bit.  Send 24 bit samples to MPD, which allows MPD to apply
dithering just in case the output devices are only 16 bit capable. 
						
						
					 
					
						2008-10-30 08:45:00 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						0db07a920e 
					 
					
						
						
							
							mpc: moved sample size into a constant  
						
						... 
						
						
						
						Don't hard-code the "16 bits" or "2 bytes" in multiple locations. 
						
						
					 
					
						2008-10-30 08:44:51 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6773dea5b0 
					 
					
						
						
							
							mpc: renamed variable "s16" to "dest"  
						
						... 
						
						
						
						The name "s16" implies 16 bit integers.  To make the code more
generic, rename it to "dest". 
						
						
					 
					
						2008-10-30 08:44:43 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						51348d6992 
					 
					
						
						
							
							mpc: fix broken integer sample conversion  
						
						... 
						
						
						
						The conversion of integer samples was completely broken, which
presumably didn't annoy anybody because libmpcdec provides float
samples on most installations. 
						
						
					 
					
						2008-10-30 08:44:28 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						ecd485acbd 
					 
					
						
						
							
							mpc: fix boolean interpretation of input_stream_seek()  
						
						... 
						
						
						
						When input_stream_seek() was converted to return a bool, this wasn't
adjusted in the musepack plugin. 
						
						
					 
					
						2008-10-30 08:42:18 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						62d4fa9306 
					 
					
						
						
							
							decoder: use bool for return values and flags  
						
						... 
						
						
						
						Don't return 0/-1 on success/error, but true/false.  Instead of int,
use bool for storing flags. 
						
						
					 
					
						2008-10-30 08:38:54 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						d29bad4410 
					 
					
						
						
							
							mp3: make mp3_read() return bool  
						
						... 
						
						
						
						Its only caller in mp3_decode() just compared its value with
DECODE_BREAK.  Convert that to bool, and return false if the loop
should be ended.  Also eliminate some superfluous command checking
code, which was already done in the preceding while loop. 
						
						
					 
					
						2008-10-30 06:09:28 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						f8722913cf 
					 
					
						
						
							
							output: removed audio_output.result  
						
						... 
						
						
						
						Since open() and play() close the device on error, we can simply check
audio_output.open instead of audio_output.result after a call. 
						
						
					 
					
						2008-10-29 22:34:37 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						7da0e005f3 
					 
					
						
						
							
							output: delay reopen after device failure  
						
						... 
						
						
						
						When one of several output devices failed, MPD tried to reopen it
quite often, wasting a lot of resources.  This patch adds a delay:
wait 10 seconds before retrying.  This might be changed to exponential
delays later, but for now, it makes the problem go away. 
						
						
					 
					
						2008-10-29 22:32:50 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						0eae1c55ad 
					 
					
						
						
							
							output: moved code to audio_output_update()  
						
						... 
						
						
						
						Moved code from syncAudioDeviceStates() to audio_output_update(). 
						
						
					 
					
						2008-10-29 22:17:44 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						678314534a 
					 
					
						
						
							
							output: always call cancel() before stop()  
						
						... 
						
						
						
						Stopping an audio output device without cancelling its buffer doesn't
make sense.  Combine the two operations, which saves several cancel
calls. 
						
						
					 
					
						2008-10-29 22:17:42 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						07bb46de88 
					 
					
						
						
							
							input_file: refuse to open non-regular files  
						
						... 
						
						
						
						Don't allow users to open a file which is non-regular (e.g. pipes,
devices). 
						
						
					 
					
						2008-10-29 21:11:28 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						84f7d9c6b3 
					 
					
						
						
							
							input_file: check fstat() failure  
						
						
						
						
					 
					
						2008-10-29 21:11:20 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						fb08213659 
					 
					
						
						
							
							input_file: use GLib for logging  
						
						
						
						
					 
					
						2008-10-29 21:11:04 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						8f3d962219 
					 
					
						
						
							
							log: don't use utils.h  
						
						... 
						
						
						
						Prefer GLib over utils.h. 
						
						
					 
					
						2008-10-29 21:02:22 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						cf376b4bc8 
					 
					
						
						
							
							output: moved audioDeviceStates to audio_output.enabled  
						
						
						
						
					 
					
						2008-10-29 20:49:51 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2f76db4c78 
					 
					
						
						
							
							output: close device on play error  
						
						... 
						
						
						
						When an output plugin fails to play a chunk, close it.  This replaces
various manual close() calls in nearly all plugins. 
						
						
					 
					
						2008-10-29 20:40:33 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						58c5bee9f0 
					 
					
						
						
							
							output: use bool for return values and flags  
						
						... 
						
						
						
						Don't return 0/-1 on success/error, but true/false.  Instead of int,
use bool for storing flags. 
						
						
					 
					
						2008-10-29 20:40:27 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						03390d8be1 
					 
					
						
						
							
							audio: call closeAudioDevice() on error  
						
						... 
						
						
						
						Instead of implementing another loop which calls audio_output_close()
on all configured devices, simply call closeAudioDevice(). 
						
						
					 
					
						2008-10-29 20:39:56 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						030238bb10 
					 
					
						
						
							
							audio: removed variable "audioOpened"  
						
						... 
						
						
						
						This variable is never read, and can be removed. 
						
						
					 
					
						2008-10-29 20:39:48 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						b967702059 
					 
					
						
						
							
							pulse: clear pa_simple pointer in pulse_close()  
						
						... 
						
						
						
						The pointer becomes invalid due to pa_simple_free(), which may lead to
segmentation faults when the output is reopened later. 
						
						
					 
					
						2008-10-29 20:38:20 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						d692e925a4 
					 
					
						
						
							
							pulse: use GLib instead of util.h/log.h  
						
						... 
						
						
						
						Use GLib allocation and logging functions. 
						
						
					 
					
						2008-10-29 20:37:36 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						38df17546a 
					 
					
						
						
							
							pulse: no CamelCase  
						
						
						
						
					 
					
						2008-10-29 20:37:15 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2867c8e9b1 
					 
					
						
						
							
							player: handle songs shorter than the initial buffer  
						
						... 
						
						
						
						When the decoder exited before the buffer has grown big enough
("buffer_before_play"), the player thread waited forever.  Add an
additional check which disables buffering as soon as the decoder
exits. 
						
						
					 
					
						2008-10-29 18:35:10 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						5c4dc8d03c 
					 
					
						
						
							
							oss: check and override audio_format properly  
						
						... 
						
						
						
						Don't accept 24 bit audio.  Force MPD to use 16 bit if anything other
than 8 or 16 bit is selected. 
						
						
					 
					
						2008-10-29 18:35:03 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c6714f1755 
					 
					
						
						
							
							player: added variable "play_audio_format"  
						
						... 
						
						
						
						The local variable "play_audio_format" is updated every time the
player starts playing a new song.  This way, we always know exactly
which audio format is current.  The old code broke when a new song had
a different format: ob.audio_format is the format of the next song,
not of the current one - using this caused breakage for the software
volume control. 
						
						
					 
					
						2008-10-29 17:29:30 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						528b7c3f5e 
					 
					
						
						
							
							decoder: automatically flush the output buffer after decoder exits  
						
						... 
						
						
						
						A decoder_flush() invocation was missing in the FLAC plugin, resulting
in casual assertion failures due to a wrong assumption about the last
chunk's audio format.  It's much easier to remove that decoder_flush()
function and make the decoder thread call ob_flush(). 
						
						
					 
					
						2008-10-29 17:29:06 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						74c85811af 
					 
					
						
						
							
							decoder_api: make the audio_format parameter mandatory  
						
						... 
						
						
						
						There are no callers which pass audio_format==NULL, and it shouldn't
be allowed. 
						
						
					 
					
						2008-10-29 17:29:03 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c042faab42 
					 
					
						
						
							
							player: request new song only if there is no pending command  
						
						... 
						
						
						
						Request the next song from the playlist (by clearing pc.next_song)
only if the player command is empty.  If it is not, the player may be
clearing the song that has already been queued, leading to an
assertion failure. 
						
						
					 
					
						2008-10-29 17:28:49 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						be90199c5a 
					 
					
						
						
							
							decoder_api: removed decoder_clear()  
						
						... 
						
						
						
						Call ob_clear() in decoder_command_finished() instead of implementing
that call in every decoder plugin. 
						
						
					 
					
						2008-10-29 17:28:47 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						d6c4441c78 
					 
					
						
						
							
							mp3: seek in background  
						
						... 
						
						
						
						Remember the seek_where argument and call decoder_command_finished()
immediately.  This way, the player thread can continue working, and we
can receive more commands.
This also fixes several issues which resulted in broken frames,
leading to erroneos "elapsed" values: frames weren't parsed properly,
since the code was checking for command!=NONE. 
						
						
					 
					
						2008-10-29 17:22:56 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						de588448df 
					 
					
						
						
							
							mp3: return from mp3_synth_and_send() on any command  
						
						... 
						
						
						
						Previously, the function would only return when a STOP was issued.  It
makes more sense to consider all possible commands. 
						
						
					 
					
						2008-10-29 16:17:21 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6158858f82 
					 
					
						
						
							
							mp3: moved code to mp3_synth_and_send()  
						
						... 
						
						
						
						Break the large function mp3_read() into smaller pieces. 
						
						
					 
					
						2008-10-29 16:14:08 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						e0532ae0a8 
					 
					
						
						
							
							mp3: moved code to mp3_send_pcm()  
						
						... 
						
						
						
						Break the large function mp3_read() into smaller pieces. 
						
						
					 
					
						2008-10-29 16:14:02 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a6ad0e4047 
					 
					
						
						
							
							mp3: moved code to mp3_update_timer_next_frame()  
						
						... 
						
						
						
						Break the large function mp3_read() into smaller pieces. 
						
						
					 
					
						2008-10-29 16:13:51 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						0d079ee515 
					 
					
						
						
							
							mp3: moved code to mp3_this_frame_offset()  
						
						... 
						
						
						
						Break the large function mp3_read() into smaller pieces. 
						
						
					 
					
						2008-10-29 16:13:01 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a6f8776c94 
					 
					
						
						
							
							mp3: moved code to mp3_time_to_frame()  
						
						... 
						
						
						
						Break the large function mp3_read() into smaller pieces. 
						
						
					 
					
						2008-10-29 16:12:26 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						ec3083948f 
					 
					
						
						
							
							mp3: assert that the stream is seekable  
						
						... 
						
						
						
						dc_seek() won't send a SEEK command to the decoder thread unless the
stream is seekable.  No need to do another check; convert that to an
assertion. 
						
						
					 
					
						2008-10-29 16:11:16 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						78b08f03f2 
					 
					
						
						
							
							decoder_api: don't cast need_chunks() to int  
						
						... 
						
						
						
						need_chunks() returns a decoder_command enum.  Store its return value
as this type. 
						
						
					 
					
						2008-10-29 16:11:15 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a0b57f3782 
					 
					
						
						
							
							mp3: moved code to mp3_filesize_to_song_length()  
						
						... 
						
						
						
						The function mp3_decode_first_frame() is too large.  Move some code to
separate smaller functions. 
						
						
					 
					
						2008-10-28 20:44:08 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						898978a67d 
					 
					
						
						
							
							mp3: no "goto"  
						
						... 
						
						
						
						http://xkcd.com/292/  
					
						2008-10-28 20:43:17 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						28b47725ff 
					 
					
						
						
							
							mp3: use GLib allocation functions  
						
						... 
						
						
						
						This removes the need for util.h. 
						
						
					 
					
						2008-10-28 20:43:15 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						56ebdf1cd1 
					 
					
						
						
							
							mp3: use bool  
						
						... 
						
						
						
						Use the C99 bool data type for boolean values. 
						
						
					 
					
						2008-10-28 20:42:33 +01:00