4970c42c86
I've perhaps gone a bit overboard, but here's the current rundown: Both Ogg and MP3 use the "shout" audio output plugin. The shout audio output plugin itself has two new plugins, one for the Ogg encoder, and another for the MP3 (LAME) encoder. Configuration for an Ogg stream doesn't change. For an MP3 stream, configuration is the same as Ogg, with two exceptions. First, you must specify the optional "encoding" parameter, which should be set to "mp3". See mpd.conf(5) for more details. Second, the "quality" parameter is reversed for LAME, such that 1 is high quality for LAME, whereas 10 is high quality for Ogg. I've decomposed the code so that all libshout related operations are done in audioOutput_shout.c, all Ogg specific functions are in audioOutput_shout_ogg.c, and of course then all LAME specific functions are handled in audioOutput_shout_mp3.c. To develop encoder plugins for the shout audio output plugin, I basically just mimicked the plugin system used for audio outputs. This might be overkill, but hopefully if anyone ever wants to support some other sort of stream, like maybe AAC, FLAC, or WMA (hey it could happen), they will hopefully be all set. The Ogg encoder is slightly less optimal under this configuration. It used to send shout data directly out of its ogg_page structures. Now, in the interest of encapsulation, it copies the data from its ogg_page structures into a buffer provided by the shout audio output plugin (see audioOutput_shout_ogg.c, line 77.) I suspect the performance impact is negligible. As for metadata, I'm pretty sure they'll both work. I wrote up a test scaffold that would create a fake tag, and tell the plugin to send it out to the stream every few seconds. It seemed to work fine. Of course, if something does break, I'll be glad to fix it. Lastly, I've renamed lots of things into snake_case, in keeping with normalperson's wishes in that regard. [mk: moved the MP3 patch after this one. Splitted this patch into several parts; the others were already applied before this one. Fixed a bunch GCC warnings and wrong whitespace modifications. Made it compile with mpd-mk by adapting to its prototypes]
286 lines
9.2 KiB
Plaintext
286 lines
9.2 KiB
Plaintext
# An example configuration file for MPD
|
|
# See the mpd.conf man page for a more detailed description of each parameter.
|
|
|
|
######################## REQUIRED PATHS ########################
|
|
music_directory "~/music"
|
|
playlist_directory "~/.mpd/playlists"
|
|
db_file "~/.mpd/mpd.db"
|
|
log_file "~/.mpd/mpd.log"
|
|
error_file "~/.mpd/mpd.error"
|
|
################################################################
|
|
|
|
|
|
######################## OPTIONAL PATHS ########################
|
|
#
|
|
# If you wish to use mpd --kill to stop MPD, then you must
|
|
# specify a file here in which to store MPD's process ID.
|
|
#
|
|
#pid_file "~/.mpd/mpd.pid"
|
|
#
|
|
# If specified, MPD will save its current state (playlist,
|
|
# current song, playing/paused, etc.) at exit. This will be
|
|
# used to restore the session the next time it is run.
|
|
#
|
|
#state_file "~/.mpd/mpdstate"
|
|
#
|
|
################################################################
|
|
|
|
|
|
######################## DAEMON OPTIONS ########################
|
|
#
|
|
# If started as root, MPD will drop root privileges and run as
|
|
# this user instead. Otherwise, MPD will run as the user it was
|
|
# started by. If left unspecified, MPD will not drop root
|
|
# privileges at all (not recommended).
|
|
#
|
|
#user "nobody"
|
|
#
|
|
# The address and port to listen on.
|
|
#
|
|
#bind_to_address "any"
|
|
#port "6600"
|
|
#
|
|
# Controls the amount of information that is logged. Can be
|
|
# "default", "secure", or "verbose".
|
|
#
|
|
#log_level "default"
|
|
#
|
|
################################################################
|
|
|
|
|
|
########################### ZEROCONF ###########################
|
|
#
|
|
# If yes, service information will be published with Zeroconf.
|
|
#
|
|
#zeroconf_enabled "yes"
|
|
#
|
|
# The service name to publish. This name should be unique on
|
|
# your local network.
|
|
#
|
|
#zeroconf_name "Music Player"
|
|
#
|
|
################################################################
|
|
|
|
|
|
########################## PERMISSIONS #########################
|
|
#
|
|
# MPD can require that users specify a password before using it.
|
|
# You may specify one ore more here, along with what users who
|
|
# log in with that password are allowed to do.
|
|
#
|
|
#password "password@read,add,control,admin"
|
|
#
|
|
# Specifies what permissions a user who has not logged in with a
|
|
# password has. By default, all users have full access to MPD
|
|
# if no password is specified above, or no access if one or
|
|
# more passwords are specified.
|
|
#
|
|
#default_permissions "read,add,control,admin"
|
|
#
|
|
################################################################
|
|
|
|
|
|
########################## AUDIO OUTPUT ########################
|
|
#
|
|
# MPD supports many audio output types, as well as playing
|
|
# through multiple audio outputs at the same time. You can
|
|
# specify one or more here. If you don't specify any, MPD will
|
|
# automatically scan for a usable audio output.
|
|
#
|
|
# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs>
|
|
# for examples of other audio outputs.
|
|
#
|
|
# An example of an ALSA output:
|
|
#
|
|
#audio_output {
|
|
# type "alsa"
|
|
# name "My ALSA Device"
|
|
# device "hw:0,0" # optional
|
|
# format "44100:16:2" # optional
|
|
#}
|
|
#
|
|
# An example of an OSS output:
|
|
#
|
|
#audio_output {
|
|
# type "oss"
|
|
# name "My OSS Device"
|
|
# device "/dev/dsp" # optional
|
|
# format "44100:16:2" # optional
|
|
#}
|
|
#
|
|
# An example of a shout output (for streaming to Icecast):
|
|
#
|
|
#audio_output {
|
|
# type "shout"
|
|
# encoding "ogg"
|
|
# name "My Shout Stream"
|
|
# host "localhost"
|
|
# port "8000"
|
|
# mount "/mpd.ogg"
|
|
# password "hackme"
|
|
# quality "5.0"
|
|
# bitrate "128"
|
|
# format "44100:16:1"
|
|
# user "source" # optional
|
|
# description "My Stream Description" # optional
|
|
# genre "jazz" # optional
|
|
# public "no" # optional
|
|
# timeout "2" # optional
|
|
#}
|
|
#
|
|
# An example of a null output (for no audio output):
|
|
#
|
|
#audio_output {
|
|
# type "null"
|
|
# name "My Null Output"
|
|
#}
|
|
#
|
|
# Force all decoded audio to be converted to this format before
|
|
# being passed to the audio outputs.
|
|
#
|
|
#audio_output_format "44100:16:2"
|
|
#
|
|
# If MPD has been compiled with libsamplerate support, this
|
|
# specifies the sample rate converter to use. Possible
|
|
# values can be found in the mpd.conf man page or the
|
|
# libsamplerate documentation.
|
|
#
|
|
#samplerate_converter "Fastest Sinc Interpolator"
|
|
#
|
|
################################################################
|
|
|
|
|
|
############################# MIXER ############################
|
|
#
|
|
# MPD needs to know what mixer settings to change when you
|
|
# adjust the volume. If you don't specify one here, MPD will
|
|
# pick one based on which ones it was compiled with support for.
|
|
#
|
|
# An example for controlling an ALSA mixer:
|
|
#
|
|
#mixer_type "alsa"
|
|
#mixer_device "default"
|
|
#mixer_control "PCM"
|
|
#
|
|
# An example for controlling an OSS mixer:
|
|
#
|
|
#mixer_type "oss"
|
|
#mixer_device "/dev/mixer"
|
|
#mixer_control "PCM"
|
|
#
|
|
# If you want MPD to adjust the volume of audio sent to the
|
|
# audio outputs, you can tell it to use the software mixer:
|
|
#
|
|
#mixer_type "software"
|
|
#
|
|
################################################################
|
|
|
|
|
|
######################### NORMALIZATION ########################
|
|
#
|
|
# Specifies the type of ReplayGain to use. Can be "album" or
|
|
# "track". ReplayGain will not be used if not specified. See
|
|
# <http://www.replaygain.org> for more details.
|
|
#
|
|
#replaygain "album"
|
|
#
|
|
# Sets the pre-amp used for files that have ReplayGain tags.
|
|
#
|
|
#replaygain_preamp "0"
|
|
#
|
|
# Enable on the fly volume normalization. This will cause the
|
|
# volume of all songs played to be adjusted so that they sound
|
|
# as though they are of equal loudness.
|
|
#
|
|
#volume_normalization "no"
|
|
#
|
|
################################################################
|
|
|
|
|
|
########################### BUFFERING ##########################
|
|
#
|
|
# The size of the buffer containing decoded audio. You probably
|
|
# shouldn't change this.
|
|
#
|
|
#audio_buffer_size "2048"
|
|
#
|
|
# How much of the buffer to fill before beginning to play.
|
|
# Increase this if you hear skipping when changing songs.
|
|
#
|
|
#buffer_before_play "10%"
|
|
#
|
|
# Similar options for the HTTP stream buffer. If you hear
|
|
# skipping while playing HTTP streams, you may wish to increase
|
|
# these.
|
|
#
|
|
#http_buffer_size "128"
|
|
#http_prebuffer_size "25%"
|
|
#
|
|
################################################################
|
|
|
|
|
|
########################### HTTP PROXY #########################
|
|
#
|
|
# Specifies the HTTP proxy to use for playing HTTP streams.
|
|
#
|
|
#http_proxy_host "proxy.isp.com"
|
|
#http_proxy_port "8080"
|
|
#http_proxy_user "user"
|
|
#http_proxy_password "password"
|
|
#
|
|
################################################################
|
|
|
|
|
|
############################# LIMITS ###########################
|
|
#
|
|
# These are various limits to prevent MPD from using too many
|
|
# resources. You should only change them if they start
|
|
# restricting your usage of MPD.
|
|
#
|
|
#connection_timeout "60"
|
|
#max_connections "5"
|
|
#max_playlist_length "16384"
|
|
#max_command_list_size "2048"
|
|
#max_output_buffer_size "8192"
|
|
#
|
|
################################################################
|
|
|
|
|
|
###################### CHARACTER ENCODINGS #####################
|
|
#
|
|
# If file or directory names do not display correctly, then you
|
|
# may need to change this. In most cases it should be either
|
|
# "ISO-8859-1" or "UTF-8". You must recreate your database
|
|
# after changing this (use mpd --create-db).
|
|
#
|
|
#filesystem_charset "ISO-8859-1"
|
|
#
|
|
# The encoding that ID3v1 tags should be converted from.
|
|
#
|
|
#id3v1_encoding "ISO-8859-1"
|
|
#
|
|
################################################################
|
|
|
|
|
|
######################### OTHER OPTIONS ########################
|
|
#
|
|
# Try disabling this if you have MP3s which appear to end
|
|
# abruptly. If this solves the problem, it is highly
|
|
# recommended that you fix your MP3s with vbrfix (available from
|
|
# <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
|
|
# point you can re-enable support for gapless MP3 playback.
|
|
#
|
|
#gapless_mp3_playback "yes"
|
|
#
|
|
# Enable this if you wish to use your MPD created playlists in
|
|
# other music players.
|
|
#
|
|
#save_absolute_paths_in_playlists "no"
|
|
#
|
|
# A list of tag types that MPD will scan for and make available
|
|
# to clients.
|
|
#
|
|
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
|
|
#
|
|
################################################################
|