summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
authoratmosfear <atmosfear@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-09 07:36:32 +0000
committeratmosfear <atmosfear@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-09 07:36:32 +0000
commit7a5aba6dfe8dde79deaf3219cfcb5b0e92659e7d (patch)
tree8dee32b8f582a444954cbb54bc317866f9671142 /libao2
parentd6b8127cb56b1f1d35b6b03d21cc87bbd28b9bcb (diff)
downloadmpv-7a5aba6dfe8dde79deaf3219cfcb5b0e92659e7d.tar.bz2
mpv-7a5aba6dfe8dde79deaf3219cfcb5b0e92659e7d.tar.xz
Better audio format handling.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1067 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2')
-rw-r--r--libao2/ao_sdl.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/libao2/ao_sdl.c b/libao2/ao_sdl.c
index 717a63e9da..a1deb492d4 100644
--- a/libao2/ao_sdl.c
+++ b/libao2/ao_sdl.c
@@ -15,6 +15,7 @@
#include "audio_out.h"
#include "audio_out_internal.h"
+#include "afmt.h"
#include "../libvo/fastmemcpy.h"
@@ -46,7 +47,7 @@ char *sdl_adriver;
// General purpose Ring-buffering routines
#define BUFFSIZE 4096
-#define NUM_BUFS 16
+#define NUM_BUFS 16
static unsigned char *buffer[NUM_BUFS];
@@ -132,7 +133,10 @@ static int control(int cmd,int arg){
// SDL Callback function
void outputaudio(void *unused, Uint8 *stream, int len) {
//SDL_MixAudio(stream, read_buffer(buffers, len), len, SDL_MIX_MAXVOLUME);
+ //if(!full_buffers) printf("SDL: Buffer underrun!\n");
+
read_buffer(stream, len);
+ //printf("SDL: Full Buffers: %i\n", full_buffers);
}
// open & setup audio device
@@ -154,12 +158,34 @@ static int init(int rate,int channels,int format,int flags){
}
+ /* The desired audio format (see SDL_AudioSpec) */
+ switch(format) {
+ case AFMT_U8:
+ aspec.format = AUDIO_U8;
+ break;
+ case AFMT_S16_LE:
+ aspec.format = AUDIO_S16LSB;
+ break;
+ case AFMT_S16_BE:
+ aspec.format = AUDIO_S16MSB;
+ break;
+ case AFMT_S8:
+ aspec.format = AUDIO_S8;
+ break;
+ case AFMT_U16_LE:
+ aspec.format = AUDIO_U16LSB;
+ break;
+ case AFMT_U16_BE:
+ aspec.format = AUDIO_U16MSB;
+ break;
+ default:
+ printf("SDL: Unsupported audio format: 0x%x.\n", format);
+ return 0;
+ }
+
/* The desired audio frequency in samples-per-second. */
aspec.freq = rate;
- /* The desired audio format (see SDL_AudioSpec) */
- aspec.format = (format == 16) ? AUDIO_S16 : AUDIO_U8;
-
/* Number of channels (mono/stereo) */
aspec.channels = channels;
@@ -203,7 +229,9 @@ static void uninit(){
// stop playing and empty buffers (for seeking/pause)
static void reset(){
-
+
+ //printf("SDL: reset called!\n");
+
/* Reset ring-buffer state */
buf_read=0;
buf_write=0;