linux/include/sound/pcm_oss.h
<<
>>
Prefs
   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@perex.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
  25struct 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
  39struct 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        struct mutex params_lock;
  60#ifdef CONFIG_SND_PCM_OSS_PLUGINS
  61        struct snd_pcm_plugin *plugin_first;
  62        struct snd_pcm_plugin *plugin_last;
  63#endif
  64        unsigned int prev_hw_ptr_period;
  65};
  66
  67struct snd_pcm_oss_file {
  68        struct snd_pcm_substream *streams[2];
  69};
  70
  71struct snd_pcm_oss_substream {
  72        unsigned oss: 1;                        /* oss mode */
  73        struct snd_pcm_oss_setup setup;         /* active setup */
  74};
  75
  76struct snd_pcm_oss_stream {
  77        struct snd_pcm_oss_setup *setup_list;   /* setup list */
  78        struct mutex setup_mutex;
  79#ifdef CONFIG_SND_VERBOSE_PROCFS
  80        struct snd_info_entry *proc_entry;
  81#endif
  82};
  83
  84struct snd_pcm_oss {
  85        int reg;
  86        unsigned int reg_mask;
  87};
  88
  89#endif /* __SOUND_PCM_OSS_H */
  90