VSF Documented
Data Structures | Macros | Functions
pcm.h File Reference
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include <sound/asound.h>

Go to the source code of this file.

Data Structures

struct  snd_pcm_hardware
 
struct  snd_pcm_ops
 
struct  snd_pcm_runtime
 
struct  snd_pcm_substream
 
struct  snd_pcm_str
 
struct  snd_pcm
 

Macros

#define snd_pcm_substream_chip(substream)   ((substream)->private_data)
 
#define SNDRV_PCM_TRIGGER_STOP   0
 
#define SNDRV_PCM_TRIGGER_START   1
 
#define SNDRV_PCM_TRIGGER_PAUSE_PUSH   3
 
#define SNDRV_PCM_TRIGGER_PAUSE_RELEASE   4
 
#define SNDRV_PCM_TRIGGER_SUSPEND   5
 
#define SNDRV_PCM_TRIGGER_RESUME   6
 
#define SNDRV_PCM_TRIGGER_DRAIN   7
 
#define SNDRV_PCM_RATE_5512   (1 << 0)
 
#define SNDRV_PCM_RATE_8000   (1 << 1)
 
#define SNDRV_PCM_RATE_11025   (1 << 2)
 
#define SNDRV_PCM_RATE_16000   (1 << 3)
 
#define SNDRV_PCM_RATE_22050   (1 << 4)
 
#define SNDRV_PCM_RATE_32000   (1 << 5)
 
#define SNDRV_PCM_RATE_44100   (1 << 6)
 
#define SNDRV_PCM_RATE_48000   (1 << 7)
 
#define SNDRV_PCM_RATE_64000   (1 << 8)
 
#define SNDRV_PCM_RATE_88200   (1 << 9)
 
#define SNDRV_PCM_RATE_96000   (1 << 10)
 
#define SNDRV_PCM_RATE_176400   (1 << 11)
 
#define SNDRV_PCM_RATE_192000   (1 << 12)
 
#define SNDRV_PCM_RATE_CONTINUOUS   (1 << 30)
 
#define SNDRV_PCM_RATE_KNOT   (1 << 31)
 
#define _SNDRV_PCM_FMTBIT(fmt)   (1ULL << (int)SNDRV_PCM_FORMAT_##fmt)
 
#define SNDRV_PCM_FMTBIT_S8   _SNDRV_PCM_FMTBIT(S8)
 
#define SNDRV_PCM_FMTBIT_U8   _SNDRV_PCM_FMTBIT(U8)
 
#define SNDRV_PCM_FMTBIT_S16_LE   _SNDRV_PCM_FMTBIT(S16_LE)
 
#define SNDRV_PCM_FMTBIT_S16_BE   _SNDRV_PCM_FMTBIT(S16_BE)
 
#define SNDRV_PCM_FMTBIT_U16_LE   _SNDRV_PCM_FMTBIT(U16_LE)
 
#define SNDRV_PCM_FMTBIT_U16_BE   _SNDRV_PCM_FMTBIT(U16_BE)
 
#define SNDRV_PCM_FMTBIT_S24_LE   _SNDRV_PCM_FMTBIT(S24_LE)
 
#define SNDRV_PCM_FMTBIT_S24_BE   _SNDRV_PCM_FMTBIT(S24_BE)
 
#define SNDRV_PCM_FMTBIT_U24_LE   _SNDRV_PCM_FMTBIT(U24_LE)
 
#define SNDRV_PCM_FMTBIT_U24_BE   _SNDRV_PCM_FMTBIT(U24_BE)
 
#define SNDRV_PCM_FMTBIT_S32_LE   _SNDRV_PCM_FMTBIT(S32_LE)
 
#define SNDRV_PCM_FMTBIT_S32_BE   _SNDRV_PCM_FMTBIT(S32_BE)
 
#define SNDRV_PCM_FMTBIT_U32_LE   _SNDRV_PCM_FMTBIT(U32_LE)
 
#define SNDRV_PCM_FMTBIT_U32_BE   _SNDRV_PCM_FMTBIT(U32_BE)
 
#define SNDRV_PCM_FMTBIT_FLOAT_LE   _SNDRV_PCM_FMTBIT(FLOAT_LE)
 
#define SNDRV_PCM_FMTBIT_FLOAT_BE   _SNDRV_PCM_FMTBIT(FLOAT_BE)
 
#define SNDRV_PCM_FMTBIT_FLOAT64_LE   _SNDRV_PCM_FMTBIT(FLOAT64_LE)
 
#define SNDRV_PCM_FMTBIT_FLOAT64_BE   _SNDRV_PCM_FMTBIT(FLOAT64_BE)
 
#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE   _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_LE)
 
#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE   _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_BE)
 
#define SNDRV_PCM_FMTBIT_MU_LAW   _SNDRV_PCM_FMTBIT(MU_LAW)
 
#define SNDRV_PCM_FMTBIT_A_LAW   _SNDRV_PCM_FMTBIT(A_LAW)
 
#define SNDRV_PCM_FMTBIT_IMA_ADPCM   _SNDRV_PCM_FMTBIT(IMA_ADPCM)
 
#define SNDRV_PCM_FMTBIT_MPEG   _SNDRV_PCM_FMTBIT(MPEG)
 
#define SNDRV_PCM_FMTBIT_GSM   _SNDRV_PCM_FMTBIT(GSM)
 
#define SNDRV_PCM_FMTBIT_SPECIAL   _SNDRV_PCM_FMTBIT(SPECIAL)
 
#define SNDRV_PCM_FMTBIT_S24_3LE   _SNDRV_PCM_FMTBIT(S24_3LE)
 
#define SNDRV_PCM_FMTBIT_U24_3LE   _SNDRV_PCM_FMTBIT(U24_3LE)
 
#define SNDRV_PCM_FMTBIT_S24_3BE   _SNDRV_PCM_FMTBIT(S24_3BE)
 
#define SNDRV_PCM_FMTBIT_U24_3BE   _SNDRV_PCM_FMTBIT(U24_3BE)
 
#define SNDRV_PCM_FMTBIT_S20_3LE   _SNDRV_PCM_FMTBIT(S20_3LE)
 
#define SNDRV_PCM_FMTBIT_U20_3LE   _SNDRV_PCM_FMTBIT(U20_3LE)
 
#define SNDRV_PCM_FMTBIT_S20_3BE   _SNDRV_PCM_FMTBIT(S20_3BE)
 
#define SNDRV_PCM_FMTBIT_U20_3BE   _SNDRV_PCM_FMTBIT(U20_3BE)
 
#define SNDRV_PCM_FMTBIT_S18_3LE   _SNDRV_PCM_FMTBIT(S18_3LE)
 
#define SNDRV_PCM_FMTBIT_U18_3LE   _SNDRV_PCM_FMTBIT(U18_3LE)
 
#define SNDRV_PCM_FMTBIT_S18_3BE   _SNDRV_PCM_FMTBIT(S18_3BE)
 
#define SNDRV_PCM_FMTBIT_U18_3BE   _SNDRV_PCM_FMTBIT(U18_3BE)
 
#define SNDRV_PCM_FMTBIT_G723_24   _SNDRV_PCM_FMTBIT(G723_24)
 
#define SNDRV_PCM_FMTBIT_G723_24_1B   _SNDRV_PCM_FMTBIT(G723_24_1B)
 
#define SNDRV_PCM_FMTBIT_G723_40   _SNDRV_PCM_FMTBIT(G723_40)
 
#define SNDRV_PCM_FMTBIT_G723_40_1B   _SNDRV_PCM_FMTBIT(G723_40_1B)
 
#define SNDRV_PCM_FMTBIT_DSD_U8   _SNDRV_PCM_FMTBIT(DSD_U8)
 
#define SNDRV_PCM_FMTBIT_DSD_U16_LE   _SNDRV_PCM_FMTBIT(DSD_U16_LE)
 
#define SNDRV_PCM_FMTBIT_DSD_U32_LE   _SNDRV_PCM_FMTBIT(DSD_U32_LE)
 
#define SNDRV_PCM_FMTBIT_DSD_U16_BE   _SNDRV_PCM_FMTBIT(DSD_U16_BE)
 
#define SNDRV_PCM_FMTBIT_DSD_U32_BE   _SNDRV_PCM_FMTBIT(DSD_U32_BE)
 
#define snd_pcm_stream_lock_irqsave(__substream, __flags)
 
#define snd_pcm_stream_unlock_irqrestore(__substream, __flags)
 

Functions

int snd_pcm_new (struct snd_card *card, const char *id, int device, int playback_count, int capture_count, struct snd_pcm **rpcm)
 
void snd_pcm_set_ops (struct snd_pcm *pcm, int direction, const struct snd_pcm_ops *ops)
 
void snd_pcm_period_elapsed (struct snd_pcm_substream *substream)
 
int snd_pcm_lib_alloc_vmalloc_buffer (struct snd_pcm_substream *substream, size_t size)
 
int snd_pcm_lib_free_vmalloc_buffer (struct snd_pcm_substream *substream)
 
struct page * snd_pcm_lib_get_vmalloc_page (struct snd_pcm_substream *substream, unsigned long offset)
 
int snd_pcm_lib_ioctl (struct snd_pcm_substream *substream, unsigned int cmd, void *arg)
 

Macro Definition Documentation

◆ snd_pcm_substream_chip

#define snd_pcm_substream_chip (   substream)    ((substream)->private_data)

◆ SNDRV_PCM_TRIGGER_STOP

#define SNDRV_PCM_TRIGGER_STOP   0

◆ SNDRV_PCM_TRIGGER_START

#define SNDRV_PCM_TRIGGER_START   1

◆ SNDRV_PCM_TRIGGER_PAUSE_PUSH

#define SNDRV_PCM_TRIGGER_PAUSE_PUSH   3

◆ SNDRV_PCM_TRIGGER_PAUSE_RELEASE

#define SNDRV_PCM_TRIGGER_PAUSE_RELEASE   4

◆ SNDRV_PCM_TRIGGER_SUSPEND

#define SNDRV_PCM_TRIGGER_SUSPEND   5

◆ SNDRV_PCM_TRIGGER_RESUME

#define SNDRV_PCM_TRIGGER_RESUME   6

◆ SNDRV_PCM_TRIGGER_DRAIN

#define SNDRV_PCM_TRIGGER_DRAIN   7

◆ SNDRV_PCM_RATE_5512

#define SNDRV_PCM_RATE_5512   (1 << 0)

◆ SNDRV_PCM_RATE_8000

#define SNDRV_PCM_RATE_8000   (1 << 1)

◆ SNDRV_PCM_RATE_11025

#define SNDRV_PCM_RATE_11025   (1 << 2)

◆ SNDRV_PCM_RATE_16000

#define SNDRV_PCM_RATE_16000   (1 << 3)

◆ SNDRV_PCM_RATE_22050

#define SNDRV_PCM_RATE_22050   (1 << 4)

◆ SNDRV_PCM_RATE_32000

#define SNDRV_PCM_RATE_32000   (1 << 5)

◆ SNDRV_PCM_RATE_44100

#define SNDRV_PCM_RATE_44100   (1 << 6)

◆ SNDRV_PCM_RATE_48000

#define SNDRV_PCM_RATE_48000   (1 << 7)

◆ SNDRV_PCM_RATE_64000

#define SNDRV_PCM_RATE_64000   (1 << 8)

◆ SNDRV_PCM_RATE_88200

#define SNDRV_PCM_RATE_88200   (1 << 9)

◆ SNDRV_PCM_RATE_96000

#define SNDRV_PCM_RATE_96000   (1 << 10)

◆ SNDRV_PCM_RATE_176400

#define SNDRV_PCM_RATE_176400   (1 << 11)

◆ SNDRV_PCM_RATE_192000

#define SNDRV_PCM_RATE_192000   (1 << 12)

◆ SNDRV_PCM_RATE_CONTINUOUS

#define SNDRV_PCM_RATE_CONTINUOUS   (1 << 30)

◆ SNDRV_PCM_RATE_KNOT

#define SNDRV_PCM_RATE_KNOT   (1 << 31)

◆ _SNDRV_PCM_FMTBIT

#define _SNDRV_PCM_FMTBIT (   fmt)    (1ULL << (int)SNDRV_PCM_FORMAT_##fmt)

◆ SNDRV_PCM_FMTBIT_S8

#define SNDRV_PCM_FMTBIT_S8   _SNDRV_PCM_FMTBIT(S8)

◆ SNDRV_PCM_FMTBIT_U8

#define SNDRV_PCM_FMTBIT_U8   _SNDRV_PCM_FMTBIT(U8)

◆ SNDRV_PCM_FMTBIT_S16_LE

#define SNDRV_PCM_FMTBIT_S16_LE   _SNDRV_PCM_FMTBIT(S16_LE)

◆ SNDRV_PCM_FMTBIT_S16_BE

#define SNDRV_PCM_FMTBIT_S16_BE   _SNDRV_PCM_FMTBIT(S16_BE)

◆ SNDRV_PCM_FMTBIT_U16_LE

#define SNDRV_PCM_FMTBIT_U16_LE   _SNDRV_PCM_FMTBIT(U16_LE)

◆ SNDRV_PCM_FMTBIT_U16_BE

#define SNDRV_PCM_FMTBIT_U16_BE   _SNDRV_PCM_FMTBIT(U16_BE)

◆ SNDRV_PCM_FMTBIT_S24_LE

#define SNDRV_PCM_FMTBIT_S24_LE   _SNDRV_PCM_FMTBIT(S24_LE)

◆ SNDRV_PCM_FMTBIT_S24_BE

#define SNDRV_PCM_FMTBIT_S24_BE   _SNDRV_PCM_FMTBIT(S24_BE)

◆ SNDRV_PCM_FMTBIT_U24_LE

#define SNDRV_PCM_FMTBIT_U24_LE   _SNDRV_PCM_FMTBIT(U24_LE)

◆ SNDRV_PCM_FMTBIT_U24_BE

#define SNDRV_PCM_FMTBIT_U24_BE   _SNDRV_PCM_FMTBIT(U24_BE)

◆ SNDRV_PCM_FMTBIT_S32_LE

#define SNDRV_PCM_FMTBIT_S32_LE   _SNDRV_PCM_FMTBIT(S32_LE)

◆ SNDRV_PCM_FMTBIT_S32_BE

#define SNDRV_PCM_FMTBIT_S32_BE   _SNDRV_PCM_FMTBIT(S32_BE)

◆ SNDRV_PCM_FMTBIT_U32_LE

#define SNDRV_PCM_FMTBIT_U32_LE   _SNDRV_PCM_FMTBIT(U32_LE)

◆ SNDRV_PCM_FMTBIT_U32_BE

#define SNDRV_PCM_FMTBIT_U32_BE   _SNDRV_PCM_FMTBIT(U32_BE)

◆ SNDRV_PCM_FMTBIT_FLOAT_LE

#define SNDRV_PCM_FMTBIT_FLOAT_LE   _SNDRV_PCM_FMTBIT(FLOAT_LE)

◆ SNDRV_PCM_FMTBIT_FLOAT_BE

#define SNDRV_PCM_FMTBIT_FLOAT_BE   _SNDRV_PCM_FMTBIT(FLOAT_BE)

◆ SNDRV_PCM_FMTBIT_FLOAT64_LE

#define SNDRV_PCM_FMTBIT_FLOAT64_LE   _SNDRV_PCM_FMTBIT(FLOAT64_LE)

◆ SNDRV_PCM_FMTBIT_FLOAT64_BE

#define SNDRV_PCM_FMTBIT_FLOAT64_BE   _SNDRV_PCM_FMTBIT(FLOAT64_BE)

◆ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE

#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE   _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_LE)

◆ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE

#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE   _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_BE)

◆ SNDRV_PCM_FMTBIT_MU_LAW

#define SNDRV_PCM_FMTBIT_MU_LAW   _SNDRV_PCM_FMTBIT(MU_LAW)

◆ SNDRV_PCM_FMTBIT_A_LAW

#define SNDRV_PCM_FMTBIT_A_LAW   _SNDRV_PCM_FMTBIT(A_LAW)

◆ SNDRV_PCM_FMTBIT_IMA_ADPCM

#define SNDRV_PCM_FMTBIT_IMA_ADPCM   _SNDRV_PCM_FMTBIT(IMA_ADPCM)

◆ SNDRV_PCM_FMTBIT_MPEG

#define SNDRV_PCM_FMTBIT_MPEG   _SNDRV_PCM_FMTBIT(MPEG)

◆ SNDRV_PCM_FMTBIT_GSM

#define SNDRV_PCM_FMTBIT_GSM   _SNDRV_PCM_FMTBIT(GSM)

◆ SNDRV_PCM_FMTBIT_SPECIAL

#define SNDRV_PCM_FMTBIT_SPECIAL   _SNDRV_PCM_FMTBIT(SPECIAL)

◆ SNDRV_PCM_FMTBIT_S24_3LE

#define SNDRV_PCM_FMTBIT_S24_3LE   _SNDRV_PCM_FMTBIT(S24_3LE)

◆ SNDRV_PCM_FMTBIT_U24_3LE

#define SNDRV_PCM_FMTBIT_U24_3LE   _SNDRV_PCM_FMTBIT(U24_3LE)

◆ SNDRV_PCM_FMTBIT_S24_3BE

#define SNDRV_PCM_FMTBIT_S24_3BE   _SNDRV_PCM_FMTBIT(S24_3BE)

◆ SNDRV_PCM_FMTBIT_U24_3BE

#define SNDRV_PCM_FMTBIT_U24_3BE   _SNDRV_PCM_FMTBIT(U24_3BE)

◆ SNDRV_PCM_FMTBIT_S20_3LE

#define SNDRV_PCM_FMTBIT_S20_3LE   _SNDRV_PCM_FMTBIT(S20_3LE)

◆ SNDRV_PCM_FMTBIT_U20_3LE

#define SNDRV_PCM_FMTBIT_U20_3LE   _SNDRV_PCM_FMTBIT(U20_3LE)

◆ SNDRV_PCM_FMTBIT_S20_3BE

#define SNDRV_PCM_FMTBIT_S20_3BE   _SNDRV_PCM_FMTBIT(S20_3BE)

◆ SNDRV_PCM_FMTBIT_U20_3BE

#define SNDRV_PCM_FMTBIT_U20_3BE   _SNDRV_PCM_FMTBIT(U20_3BE)

◆ SNDRV_PCM_FMTBIT_S18_3LE

#define SNDRV_PCM_FMTBIT_S18_3LE   _SNDRV_PCM_FMTBIT(S18_3LE)

◆ SNDRV_PCM_FMTBIT_U18_3LE

#define SNDRV_PCM_FMTBIT_U18_3LE   _SNDRV_PCM_FMTBIT(U18_3LE)

◆ SNDRV_PCM_FMTBIT_S18_3BE

#define SNDRV_PCM_FMTBIT_S18_3BE   _SNDRV_PCM_FMTBIT(S18_3BE)

◆ SNDRV_PCM_FMTBIT_U18_3BE

#define SNDRV_PCM_FMTBIT_U18_3BE   _SNDRV_PCM_FMTBIT(U18_3BE)

◆ SNDRV_PCM_FMTBIT_G723_24

#define SNDRV_PCM_FMTBIT_G723_24   _SNDRV_PCM_FMTBIT(G723_24)

◆ SNDRV_PCM_FMTBIT_G723_24_1B

#define SNDRV_PCM_FMTBIT_G723_24_1B   _SNDRV_PCM_FMTBIT(G723_24_1B)

◆ SNDRV_PCM_FMTBIT_G723_40

#define SNDRV_PCM_FMTBIT_G723_40   _SNDRV_PCM_FMTBIT(G723_40)

◆ SNDRV_PCM_FMTBIT_G723_40_1B

#define SNDRV_PCM_FMTBIT_G723_40_1B   _SNDRV_PCM_FMTBIT(G723_40_1B)

◆ SNDRV_PCM_FMTBIT_DSD_U8

#define SNDRV_PCM_FMTBIT_DSD_U8   _SNDRV_PCM_FMTBIT(DSD_U8)

◆ SNDRV_PCM_FMTBIT_DSD_U16_LE

#define SNDRV_PCM_FMTBIT_DSD_U16_LE   _SNDRV_PCM_FMTBIT(DSD_U16_LE)

◆ SNDRV_PCM_FMTBIT_DSD_U32_LE

#define SNDRV_PCM_FMTBIT_DSD_U32_LE   _SNDRV_PCM_FMTBIT(DSD_U32_LE)

◆ SNDRV_PCM_FMTBIT_DSD_U16_BE

#define SNDRV_PCM_FMTBIT_DSD_U16_BE   _SNDRV_PCM_FMTBIT(DSD_U16_BE)

◆ SNDRV_PCM_FMTBIT_DSD_U32_BE

#define SNDRV_PCM_FMTBIT_DSD_U32_BE   _SNDRV_PCM_FMTBIT(DSD_U32_BE)

◆ snd_pcm_stream_lock_irqsave

#define snd_pcm_stream_lock_irqsave (   __substream,
  __flags 
)
Value:
({ \
if ((__substream)->pcm->nonatomic) { \
mutex_lock(&(__substream)->pstr->mutex); \
} else { \
spin_lock_irqsave(&(__substream)->pstr->lock, (__flags)); \
} \
__flags; \
})

◆ snd_pcm_stream_unlock_irqrestore

#define snd_pcm_stream_unlock_irqrestore (   __substream,
  __flags 
)
Value:
({ \
if ((__substream)->pcm->nonatomic) { \
mutex_unlock(&(__substream)->pstr->mutex); \
} else { \
spin_unlock_irqrestore(&(__substream)->pstr->lock, (__flags)); \
} \
})

Function Documentation

◆ snd_pcm_new()

int snd_pcm_new ( struct snd_card card,
const char *  id,
int  device,
int  playback_count,
int  capture_count,
struct snd_pcm **  rpcm 
)

◆ snd_pcm_set_ops()

void snd_pcm_set_ops ( struct snd_pcm pcm,
int  direction,
const struct snd_pcm_ops ops 
)

◆ snd_pcm_period_elapsed()

void snd_pcm_period_elapsed ( struct snd_pcm_substream substream)

◆ snd_pcm_lib_alloc_vmalloc_buffer()

int snd_pcm_lib_alloc_vmalloc_buffer ( struct snd_pcm_substream substream,
size_t  size 
)

◆ snd_pcm_lib_free_vmalloc_buffer()

int snd_pcm_lib_free_vmalloc_buffer ( struct snd_pcm_substream substream)

◆ snd_pcm_lib_get_vmalloc_page()

struct page * snd_pcm_lib_get_vmalloc_page ( struct snd_pcm_substream substream,
unsigned long  offset 
)

◆ snd_pcm_lib_ioctl()

int snd_pcm_lib_ioctl ( struct snd_pcm_substream substream,
unsigned int  cmd,
void *  arg 
)
Generated from commit: vsfteam/vsf@f33b89f