2 mediastreamer2 library - modular sound and video processing and streaming
3 Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 #include "ortp/str_utils.h"
24 /* for the moment these are stupid queues limited to one element*/
26 typedef struct _MSCPoint{
27 struct _MSFilter *filter;
31 typedef struct _MSQueue
39 MSQueue * ms_queue_new(struct _MSFilter *f1, int pin1, struct _MSFilter *f2, int pin2 );
41 static inline mblk_t *ms_queue_get(MSQueue *q){
45 static inline void ms_queue_put(MSQueue *q, mblk_t *m){
50 static inline mblk_t * ms_queue_peek_last(MSQueue *q){
54 static inline bool_t ms_queue_empty(MSQueue *q){
63 /*init a queue on stack*/
64 void ms_queue_init(MSQueue *q);
66 void ms_queue_flush(MSQueue *q);
68 void ms_queue_destroy(MSQueue *q);
70 #define mblk_set_timestamp_info(m,ts) (m)->reserved1=(ts);
71 #define mblk_get_timestamp_info(m) ((m)->reserved1)
72 #define mblk_set_marker_info(m,bit) (m)->reserved2=((m)->reserved2|bit)
73 #define mblk_get_marker_info(m) ((m)->reserved2&0x1)
74 #define mblk_set_rate(m,bits) (m)->reserved2=((m)->reserved2|(bits)<<1)
75 #define mblk_get_rate(m) (((m)->reserved2>>1)&0x3)
76 #define mblk_set_payload_type(m,bits) (m)->reserved2=((m)->reserved2|(bits<<3))
77 #define mblk_get_payload_type(m) (((m)->reserved2>>3)&0x7F)
78 #define mblk_set_precious_flag(m,bit) (m)->reserved2=(m)->reserved2|((bit & 0x1)<<10) /*use to prevent mirroring*/
79 #define mblk_get_precious_flag(m) (((m)->reserved2)>>10 & 0x1)
86 typedef struct _MSBufferizer MSBufferizer;
88 /*allocates and initialize */
89 MSBufferizer * ms_bufferizer_new(void);
91 /*initialize in memory */
92 void ms_bufferizer_init(MSBufferizer *obj);
94 void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m);
96 /* put every mblk_t from q, into the bufferizer */
97 void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q);
99 int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int datalen);
101 /* returns the number of bytes available in the bufferizer*/
102 static inline int ms_bufferizer_get_avail(MSBufferizer *obj){
106 /* purge all data pending in the bufferizer */
107 void ms_bufferizer_flush(MSBufferizer *obj);
109 void ms_bufferizer_uninit(MSBufferizer *obj);
111 void ms_bufferizer_destroy(MSBufferizer *obj);