From 79f4f70de1a6014d53b245b8069c833ce943f943 Mon Sep 17 00:00:00 2001 From: Chris Hiszpanski Date: Fri, 23 Apr 2021 11:17:03 -0400 Subject: Update inline license blocks and expand tabs --- src/sdp.h | 177 ++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 91 insertions(+), 86 deletions(-) (limited to 'src/sdp.h') 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 : */ -- cgit v1.2.3