summaryrefslogtreecommitdiff
path: root/src/sdp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp.h')
-rw-r--r--src/sdp.h177
1 files changed, 91 insertions, 86 deletions
diff --git a/src/sdp.h b/src/sdp.h
index b65b5e5..53bc722 100644
--- a/src/sdp.h
+++ b/src/sdp.h
@@ -1,24 +1,27 @@
/**
- * liburtc
- * Copyright 2020 Chris Hiszpanski
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
+ * Copyright (c) 2019-2021 Chris Hiszpanski. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
*/
#ifndef _URTC_SDP_H
@@ -33,91 +36,91 @@ extern "C" {
// Maximum size of SDP string (in bytes)
-#define SDP_MAX_SIZE 2048
+#define SDP_MAX_SIZE 2048
-#define SDP_MAX_USERNAME_SIZE 32
-#define SDP_MAX_SESSION_ID_SIZE 32
-#define SDP_MAX_SESSION_VERSION_SIZE 32
-#define SDP_MAX_SESSION_NAME_SIZE 32
+#define SDP_MAX_USERNAME_SIZE 32
+#define SDP_MAX_SESSION_ID_SIZE 32
+#define SDP_MAX_SESSION_VERSION_SIZE 32
+#define SDP_MAX_SESSION_NAME_SIZE 32
-#define SDP_MAX_BUNDLE_IDS 5
-#define SDP_MAX_BUNDLE_ID_SIZE 32
-#define SDP_MAX_RTP_PAYLOAD_TYPES 32
+#define SDP_MAX_BUNDLE_IDS 5
+#define SDP_MAX_BUNDLE_ID_SIZE 32
+#define SDP_MAX_RTP_PAYLOAD_TYPES 32
typedef enum sdp_mode {
- SDP_MODE_SEND_AND_RECEIVE = 0,
- SDP_MODE_RECEIVE_ONLY,
- SDP_MODE_SEND_ONLY
+ SDP_MODE_SEND_AND_RECEIVE = 0,
+ SDP_MODE_RECEIVE_ONLY,
+ SDP_MODE_SEND_ONLY
} sdp_mode_t;
typedef enum sdp_media {
- SDP_MEDIA_TYPE_NULL = 0,
- SDP_MEDIA_TYPE_AUDIO,
- SDP_MEDIA_TYPE_VIDEO,
- SDP_MEDIA_TYPE_TEXT,
- SDP_MEDIA_TYPE_APPLICATION,
- SDP_MEDIA_TYPE_MESSAGE
+ SDP_MEDIA_TYPE_NULL = 0,
+ SDP_MEDIA_TYPE_AUDIO,
+ SDP_MEDIA_TYPE_VIDEO,
+ SDP_MEDIA_TYPE_TEXT,
+ SDP_MEDIA_TYPE_APPLICATION,
+ SDP_MEDIA_TYPE_MESSAGE
} sdp_media_type_t;
// Codecs recognized by SDP parser
typedef enum sdp_codec {
- SDP_CODEC_NULL = 0,
- SDP_CODEC_H264,
- SDP_CODEC_VP9
+ SDP_CODEC_NULL = 0,
+ SDP_CODEC_H264,
+ SDP_CODEC_VP9
} sdp_codec_t;
// Dynamic payload type
typedef struct sdp_rtpmap {
- unsigned int type; // Dynamic RTP payload type (e.g. 96)
- enum sdp_codec codec; // H264, VP9, etc.
- unsigned int clock; // Typically 90kHz for video
- unsigned int flags;
+ unsigned int type; // Dynamic RTP payload type (e.g. 96)
+ enum sdp_codec codec; // H264, VP9, etc.
+ unsigned int clock; // Typically 90kHz for video
+ unsigned int flags;
} sdp_rtpmap_t;
typedef struct sdp {
- // protocol version
- uint8_t version;
-
- // originator and session identifier
- char username[SDP_MAX_USERNAME_SIZE+1];
- char session_id[SDP_MAX_SESSION_ID_SIZE+1];
- char session_version[SDP_MAX_SESSION_VERSION_SIZE+1];
-
- // session name
- char session_name[SDP_MAX_SESSION_NAME_SIZE+1];
-
- // time description (mandatory)
- uint64_t start_time;
- uint64_t stop_time;
-
- // session attributes
-
- // bundle media identification tags
- char mid[SDP_MAX_BUNDLE_IDS][SDP_MAX_BUNDLE_ID_SIZE+1];
-
- // ice
- char ufrag[4*256]; // ice-ufrag (256 unicode chars max.)
- char pwd[4*256]; // ice-pwd (256 unicode chars max.)
- struct {
- bool trickle;
- } ice_options;
-
- // video media
- struct {
- uint16_t port;
- struct sdp_rtpmap params[SDP_MAX_RTP_PAYLOAD_TYPES];
- int count;
- } video;
-
- sdp_mode_t mode; // send, receive, and send-and-receive
-
- bool rtcp_mux; // is rtcp multiplexed on same socket
- bool rtcp_rsize;
-
- union {
- uint8_t sha256[32]; // certificate fingerprint
- } fingerprint;
+ // protocol version
+ uint8_t version;
+
+ // originator and session identifier
+ char username[SDP_MAX_USERNAME_SIZE+1];
+ char session_id[SDP_MAX_SESSION_ID_SIZE+1];
+ char session_version[SDP_MAX_SESSION_VERSION_SIZE+1];
+
+ // session name
+ char session_name[SDP_MAX_SESSION_NAME_SIZE+1];
+
+ // time description (mandatory)
+ uint64_t start_time;
+ uint64_t stop_time;
+
+ // session attributes
+
+ // bundle media identification tags
+ char mid[SDP_MAX_BUNDLE_IDS][SDP_MAX_BUNDLE_ID_SIZE+1];
+
+ // ice
+ char ufrag[4*256]; // ice-ufrag (256 unicode chars max.)
+ char pwd[4*256]; // ice-pwd (256 unicode chars max.)
+ struct {
+ bool trickle;
+ } ice_options;
+
+ // video media
+ struct {
+ uint16_t port;
+ struct sdp_rtpmap params[SDP_MAX_RTP_PAYLOAD_TYPES];
+ int count;
+ } video;
+
+ sdp_mode_t mode; // send, receive, and send-and-receive
+
+ bool rtcp_mux; // is rtcp multiplexed on same socket
+ bool rtcp_rsize;
+
+ union {
+ uint8_t sha256[32]; // certificate fingerprint
+ } fingerprint;
} sdp_t;
@@ -148,3 +151,5 @@ int sdp_serialize(char *dst, size_t len, const struct sdp *src);
#endif
#endif /* _URTC_SDP_H */
+
+/* vim: set expandtab ts=8 sw=4 tw=0 : */