From 3c4d40ac733e253cc82b5bf7a89408e1cc871225 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 5 Mar 2018 16:40:53 +0100 Subject: [PATCH] qrtplib: Windows build --- httpserver/httpserver.pro | 2 + qrtplib/CMakeLists.txt | 174 +++++++++++++++++++------------------- qrtplib/qrtplib.pro | 96 +++++++++++++++++++++ qrtplib/rtpsession.cpp | 63 ++------------ sdrangel.windows.pro | 1 + 5 files changed, 194 insertions(+), 142 deletions(-) create mode 100644 qrtplib/qrtplib.pro diff --git a/httpserver/httpserver.pro b/httpserver/httpserver.pro index 33e3b89a4..908950ade 100644 --- a/httpserver/httpserver.pro +++ b/httpserver/httpserver.pro @@ -10,6 +10,8 @@ TEMPLATE = lib TARGET = httpserver INCLUDEPATH += $$PWD +INCLUDEPATH += ../sdrbase + QMAKE_CXXFLAGS += -std=c++11 CONFIG(Release):build_subdir = release diff --git a/qrtplib/CMakeLists.txt b/qrtplib/CMakeLists.txt index 979fd508a..75ba994c0 100644 --- a/qrtplib/CMakeLists.txt +++ b/qrtplib/CMakeLists.txt @@ -1,100 +1,100 @@ project(qrtplib) set (qrtplib_HEADERS - rtcpapppacket.h - rtcpbyepacket.h - rtcpcompoundpacket.h - rtcpcompoundpacketbuilder.h - rtcppacket.h - rtcppacketbuilder.h - rtcprrpacket.h - rtcpscheduler.h - rtcpsdesinfo.h - rtcpsdespacket.h - rtcpsrpacket.h - rtcpunknownpacket.h - rtpaddress.h - rtpcollisionlist.h - rtpconfig.h - rtpdefines.h - rtpendian.h - rtperrors.h - rtphashtable.h - rtpinternalsourcedata.h -# rtpipv4address.h -# rtpipv4destination.h - rtpkeyhashtable.h - rtplibraryversion.h - rtppacket.h - rtppacketbuilder.h - rtprandom.h - rtprandomrand48.h - rtprandomrands.h - rtprandomurandom.h - rtprawpacket.h - rtpsession.h - rtpsessionparams.h - rtpsessionsources.h - rtpsourcedata.h - rtpsources.h - rtpstructs.h - rtptimeutilities.h - rtptransmitter.h - rtptypes_win.h - rtptypes.h - rtpudpransmitter.h -# rtpudpv4transmitter.h + rtcpapppacket.h + rtcpbyepacket.h + rtcpcompoundpacket.h + rtcpcompoundpacketbuilder.h + rtcppacket.h + rtcppacketbuilder.h + rtcprrpacket.h + rtcpscheduler.h + rtcpsdesinfo.h + rtcpsdespacket.h + rtcpsrpacket.h + rtcpunknownpacket.h + rtpaddress.h + rtpcollisionlist.h + rtpconfig.h + rtpdefines.h + rtpendian.h + rtperrors.h + rtphashtable.h + rtpinternalsourcedata.h +# rtpipv4address.h +# rtpipv4destination.h + rtpkeyhashtable.h + rtplibraryversion.h + rtppacket.h + rtppacketbuilder.h + rtprandom.h + rtprandomrand48.h + rtprandomrands.h + rtprandomurandom.h + rtprawpacket.h + rtpsession.h + rtpsessionparams.h + rtpsessionsources.h + rtpsourcedata.h + rtpsources.h + rtpstructs.h + rtptimeutilities.h + rtptransmitter.h + rtptypes_win.h + rtptypes.h + rtpudptransmitter.h +# rtpudpv4transmitter.h # rtpudpv4transmitternobind.h -# rtpexternaltransmitter.h - rtpsocketutil.h - rtpabortdescriptors.h - rtpselect.h -# rtptcpaddress.h -# rtptcptransmitter.h - ) +# rtpexternaltransmitter.h + rtpsocketutil.h + rtpabortdescriptors.h + rtpselect.h +# rtptcpaddress.h +# rtptcptransmitter.h + ) set(qrtplib_SOURCES - rtcpapppacket.cpp - rtcpbyepacket.cpp - rtcpcompoundpacket.cpp - rtcpcompoundpacketbuilder.cpp - rtcppacketbuilder.cpp - rtcprrpacket.cpp - rtcpscheduler.cpp - rtcpsdesinfo.cpp - rtcpsdespacket.cpp - rtcpsrpacket.cpp - rtpaddress.cpp - rtpcollisionlist.cpp - rtperrors.cpp - rtpinternalsourcedata.cpp -# rtpipv4address.cpp -# rtpipv4destination.cpp - rtplibraryversion.cpp - rtppacket.cpp - rtppacketbuilder.cpp - rtprandom.cpp - rtprandomrand48.cpp - rtprandomrands.cpp - rtprandomurandom.cpp - rtpsession.cpp - rtpsessionparams.cpp - rtpsessionsources.cpp - rtpsourcedata.cpp - rtpsources.cpp - rtptimeutilities.cpp - rtpudptransmitter.cpp -# rtpudpv4transmitter.cpp + rtcpapppacket.cpp + rtcpbyepacket.cpp + rtcpcompoundpacket.cpp + rtcpcompoundpacketbuilder.cpp + rtcppacketbuilder.cpp + rtcprrpacket.cpp + rtcpscheduler.cpp + rtcpsdesinfo.cpp + rtcpsdespacket.cpp + rtcpsrpacket.cpp + rtpaddress.cpp + rtpcollisionlist.cpp + rtperrors.cpp + rtpinternalsourcedata.cpp +# rtpipv4address.cpp +# rtpipv4destination.cpp + rtplibraryversion.cpp + rtppacket.cpp + rtppacketbuilder.cpp + rtprandom.cpp + rtprandomrand48.cpp + rtprandomrands.cpp + rtprandomurandom.cpp + rtpsession.cpp + rtpsessionparams.cpp + rtpsessionsources.cpp + rtpsourcedata.cpp + rtpsources.cpp + rtptimeutilities.cpp + rtpudptransmitter.cpp +# rtpudpv4transmitter.cpp # rtpudpv4transmitternobind.cpp -# rtpexternaltransmitter.cpp - rtpabortdescriptors.cpp -# rtptcpaddress.cpp -# rtptcptransmitter.cpp - ) +# rtpexternaltransmitter.cpp + rtpabortdescriptors.cpp +# rtptcpaddress.cpp +# rtptcptransmitter.cpp + ) include_directories( . - ${CMAKE_SOURCE_DIR}/sdrbase + ${CMAKE_SOURCE_DIR}/sdrbase ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/qrtplib/qrtplib.pro b/qrtplib/qrtplib.pro new file mode 100644 index 000000000..4e8140f44 --- /dev/null +++ b/qrtplib/qrtplib.pro @@ -0,0 +1,96 @@ +#-------------------------------------------------------- +# +# Pro file for Windows builds with Qt Creator +# +#-------------------------------------------------------- + +QT += core network + +TEMPLATE = lib +TARGET = qrtplib + +INCLUDEPATH += $$PWD +INCLUDEPATH += ../sdrbase + +QMAKE_CXXFLAGS += -std=c++11 + +CONFIG(Release):build_subdir = release +CONFIG(Debug):build_subdir = debug + +# Enable very detailed debug messages when compiling the debug version +CONFIG(debug, debug|release) { + DEFINES += SUPERVERBOSE +} + +HEADERS += $$PWD/rtcpapppacket.h \ + $$PWD/rtcpbyepacket.h \ + $$PWD/rtcpcompoundpacket.h \ + $$PWD/rtcpcompoundpacketbuilder.h \ + $$PWD/rtcppacket.h \ + $$PWD/rtcppacketbuilder.h \ + $$PWD/rtcprrpacket.h \ + $$PWD/rtcpscheduler.h \ + $$PWD/rtcpsdesinfo.h \ + $$PWD/rtcpsdespacket.h \ + $$PWD/rtcpsrpacket.h \ + $$PWD/rtcpunknownpacket.h \ + $$PWD/rtpaddress.h \ + $$PWD/rtpcollisionlist.h \ + $$PWD/rtpconfig.h \ + $$PWD/rtpdefines.h \ + $$PWD/rtpendian.h \ + $$PWD/rtperrors.h \ + $$PWD/rtphashtable.h \ + $$PWD/rtpinternalsourcedata.h \ + $$PWD/rtpkeyhashtable.h \ + $$PWD/rtplibraryversion.h \ + $$PWD/rtppacket.h \ + $$PWD/rtppacketbuilder.h \ + $$PWD/rtprandom.h \ + $$PWD/rtprandomrand48.h \ + $$PWD/rtprandomrands.h \ + $$PWD/rtprandomurandom.h \ + $$PWD/rtprawpacket.h \ + $$PWD/rtpsession.h \ + $$PWD/rtpsessionparams.h \ + $$PWD/rtpsessionsources.h \ + $$PWD/rtpsourcedata.h \ + $$PWD/rtpsources.h \ + $$PWD/rtpstructs.h \ + $$PWD/rtptimeutilities.h \ + $$PWD/rtptransmitter.h \ + $$PWD/rtptypes_win.h \ + $$PWD/rtptypes.h \ + $$PWD/rtpudptransmitter.h \ + $$PWD/rtpsocketutil.h \ + $$PWD/rtpselect.h + + +SOURCES += $$PWD/rtcpapppacket.cpp \ + $$PWD/rtcpbyepacket.cpp \ + $$PWD/rtcpcompoundpacket.cpp \ + $$PWD/rtcpcompoundpacketbuilder.cpp \ + $$PWD/rtcppacketbuilder.cpp \ + $$PWD/rtcprrpacket.cpp \ + $$PWD/rtcpscheduler.cpp \ + $$PWD/rtcpsdesinfo.cpp \ + $$PWD/rtcpsdespacket.cpp \ + $$PWD/rtcpsrpacket.cpp \ + $$PWD/rtpaddress.cpp \ + $$PWD/rtpcollisionlist.cpp \ + $$PWD/rtperrors.cpp \ + $$PWD/rtpinternalsourcedata.cpp \ + $$PWD/rtplibraryversion.cpp \ + $$PWD/rtppacket.cpp \ + $$PWD/rtppacketbuilder.cpp \ + $$PWD/rtprandom.cpp \ + $$PWD/rtprandomrand48.cpp \ + $$PWD/rtprandomrands.cpp \ + $$PWD/rtprandomurandom.cpp \ + $$PWD/rtpsession.cpp \ + $$PWD/rtpsessionparams.cpp \ + $$PWD/rtpsessionsources.cpp \ + $$PWD/rtpsourcedata.cpp \ + $$PWD/rtpsources.cpp \ + $$PWD/rtptimeutilities.cpp \ + $$PWD/rtpudptransmitter.cpp diff --git a/qrtplib/rtpsession.cpp b/qrtplib/rtpsession.cpp index c04c7b95b..94dedda1d 100644 --- a/qrtplib/rtpsession.cpp +++ b/qrtplib/rtpsession.cpp @@ -48,12 +48,11 @@ #include "rtcpcompoundpacket.h" #endif // RTP_SUPPORT_SENDAPP #include "rtpinternalutils.h" -#ifndef WIN32 + #include #include -#else -#include -#endif // WIN32 + +#include namespace qrtplib @@ -1145,51 +1144,6 @@ int RTPSession::ProcessPolledData() int RTPSession::CreateCNAME(uint8_t *buffer, std::size_t *bufferlength, bool resolve __attribute__((unused))) { -#ifndef WIN32 - bool gotlogin = true; -#ifdef RTP_SUPPORT_GETLOGINR - buffer[0] = 0; - if (getlogin_r((char *) buffer, *bufferlength) != 0) - gotlogin = false; - else - { - if (buffer[0] == 0) - gotlogin = false; - } - - if (!gotlogin) // try regular getlogin - { - char *loginname = getlogin(); - if (loginname == 0) - gotlogin = false; - else - strncpy((char *) buffer, loginname, *bufferlength); - } -#else - char *loginname = getlogin(); - if (loginname == 0) - gotlogin = false; - else - strncpy((char *)buffer,loginname,*bufferlength); -#endif // RTP_SUPPORT_GETLOGINR - if (!gotlogin) - { - char *logname = getenv("LOGNAME"); - if (logname == 0) - return ERR_RTP_SESSION_CANTGETLOGINNAME; - strncpy((char *) buffer, logname, *bufferlength); - } -#else // Win32 version - -#ifndef _WIN32_WCE - DWORD len = *bufferlength; - if (!GetUserName((LPTSTR)buffer,&len)) - strncpy((char *)buffer,"unknown",*bufferlength); -#else - strncpy((char *)buffer,"unknown",*bufferlength); -#endif // _WIN32_WCE - -#endif // WIN32 buffer[*bufferlength - 1] = 0; std::size_t offset = strlen((const char *) buffer); @@ -1199,16 +1153,15 @@ int RTPSession::CreateCNAME(uint8_t *buffer, std::size_t *bufferlength, bool res std::size_t buflen2 = *bufferlength - offset; - char hostname[1024]; + QString hostnameStr = QHostInfo::localHostName(); + int hostnameSize = hostnameStr.size(); - strncpy(hostname, "localhost", 1024); // just in case gethostname fails + strncpy((char * )(buffer + offset), hostnameStr.toStdString().c_str(), buflen2); + *bufferlength = offset + hostnameSize; - gethostname(hostname, 1024); - strncpy((char * )(buffer + offset), hostname, buflen2); - - *bufferlength = offset + strlen(hostname); if (*bufferlength > RTCP_SDES_MAXITEMLENGTH) *bufferlength = RTCP_SDES_MAXITEMLENGTH; + return 0; } diff --git a/sdrangel.windows.pro b/sdrangel.windows.pro index f68e51083..d6645e29c 100644 --- a/sdrangel.windows.pro +++ b/sdrangel.windows.pro @@ -11,6 +11,7 @@ CONFIG += ordered SUBDIRS = serialdv SUBDIRS += httpserver SUBDIRS += logging +SUBDIRS += qrtplib SUBDIRS += swagger SUBDIRS += sdrbase SUBDIRS += sdrgui