diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-01-25 15:04:07 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-01-25 15:07:30 +0200 |
commit | 69fe2522f8c2a04eda112eee6319ca2e85d7038b (patch) | |
tree | 83a8b19997e621309344ca1f3997a48886ef0944 /libao2/ao_oss.c | |
parent | 9436e0452fad48e671d7320cb18c588655f3d230 (diff) | |
parent | 1cda8b002fb19c3da14760fe1f9fc76992a05c29 (diff) | |
download | mpv-69fe2522f8c2a04eda112eee6319ca2e85d7038b.tar.bz2 mpv-69fe2522f8c2a04eda112eee6319ca2e85d7038b.tar.xz |
Merge svn changes up to r30301
Diffstat (limited to 'libao2/ao_oss.c')
-rw-r--r-- | libao2/ao_oss.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/libao2/ao_oss.c b/libao2/ao_oss.c index 6872b15946..58d3b233cc 100644 --- a/libao2/ao_oss.c +++ b/libao2/ao_oss.c @@ -96,7 +96,7 @@ static int format2oss(int format) case AF_FORMAT_MPEG2: return AFMT_MPEG; #endif #ifdef AFMT_AC3 - case AF_FORMAT_AC3: return AFMT_AC3; + case AF_FORMAT_AC3_NE: return AFMT_AC3; #endif } mp_msg(MSGT_AO, MSGL_V, "OSS: Unknown/not supported internal format: %s\n", af_fmt2str_short(format)); @@ -139,7 +139,7 @@ static int oss2format(int format) case AFMT_MPEG: return AF_FORMAT_MPEG2; #endif #ifdef AFMT_AC3 - case AFMT_AC3: return AF_FORMAT_AC3; + case AFMT_AC3: return AF_FORMAT_AC3_NE; #endif } mp_tmsg(MSGT_GLOBAL,MSGL_ERR,"[AO OSS] Unknown/Unsupported OSS format: %x.\n", format); @@ -208,7 +208,7 @@ static int control(int cmd,void *arg){ return CONTROL_OK; #endif - if(ao_data.format == AF_FORMAT_AC3) + if(AF_FORMAT_IS_AC3(ao_data.format)) return CONTROL_TRUE; if ((fd = open(oss_mixer_device, O_RDONLY)) > 0) @@ -326,12 +326,14 @@ static int init(int rate,int channels,int format,int flags){ fcntl(audio_fd, F_SETFD, FD_CLOEXEC); #endif - if(format == AF_FORMAT_AC3) { + if(AF_FORMAT_IS_AC3(format)) { ao_data.samplerate=rate; ioctl (audio_fd, SNDCTL_DSP_SPEED, &ao_data.samplerate); } ac3_retry: + if (AF_FORMAT_IS_AC3(format)) + format = AF_FORMAT_AC3_NE; ao_data.format=format; oss_format=format2oss(format); if (oss_format == -1) { @@ -361,7 +363,7 @@ ac3_retry: af_fmt2str_short(ao_data.format), af_fmt2str_short(format)); ao_data.channels = channels; - if(format != AF_FORMAT_AC3) { + if(!AF_FORMAT_IS_AC3(format)) { // We only use SNDCTL_DSP_CHANNELS for >2 channels, in case some drivers don't have it if (ao_data.channels > 2) { if ( ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &ao_data.channels) == -1 || @@ -476,10 +478,10 @@ static void reset(void){ #endif oss_format = format2oss(ao_data.format); - if(ao_data.format == AF_FORMAT_AC3) + if(AF_FORMAT_IS_AC3(ao_data.format)) ioctl (audio_fd, SNDCTL_DSP_SPEED, &ao_data.samplerate); ioctl (audio_fd, SNDCTL_DSP_SETFMT, &oss_format); - if(ao_data.format != AF_FORMAT_AC3) { + if(!AF_FORMAT_IS_AC3(ao_data.format)) { if (ao_data.channels > 2) ioctl (audio_fd, SNDCTL_DSP_CHANNELS, &ao_data.channels); else { |