From eca47b1a5edae0c25936c73ce60fa2a45ac42155 Mon Sep 17 00:00:00 2001 From: reimar Date: Sun, 2 Jan 2005 14:41:47 +0000 Subject: Add -ao pcm suboptions and remove -aofile and -waveheader options. Base on idea by Olivier Rolland (billl at users dot sf dot net) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@14299 b3059339-0415-0410-9bf9-f77b7e298cf2 --- DOCS/man/en/mplayer.1 | 28 +++++++++++++++++----------- cfg-mplayer.h | 6 +++--- etc/dvb-menu.conf | 2 -- etc/menu.conf | 2 -- libao2/ao_pcm.c | 23 +++++++++++++++++++---- 5 files changed, 39 insertions(+), 22 deletions(-) diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1 index a41b21e6de..89a9c861f8 100644 --- a/DOCS/man/en/mplayer.1 +++ b/DOCS/man/en/mplayer.1 @@ -1669,10 +1669,6 @@ Specify the VOBsub subtitle ID. Override audio driver/\:card buffer size detection. . .TP -.B \-aofile -Override the default filename employed by \-ao pcm. -. -.TP .B \-aop Specify audio plugin(s) and their options (also see the audio plugins section of the documentation). @@ -1770,11 +1766,6 @@ With values below 100 the initial volume (which is 100%) will be above the maximum, which e.g.\& the OSD cannot display correctly. . .TP -.B \-nowaveheader (\-ao pcm only) -Don't include wave header. -Used for raw PCM. -. -.TP .B \-volstep <0\-100> Set the step size of mixer volume changes in percent of the whole range (default: 3). @@ -1908,9 +1899,24 @@ Produces no audio output but maintains video playback speed. Use \-nosound for benchmarking. . .TP -.B pcm (also see \-aofile) +.B pcm Raw PCM/\:wave file writer audio output. -Writes the sound to ./audiodump.wav. +.PD 0 +.RSs +.IPs (no)waveheader +Include or do not include the wave header (default: included). +When not included, raw PCM will be generated. +.IPs file= +Write the sound to instead of the default +audiodump.wav. +.REss +.PD 1 +.RS +.sp 1 +.I NOTE: +If you do not specify any option the output is progressive +(i.e.\& not interlaced). +.RE . .TP .B plugin\ \ diff --git a/cfg-mplayer.h b/cfg-mplayer.h index 311090714c..a013f952a5 100644 --- a/cfg-mplayer.h +++ b/cfg-mplayer.h @@ -167,9 +167,9 @@ m_option_t mplayer_opts[]={ {"abs", &ao_data.buffersize, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL}, // -ao pcm options: - {"aofile", &ao_outputfilename, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"waveheader", &ao_pcm_waveheader, CONF_TYPE_FLAG, 0, 0, 1, NULL}, - {"nowaveheader", &ao_pcm_waveheader, CONF_TYPE_FLAG, 0, 1, 0, NULL}, + {"aofile", "-aofile is deprecated. Use -ao pcm:file= instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL}, + {"waveheader", "-waveheader is deprecated. Use -ao pcm:waveheader instead.\n", CONF_TYPE_PRINT, 0, 0, 1, NULL}, + {"nowaveheader", "-nowaveheader is deprecated. Use -ao pcm:nowaveheader instead.\n", CONF_TYPE_PRINT, 0, 1, 0, NULL}, {"alsa", "-alsa has been removed. Remove it from your config file.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL}, diff --git a/etc/dvb-menu.conf b/etc/dvb-menu.conf index a556e19a34..1668777fce 100644 --- a/etc/dvb-menu.conf +++ b/etc/dvb-menu.conf @@ -58,10 +58,8 @@ - - diff --git a/etc/menu.conf b/etc/menu.conf index 50722172c3..8aae949326 100644 --- a/etc/menu.conf +++ b/etc/menu.conf @@ -55,10 +55,8 @@ - - diff --git a/libao2/ao_pcm.c b/libao2/ao_pcm.c index 4d97f95fc5..ba11490baf 100644 --- a/libao2/ao_pcm.c +++ b/libao2/ao_pcm.c @@ -5,6 +5,7 @@ #include #include "bswap.h" +#include "subopt-helper.h" #include "libaf/af_format.h" #include "audio_out.h" #include "audio_out_internal.h" @@ -24,8 +25,8 @@ LIBAO_EXTERN(pcm) extern int vo_pts; -char *ao_outputfilename = NULL; -int ao_pcm_waveheader = 1; +static char *ao_outputfilename = NULL; +static int ao_pcm_waveheader = 1; #define WAV_ID_RIFF 0x46464952 /* "RIFF" */ #define WAV_ID_WAVE 0x45564157 /* "WAVE" */ @@ -79,9 +80,20 @@ static int control(int cmd,void *arg){ // return: 1=success 0=fail static int init(int rate,int channels,int format,int flags){ int bits; - if(!ao_outputfilename) { - ao_outputfilename = strdup(ao_pcm_waveheader ? "audiodump.wav" : "audiodump.pcm"); + strarg_t file; + opt_t subopts[] = { + {"waveheader", OPT_ARG_BOOL, &ao_pcm_waveheader, NULL}, + {"file", OPT_ARG_STR, &file, NULL}, + {NULL} } + // set defaults + ao_pcm_waveheader = 1; + file.str = "audiodump.wav"; + file.len = 13; + if (subopt_parse(ao_subdevice, subopts) != 0) { + return 0; + } + ao_outputfilename = strndup(file.str, file.len); /* bits is only equal to format if (format == 8) or (format == 16); this means that the following "if" is a kludge and should @@ -142,6 +154,9 @@ static void uninit(int immed){ fwrite(&wavhdr,sizeof(wavhdr),1,fp); } fclose(fp); + if (ao_outputfilename) + free(ao_outputfilename); + ao_outputfilename = NULL; } // stop playing and empty buffers (for seeking/pause) -- cgit v1.2.3