| /* |
| The mediastreamer library aims at providing modular media processing and I/O |
| for linphone, but also for any telephony application. |
| Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org |
| |
| This library is free software; you can redistribute it and/or |
| modify it under the terms of the GNU Lesser General Public |
| License as published by the Free Software Foundation; either |
| version 2.1 of the License, or (at your option) any later version. |
| |
| This library is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| Lesser General Public License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public |
| License along with this library; if not, write to the Free Software |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| |
| #ifndef MSBUFFER_H |
| #define MSBUFFER_H |
| #include <config.h> |
| |
| #ifdef HAVE_GLIB |
| #include <glib.h> |
| #else |
| #include <uglib.h> |
| #endif |
| |
| |
| #define MS_BUFFER_LARGE 4092 |
| |
| |
| typedef struct _MSBuffer |
| { |
| gchar *buffer; |
| guint32 size; |
| guint16 ref_count; |
| guint16 flags; |
| #define MS_BUFFER_CONTIGUOUS (1) |
| }MSBuffer; |
| |
| MSBuffer * ms_buffer_new(guint32 size); |
| void ms_buffer_destroy(MSBuffer *buf); |
| |
| struct _MSMessage |
| { |
| MSBuffer *buffer; /* points to a MSBuffer */ |
| void *data; /*points to buffer->buffer */ |
| guint32 size; /* the size of the buffer to read in data. It may not be the |
| physical size (I mean buffer->buffer->size */ |
| struct _MSMessage *next; |
| struct _MSMessage *prev; /* MSMessage are queued into MSQueues */ |
| }; |
| |
| typedef struct _MSMessage MSMessage; |
| |
| |
| MSBuffer *ms_buffer_alloc(gint flags); |
| MSMessage *ms_message_new(gint size); |
| |
| #define ms_message_set_buf(m,b) do { (b)->ref_count++; (m)->buffer=(b); (m)->data=(b)->buffer; (m)->size=(b)->size; }while(0) |
| #define ms_message_unset_buf(m) do { (m)->buffer->ref_count--; (m)->buffer=NULL; (m)->size=0; (m)->data=NULL; } while(0) |
| |
| #define ms_message_size(m) (m)->size |
| void ms_message_destroy(MSMessage *m); |
| |
| MSMessage * ms_message_dup(MSMessage *m); |
| |
| /* allocate a single message without buffer */ |
| MSMessage *ms_message_alloc(); |
| |
| #endif |