1 /* GStreamer 2 * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com> 3 * 4 * gstrtppayloads.h: various helper functions to deal with RTP payload 5 * types. 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Library General Public 9 * License as published by the Free Software Foundation; either 10 * version 2 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Library General Public License for more details. 16 * 17 * You should have received a copy of the GNU Library General Public 18 * License along with this library; if not, write to the 19 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 20 * Boston, MA 02110-1301, USA. 21 */ 22 23 #ifndef __GST_RTPPAYLOADS_H__ 24 #define __GST_RTPPAYLOADS_H__ 25 26 #include <gst/gst.h> 27 #include <gst/rtp/rtp-prelude.h> 28 29 G_BEGIN_DECLS 30 31 /** 32 * GstRTPPayload: 33 * @GST_RTP_PAYLOAD_PCMU: ITU-T G.711. mu-law audio (RFC 3551) 34 * @GST_RTP_PAYLOAD_1016: RFC 3551 says reserved 35 * @GST_RTP_PAYLOAD_G721: RFC 3551 says reserved 36 * @GST_RTP_PAYLOAD_GSM: GSM audio 37 * @GST_RTP_PAYLOAD_G723: ITU G.723.1 audio 38 * @GST_RTP_PAYLOAD_DVI4_8000: IMA ADPCM wave type (RFC 3551) 39 * @GST_RTP_PAYLOAD_DVI4_16000: IMA ADPCM wave type (RFC 3551) 40 * @GST_RTP_PAYLOAD_LPC: experimental linear predictive encoding 41 * @GST_RTP_PAYLOAD_PCMA: ITU-T G.711 A-law audio (RFC 3551) 42 * @GST_RTP_PAYLOAD_G722: ITU-T G.722 (RFC 3551) 43 * @GST_RTP_PAYLOAD_L16_STEREO: stereo PCM 44 * @GST_RTP_PAYLOAD_L16_MONO: mono PCM 45 * @GST_RTP_PAYLOAD_QCELP: EIA & TIA standard IS-733 46 * @GST_RTP_PAYLOAD_CN: Comfort Noise (RFC 3389) 47 * @GST_RTP_PAYLOAD_MPA: Audio MPEG 1-3. 48 * @GST_RTP_PAYLOAD_G728: ITU-T G.728 Speech coder (RFC 3551) 49 * @GST_RTP_PAYLOAD_DVI4_11025: IMA ADPCM wave type (RFC 3551) 50 * @GST_RTP_PAYLOAD_DVI4_22050: IMA ADPCM wave type (RFC 3551) 51 * @GST_RTP_PAYLOAD_G729: ITU-T G.729 Speech coder (RFC 3551) 52 * @GST_RTP_PAYLOAD_CELLB: See RFC 2029 53 * @GST_RTP_PAYLOAD_JPEG: ISO Standards 10918-1 and 10918-2 (RFC 2435) 54 * @GST_RTP_PAYLOAD_NV: nv encoding by Ron Frederick 55 * @GST_RTP_PAYLOAD_H261: ITU-T Recommendation H.261 (RFC 2032) 56 * @GST_RTP_PAYLOAD_MPV: Video MPEG 1 & 2 (RFC 2250) 57 * @GST_RTP_PAYLOAD_MP2T: MPEG-2 transport stream (RFC 2250) 58 * @GST_RTP_PAYLOAD_H263: Video H263 (RFC 2190) 59 * 60 * Standard predefined fixed payload types. 61 * 62 * The official list is at: 63 * http://www.iana.org/assignments/rtp-parameters 64 * 65 * Audio: 66 * reserved: 19 67 * unassigned: 20-23, 68 * 69 * Video: 70 * unassigned: 24, 27, 29, 30, 35-71, 77-95 71 * Reserved for RTCP conflict avoidance: 72-76 72 */ 73 typedef enum 74 { 75 /* Audio: */ 76 GST_RTP_PAYLOAD_PCMU = 0, 77 GST_RTP_PAYLOAD_1016 = 1, /* RFC 3551 says reserved */ 78 GST_RTP_PAYLOAD_G721 = 2, /* RFC 3551 says reserved */ 79 GST_RTP_PAYLOAD_GSM = 3, 80 GST_RTP_PAYLOAD_G723 = 4, 81 GST_RTP_PAYLOAD_DVI4_8000 = 5, 82 GST_RTP_PAYLOAD_DVI4_16000 = 6, 83 GST_RTP_PAYLOAD_LPC = 7, 84 GST_RTP_PAYLOAD_PCMA = 8, 85 GST_RTP_PAYLOAD_G722 = 9, 86 GST_RTP_PAYLOAD_L16_STEREO = 10, 87 GST_RTP_PAYLOAD_L16_MONO = 11, 88 GST_RTP_PAYLOAD_QCELP = 12, 89 GST_RTP_PAYLOAD_CN = 13, 90 GST_RTP_PAYLOAD_MPA = 14, 91 GST_RTP_PAYLOAD_G728 = 15, 92 GST_RTP_PAYLOAD_DVI4_11025 = 16, 93 GST_RTP_PAYLOAD_DVI4_22050 = 17, 94 GST_RTP_PAYLOAD_G729 = 18, 95 96 /* Video: */ 97 98 GST_RTP_PAYLOAD_CELLB = 25, 99 GST_RTP_PAYLOAD_JPEG = 26, 100 GST_RTP_PAYLOAD_NV = 28, 101 GST_RTP_PAYLOAD_H261 = 31, 102 GST_RTP_PAYLOAD_MPV = 32, 103 GST_RTP_PAYLOAD_MP2T = 33, 104 GST_RTP_PAYLOAD_H263 = 34, 105 106 /* BOTH */ 107 } GstRTPPayload; 108 109 /* backward compatibility */ 110 #define GST_RTP_PAYLOAD_G723_63 16 111 #define GST_RTP_PAYLOAD_G723_53 17 112 #define GST_RTP_PAYLOAD_TS48 18 113 #define GST_RTP_PAYLOAD_TS41 19 114 115 #define GST_RTP_PAYLOAD_G723_63_STRING "16" 116 #define GST_RTP_PAYLOAD_G723_53_STRING "17" 117 #define GST_RTP_PAYLOAD_TS48_STRING "18" 118 #define GST_RTP_PAYLOAD_TS41_STRING "19" 119 120 /* Defining the above as strings, to make the declaration of pad_templates 121 * easier. So if please keep these synchronized with the above. 122 */ 123 #define GST_RTP_PAYLOAD_PCMU_STRING "0" 124 #define GST_RTP_PAYLOAD_1016_STRING "1" 125 #define GST_RTP_PAYLOAD_G721_STRING "2" 126 #define GST_RTP_PAYLOAD_GSM_STRING "3" 127 #define GST_RTP_PAYLOAD_G723_STRING "4" 128 #define GST_RTP_PAYLOAD_DVI4_8000_STRING "5" 129 #define GST_RTP_PAYLOAD_DVI4_16000_STRING "6" 130 #define GST_RTP_PAYLOAD_LPC_STRING "7" 131 #define GST_RTP_PAYLOAD_PCMA_STRING "8" 132 #define GST_RTP_PAYLOAD_G722_STRING "9" 133 #define GST_RTP_PAYLOAD_L16_STEREO_STRING "10" 134 #define GST_RTP_PAYLOAD_L16_MONO_STRING "11" 135 #define GST_RTP_PAYLOAD_QCELP_STRING "12" 136 #define GST_RTP_PAYLOAD_CN_STRING "13" 137 #define GST_RTP_PAYLOAD_MPA_STRING "14" 138 #define GST_RTP_PAYLOAD_G728_STRING "15" 139 #define GST_RTP_PAYLOAD_DVI4_11025_STRING "16" 140 #define GST_RTP_PAYLOAD_DVI4_22050_STRING "17" 141 #define GST_RTP_PAYLOAD_G729_STRING "18" 142 143 #define GST_RTP_PAYLOAD_CELLB_STRING "25" 144 #define GST_RTP_PAYLOAD_JPEG_STRING "26" 145 #define GST_RTP_PAYLOAD_NV_STRING "28" 146 147 #define GST_RTP_PAYLOAD_H261_STRING "31" 148 #define GST_RTP_PAYLOAD_MPV_STRING "32" 149 #define GST_RTP_PAYLOAD_MP2T_STRING "33" 150 #define GST_RTP_PAYLOAD_H263_STRING "34" 151 152 #define GST_RTP_PAYLOAD_DYNAMIC_STRING "[96, 127]" 153 154 /** 155 * GST_RTP_PAYLOAD_IS_DYNAMIC: 156 * @pt: a payload type 157 * 158 * Check if @pt is a dynamic payload type. 159 */ 160 #define GST_RTP_PAYLOAD_IS_DYNAMIC(pt) ((pt) >= 96 && (pt) <= 127) 161 162 typedef struct _GstRTPPayloadInfo GstRTPPayloadInfo; 163 164 /** 165 * GstRTPPayloadInfo: 166 * @payload_type: payload type, -1 means dynamic 167 * @media: the media type(s), usually "audio", "video", "application", "text", 168 * "message". 169 * @encoding_name: the encoding name of @pt 170 * @clock_rate: default clock rate, 0 = unknown/variable 171 * @encoding_parameters: encoding parameters. For audio this is the number of 172 * channels. NULL = not applicable. 173 * @bitrate: the bitrate of the media. 0 = unknown/variable. 174 * 175 * Structure holding default payload type information. 176 */ 177 struct _GstRTPPayloadInfo 178 { 179 guint8 payload_type; 180 const gchar *media; 181 const gchar *encoding_name; 182 guint clock_rate; 183 const gchar *encoding_parameters; 184 guint bitrate; 185 186 /*< private >*/ 187 gpointer _gst_reserved[GST_PADDING]; 188 }; 189 190 GST_RTP_API 191 const GstRTPPayloadInfo * gst_rtp_payload_info_for_pt (guint8 payload_type); 192 193 GST_RTP_API 194 const GstRTPPayloadInfo * gst_rtp_payload_info_for_name (const gchar *media, const gchar *encoding_name); 195 196 G_END_DECLS 197 198 #endif /* __GST_RTPPAYLOADS_H__ */ 199 200