FreeBSD kernel sound device code
feeder_format.c File Reference
#include <dev/sound/pcm/sound.h>
#include <dev/sound/pcm/pcm.h>
#include <dev/sound/pcm/g711.h>
#include <dev/sound/pcm/intpcm.h>
#include "feeder_if.h"
#include "snd_fxdiv_gen.h"
Include dependency graph for feeder_format.c:

Go to the source code of this file.

Data Structures

struct  feed_format_info
 

Macros

#define SND_USE_FXDIV
 
#define FEEDFORMAT_RESERVOIR   (SND_CHN_MAX * PCM_32_BPS)
 
#define FEEDFORMAT_ENTRY(SIGN, BIT, ENDIAN)
 
#define FEEDFORMAT_TAB_SIZE    ((int32_t)(sizeof(feed_format_ops) / sizeof(feed_format_ops[0])))
 

Functions

 SND_DECLARE_FILE ("$FreeBSD$")
 
static __inline intpcm_t intpcm_read_null (uint8_t *src __unused)
 
static __inline void intpcm_write_null (uint8_t *dst, intpcm_t v __unused)
 
static int feed_format_init (struct pcm_feeder *f)
 
static int feed_format_free (struct pcm_feeder *f)
 
static int feed_format_set (struct pcm_feeder *f, int what, int value)
 
static int feed_format_feed (struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, uint32_t count, void *source)
 
 FEEDER_DECLARE (feeder_format, NULL)
 
intpcm_read_tfeeder_format_read_op (uint32_t format)
 
intpcm_write_tfeeder_format_write_op (uint32_t format)
 

Variables

struct {
   uint32_t   format
 
   intpcm_read_t *   read
 
   intpcm_write_t *   write
 
feed_format_ops []
 
static struct pcm_feederdesc feeder_format_desc []
 
static kobj_method_t feeder_format_methods []
 

Macro Definition Documentation

◆ FEEDFORMAT_ENTRY

#define FEEDFORMAT_ENTRY (   SIGN,
  BIT,
  ENDIAN 
)
Value:
{ \
AFMT_##SIGN##BIT##_##ENDIAN, \
intpcm_read_##SIGN##BIT##ENDIAN, \
intpcm_write_##SIGN##BIT##ENDIAN \
}

Definition at line 80 of file feeder_format.c.

◆ FEEDFORMAT_RESERVOIR

#define FEEDFORMAT_RESERVOIR   (SND_CHN_MAX * PCM_32_BPS)

Definition at line 50 of file feeder_format.c.

◆ FEEDFORMAT_TAB_SIZE

#define FEEDFORMAT_TAB_SIZE    ((int32_t)(sizeof(feed_format_ops) / sizeof(feed_format_ops[0])))

Definition at line 120 of file feeder_format.c.

◆ SND_USE_FXDIV

#define SND_USE_FXDIV

Definition at line 44 of file feeder_format.c.

Function Documentation

◆ feed_format_feed()

static int feed_format_feed ( struct pcm_feeder f,
struct pcm_channel c,
uint8_t *  b,
uint32_t  count,
void *  source 
)
static

◆ feed_format_free()

static int feed_format_free ( struct pcm_feeder f)
static

Definition at line 175 of file feeder_format.c.

References pcm_feeder::data, and free.

◆ feed_format_init()

◆ feed_format_set()

static int feed_format_set ( struct pcm_feeder f,
int  what,
int  value 
)
static

◆ FEEDER_DECLARE()

FEEDER_DECLARE ( feeder_format  ,
NULL   
)

◆ feeder_format_read_op()

intpcm_read_t * feeder_format_read_op ( uint32_t  format)

Definition at line 279 of file feeder_format.c.

References AFMT_ENCODING, feed_format_ops, FEEDFORMAT_TAB_SIZE, format, and read.

Referenced by feed_matrix_init().

Here is the caller graph for this function:

◆ feeder_format_write_op()

intpcm_write_t * feeder_format_write_op ( uint32_t  format)

Definition at line 292 of file feeder_format.c.

References AFMT_ENCODING, feed_format_ops, FEEDFORMAT_TAB_SIZE, format, and write.

Referenced by feed_matrix_init().

Here is the caller graph for this function:

◆ intpcm_read_null()

static __inline intpcm_t intpcm_read_null ( uint8_t *src  __unused)
static

Definition at line 67 of file feeder_format.c.

◆ intpcm_write_null()

static __inline void intpcm_write_null ( uint8_t *  dst,
intpcm_t __unused 
)
static

Definition at line 74 of file feeder_format.c.

References _PCM_WRITE_S16_LE.

◆ SND_DECLARE_FILE()

SND_DECLARE_FILE ( "$FreeBSD$"  )

Variable Documentation

◆ 

const struct { ... } feed_format_ops[]
Initial value:
= {
FEEDFORMAT_ENTRY(S, 8, NE),
FEEDFORMAT_ENTRY(S, 16, LE),
FEEDFORMAT_ENTRY(S, 24, LE),
FEEDFORMAT_ENTRY(S, 32, LE),
FEEDFORMAT_ENTRY(S, 16, BE),
FEEDFORMAT_ENTRY(S, 24, BE),
FEEDFORMAT_ENTRY(S, 32, BE),
FEEDFORMAT_ENTRY(U, 8, NE),
FEEDFORMAT_ENTRY(U, 16, LE),
FEEDFORMAT_ENTRY(U, 24, LE),
FEEDFORMAT_ENTRY(U, 32, LE),
FEEDFORMAT_ENTRY(U, 16, BE),
FEEDFORMAT_ENTRY(U, 24, BE),
FEEDFORMAT_ENTRY(U, 32, BE),
{
AFMT_MU_LAW,
intpcm_read_ulaw, intpcm_write_ulaw
},
{
AFMT_A_LAW,
intpcm_read_alaw, intpcm_write_alaw
},
{
AFMT_AC3,
}
}
#define FEEDFORMAT_ENTRY(SIGN, BIT, ENDIAN)
Definition: feeder_format.c:80
static __inline void intpcm_write_null(uint8_t *dst, intpcm_t v __unused)
Definition: feeder_format.c:74
static __inline intpcm_t intpcm_read_null(uint8_t *src __unused)
Definition: feeder_format.c:67

Referenced by feed_format_init(), feeder_format_read_op(), and feeder_format_write_op().

◆ feeder_format_desc

struct pcm_feederdesc feeder_format_desc[]
static
Initial value:
= {
{ FEEDER_FORMAT, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 }
}
@ FEEDER_FORMAT
Definition: feeder.h:83

Definition at line 262 of file feeder_format.c.

◆ feeder_format_methods

kobj_method_t feeder_format_methods[]
static
Initial value:
= {
KOBJMETHOD(feeder_init, feed_format_init),
KOBJMETHOD(feeder_free, feed_format_free),
KOBJMETHOD(feeder_set, feed_format_set),
KOBJMETHOD(feeder_feed, feed_format_feed),
}
static int feed_format_init(struct pcm_feeder *f)
static int feed_format_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, uint32_t count, void *source)
static int feed_format_set(struct pcm_feeder *f, int what, int value)
static int feed_format_free(struct pcm_feeder *f)
#define KOBJMETHOD_END
Definition: midi.c:76

Definition at line 267 of file feeder_format.c.

◆ format

uint32_t format

Definition at line 88 of file feeder_format.c.

Referenced by feeder_format_read_op(), and feeder_format_write_op().

◆ read

Definition at line 89 of file feeder_format.c.

Referenced by feed_format_init(), and feeder_format_read_op().

◆ write

Definition at line 90 of file feeder_format.c.

Referenced by feed_format_init(), and feeder_format_write_op().