Changeset 5029c788 in mainline for uspace/srv/audio/hound/audio_data.c


Ignore:
Timestamp:
2013-04-04T16:21:41Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9e40d443
Parents:
5a6f362
Message:

hound: add connection fifo, implement stream mixing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/audio/hound/audio_data.c

    r5a6f362 r5029c788  
    5555}
    5656
    57 audio_data_link_t *audio_data_link_clone(audio_data_t *adata)
     57audio_data_t *audio_data_create(const void *data, size_t size,
     58    pcm_format_t format)
     59{
     60        audio_data_t *adata = malloc(sizeof(audio_data_t));
     61        if (adata) {
     62                adata->data = data;
     63                adata->size = size;
     64                adata->format = format;
     65                atomic_set(&adata->refcount, 1);
     66        }
     67        return adata;
     68}
     69
     70void audio_data_unref(audio_data_t *adata)
     71{
     72        ref_dec(adata);
     73}
     74
     75audio_data_link_t *audio_data_link_create(audio_data_t *adata)
    5876{
    5977        assert(adata);
     
    6785}
    6886
    69 audio_data_link_t * audio_data_link_create(const void *data, size_t size)
     87audio_data_link_t * audio_data_link_create_data(const void *data, size_t size,
     88    pcm_format_t format)
    7089{
    7190        audio_data_link_t *link = NULL;
    72         audio_data_t *adata = malloc(sizeof(audio_data_t));
     91        audio_data_t *adata = audio_data_create(data, size, format);
    7392        if (adata) {
    74                 adata->data = data;
    75                 adata->size = size;
    76                 atomic_set(&adata->refcount, 1);
    77                 link = audio_data_link_clone(adata);
     93                link = audio_data_link_create(adata);
    7894                /* This will either return refcount to 1 or clean adata if
    7995                 * cloning failed */
    80                 ref_dec(adata);
     96                audio_data_unref(adata);
    8197        }
    8298        return link;
     
    91107}
    92108
     109size_t audio_data_link_available_frames(audio_data_link_t *alink)
     110{
     111        assert(alink);
     112        assert(alink->adata);
     113        return pcm_format_size_to_frames(alink->adata->size - alink->position,
     114            &alink->adata->format);
     115}
     116
    93117/**
    94118 * @}
Note: See TracChangeset for help on using the changeset viewer.