source: mediastreamer2/include/mediastreamer2/msqueue.h @ 856:3d8054c9c0b4

Last change on this file since 856:3d8054c9c0b4 was 856:3d8054c9c0b4, checked in by Simon Morlat <simon.morlat@…>, 3 years ago

expurge everything but mediastreamer2

File size: 3.2 KB
Line 
1/*
2mediastreamer2 library - modular sound and video processing and streaming
3Copyright (C) 2006  Simon MORLAT (simon.morlat@linphone.org)
4
5This program is free software; you can redistribute it and/or
6modify it under the terms of the GNU General Public License
7as published by the Free Software Foundation; either version 2
8of the License, or (at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18*/
19#ifndef MSQUEUE_H
20#define MSQUEUE_H
21
22#include "ortp/str_utils.h"
23
24/* for the moment these are stupid queues limited to one element*/
25
26typedef struct _MSCPoint{
27        struct _MSFilter *filter;
28        int pin;
29} MSCPoint;
30
31typedef struct _MSQueue
32{
33        queue_t q;
34        MSCPoint prev;
35        MSCPoint next;
36}MSQueue;
37
38
39MSQueue * ms_queue_new(struct _MSFilter *f1, int pin1, struct _MSFilter *f2, int pin2 );
40
41static inline mblk_t *ms_queue_get(MSQueue *q){
42        return getq(&q->q);
43}
44
45static inline void ms_queue_put(MSQueue *q, mblk_t *m){
46        putq(&q->q,m);
47        return;
48}
49
50static inline mblk_t * ms_queue_peek_last(MSQueue *q){
51        return qlast(&q->q);
52}
53
54static inline bool_t ms_queue_empty(MSQueue *q){
55        return qempty(&q->q);
56}
57
58#ifdef __cplusplus
59extern "C"
60{
61#endif
62
63/*init a queue on stack*/
64void ms_queue_init(MSQueue *q);
65
66void ms_queue_flush(MSQueue *q);
67
68void ms_queue_destroy(MSQueue *q);
69
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)
80
81struct _MSBufferizer{
82        queue_t q;
83        int size;
84};
85
86typedef struct _MSBufferizer MSBufferizer;
87
88/*allocates and initialize */
89MSBufferizer * ms_bufferizer_new(void);
90
91/*initialize in memory */
92void ms_bufferizer_init(MSBufferizer *obj);
93
94void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m);
95
96/* put every mblk_t from q, into the bufferizer */
97void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q);
98
99int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int datalen);
100
101/* returns the number of bytes available in the bufferizer*/
102static inline int ms_bufferizer_get_avail(MSBufferizer *obj){
103        return obj->size;
104}
105
106/* purge all data pending in the bufferizer */
107void ms_bufferizer_flush(MSBufferizer *obj);
108
109void ms_bufferizer_uninit(MSBufferizer *obj);
110
111void ms_bufferizer_destroy(MSBufferizer *obj);
112
113#ifdef __cplusplus
114}
115#endif
116
117#endif
Note: See TracBrowser for help on using the repository browser.