Browse Source

merged with master and changed things

Staz M 5 years ago
parent
commit
fcd4228b56
7 changed files with 1695 additions and 144 deletions
  1. 1 0
      CMakeLists.txt
  2. 1177 113
      Makefile
  3. 82 15
      include/rtc/description.hpp
  4. 228 4
      include/rtc/rtp.hpp
  5. 202 9
      src/description.cpp
  6. 4 2
      src/dtlssrtptransport.cpp
  7. 1 1
      src/peerconnection.cpp

+ 1 - 0
CMakeLists.txt

@@ -73,6 +73,7 @@ set(LIBDATACHANNEL_HEADERS
 	${CMAKE_CURRENT_SOURCE_DIR}/include/rtc/configuration.hpp
 	${CMAKE_CURRENT_SOURCE_DIR}/include/rtc/datachannel.hpp
 	${CMAKE_CURRENT_SOURCE_DIR}/include/rtc/description.hpp
+	${CMAKE_CURRENT_SOURCE_DIR}/include/rtc/rtp.hpp
 	${CMAKE_CURRENT_SOURCE_DIR}/include/rtc/include.hpp
 	${CMAKE_CURRENT_SOURCE_DIR}/include/rtc/init.hpp
 	${CMAKE_CURRENT_SOURCE_DIR}/include/rtc/log.hpp

+ 1177 - 113
Makefile

@@ -1,116 +1,1180 @@
-# libdatachannel
-
-NAME=libdatachannel
-CXX=$(CROSS)g++
-AR=$(CROSS)ar
-RM=rm -f
-CXXFLAGS=-std=c++17
-CPPFLAGS=-O2 -pthread -fPIC -Wall
-LDFLAGS=-pthread
-LIBS=
-LOCALLIBS=libusrsctp.a
-USRSCTP_DIR=deps/usrsctp
-JUICE_DIR=deps/libjuice
-PLOG_DIR=deps/plog
-
-INCLUDES=-Iinclude/rtc -I$(PLOG_DIR)/include -I$(USRSCTP_DIR)/usrsctplib
-LDLIBS=
-
-USE_GNUTLS ?= 0
-ifneq ($(USE_GNUTLS), 0)
-        CPPFLAGS+=-DUSE_GNUTLS=1
-        LIBS+=gnutls
-else
-        CPPFLAGS+=-DUSE_GNUTLS=0
-        LIBS+=openssl
-endif
-
-USE_NICE ?= 0
-ifneq ($(USE_NICE), 0)
-        CPPFLAGS+=-DUSE_NICE=1
-        LIBS+=glib-2.0 gobject-2.0 nice
-else
-        CPPFLAGS+=-DUSE_NICE=0
-        INCLUDES+=-I$(JUICE_DIR)/include
-        LOCALLIBS+=libjuice.a
-ifneq ($(USE_GNUTLS), 0)
-        LIBS+=nettle
-endif
-endif
-
-USE_SRTP ?= 0
-ifneq ($(USE_SRTP), 0)
-        CPPFLAGS+=-DRTC_ENABLE_MEDIA=1
-        LIBS+=srtp
-else
-        CPPFLAGS+=-DRTC_ENABLE_MEDIA=0
-endif
-
-
-NO_WEBSOCKET ?= 0
-ifeq ($(NO_WEBSOCKET), 0)
-        CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=1
-else
-        CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=0
-endif
-
-INCLUDES+=$(shell pkg-config --cflags $(LIBS))
-LDLIBS+=$(LOCALLIBS) $(shell pkg-config --libs $(LIBS))
-
-SRCS=$(shell printf "%s " src/*.cpp)
-OBJS=$(subst .cpp,.o,$(SRCS))
-
-TEST_SRCS=$(shell printf "%s " test/*.cpp)
-TEST_OBJS=$(subst .cpp,.o,$(TEST_SRCS))
-
-all: $(NAME).a $(NAME).so tests
-
-src/%.o: src/%.cpp
-	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -MMD -MP -o $@ -c $<
-
-test/%.o: test/%.cpp
-	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -Iinclude -Isrc -MMD -MP -o $@ -c $<
-
--include $(subst .cpp,.d,$(SRCS))
-
-$(NAME).a: $(OBJS)
-	$(AR) crf $@ $(OBJS)
-
-$(NAME).so: $(LOCALLIBS) $(OBJS)
-	$(CXX) $(LDFLAGS) -shared -o $@ $(OBJS) $(LDLIBS)
-
-tests: $(NAME).a $(TEST_OBJS)
-	$(CXX) $(LDFLAGS) -o $@ $(TEST_OBJS) $(NAME).a $(LDLIBS)
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.17
 
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake
+
+# The command to remove a file.
+RM = /home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/staz/Programming/webrtc-project
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/staz/Programming/webrtc-project
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target install/strip
+install/strip: preinstall
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip
+
+# Special rule for the target install/strip
+install/strip/fast: preinstall/fast
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip/fast
+
+# Special rule for the target install/local
+install/local: preinstall
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local
+
+# Special rule for the target install/local
+install/local/fast: preinstall/fast
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target edit_cache
+edit_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+
+.PHONY : edit_cache/fast
+
+# Special rule for the target install
+install: preinstall
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -P cmake_install.cmake
+.PHONY : install
+
+# Special rule for the target install
+install/fast: preinstall/fast
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+	/home/staz/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/bin/cmake -P cmake_install.cmake
+.PHONY : install/fast
+
+# Special rule for the target list_install_components
+list_install_components:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
+.PHONY : list_install_components
+
+# Special rule for the target list_install_components
+list_install_components/fast: list_install_components
+
+.PHONY : list_install_components/fast
+
+# The main all target
+all: cmake_check_build_system
+	cd /home/staz/Programming/webrtc-project && $(CMAKE_COMMAND) -E cmake_progress_start /home/staz/Programming/webrtc-project/CMakeFiles /home/staz/Programming/webrtc-project/libs/libdatachannel/CMakeFiles/progress.marks
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/staz/Programming/webrtc-project/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
 clean:
-	-$(RM) include/rtc/*.d *.d
-	-$(RM) src/*.o src/*.d
-	-$(RM) test/*.o test/*.d
-
-dist-clean: clean
-	-$(RM) $(NAME).a
-	-$(RM) $(NAME).so
-	-$(RM) libusrsctp.a
-	-$(RM) libjuice.a
-	-$(RM) tests
-	-$(RM) include/*~
-	-$(RM) src/*~
-	-$(RM) test/*~
-	-cd $(USRSCTP_DIR) && make clean
-	-cd $(JUICE_DIR) && make clean
-
-libusrsctp.a:
-	cd $(USRSCTP_DIR) && \
-		./bootstrap && \
-		./configure --enable-static --disable-debug CFLAGS="$(CPPFLAGS) -Wno-error=format-truncation" && \
-		make
-	cp $(USRSCTP_DIR)/usrsctplib/.libs/libusrsctp.a .
-
-libjuice.a:
-ifneq ($(USE_GNUTLS), 0)
-	cd $(JUICE_DIR) && make USE_NETTLE=1
-else
-	cd $(JUICE_DIR) && make USE_NETTLE=0
-endif
-	cp $(JUICE_DIR)/libjuice.a .
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+	cd /home/staz/Programming/webrtc-project && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+# Convenience name for target.
+libs/libdatachannel/CMakeFiles/datachannel.dir/rule:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/CMakeFiles/datachannel.dir/rule
+.PHONY : libs/libdatachannel/CMakeFiles/datachannel.dir/rule
+
+# Convenience name for target.
+datachannel: libs/libdatachannel/CMakeFiles/datachannel.dir/rule
+
+.PHONY : datachannel
+
+# fast build rule for target.
+datachannel/fast:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/build
+.PHONY : datachannel/fast
+
+# Convenience name for target.
+libs/libdatachannel/CMakeFiles/datachannel-tests.dir/rule:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/CMakeFiles/datachannel-tests.dir/rule
+.PHONY : libs/libdatachannel/CMakeFiles/datachannel-tests.dir/rule
+
+# Convenience name for target.
+datachannel-tests: libs/libdatachannel/CMakeFiles/datachannel-tests.dir/rule
+
+.PHONY : datachannel-tests
+
+# fast build rule for target.
+datachannel-tests/fast:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build
+.PHONY : datachannel-tests/fast
+
+# Convenience name for target.
+libs/libdatachannel/CMakeFiles/datachannel-static.dir/rule:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/CMakeFiles/datachannel-static.dir/rule
+.PHONY : libs/libdatachannel/CMakeFiles/datachannel-static.dir/rule
+
+# Convenience name for target.
+datachannel-static: libs/libdatachannel/CMakeFiles/datachannel-static.dir/rule
+
+.PHONY : datachannel-static
+
+# fast build rule for target.
+datachannel-static/fast:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/build
+.PHONY : datachannel-static/fast
+
+# Convenience name for target.
+libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/rule:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/rule
+.PHONY : libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/rule
+
+# Convenience name for target.
+datachannel-benchmark: libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/rule
+
+.PHONY : datachannel-benchmark
+
+# fast build rule for target.
+datachannel-benchmark/fast:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/build
+.PHONY : datachannel-benchmark/fast
+
+src/base64.o: src/base64.cpp.o
+
+.PHONY : src/base64.o
+
+# target to build an object file
+src/base64.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/base64.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/base64.cpp.o
+.PHONY : src/base64.cpp.o
+
+src/base64.i: src/base64.cpp.i
+
+.PHONY : src/base64.i
+
+# target to preprocess a source file
+src/base64.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/base64.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/base64.cpp.i
+.PHONY : src/base64.cpp.i
+
+src/base64.s: src/base64.cpp.s
+
+.PHONY : src/base64.s
+
+# target to generate assembly for a file
+src/base64.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/base64.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/base64.cpp.s
+.PHONY : src/base64.cpp.s
+
+src/candidate.o: src/candidate.cpp.o
+
+.PHONY : src/candidate.o
+
+# target to build an object file
+src/candidate.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/candidate.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/candidate.cpp.o
+.PHONY : src/candidate.cpp.o
+
+src/candidate.i: src/candidate.cpp.i
+
+.PHONY : src/candidate.i
+
+# target to preprocess a source file
+src/candidate.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/candidate.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/candidate.cpp.i
+.PHONY : src/candidate.cpp.i
+
+src/candidate.s: src/candidate.cpp.s
+
+.PHONY : src/candidate.s
+
+# target to generate assembly for a file
+src/candidate.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/candidate.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/candidate.cpp.s
+.PHONY : src/candidate.cpp.s
+
+src/certificate.o: src/certificate.cpp.o
+
+.PHONY : src/certificate.o
+
+# target to build an object file
+src/certificate.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/certificate.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/certificate.cpp.o
+.PHONY : src/certificate.cpp.o
+
+src/certificate.i: src/certificate.cpp.i
+
+.PHONY : src/certificate.i
+
+# target to preprocess a source file
+src/certificate.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/certificate.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/certificate.cpp.i
+.PHONY : src/certificate.cpp.i
+
+src/certificate.s: src/certificate.cpp.s
+
+.PHONY : src/certificate.s
+
+# target to generate assembly for a file
+src/certificate.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/certificate.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/certificate.cpp.s
+.PHONY : src/certificate.cpp.s
+
+src/channel.o: src/channel.cpp.o
+
+.PHONY : src/channel.o
+
+# target to build an object file
+src/channel.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/channel.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/channel.cpp.o
+.PHONY : src/channel.cpp.o
+
+src/channel.i: src/channel.cpp.i
+
+.PHONY : src/channel.i
+
+# target to preprocess a source file
+src/channel.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/channel.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/channel.cpp.i
+.PHONY : src/channel.cpp.i
+
+src/channel.s: src/channel.cpp.s
+
+.PHONY : src/channel.s
+
+# target to generate assembly for a file
+src/channel.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/channel.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/channel.cpp.s
+.PHONY : src/channel.cpp.s
+
+src/configuration.o: src/configuration.cpp.o
+
+.PHONY : src/configuration.o
+
+# target to build an object file
+src/configuration.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/configuration.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/configuration.cpp.o
+.PHONY : src/configuration.cpp.o
+
+src/configuration.i: src/configuration.cpp.i
+
+.PHONY : src/configuration.i
+
+# target to preprocess a source file
+src/configuration.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/configuration.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/configuration.cpp.i
+.PHONY : src/configuration.cpp.i
+
+src/configuration.s: src/configuration.cpp.s
+
+.PHONY : src/configuration.s
+
+# target to generate assembly for a file
+src/configuration.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/configuration.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/configuration.cpp.s
+.PHONY : src/configuration.cpp.s
+
+src/datachannel.o: src/datachannel.cpp.o
+
+.PHONY : src/datachannel.o
+
+# target to build an object file
+src/datachannel.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/datachannel.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/datachannel.cpp.o
+.PHONY : src/datachannel.cpp.o
+
+src/datachannel.i: src/datachannel.cpp.i
+
+.PHONY : src/datachannel.i
+
+# target to preprocess a source file
+src/datachannel.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/datachannel.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/datachannel.cpp.i
+.PHONY : src/datachannel.cpp.i
+
+src/datachannel.s: src/datachannel.cpp.s
+
+.PHONY : src/datachannel.s
+
+# target to generate assembly for a file
+src/datachannel.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/datachannel.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/datachannel.cpp.s
+.PHONY : src/datachannel.cpp.s
+
+src/description.o: src/description.cpp.o
+
+.PHONY : src/description.o
+
+# target to build an object file
+src/description.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/description.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/description.cpp.o
+.PHONY : src/description.cpp.o
+
+src/description.i: src/description.cpp.i
+
+.PHONY : src/description.i
+
+# target to preprocess a source file
+src/description.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/description.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/description.cpp.i
+.PHONY : src/description.cpp.i
+
+src/description.s: src/description.cpp.s
+
+.PHONY : src/description.s
+
+# target to generate assembly for a file
+src/description.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/description.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/description.cpp.s
+.PHONY : src/description.cpp.s
+
+src/dtlssrtptransport.o: src/dtlssrtptransport.cpp.o
+
+.PHONY : src/dtlssrtptransport.o
+
+# target to build an object file
+src/dtlssrtptransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/dtlssrtptransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/dtlssrtptransport.cpp.o
+.PHONY : src/dtlssrtptransport.cpp.o
+
+src/dtlssrtptransport.i: src/dtlssrtptransport.cpp.i
+
+.PHONY : src/dtlssrtptransport.i
+
+# target to preprocess a source file
+src/dtlssrtptransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/dtlssrtptransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/dtlssrtptransport.cpp.i
+.PHONY : src/dtlssrtptransport.cpp.i
+
+src/dtlssrtptransport.s: src/dtlssrtptransport.cpp.s
+
+.PHONY : src/dtlssrtptransport.s
+
+# target to generate assembly for a file
+src/dtlssrtptransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/dtlssrtptransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/dtlssrtptransport.cpp.s
+.PHONY : src/dtlssrtptransport.cpp.s
+
+src/dtlstransport.o: src/dtlstransport.cpp.o
+
+.PHONY : src/dtlstransport.o
+
+# target to build an object file
+src/dtlstransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/dtlstransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/dtlstransport.cpp.o
+.PHONY : src/dtlstransport.cpp.o
+
+src/dtlstransport.i: src/dtlstransport.cpp.i
+
+.PHONY : src/dtlstransport.i
+
+# target to preprocess a source file
+src/dtlstransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/dtlstransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/dtlstransport.cpp.i
+.PHONY : src/dtlstransport.cpp.i
+
+src/dtlstransport.s: src/dtlstransport.cpp.s
+
+.PHONY : src/dtlstransport.s
+
+# target to generate assembly for a file
+src/dtlstransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/dtlstransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/dtlstransport.cpp.s
+.PHONY : src/dtlstransport.cpp.s
+
+src/icetransport.o: src/icetransport.cpp.o
+
+.PHONY : src/icetransport.o
+
+# target to build an object file
+src/icetransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/icetransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/icetransport.cpp.o
+.PHONY : src/icetransport.cpp.o
+
+src/icetransport.i: src/icetransport.cpp.i
+
+.PHONY : src/icetransport.i
+
+# target to preprocess a source file
+src/icetransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/icetransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/icetransport.cpp.i
+.PHONY : src/icetransport.cpp.i
+
+src/icetransport.s: src/icetransport.cpp.s
+
+.PHONY : src/icetransport.s
+
+# target to generate assembly for a file
+src/icetransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/icetransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/icetransport.cpp.s
+.PHONY : src/icetransport.cpp.s
+
+src/init.o: src/init.cpp.o
+
+.PHONY : src/init.o
+
+# target to build an object file
+src/init.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/init.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/init.cpp.o
+.PHONY : src/init.cpp.o
+
+src/init.i: src/init.cpp.i
+
+.PHONY : src/init.i
+
+# target to preprocess a source file
+src/init.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/init.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/init.cpp.i
+.PHONY : src/init.cpp.i
+
+src/init.s: src/init.cpp.s
+
+.PHONY : src/init.s
+
+# target to generate assembly for a file
+src/init.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/init.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/init.cpp.s
+.PHONY : src/init.cpp.s
+
+src/log.o: src/log.cpp.o
+
+.PHONY : src/log.o
+
+# target to build an object file
+src/log.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/log.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/log.cpp.o
+.PHONY : src/log.cpp.o
+
+src/log.i: src/log.cpp.i
+
+.PHONY : src/log.i
+
+# target to preprocess a source file
+src/log.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/log.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/log.cpp.i
+.PHONY : src/log.cpp.i
+
+src/log.s: src/log.cpp.s
+
+.PHONY : src/log.s
+
+# target to generate assembly for a file
+src/log.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/log.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/log.cpp.s
+.PHONY : src/log.cpp.s
+
+src/peerconnection.o: src/peerconnection.cpp.o
+
+.PHONY : src/peerconnection.o
+
+# target to build an object file
+src/peerconnection.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/peerconnection.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/peerconnection.cpp.o
+.PHONY : src/peerconnection.cpp.o
+
+src/peerconnection.i: src/peerconnection.cpp.i
+
+.PHONY : src/peerconnection.i
+
+# target to preprocess a source file
+src/peerconnection.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/peerconnection.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/peerconnection.cpp.i
+.PHONY : src/peerconnection.cpp.i
+
+src/peerconnection.s: src/peerconnection.cpp.s
+
+.PHONY : src/peerconnection.s
+
+# target to generate assembly for a file
+src/peerconnection.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/peerconnection.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/peerconnection.cpp.s
+.PHONY : src/peerconnection.cpp.s
+
+src/processor.o: src/processor.cpp.o
+
+.PHONY : src/processor.o
+
+# target to build an object file
+src/processor.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/processor.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/processor.cpp.o
+.PHONY : src/processor.cpp.o
+
+src/processor.i: src/processor.cpp.i
+
+.PHONY : src/processor.i
+
+# target to preprocess a source file
+src/processor.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/processor.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/processor.cpp.i
+.PHONY : src/processor.cpp.i
+
+src/processor.s: src/processor.cpp.s
+
+.PHONY : src/processor.s
+
+# target to generate assembly for a file
+src/processor.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/processor.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/processor.cpp.s
+.PHONY : src/processor.cpp.s
+
+src/rtc.o: src/rtc.cpp.o
+
+.PHONY : src/rtc.o
+
+# target to build an object file
+src/rtc.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/rtc.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/rtc.cpp.o
+.PHONY : src/rtc.cpp.o
+
+src/rtc.i: src/rtc.cpp.i
+
+.PHONY : src/rtc.i
+
+# target to preprocess a source file
+src/rtc.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/rtc.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/rtc.cpp.i
+.PHONY : src/rtc.cpp.i
+
+src/rtc.s: src/rtc.cpp.s
+
+.PHONY : src/rtc.s
+
+# target to generate assembly for a file
+src/rtc.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/rtc.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/rtc.cpp.s
+.PHONY : src/rtc.cpp.s
+
+src/sctptransport.o: src/sctptransport.cpp.o
+
+.PHONY : src/sctptransport.o
+
+# target to build an object file
+src/sctptransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/sctptransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/sctptransport.cpp.o
+.PHONY : src/sctptransport.cpp.o
+
+src/sctptransport.i: src/sctptransport.cpp.i
+
+.PHONY : src/sctptransport.i
+
+# target to preprocess a source file
+src/sctptransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/sctptransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/sctptransport.cpp.i
+.PHONY : src/sctptransport.cpp.i
+
+src/sctptransport.s: src/sctptransport.cpp.s
+
+.PHONY : src/sctptransport.s
+
+# target to generate assembly for a file
+src/sctptransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/sctptransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/sctptransport.cpp.s
+.PHONY : src/sctptransport.cpp.s
+
+src/tcptransport.o: src/tcptransport.cpp.o
+
+.PHONY : src/tcptransport.o
+
+# target to build an object file
+src/tcptransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tcptransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tcptransport.cpp.o
+.PHONY : src/tcptransport.cpp.o
+
+src/tcptransport.i: src/tcptransport.cpp.i
+
+.PHONY : src/tcptransport.i
+
+# target to preprocess a source file
+src/tcptransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tcptransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tcptransport.cpp.i
+.PHONY : src/tcptransport.cpp.i
+
+src/tcptransport.s: src/tcptransport.cpp.s
+
+.PHONY : src/tcptransport.s
+
+# target to generate assembly for a file
+src/tcptransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tcptransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tcptransport.cpp.s
+.PHONY : src/tcptransport.cpp.s
+
+src/threadpool.o: src/threadpool.cpp.o
+
+.PHONY : src/threadpool.o
+
+# target to build an object file
+src/threadpool.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/threadpool.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/threadpool.cpp.o
+.PHONY : src/threadpool.cpp.o
+
+src/threadpool.i: src/threadpool.cpp.i
+
+.PHONY : src/threadpool.i
+
+# target to preprocess a source file
+src/threadpool.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/threadpool.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/threadpool.cpp.i
+.PHONY : src/threadpool.cpp.i
+
+src/threadpool.s: src/threadpool.cpp.s
+
+.PHONY : src/threadpool.s
+
+# target to generate assembly for a file
+src/threadpool.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/threadpool.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/threadpool.cpp.s
+.PHONY : src/threadpool.cpp.s
+
+src/tls.o: src/tls.cpp.o
+
+.PHONY : src/tls.o
+
+# target to build an object file
+src/tls.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tls.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tls.cpp.o
+.PHONY : src/tls.cpp.o
+
+src/tls.i: src/tls.cpp.i
+
+.PHONY : src/tls.i
+
+# target to preprocess a source file
+src/tls.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tls.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tls.cpp.i
+.PHONY : src/tls.cpp.i
+
+src/tls.s: src/tls.cpp.s
+
+.PHONY : src/tls.s
+
+# target to generate assembly for a file
+src/tls.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tls.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tls.cpp.s
+.PHONY : src/tls.cpp.s
+
+src/tlstransport.o: src/tlstransport.cpp.o
+
+.PHONY : src/tlstransport.o
+
+# target to build an object file
+src/tlstransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tlstransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tlstransport.cpp.o
+.PHONY : src/tlstransport.cpp.o
+
+src/tlstransport.i: src/tlstransport.cpp.i
+
+.PHONY : src/tlstransport.i
+
+# target to preprocess a source file
+src/tlstransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tlstransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tlstransport.cpp.i
+.PHONY : src/tlstransport.cpp.i
+
+src/tlstransport.s: src/tlstransport.cpp.s
+
+.PHONY : src/tlstransport.s
+
+# target to generate assembly for a file
+src/tlstransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/tlstransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/tlstransport.cpp.s
+.PHONY : src/tlstransport.cpp.s
+
+src/verifiedtlstransport.o: src/verifiedtlstransport.cpp.o
+
+.PHONY : src/verifiedtlstransport.o
+
+# target to build an object file
+src/verifiedtlstransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/verifiedtlstransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/verifiedtlstransport.cpp.o
+.PHONY : src/verifiedtlstransport.cpp.o
+
+src/verifiedtlstransport.i: src/verifiedtlstransport.cpp.i
+
+.PHONY : src/verifiedtlstransport.i
+
+# target to preprocess a source file
+src/verifiedtlstransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/verifiedtlstransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/verifiedtlstransport.cpp.i
+.PHONY : src/verifiedtlstransport.cpp.i
+
+src/verifiedtlstransport.s: src/verifiedtlstransport.cpp.s
+
+.PHONY : src/verifiedtlstransport.s
+
+# target to generate assembly for a file
+src/verifiedtlstransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/verifiedtlstransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/verifiedtlstransport.cpp.s
+.PHONY : src/verifiedtlstransport.cpp.s
+
+src/websocket.o: src/websocket.cpp.o
+
+.PHONY : src/websocket.o
+
+# target to build an object file
+src/websocket.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/websocket.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/websocket.cpp.o
+.PHONY : src/websocket.cpp.o
+
+src/websocket.i: src/websocket.cpp.i
+
+.PHONY : src/websocket.i
+
+# target to preprocess a source file
+src/websocket.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/websocket.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/websocket.cpp.i
+.PHONY : src/websocket.cpp.i
+
+src/websocket.s: src/websocket.cpp.s
+
+.PHONY : src/websocket.s
+
+# target to generate assembly for a file
+src/websocket.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/websocket.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/websocket.cpp.s
+.PHONY : src/websocket.cpp.s
+
+src/wstransport.o: src/wstransport.cpp.o
+
+.PHONY : src/wstransport.o
+
+# target to build an object file
+src/wstransport.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/wstransport.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/wstransport.cpp.o
+.PHONY : src/wstransport.cpp.o
+
+src/wstransport.i: src/wstransport.cpp.i
+
+.PHONY : src/wstransport.i
+
+# target to preprocess a source file
+src/wstransport.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/wstransport.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/wstransport.cpp.i
+.PHONY : src/wstransport.cpp.i
+
+src/wstransport.s: src/wstransport.cpp.s
+
+.PHONY : src/wstransport.s
+
+# target to generate assembly for a file
+src/wstransport.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel.dir/build.make libs/libdatachannel/CMakeFiles/datachannel.dir/src/wstransport.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-static.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-static.dir/src/wstransport.cpp.s
+.PHONY : src/wstransport.cpp.s
+
+test/benchmark.o: test/benchmark.cpp.o
+
+.PHONY : test/benchmark.o
+
+# target to build an object file
+test/benchmark.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/benchmark.cpp.o
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/test/benchmark.cpp.o
+.PHONY : test/benchmark.cpp.o
+
+test/benchmark.i: test/benchmark.cpp.i
+
+.PHONY : test/benchmark.i
+
+# target to preprocess a source file
+test/benchmark.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/benchmark.cpp.i
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/test/benchmark.cpp.i
+.PHONY : test/benchmark.cpp.i
+
+test/benchmark.s: test/benchmark.cpp.s
+
+.PHONY : test/benchmark.s
+
+# target to generate assembly for a file
+test/benchmark.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/benchmark.cpp.s
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-benchmark.dir/test/benchmark.cpp.s
+.PHONY : test/benchmark.cpp.s
+
+test/capi.o: test/capi.cpp.o
+
+.PHONY : test/capi.o
+
+# target to build an object file
+test/capi.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/capi.cpp.o
+.PHONY : test/capi.cpp.o
+
+test/capi.i: test/capi.cpp.i
+
+.PHONY : test/capi.i
+
+# target to preprocess a source file
+test/capi.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/capi.cpp.i
+.PHONY : test/capi.cpp.i
+
+test/capi.s: test/capi.cpp.s
+
+.PHONY : test/capi.s
+
+# target to generate assembly for a file
+test/capi.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/capi.cpp.s
+.PHONY : test/capi.cpp.s
+
+test/connectivity.o: test/connectivity.cpp.o
+
+.PHONY : test/connectivity.o
+
+# target to build an object file
+test/connectivity.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/connectivity.cpp.o
+.PHONY : test/connectivity.cpp.o
+
+test/connectivity.i: test/connectivity.cpp.i
+
+.PHONY : test/connectivity.i
+
+# target to preprocess a source file
+test/connectivity.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/connectivity.cpp.i
+.PHONY : test/connectivity.cpp.i
+
+test/connectivity.s: test/connectivity.cpp.s
+
+.PHONY : test/connectivity.s
+
+# target to generate assembly for a file
+test/connectivity.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/connectivity.cpp.s
+.PHONY : test/connectivity.cpp.s
+
+test/main.o: test/main.cpp.o
+
+.PHONY : test/main.o
+
+# target to build an object file
+test/main.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/main.cpp.o
+.PHONY : test/main.cpp.o
+
+test/main.i: test/main.cpp.i
+
+.PHONY : test/main.i
+
+# target to preprocess a source file
+test/main.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/main.cpp.i
+.PHONY : test/main.cpp.i
+
+test/main.s: test/main.cpp.s
+
+.PHONY : test/main.s
+
+# target to generate assembly for a file
+test/main.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/main.cpp.s
+.PHONY : test/main.cpp.s
+
+test/websocket.o: test/websocket.cpp.o
+
+.PHONY : test/websocket.o
+
+# target to build an object file
+test/websocket.cpp.o:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/websocket.cpp.o
+.PHONY : test/websocket.cpp.o
+
+test/websocket.i: test/websocket.cpp.i
+
+.PHONY : test/websocket.i
+
+# target to preprocess a source file
+test/websocket.cpp.i:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/websocket.cpp.i
+.PHONY : test/websocket.cpp.i
+
+test/websocket.s: test/websocket.cpp.s
+
+.PHONY : test/websocket.s
+
+# target to generate assembly for a file
+test/websocket.cpp.s:
+	cd /home/staz/Programming/webrtc-project && $(MAKE) $(MAKESILENT) -f libs/libdatachannel/CMakeFiles/datachannel-tests.dir/build.make libs/libdatachannel/CMakeFiles/datachannel-tests.dir/test/websocket.cpp.s
+.PHONY : test/websocket.cpp.s
+
+# Help Target
+help:
+	@echo "The following are some of the valid targets for this Makefile:"
+	@echo "... all (the default if no target is provided)"
+	@echo "... clean"
+	@echo "... depend"
+	@echo "... edit_cache"
+	@echo "... install"
+	@echo "... install/local"
+	@echo "... install/strip"
+	@echo "... list_install_components"
+	@echo "... rebuild_cache"
+	@echo "... datachannel"
+	@echo "... datachannel-benchmark"
+	@echo "... datachannel-static"
+	@echo "... datachannel-tests"
+	@echo "... src/base64.o"
+	@echo "... src/base64.i"
+	@echo "... src/base64.s"
+	@echo "... src/candidate.o"
+	@echo "... src/candidate.i"
+	@echo "... src/candidate.s"
+	@echo "... src/certificate.o"
+	@echo "... src/certificate.i"
+	@echo "... src/certificate.s"
+	@echo "... src/channel.o"
+	@echo "... src/channel.i"
+	@echo "... src/channel.s"
+	@echo "... src/configuration.o"
+	@echo "... src/configuration.i"
+	@echo "... src/configuration.s"
+	@echo "... src/datachannel.o"
+	@echo "... src/datachannel.i"
+	@echo "... src/datachannel.s"
+	@echo "... src/description.o"
+	@echo "... src/description.i"
+	@echo "... src/description.s"
+	@echo "... src/dtlssrtptransport.o"
+	@echo "... src/dtlssrtptransport.i"
+	@echo "... src/dtlssrtptransport.s"
+	@echo "... src/dtlstransport.o"
+	@echo "... src/dtlstransport.i"
+	@echo "... src/dtlstransport.s"
+	@echo "... src/icetransport.o"
+	@echo "... src/icetransport.i"
+	@echo "... src/icetransport.s"
+	@echo "... src/init.o"
+	@echo "... src/init.i"
+	@echo "... src/init.s"
+	@echo "... src/log.o"
+	@echo "... src/log.i"
+	@echo "... src/log.s"
+	@echo "... src/peerconnection.o"
+	@echo "... src/peerconnection.i"
+	@echo "... src/peerconnection.s"
+	@echo "... src/processor.o"
+	@echo "... src/processor.i"
+	@echo "... src/processor.s"
+	@echo "... src/rtc.o"
+	@echo "... src/rtc.i"
+	@echo "... src/rtc.s"
+	@echo "... src/sctptransport.o"
+	@echo "... src/sctptransport.i"
+	@echo "... src/sctptransport.s"
+	@echo "... src/tcptransport.o"
+	@echo "... src/tcptransport.i"
+	@echo "... src/tcptransport.s"
+	@echo "... src/threadpool.o"
+	@echo "... src/threadpool.i"
+	@echo "... src/threadpool.s"
+	@echo "... src/tls.o"
+	@echo "... src/tls.i"
+	@echo "... src/tls.s"
+	@echo "... src/tlstransport.o"
+	@echo "... src/tlstransport.i"
+	@echo "... src/tlstransport.s"
+	@echo "... src/verifiedtlstransport.o"
+	@echo "... src/verifiedtlstransport.i"
+	@echo "... src/verifiedtlstransport.s"
+	@echo "... src/websocket.o"
+	@echo "... src/websocket.i"
+	@echo "... src/websocket.s"
+	@echo "... src/wstransport.o"
+	@echo "... src/wstransport.i"
+	@echo "... src/wstransport.s"
+	@echo "... test/benchmark.o"
+	@echo "... test/benchmark.i"
+	@echo "... test/benchmark.s"
+	@echo "... test/capi.o"
+	@echo "... test/capi.i"
+	@echo "... test/capi.s"
+	@echo "... test/connectivity.o"
+	@echo "... test/connectivity.i"
+	@echo "... test/connectivity.s"
+	@echo "... test/main.o"
+	@echo "... test/main.i"
+	@echo "... test/main.s"
+	@echo "... test/websocket.o"
+	@echo "... test/websocket.i"
+	@echo "... test/websocket.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	cd /home/staz/Programming/webrtc-project && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
 

+ 82 - 15
include/rtc/description.hpp

@@ -29,12 +29,18 @@
 
 namespace rtc {
 
+
 class Description {
 public:
 	enum class Type { Unspec = 0, Offer = 1, Answer = 2 };
 	enum class Role { ActPass = 0, Passive = 1, Active = 2 };
+    enum Direction {
+        SEND_ONLY,
+        RECV_ONLY,
+        BOTH
+    };
 
-	Description(const string &sdp, const string &typeString = "");
+    Description(const string &sdp, const string &typeString = "");
 	Description(const string &sdp, Type type);
 	Description(const string &sdp, Type type, Role role);
 
@@ -66,6 +72,81 @@ public:
 	string generateSdp(const string &eol) const;
 	string generateDataSdp(const string &eol) const;
 
+	// Data
+    struct Data {
+        string mid;
+        std::optional<uint16_t> sctpPort;
+        std::optional<size_t> maxMessageSize;
+    };
+
+    // Media (non-data)
+    struct Media {
+        Media(const string &lines);
+        string type;
+        string description;
+        string mid;
+        std::vector<string> attributes;
+        std::vector<string> attributesl;
+        int bAS = -1;
+
+        struct RTPMap {
+            RTPMap(const string &mLine);
+
+            int pt;
+            string format;
+            int clockRate;
+            string encParams;
+
+            std::vector<string> rtcpFbs;
+            std::vector<string> fmtps;
+
+            void removeFB(const char *string);
+
+        };
+
+        std::unordered_map<int, RTPMap> rtpMap;
+
+        Media::RTPMap& getFormat(int fmt);
+        Media::RTPMap& getFormat(const string& fmt);
+
+        Direction getDirection() {
+            for (auto attr : attributes) {
+                if (attr == "sendrecv")
+                    return Direction::BOTH;
+                if (attr == "recvonly")
+                    return Direction::RECV_ONLY;
+                if (attr == "sendonly")
+                    return Direction::SEND_ONLY;
+            }
+        }
+
+        void setDirection(Direction dir) {
+            auto it = attributes.begin();
+            while (it != attributes.end()) {
+                if (*it == "sendrecv" || *it == "sendonly" || *it == "recvonly")
+                    it = attributes.erase(it);
+                else
+                    it++;
+            }
+            if (dir == Direction::BOTH)
+                attributes.emplace(attributes.begin(), "sendrecv");
+            else if (dir == Direction::RECV_ONLY)
+                attributes.emplace(attributes.begin(), "recvonly");
+            if (dir == Direction::SEND_ONLY)
+                attributes.emplace(attributes.begin(), "sendonly");
+        }
+
+        void removeFormat(const string &fmt);
+
+        void addH264Codec(int pt);
+    };
+
+    std::_Rb_tree_iterator<std::pair<const int, Media>> getMedia(int mLine);
+
+    Media & addAudioMedia();
+
+    Media &addVideoMedia(bool direction);
+
 private:
 	Type mType;
 	Role mRole;
@@ -73,22 +154,8 @@ private:
 	string mIceUfrag, mIcePwd;
 	std::optional<string> mFingerprint;
 
-	// Data
-	struct Data {
-		string mid;
-		std::optional<uint16_t> sctpPort;
-		std::optional<size_t> maxMessageSize;
-	};
 	Data mData;
 
-	// Media (non-data)
-	struct Media {
-		Media(const string &mline);
-		string type;
-		string description;
-		string mid;
-		std::vector<string> attributes;
-	};
 	std::map<int, Media> mMedia; // by m-line index
 
 	// Candidates

+ 228 - 4
include/rtc/rtp.hpp

@@ -1,8 +1,232 @@
+#ifndef RTC_RTPL_H
+#define RTC_RTPL_H
+
+struct RTCP_ReportBlock {
+    uint32_t ssrc;
+
+    uint32_t fractionLostAndCumulitveNumberOfPacketsLost;
+    uint32_t highestSeqNoReceived;
+    uint32_t arrivalJitter;
+    uint32_t lastReport;
+    uint32_t delaySinceLastReport;
+
+    void print() {
+//        std::cout << " +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-\n";
+//        std::cout << "|" << ssrc << "|\n";
+//        std::cout << "|" << fractionLost << "|" << packetsLost << "|\n";
+//        std::cout << "|" << ntohl(highestSeqNoReceived) << "|\n";
+//        std::cout << "|" << ntohl(arrivalJitter) << "|\n";
+//        std::cout << "|" << ntohl(lastReport) << "|\n";
+//        std::cout << "|" << ntohl(delaySinceLastReport) << "|\n";
+//        std::cout << " +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-" << std::endl;
+        std::cout <<
+            " ssrc:" << ntohl(ssrc) <<
+//            " fractionLost: " << (uint16_t) fractionLost <<
+//            " packetsLost:" << ntohs(packetsLost) <<
+            "flcnpl: " << fractionLostAndCumulitveNumberOfPacketsLost <<
+            " highestSeqNo:" << ntohl(highestSeqNoReceived) <<
+            " jitter:" << ntohl(arrivalJitter) <<
+            " lastSR:" << ntohl(lastReport) <<
+            " lastSRDelay:" << ntohl(delaySinceLastReport) << std::endl;
+    }
+};
+
+struct RTCP_HEADER {
+
+};
+
+struct RTCP_SR {
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+    uint16_t version:2;
+	uint16_t padding:1;
+	uint16_t rc:5;
+	uint16_t payloadType:8;
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+    uint16_t reportCount:5;
+    uint16_t padding:1;
+    uint16_t version:2;
+    uint16_t payloadType:8;
+#endif
+
+    uint16_t length;
+    uint32_t ssrc;
+
+    uint64_t ntpTimestamp;
+    uint32_t rtpTimestamp;
+
+    uint32_t packetCount;
+    uint32_t octetCount;
+
+    RTCP_ReportBlock reportBlocks;
+
+    RTCP_ReportBlock* getReportBlock(int num) {
+        return &reportBlocks+num;
+    }
+
+    unsigned int getTotalSize() {
+        return offsetof(RTCP_SR, reportBlocks) + sizeof(RTCP_ReportBlock)*reportCount;
+    }
+
+    void print() {
+        std::cout <<
+              "version:" << (uint16_t) version <<
+              " padding:" << (padding ? "T" : "F") <<
+              " reportCount: " << (uint16_t) reportCount <<
+              " payloadType:" << (uint16_t) payloadType <<
+              " totalLength:" << ntohs(length) <<
+              " SSRC:" << ntohl(ssrc) <<
+              " NTP TS: " << ntpTimestamp << // TODO This needs to be convereted from network-endian
+              " RTP TS: " << ntohl(rtpTimestamp) <<
+              " packetCount: " << ntohl(packetCount) <<
+              " octetCount: " << ntohl(octetCount)
+        << std::endl;
+            for (int i =0;i < reportCount; i++)
+                getReportBlock(i)->print();
+
+//        // 4 bytes
+//        std::cout
+//        << "|" << version << " |" << (padding ? "P" : " ")
+//        << "|" << reportCount << "|" << payloadType << "|" << ntohs(length) << "|\n";
+//
+//        // 4 bytes
+//        std::cout << "|" << ntohl(ssrc) << "|\n";
 //
-// Created by staz on 8/12/20.
+//        std::cout << "|MATH IS HARD|\n";
+//        std::cout << "|MATH IS HARD|\n";
 //
+//        std::cout << "|" << packetCount << "|\n";
+//        std::cout << "|" << senderCount << "|\n";
+//
+//        for (int i =0;i < reportCount; i++)
+//            getReportBlock(i)->print();
+//
+//        std::cout << " +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-\n";
+//        std::cout << std::endl;
+    }
+};
+
+struct RTCP_RR {
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+    uint16_t version:2;
+	uint16_t padding:1;
+	uint16_t rc:5;
+	uint16_t payloadType:8;
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+    uint16_t reportCount:5;
+    uint16_t padding:1;
+    uint16_t version:2;
+    uint16_t payloadType:8;
+#endif
+
+    uint16_t length;
+    uint32_t ssrc;
+
+    RTCP_ReportBlock reportBlocks;
+
+    RTCP_ReportBlock* getReportBlock(int num) {
+        return &reportBlocks+num;
+    }
+
+    unsigned int getTotalSize() const {
+        return offsetof(RTCP_RR, reportBlocks) + sizeof(RTCP_ReportBlock)*reportCount;
+    }
+    void print() {
+        std::cout <<
+                  "version:" << (uint16_t) version <<
+                  " padding:" << (padding ? "T" : "F") <<
+                  " reportCount: " << (uint16_t) reportCount <<
+                  " payloadType:" << (uint16_t) payloadType <<
+                  " totalLength:" << ntohs(length) <<
+                  " SSRC:" << ntohl(ssrc)
+                  << std::endl;
+        for (int i =0;i < reportCount; i++)
+            getReportBlock(i)->print();
+    }
+
+    void setLength() {
+//        std::cout << "TOTAL SIZE" << getTotalSize() << std::endl;
+//        PLOG_DEBUG << "TOTAL SIZE " << getTotalSize()/4 << std::endl;
+//        this->length = htons((getTotalSize()/4)+1);
+        this->length = htons((sizeof(RTCP_ReportBlock)/4)+1);
+    }
+};
+
+struct RTP
+{
+#if __BYTE_ORDER == __BIG_ENDIAN
+    uint16_t version:2;
+	uint16_t padding:1;
+	uint16_t extension:1;
+	uint16_t csrcCount:4;
+	uint16_t markerBit:1;
+	uint16_t payloadType:7;
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+    uint16_t csrCcount:4;
+    uint16_t extension:1;
+    uint16_t padding:1;
+    uint16_t version:2;
+    uint16_t payloadType:7;
+    uint16_t markerBit:1;
+#endif
+    uint16_t seqNumber;
+    uint32_t timestamp;
+    uint32_t ssrc;
+    uint32_t csrc[16];
+};
+
+struct RTPC_TWCC {
+#if __BYTE_ORDER == __BIG_ENDIAN
+    uint16_t version:2;
+	uint16_t padding:1;
+	uint16_t format:5;
+	uint16_t payloadType:8;
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+    uint16_t format:5;
+    uint16_t padding:1;
+    uint16_t version:2;
+    uint16_t payloadType:8;
+#endif
+
+    uint16_t length;
+    uint32_t senderSSRC;
+    uint32_t mediaSSRC;
+    uint16_t baseSeqNo;
+    uint16_t packetCount;
+    uint16_t refTime;
+    uint16_t twccSSRC;
+};
+
+ struct RTCP_REMB
+{
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+    uint16_t version:2;
+	uint16_t padding:1;
+	uint16_t format:5;
+	uint16_t payloadType:8;
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+    uint16_t format:5;
+    uint16_t padding:1;
+    uint16_t version:2;
+    uint16_t payloadType:8;
+#endif
+    uint16_t length;
+
+    uint32_t senderSSRC;
+    uint32_t mediaSourceSSRC;
+
+    /*! \brief Unique identifier ('R' 'E' 'M' 'B') */
+    char id[4] = {'R', 'E', 'M', 'B'};
+    /*! \brief Num SSRC, Br Exp, Br Mantissa (bit mask) */
+    uint32_t bitrate;
 
-#ifndef WEBRTC_SERVER_RTP_HPP
-#define WEBRTC_SERVER_RTP_HPP
+    /*! \brief SSRC feedback (we expect at max three SSRCs in there) */
+    uint32_t ssrc[3];
 
-#endif //WEBRTC_SERVER_RTP_HPP
+    int getTotalSize() {
+        return offsetof(RTCP_REMB, ssrc) + 4;
+    }
+};
+#endif //RTC_RTPL_H

+ 202 - 9
src/description.cpp

@@ -132,11 +132,38 @@ Description::Description(const string &sdp, Type type, Role role)
 			} else if (key == "candidate") {
 				addCandidate(Candidate(attr, currentMedia ? currentMedia->mid : mData.mid));
 			} else if (key == "end-of-candidates") {
-				mEnded = true;
+                mEnded = true;
 			} else if (currentMedia) {
-				currentMedia->attributes.emplace_back(line.substr(2));
+			    if (key == "rtpmap") {
+                    Description::Media::RTPMap map(value);
+                    currentMedia->rtpMap.insert(std::pair<int, Description::Media::RTPMap>(map.pt, map));
+                }else if (key == "rtcp-fb") {
+                    size_t p = value.find(' ');
+                    int pt = std::stoi(value.substr(0, p));
+                    auto it = currentMedia->rtpMap.find(pt);
+                    if (it == currentMedia->rtpMap.end()) {
+                        PLOG_WARNING << "rtcp-fb applied before it's rtpmap. Ignoring";
+                    } else
+                        it->second.rtcpFbs.emplace_back(value.substr(p + 1));
+                }else if (key == "fmtp") {
+                    size_t p = value.find(' ');
+                    int pt = std::stoi(value.substr(0, p));
+                    auto it = currentMedia->rtpMap.find(pt);
+                    if (it == currentMedia->rtpMap.end()) {
+                        PLOG_WARNING << "fmtp applied before it's rtpmap. Ignoring";
+                    } else
+                        it->second.fmtps.emplace_back(value.substr(p + 1));
+
+                } else if (key == "b") {
+
+                }else
+				    currentMedia->attributes.emplace_back(line.substr(2));
+			    std::cout << key << std::endl;
 			}
+		}else if (match_prefix(line, "b=AS")) {
+            currentMedia->bAS = std::stoi(line.substr(line.find(':')+1));
 		}
+
 	} while (!finished);
 }
 
@@ -252,13 +279,34 @@ string Description::generateSdp(const string &eol) const {
 		if (auto it = mMedia.find(i); it != mMedia.end()) {
 			// Non-data media
 			const auto &media = it->second;
-			sdp << "m=" << media.type << ' ' << 0 << ' ' << media.description << eol;
+			sdp << "m=" << media.type << ' ' << 0 << ' ' << media.description;
+
+            for (const auto& [key, _] : media.rtpMap)
+                sdp << " " << key;
+
+            sdp << eol;
 			sdp << "c=IN IP4 0.0.0.0" << eol;
+            if (media.bAS > -1)
+                sdp << "b=AS:" << media.bAS << eol;
 			sdp << "a=bundle-only" << eol;
 			sdp << "a=mid:" << media.mid << eol;
 			for (const auto &attr : media.attributes)
 				sdp << "a=" << attr << eol;
-
+			for (const auto& [_, map] : media.rtpMap) {
+			    // Create the a=rtpmap
+			    sdp << "a=rtpmap:" << map.pt << " " << map.format << "/" << map.clockRate;
+			    if (!map.encParams.empty())
+			        sdp << "/" << map.encParams;
+			    sdp << eol;
+
+
+                for (const auto &val : map.rtcpFbs)
+                    sdp << "a=rtcp-fb:" << map.pt << " " << val << eol;
+                for (const auto &val : map.fmtps)
+                    sdp << "a=fmtp:" << map.pt << " " << val << eol;
+			}
+            for (const auto &attr : media.attributesl)
+                sdp << "a=" << attr << eol;
 		} else {
 			// Data
 			const string description = "UDP/DTLS/SCTP webrtc-datachannel";
@@ -328,11 +376,107 @@ Description::Media::Media(const string &mline) {
 	size_t p = mline.find(' ');
 	this->type = mline.substr(0, p);
 	if (p != string::npos)
-		if (size_t q = mline.find(' ', p + 1); q != string::npos)
-			this->description = mline.substr(q + 1);
+		if (size_t q = mline.find(' ', p + 1); q != string::npos) {
+            this->description = mline.substr(q + 1, mline.find(' ', q+1)-q-2);
+        }
+}
+
+Description::Media::RTPMap& Description::Media::getFormat(int fmt) {
+    auto it = this->rtpMap.find(fmt);
+    if (it == this->rtpMap.end())
+        throw std::invalid_argument("mLineIndex is out of bounds");
+    return it->second;
+}
+
+Description::Media::RTPMap &Description::Media::getFormat(const string& fmt) {
+    for (auto &[key, val] : this->rtpMap) {
+        if (val.format == fmt)
+            return val;
+    }
+    throw std::invalid_argument("format was not found");
+}
+
+void Description::Media::removeFormat(const string &fmt) {
+    auto it = this->rtpMap.begin();
+    std::vector<int> remed;
+
+    // Remove the actual formats
+    while (it != this->rtpMap.end()) {
+        if (it->second.format == fmt) {
+            remed.emplace_back(it->first);
+            it = this->rtpMap.erase(it);
+        } else
+            it++;
+    }
+
+    // Remove any other rtpmaps that depend on the formats we just removed
+    it = this->rtpMap.begin();
+    while (it != this->rtpMap.end()) {
+        auto it2 = it->second.fmtps.begin();
+        bool rem = false;
+        while (it2 != it->second.fmtps.end()) {
+            if (it2->find("apt=") == 0) {
+                for (auto remid : remed) {
+                    if (it2->find(std::to_string(remid)) != string::npos) {
+                        std::cout << *it2 << " " << remid << std::endl;
+                        it = this->rtpMap.erase(it);
+                        rem = true;
+                        break;
+                    }
+                }
+                break;
+            }
+            it2++;
+        }
+        if (!rem)
+
+            it++;
+    }
+}
+
+void Description::Media::addH264Codec(int pt) {
+    RTPMap map(std::to_string(pt) + " H264/90000");
+    map.rtcpFbs.emplace_back("nack");
+    this->rtpMap.insert(std::pair<int, RTPMap>(map.pt, map));
+
+    RTPMap rtxMap(std::to_string(pt+1) + " rtx/90000");
+    rtxMap.fmtps.emplace_back("apt=" + std::to_string(pt));
+    this->rtpMap.insert(std::pair<int, RTPMap>(rtxMap.pt, rtxMap));
+};
+
+Description::Media::RTPMap::RTPMap(const string &mline) {
+    size_t p = mline.find(' ');
+
+    this->pt = std::stoi(mline.substr(0, p));
+
+    auto line = mline.substr(p+1);
+    size_t spl = line.find('/');
+    this->format = line.substr(0, spl);
+
+    line = line.substr(spl+1);
+    spl = line.find('/');
+    if (spl == string::npos) {
+        spl = line.find(' ');
+    }
+    if (spl == string::npos)
+        this->clockRate = std::stoi(line);
+    else {
+        this->clockRate = std::stoi(line.substr(0, spl));
+        this->encParams = line.substr(spl);
+    }
 }
 
-Description::Type Description::stringToType(const string &typeString) {
+    void Description::Media::RTPMap::removeFB(const char *string) {
+        auto it = rtcpFbs.begin();
+        while (it != rtcpFbs.end()) {
+            if (it->find(string) != std::string::npos) {
+                it = rtcpFbs.erase(it);
+            } else
+                it++;
+        }
+    }
+
+    Description::Type Description::stringToType(const string &typeString) {
 	if (typeString == "offer")
 		return Type::Offer;
 	else if (typeString == "answer")
@@ -363,9 +507,58 @@ string Description::roleToString(Role role) {
 	}
 }
 
-} // namespace rtc
+std::_Rb_tree_iterator<std::pair<const int, Description::Media>> Description::getMedia(int mLine) {
+    return this->mMedia.find(mLine);
+}
+
+rtc::Description::Media& Description::addAudioMedia() {
+    rtc::Description::Media media("audio 9 UDP/TLS/RTP/SAVPF");
+    media.mid = "audio";
+
+    media.attributes.emplace_back("rtcp-mux");
+
+    this->mMedia.insert(std::pair<int, Media>(this->mMedia.size(), media));
+    return this->mMedia.at(mMedia.size()-1);
+}
+
+Description::Media &Description::addVideoMedia(bool direction) {
+    rtc::Description::Media media("video 9 UDP/TLS/RTP/SAVPF");
+    media.mid = "video";
+
+    /*
+     *
+a=msid:janus janusv0
+a=ssrc:3730453306 cname:janus
+a=ssrc:3730453306 msid:janus janusv0
+a=ssrc:3730453306 mslabel:janus
+a=ssrc:3730453306 label:janusv0
+a=ssrc:2731410783 cname:janus
+a=ssrc:2731410783 msid:janus janusv0
+a=ssrc:2731410783 mslabel:janus
+a=ssrc:2731410783 label:janusv0
+     */
+
+    media.attributes.emplace_back("rtcp-mux");
+
+//    media.attributesl.emplace_back("ssrc-group:FID 1 2");
+//    media.attributesl.emplace_back("msid:janus janusv0");
+//
+//    media.attributesl.emplace_back("ssrc:1 cname:janus");
+//    media.attributesl.emplace_back("ssrc:1 msid:janus janusv0");
+//    media.attributesl.emplace_back("ssrc:1 mslabel:janus");
+//    media.attributesl.emplace_back("ssrc:1 label:janusv0");
+//
+//    media.attributesl.emplace_back("ssrc:2 cname:janus");
+//    media.attributesl.emplace_back("ssrc:2 msid:janus janusv0");
+//    media.attributesl.emplace_back("ssrc:2 mslabel:janus");
+//    media.attributesl.emplace_back("ssrc:2 label:janusv0");
+
+    this->mMedia.insert(std::pair<int, Media>(this->mMedia.size(), media));
+    return this->mMedia.at(mMedia.size()-1);
+}
 
-std::ostream &operator<<(std::ostream &out, const rtc::Description &description) {
+    std::ostream &operator<<(std::ostream &out, const rtc::Description &description) {
 	return out << std::string(description);
 }
 
+}

+ 4 - 2
src/dtlssrtptransport.cpp

@@ -84,9 +84,10 @@ bool DtlsSrtpTransport::sendMedia(message_ptr message) {
 
 	int size = message->size();
 	PLOG_VERBOSE << "Send size=" << size;
+//    return outgoing(message);
 
 	// The RTP header has a minimum size of 12 bytes
-	if (size < 12)
+	if (size < 8)
 		throw std::runtime_error("RTP/RTCP packet too short");
 
 	// srtp_protect() and srtp_protect_rtcp() assume that they can write SRTP_MAX_TRAILER_LEN (for
@@ -124,7 +125,8 @@ bool DtlsSrtpTransport::sendMedia(message_ptr message) {
 	}
 
 	message->resize(size);
-	return DtlsTransport::send(message);
+	return outgoing(message);
+//	return DtlsTransport::send(message);
 }
 
 void DtlsSrtpTransport::incoming(message_ptr message) {

+ 1 - 1
src/peerconnection.cpp

@@ -342,7 +342,7 @@ shared_ptr<DtlsTransport> PeerConnection::initDtlsTransport() {
 
 			switch (state) {
 			case DtlsTransport::State::Connected:
-				initSctpTransport();
+                initSctpTransport();
 				break;
 			case DtlsTransport::State::Failed:
 				changeState(State::Failed);