home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / vlc-1.1.2-win32.exe / sdk / include / vlc / plugins / vlc_aout_mixer.h < prev    next >
Encoding:
C/C++ Source or Header  |  2010-07-30  |  2.7 KB  |  105 lines

  1. /*****************************************************************************
  2.  * vlc_aout_mixer.h : audio output mixer interface
  3.  *****************************************************************************
  4.  * Copyright (C) 2002-2009 the VideoLAN team
  5.  * $Id: 5fd2ce0953dc8814fc6e7cfa921503fb60bb917c $
  6.  *
  7.  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  8.  *          Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24.  
  25. #ifndef VLC_AOUT_MIXER_H
  26. #define VLC_AOUT_MIXER_H 1
  27.  
  28. /**
  29.  * \file
  30.  * This file defines functions, structures and macros for audio output mixer object
  31.  */
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36.  
  37. //#include <vlc_aout.h>
  38.  
  39. /* */
  40. typedef struct aout_mixer_sys_t aout_mixer_sys_t;
  41. typedef struct aout_mixer_t aout_mixer_t;
  42.  
  43. typedef struct {
  44.     /* Is the input to be ignored while mixing */
  45.     bool        is_invalid;
  46.  
  47.     /* */
  48.     aout_fifo_t fifo;
  49.  
  50.     /* Pointer on the first byte of data to mix.
  51.      *
  52.      * It points in the first buffer of fifo
  53.      */
  54.     uint8_t     *begin;
  55.  
  56.     /* Software multiplier */
  57.     float       multiplier;
  58. } aout_mixer_input_t;
  59.  
  60. /** 
  61.  * audio output mixer
  62.  */
  63. struct aout_mixer_t {
  64.     VLC_COMMON_MEMBERS
  65.  
  66.     /* Module */
  67.     module_t *module;
  68.  
  69.     /* Mixer format.
  70.      *
  71.      * You cannot modify it.
  72.      */
  73.     audio_sample_format_t fmt;
  74.  
  75.     /* Mixer output buffer allocation method.
  76.      *
  77.      * You can override it in the open function only.
  78.      */
  79.     aout_alloc_t          allocation;
  80.  
  81.     /* Multiplier used to raise or lower the volume of the sound in
  82.      * software.
  83.      */
  84.     float                 multiplier;
  85.  
  86.     /* Array of mixer inputs */
  87.     unsigned              input_count;
  88.     aout_mixer_input_t    **input;
  89.  
  90.     /* Mix input into the given buffer (mandatory) */
  91.     void (*mix)(aout_mixer_t *, aout_buffer_t *);
  92.  
  93.     /* Private place holder for the aout_mixer_t module (optional)
  94.      *
  95.      * A module is free to use it as it wishes.
  96.      */
  97.     aout_mixer_sys_t *sys;
  98. };
  99.  
  100. #ifdef __cplusplus
  101. }
  102. #endif
  103.  
  104. #endif
  105.