aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_init.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* output: delay reopen after device failureMax Kellermann2008-10-291-0/+1
| | | | | | | 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.
* output: moved audioDeviceStates to audio_output.enabledMax Kellermann2008-10-291-0/+1
|
* output: use bool for return values and flagsMax Kellermann2008-10-291-2/+2
| | | | | Don't return 0/-1 on success/error, but true/false. Instead of int, use bool for storing flags.
* pcm_utils: added pcm_convert_init()Max Kellermann2008-10-211-1/+1
| | | | | | Instead of manually calling memset(0) on the pcm_convert_state struct, client code should use a library function from pcm_utils.c. This way, we can change the semantics of the struct easily.
* pcm_utils: renamed ConvState to struct pcm_convert_stateMax Kellermann2008-10-211-1/+1
| | | | No CamelCase, and a struct instead of a typedef.
* output: make "struct audio_output" opaque for output pluginsMax Kellermann2008-09-241-1/+3
| | | | | | | | | | | We have eliminated direct accesses to the audio_output struct from the all output plugins. Make it opaque for them, and move its real declaration to output_internal.h, similar to decoder_internal.h. Pass the opaque structure to plugin.init() only, which will return the plugin's data pointer on success, and NULL on failure. This data pointer will be passed to all other methods instead of the audio_output struct.
* output: pass audio_format to plugin.init() and plugin.open()Max Kellermann2008-09-241-1/+1
| | | | | | | Pass the globally configured audio_format as a const pointer to plugin.init(). plugin.open() gets a writable pointer which contains the audio_format requested by the plugin. Its initial value is either the configured audio_format or the input file's audio_format.
* output: one thread per audio outputMax Kellermann2008-09-241-0/+4
| | | | | | To keep I/O nastiness and latencies away from the core, move the audio output code to a separate thread, one per output. The thread is created on demand, and currently runs until mpd exits.
* output: don't initialize inAudioFormat, outAudioFormatMax Kellermann2008-09-111-4/+0
| | | | | | As long as the device isn't open, both attributes are not used. Since they will both be initialized in audio_output_open(), we do not need the initialization in audio_output_init().
* output: removed audio_output.sameInAndOutFormatsMax Kellermann2008-09-111-1/+0
| | | | | Eliminate sameInAndOutFormats and check with audio_format_equals() each time it this information is needed. Another 4 bytes saved.
* output: removed audio_output.convertAudioFormatMax Kellermann2008-09-111-5/+2
| | | | | Instead of checking convertAudioFormat, we can simply check if reqAudioFormat is defined. This saves 4 bytes in the struct.
* audio: replaced copyAudioFormat() with simple assignmentMax Kellermann2008-09-091-1/+1
| | | | | | | | | The "!src" check in copyAudioFormat() used to hide bugs - one should never pass NULL to it. There is one caller which might pass NULL, add a check in this caller. Instead of doing mempcy(), we can simply assign the structures, which looks more natural.
* output: renamed the functions in output_control.cMax Kellermann2008-09-091-1/+1
| | | | Getting rid of CamcelCase, again.
* output: moved code from audioOutput.c to output_control.cMax Kellermann2008-09-091-0/+113
Similar to decoder_control.c, output_control.c will provide functions for controlling the output thread (which will be implemented later).