From 2ebf6c0302a5fdc7f4e39d4e8346aba387e4a16f Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Wed, 16 Feb 2000 07:27:26 +0000 Subject: [PATCH] =?UTF-8?q?=20o=20renommage=20arbitraire=20et=20totalitair?= =?UTF-8?q?e=20de=20idctmmx.S=20en=20vdec=5Fidctmmx.S=20=20o=20correction?= =?UTF-8?q?=20d'une=20typo=20d=EF=BF=BDbile=20dans=20audio=5Foutput=20au?= =?UTF-8?q?=20commit=20pr=EF=BF=BDc=EF=BF=BDdent=20=20o=20b=5Fstereo=20est?= =?UTF-8?q?=20remplac=EF=BF=BD=20par=20i=5Fchannels=20=20o=20suppression?= =?UTF-8?q?=20de=20la=20structure=20aout=5Fdsp=5Ft=20dont=20les=20membres?= =?UTF-8?q?=20d=EF=BF=BDpendant=20=20=20de=20l'output=20se=20retrouve=20da?= =?UTF-8?q?ns=20aout=5F*=5Fsys=5Ft,=20et=20les=20autres=20directement=20?= =?UTF-8?q?=20=20dans=20aout=5Fthread=5Ft,=20on=20se=20fait=20pas=20chier.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 4 +- include/audio_output.h | 77 +++++---- include/audio_sys.h | 32 ++-- include/common.h | 2 + src/ac3_decoder/ac3_decoder.c | 2 +- src/audio_decoder/audio_decoder.c | 4 +- src/audio_output/audio_output.c | 153 +++++++++--------- src/interface/intf_ctrl.c | 30 ++-- .../{idctmmx.S => vdec_idctmmx.S} | 0 9 files changed, 153 insertions(+), 151 deletions(-) rename src/video_decoder/{idctmmx.S => vdec_idctmmx.S} (100%) diff --git a/Makefile b/Makefile index 58231b7077..993c96a6cf 100644 --- a/Makefile +++ b/Makefile @@ -326,10 +326,10 @@ C_OBJ = $(interface_obj) \ ifeq ($(ARCH),X86) ifeq ($(MMX), YES) ifeq ($(DECODER),new) -ASM_OBJ = video_decoder/idctmmx.o \ +ASM_OBJ = video_decoder/vdec_idctmmx.o \ video_output/video_yuv_mmx.o else -ASM_OBJ = video_decoder_ref/idctmmx.o \ +ASM_OBJ = video_decoder_ref/vdec_idctmmx.o \ video_output/video_yuv_mmx.o endif endif diff --git a/include/audio_output.h b/include/audio_output.h index 31a5bf0bc7..4075fc9b03 100644 --- a/include/audio_output.h +++ b/include/audio_output.h @@ -25,8 +25,8 @@ /* Default output device. You probably should not change this. */ #define AOUT_DEFAULT_DEVICE "/dev/dsp" -/* Default audio output format (AFMT_S16_NE = Native Endianess) */ -#define AOUT_DEFAULT_FORMAT AFMT_S16_NE +/* Default audio output format (AOUT_FMT_S16_NE = Native Endianess) */ +#define AOUT_DEFAULT_FORMAT AOUT_FMT_S16_NE /* Default stereo mode (0 stands for mono, 1 for stereo) */ #define AOUT_DEFAULT_STEREO 1 @@ -59,28 +59,6 @@ #define AOUT_FIFO_ISEMPTY( fifo ) ( (fifo).l_end_frame == (fifo).i_start_frame ) #define AOUT_FIFO_ISFULL( fifo ) ( ((((fifo).l_end_frame + 1) - (fifo).l_start_frame) & AOUT_FIFO_SIZE) == 0 ) -/***************************************************************************** - * aout_sys_t - *****************************************************************************/ -typedef struct -{ - /* Path to the audio output device (default is set to "/dev/dsp") */ - char * psz_device; - int i_fd; - - /* Format of the audio output samples (see ) */ - int i_format; - /* Following boolean is set to 0 if output sound is mono, 1 if stereo */ - boolean_t b_stereo; - /* Rate of the audio output sound (in Hz) */ - long l_rate; - - /* Buffer information structure, used by aout_sys_getbufinfo() to store the - * current state of the internal sound card buffer */ - audio_buf_info buf_info; - -} aout_sys_t; - /***************************************************************************** * aout_increment_t ***************************************************************************** @@ -118,7 +96,7 @@ typedef struct int i_type; boolean_t b_die; - boolean_t b_stereo; + int i_channels; long l_rate; vlc_mutex_t data_lock; @@ -158,23 +136,21 @@ typedef struct /***************************************************************************** * aout_thread_t : audio output thread descriptor *****************************************************************************/ -typedef int (aout_sys_open_t) ( aout_sys_t *p_sys ); -typedef int (aout_sys_reset_t) ( aout_sys_t *p_sys ); -typedef int (aout_sys_setformat_t) ( aout_sys_t *p_sys ); -typedef int (aout_sys_setchannels_t) ( aout_sys_t *p_sys ); -typedef int (aout_sys_setrate_t) ( aout_sys_t *p_sys ); -typedef long (aout_sys_getbufinfo_t) ( aout_sys_t *p_sys ); -typedef void (aout_sys_playsamples_t) ( aout_sys_t *p_sys, +typedef int (aout_sys_open_t) ( p_aout_thread_t p_aout ); +typedef int (aout_sys_reset_t) ( p_aout_thread_t p_aout ); +typedef int (aout_sys_setformat_t) ( p_aout_thread_t p_aout ); +typedef int (aout_sys_setchannels_t) ( p_aout_thread_t p_aout ); +typedef int (aout_sys_setrate_t) ( p_aout_thread_t p_aout ); +typedef long (aout_sys_getbufinfo_t) ( p_aout_thread_t p_aout ); +typedef void (aout_sys_playsamples_t) ( p_aout_thread_t p_aout, byte_t *buffer, int i_size ); -typedef void (aout_sys_close_t) ( aout_sys_t *p_sys ); +typedef void (aout_sys_close_t) ( p_aout_thread_t p_aout ); typedef struct aout_thread_s { vlc_thread_t thread_id; boolean_t b_die; - aout_sys_t sys; - vlc_mutex_t fifos_lock; aout_fifo_t fifo[ AOUT_MAX_FIFOS ]; @@ -202,6 +178,22 @@ typedef struct aout_thread_s * will be played */ mtime_t date; + /* Path to the audio output device (default is set to "/dev/dsp") */ + char * psz_device; + int i_fd; + + /* Format of the audio output samples */ + int i_format; + /* Number of channels */ + int i_channels; + /* Rate and gain of the audio output sound (in Hz) */ + long l_rate; + long l_gain; + + /* there might be some useful private structure, such as audio_buf_info + * for the OSS output */ + p_aout_sys_t p_sys; + } aout_thread_t; /* Output methods */ @@ -213,6 +205,21 @@ typedef struct aout_thread_s #define AOUT_DEFAULT_METHOD "dsp" #endif +/* Those are from but are needed because of formats + * on other platforms */ +#define AOUT_FMT_U8 0x00000008 +#define AOUT_FMT_S16_LE 0x00000010 /* Little endian signed 16 */ +#define AOUT_FMT_S16_BE 0x00000020 /* Big endian signed 16 */ +#define AOUT_FMT_S8 0x00000040 +#define AOUT_FMT_U16_LE 0x00000080 /* Little endian U16 */ +#define AOUT_FMT_U16_BE 0x00000100 /* Big endian U16 */ + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define AOUT_FMT_S16_NE AOUT_FMT_S16_LE +#elif __BYTE_ORDER == __BIG_ENDIAN +#define AOUT_FMT_S16_NE AOUT_FMT_S16_BE +#endif + /***************************************************************************** * Prototypes *****************************************************************************/ diff --git a/include/audio_sys.h b/include/audio_sys.h index 57ef606a88..e49881948f 100644 --- a/include/audio_sys.h +++ b/include/audio_sys.h @@ -10,21 +10,21 @@ /***************************************************************************** * Prototypes *****************************************************************************/ -int aout_DummySysOpen ( aout_sys_t *p_sys ); -int aout_DummySysReset ( aout_sys_t *p_sys ); -int aout_DummySysSetFormat ( aout_sys_t *p_sys ); -int aout_DummySysSetChannels ( aout_sys_t *p_sys ); -int aout_DummySysSetRate ( aout_sys_t *p_sys ); -long aout_DummySysGetBufInfo ( aout_sys_t *p_sys ); -void aout_DummySysPlaySamples ( aout_sys_t *p_sys, byte_t *buffer, int i_size ); -void aout_DummySysClose ( aout_sys_t *p_sys ); +int aout_DummySysOpen ( aout_thread_t *p_aout ); +int aout_DummySysReset ( aout_thread_t *p_aout ); +int aout_DummySysSetFormat ( aout_thread_t *p_aout ); +int aout_DummySysSetChannels ( aout_thread_t *p_aout ); +int aout_DummySysSetRate ( aout_thread_t *p_aout ); +long aout_DummySysGetBufInfo ( aout_thread_t *p_aout ); +void aout_DummySysPlaySamples ( aout_thread_t *p_aout, byte_t *buffer, int i_size ); +void aout_DummySysClose ( aout_thread_t *p_aout ); #ifdef AUDIO_DSP -int aout_DspSysOpen ( aout_sys_t *p_sys ); -int aout_DspSysReset ( aout_sys_t *p_sys ); -int aout_DspSysSetFormat ( aout_sys_t *p_sys ); -int aout_DspSysSetChannels ( aout_sys_t *p_sys ); -int aout_DspSysSetRate ( aout_sys_t *p_sys ); -long aout_DspSysGetBufInfo ( aout_sys_t *p_sys ); -void aout_DspSysPlaySamples ( aout_sys_t *p_dsp, byte_t *buffer, int i_size ); -void aout_DspSysClose ( aout_sys_t *p_sys ); +int aout_DspSysOpen ( aout_thread_t *p_aout ); +int aout_DspSysReset ( aout_thread_t *p_aout ); +int aout_DspSysSetFormat ( aout_thread_t *p_aout ); +int aout_DspSysSetChannels ( aout_thread_t *p_aout ); +int aout_DspSysSetRate ( aout_thread_t *p_aout ); +long aout_DspSysGetBufInfo ( aout_thread_t *p_aout ); +void aout_DspSysPlaySamples ( aout_thread_t *p_aout, byte_t *buffer, int i_size ); +void aout_DspSysClose ( aout_thread_t *p_aout ); #endif diff --git a/include/common.h b/include/common.h index e484a3201b..50a6c01f96 100644 --- a/include/common.h +++ b/include/common.h @@ -58,8 +58,10 @@ typedef struct input_cfg_s * p_input_cfg_t; /* Audio */ struct aout_thread_s; +struct aout_sys_s; typedef struct aout_thread_s * p_aout_thread_t; +typedef struct aout_sys_s * p_aout_sys_t; /* Video */ struct vout_thread_s; diff --git a/src/ac3_decoder/ac3_decoder.c b/src/ac3_decoder/ac3_decoder.c index f5cd4cac33..9009fb1240 100644 --- a/src/ac3_decoder/ac3_decoder.c +++ b/src/ac3_decoder/ac3_decoder.c @@ -181,7 +181,7 @@ static int InitThread( ac3dec_thread_t * p_ac3dec ) vlc_mutex_unlock( &p_ac3dec->fifo.data_lock ); aout_fifo.i_type = AOUT_ADEC_STEREO_FIFO; - aout_fifo.b_stereo = 1; + aout_fifo.i_channels = 2; aout_fifo.l_frame_size = AC3DEC_FRAME_SIZE; diff --git a/src/audio_decoder/audio_decoder.c b/src/audio_decoder/audio_decoder.c index 65176e92b4..0709359a64 100644 --- a/src/audio_decoder/audio_decoder.c +++ b/src/audio_decoder/audio_decoder.c @@ -740,13 +740,13 @@ static int InitThread( adec_thread_t * p_adec ) { intf_DbgMsg("adec debug: mode == mono\n"); aout_fifo.i_type = AOUT_ADEC_MONO_FIFO; - aout_fifo.b_stereo = 0; + aout_fifo.i_channels = 1; } else { intf_DbgMsg("adec debug: mode == stereo\n"); aout_fifo.i_type = AOUT_ADEC_STEREO_FIFO; - aout_fifo.b_stereo = 1; + aout_fifo.i_channels = 2; } /* Checking the sampling frequency */ diff --git a/src/audio_output/audio_output.c b/src/audio_output/audio_output.c index 3611abd2e8..25d4c7079d 100644 --- a/src/audio_output/audio_output.c +++ b/src/audio_output/audio_output.c @@ -20,7 +20,6 @@ *****************************************************************************/ #include -#include #include /* "intf_msg.h" */ #include /* calloc(), malloc(), free() */ @@ -86,7 +85,7 @@ aout_thread_t *aout_CreateThread( int *pi_status ) p_aout->p_sys_playsamples = aout_DummySysPlaySamples; p_aout->p_sys_close = aout_DummySysClose; } -#ifdef VIDEO_X11 +#ifdef AUDIO_DSP else if( !strcmp(psz_method, "dsp") ) { p_aout->p_sys_open = aout_DspSysOpen; @@ -106,57 +105,51 @@ aout_thread_t *aout_CreateThread( int *pi_status ) return( NULL ); } - //???? kludge to initialize some audio parameters - place this section somewhere - //???? else - p_aout->sys.i_format = AOUT_DEFAULT_FORMAT; - p_aout->sys.psz_device = main_GetPszVariable( AOUT_DSP_VAR, AOUT_DSP_DEFAULT ); - p_aout->sys.b_stereo = main_GetIntVariable( AOUT_STEREO_VAR, AOUT_STEREO_DEFAULT ); - p_aout->sys.l_rate = main_GetIntVariable( AOUT_RATE_VAR, AOUT_RATE_DEFAULT ); - // ???? end of kludge - /* - * Initialize DSP + * Initialize audio device */ - if ( p_aout->p_sys_open( &p_aout->sys ) ) + if ( p_aout->p_sys_open( p_aout ) ) { free( p_aout ); return( NULL ); } - if ( p_aout->p_sys_reset( &p_aout->sys ) ) + if ( p_aout->p_sys_reset( p_aout ) ) { - p_aout->p_sys_close( &p_aout->sys ); + p_aout->p_sys_close( p_aout ); free( p_aout ); return( NULL ); } - if ( p_aout->p_sys_setformat( &p_aout->sys ) ) + if ( p_aout->p_sys_setformat( p_aout ) ) { - p_aout->p_sys_close( &p_aout->sys ); + p_aout->p_sys_close( p_aout ); free( p_aout ); return( NULL ); } - if ( p_aout->p_sys_setchannels( &p_aout->sys ) ) + if ( p_aout->p_sys_setchannels( p_aout ) ) { - p_aout->p_sys_close( &p_aout->sys ); + p_aout->p_sys_close( p_aout ); free( p_aout ); return( NULL ); } - if ( p_aout->p_sys_setrate( &p_aout->sys ) ) + if ( p_aout->p_sys_setrate( p_aout ) ) { - p_aout->p_sys_close( &p_aout->sys ); + p_aout->p_sys_close( p_aout ); free( p_aout ); return( NULL ); } - intf_DbgMsg("aout debug: audio device (%s) opened (format=%i, stereo=%i, rate=%li)\n", - p_aout->sys.psz_device, - p_aout->sys.i_format, - p_aout->sys.b_stereo, p_aout->sys.l_rate); + + /* this code isn't very nice since some values might be uninitialized */ +/* intf_DbgMsg("aout debug: audio device (%s) opened (format=%i, channels=%i, rate=%li)\n", + p_aout->psz_device, + p_aout->i_format, + p_aout->i_channels, p_aout->l_rate); */ //?? maybe it would be cleaner to change SpawnThread prototype //?? see vout to handle status correctly - however, it is not critical since //?? this thread is only called in main and all calls are blocking if( aout_SpawnThread( p_aout ) ) { - p_aout->p_sys_close( &p_aout->sys ); + p_aout->p_sys_close( p_aout ); free( p_aout ); return( NULL ); } @@ -191,82 +184,82 @@ static int aout_SpawnThread( aout_thread_t * p_aout ) /* Compute the size (in audio units) of the audio output buffer. Although * AOUT_BUFFER_DURATION is given in microseconds, the output rate is given * in Hz, that's why we need to divide by 10^6 microseconds (1 second) */ - p_aout->l_units = (long)( ((s64)p_aout->sys.l_rate * AOUT_BUFFER_DURATION) / 1000000 ); - p_aout->l_msleep = (long)( ((s64)p_aout->l_units * 1000000) / (s64)p_aout->sys.l_rate ); + p_aout->l_units = (long)( ((s64)p_aout->l_rate * AOUT_BUFFER_DURATION) / 1000000 ); + p_aout->l_msleep = (long)( ((s64)p_aout->l_units * 1000000) / (s64)p_aout->l_rate ); /* Make aout_thread point to the right thread function, and compute the * byte size of the audio output buffer */ - switch ( p_aout->sys.b_stereo ) + switch ( p_aout->i_channels ) { /* Audio output is mono */ - case 0: - switch ( p_aout->sys.i_format ) + case 1: + switch ( p_aout->i_format ) { - case AFMT_U8: + case AOUT_FMT_U8: l_bytes = 1 * sizeof(u8) * p_aout->l_units; aout_thread = (void *)aout_Thread_U8_Mono; break; - case AFMT_S8: + case AOUT_FMT_S8: l_bytes = 1 * sizeof(s8) * p_aout->l_units; aout_thread = (void *)aout_Thread_S8_Mono; break; - case AFMT_U16_LE: - case AFMT_U16_BE: + case AOUT_FMT_U16_LE: + case AOUT_FMT_U16_BE: l_bytes = 1 * sizeof(u16) * p_aout->l_units; aout_thread = (void *)aout_Thread_U16_Mono; break; - case AFMT_S16_LE: - case AFMT_S16_BE: + case AOUT_FMT_S16_LE: + case AOUT_FMT_S16_BE: l_bytes = 1 * sizeof(s16) * p_aout->l_units; aout_thread = (void *)aout_Thread_S16_Mono; break; default: intf_ErrMsg("aout error: unknown audio output format (%i)\n", - p_aout->sys.i_format); + p_aout->i_format); return( -1 ); } break; /* Audio output is stereo */ - case 1: - switch ( p_aout->sys.i_format ) + case 2: + switch ( p_aout->i_format ) { - case AFMT_U8: + case AOUT_FMT_U8: l_bytes = 2 * sizeof(u8) * p_aout->l_units; aout_thread = (void *)aout_Thread_U8_Stereo; break; - case AFMT_S8: + case AOUT_FMT_S8: l_bytes = 2 * sizeof(s8) * p_aout->l_units; aout_thread = (void *)aout_Thread_S8_Stereo; break; - case AFMT_U16_LE: - case AFMT_U16_BE: + case AOUT_FMT_U16_LE: + case AOUT_FMT_U16_BE: l_bytes = 2 * sizeof(u16) * p_aout->l_units; aout_thread = (void *)aout_Thread_U16_Stereo; break; - case AFMT_S16_LE: - case AFMT_S16_BE: + case AOUT_FMT_S16_LE: + case AOUT_FMT_S16_BE: l_bytes = 2 * sizeof(s16) * p_aout->l_units; aout_thread = (void *)aout_Thread_S16_Stereo; break; default: intf_ErrMsg("aout error: unknown audio output format (%i)\n", - p_aout->sys.i_format); + p_aout->i_format); return( -1 ); } break; default: intf_ErrMsg("aout error: unknown number of audio channels (%i)\n", - p_aout->sys.b_stereo + 1); + p_aout->i_channels ); return( -1 ); } @@ -277,7 +270,7 @@ static int aout_SpawnThread( aout_thread_t * p_aout ) intf_ErrMsg("aout error: not enough memory to create the output buffer\n"); return( -1 ); } - if ( (p_aout->s32_buffer = (s32 *)calloc(p_aout->l_units, sizeof(s32) << p_aout->sys.b_stereo)) == NULL ) + if ( (p_aout->s32_buffer = (s32 *)calloc(p_aout->l_units, sizeof(s32) << ( p_aout->i_channels - 1))) == NULL ) { intf_ErrMsg("aout error: not enough memory to create the s32 output buffer\n"); free( p_aout->buffer ); @@ -319,8 +312,8 @@ void aout_DestroyThread( aout_thread_t * p_aout, int *pi_status ) free( p_aout->s32_buffer ); /* Free the structure */ - p_aout->p_sys_close( &p_aout->sys ); - intf_DbgMsg("aout debug: audio device (%s) closed\n", p_aout->sys.psz_device); + p_aout->p_sys_close( p_aout ); + intf_DbgMsg("aout debug: audio device (%s) closed\n", p_aout->psz_device); free( p_aout ); } @@ -356,13 +349,13 @@ aout_fifo_t * aout_CreateFifo( aout_thread_t * p_aout, aout_fifo_t * p_fifo ) case AOUT_INTF_STEREO_FIFO: p_aout->fifo[i_fifo].b_die = 0; - p_aout->fifo[i_fifo].b_stereo = p_fifo->b_stereo; + p_aout->fifo[i_fifo].i_channels = p_fifo->i_channels; p_aout->fifo[i_fifo].l_rate = p_fifo->l_rate; p_aout->fifo[i_fifo].buffer = p_fifo->buffer; p_aout->fifo[i_fifo].l_unit = 0; - InitializeIncrement( &p_aout->fifo[i_fifo].unit_increment, p_fifo->l_rate, p_aout->sys.l_rate ); + InitializeIncrement( &p_aout->fifo[i_fifo].unit_increment, p_fifo->l_rate, p_aout->l_rate ); p_aout->fifo[i_fifo].l_units = p_fifo->l_units; break; @@ -370,7 +363,7 @@ aout_fifo_t * aout_CreateFifo( aout_thread_t * p_aout, aout_fifo_t * p_fifo ) case AOUT_ADEC_STEREO_FIFO: p_aout->fifo[i_fifo].b_die = 0; - p_aout->fifo[i_fifo].b_stereo = p_fifo->b_stereo; + p_aout->fifo[i_fifo].i_channels = p_fifo->i_channels; p_aout->fifo[i_fifo].l_rate = p_fifo->l_rate; p_aout->fifo[i_fifo].l_frame_size = p_fifo->l_frame_size; @@ -487,7 +480,7 @@ static __inline__ int NextFrame( aout_thread_t * p_aout, aout_fifo_t * p_fifo, m { p_fifo->b_start_frame = 1; p_fifo->l_next_frame = (p_fifo->l_start_frame + 1) & AOUT_FIFO_SIZE; - p_fifo->l_unit = p_fifo->l_start_frame * (p_fifo->l_frame_size >> p_fifo->b_stereo); + p_fifo->l_unit = p_fifo->l_start_frame * (p_fifo->l_frame_size >> (p_fifo->i_channels - 1)); break; } p_fifo->l_start_frame = (p_fifo->l_start_frame + 1) & AOUT_FIFO_SIZE; @@ -525,16 +518,16 @@ static __inline__ int NextFrame( aout_thread_t * p_aout, aout_fifo_t * p_fifo, m } } - l_units = ((p_fifo->l_next_frame - p_fifo->l_start_frame) & AOUT_FIFO_SIZE) * (p_fifo->l_frame_size >> p_fifo->b_stereo); + l_units = ((p_fifo->l_next_frame - p_fifo->l_start_frame) & AOUT_FIFO_SIZE) * (p_fifo->l_frame_size >> (p_fifo->i_channels - 1)); l_rate = p_fifo->l_rate + ((aout_date - p_fifo->date[p_fifo->l_start_frame]) / 256); // fprintf( stderr, "aout debug: %lli (%li);\n", aout_date - p_fifo->date[p_fifo->l_start_frame], l_rate ); - InitializeIncrement( &p_fifo->unit_increment, l_rate, p_aout->sys.l_rate ); + InitializeIncrement( &p_fifo->unit_increment, l_rate, p_aout->l_rate ); p_fifo->l_units = (((l_units - (p_fifo->l_unit - - (p_fifo->l_start_frame * (p_fifo->l_frame_size >> p_fifo->b_stereo)))) - * p_aout->sys.l_rate) / l_rate) + 1; + (p_fifo->l_start_frame * (p_fifo->l_frame_size >> (p_fifo->i_channels - 1))))) + * p_aout->l_rate) / l_rate) + 1; /* We release the lock before leaving */ vlc_mutex_unlock( &p_fifo->data_lock ); @@ -585,7 +578,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) if ( p_aout->fifo[i_fifo].l_units > p_aout->l_units ) { l_buffer = 0; - while ( l_buffer < (p_aout->l_units << 1) ) /* p_aout->sys.b_stereo == 1 */ + while ( l_buffer < (p_aout->l_units << 1) ) /* p_aout->i_channels - 1 == 1 */ { p_aout->s32_buffer[l_buffer++] += (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[p_aout->fifo[i_fifo].l_unit] ); @@ -598,7 +591,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) else { l_buffer = 0; - while ( l_buffer < (p_aout->fifo[i_fifo].l_units << 1) ) /* p_aout->sys.b_stereo == 1 */ + while ( l_buffer < (p_aout->fifo[i_fifo].l_units << 1) ) /* p_aout->i_channels - 1 == 1 */ { p_aout->s32_buffer[l_buffer++] += (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[p_aout->fifo[i_fifo].l_unit] ); @@ -616,7 +609,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) if ( p_aout->fifo[i_fifo].l_units > p_aout->l_units ) { l_buffer = 0; - while ( l_buffer < (p_aout->l_units << 1) ) /* p_aout->sys.b_stereo == 1 */ + while ( l_buffer < (p_aout->l_units << 1) ) /* p_aout->i_channels - 1 == 1 */ { p_aout->s32_buffer[l_buffer++] += (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[2*p_aout->fifo[i_fifo].l_unit] ); @@ -629,7 +622,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) else { l_buffer = 0; - while ( l_buffer < (p_aout->fifo[i_fifo].l_units << 1) ) /* p_aout->sys.b_stereo */ + while ( l_buffer < (p_aout->fifo[i_fifo].l_units << 1) ) /* p_aout->i_channels - 1 == 1 */ { p_aout->s32_buffer[l_buffer++] += (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[2*p_aout->fifo[i_fifo].l_unit] ); @@ -659,7 +652,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) { if ( !p_aout->fifo[i_fifo].b_next_frame ) { - if ( NextFrame(p_aout, &p_aout->fifo[i_fifo], p_aout->date + ((((mtime_t)(l_buffer >> 1)) * 1000000) / ((mtime_t)p_aout->sys.l_rate))) ) + if ( NextFrame(p_aout, &p_aout->fifo[i_fifo], p_aout->date + ((((mtime_t)(l_buffer >> 1)) * 1000000) / ((mtime_t)p_aout->l_rate))) ) { break; } @@ -667,7 +660,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) if ( p_aout->fifo[i_fifo].l_units > l_units ) { - l_buffer_limit = p_aout->l_units << 1; /* p_aout->sys.b_stereo == 1 */ + l_buffer_limit = p_aout->l_units << 1; /* p_aout->i_channels - 1 == 1 */ while ( l_buffer < l_buffer_limit ) { p_aout->s32_buffer[l_buffer++] += @@ -676,10 +669,10 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[p_aout->fifo[i_fifo].l_unit] ); UPDATE_INCREMENT( p_aout->fifo[i_fifo].unit_increment, p_aout->fifo[i_fifo].l_unit ) - if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].b_stereo == 0 */ + if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].i_channels - 1 == 0 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 0)) ) { - p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].b_stereo == 0 */ + p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].i_channels - 1 == 0 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 0)); } } @@ -689,7 +682,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) else { l_buffer_limit = l_buffer + (p_aout->fifo[i_fifo].l_units << 1); - /* p_aout->sys.b_stereo == 1 */ + /* p_aout->i_channels - 1 == 1 */ while ( l_buffer < l_buffer_limit ) { p_aout->s32_buffer[l_buffer++] += @@ -698,10 +691,10 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[p_aout->fifo[i_fifo].l_unit] ); UPDATE_INCREMENT( p_aout->fifo[i_fifo].unit_increment, p_aout->fifo[i_fifo].l_unit ) - if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].b_stereo == 0 */ + if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].i_channels - 1 == 0 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 0)) ) { - p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].b_stereo == 0 */ + p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].i_channels - 1 == 0 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 0)); } } @@ -736,7 +729,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) { if ( !p_aout->fifo[i_fifo].b_next_frame ) { - if ( NextFrame(p_aout, &p_aout->fifo[i_fifo], p_aout->date + ((((mtime_t)(l_buffer >> 1)) * 1000000) / ((mtime_t)p_aout->sys.l_rate))) ) + if ( NextFrame(p_aout, &p_aout->fifo[i_fifo], p_aout->date + ((((mtime_t)(l_buffer >> 1)) * 1000000) / ((mtime_t)p_aout->l_rate))) ) { break; } @@ -744,7 +737,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) if ( p_aout->fifo[i_fifo].l_units > l_units ) { - l_buffer_limit = p_aout->l_units << 1; /* p_aout->sys.b_stereo == 1 */ + l_buffer_limit = p_aout->l_units << 1; /* p_aout->i_channels - 1 == 1 */ while ( l_buffer < l_buffer_limit ) { p_aout->s32_buffer[l_buffer++] += @@ -753,10 +746,10 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[2*p_aout->fifo[i_fifo].l_unit+1] ); UPDATE_INCREMENT( p_aout->fifo[i_fifo].unit_increment, p_aout->fifo[i_fifo].l_unit ) - if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].b_stereo == 1 */ + if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].i_channels - 1 == 1 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 1)) ) { - p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].b_stereo == 1 */ + p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].i_channels - 1 == 1 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 1)); } } @@ -766,7 +759,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) else { l_buffer_limit = l_buffer + (p_aout->fifo[i_fifo].l_units << 1); - /* p_aout->sys.b_stereo == 1 */ + /* p_aout->i_channels - 1 == 1 */ while ( l_buffer < l_buffer_limit ) { p_aout->s32_buffer[l_buffer++] += @@ -775,10 +768,10 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) (s32)( ((s16 *)p_aout->fifo[i_fifo].buffer)[2*p_aout->fifo[i_fifo].l_unit+1] ); UPDATE_INCREMENT( p_aout->fifo[i_fifo].unit_increment, p_aout->fifo[i_fifo].l_unit ) - if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].b_stereo == 1 */ + if ( p_aout->fifo[i_fifo].l_unit >= /* p_aout->fifo[i_fifo].i_channels - 1 == 1 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 1)) ) { - p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].b_stereo == 1 */ + p_aout->fifo[i_fifo].l_unit -= /* p_aout->fifo[i_fifo].i_channels - 1 == 1 */ ((AOUT_FIFO_SIZE + 1) * (p_aout->fifo[i_fifo].l_frame_size >> 1)); } } @@ -804,7 +797,7 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) } vlc_mutex_unlock( &p_aout->fifos_lock ); - l_buffer_limit = p_aout->l_units << 1; /* p_aout->sys.b_stereo == 1 */ + l_buffer_limit = p_aout->l_units << 1; /* p_aout->i_channels - 1 == 1 */ for ( l_buffer = 0; l_buffer < l_buffer_limit; l_buffer++ ) { @@ -812,9 +805,9 @@ void aout_Thread_S16_Stereo( aout_thread_t * p_aout ) p_aout->s32_buffer[l_buffer] = 0; } - l_bytes = p_aout->p_sys_getbufinfo( &p_aout->sys ); - p_aout->date = mdate() + ((((mtime_t)(l_bytes / 4)) * 1000000) / ((mtime_t)p_aout->sys.l_rate)); /* sizeof(s16) << p_aout->sys.b_stereo == 4 */ - p_aout->p_sys_playsamples( &p_aout->sys, (byte_t *)p_aout->buffer, l_buffer_limit * sizeof(s16) ); + l_bytes = p_aout->p_sys_getbufinfo( p_aout ); + p_aout->date = mdate() + ((((mtime_t)(l_bytes / 4)) * 1000000) / ((mtime_t)p_aout->l_rate)); /* sizeof(s16) << (p_aout->i_channels - 1) == 4 */ + p_aout->p_sys_playsamples( p_aout, (byte_t *)p_aout->buffer, l_buffer_limit * sizeof(s16) ); if ( l_bytes > (l_buffer_limit * sizeof(s16)) ) { msleep( p_aout->l_msleep ); diff --git a/src/interface/intf_ctrl.c b/src/interface/intf_ctrl.c index 3846ff034b..d46ea45b12 100644 --- a/src/interface/intf_ctrl.c +++ b/src/interface/intf_ctrl.c @@ -110,9 +110,9 @@ const intf_command_t control_command[] = " functions.\nIf a command name is provided as argument, displays a short "\ "inline help about the command.\n" }, { "play-audio", PlayAudio, /* play-audio */ - /* format: */ "stereo=i? rate=i? s ", + /* format: */ "channels=i? rate=i? s ", /* summary: */ "play an audio file", - /* usage: */ "play-audio [stereo=1/0] [rate=r] ", + /* usage: */ "play-audio [channels=1/2] [rate=r] ", /* help: */ "Load and play an audio file." }, { "play-video", PlayVideo, /* play-video */ /* format: */ "s ", @@ -275,17 +275,17 @@ static int PlayAudio( int i_argc, intf_arg_t *p_argv ) } /* Set default configuration */ - fifo.b_stereo = AOUT_DEFAULT_STEREO; + fifo.i_channels = 1 + AOUT_DEFAULT_STEREO; fifo.l_rate = AOUT_DEFAULT_RATE; - /* The stereo and rate parameters are essential ! */ + /* The channels and rate parameters are essential ! */ /* Parse parameters - see command list above */ for ( i_arg = 1; i_arg < i_argc; i_arg++ ) { switch( p_argv[i_arg].i_index ) { - case 0: /* stereo */ - fifo.b_stereo = p_argv[i_arg].i_num; + case 0: /* channels */ + fifo.i_channels = p_argv[i_arg].i_num; break; case 1: /* rate */ fifo.l_rate = p_argv[i_arg].i_num; @@ -297,18 +297,18 @@ static int PlayAudio( int i_argc, intf_arg_t *p_argv ) } /* Setting up the type of the fifo */ - switch ( fifo.b_stereo ) + switch ( fifo.i_channels ) { - case 0: + case 1: fifo.i_type = AOUT_INTF_MONO_FIFO; break; - case 1: + case 2: fifo.i_type = AOUT_INTF_STEREO_FIFO; break; default: - intf_IntfMsg("play-audio error: stereo must be 0 or 1"); + intf_IntfMsg("play-audio error: channels must be 1 or 2"); return( INTF_OTHER_ERROR ); } @@ -322,17 +322,17 @@ static int PlayAudio( int i_argc, intf_arg_t *p_argv ) /* Get file size to calculate number of audio units */ fstat( i_fd, &stat_buffer ); - fifo.l_units = ( long )( stat_buffer.st_size / (sizeof(s16) << fifo.b_stereo) ); + fifo.l_units = ( long )( stat_buffer.st_size / (sizeof(s16) << (fifo.i_channels - 1)) ); /* Allocate memory, read file and close it */ - if ( (fifo.buffer = malloc(sizeof(s16)*(fifo.l_units << fifo.b_stereo))) == NULL ) /* !! */ + if ( (fifo.buffer = malloc(sizeof(s16)*(fifo.l_units << (fifo.i_channels - 1)))) == NULL ) /* !! */ { intf_IntfMsg("play-audio error: not enough memory to read `%s'", psz_file ); close( i_fd ); /* close file */ return( INTF_OTHER_ERROR ); } - if ( read(i_fd, fifo.buffer, sizeof(s16)*(fifo.l_units << fifo.b_stereo)) - != sizeof(s16)*(fifo.l_units << fifo.b_stereo) ) + if ( read(i_fd, fifo.buffer, sizeof(s16)*(fifo.l_units << (fifo.i_channels - 1))) + != sizeof(s16)*(fifo.l_units << (fifo.i_channels - 1)) ) { intf_IntfMsg("play-audio error: can't read %s", psz_file); free( fifo.buffer ); @@ -342,7 +342,7 @@ static int PlayAudio( int i_argc, intf_arg_t *p_argv ) close( i_fd ); /* Now we can work out how many output units we can compute with the fifo */ - fifo.l_units = (long)(((s64)fifo.l_units*(s64)p_main->p_aout->sys.l_rate)/(s64)fifo.l_rate); + fifo.l_units = (long)(((s64)fifo.l_units*(s64)p_main->p_aout->l_rate)/(s64)fifo.l_rate); /* Create the fifo */ if ( aout_CreateFifo(p_main->p_aout, &fifo) == NULL ) diff --git a/src/video_decoder/idctmmx.S b/src/video_decoder/vdec_idctmmx.S similarity index 100% rename from src/video_decoder/idctmmx.S rename to src/video_decoder/vdec_idctmmx.S