Changeset ea6c838 in mainline


Ignore:
Timestamp:
2012-07-17T08:26:49Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e6bba8f
Parents:
950110ee
Message:

Create libpcm.

Move pcm related functions and definitions there.
Make other stuff use this library.
Rename most of it on the way.

Location:
uspace
Files:
1 added
28 edited
3 moved

Legend:

Unmodified
Added
Removed
  • uspace/Makefile

    r950110ee rea6c838  
    206206        lib/usbhid \
    207207        lib/usbvirt \
     208        lib/pcm \
    208209        lib/posix
    209210
  • uspace/Makefile.common

    r950110ee rea6c838  
    124124LIBDRV_PREFIX = $(LIB_PREFIX)/drv
    125125LIBHOUND_PREFIX = $(LIB_PREFIX)/hound
     126LIBPCM_PREFIX = $(LIB_PREFIX)/pcm
    126127LIBNET_PREFIX = $(LIB_PREFIX)/net
    127128LIBNIC_PREFIX = $(LIB_PREFIX)/nic
  • uspace/app/dplay/Makefile

    r950110ee rea6c838  
    3434
    3535EXTRA_CFLAGS = \
    36         -I$(LIBDRV_PREFIX)/include
     36        -I$(LIBDRV_PREFIX)/include -I$(LIBPCM_PREFIX)/include
    3737
    3838SOURCES = \
  • uspace/app/dplay/wave.h

    r950110ee rea6c838  
    3737#include <stdint.h>
    3838#include <bool.h>
    39 #include <pcm_sample_format.h>
     39#include <pcm/sample_format.h>
    4040
    4141/** Wave file header format.
  • uspace/app/drec/Makefile

    r950110ee rea6c838  
    3434
    3535EXTRA_CFLAGS = \
    36         -I$(LIBDRV_PREFIX)/include
     36        -I$(LIBDRV_PREFIX)/include -I$(LIBPCM_PREFIX)/include
    3737
    3838SOURCES = \
  • uspace/app/drec/drec.c

    r950110ee rea6c838  
    4747#include <stdio.h>
    4848#include <macros.h>
    49 #include <pcm_sample_format.h>
     49#include <pcm/sample_format.h>
    5050
    5151#include "wave.h"
  • uspace/app/drec/wave.h

    r950110ee rea6c838  
    3636
    3737#include <stdint.h>
    38 #include <bool.h>
    39 #include <pcm_sample_format.h>
     38#include <pcm/sample_format.h>
    4039
    4140/** Wave file header format.
  • uspace/app/wavplay/Makefile

    r950110ee rea6c838  
    3434
    3535EXTRA_CFLAGS = \
    36         -I $(LIBHOUND_PREFIX)/include
     36        -I$(LIBHOUND_PREFIX)/include -I$(LIBPCM_PREFIX)/include
    3737
    3838SOURCES = \
  • uspace/app/wavplay/wave.h

    r950110ee rea6c838  
    3636
    3737#include <stdint.h>
    38 #include <bool.h>
    39 #include <pcm_sample_format.h>
     38#include <pcm/sample_format.h>
    4039
    4140/** Wave file header format.
  • uspace/app/wavplay/wavplay.c

    r950110ee rea6c838  
    3939#include <str_error.h>
    4040#include <stdio.h>
    41 
    4241#include <hound/client.h>
    43 
    44 #include <pcm_sample_format.h>
    45 
    46 #include <stdio.h>
     42#include <pcm/sample_format.h>
    4743
    4844#include "wave.h"
  • uspace/drv/audio/sb16/Makefile

    r950110ee rea6c838  
    3333
    3434EXTRA_CFLAGS += \
    35         -I$(LIBDRV_PREFIX)/include
     35        -I$(LIBDRV_PREFIX)/include -I$(LIBPCM_PREFIX)/include
    3636
    3737BINARY = sb16
  • uspace/drv/audio/sb16/dsp.h

    r950110ee rea6c838  
    3838#include <libarch/ddi.h>
    3939#include <errno.h>
    40 #include <pcm_sample_format.h>
     40#include <pcm/sample_format.h>
    4141
    4242#include "registers.h"
  • uspace/drv/audio/sb16/pcm_iface.c

    r950110ee rea6c838  
    3636#include <errno.h>
    3737#include <audio_pcm_iface.h>
    38 #include <pcm_sample_format.h>
     38#include <pcm/sample_format.h>
    3939
    4040#include "dsp.h"
  • uspace/lib/drv/Makefile

    r950110ee rea6c838  
    2929
    3030USPACE_PREFIX = ../..
    31 EXTRA_CFLAGS = -Iinclude -I$(LIBUSB_PREFIX)/include
     31EXTRA_CFLAGS = -Iinclude -I$(LIBUSB_PREFIX)/include -I$(LIBPCM_PREFIX)/include
    3232LIBRARY = libdrv
    3333
  • uspace/lib/drv/include/audio_pcm_iface.h

    r950110ee rea6c838  
    4040#include <bool.h>
    4141#include <loc.h>
    42 #include <pcm_sample_format.h>
     42#include <pcm/sample_format.h>
    4343
    4444#include "ddf/driver.h"
  • uspace/lib/hound/Makefile

    r950110ee rea6c838  
    2828
    2929USPACE_PREFIX = ../..
    30 EXTRA_CFLAGS = -Iinclude/hound
     30EXTRA_CFLAGS = -Iinclude/hound -I$(LIBPCM_PREFIX)/include
    3131LIBRARY = libhound
    3232
  • uspace/lib/hound/include/hound/client.h

    r950110ee rea6c838  
    3939#include <async.h>
    4040#include <bool.h>
    41 #include <pcm_sample_format.h>
     41#include <pcm/sample_format.h>
    4242
    4343#define DEFAULT_SINK "default"
  • uspace/lib/hound/include/hound/server.h

    r950110ee rea6c838  
    4040#include <bool.h>
    4141#include <loc.h>
    42 #include <pcm_sample_format.h>
     42#include <pcm/sample_format.h>
    4343
    4444enum {
  • uspace/lib/pcm/include/pcm/format.h

    r950110ee rea6c838  
    3434 */
    3535
    36 #ifndef AUDIO_FORMAT_H_
    37 #define AUDIO_FORMAT_H_
     36#ifndef PCM_FORMAT_H_
     37#define PCM_FORMAT_H_
    3838
    3939#include <assert.h>
    4040#include <bool.h>
    41 #include <pcm_sample_format.h>
    42 
     41#include <pcm/sample_format.h>
    4342
    4443typedef struct {
     
    4645        unsigned sampling_rate;
    4746        pcm_sample_format_t sample_format;
    48 } audio_format_t;
     47} pcm_format_t;
    4948
    50 static const audio_format_t AUDIO_FORMAT_DEFAULT = {
     49static const pcm_format_t AUDIO_FORMAT_DEFAULT = {
    5150        .channels = 2,
    5251        .sampling_rate = 44100,
     
    5453        };
    5554
    56 static const audio_format_t AUDIO_FORMAT_ANY = {
     55static const pcm_format_t AUDIO_FORMAT_ANY = {
    5756        .channels = 0,
    5857        .sampling_rate = 0,
     
    6059        };
    6160
    62 
    63 static inline size_t audio_format_frame_size(const audio_format_t *a)
     61static inline size_t pcm_format_frame_size(const pcm_format_t *a)
    6462{
    6563        return a->channels * pcm_sample_format_size(a->sample_format);
    6664}
    6765
    68 bool audio_format_same(const audio_format_t *a, const audio_format_t* b);
    69 static inline bool audio_format_is_any(const audio_format_t *f)
     66bool pcm_format_same(const pcm_format_t *a, const pcm_format_t* b);
     67static inline bool pcm_format_is_any(const pcm_format_t *f)
    7068{
    71         return audio_format_same(f, &AUDIO_FORMAT_ANY);
     69        return pcm_format_same(f, &AUDIO_FORMAT_ANY);
    7270}
    73 int audio_format_convert_and_mix(void *dst, size_t dst_size, const void *src,
    74     size_t src_size, const audio_format_t *sf, const audio_format_t *df);
    75 int audio_format_mix(void *dst, const void *src, size_t size, const audio_format_t *f);
    76 int audio_format_convert(audio_format_t a, void* srca, size_t sizea,
    77     audio_format_t b, void* srcb, size_t *sizeb);
     71int pcm_format_convert_and_mix(void *dst, size_t dst_size, const void *src,
     72    size_t src_size, const pcm_format_t *sf, const pcm_format_t *df);
     73int pcm_format_mix(void *dst, const void *src, size_t size, const pcm_format_t *f);
     74int pcm_format_convert(pcm_format_t a, void* srca, size_t sizea,
     75    pcm_format_t b, void* srcb, size_t *sizeb);
    7876
    7977#endif
  • uspace/lib/pcm/src/format.c

    r950110ee rea6c838  
    4040#include <stdio.h>
    4141
    42 #include "audio_format.h"
     42#include "format.h"
    4343
    4444#define uint8_t_le2host(x) (x)
     
    7676
    7777static float get_normalized_sample(const void *buffer, size_t size,
    78     unsigned frame, unsigned channel, const audio_format_t *f);
    79 
    80 bool audio_format_same(const audio_format_t *a, const audio_format_t* b)
     78    unsigned frame, unsigned channel, const pcm_format_t *f);
     79
     80bool pcm_format_same(const pcm_format_t *a, const pcm_format_t* b)
    8181{
    8282        assert(a);
     
    8888}
    8989
    90 int audio_format_mix(void *dst, const void *src, size_t size, const audio_format_t *f)
    91 {
    92         return audio_format_convert_and_mix(dst, size, src, size, f, f);
    93 }
    94 int audio_format_convert_and_mix(void *dst, size_t dst_size, const void *src,
    95     size_t src_size, const audio_format_t *sf, const audio_format_t *df)
     90int pcm_format_mix(void *dst, const void *src, size_t size, const pcm_format_t *f)
     91{
     92        return pcm_format_convert_and_mix(dst, size, src, size, f, f);
     93}
     94int pcm_format_convert_and_mix(void *dst, size_t dst_size, const void *src,
     95    size_t src_size, const pcm_format_t *sf, const pcm_format_t *df)
    9696{
    9797        if (!dst || !src || !sf || !df)
    9898                return EINVAL;
    99         const size_t src_frame_size = audio_format_frame_size(sf);
     99        const size_t src_frame_size = pcm_format_frame_size(sf);
    100100        if ((src_size % src_frame_size) != 0)
    101101                return EINVAL;
    102102
    103         const size_t dst_frame_size = audio_format_frame_size(df);
     103        const size_t dst_frame_size = pcm_format_frame_size(df);
    104104        if ((src_size % dst_frame_size) != 0)
    105105                return EINVAL;
     
    170170/** Converts all sample formats to float <-1,1> */
    171171static float get_normalized_sample(const void *buffer, size_t size,
    172     unsigned frame, unsigned channel, const audio_format_t *f)
     172    unsigned frame, unsigned channel, const pcm_format_t *f)
    173173{
    174174        assert(f);
  • uspace/srv/audio/hound/Makefile

    r950110ee rea6c838  
    3333        -DNAME="\"hound\"" \
    3434        -I$(LIBDRV_PREFIX)/include \
    35         -I$(LIBHOUND_PREFIX)/include
     35        -I$(LIBHOUND_PREFIX)/include \
     36        -I$(LIBPCM_PREFIX)/include
    3637
    3738LIBS = \
    3839        $(LIBDRV_PREFIX)/libdrv.a \
    39         $(LIBHOUND_PREFIX)/libhound.a
     40        $(LIBHOUND_PREFIX)/libhound.a \
     41        $(LIBPCM_PREFIX)/libpcm.a
    4042
    4143SOURCES = \
    4244        audio_client.c \
    4345        audio_device.c \
    44         audio_format.c \
    4546        audio_sink.c \
    4647        audio_source.c \
  • uspace/srv/audio/hound/audio_client.c

    r950110ee rea6c838  
    4343
    4444static void init_common(audio_client_t *client, const char *name,
    45     const audio_format_t *f, async_sess_t *sess)
     45    const pcm_format_t *f, async_sess_t *sess)
    4646{
    4747        link_initialize(&client->link);
     
    6060
    6161audio_client_t *audio_client_get_playback(
    62     const char *name, const audio_format_t *f, async_sess_t *sess)
     62    const char *name, const pcm_format_t *f, async_sess_t *sess)
    6363{
    6464        audio_client_t *client = malloc(sizeof(audio_client_t));
     
    7373
    7474audio_client_t *audio_client_get_recording(
    75     const char *name, const audio_format_t *f, async_sess_t *sess)
     75    const char *name, const pcm_format_t *f, async_sess_t *sess)
    7676{
    7777        audio_client_t *client = malloc(sizeof(audio_client_t));
  • uspace/srv/audio/hound/audio_client.h

    r950110ee rea6c838  
    3939#include <adt/list.h>
    4040#include <async.h>
     41#include <pcm/format.h>
    4142
    42 #include "audio_format.h"
    4343#include "audio_source.h"
    4444#include "audio_sink.h"
     
    4949        audio_source_t source;
    5050        audio_sink_t sink;
    51         audio_format_t format;
     51        pcm_format_t format;
    5252        async_sess_t *sess;
    5353        async_exch_t *exch;
     
    6262
    6363audio_client_t *audio_client_get_playback(
    64     const char *name, const audio_format_t *f, async_sess_t *sess);
     64    const char *name, const pcm_format_t *f, async_sess_t *sess);
    6565audio_client_t *audio_client_get_recording(
    66     const char *name, const audio_format_t *f, async_sess_t *sess);
     66    const char *name, const pcm_format_t *f, async_sess_t *sess);
    6767void audio_client_destroy(audio_client_t *client);
    6868
  • uspace/srv/audio/hound/audio_device.c

    r950110ee rea6c838  
    109109
    110110                const unsigned frames = dev->buffer.size /
    111                     (BUFFER_PARTS * audio_format_frame_size(&dev->sink.format));
     111                    (BUFFER_PARTS * pcm_format_frame_size(&dev->sink.format));
    112112                ret = audio_pcm_start_playback(dev->sess, frames,
    113113                    dev->sink.format.channels, dev->sink.format.sampling_rate,
     
    152152                }
    153153                const unsigned frames = dev->buffer.size /
    154                     (BUFFER_PARTS * audio_format_frame_size(&dev->sink.format));
     154                    (BUFFER_PARTS * pcm_format_frame_size(&dev->sink.format));
    155155                ret = audio_pcm_start_record(dev->sess, frames,
    156156                    dev->sink.format.channels, dev->sink.format.sampling_rate,
  • uspace/srv/audio/hound/audio_sink.c

    r950110ee rea6c838  
    4646int audio_sink_init(audio_sink_t *sink, const char *name,
    4747    void *private_data, int (*connection_change)(audio_sink_t *, bool),
    48     int (*check_format)(audio_sink_t *sink), const audio_format_t *f)
     48    int (*check_format)(audio_sink_t *sink), const pcm_format_t *f)
    4949{
    5050        assert(sink);
     
    7979        list_append(&source->link, &sink->sources);
    8080
    81         const audio_format_t old_format = sink->format;
     81        const pcm_format_t old_format = sink->format;
    8282
    8383        /* The first source for me */
    8484        if (list_count(&sink->sources) == 1) {
    8585                /* Set audio format according to the first source */
    86                 if (audio_format_is_any(&sink->format)) {
     86                if (pcm_format_is_any(&sink->format)) {
    8787                        int ret = audio_sink_set_format(sink, &source->format);
    8888                        if (ret != EOK)
     
    110110}
    111111
    112 int audio_sink_set_format(audio_sink_t *sink, const audio_format_t *format)
     112int audio_sink_set_format(audio_sink_t *sink, const pcm_format_t *format)
    113113{
    114114        assert(sink);
    115115        assert(format);
    116         if (!audio_format_is_any(&sink->format)) {
     116        if (!pcm_format_is_any(&sink->format)) {
    117117                log_debug("Sink %s already has a format", sink->name);
    118118                return EEXISTS;
    119119        }
    120         const audio_format_t old_format;
     120        const pcm_format_t old_format;
    121121
    122         if (audio_format_is_any(format)) {
     122        if (pcm_format_is_any(format)) {
    123123                log_verbose("Setting DEFAULT format for sink %s", sink->name);
    124124                sink->format = AUDIO_FORMAT_DEFAULT;
  • uspace/srv/audio/hound/audio_sink.h

    r950110ee rea6c838  
    4141#include <bool.h>
    4242#include <fibril.h>
     43#include <pcm/format.h>
    4344
    4445#include "audio_source.h"
    45 #include "audio_format.h"
    4646
    4747typedef struct audio_sink audio_sink_t;
     
    5151        list_t sources;
    5252        const char *name;
    53         audio_format_t format;
     53        pcm_format_t format;
    5454        void *private_data;
    5555        int (*connection_change)(audio_sink_t *, bool);
     
    6464int audio_sink_init(audio_sink_t *sink, const char *name,
    6565    void *private_data, int (*connection_change)(audio_sink_t *, bool),
    66     int (*check_format)(audio_sink_t *), const audio_format_t *f);
     66    int (*check_format)(audio_sink_t *), const pcm_format_t *f);
    6767void audio_sink_fini(audio_sink_t *sink);
    6868
    69 int audio_sink_set_format(audio_sink_t *sink, const audio_format_t *format);
     69int audio_sink_set_format(audio_sink_t *sink, const pcm_format_t *format);
    7070int audio_sink_add_source(audio_sink_t *sink, audio_source_t *source);
    7171int audio_sink_remove_source(audio_sink_t *sink, audio_source_t *source);
  • uspace/srv/audio/hound/audio_source.c

    r950110ee rea6c838  
    4949    int (*connection_change)(audio_source_t *),
    5050    int (*update_available_data)(audio_source_t *, size_t),
    51     const audio_format_t *f)
     51    const pcm_format_t *f)
    5252{
    5353        assert(source);
     
    8282        assert(source);
    8383        audio_sink_t *old_sink = source->connected_sink;
    84         const audio_format_t old_format = source->format;
     84        const pcm_format_t old_format = source->format;
    8585
    8686        source->connected_sink = sink;
    87         if (audio_format_is_any(&source->format)) {
     87        if (pcm_format_is_any(&source->format)) {
    8888                assert(sink);
    89                 assert(!audio_format_is_any(&sink->format));
     89                assert(!pcm_format_is_any(&sink->format));
    9090                source->format = sink->format;
    9191        }
     
    102102
    103103int audio_source_add_self(audio_source_t *source, void *buffer, size_t size,
    104     const audio_format_t *f)
     104    const pcm_format_t *f)
    105105{
    106106        assert(source);
     
    120120                return ENOTSUP;
    121121        }
    122         const size_t src_frame_size = audio_format_frame_size(&source->format);
    123         const size_t dst_frames = size / audio_format_frame_size(f);
     122        const size_t src_frame_size = pcm_format_frame_size(&source->format);
     123        const size_t dst_frames = size / pcm_format_frame_size(f);
    124124
    125125        if (source->available_data.position == NULL ||
     
    135135        }
    136136
    137         const int ret = audio_format_convert_and_mix(buffer, size,
     137        const int ret = pcm_format_convert_and_mix(buffer, size,
    138138               source->available_data.position, source->available_data.size,
    139139               &source->format, f);
  • uspace/srv/audio/hound/audio_source.h

    r950110ee rea6c838  
    3939#include <adt/list.h>
    4040#include <bool.h>
    41 #include <pcm_sample_format.h>
    42 
    43 
    44 #include "audio_format.h"
     41#include <pcm/format.h>
    4542
    4643struct audio_sink;
     
    5047        link_t link;
    5148        const char *name;
    52         audio_format_t format;
     49        pcm_format_t format;
    5350        void *private_data;
    5451        int (*connection_change)(audio_source_t *source);
     
    7067    int (*connection_change)(audio_source_t *),
    7168    int (*update_available_data)(audio_source_t *, size_t),
    72     const audio_format_t *f);
     69    const pcm_format_t *f);
    7370void audio_source_fini(audio_source_t *source);
    7471int audio_source_connected(audio_source_t *source, struct audio_sink *sink);
    7572int audio_source_add_self(audio_source_t *source, void *buffer, size_t size,
    76     const audio_format_t *f);
    77 static inline const audio_format_t *audio_source_format(const audio_source_t *s)
     73    const pcm_format_t *f);
     74static inline const pcm_format_t *audio_source_format(const audio_source_t *s)
    7875{
    7976        assert(s);
  • uspace/srv/audio/hound/hound.h

    r950110ee rea6c838  
    4242#include <errno.h>
    4343#include <fibril_synch.h>
     44#include <pcm/format.h>
    4445
    4546#include "audio_source.h"
    4647#include "audio_sink.h"
    47 #include "audio_format.h"
    4848
    4949
  • uspace/srv/audio/hound/main.c

    r950110ee rea6c838  
    7171        LIST_INITIALIZE(local_playback);
    7272        LIST_INITIALIZE(local_recording);
    73         audio_format_t format = {0};
     73        pcm_format_t format = {0};
    7474        const char *name = NULL;
    7575        async_sess_t *sess = NULL;
Note: See TracChangeset for help on using the changeset viewer.