mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
gst-libs/gst/rtp/: Added new file and header to deal with payload info.
Original commit message from CVS: * gst-libs/gst/rtp/Makefile.am: * gst-libs/gst/rtp/gstrtppayloads.c: (gst_rtp_payload_info_for_pt), (gst_rtp_payload_info_for_name): * gst-libs/gst/rtp/gstrtppayloads.h: Added new file and header to deal with payload info. * gst-libs/gst/rtp/gstrtpbuffer.c: (gst_rtp_buffer_validate_data), (gst_rtp_buffer_default_clock_rate): * gst-libs/gst/rtp/gstrtpbuffer.h: Payload specific stuff is move to new headers. Implement _default_clock rate using the new payload function. * gst-libs/gst/sdp/gstsdpmessage.c: (is_multicast_address), (gst_sdp_parse_line): * gst-libs/gst/sdp/gstsdpmessage.h: Add some more comments.
This commit is contained in:
parent
818434b664
commit
7cdfb6d154
8 changed files with 465 additions and 165 deletions
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
|||
2007-10-01 Wim Taymans <wim.taymans@gmail.com>
|
||||
|
||||
* gst-libs/gst/rtp/Makefile.am:
|
||||
* gst-libs/gst/rtp/gstrtppayloads.c: (gst_rtp_payload_info_for_pt),
|
||||
(gst_rtp_payload_info_for_name):
|
||||
* gst-libs/gst/rtp/gstrtppayloads.h:
|
||||
Added new file and header to deal with payload info.
|
||||
|
||||
* gst-libs/gst/rtp/gstrtpbuffer.c: (gst_rtp_buffer_validate_data),
|
||||
(gst_rtp_buffer_default_clock_rate):
|
||||
* gst-libs/gst/rtp/gstrtpbuffer.h:
|
||||
Payload specific stuff is move to new headers.
|
||||
Implement _default_clock rate using the new payload function.
|
||||
|
||||
* gst-libs/gst/sdp/gstsdpmessage.c: (is_multicast_address),
|
||||
(gst_sdp_parse_line):
|
||||
* gst-libs/gst/sdp/gstsdpmessage.h:
|
||||
Add some more comments.
|
||||
|
||||
2007-10-01 Wim Taymans <wim.taymans@gmail.com>
|
||||
|
||||
* gst/typefind/gsttypefindfunctions.c: (utf8_type_find),
|
||||
|
|
|
@ -2,6 +2,7 @@ libgstrtpincludedir = $(includedir)/gstreamer-@GST_MAJORMINOR@/gst/rtp
|
|||
|
||||
libgstrtpinclude_HEADERS = gstrtpbuffer.h \
|
||||
gstrtcpbuffer.h \
|
||||
gstrtppayloads.h \
|
||||
gstbasertpaudiopayload.h \
|
||||
gstbasertppayload.h \
|
||||
gstbasertpdepayload.h
|
||||
|
@ -10,6 +11,7 @@ lib_LTLIBRARIES = libgstrtp-@GST_MAJORMINOR@.la
|
|||
|
||||
libgstrtp_@GST_MAJORMINOR@_la_SOURCES = gstrtpbuffer.c \
|
||||
gstrtcpbuffer.c \
|
||||
gstrtppayloads.c \
|
||||
gstbasertpaudiopayload.c \
|
||||
gstbasertppayload.c \
|
||||
gstbasertpdepayload.c
|
||||
|
|
|
@ -962,42 +962,19 @@ gst_rtp_buffer_get_payload (GstBuffer * buffer)
|
|||
guint32
|
||||
gst_rtp_buffer_default_clock_rate (guint8 payload_type)
|
||||
{
|
||||
switch (payload_type) {
|
||||
case GST_RTP_PAYLOAD_PCMU:
|
||||
case GST_RTP_PAYLOAD_GSM:
|
||||
case GST_RTP_PAYLOAD_G723:
|
||||
case GST_RTP_PAYLOAD_DVI4_8000:
|
||||
case GST_RTP_PAYLOAD_LPC:
|
||||
case GST_RTP_PAYLOAD_PCMA:
|
||||
case GST_RTP_PAYLOAD_G722:
|
||||
case GST_RTP_PAYLOAD_G729:
|
||||
case GST_RTP_PAYLOAD_QCELP:
|
||||
case GST_RTP_PAYLOAD_CN:
|
||||
case GST_RTP_PAYLOAD_G728:
|
||||
return 8000;
|
||||
case GST_RTP_PAYLOAD_DVI4_11025:
|
||||
return 11025;
|
||||
case GST_RTP_PAYLOAD_DVI4_16000:
|
||||
return 16000;
|
||||
case GST_RTP_PAYLOAD_DVI4_22050:
|
||||
return 22050;
|
||||
case GST_RTP_PAYLOAD_L16_STEREO:
|
||||
case GST_RTP_PAYLOAD_L16_MONO:
|
||||
return 44100;
|
||||
case GST_RTP_PAYLOAD_MPA:
|
||||
case GST_RTP_PAYLOAD_CELLB:
|
||||
case GST_RTP_PAYLOAD_JPEG:
|
||||
case GST_RTP_PAYLOAD_NV:
|
||||
case GST_RTP_PAYLOAD_H261:
|
||||
case GST_RTP_PAYLOAD_MPV:
|
||||
case GST_RTP_PAYLOAD_MP2T:
|
||||
case GST_RTP_PAYLOAD_H263:
|
||||
return 90000;
|
||||
case GST_RTP_PAYLOAD_1016:
|
||||
case GST_RTP_PAYLOAD_G721:
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
const GstRTPPayloadInfo *info;
|
||||
guint32 res;
|
||||
|
||||
info = gst_rtp_payload_info_for_pt (payload_type);
|
||||
if (!info)
|
||||
return -1;
|
||||
|
||||
res = info->clock_rate;
|
||||
/* 0 means unknown so we have to return -1 from this function */
|
||||
if (res == 0)
|
||||
res = -1;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#define __GST_RTPBUFFER_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/rtp/gstrtppayloads.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -35,130 +36,6 @@ G_BEGIN_DECLS
|
|||
*/
|
||||
#define GST_RTP_VERSION 2
|
||||
|
||||
/**
|
||||
* GstRTPPayload:
|
||||
* @GST_RTP_PAYLOAD_PCMU: ITU-T G.711. mu-law audio (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_1016: RFC 3551 says reserved
|
||||
* @GST_RTP_PAYLOAD_G721: RFC 3551 says reserved
|
||||
* @GST_RTP_PAYLOAD_GSM: GSM audio
|
||||
* @GST_RTP_PAYLOAD_G723: ITU G.723.1 audio
|
||||
* @GST_RTP_PAYLOAD_DVI4_8000: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_DVI4_16000: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_LPC: experimental linear predictive encoding
|
||||
* @GST_RTP_PAYLOAD_PCMA: ITU-T G.711 A-law audio (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_G722: ITU-T G.722 (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_L16_STEREO: stereo PCM
|
||||
* @GST_RTP_PAYLOAD_L16_MONO: mono PCM
|
||||
* @GST_RTP_PAYLOAD_QCELP: EIA & TIA standard IS-733
|
||||
* @GST_RTP_PAYLOAD_CN: Comfort Noise (RFC 3389)
|
||||
* @GST_RTP_PAYLOAD_MPA: Audio MPEG 1-3.
|
||||
* @GST_RTP_PAYLOAD_G728: ITU-T G.728 Speech coder (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_DVI4_11025: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_DVI4_22050: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_G729: ITU-T G.729 Speech coder (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_CELLB: See RFC 2029
|
||||
* @GST_RTP_PAYLOAD_JPEG: ISO Standards 10918-1 and 10918-2 (RFC 2435)
|
||||
* @GST_RTP_PAYLOAD_NV: nv encoding by Ron Frederick
|
||||
* @GST_RTP_PAYLOAD_H261: ITU-T Recommendation H.261 (RFC 2032)
|
||||
* @GST_RTP_PAYLOAD_MPV: Video MPEG 1 & 2 (RFC 2250)
|
||||
* @GST_RTP_PAYLOAD_MP2T: MPEG-2 transport stream (RFC 2250)
|
||||
* @GST_RTP_PAYLOAD_H263: Video H263 (RFC 2190)
|
||||
*
|
||||
*
|
||||
* Standard predefined fixed payload types.
|
||||
*
|
||||
* The official list is at:
|
||||
* http://www.iana.org/assignments/rtp-parameters
|
||||
*
|
||||
* Audio:
|
||||
* reserved: 19
|
||||
* unassigned: 20-23,
|
||||
*
|
||||
* Video:
|
||||
* unassigned: 24, 27, 29, 30, 35-71, 77-95
|
||||
* Reserved for RTCP conflict avoidance: 72-76
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
/* Audio: */
|
||||
GST_RTP_PAYLOAD_PCMU = 0,
|
||||
GST_RTP_PAYLOAD_1016 = 1, /* RFC 3551 says reserved */
|
||||
GST_RTP_PAYLOAD_G721 = 2, /* RFC 3551 says reserved */
|
||||
GST_RTP_PAYLOAD_GSM = 3,
|
||||
GST_RTP_PAYLOAD_G723 = 4,
|
||||
GST_RTP_PAYLOAD_DVI4_8000 = 5,
|
||||
GST_RTP_PAYLOAD_DVI4_16000 = 6,
|
||||
GST_RTP_PAYLOAD_LPC = 7,
|
||||
GST_RTP_PAYLOAD_PCMA = 8,
|
||||
GST_RTP_PAYLOAD_G722 = 9,
|
||||
GST_RTP_PAYLOAD_L16_STEREO = 10,
|
||||
GST_RTP_PAYLOAD_L16_MONO = 11,
|
||||
GST_RTP_PAYLOAD_QCELP = 12,
|
||||
GST_RTP_PAYLOAD_CN = 13,
|
||||
GST_RTP_PAYLOAD_MPA = 14,
|
||||
GST_RTP_PAYLOAD_G728 = 15,
|
||||
GST_RTP_PAYLOAD_DVI4_11025 = 16,
|
||||
GST_RTP_PAYLOAD_DVI4_22050 = 17,
|
||||
GST_RTP_PAYLOAD_G729 = 18,
|
||||
|
||||
/* Video: */
|
||||
|
||||
GST_RTP_PAYLOAD_CELLB = 25,
|
||||
GST_RTP_PAYLOAD_JPEG = 26,
|
||||
GST_RTP_PAYLOAD_NV = 28,
|
||||
GST_RTP_PAYLOAD_H261 = 31,
|
||||
GST_RTP_PAYLOAD_MPV = 32,
|
||||
GST_RTP_PAYLOAD_MP2T = 33,
|
||||
GST_RTP_PAYLOAD_H263 = 34,
|
||||
|
||||
/* BOTH */
|
||||
} GstRTPPayload;
|
||||
|
||||
/* backward compatibility */
|
||||
#define GST_RTP_PAYLOAD_G723_63 16
|
||||
#define GST_RTP_PAYLOAD_G723_53 17
|
||||
#define GST_RTP_PAYLOAD_TS48 18
|
||||
#define GST_RTP_PAYLOAD_TS41 19
|
||||
|
||||
#define GST_RTP_PAYLOAD_G723_63_STRING "16"
|
||||
#define GST_RTP_PAYLOAD_G723_53_STRING "17"
|
||||
#define GST_RTP_PAYLOAD_TS48_STRING "18"
|
||||
#define GST_RTP_PAYLOAD_TS41_STRING "19"
|
||||
|
||||
/* Defining the above as strings, to make the declaration of pad_templates
|
||||
* easier. So if please keep these synchronized with the above.
|
||||
*/
|
||||
#define GST_RTP_PAYLOAD_PCMU_STRING "0"
|
||||
#define GST_RTP_PAYLOAD_1016_STRING "1"
|
||||
#define GST_RTP_PAYLOAD_G721_STRING "2"
|
||||
#define GST_RTP_PAYLOAD_GSM_STRING "3"
|
||||
#define GST_RTP_PAYLOAD_G723_STRING "4"
|
||||
#define GST_RTP_PAYLOAD_DVI4_8000_STRING "5"
|
||||
#define GST_RTP_PAYLOAD_DVI4_16000_STRING "6"
|
||||
#define GST_RTP_PAYLOAD_LPC_STRING "7"
|
||||
#define GST_RTP_PAYLOAD_PCMA_STRING "8"
|
||||
#define GST_RTP_PAYLOAD_G722_STRING "9"
|
||||
#define GST_RTP_PAYLOAD_L16_STEREO_STRING "10"
|
||||
#define GST_RTP_PAYLOAD_L16_MONO_STRING "11"
|
||||
#define GST_RTP_PAYLOAD_QCELP_STRING "12"
|
||||
#define GST_RTP_PAYLOAD_CN_STRING "13"
|
||||
#define GST_RTP_PAYLOAD_MPA_STRING "14"
|
||||
#define GST_RTP_PAYLOAD_G728_STRING "15"
|
||||
#define GST_RTP_PAYLOAD_DVI4_11025_STRING "16"
|
||||
#define GST_RTP_PAYLOAD_DVI4_22050_STRING "17"
|
||||
#define GST_RTP_PAYLOAD_G729_STRING "18"
|
||||
|
||||
#define GST_RTP_PAYLOAD_CELLB_STRING "25"
|
||||
#define GST_RTP_PAYLOAD_JPEG_STRING "26"
|
||||
#define GST_RTP_PAYLOAD_NV_STRING "28"
|
||||
|
||||
#define GST_RTP_PAYLOAD_H261_STRING "31"
|
||||
#define GST_RTP_PAYLOAD_MPV_STRING "32"
|
||||
#define GST_RTP_PAYLOAD_MP2T_STRING "33"
|
||||
#define GST_RTP_PAYLOAD_H263_STRING "34"
|
||||
|
||||
#define GST_RTP_PAYLOAD_DYNAMIC_STRING "[96, 127]"
|
||||
|
||||
/* creating buffers */
|
||||
void gst_rtp_buffer_allocate_data (GstBuffer *buffer, guint payload_len,
|
||||
guint8 pad_len, guint8 csrc_count);
|
||||
|
|
213
gst-libs/gst/rtp/gstrtppayloads.c
Normal file
213
gst-libs/gst/rtp/gstrtppayloads.c
Normal file
|
@ -0,0 +1,213 @@
|
|||
/* GStreamer
|
||||
* Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
|
||||
*
|
||||
* gstrtppayloads.h: various helper functions to deal with RTP payload
|
||||
* types.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "gstrtppayloads.h"
|
||||
|
||||
/* pt, encoding_name, media, rate, params, bitrate */
|
||||
static const GstRTPPayloadInfo info[] = {
|
||||
/* static audio */
|
||||
{0, "audio", "PCMU", 8000, "1", 64000},
|
||||
/* { 1, "audio", "reserved", 0, NULL, 0 }, */
|
||||
/* { 2, "audio", "reserved", 0, NULL, 0 }, */
|
||||
{3, "audio", "GSM", 8000, "1", 0},
|
||||
{4, "audio", "G723", 8000, "1", 0},
|
||||
{5, "audio", "DVI4", 8000, "1", 32000},
|
||||
{6, "audio", "DVI4", 16000, "1", 64000},
|
||||
{7, "audio", "LPC", 8000, "1", 0},
|
||||
{8, "audio", "PCMA", 8000, "1", 64000},
|
||||
{9, "audio", "G722", 8000, "1", 64000},
|
||||
{10, "audio", "L16", 44100, "2", 1411200},
|
||||
{11, "audio", "L16", 44100, "1", 705600},
|
||||
{12, "audio", "QCELP", 8000, "1", 0},
|
||||
{13, "audio", "CN", 8000, "1", 0},
|
||||
{14, "audio", "MPA", 90000, NULL, 0},
|
||||
{15, "audio", "G728", 8000, "1", 0},
|
||||
{16, "audio", "DVI4", 11025, "1", 44100},
|
||||
{17, "audio", "DVI4", 22050, "1", 88200},
|
||||
{18, "audio", "G729", 8000, "1", 0},
|
||||
/* { 19, "audio", "reserved", 0, NULL, 0 }, */
|
||||
/* { 20, "audio", "unassigned", 0, NULL, 0 }, */
|
||||
/* { 21, "audio", "unassigned", 0, NULL, 0 }, */
|
||||
/* { 22, "audio", "unassigned", 0, NULL, 0 }, */
|
||||
/* { 23, "audio", "unassigned", 0, NULL, 0 }, */
|
||||
|
||||
/* video and video/audio */
|
||||
/* { 24, "video", "unassigned", 0, NULL, 0 }, */
|
||||
{25, "video", "CelB", 90000, NULL, 0},
|
||||
{26, "video", "JPEG", 90000, NULL, 0},
|
||||
/* { 27, "video", "unassigned", 0, NULL, 0 }, */
|
||||
{28, "video", "nv", 90000, NULL, 0},
|
||||
/* { 29, "video", "unassigned", 0, NULL, 0 }, */
|
||||
/* { 30, "video", "unassigned", 0, NULL, 0 }, */
|
||||
{31, "video", "H261", 90000, NULL, 0},
|
||||
{32, "video", "MPV", 90000, NULL, 0},
|
||||
{33, "video", "MP2T", 90000, NULL, 0},
|
||||
{34, "video", "H263", 90000, NULL, 0},
|
||||
/* { 35-71, "unassigned", 0, 0, NULL, 0 }, */
|
||||
/* { 72-76, "reserved", 0, 0, NULL, 0 }, */
|
||||
/* { 77-95, "unassigned", 0, 0, NULL, 0 }, */
|
||||
/* { 96-127, "dynamic", 0, 0, NULL, 0 }, */
|
||||
|
||||
/* dynamic stuff */
|
||||
{-1, "application", "parityfec", 0, NULL, 0}, /* [RFC3009] */
|
||||
{-1, "application", "rtx", 0, NULL, 0}, /* [RFC4588] */
|
||||
{-1, "audio", "AMR", 8000, NULL, 0}, /* [RFC4867][RFC3267] */
|
||||
{-1, "audio", "AMR-WB", 16000, NULL, 0}, /* [RFC4867][RFC3267] */
|
||||
{-1, "audio", "DAT12", 0, NULL, 0}, /* [RFC3190] */
|
||||
{-1, "audio", "dsr-es201108", 0, NULL, 0}, /* [RFC3557] */
|
||||
{-1, "audio", "EVRC", 8000, "1", 0}, /* [RFC4788] */
|
||||
{-1, "audio", "EVRC0", 8000, "1", 0}, /* [RFC4788] */
|
||||
{-1, "audio", "EVRC1", 8000, "1", 0}, /* [RFC4788] */
|
||||
{-1, "audio", "EVRCB", 8000, "1", 0}, /* [RFC4788] */
|
||||
{-1, "audio", "EVRCB0", 8000, "1", 0}, /* [RFC4788] */
|
||||
{-1, "audio", "EVRCB1", 8000, "1", 0}, /* [RFC4788] */
|
||||
{-1, "audio", "G7221", 16000, "1", 0}, /* [RFC3047] */
|
||||
{-1, "audio", "G726-16", 8000, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "G726-24", 8000, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "G726-32", 8000, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "G726-40", 8000, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "G729D", 8000, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "G729E", 8000, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "GSM-EFR", 8000, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "L8", 0, NULL, 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "RED", 0, NULL, 0}, /* [RFC2198][RFC3555] */
|
||||
{-1, "audio", "rtx", 0, NULL, 0}, /* [RFC4588] */
|
||||
{-1, "audio", "VDVI", 0, "1", 0}, /* [RFC3551][RFC4856] */
|
||||
{-1, "audio", "L20", 0, NULL, 0}, /* [RFC3190] */
|
||||
{-1, "audio", "L24", 0, NULL, 0}, /* [RFC3190] */
|
||||
{-1, "audio", "MP4A-LATM", 0, NULL, 0}, /* [RFC3016] */
|
||||
{-1, "audio", "mpa-robust", 90000, NULL, 0}, /* [RFC3119] */
|
||||
{-1, "audio", "parityfec", 0, NULL, 0}, /* [RFC3009] */
|
||||
{-1, "audio", "SMV", 8000, "1", 0}, /* [RFC3558] */
|
||||
{-1, "audio", "SMV0", 8000, "1", 0}, /* [RFC3558] */
|
||||
{-1, "audio", "t140c", 0, NULL, 0}, /* [RFC4351] */
|
||||
{-1, "audio", "t38", 0, NULL, 0}, /* [RFC4612] */
|
||||
{-1, "audio", "telephone-event", 0, NULL, 0}, /* [RFC4733] */
|
||||
{-1, "audio", "tone", 0, NULL, 0}, /* [RFC4733] */
|
||||
{-1, "audio", "DVI4", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "G722", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "G723", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "G728", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "G729", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "GSM", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "L16", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "LPC", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "PCMA", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "audio", "PCMU", 0, NULL, 0}, /* [RFC4856] */
|
||||
{-1, "text", "parityfec", 0, NULL, 0}, /* [RFC3009] */
|
||||
{-1, "text", "red", 1000, NULL, 0}, /* [RFC4102] */
|
||||
{-1, "text", "rtx", 0, NULL, 0}, /* [RFC4588] */
|
||||
{-1, "text", "t140", 1000, NULL, 0}, /* [RFC4103] */
|
||||
{-1, "video", "BMPEG", 90000, NULL, 0}, /* [RFC2343][RFC3555] */
|
||||
{-1, "video", "BT656", 90000, NULL, 0}, /* [RFC2431][RFC3555] */
|
||||
{-1, "video", "DV", 90000, NULL, 0}, /* [RFC3189] */
|
||||
{-1, "video", "H263-1998", 90000, NULL, 0}, /* [RFC2429][RFC3555] */
|
||||
{-1, "video", "H263-2000", 90000, NULL, 0}, /* [RFC2429][RFC3555] */
|
||||
{-1, "video", "MP1S", 90000, NULL, 0}, /* [RFC2250][RFC3555] */
|
||||
{-1, "video", "MP2P", 90000, NULL, 0}, /* [RFC2250][RFC3555] */
|
||||
{-1, "video", "MP4V-ES", 90000, NULL, 0}, /* [RFC3016] */
|
||||
{-1, "video", "parityfec", 0, NULL, 0}, /* [RFC3009] */
|
||||
{-1, "video", "pointer", 90000, NULL, 0}, /* [RFC2862] */
|
||||
{-1, "video", "raw", 90000, NULL, 0}, /* [RFC4175] */
|
||||
{-1, "video", "rtx", 0, NULL, 0}, /* [RFC4588] */
|
||||
{-1, "video", "SMPTE292M", 0, NULL, 0}, /* [RFC3497] */
|
||||
{-1, "video", "vc1", 90000, NULL, 0}, /* [RFC4425] */
|
||||
|
||||
/* not in http://www.iana.org/assignments/rtp-parameters */
|
||||
{-1, "audio", "AC3", 0, NULL, 0},
|
||||
{-1, "audio", "ILBC", 8000, NULL, 0},
|
||||
{-1, "audio", "MPEG4-GENERIC", 0, NULL, 0},
|
||||
{-1, "audio", "SPEEX", 0, NULL, 0},
|
||||
|
||||
{-1, "application", "MPEG4-GENERIC", 0, NULL, 0},
|
||||
|
||||
{-1, "video", "H264", 90000, NULL, 0},
|
||||
{-1, "video", "MPEG4-GENERIC", 90000, NULL, 0},
|
||||
{-1, "video", "THEORA", 0, NULL, 0},
|
||||
{-1, "video", "VORBIS", 0, NULL, 0},
|
||||
{-1, "video", "X-SV3V-ES", 90000, NULL, 0},
|
||||
{-1, "video", "X-SORENSON-VIDEO", 90000, NULL, 0},
|
||||
|
||||
/* real stuff */
|
||||
{-1, "video", "x-pn-realvideo", 1000, NULL, 0},
|
||||
{-1, "audio", "x-pn-realaudio", 1000, NULL, 0},
|
||||
{-1, "application", "x-pn-realmedia", 1000, NULL, 0},
|
||||
|
||||
/* terminator */
|
||||
{-1, NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
/**
|
||||
* gst_rtp_payload_info_for_pt:
|
||||
* @payload_type: the payload_type to find
|
||||
*
|
||||
* Get the #GstRTPPayloadInfo for @payload_type. This function is
|
||||
* mostly used to get the default clock-rate and bandwidth for static payload
|
||||
* types specified with @payload_type.
|
||||
*
|
||||
* Returns: a #GstRTPPayloadInfo or NULL when no info could be found.
|
||||
*/
|
||||
const GstRTPPayloadInfo *
|
||||
gst_rtp_payload_info_for_pt (guint8 payload_type)
|
||||
{
|
||||
const GstRTPPayloadInfo *result = NULL;
|
||||
gint i;
|
||||
|
||||
for (i = 0; info[i].media; i++) {
|
||||
if (info[i].payload_type == payload_type) {
|
||||
result = &info[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_rtp_payload_info_for_name:
|
||||
* @media: the media to find
|
||||
* @encoding_name: the encoding name to find
|
||||
*
|
||||
* Get the #GstRTPPayloadInfo for @media and @encoding_name. This function is
|
||||
* mostly used to get the default clock-rate and bandwidth for dynamic payload
|
||||
* types specified with @media and @encoding name.
|
||||
*
|
||||
* The search for @encoding_name will be performed in a case insensitve way.
|
||||
*
|
||||
* Returns: a #GstRTPPayloadInfo or NULL when no info could be found.
|
||||
*/
|
||||
const GstRTPPayloadInfo *
|
||||
gst_rtp_payload_info_for_name (const gchar * media, const gchar * encoding_name)
|
||||
{
|
||||
const GstRTPPayloadInfo *result = NULL;
|
||||
gint i;
|
||||
|
||||
for (i = 0; info[i].media; i++) {
|
||||
if (strcmp (media, info[i].media) == 0
|
||||
&& strcasecmp (encoding_name, info[i].encoding_name) == 0) {
|
||||
result = &info[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
193
gst-libs/gst/rtp/gstrtppayloads.h
Normal file
193
gst-libs/gst/rtp/gstrtppayloads.h
Normal file
|
@ -0,0 +1,193 @@
|
|||
/* GStreamer
|
||||
* Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
|
||||
*
|
||||
* gstrtppayloads.h: various helper functions to deal with RTP payload
|
||||
* types.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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 __GST_RTPPAYLOADS_H__
|
||||
#define __GST_RTPPAYLOADS_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/**
|
||||
* GstRTPPayload:
|
||||
* @GST_RTP_PAYLOAD_PCMU: ITU-T G.711. mu-law audio (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_1016: RFC 3551 says reserved
|
||||
* @GST_RTP_PAYLOAD_G721: RFC 3551 says reserved
|
||||
* @GST_RTP_PAYLOAD_GSM: GSM audio
|
||||
* @GST_RTP_PAYLOAD_G723: ITU G.723.1 audio
|
||||
* @GST_RTP_PAYLOAD_DVI4_8000: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_DVI4_16000: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_LPC: experimental linear predictive encoding
|
||||
* @GST_RTP_PAYLOAD_PCMA: ITU-T G.711 A-law audio (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_G722: ITU-T G.722 (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_L16_STEREO: stereo PCM
|
||||
* @GST_RTP_PAYLOAD_L16_MONO: mono PCM
|
||||
* @GST_RTP_PAYLOAD_QCELP: EIA & TIA standard IS-733
|
||||
* @GST_RTP_PAYLOAD_CN: Comfort Noise (RFC 3389)
|
||||
* @GST_RTP_PAYLOAD_MPA: Audio MPEG 1-3.
|
||||
* @GST_RTP_PAYLOAD_G728: ITU-T G.728 Speech coder (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_DVI4_11025: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_DVI4_22050: IMA ADPCM wave type (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_G729: ITU-T G.729 Speech coder (RFC 3551)
|
||||
* @GST_RTP_PAYLOAD_CELLB: See RFC 2029
|
||||
* @GST_RTP_PAYLOAD_JPEG: ISO Standards 10918-1 and 10918-2 (RFC 2435)
|
||||
* @GST_RTP_PAYLOAD_NV: nv encoding by Ron Frederick
|
||||
* @GST_RTP_PAYLOAD_H261: ITU-T Recommendation H.261 (RFC 2032)
|
||||
* @GST_RTP_PAYLOAD_MPV: Video MPEG 1 & 2 (RFC 2250)
|
||||
* @GST_RTP_PAYLOAD_MP2T: MPEG-2 transport stream (RFC 2250)
|
||||
* @GST_RTP_PAYLOAD_H263: Video H263 (RFC 2190)
|
||||
*
|
||||
*
|
||||
* Standard predefined fixed payload types.
|
||||
*
|
||||
* The official list is at:
|
||||
* http://www.iana.org/assignments/rtp-parameters
|
||||
*
|
||||
* Audio:
|
||||
* reserved: 19
|
||||
* unassigned: 20-23,
|
||||
*
|
||||
* Video:
|
||||
* unassigned: 24, 27, 29, 30, 35-71, 77-95
|
||||
* Reserved for RTCP conflict avoidance: 72-76
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
/* Audio: */
|
||||
GST_RTP_PAYLOAD_PCMU = 0,
|
||||
GST_RTP_PAYLOAD_1016 = 1, /* RFC 3551 says reserved */
|
||||
GST_RTP_PAYLOAD_G721 = 2, /* RFC 3551 says reserved */
|
||||
GST_RTP_PAYLOAD_GSM = 3,
|
||||
GST_RTP_PAYLOAD_G723 = 4,
|
||||
GST_RTP_PAYLOAD_DVI4_8000 = 5,
|
||||
GST_RTP_PAYLOAD_DVI4_16000 = 6,
|
||||
GST_RTP_PAYLOAD_LPC = 7,
|
||||
GST_RTP_PAYLOAD_PCMA = 8,
|
||||
GST_RTP_PAYLOAD_G722 = 9,
|
||||
GST_RTP_PAYLOAD_L16_STEREO = 10,
|
||||
GST_RTP_PAYLOAD_L16_MONO = 11,
|
||||
GST_RTP_PAYLOAD_QCELP = 12,
|
||||
GST_RTP_PAYLOAD_CN = 13,
|
||||
GST_RTP_PAYLOAD_MPA = 14,
|
||||
GST_RTP_PAYLOAD_G728 = 15,
|
||||
GST_RTP_PAYLOAD_DVI4_11025 = 16,
|
||||
GST_RTP_PAYLOAD_DVI4_22050 = 17,
|
||||
GST_RTP_PAYLOAD_G729 = 18,
|
||||
|
||||
/* Video: */
|
||||
|
||||
GST_RTP_PAYLOAD_CELLB = 25,
|
||||
GST_RTP_PAYLOAD_JPEG = 26,
|
||||
GST_RTP_PAYLOAD_NV = 28,
|
||||
GST_RTP_PAYLOAD_H261 = 31,
|
||||
GST_RTP_PAYLOAD_MPV = 32,
|
||||
GST_RTP_PAYLOAD_MP2T = 33,
|
||||
GST_RTP_PAYLOAD_H263 = 34,
|
||||
|
||||
/* BOTH */
|
||||
} GstRTPPayload;
|
||||
|
||||
/* backward compatibility */
|
||||
#define GST_RTP_PAYLOAD_G723_63 16
|
||||
#define GST_RTP_PAYLOAD_G723_53 17
|
||||
#define GST_RTP_PAYLOAD_TS48 18
|
||||
#define GST_RTP_PAYLOAD_TS41 19
|
||||
|
||||
#define GST_RTP_PAYLOAD_G723_63_STRING "16"
|
||||
#define GST_RTP_PAYLOAD_G723_53_STRING "17"
|
||||
#define GST_RTP_PAYLOAD_TS48_STRING "18"
|
||||
#define GST_RTP_PAYLOAD_TS41_STRING "19"
|
||||
|
||||
/* Defining the above as strings, to make the declaration of pad_templates
|
||||
* easier. So if please keep these synchronized with the above.
|
||||
*/
|
||||
#define GST_RTP_PAYLOAD_PCMU_STRING "0"
|
||||
#define GST_RTP_PAYLOAD_1016_STRING "1"
|
||||
#define GST_RTP_PAYLOAD_G721_STRING "2"
|
||||
#define GST_RTP_PAYLOAD_GSM_STRING "3"
|
||||
#define GST_RTP_PAYLOAD_G723_STRING "4"
|
||||
#define GST_RTP_PAYLOAD_DVI4_8000_STRING "5"
|
||||
#define GST_RTP_PAYLOAD_DVI4_16000_STRING "6"
|
||||
#define GST_RTP_PAYLOAD_LPC_STRING "7"
|
||||
#define GST_RTP_PAYLOAD_PCMA_STRING "8"
|
||||
#define GST_RTP_PAYLOAD_G722_STRING "9"
|
||||
#define GST_RTP_PAYLOAD_L16_STEREO_STRING "10"
|
||||
#define GST_RTP_PAYLOAD_L16_MONO_STRING "11"
|
||||
#define GST_RTP_PAYLOAD_QCELP_STRING "12"
|
||||
#define GST_RTP_PAYLOAD_CN_STRING "13"
|
||||
#define GST_RTP_PAYLOAD_MPA_STRING "14"
|
||||
#define GST_RTP_PAYLOAD_G728_STRING "15"
|
||||
#define GST_RTP_PAYLOAD_DVI4_11025_STRING "16"
|
||||
#define GST_RTP_PAYLOAD_DVI4_22050_STRING "17"
|
||||
#define GST_RTP_PAYLOAD_G729_STRING "18"
|
||||
|
||||
#define GST_RTP_PAYLOAD_CELLB_STRING "25"
|
||||
#define GST_RTP_PAYLOAD_JPEG_STRING "26"
|
||||
#define GST_RTP_PAYLOAD_NV_STRING "28"
|
||||
|
||||
#define GST_RTP_PAYLOAD_H261_STRING "31"
|
||||
#define GST_RTP_PAYLOAD_MPV_STRING "32"
|
||||
#define GST_RTP_PAYLOAD_MP2T_STRING "33"
|
||||
#define GST_RTP_PAYLOAD_H263_STRING "34"
|
||||
|
||||
#define GST_RTP_PAYLOAD_DYNAMIC_STRING "[96, 127]"
|
||||
|
||||
/**
|
||||
* GST_RTP_PAYLOAD_IS_DYNAMIC:
|
||||
* @pt: a payload type
|
||||
*
|
||||
* Check if @pt is a dynamic payload type.
|
||||
*/
|
||||
#define GST_RTP_PAYLOAD_IS_DYNAMIC(pt) ((pt) >= 96 && (pt) <= 127)
|
||||
|
||||
typedef struct _GstRTPPayloadInfo GstRTPPayloadInfo;
|
||||
|
||||
/**
|
||||
* GstRTPPayloadInfo:
|
||||
* @payload_type: payload type, -1 means dynamic
|
||||
* @media: the media type(s), usually "audio", "video", "application", "text",
|
||||
* "message".
|
||||
* @encoding_name: the encoding name of @pt
|
||||
* @clock_rate: default clock rate, 0 = unknown/variable
|
||||
* @encoding_parameters: encoding parameters. For audio this is the number of
|
||||
* channels. NULL = not applicable.
|
||||
* @bitrate: the bitrate of the media. 0 = unknown/variable.
|
||||
*
|
||||
* Structure holding default payload type information.
|
||||
*/
|
||||
struct _GstRTPPayloadInfo
|
||||
{
|
||||
guint8 payload_type;
|
||||
const gchar *media;
|
||||
const gchar *encoding_name;
|
||||
guint clock_rate;
|
||||
const gchar *encoding_parameters;
|
||||
guint bitrate;
|
||||
};
|
||||
|
||||
const GstRTPPayloadInfo * gst_rtp_payload_info_for_pt (guint8 payload_type);
|
||||
const GstRTPPayloadInfo * gst_rtp_payload_info_for_name (const gchar *media, const gchar *encoding_name);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_RTPPAYLOADS_H__ */
|
||||
|
|
@ -1759,6 +1759,7 @@ gst_sdp_parse_line (SDPContext * c, gchar type, gchar * buffer)
|
|||
memset (&nmedia, 0, sizeof (nmedia));
|
||||
gst_sdp_media_init (&nmedia);
|
||||
|
||||
/* m=<media> <port>/<number of ports> <proto> <fmt> ... */
|
||||
READ_STRING (nmedia.media);
|
||||
read_string (str, sizeof (str), &p);
|
||||
slash = g_strrstr (str, "/");
|
||||
|
|
|
@ -257,55 +257,66 @@ GstSDPResult gst_sdp_message_parse_buffer (const guint8 *data,
|
|||
|
||||
gchar* gst_sdp_message_as_text (const GstSDPMessage *msg);
|
||||
|
||||
/* v=.. */
|
||||
const gchar* gst_sdp_message_get_version (const GstSDPMessage *msg);
|
||||
GstSDPResult gst_sdp_message_set_version (GstSDPMessage *msg, const gchar *version);
|
||||
|
||||
/* o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address> */
|
||||
const GstSDPOrigin* gst_sdp_message_get_origin (const GstSDPMessage *msg);
|
||||
GstSDPResult gst_sdp_message_set_origin (GstSDPMessage *msg, const gchar *username,
|
||||
const gchar *sess_id, const gchar *sess_version,
|
||||
const gchar *nettype, const gchar *addrtype,
|
||||
const gchar *addr);
|
||||
|
||||
/* s=<session name> */
|
||||
const gchar* gst_sdp_message_get_session_name (const GstSDPMessage *msg);
|
||||
GstSDPResult gst_sdp_message_set_session_name (GstSDPMessage *msg, const gchar *session_name);
|
||||
|
||||
/* i=<session description> */
|
||||
const gchar* gst_sdp_message_get_information (const GstSDPMessage *msg);
|
||||
GstSDPResult gst_sdp_message_set_information (GstSDPMessage *msg, const gchar *information);
|
||||
|
||||
/* u=<uri> */
|
||||
const gchar* gst_sdp_message_get_uri (const GstSDPMessage *msg);
|
||||
GstSDPResult gst_sdp_message_set_uri (GstSDPMessage *msg, const gchar *uri);
|
||||
|
||||
/* e=<email-address> */
|
||||
guint gst_sdp_message_emails_len (const GstSDPMessage *msg);
|
||||
const gchar* gst_sdp_message_get_email (const GstSDPMessage *msg, guint idx);
|
||||
GstSDPResult gst_sdp_message_add_email (GstSDPMessage *msg, const gchar *email);
|
||||
|
||||
/* p=<phone-number> */
|
||||
guint gst_sdp_message_phones_len (const GstSDPMessage *msg);
|
||||
const gchar* gst_sdp_message_get_phone (const GstSDPMessage *msg, guint idx);
|
||||
GstSDPResult gst_sdp_message_add_phone (GstSDPMessage *msg, const gchar *phone);
|
||||
|
||||
/* c=<nettype> <addrtype> <connection-address>[/<ttl>][/<number of addresses>] */
|
||||
const GstSDPConnection* gst_sdp_message_get_connection (const GstSDPMessage *msg);
|
||||
GstSDPResult gst_sdp_message_set_connection (GstSDPMessage *msg, const gchar *nettype,
|
||||
const gchar *addrtype, const gchar *address,
|
||||
guint ttl, guint addr_number);
|
||||
|
||||
/* b=<bwtype>:<bandwidth> */
|
||||
guint gst_sdp_message_bandwidths_len (const GstSDPMessage *msg);
|
||||
const GstSDPBandwidth* gst_sdp_message_get_bandwidth (const GstSDPMessage *msg, guint idx);
|
||||
GstSDPResult gst_sdp_message_add_bandwidth (GstSDPMessage *msg, const gchar *bwtype,
|
||||
guint bandwidth);
|
||||
|
||||
/* t=<start-time> <stop-time> and
|
||||
* r=<repeat interval> <active duration> <offsets from start-time> */
|
||||
guint gst_sdp_message_times_len (const GstSDPMessage *msg);
|
||||
const GstSDPTime* gst_sdp_message_get_time (const GstSDPMessage *msg, guint idx);
|
||||
GstSDPResult gst_sdp_message_add_time (GstSDPMessage *msg, const gchar *start, const gchar *stop, const gchar **repeat);
|
||||
|
||||
/* z=<adjustment time> <offset> <adjustment time> <offset> .... */
|
||||
guint gst_sdp_message_zones_len (const GstSDPMessage *msg);
|
||||
const GstSDPZone* gst_sdp_message_get_zone (const GstSDPMessage *msg, guint idx);
|
||||
GstSDPResult gst_sdp_message_add_zone (GstSDPMessage *msg, const gchar *adj_time,
|
||||
const gchar *typed_time);
|
||||
|
||||
/* k=<method>[:<encryption key>] */
|
||||
const GstSDPKey* gst_sdp_message_get_key (const GstSDPMessage *msg);
|
||||
GstSDPResult gst_sdp_message_set_key (GstSDPMessage *msg, const gchar *type,
|
||||
const gchar *data);
|
||||
|
||||
/* a=... */
|
||||
guint gst_sdp_message_attributes_len (const GstSDPMessage *msg);
|
||||
const GstSDPAttribute* gst_sdp_message_get_attribute (const GstSDPMessage *msg, guint idx);
|
||||
const gchar* gst_sdp_message_get_attribute_val (const GstSDPMessage *msg, const gchar *key);
|
||||
|
@ -314,6 +325,7 @@ const gchar* gst_sdp_message_get_attribute_val_n (const GstSDPMessage
|
|||
GstSDPResult gst_sdp_message_add_attribute (GstSDPMessage *msg, const gchar *key,
|
||||
const gchar *value);
|
||||
|
||||
/* m=.. sections */
|
||||
guint gst_sdp_message_medias_len (const GstSDPMessage *msg);
|
||||
const GstSDPMedia* gst_sdp_message_get_media (const GstSDPMessage *msg, guint idx);
|
||||
GstSDPResult gst_sdp_message_add_media (GstSDPMessage *msg, GstSDPMedia *media);
|
||||
|
@ -328,6 +340,7 @@ GstSDPResult gst_sdp_media_free (GstSDPMedia *media)
|
|||
|
||||
gchar* gst_sdp_media_as_text (const GstSDPMedia *media);
|
||||
|
||||
/* m=<media> <port>/<number of ports> <proto> <fmt> ... */
|
||||
const gchar* gst_sdp_media_get_media (const GstSDPMedia *media);
|
||||
GstSDPResult gst_sdp_media_set_media (GstSDPMedia *media, const gchar *med);
|
||||
|
||||
|
@ -343,28 +356,33 @@ guint gst_sdp_media_formats_len (const GstSDPMedia *
|
|||
const gchar* gst_sdp_media_get_format (const GstSDPMedia *media, guint idx);
|
||||
GstSDPResult gst_sdp_media_add_format (GstSDPMedia *media, const gchar *format);
|
||||
|
||||
/* i=<session description> */
|
||||
const gchar* gst_sdp_media_get_information (const GstSDPMedia *media);
|
||||
GstSDPResult gst_sdp_media_set_information (GstSDPMedia *media, const gchar *information);
|
||||
|
||||
/* c=<nettype> <addrtype> <connection-address>[/<ttl>][/<number of addresses>] */
|
||||
guint gst_sdp_media_connections_len (const GstSDPMedia *media);
|
||||
const GstSDPConnection* gst_sdp_media_get_connection (const GstSDPMedia *media, guint idx);
|
||||
GstSDPResult gst_sdp_media_add_connection (GstSDPMedia *media, const gchar *nettype,
|
||||
const gchar *addrtype, const gchar *address,
|
||||
guint ttl, guint addr_number);
|
||||
|
||||
/* b=<bwtype>:<bandwidth> */
|
||||
guint gst_sdp_media_bandwidths_len (const GstSDPMedia *media);
|
||||
const GstSDPBandwidth* gst_sdp_media_get_bandwidth (const GstSDPMedia *media, guint idx);
|
||||
GstSDPResult gst_sdp_media_add_bandwidth (GstSDPMedia *media, const gchar *bwtype,
|
||||
guint bandwidth);
|
||||
|
||||
/* k=<method>:<encryption key> */
|
||||
const GstSDPKey* gst_sdp_media_get_key (const GstSDPMedia *media);
|
||||
GstSDPResult gst_sdp_media_set_key (GstSDPMedia *media, const gchar *type,
|
||||
const gchar *data);
|
||||
|
||||
/* a=... */
|
||||
guint gst_sdp_media_attributes_len (const GstSDPMedia *media);
|
||||
const GstSDPAttribute * gst_sdp_media_get_attribute (const GstSDPMedia *media, guint idx);
|
||||
const gchar* gst_sdp_media_get_attribute_val (const GstSDPMedia *media, const gchar *key);
|
||||
const gchar* gst_sdp_media_get_attribute_val_n (const GstSDPMedia *media, const gchar *key, guint nth);
|
||||
const gchar* gst_sdp_media_get_attribute_val_n (const GstSDPMedia *media, const gchar *key,
|
||||
guint nth);
|
||||
GstSDPResult gst_sdp_media_add_attribute (GstSDPMedia *media, const gchar *key,
|
||||
const gchar *value);
|
||||
|
||||
|
|
Loading…
Reference in a new issue