diff options
Diffstat (limited to 'libao2')
-rw-r--r-- | libao2/ao_alsa.c | 138 | ||||
-rw-r--r-- | libao2/ao_alsa5.c | 47 | ||||
-rw-r--r-- | libao2/ao_arts.c | 13 | ||||
-rw-r--r-- | libao2/ao_dxr2.c | 5 | ||||
-rw-r--r-- | libao2/ao_esd.c | 7 | ||||
-rw-r--r-- | libao2/ao_ivtv.c | 5 | ||||
-rw-r--r-- | libao2/ao_jack.c | 1 | ||||
-rw-r--r-- | libao2/ao_mpegpes.c | 7 | ||||
-rw-r--r-- | libao2/ao_openal.c | 1 | ||||
-rw-r--r-- | libao2/ao_oss.c | 56 | ||||
-rw-r--r-- | libao2/ao_pcm.c | 7 | ||||
-rw-r--r-- | libao2/ao_sdl.c | 13 | ||||
-rw-r--r-- | libao2/ao_sgi.c | 29 | ||||
-rw-r--r-- | libao2/ao_sun.c | 9 | ||||
-rw-r--r-- | libao2/ao_v4l2.c | 3 | ||||
-rw-r--r-- | libao2/audio_out.c | 16 | ||||
-rw-r--r-- | libao2/audio_out.h | 3 |
17 files changed, 192 insertions, 168 deletions
diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c index 57f0bd07cb..03afc5d729 100644 --- a/libao2/ao_alsa.c +++ b/libao2/ao_alsa.c @@ -39,7 +39,6 @@ #include "subopt-helper.h" #include "mixer.h" #include "mp_msg.h" -#include "help_mp.h" #define ALSA_PCM_NEW_HW_PARAMS_API #define ALSA_PCM_NEW_SW_PARAMS_API @@ -72,9 +71,13 @@ static snd_pcm_format_t alsa_format; static snd_pcm_hw_params_t *alsa_hwparams; static snd_pcm_sw_params_t *alsa_swparams; +#define BUFFER_TIME 500000 // 0.5 s +#define FRAGCOUNT 16 + static size_t bytes_per_sample; static int alsa_can_pause; +static snd_pcm_sframes_t prepause_frames; #define ALSA_DEVICE_SIZE 256 @@ -134,8 +137,8 @@ static int control(int cmd, void *arg) mix_index = strtol(test_mix_index, &test_mix_index, 0); if (*test_mix_index){ - mp_msg(MSGT_AO,MSGL_ERR, - MSGTR_AO_ALSA_InvalidMixerIndexDefaultingToZero); + mp_tmsg(MSGT_AO,MSGL_ERR, + "[AO_ALSA] Invalid mixer index. Defaulting to 0.\n"); mix_index = 0 ; } } @@ -155,32 +158,32 @@ static int control(int cmd, void *arg) } if ((err = snd_mixer_open(&handle, 0)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_MixerOpenError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Mixer open error: %s\n", snd_strerror(err)); return CONTROL_ERROR; } if ((err = snd_mixer_attach(handle, card)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_MixerAttachError, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Mixer attach %s error: %s\n", card, snd_strerror(err)); snd_mixer_close(handle); return CONTROL_ERROR; } if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_MixerRegisterError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Mixer register error: %s\n", snd_strerror(err)); snd_mixer_close(handle); return CONTROL_ERROR; } err = snd_mixer_load(handle); if (err < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_MixerLoadError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Mixer load error: %s\n", snd_strerror(err)); snd_mixer_close(handle); return CONTROL_ERROR; } elem = snd_mixer_find_selem(handle, sid); if (!elem) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToFindSimpleControl, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to find simple control '%s',%i.\n", snd_mixer_selem_id_get_name(sid), snd_mixer_selem_id_get_index(sid)); snd_mixer_close(handle); return CONTROL_ERROR; @@ -195,7 +198,7 @@ static int control(int cmd, void *arg) //setting channels if ((err = snd_mixer_selem_set_playback_volume(elem, SND_MIXER_SCHN_FRONT_LEFT, set_vol)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSettingLeftChannel, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Error setting left channel, %s\n", snd_strerror(err)); snd_mixer_close(handle); return CONTROL_ERROR; @@ -205,7 +208,7 @@ static int control(int cmd, void *arg) set_vol = vol->right / f_multi + pmin + 0.5; if ((err = snd_mixer_selem_set_playback_volume(elem, SND_MIXER_SCHN_FRONT_RIGHT, set_vol)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSettingRightChannel, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Error setting right channel, %s\n", snd_strerror(err)); snd_mixer_close(handle); return CONTROL_ERROR; @@ -253,8 +256,15 @@ static void parse_device (char *dest, const char *src, int len) static void print_help (void) { - mp_msg (MSGT_AO, MSGL_FATAL, - MSGTR_AO_ALSA_CommandlineHelp); + mp_tmsg (MSGT_AO, MSGL_FATAL, + "\n[AO_ALSA] -ao alsa commandline help:\n"\ + "[AO_ALSA] Example: mplayer -ao alsa:device=hw=0.3\n"\ + "[AO_ALSA] Sets first card fourth hardware device.\n\n"\ + "[AO_ALSA] Options:\n"\ + "[AO_ALSA] noblock\n"\ + "[AO_ALSA] Opens device in non-blocking mode.\n"\ + "[AO_ALSA] device=<device-name>\n"\ + "[AO_ALSA] Sets device (change , to . and : to =)\n"); } static int str_maxlen(void *strp) { @@ -313,8 +323,6 @@ static int try_open_device(const char *device, int open_mode, int try_ac3) */ static int init(int rate_hz, int channels, int format, int flags) { - unsigned int alsa_buffer_time = 500000; /* 0.5 s */ - unsigned int alsa_fragcount = 16; int err; int block; strarg_t device; @@ -340,6 +348,8 @@ static int init(int rate_hz, int channels, int format, int flags) mp_msg(MSGT_AO,MSGL_V,"alsa-init: compiled for ALSA-%s\n", SND_LIB_VERSION_STR); #endif + prepause_frames = 0; + snd_lib_error_set_handler(alsa_error_handler); ao_data.samplerate = rate_hz; @@ -457,7 +467,7 @@ static int init(int rate_hz, int channels, int format, int flags) break; default: device.str = "default"; - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ChannelsNotSupported,channels); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] %d channels are not supported.\n",channels); } device.len = strlen(device.str); if (subopt_parse(ao_subdevice, subopts) != 0) { @@ -475,19 +485,19 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = try_open_device(alsa_device, open_mode, isac3)) < 0) { if (err != -EBUSY && !block) { - mp_msg(MSGT_AO,MSGL_INFO,MSGTR_AO_ALSA_OpenInNonblockModeFailed); + mp_tmsg(MSGT_AO,MSGL_INFO,"[AO_ALSA] Open in nonblock-mode failed, trying to open in block-mode.\n"); if ((err = try_open_device(alsa_device, 0, isac3)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PlaybackOpenError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Playback open error: %s\n", snd_strerror(err)); return 0; } } else { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PlaybackOpenError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Playback open error: %s\n", snd_strerror(err)); return 0; } } if ((err = snd_pcm_nonblock(alsa_handler, 0)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSetBlockMode, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AL_ALSA] Error setting block-mode %s.\n", snd_strerror(err)); } else { mp_msg(MSGT_AO,MSGL_V,"alsa-init: pcm opened in blocking mode\n"); } @@ -498,7 +508,7 @@ static int init(int rate_hz, int channels, int format, int flags) // setting hw-parameters if ((err = snd_pcm_hw_params_any(alsa_handler, alsa_hwparams)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToGetInitialParameters, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to get initial parameters: %s\n", snd_strerror(err)); return 0; } @@ -506,7 +516,7 @@ static int init(int rate_hz, int channels, int format, int flags) err = snd_pcm_hw_params_set_access(alsa_handler, alsa_hwparams, SND_PCM_ACCESS_RW_INTERLEAVED); if (err < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetAccessType, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set access type: %s\n", snd_strerror(err)); return 0; } @@ -516,8 +526,8 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_hw_params_test_format(alsa_handler, alsa_hwparams, alsa_format)) < 0) { - mp_msg(MSGT_AO,MSGL_INFO, - MSGTR_AO_ALSA_FormatNotSupportedByHardware, af_fmt2str_short(format)); + mp_tmsg(MSGT_AO,MSGL_INFO, + "[AO_ALSA] Format %s is not supported by hardware, trying default.\n", af_fmt2str_short(format)); alsa_format = SND_PCM_FORMAT_S16_LE; if (AF_FORMAT_IS_AC3(ao_data.format)) ao_data.format = AF_FORMAT_AC3_LE; @@ -528,7 +538,7 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_hw_params_set_format(alsa_handler, alsa_hwparams, alsa_format)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetFormat, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set format: %s\n", snd_strerror(err)); return 0; } @@ -536,7 +546,7 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_hw_params_set_channels_near(alsa_handler, alsa_hwparams, &ao_data.channels)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetChannels, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set channels: %s\n", snd_strerror(err)); return 0; } @@ -548,7 +558,7 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_hw_params_set_rate_resample(alsa_handler, alsa_hwparams, 0)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToDisableResampling, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to disable resampling: %s\n", snd_strerror(err)); return 0; } @@ -557,7 +567,7 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_hw_params_set_rate_near(alsa_handler, alsa_hwparams, &ao_data.samplerate, NULL)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetSamplerate2, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set samplerate-2: %s\n", snd_strerror(err)); return 0; } @@ -567,16 +577,16 @@ static int init(int rate_hz, int channels, int format, int flags) ao_data.bps = ao_data.samplerate * bytes_per_sample; if ((err = snd_pcm_hw_params_set_buffer_time_near(alsa_handler, alsa_hwparams, - &alsa_buffer_time, NULL)) < 0) + &(unsigned int){BUFFER_TIME}, NULL)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetBufferTimeNear, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set buffer time near: %s\n", snd_strerror(err)); return 0; } if ((err = snd_pcm_hw_params_set_periods_near(alsa_handler, alsa_hwparams, - &alsa_fragcount, NULL)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetPeriods, + &(unsigned int){FRAGCOUNT}, NULL)) < 0) { + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set periods: %s\n", snd_strerror(err)); return 0; } @@ -584,7 +594,7 @@ static int init(int rate_hz, int channels, int format, int flags) /* finally install hardware parameters */ if ((err = snd_pcm_hw_params(alsa_handler, alsa_hwparams)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetHwParameters, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set hw-parameters: %s\n", snd_strerror(err)); return 0; } @@ -594,7 +604,7 @@ static int init(int rate_hz, int channels, int format, int flags) // gets buffersize for control if ((err = snd_pcm_hw_params_get_buffer_size(alsa_hwparams, &bufsize)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToGetBufferSize, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to get buffersize: %s\n", snd_strerror(err)); return 0; } else { @@ -603,7 +613,7 @@ static int init(int rate_hz, int channels, int format, int flags) } if ((err = snd_pcm_hw_params_get_period_size(alsa_hwparams, &chunk_size, NULL)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToGetPeriodSize, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO ALSA] Unable to get period size: %s\n", snd_strerror(err)); return 0; } else { mp_msg(MSGT_AO,MSGL_V,"alsa-init: got period size %li\n", chunk_size); @@ -612,13 +622,13 @@ static int init(int rate_hz, int channels, int format, int flags) /* setting software parameters */ if ((err = snd_pcm_sw_params_current(alsa_handler, alsa_swparams)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToGetSwParameters, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to get sw-parameters: %s\n", snd_strerror(err)); return 0; } #if SND_LIB_VERSION >= 0x000901 if ((err = snd_pcm_sw_params_get_boundary(alsa_swparams, &boundary)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToGetBoundary, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to get boundary: %s\n", snd_strerror(err)); return 0; } @@ -627,26 +637,26 @@ static int init(int rate_hz, int channels, int format, int flags) #endif /* start playing when one period has been written */ if ((err = snd_pcm_sw_params_set_start_threshold(alsa_handler, alsa_swparams, chunk_size)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetStartThreshold, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set start threshold: %s\n", snd_strerror(err)); return 0; } /* disable underrun reporting */ if ((err = snd_pcm_sw_params_set_stop_threshold(alsa_handler, alsa_swparams, boundary)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetStopThreshold, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set stop threshold: %s\n", snd_strerror(err)); return 0; } #if SND_LIB_VERSION >= 0x000901 /* play silence when there is an underrun */ if ((err = snd_pcm_sw_params_set_silence_size(alsa_handler, alsa_swparams, boundary)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetSilenceSize, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to set silence size: %s\n", snd_strerror(err)); return 0; } #endif if ((err = snd_pcm_sw_params(alsa_handler, alsa_swparams)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToGetSwParameters, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Unable to get sw-parameters: %s\n", snd_strerror(err)); return 0; } @@ -674,7 +684,7 @@ static void uninit(int immed) if ((err = snd_pcm_close(alsa_handler)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmCloseError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm close error: %s\n", snd_strerror(err)); return; } else { @@ -683,7 +693,7 @@ static void uninit(int immed) } } else { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_NoHandlerDefined); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] No handler defined!\n"); } } @@ -694,14 +704,18 @@ static void audio_pause(void) if (alsa_can_pause) { if ((err = snd_pcm_pause(alsa_handler, 1)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmPauseError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm pause error: %s\n", snd_strerror(err)); return; } mp_msg(MSGT_AO,MSGL_V,"alsa-pause: pause supported by hardware\n"); } else { + if (snd_pcm_delay(alsa_handler, &prepause_frames) < 0 + || prepause_frames < 0) + prepause_frames = 0; + if ((err = snd_pcm_drop(alsa_handler)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmDropError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm drop error: %s\n", snd_strerror(err)); return; } } @@ -712,22 +726,27 @@ static void audio_resume(void) int err; if (snd_pcm_state(alsa_handler) == SND_PCM_STATE_SUSPENDED) { - mp_msg(MSGT_AO,MSGL_INFO,MSGTR_AO_ALSA_PcmInSuspendModeTryingResume); + mp_tmsg(MSGT_AO,MSGL_INFO,"[AO_ALSA] Pcm in suspend mode, trying to resume.\n"); while ((err = snd_pcm_resume(alsa_handler)) == -EAGAIN) sleep(1); } if (alsa_can_pause) { if ((err = snd_pcm_pause(alsa_handler, 0)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmResumeError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm resume error: %s\n", snd_strerror(err)); return; } mp_msg(MSGT_AO,MSGL_V,"alsa-resume: resume supported by hardware\n"); } else { if ((err = snd_pcm_prepare(alsa_handler)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmPrepareError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm prepare error: %s\n", snd_strerror(err)); return; } + if (prepause_frames) { + void *silence = calloc(prepause_frames, bytes_per_sample); + play(silence, prepause_frames * bytes_per_sample, 0); + free(silence); + } } } @@ -736,14 +755,15 @@ static void reset(void) { int err; + prepause_frames = 0; if ((err = snd_pcm_drop(alsa_handler)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmPrepareError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm prepare error: %s\n", snd_strerror(err)); return; } if ((err = snd_pcm_prepare(alsa_handler)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmPrepareError, snd_strerror(err)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm prepare error: %s\n", snd_strerror(err)); return; } return; @@ -767,7 +787,7 @@ static int play(void* data, int len, int flags) //mp_msg(MSGT_AO,MSGL_ERR,"alsa-play: frames=%i, len=%i\n",num_frames,len); if (!alsa_handler) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_DeviceConfigurationError); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Device configuration error."); return 0; } @@ -782,15 +802,15 @@ static int play(void* data, int len, int flags) res = 0; } else if (res == -ESTRPIPE) { /* suspend */ - mp_msg(MSGT_AO,MSGL_INFO,MSGTR_AO_ALSA_PcmInSuspendModeTryingResume); + mp_tmsg(MSGT_AO,MSGL_INFO,"[AO_ALSA] Pcm in suspend mode, trying to resume.\n"); while ((res = snd_pcm_resume(alsa_handler)) == -EAGAIN) sleep(1); } if (res < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_WriteError, snd_strerror(res)); - mp_msg(MSGT_AO,MSGL_INFO,MSGTR_AO_ALSA_TryingToResetSoundcard); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Write error: %s\n", snd_strerror(res)); + mp_tmsg(MSGT_AO,MSGL_INFO,"[AO_ALSA] Trying to reset soundcard.\n"); if ((res = snd_pcm_prepare(alsa_handler)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_PcmPrepareError, snd_strerror(res)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] pcm prepare error: %s\n", snd_strerror(res)); return 0; break; } @@ -810,14 +830,14 @@ static int get_space(void) if ((ret = snd_pcm_status(alsa_handler, status)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_CannotGetPcmStatus, snd_strerror(ret)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Cannot get pcm status: %s\n", snd_strerror(ret)); return 0; } - ret = snd_pcm_status_get_avail(status) * bytes_per_sample; - if (ret > ao_data.buffersize) // Buffer underrun? - ret = ao_data.buffersize; - return ret; + unsigned space = snd_pcm_status_get_avail(status) * bytes_per_sample; + if (space > ao_data.buffersize) // Buffer underrun? + space = ao_data.buffersize; + return space; } /* delay in seconds between first and last sample in buffer */ diff --git a/libao2/ao_alsa5.c b/libao2/ao_alsa5.c index a9b470e9d5..d6ab7eeb22 100644 --- a/libao2/ao_alsa5.c +++ b/libao2/ao_alsa5.c @@ -30,7 +30,6 @@ #include "libaf/af_format.h" #include "mp_msg.h" -#include "help_mp.h" static const ao_info_t info = { @@ -65,7 +64,7 @@ static int init(int rate_hz, int channels, int format, int flags) snd_pcm_info_t info; snd_pcm_channel_info_t chninfo; - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ALSA5_InitInfo, rate_hz, + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ALSA5] alsa-init: requested format: %d Hz, %d channels, %s\n", rate_hz, channels, af_fmt2str_short(format)); alsa_handler = NULL; @@ -75,7 +74,7 @@ static int init(int rate_hz, int channels, int format, int flags) if ((cards = snd_cards()) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_SoundCardNotFound); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: no soundcards found.\n"); return 0; } @@ -121,7 +120,7 @@ static int init(int rate_hz, int channels, int format, int flags) ao_data.bps *= 2; break; case -1: - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_InvalidFormatReq,af_fmt2str_short(format)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: invalid format (%s) requested - output disabled.\n",af_fmt2str_short(format)); return 0; default: break; @@ -173,17 +172,17 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_open(&alsa_handler, 0, 0, SND_PCM_OPEN_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PlayBackError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: playback open error: %s\n", snd_strerror(err)); return 0; } if ((err = snd_pcm_info(alsa_handler, &info)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PcmInfoError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: PCM info error: %s\n", snd_strerror(err)); return 0; } - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ALSA5_SoundcardsFound, + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ALSA5] alsa-init: %d soundcard(s) found, using: %s\n", cards, info.name); if (info.flags & SND_PCM_INFO_PLAYBACK) @@ -192,7 +191,7 @@ static int init(int rate_hz, int channels, int format, int flags) chninfo.channel = SND_PCM_CHANNEL_PLAYBACK; if ((err = snd_pcm_channel_info(alsa_handler, &chninfo)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PcmChanInfoError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: PCM channel info error: %s\n", snd_strerror(err)); return 0; } @@ -216,7 +215,7 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_channel_params(alsa_handler, ¶ms)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_CantSetParms, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: error setting parameters: %s\n", snd_strerror(err)); return 0; } @@ -229,13 +228,13 @@ static int init(int rate_hz, int channels, int format, int flags) if ((err = snd_pcm_channel_setup(alsa_handler, &setup)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_CantSetChan, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: error setting up channel: %s\n", snd_strerror(err)); return 0; } if ((err = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ChanPrepareError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-init: channel prepare error: %s\n", snd_strerror(err)); return 0; } @@ -252,19 +251,19 @@ static void uninit(int immed) if ((err = snd_pcm_playback_drain(alsa_handler)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_DrainError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-uninit: playback drain error: %s\n", snd_strerror(err)); return; } if ((err = snd_pcm_channel_flush(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_FlushError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-uninit: playback flush error: %s\n", snd_strerror(err)); return; } if ((err = snd_pcm_close(alsa_handler)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PcmCloseError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-uninit: PCM close error: %s\n", snd_strerror(err)); return; } } @@ -276,19 +275,19 @@ static void reset(void) if ((err = snd_pcm_playback_drain(alsa_handler)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResetDrainError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-reset: playback drain error: %s\n", snd_strerror(err)); return; } if ((err = snd_pcm_channel_flush(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResetFlushError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-reset: playback flush error: %s\n", snd_strerror(err)); return; } if ((err = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResetChanPrepareError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-reset: channel prepare error: %s\n", snd_strerror(err)); return; } } @@ -300,13 +299,13 @@ static void audio_pause(void) if ((err = snd_pcm_playback_drain(alsa_handler)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PauseDrainError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-pause: playback drain error: %s\n", snd_strerror(err)); return; } if ((err = snd_pcm_channel_flush(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PauseFlushError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-pause: playback flush error: %s\n", snd_strerror(err)); return; } } @@ -317,7 +316,7 @@ static void audio_resume(void) int err; if ((err = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResumePrepareError, snd_strerror(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-resume: channel prepare error: %s\n", snd_strerror(err)); return; } } @@ -337,21 +336,21 @@ static int play(void* data, int len, int flags) { if (got_len == -EPIPE) /* underrun? */ { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_Underrun); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-play: alsa underrun, resetting stream.\n"); if ((got_len = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PlaybackPrepareError, snd_strerror(got_len)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-play: playback prepare error: %s\n", snd_strerror(got_len)); return 0; } if ((got_len = snd_pcm_write(alsa_handler, data, len)) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_WriteErrorAfterReset, + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-play: write error after reset: %s - giving up.\n", snd_strerror(got_len)); return 0; } return got_len; /* 2nd write was ok */ } - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_OutPutError, snd_strerror(got_len)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ALSA5] alsa-play: output error: %s\n", snd_strerror(got_len)); return 0; } return got_len; diff --git a/libao2/ao_arts.c b/libao2/ao_arts.c index 4a0f446c65..d828e7953e 100644 --- a/libao2/ao_arts.c +++ b/libao2/ao_arts.c @@ -28,7 +28,6 @@ #include "audio_out_internal.h" #include "libaf/af_format.h" #include "mp_msg.h" -#include "help_mp.h" #define OBTAIN_BITRATE(a) (((a != AF_FORMAT_U8) && (a != AF_FORMAT_S8)) ? 16 : 8) @@ -59,10 +58,10 @@ static int init(int rate_hz, int channels, int format, int flags) int frag_spec; if( (err=arts_init()) ) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ARTS_CantInit, arts_error_text(err)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ARTS] %s\n", arts_error_text(err)); return 0; } - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ARTS_ServerConnect); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] Connected to sound server.\n"); /* * arts supports 8bit unsigned and 16bit signed sample formats @@ -93,7 +92,7 @@ static int init(int rate_hz, int channels, int format, int flags) stream=arts_play_stream(rate_hz, OBTAIN_BITRATE(format), channels, "MPlayer"); if(stream == NULL) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ARTS_CantOpenStream); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ARTS] Unable to open a stream.\n"); arts_free(); return 0; } @@ -104,11 +103,11 @@ static int init(int rate_hz, int channels, int format, int flags) frag_spec = ARTS_PACKET_SIZE_LOG2 | ARTS_PACKETS << 16; arts_stream_set(stream, ARTS_P_PACKET_SETTINGS, frag_spec); ao_data.buffersize = arts_stream_get(stream, ARTS_P_BUFFER_SIZE); - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ARTS_StreamOpen); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] Stream opened.\n"); - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ARTS_BufferSize, + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] buffer size: %d\n", ao_data.buffersize); - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ARTS_BufferSize, + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] buffer size: %d\n", arts_stream_get(stream, ARTS_P_PACKET_SIZE)); return 1; diff --git a/libao2/ao_dxr2.c b/libao2/ao_dxr2.c index 37bf6f636d..cac669db58 100644 --- a/libao2/ao_dxr2.c +++ b/libao2/ao_dxr2.c @@ -26,7 +26,6 @@ #include <dxr2ioctl.h> #include "config.h" #include "mp_msg.h" -#include "help_mp.h" #include "libavutil/common.h" #include "mpbswap.h" @@ -73,7 +72,7 @@ static int control(int cmd,void *arg){ if(v.arg != volume) { volume = v.arg; if( ioctl(dxr2_fd,DXR2_IOC_SET_AUDIO_VOLUME,&v) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_DXR2_SetVolFailed,volume); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO DXR2] Setting volume to %d failed.\n",volume); return CONTROL_ERROR; } } @@ -135,7 +134,7 @@ static int init(int rate,int channels,int format,int flags){ break; #endif default: - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_DXR2_UnsupSamplerate,rate); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO DXR2] %d Hz not supported, try to resample.\n",rate); return 0; } diff --git a/libao2/ao_esd.c b/libao2/ao_esd.c index 593d5a934a..1097d4dfa6 100644 --- a/libao2/ao_esd.c +++ b/libao2/ao_esd.c @@ -51,7 +51,6 @@ #include "audio_out_internal.h" #include "libaf/af_format.h" #include "mp_msg.h" -#include "help_mp.h" #define ESD_RESAMPLES 0 @@ -168,7 +167,7 @@ static int init(int rate_hz, int channels, int format, int flags) if (esd_fd < 0) { esd_fd = esd_open_sound(server); if (esd_fd < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ESD_CantOpenSound, + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ESD] esd_open_sound failed: %s\n", strerror(errno)); return 0; } @@ -245,14 +244,14 @@ static int init(int rate_hz, int channels, int format, int flags) lag_serv = (esd_latency * 4.0f) / (bytes_per_sample * rate_hz); lag_seconds = lag_net + lag_serv; audio_delay += lag_seconds; - mp_msg(MSGT_AO, MSGL_INFO,MSGTR_AO_ESD_LatencyInfo, + mp_tmsg(MSGT_AO, MSGL_INFO,"[AO ESD] latency: [server: %0.2fs, net: %0.2fs] (adjust %0.2fs)\n", lag_serv, lag_net, lag_seconds); } esd_play_fd = esd_play_stream_fallback(esd_fmt, rate_hz, server, ESD_CLIENT_NAME); if (esd_play_fd < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ESD_CantOpenPBStream, strerror(errno)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ESD] failed to open ESD playback stream: %s\n", strerror(errno)); return 0; } diff --git a/libao2/ao_ivtv.c b/libao2/ao_ivtv.c index b09e5308bb..1fe1b1edda 100644 --- a/libao2/ao_ivtv.c +++ b/libao2/ao_ivtv.c @@ -30,7 +30,6 @@ #include "config.h" #include "mp_msg.h" -#include "help_mp.h" #include "audio_out.h" #include "audio_out_internal.h" @@ -86,7 +85,7 @@ init (int rate, int channels, int format, int flags) /* check for supported audio rate */ if (rate != 32000 || rate != 41000 || rate != 48000) { - mp_msg (MSGT_AO, MSGL_ERR, MSGTR_AO_MPEGPES_UnsupSamplerate, rate); + mp_tmsg (MSGT_AO, MSGL_ERR, "[AO MPEGPES] %d Hz not supported, try to resample.\n", rate); rate = 48000; } @@ -147,7 +146,7 @@ get_space (void) static int play (void *data, int len, int flags) { - int ivtv_write (unsigned char *data, int len); + int ivtv_write (const unsigned char *data, int len); if (ao_data.format != AF_FORMAT_MPEG2) return 0; diff --git a/libao2/ao_jack.c b/libao2/ao_jack.c index 0d2492c02b..65bd229bf3 100644 --- a/libao2/ao_jack.c +++ b/libao2/ao_jack.c @@ -28,7 +28,6 @@ #include "config.h" #include "mp_msg.h" -#include "help_mp.h" #include "audio_out.h" #include "audio_out_internal.h" diff --git a/libao2/ao_mpegpes.c b/libao2/ao_mpegpes.c index 7b2d3a5788..52c2b6cca0 100644 --- a/libao2/ao_mpegpes.c +++ b/libao2/ao_mpegpes.c @@ -38,7 +38,6 @@ #include "subopt-helper.h" #include "mp_msg.h" -#include "help_mp.h" #ifdef CONFIG_DVB #include <poll.h> @@ -89,7 +88,7 @@ static int control(int cmd,void *arg){ if(dvb_mixer.volume_right>255) dvb_mixer.volume_right=255; // printf("Setting DVB volume: %d ; %d \n",dvb_mixer.volume_left,dvb_mixer.volume_right); if ( (ioctl(vo_mpegpes_fd2,AUDIO_SET_MIXER, &dvb_mixer) < 0)){ - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_MPEGPES_CantSetMixer, + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO MPEGPES] DVB audio set mixer failed: %s.\n", strerror(errno)); return CONTROL_ERROR; } @@ -253,7 +252,7 @@ static int init(int rate,int channels,int format,int flags){ case 44100: freq_id=2;break; case 32000: freq_id=3;break; default: - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_MPEGPES_UnsupSamplerate, rate); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO MPEGPES] %d Hz not supported, try to resample.\n", rate); #if 0 if(rate>48000) rate=96000; else if(rate>44100) rate=48000; else @@ -293,8 +292,6 @@ static void audio_resume(void) { } -void send_pes_packet(unsigned char* data,int len,int id,int timestamp); -void send_lpcm_packet(unsigned char* data,int len,int id,int timestamp,int freq_id); extern int vo_pts; // return: how many bytes can be played without blocking diff --git a/libao2/ao_openal.c b/libao2/ao_openal.c index 030304007c..e425b5769c 100644 --- a/libao2/ao_openal.c +++ b/libao2/ao_openal.c @@ -34,7 +34,6 @@ #endif #include "mp_msg.h" -#include "help_mp.h" #include "audio_out.h" #include "audio_out_internal.h" diff --git a/libao2/ao_oss.c b/libao2/ao_oss.c index 6c23026e87..82a0dd51e5 100644 --- a/libao2/ao_oss.c +++ b/libao2/ao_oss.c @@ -33,7 +33,6 @@ #include "config.h" #include "mp_msg.h" #include "mixer.h" -#include "help_mp.h" #ifdef HAVE_SYS_SOUNDCARD_H #include <sys/soundcard.h> @@ -142,7 +141,7 @@ static int oss2format(int format) case AFMT_AC3: return AF_FORMAT_AC3_NE; #endif } - mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_AO_OSS_UnknownUnsupportedFormat, format); + mp_tmsg(MSGT_GLOBAL,MSGL_ERR,"[AO OSS] Unknown/Unsupported OSS format: %x.\n", format); return -1; } @@ -154,6 +153,29 @@ static int prepause_space; static const char *oss_mixer_device = PATH_DEV_MIXER; static int oss_mixer_channel = SOUND_MIXER_PCM; +#ifdef SNDCTL_DSP_GETPLAYVOL +static int volume_oss4(ao_control_vol_t *vol, int cmd) { + int v; + + if (audio_fd < 0) + return CONTROL_ERROR; + + if (cmd == AOCONTROL_GET_VOLUME) { + if (ioctl(audio_fd, SNDCTL_DSP_GETPLAYVOL, &v) == -1) + return CONTROL_ERROR; + vol->right = (v & 0xff00) >> 8; + vol->left = v & 0x00ff; + return CONTROL_OK; + } else if (cmd == AOCONTROL_SET_VOLUME) { + v = ((int) vol->right << 8) | (int) vol->left; + if (ioctl(audio_fd, SNDCTL_DSP_SETPLAYVOL, &v) == -1) + return CONTROL_ERROR; + return CONTROL_OK; + } else + return CONTROL_UNKNOWN; +} +#endif + // to set/get/query special features/parameters static int control(int cmd,void *arg){ switch(cmd){ @@ -179,6 +201,12 @@ static int control(int cmd,void *arg){ ao_control_vol_t *vol = (ao_control_vol_t *)arg; int fd, v, devs; +#ifdef SNDCTL_DSP_GETPLAYVOL + // Try OSS4 first + if (volume_oss4(vol, cmd) == CONTROL_OK) + return CONTROL_OK; +#endif + if(AF_FORMAT_IS_AC3(ao_data.format)) return CONTROL_TRUE; @@ -247,7 +275,7 @@ static int init(int rate,int channels,int format,int flags){ int fd, devs, i; if ((fd = open(oss_mixer_device, O_RDONLY)) == -1){ - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_CantOpenMixer, + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS] audio_setup: Can't open mixer device %s: %s\n", oss_mixer_device, strerror(errno)); }else{ ioctl(fd, SOUND_MIXER_READ_DEVMASK, &devs); @@ -256,7 +284,7 @@ static int init(int rate,int channels,int format,int flags){ for (i=0; i<SOUND_MIXER_NRDEVICES; i++){ if(!strcasecmp(mixer_channels[i], mchan)){ if(!(devs & (1 << i))){ - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_ChanNotFound,mchan); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS] audio_setup: Audio card mixer does not have channel '%s', using default.\n",mchan); i = SOUND_MIXER_NRDEVICES+1; break; } @@ -265,7 +293,7 @@ static int init(int rate,int channels,int format,int flags){ } } if(i==SOUND_MIXER_NRDEVICES){ - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_ChanNotFound,mchan); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS] audio_setup: Audio card mixer does not have channel '%s', using default.\n",mchan); } } } else @@ -281,14 +309,14 @@ static int init(int rate,int channels,int format,int flags){ audio_fd=open(dsp, O_WRONLY); #endif if(audio_fd<0){ - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_CantOpenDev, dsp, strerror(errno)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS] audio_setup: Can't open audio device %s: %s\n", dsp, strerror(errno)); return 0; } #ifdef __linux__ /* Remove the non-blocking flag */ if(fcntl(audio_fd, F_SETFL, 0) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_CantMakeFd, strerror(errno)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS] audio_setup: Can't make file descriptor blocking: %s\n", strerror(errno)); return 0; } #endif @@ -317,7 +345,7 @@ ac3_retry: } if( ioctl(audio_fd, SNDCTL_DSP_SETFMT, &oss_format)<0 || oss_format != format2oss(format)) { - mp_msg(MSGT_AO,MSGL_WARN, MSGTR_AO_OSS_CantSet, dsp, + mp_tmsg(MSGT_AO,MSGL_WARN, "[AO OSS] Can't set audio device %s to %s output, trying %s...\n", dsp, af_fmt2str_short(format), af_fmt2str_short(AF_FORMAT_S16_NE) ); format=AF_FORMAT_S16_NE; goto ac3_retry; @@ -339,14 +367,14 @@ ac3_retry: if (ao_data.channels > 2) { if ( ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &ao_data.channels) == -1 || ao_data.channels != channels ) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_CantSetChans, channels); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS] audio_setup: Failed to set audio device to %d channels.\n", channels); return 0; } } else { int c = ao_data.channels-1; if (ioctl (audio_fd, SNDCTL_DSP_STEREO, &c) == -1) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_CantSetChans, ao_data.channels); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS] audio_setup: Failed to set audio device to %d channels.\n", ao_data.channels); return 0; } ao_data.channels=c+1; @@ -360,7 +388,7 @@ ac3_retry: if(ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &zz)==-1){ int r=0; - mp_msg(MSGT_AO,MSGL_WARN,MSGTR_AO_OSS_CantUseGetospace); + mp_tmsg(MSGT_AO,MSGL_WARN,"[AO OSS] audio_setup: driver doesn't support SNDCTL_DSP_GETOSPACE :-(\n"); if(ioctl(audio_fd, SNDCTL_DSP_GETBLKSIZE, &r)==-1){ mp_msg(MSGT_AO,MSGL_V,"audio_setup: %d bytes/frag (config.h)\n",ao_data.outburst); } else { @@ -391,7 +419,7 @@ ac3_retry: } free(data); if(ao_data.buffersize==0){ - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_CantUseSelect); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS]\n *** Your audio driver DOES NOT support select() ***\n Recompile MPlayer with #undef HAVE_AUDIO_SELECT in config.h !\n\n"); return 0; } #endif @@ -440,7 +468,7 @@ static void reset(void){ uninit(1); audio_fd=open(dsp, O_WRONLY); if(audio_fd < 0){ - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_OSS_CantReopen, strerror(errno)); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO OSS]\nFatal error: *** CANNOT RE-OPEN / RESET AUDIO DEVICE *** %s\n", strerror(errno)); return; } @@ -492,8 +520,6 @@ static int get_space(void){ if(ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &zz)!=-1){ // calculate exact buffer space: playsize = zz.fragments*zz.fragsize; - if (playsize > MAX_OUTBURST) - playsize = (MAX_OUTBURST / zz.fragsize) * zz.fragsize; return playsize; } #endif diff --git a/libao2/ao_pcm.c b/libao2/ao_pcm.c index 10ee82a0e2..3639647284 100644 --- a/libao2/ao_pcm.c +++ b/libao2/ao_pcm.c @@ -32,7 +32,6 @@ #include "audio_out.h" #include "audio_out_internal.h" #include "mp_msg.h" -#include "help_mp.h" #ifdef __MINGW32__ // for GetFileType to detect pipes @@ -181,10 +180,10 @@ static int init(int rate,int channels,int format,int flags){ ao_data.format=format; ao_data.bps=channels*rate*(af_fmt2bits(format)/8); - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_PCM_FileInfo, ao_outputfilename, + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO PCM] File: %s (%s)\nPCM: Samplerate: %iHz Channels: %s Format %s\n", ao_outputfilename, (ao_pcm_waveheader?"WAVE":"RAW PCM"), rate, (channels > 1) ? "Stereo" : "Mono", af_fmt2str_short(format)); - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_PCM_HintInfo); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO PCM] Info: Faster dumping is achieved with -vc null -vo null -ao pcm:fast\n[AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).\n"); fp = fopen(ao_outputfilename, "wb"); if(fp) { @@ -193,7 +192,7 @@ static int init(int rate,int channels,int format,int flags){ } return 1; } - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_PCM_CantOpenOutputFile, + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO PCM] Failed to open %s for writing!\n", ao_outputfilename); return 0; } diff --git a/libao2/ao_sdl.c b/libao2/ao_sdl.c index c886cd8bb6..e9ae7298d5 100644 --- a/libao2/ao_sdl.c +++ b/libao2/ao_sdl.c @@ -26,7 +26,6 @@ #include "config.h" #include "mp_msg.h" -#include "help_mp.h" #include "audio_out.h" #include "audio_out_internal.h" @@ -139,11 +138,11 @@ static int init(int rate,int channels,int format,int flags){ /* Allocate ring-buffer memory */ buffer = av_fifo_alloc(BUFFSIZE); - mp_msg(MSGT_AO,MSGL_INFO,MSGTR_AO_SDL_INFO, rate, (channels > 1) ? "Stereo" : "Mono", af_fmt2str_short(format)); + mp_tmsg(MSGT_AO,MSGL_INFO,"[AO SDL] Samplerate: %iHz Channels: %s Format %s\n", rate, (channels > 1) ? "Stereo" : "Mono", af_fmt2str_short(format)); if(ao_subdevice) { setenv("SDL_AUDIODRIVER", ao_subdevice, 1); - mp_msg(MSGT_AO,MSGL_INFO,MSGTR_AO_SDL_DriverInfo, ao_subdevice); + mp_tmsg(MSGT_AO,MSGL_INFO,"[AO SDL] using %s audio driver.\n", ao_subdevice); } ao_data.channels=channels; @@ -177,7 +176,7 @@ static int init(int rate,int channels,int format,int flags){ default: aspec.format = AUDIO_S16LSB; ao_data.format = AF_FORMAT_S16_LE; - mp_msg(MSGT_AO,MSGL_WARN,MSGTR_AO_SDL_UnsupportedAudioFmt, format); + mp_tmsg(MSGT_AO,MSGL_WARN,"[AO SDL] Unsupported audio format: 0x%x.\n", format); } /* The desired audio frequency in samples-per-second. */ @@ -198,13 +197,13 @@ void callback(void *userdata, Uint8 *stream, int len); userdata is the pointer s /* initialize the SDL Audio system */ if (SDL_Init (SDL_INIT_AUDIO/*|SDL_INIT_NOPARACHUTE*/)) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_SDL_CantInit, SDL_GetError()); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO SDL] SDL Audio initialization failed: %s\n", SDL_GetError()); return 0; } /* Open the audio device and start playing sound! */ if(SDL_OpenAudio(&aspec, &obtained) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_SDL_CantOpenAudio, SDL_GetError()); + mp_tmsg(MSGT_AO,MSGL_ERR,"[AO SDL] Unable to open audio: %s\n", SDL_GetError()); return 0; } @@ -232,7 +231,7 @@ void callback(void *userdata, Uint8 *stream, int len); userdata is the pointer s ao_data.format = AF_FORMAT_U16_BE; break; default: - mp_msg(MSGT_AO,MSGL_WARN,MSGTR_AO_SDL_UnsupportedAudioFmt, obtained.format); + mp_tmsg(MSGT_AO,MSGL_WARN,"[AO SDL] Unsupported audio format: 0x%x.\n", obtained.format); return 0; } diff --git a/libao2/ao_sgi.c b/libao2/ao_sgi.c index 602ee25a27..40bc6b9177 100644 --- a/libao2/ao_sgi.c +++ b/libao2/ao_sgi.c @@ -29,7 +29,6 @@ #include "audio_out.h" #include "audio_out_internal.h" #include "mp_msg.h" -#include "help_mp.h" #include "libaf/af_format.h" static const ao_info_t info = @@ -117,7 +116,7 @@ static int fmt2sgial(int *format, int *width) { // to set/get/query special features/parameters static int control(int cmd, void *arg){ - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_SGI_INFO); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO SGI] control.\n"); switch(cmd) { case AOCONTROL_QUERY_FORMAT: @@ -138,7 +137,7 @@ static int init(int rate, int channels, int format, int flags) { smpfmt = fmt2sgial(&format, &smpwidth); - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_SGI_InitInfo, rate, (channels > 1) ? "Stereo" : "Mono", af_fmt2str_short(format)); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO SGI] init: Samplerate: %iHz Channels: %s Format %s\n", rate, (channels > 1) ? "Stereo" : "Mono", af_fmt2str_short(format)); { /* from /usr/share/src/dmedia/audio/setrate.c */ @@ -148,7 +147,7 @@ static int init(int rate, int channels, int format, int flags) { if(ao_subdevice) { rv = alGetResourceByName(AL_SYSTEM, ao_subdevice, AL_OUTPUT_DEVICE_TYPE); if (!rv) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SGI_InvalidDevice); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SGI] play: invalid device.\n"); return 0; } } @@ -161,20 +160,20 @@ static int init(int rate, int channels, int format, int flags) { x[1].value.i = AL_CRYSTAL_MCLK_TYPE; if (alSetParams(rv,x, 2)<0) { - mp_msg(MSGT_AO, MSGL_WARN, MSGTR_AO_SGI_CantSetParms_Samplerate, alGetErrorString(oserror())); + mp_tmsg(MSGT_AO, MSGL_WARN, "[AO SGI] init: setparams failed: %s\nCould not set desired samplerate.\n", alGetErrorString(oserror())); } if (x[0].sizeOut < 0) { - mp_msg(MSGT_AO, MSGL_WARN, MSGTR_AO_SGI_CantSetAlRate); + mp_tmsg(MSGT_AO, MSGL_WARN, "[AO SGI] init: AL_RATE was not accepted on the given resource.\n"); } if (alGetParams(rv,x, 1)<0) { - mp_msg(MSGT_AO, MSGL_WARN, MSGTR_AO_SGI_CantGetParms, alGetErrorString(oserror())); + mp_tmsg(MSGT_AO, MSGL_WARN, "[AO SGI] init: getparams failed: %s\n", alGetErrorString(oserror())); } realrate = alFixedToDouble(x[0].value.ll); if (frate != realrate) { - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_SGI_SampleRateInfo, realrate, frate); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO SGI] init: samplerate is now %f (desired rate is %f)\n", realrate, frate); } sample_rate = (int)realrate; } @@ -191,7 +190,7 @@ static int init(int rate, int channels, int format, int flags) { ao_config = alNewConfig(); if (!ao_config) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SGI_InitConfigError, alGetErrorString(oserror())); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SGI] init: %s\n", alGetErrorString(oserror())); return 0; } @@ -200,14 +199,14 @@ static int init(int rate, int channels, int format, int flags) { alSetSampFmt(ao_config, smpfmt) < 0 || alSetQueueSize(ao_config, sample_rate) < 0 || alSetDevice(ao_config, rv) < 0) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SGI_InitConfigError, alGetErrorString(oserror())); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SGI] init: %s\n", alGetErrorString(oserror())); return 0; } ao_port = alOpenPort("mplayer", "w", ao_config); if (!ao_port) { - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SGI_InitOpenAudioFailed, alGetErrorString(oserror())); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SGI] init: Unable to open audio channel: %s\n", alGetErrorString(oserror())); return 0; } @@ -222,7 +221,7 @@ static void uninit(int immed) { /* TODO: samplerate should be set back to the value before mplayer was started! */ - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_SGI_Uninit); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO SGI] uninit: ...\n"); if (ao_config) { alFreeConfig(ao_config); @@ -241,7 +240,7 @@ static void uninit(int immed) { // stop playing and empty buffers (for seeking/pause) static void reset(void) { - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_SGI_Reset); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO SGI] reset: ...\n"); alDiscardFrames(ao_port, queue_size); } @@ -249,14 +248,14 @@ static void reset(void) { // stop playing, keep buffers (for pause) static void audio_pause(void) { - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_SGI_PauseInfo); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO SGI] audio_pause: ...\n"); } // resume playing, after audio_pause() static void audio_resume(void) { - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_SGI_ResumeInfo); + mp_tmsg(MSGT_AO, MSGL_INFO, "[AO SGI] audio_resume: ...\n"); } diff --git a/libao2/ao_sun.c b/libao2/ao_sun.c index d43a6ad3c2..02ffa1edb6 100644 --- a/libao2/ao_sun.c +++ b/libao2/ao_sun.c @@ -47,7 +47,6 @@ #include "audio_out_internal.h" #include "libaf/af_format.h" #include "mp_msg.h" -#include "help_mp.h" static const ao_info_t info = { @@ -154,13 +153,13 @@ static int realtime_samplecounter_available(char *dev) info.play.samples = 0; if (ioctl(fd, AUDIO_SETINFO, &info)) { if ( mp_msg_test(MSGT_AO,MSGL_V) ) - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SUN_RtscSetinfoFailed); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SUN] rtsc: SETINFO failed.\n"); goto error; } if (write(fd, silence, len) != len) { if ( mp_msg_test(MSGT_AO,MSGL_V) ) - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SUN_RtscWriteFailed); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SUN] rtsc: write failed.\n"); goto error; } @@ -494,7 +493,7 @@ static int init(int rate,int channels,int format,int flags){ audio_fd=open(audio_dev, O_WRONLY); if(audio_fd<0){ - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SUN_CantOpenAudioDev, audio_dev, strerror(errno)); + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SUN] Can't open audio device %s, %s -> nosound.\n", audio_dev, strerror(errno)); return 0; } @@ -572,7 +571,7 @@ static int init(int rate,int channels,int format,int flags){ if (!ok) { char buf[128]; - mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_SUN_UnsupSampleRate, + mp_tmsg(MSGT_AO, MSGL_ERR, "[AO SUN] audio_setup: your card doesn't support %d channel, %s, %d Hz samplerate.\n", channels, af_fmt2str(format, buf, 128), rate); return 0; } diff --git a/libao2/ao_v4l2.c b/libao2/ao_v4l2.c index 3781fab359..52fba877cb 100644 --- a/libao2/ao_v4l2.c +++ b/libao2/ao_v4l2.c @@ -27,7 +27,6 @@ #include "config.h" #include "mp_msg.h" -#include "help_mp.h" #include "audio_out.h" #include "audio_out_internal.h" @@ -84,7 +83,7 @@ init (int rate, int channels, int format, int flags) /* check for supported audio rate */ if (rate != 32000 || rate != 41000 || rate != 48000) { - mp_msg (MSGT_AO, MSGL_ERR, MSGTR_AO_MPEGPES_UnsupSamplerate, rate); + mp_tmsg (MSGT_AO, MSGL_ERR, "[AO MPEGPES] %d Hz not supported, try to resample.\n", rate); rate = 48000; } diff --git a/libao2/audio_out.c b/libao2/audio_out.c index 4ac5489d0e..d6cb01fb3f 100644 --- a/libao2/audio_out.c +++ b/libao2/audio_out.c @@ -24,8 +24,6 @@ #include "audio_out.h" #include "mp_msg.h" -#include "help_mp.h" -#include "mp_core.h" /* for exit_player() */ // there are some globals: ao_data_t ao_data={0,0,0,0,OUTBURST,-1,0}; @@ -129,7 +127,7 @@ const ao_functions_t* const audio_out_drivers[] = void list_audio_out(void){ int i=0; - mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AvailableAudioOutputDrivers); + mp_tmsg(MSGT_AO, MSGL_INFO, "Available audio output drivers:\n"); mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_OUTPUTS\n"); while (audio_out_drivers[i]) { const ao_info_t *info = audio_out_drivers[i++]->info; @@ -145,10 +143,6 @@ const ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate while(ao_list[0][0]){ char* ao=ao_list[0]; int ao_len; - if (strncmp(ao, "alsa9", 5) == 0 || strncmp(ao, "alsa1x", 6) == 0) { - mp_msg(MSGT_AO, MSGL_FATAL, MSGTR_AO_ALSA9_1x_Removed); - exit_player(EXIT_NONE); - } if (ao_subdevice) { free(ao_subdevice); ao_subdevice = NULL; @@ -161,7 +155,7 @@ const ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate else ao_len = strlen(ao); - mp_msg(MSGT_AO, MSGL_V, MSGTR_AO_TryingPreferredAudioDriver, + mp_tmsg(MSGT_AO, MSGL_V, "Trying preferred audio driver '%.*s', options '%s'\n", ao_len, ao, ao_subdevice ? ao_subdevice : "[none]"); for(i=0;audio_out_drivers[i];i++){ @@ -171,12 +165,12 @@ const ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate if(audio_out->init(rate,channels,format,flags)) return audio_out; // success! else - mp_msg(MSGT_AO, MSGL_WARN, MSGTR_AO_FailedInit, ao); + mp_tmsg(MSGT_AO, MSGL_WARN, "Failed to initialize audio driver '%s'\n", ao); break; } } if (!audio_out_drivers[i]) // we searched through the entire list - mp_msg(MSGT_AO, MSGL_WARN, MSGTR_AO_NoSuchDriver, ao_len, ao); + mp_tmsg(MSGT_AO, MSGL_WARN, "No such audio driver '%.*s'\n", ao_len, ao); // continue... ++ao_list; if(!(ao_list[0])) return NULL; // do NOT fallback to others @@ -186,7 +180,7 @@ const ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate ao_subdevice = NULL; } - mp_msg(MSGT_AO, MSGL_V, MSGTR_AO_TryingEveryKnown); + mp_tmsg(MSGT_AO, MSGL_V, "Trying every known audio driver...\n"); // now try the rest... for(i=0;audio_out_drivers[i];i++){ diff --git a/libao2/audio_out.h b/libao2/audio_out.h index 049cfc5f21..e483a88422 100644 --- a/libao2/audio_out.h +++ b/libao2/audio_out.h @@ -47,8 +47,7 @@ typedef struct ao_functions_s } ao_functions_t; /* global data used by mplayer and plugins */ -typedef struct ao_data_s -{ +typedef struct ao_data { int samplerate; int channels; int format; |