Changeset 5029c788 in mainline for uspace/srv/audio/hound/audio_data.c
- Timestamp:
- 2013-04-04T16:21:41Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9e40d443
- Parents:
- 5a6f362
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/audio/hound/audio_data.c
r5a6f362 r5029c788 55 55 } 56 56 57 audio_data_link_t *audio_data_link_clone(audio_data_t *adata) 57 audio_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 70 void audio_data_unref(audio_data_t *adata) 71 { 72 ref_dec(adata); 73 } 74 75 audio_data_link_t *audio_data_link_create(audio_data_t *adata) 58 76 { 59 77 assert(adata); … … 67 85 } 68 86 69 audio_data_link_t * audio_data_link_create(const void *data, size_t size) 87 audio_data_link_t * audio_data_link_create_data(const void *data, size_t size, 88 pcm_format_t format) 70 89 { 71 90 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); 73 92 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); 78 94 /* This will either return refcount to 1 or clean adata if 79 95 * cloning failed */ 80 ref_dec(adata);96 audio_data_unref(adata); 81 97 } 82 98 return link; … … 91 107 } 92 108 109 size_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 93 117 /** 94 118 * @}
Note:
See TracChangeset
for help on using the changeset viewer.