home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / sound / pcm_oss.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.6 KB  |  89 lines

  1. #ifndef __SOUND_PCM_OSS_H
  2. #define __SOUND_PCM_OSS_H
  3.  
  4. /*
  5.  *  Digital Audio (PCM) - OSS compatibility abstract layer
  6.  *  Copyright (c) by Jaroslav Kysela <perex@suse.cz>
  7.  *
  8.  *
  9.  *   This program is free software; you can redistribute it and/or modify
  10.  *   it under the terms of the GNU General Public License as published by
  11.  *   the Free Software Foundation; either version 2 of the License, or
  12.  *   (at your option) any later version.
  13.  *
  14.  *   This program is distributed in the hope that it will be useful,
  15.  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  *   GNU General Public License for more details.
  18.  *
  19.  *   You should have received a copy of the GNU General Public License
  20.  *   along with this program; if not, write to the Free Software
  21.  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  22.  *
  23.  */
  24.  
  25. struct snd_pcm_oss_setup {
  26.     char *task_name;
  27.     unsigned int disable:1,
  28.              direct:1,
  29.              block:1,
  30.              nonblock:1,
  31.              partialfrag:1,
  32.              nosilence:1,
  33.              buggyptr:1;
  34.     unsigned int periods;
  35.     unsigned int period_size;
  36.     struct snd_pcm_oss_setup *next;
  37. };
  38.  
  39. struct snd_pcm_oss_runtime {
  40.     unsigned params: 1,            /* format/parameter change */
  41.          prepare: 1,            /* need to prepare the operation */
  42.          trigger: 1,            /* trigger flag */
  43.          sync_trigger: 1;        /* sync trigger flag */
  44.     int rate;                /* requested rate */
  45.     int format;                /* requested OSS format */
  46.     unsigned int channels;            /* requested channels */
  47.     unsigned int fragshift;
  48.     unsigned int maxfrags;
  49.     unsigned int subdivision;        /* requested subdivision */
  50.     size_t period_bytes;            /* requested period size */
  51.     size_t period_frames;            /* period frames for poll */
  52.     size_t period_ptr;            /* actual write pointer to period */
  53.     unsigned int periods;
  54.     size_t buffer_bytes;            /* requested buffer size */
  55.     size_t bytes;                /* total # bytes processed */
  56.     size_t mmap_bytes;
  57.     char *buffer;                /* vmallocated period */
  58.     size_t buffer_used;            /* used length from period buffer */
  59. #ifdef CONFIG_SND_PCM_OSS_PLUGINS
  60.     struct snd_pcm_plugin *plugin_first;
  61.     struct snd_pcm_plugin *plugin_last;
  62. #endif
  63.     unsigned int prev_hw_ptr_interrupt;
  64. };
  65.  
  66. struct snd_pcm_oss_file {
  67.     struct snd_pcm_substream *streams[2];
  68. };
  69.  
  70. struct snd_pcm_oss_substream {
  71.     unsigned oss: 1;            /* oss mode */
  72.     struct snd_pcm_oss_setup setup;        /* active setup */
  73. };
  74.  
  75. struct snd_pcm_oss_stream {
  76.     struct snd_pcm_oss_setup *setup_list;    /* setup list */
  77.     struct mutex setup_mutex;
  78. #ifdef CONFIG_SND_VERBOSE_PROCFS
  79.     struct snd_info_entry *proc_entry;
  80. #endif
  81. };
  82.  
  83. struct snd_pcm_oss {
  84.     int reg;
  85.     unsigned int reg_mask;
  86. };
  87.  
  88. #endif /* __SOUND_PCM_OSS_H */
  89.