Macro qtTrIdx() replaced by tr() and QT_TRANSLATE_NOOP()
[mafwsubrenderer] / gst-plugins-base-subtitles0.10 / gst-libs / gst / rtp / gstrtpbuffer.h
1 /* GStreamer
2  * Copyright (C) <2005> Philippe Khalaf <burger@speedy.org>
3  *               <2005> Wim Taymans <wim@fluendo.com>
4  *
5  * gstrtpbuffer.h: various helper functions to manipulate buffers
6  *     with RTP payload.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this library; if not, write to the
20  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23
24 #ifndef __GST_RTPBUFFER_H__
25 #define __GST_RTPBUFFER_H__
26
27 #include <gst/gst.h>
28 #include <gst/rtp/gstrtppayloads.h>
29
30 G_BEGIN_DECLS
31
32 /**
33  * GST_RTP_VERSION:
34  *
35  * The supported RTP version 2.
36  */
37 #define GST_RTP_VERSION 2
38
39 /* creating buffers */
40 void            gst_rtp_buffer_allocate_data         (GstBuffer *buffer, guint payload_len, 
41                                                       guint8 pad_len, guint8 csrc_count);
42
43 GstBuffer*      gst_rtp_buffer_new_take_data         (gpointer data, guint len);
44 GstBuffer*      gst_rtp_buffer_new_copy_data         (gpointer data, guint len);
45 GstBuffer*      gst_rtp_buffer_new_allocate          (guint payload_len, guint8 pad_len, guint8 csrc_count);
46 GstBuffer*      gst_rtp_buffer_new_allocate_len      (guint packet_len, guint8 pad_len, guint8 csrc_count);
47
48 GstBufferList*  gst_rtp_buffer_list_from_buffer      (GstBuffer * buffer);
49
50
51 guint           gst_rtp_buffer_calc_header_len       (guint8 csrc_count);
52 guint           gst_rtp_buffer_calc_packet_len       (guint payload_len, guint8 pad_len, guint8 csrc_count);
53 guint           gst_rtp_buffer_calc_payload_len      (guint packet_len, guint8 pad_len, guint8 csrc_count);
54
55 gboolean        gst_rtp_buffer_validate_data         (guint8 *data, guint len);
56 gboolean        gst_rtp_buffer_validate              (GstBuffer *buffer);
57 gboolean        gst_rtp_buffer_list_validate         (GstBufferList *list);
58
59 void            gst_rtp_buffer_set_packet_len        (GstBuffer *buffer, guint len);
60 guint           gst_rtp_buffer_get_packet_len        (GstBuffer *buffer);
61
62 guint           gst_rtp_buffer_get_header_len        (GstBuffer *buffer);
63
64 guint8          gst_rtp_buffer_get_version           (GstBuffer *buffer);
65 void            gst_rtp_buffer_set_version           (GstBuffer *buffer, guint8 version);
66
67 gboolean        gst_rtp_buffer_get_padding           (GstBuffer *buffer);
68 void            gst_rtp_buffer_set_padding           (GstBuffer *buffer, gboolean padding);
69 void            gst_rtp_buffer_pad_to                (GstBuffer *buffer, guint len);
70
71 gboolean        gst_rtp_buffer_get_extension         (GstBuffer *buffer);
72 void            gst_rtp_buffer_set_extension         (GstBuffer *buffer, gboolean extension);
73 gboolean        gst_rtp_buffer_get_extension_data    (GstBuffer *buffer, guint16 *bits,
74                                                       gpointer *data, guint *wordlen);
75 gboolean        gst_rtp_buffer_set_extension_data    (GstBuffer *buffer, guint16 bits, guint16 length);
76
77 guint32         gst_rtp_buffer_get_ssrc              (GstBuffer *buffer);
78 guint32         gst_rtp_buffer_list_get_ssrc         (GstBufferList *list);
79 void            gst_rtp_buffer_set_ssrc              (GstBuffer *buffer, guint32 ssrc);
80 void            gst_rtp_buffer_list_set_ssrc         (GstBufferList *list, guint32 ssrc);
81
82 guint8          gst_rtp_buffer_get_csrc_count        (GstBuffer *buffer);
83 guint32         gst_rtp_buffer_get_csrc              (GstBuffer *buffer, guint8 idx);
84 void            gst_rtp_buffer_set_csrc              (GstBuffer *buffer, guint8 idx, guint32 csrc);
85
86 gboolean        gst_rtp_buffer_get_marker            (GstBuffer *buffer);
87 void            gst_rtp_buffer_set_marker            (GstBuffer *buffer, gboolean marker);
88
89 guint8          gst_rtp_buffer_get_payload_type      (GstBuffer *buffer);
90 guint8          gst_rtp_buffer_list_get_payload_type (GstBufferList *list);
91 void            gst_rtp_buffer_set_payload_type      (GstBuffer *buffer, guint8 payload_type);
92 void            gst_rtp_buffer_list_set_payload_type (GstBufferList *list, guint8 payload_type);
93
94 guint16         gst_rtp_buffer_get_seq               (GstBuffer *buffer);
95 guint16         gst_rtp_buffer_list_get_seq          (GstBufferList *list);
96 void            gst_rtp_buffer_set_seq               (GstBuffer *buffer, guint16 seq);
97 guint16         gst_rtp_buffer_list_set_seq          (GstBufferList *list, guint16 seq);
98
99 guint32         gst_rtp_buffer_get_timestamp         (GstBuffer *buffer);
100 guint32         gst_rtp_buffer_list_get_timestamp    (GstBufferList *list);
101 void            gst_rtp_buffer_set_timestamp         (GstBuffer *buffer, guint32 timestamp);
102 void            gst_rtp_buffer_list_set_timestamp    (GstBufferList *list, guint32 timestamp);
103
104 GstBuffer*      gst_rtp_buffer_get_payload_buffer    (GstBuffer *buffer);
105 GstBuffer*      gst_rtp_buffer_get_payload_subbuffer (GstBuffer *buffer, guint offset, guint len);
106
107 guint           gst_rtp_buffer_get_payload_len       (GstBuffer *buffer);
108 guint           gst_rtp_buffer_list_get_payload_len  (GstBufferList *list);
109 gpointer        gst_rtp_buffer_get_payload           (GstBuffer *buffer);
110
111 /* some helpers */
112 guint32         gst_rtp_buffer_default_clock_rate    (guint8 payload_type);
113 gint            gst_rtp_buffer_compare_seqnum        (guint16 seqnum1, guint16 seqnum2);
114 guint64         gst_rtp_buffer_ext_timestamp         (guint64 *exttimestamp, guint32 timestamp);
115
116 gboolean        gst_rtp_buffer_get_extension_onebyte_header (GstBuffer * buffer,
117                                                              guint8 id,
118                                                              guint nth,
119                                                              gpointer * data,
120                                                              guint * size);
121 gboolean        gst_rtp_buffer_get_extension_twobytes_header (GstBuffer * buffer,
122                                                               guint8 * appbits,
123                                                               guint8 id,
124                                                               guint nth,
125                                                               gpointer * data,
126                                                               guint * size);
127
128 gboolean       gst_rtp_buffer_add_extension_onebyte_header (GstBuffer * buffer,
129                                                             guint8 id,
130                                                             gpointer data,
131                                                             guint size);
132 gboolean       gst_rtp_buffer_add_extension_twobytes_header (GstBuffer * buffer,
133                                                              guint8 appbits,
134                                                              guint8 id,
135                                                              gpointer data,
136                                                              guint size);
137
138 gboolean       gst_rtp_buffer_list_get_extension_onebyte_header (GstBufferList * bufferlist,
139                                                                  guint group_idx,
140                                                                  guint8 id,
141                                                                  guint nth,
142                                                                  gpointer * data,
143                                                                  guint * size);
144 gboolean       gst_rtp_buffer_list_get_extension_twobytes_header (GstBufferList * bufferlist,
145                                                                   guint group_idx,
146                                                                   guint8 * appbits,
147                                                                   guint8 id,
148                                                                   guint nth,
149                                                                   gpointer * data,
150                                                                   guint * size);
151
152 gboolean       gst_rtp_buffer_list_add_extension_onebyte_header (GstBufferListIterator * it,
153                                                                   guint8 id,
154                                                                   gpointer data,
155                                                                   guint size);
156 gboolean       gst_rtp_buffer_list_add_extension_twobytes_header (GstBufferListIterator * it,
157                                                                   guint8 appbits,
158                                                                   guint8 id,
159                                                                   gpointer data,
160                                                                   guint size);
161
162
163 G_END_DECLS
164
165 #endif /* __GST_RTPBUFFER_H__ */
166