Changeset 76ea1b7 in mainline
- Timestamp:
- 2013-04-04T13:38:38Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5a6f362
- Parents:
- 23878dc
- Location:
- uspace/srv/audio/hound
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/audio/hound/Makefile
r23878dc r76ea1b7 43 43 SOURCES = \ 44 44 audio_client.c \ 45 audio_data.c \ 45 46 audio_device.c \ 46 47 audio_sink.c \ -
uspace/srv/audio/hound/audio_data.h
r23878dc r76ea1b7 38 38 39 39 #include <adt/list.h> 40 #include <atomic.h> 40 41 41 42 typedef struct { 42 43 const void *data; 43 44 size_t size; 44 link_t link;45 atomic_t refcount; 45 46 } audio_data_t; 46 47 47 static inline audio_data_t * audio_data_list_instance(link_t *l) 48 typedef struct { 49 link_t link; 50 audio_data_t *adata; 51 size_t position; 52 } audio_data_link_t; 53 54 static inline audio_data_link_t * audio_data_link_list_instance(link_t *l) 48 55 { 49 return l ? list_get_instance(l, audio_data_ t, link) : NULL;56 return l ? list_get_instance(l, audio_data_link_t, link) : NULL; 50 57 } 51 58 59 audio_data_link_t * audio_data_link_create(const void *data, size_t size); 60 audio_data_link_t *audio_data_link_clone(audio_data_t *adata); 61 void audio_data_link_destroy(audio_data_link_t *link); 52 62 53 63 #endif -
uspace/srv/audio/hound/hound_ctx.c
r23878dc r76ea1b7 143 143 while (!list_empty(&stream->fifo)) { 144 144 link_t *l = list_first(&stream->fifo); 145 audio_data_t *data = audio_data_list_instance(l); 145 audio_data_link_t *data = 146 audio_data_link_list_instance(l); 146 147 list_remove(l); 147 free(data->data); 148 free(data); 148 audio_data_link_destroy(data); 149 149 } 150 150 log_verbose("CTX: %p remove stream (%zu/%zu); " … … 172 172 return EBUSY; 173 173 174 audio_data_t *adata = malloc(sizeof(audio_data_t)); 175 if (adata) { 176 adata->data = data; 177 adata->size = size; 178 link_initialize(&adata->link); 179 list_append(&adata->link, &stream->fifo); 174 audio_data_link_t *adatalink = audio_data_link_create(data, size); 175 if (adatalink) { 176 list_append(&adatalink->link, &stream->fifo); 180 177 stream->current_size += size; 181 178 return EOK; … … 191 188 } 192 189 190 void hound_ctx_stream_drain(hound_ctx_stream_t *stream) 191 { 192 assert(stream); 193 while (!list_empty(&stream->fifo)) 194 async_usleep(10000); 195 } 196 197 int hound_ctx_stream_add(hound_ctx_stream_t *stream, void *buffer, size_t size, 198 pcm_format_t format) 199 { 200 return ENOTSUP; 201 } 202 193 203 /** 194 204 * @} -
uspace/srv/audio/hound/hound_ctx.h
r23878dc r76ea1b7 71 71 size_t size); 72 72 int hound_ctx_stream_read(hound_ctx_stream_t *stream, void *buffer, size_t size); 73 void hound_ctx_stream_drain(hound_ctx_stream_t *stream); 74 int hound_ctx_stream_add(hound_ctx_stream_t *stream, void *buffer, size_t size, 75 pcm_format_t format); 73 76 74 77 #endif
Note:
See TracChangeset
for help on using the changeset viewer.