]> git.sesse.net Git - vlc/blobdiff - include/audio_output.h
* Header cleaning: filled all empty authors fields, added CVS $Id stuff.
[vlc] / include / audio_output.h
index acde929a4824fb574126ab82b1376a0598e3616b..71309dd2a1094609c354ecd0d3db81b8756ede0f 100644 (file)
@@ -2,9 +2,9 @@
  * audio_output.h : audio output thread interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
+ * $Id: audio_output.h,v 1.31 2001/03/21 13:42:33 sam Exp $
  *
- * Authors:
- * Michel Kaempf <maxx@via.ecp.fr>
+ * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -49,7 +49,7 @@
  * order to avoid rounding problems and heavy computations, as the function
  * that handles this structure only uses additions.
  *****************************************************************************/
-typedef struct
+typedef struct aout_increment_s
 {
     /* The remainder is used to keep track of the fractional part of the
      * index. */
@@ -73,11 +73,12 @@ typedef struct
 /*****************************************************************************
  * aout_fifo_t
  *****************************************************************************/
-typedef struct
+typedef struct aout_fifo_s
 {
     /* See the fifo types below */
     int                 i_type;
     boolean_t           b_die;
+    int                 i_fifo;      /* Just to keep track of the fifo index */
 
     int                 i_channels;
     boolean_t           b_stereo;
@@ -120,16 +121,13 @@ typedef struct
 /*****************************************************************************
  * aout_thread_t : audio output thread descriptor
  *****************************************************************************/
-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,
-                                           long l_buffer_limit );
-typedef void (aout_sys_playsamples_t)    ( p_aout_thread_t p_aout,
-                                           byte_t *buffer, int i_size );
-typedef void (aout_sys_close_t)          ( p_aout_thread_t p_aout );
+typedef int  (aout_open_t)       ( p_aout_thread_t p_aout );
+typedef int  (aout_setformat_t)  ( p_aout_thread_t p_aout );
+typedef long (aout_getbufinfo_t) ( p_aout_thread_t p_aout,
+                                   long l_buffer_limit );
+typedef void (aout_play_t)       ( p_aout_thread_t p_aout,
+                                   byte_t *buffer, int i_size );
+typedef void (aout_close_t)      ( p_aout_thread_t p_aout );
 
 typedef struct aout_thread_s
 {
@@ -140,15 +138,13 @@ typedef struct aout_thread_s
     vlc_mutex_t         fifos_lock;
     aout_fifo_t         fifo[ AOUT_MAX_FIFOS ];
 
-    /* Plugins */
-    aout_sys_open_t *           p_sys_open;
-    aout_sys_reset_t *          p_sys_reset;
-    aout_sys_setformat_t *      p_sys_setformat;
-    aout_sys_setchannels_t *    p_sys_setchannels;
-    aout_sys_setrate_t *        p_sys_setrate;
-    aout_sys_getbufinfo_t *     p_sys_getbufinfo;
-    aout_sys_playsamples_t *    p_sys_playsamples;
-    aout_sys_close_t *          p_sys_close;
+    /* Plugin used and shortcuts to access its capabilities */
+    struct module_s *   p_module;
+    aout_open_t *       pf_open;
+    aout_setformat_t *  pf_setformat;
+    aout_getbufinfo_t * pf_getbufinfo;
+    aout_play_t *       pf_play;
+    aout_close_t *      pf_close;
 
     void *              buffer;
     /* The s32 buffer is used to mix all the audio fifos together before
@@ -197,18 +193,21 @@ typedef struct aout_thread_s
 #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
+#ifdef WORDS_BIGENDIAN
 #define AOUT_FMT_S16_NE      AOUT_FMT_S16_BE
+#else
+#define AOUT_FMT_S16_NE      AOUT_FMT_S16_LE
 #endif
 
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
 aout_thread_t * aout_CreateThread       ( int *pi_status );
-void            aout_DestroyThread      ( aout_thread_t *p_aout, int *pi_status );
+void            aout_DestroyThread      ( aout_thread_t *p_aout,
+                                          int *pi_status );
 
-
-aout_fifo_t *   aout_CreateFifo         ( aout_thread_t *p_aout, aout_fifo_t *p_fifo );
+aout_fifo_t *   aout_CreateFifo         ( aout_thread_t *p_aout,
+                                          aout_fifo_t *p_fifo );
 void            aout_DestroyFifo        ( aout_fifo_t *p_fifo );
+void            aout_FreeFifo           ( aout_fifo_t *p_fifo );
+