view src/mediastreamer/msbuffer.h @ 12029:1c771536a032

[gaim-migrate @ 14322] This _compiles_ for me now. Theres still a bunch of "dereferencing type-punned pointer will break strict-aliasing rules" warning and some redefinition warnings from the various config.h's. The deferencing warnings look like a BE<->LE hack but I left them untouched for the time being. committer: Tailor Script <tailor@pidgin.im>
author Gary Kramlich <grim@reaperworld.com>
date Wed, 09 Nov 2005 09:57:33 +0000
parents e67993da8a22
children fc464a0abccc
line wrap: on
line source

/*
  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