00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef PCM_BUFFER_H
00021 #define PCM_BUFFER_H
00022
00023 #include <glib.h>
00024
00030 struct pcm_buffer {
00031 char *buffer;
00032
00033 size_t size;
00034 };
00035
00039 static inline void
00040 pcm_buffer_init(struct pcm_buffer *buffer)
00041 {
00042 buffer->buffer = NULL;
00043 buffer->size = 0;
00044 }
00045
00049 static inline void
00050 pcm_buffer_deinit(struct pcm_buffer *buffer)
00051 {
00052 g_free(buffer->buffer);
00053
00054 buffer->buffer = NULL;
00055 }
00056
00061 static inline void *
00062 pcm_buffer_get(struct pcm_buffer *buffer, size_t size)
00063 {
00064 if (buffer->size < size) {
00065
00066 g_free(buffer->buffer);
00067
00068
00069 buffer->size = (size | 0xffff) + 1;
00070 buffer->buffer = g_malloc(buffer->size);
00071 }
00072
00073 return buffer->buffer;
00074 }
00075
00076 #endif