Changeset d988ef2 in mainline for uspace/srv/audio/hound/audio_data.h
- Timestamp:
- 2013-04-05T12:02:45Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1438e5
- Parents:
- 4b33db8e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/audio/hound/audio_data.h
r4b33db8e rd988ef2 37 37 #define AUDIO_DATA_H_ 38 38 39 #include <pcm/format.h>40 39 #include <adt/list.h> 41 40 #include <atomic.h> 41 #include <errno.h> 42 #include <fibril_synch.h> 43 #include <pcm/format.h> 42 44 43 45 typedef struct { … … 54 56 } audio_data_link_t; 55 57 58 typedef struct { 59 list_t list; 60 size_t bytes; 61 size_t frames; 62 fibril_mutex_t guard; 63 } audio_pipe_t; 64 56 65 static inline audio_data_link_t * audio_data_link_list_instance(link_t *l) 57 66 { … … 61 70 audio_data_t * audio_data_create(const void *data, size_t size, 62 71 pcm_format_t format); 72 void audio_data_addref(audio_data_t *adata); 63 73 void audio_data_unref(audio_data_t *adata); 64 74 … … 83 93 return alink->adata->size - alink->position; 84 94 } 95 96 void audio_pipe_init(audio_pipe_t *pipe); 97 void audio_pipe_fini(audio_pipe_t *pipe); 98 99 int audio_pipe_push(audio_pipe_t *pipe, audio_data_t *data); 100 audio_data_t *audio_pipe_pop(audio_pipe_t *pipe); 101 102 ssize_t audio_pipe_mix_data(audio_pipe_t *pipe, void *buffer, size_t size, 103 const pcm_format_t *f); 104 105 static inline size_t audio_pipe_bytes(audio_pipe_t *pipe) 106 { 107 assert(pipe); 108 return pipe->bytes; 109 } 110 111 static inline size_t audio_pipe_frames(audio_pipe_t *pipe) 112 { 113 assert(pipe); 114 return pipe->frames; 115 } 116 117 static inline int audio_pipe_push_data(audio_pipe_t *pipe, 118 const void *data, size_t size, pcm_format_t f) 119 { 120 audio_data_t *adata = audio_data_create(data, size, f); 121 if (adata) { 122 const int ret = audio_pipe_push(pipe, adata); 123 audio_data_unref(adata); 124 return ret; 125 } 126 return ENOMEM; 127 } 128 129 85 130 #endif 86 131
Note:
See TracChangeset
for help on using the changeset viewer.