diff --git a/deps/patches/010_fix_zrtp_cstdint_include.patch b/deps/patches/010_fix_zrtp_cstdint_include.patch new file mode 100644 index 00000000..6b21f4e8 --- /dev/null +++ b/deps/patches/010_fix_zrtp_cstdint_include.patch @@ -0,0 +1,10 @@ +--- pjsip/third_party/zsrtp/zrtp/zrtp/EmojiBase32.cpp.orig 2026-01-22 15:52:01.376662475 +0100 ++++ pjsip/third_party/zsrtp/zrtp/zrtp/EmojiBase32.cpp 2026-01-22 15:52:26.075802041 +0100 +@@ -2,6 +2,7 @@ + // Created by werner on 26.12.15. + // + #include ++#include + // stdlib.h required for Android NDK builds, not included within the above includes + #include + diff --git a/deps/patches/2.11/001_pjsip_211.patch b/deps/patches/2.11/001_pjsip_211.patch index bf3c5db1..0e5cd43b 100644 --- a/deps/patches/2.11/001_pjsip_211.patch +++ b/deps/patches/2.11/001_pjsip_211.patch @@ -3781,8 +3781,8 @@ diff -ruN pjproject-2.10/pjmedia/src/pjmedia/vid_tee.c pjsip/pjmedia/src/pjmedia if (tee->buf_pool) pj_pool_release(tee->buf_pool); diff -ruN pjproject-2.10/pjmedia/src/pjmedia-audiodev/alsa_dev.c pjsip/pjmedia/src/pjmedia-audiodev/alsa_dev.c ---- pjproject-2.10/pjmedia/src/pjmedia-audiodev/alsa_dev.c 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip/pjmedia/src/pjmedia-audiodev/alsa_dev.c 2021-02-06 23:08:42.203153000 +0100 +--- pjproject-2.11/pjmedia/src/pjmedia-audiodev/alsa_dev.c 2021-03-17 08:34:46.000000000 +0100 ++++ pjsip/pjmedia/src/pjmedia-audiodev/alsa_dev.c 2026-01-22 16:58:14.647578243 +0100 @@ -43,7 +43,7 @@ #define ALSASOUND_CAPTURE 2 #define MAX_SOUND_CARDS 5 @@ -4015,7 +4015,16 @@ diff -ruN pjproject-2.10/pjmedia/src/pjmedia-audiodev/alsa_dev.c pjsip/pjmedia/s SND_PCM_STREAM_PLAYBACK, 0); if (result < 0) -@@ -722,7 +794,7 @@ +@@ -677,7 +749,7 @@ + if (result < 0) { + PJ_LOG (3,(THIS_FILE, "Unable to set a channel count of %d for " + "playback device '%s'", param->channel_count, +- stream->af->devs[param->play_id].name)); ++ stream->af->devs[param->play_id].alsa_name)); + snd_pcm_close (stream->pb_pcm); + return PJMEDIA_EAUD_SYSERR; + } +@@ -734,7 +806,7 @@ PJ_LOG (5,(THIS_FILE, "Opened device alsa(%s) for playing, sample rate=%d" ", ch=%d, bits=%d, period size=%d frames, latency=%d ms", @@ -4024,7 +4033,7 @@ diff -ruN pjproject-2.10/pjmedia/src/pjmedia-audiodev/alsa_dev.c pjsip/pjmedia/s rate, param->channel_count, param->bits_per_sample, stream->pb_frames, (int)stream->param.output_latency_ms)); -@@ -746,9 +818,9 @@ +@@ -758,9 +830,9 @@ /* Open PCM for capture */ PJ_LOG (5,(THIS_FILE, "open_capture: Open capture device '%s'", @@ -4036,7 +4045,16 @@ diff -ruN pjproject-2.10/pjmedia/src/pjmedia-audiodev/alsa_dev.c pjsip/pjmedia/s SND_PCM_STREAM_CAPTURE, 0); if (result < 0) -@@ -842,7 +914,7 @@ +@@ -809,7 +881,7 @@ + if (result < 0) { + PJ_LOG (3,(THIS_FILE, "Unable to set a channel count of %d for " + "capture device '%s'", param->channel_count, +- stream->af->devs[param->rec_id].name)); ++ stream->af->devs[param->rec_id].alsa_name)); + snd_pcm_close (stream->ca_pcm); + return PJMEDIA_EAUD_SYSERR; + } +@@ -866,7 +938,7 @@ PJ_LOG (5,(THIS_FILE, "Opened device alsa(%s) for capture, sample rate=%d" ", ch=%d, bits=%d, period size=%d frames, latency=%d ms", @@ -4045,7 +4063,7 @@ diff -ruN pjproject-2.10/pjmedia/src/pjmedia-audiodev/alsa_dev.c pjsip/pjmedia/s rate, param->channel_count, param->bits_per_sample, stream->ca_frames, (int)stream->param.input_latency_ms)); -@@ -903,6 +975,27 @@ +@@ -927,6 +999,27 @@ return PJ_SUCCESS; } diff --git a/deps/patches/2.11/007_fix_zrtp_cstdint_include.patch b/deps/patches/2.11/007_fix_zrtp_cstdint_include.patch new file mode 100644 index 00000000..6b21f4e8 --- /dev/null +++ b/deps/patches/2.11/007_fix_zrtp_cstdint_include.patch @@ -0,0 +1,10 @@ +--- pjsip/third_party/zsrtp/zrtp/zrtp/EmojiBase32.cpp.orig 2026-01-22 15:52:01.376662475 +0100 ++++ pjsip/third_party/zsrtp/zrtp/zrtp/EmojiBase32.cpp 2026-01-22 15:52:26.075802041 +0100 +@@ -2,6 +2,7 @@ + // Created by werner on 26.12.15. + // + #include ++#include + // stdlib.h required for Android NDK builds, not included within the above includes + #include + diff --git a/deps/patches/2.11/007_video_support_dshow_mingw.patch b/deps/patches/2.11/007_video_support_dshow_mingw.patch deleted file mode 100644 index e40ec3b5..00000000 --- a/deps/patches/2.11/007_video_support_dshow_mingw.patch +++ /dev/null @@ -1,480 +0,0 @@ -diff -ruN pjsip/aconfigure patch/aconfigure ---- pjsip/aconfigure 2024-09-03 11:24:53 -+++ patch/aconfigure 2024-09-03 11:27:36 -@@ -681,6 +681,9 @@ - ac_pjmedia_video_has_ios_opengl - ac_pjmedia_video_has_vtoolbox - ac_pjmedia_video_has_darwin -+ac_dshow_ldflags -+ac_dshow_cflags -+ac_pjmedia_video_dev_has_dshow - ac_android_cflags - ac_pjmedia_video_has_android - ac_pjmedia_video -@@ -6471,10 +6474,12 @@ - - - --# Disable video on mingw -+# Disable video on mingw by default (but respect --enable-video=yes) - case $target in - *mingw*) -+ if test ! "$enable_video" = "yes"; then - enable_video="no" -+ fi - ;; - esac - -@@ -6545,6 +6550,18 @@ - fi - ac_android_cflags="$ac_android_cflags -DPJMEDIA_VIDEO_DEV_HAS_ANDROID=1" - ;; -+ *mingw*) -+ if test "$enable_video" = "yes"; then -+ ac_pjmedia_video=windows_os -+ -+ ac_pjmedia_video_dev_has_dshow=yes -+ -+ ac_dshow_cflags="-DPJMEDIA_HAS_VIDEO=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1" -+ -+ ac_dshow_ldflags=" -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ LIBS="$LIBS -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ fi -+ ;; - *darwin*) - ac_pjmedia_video=darwin_os - -@@ -7053,6 +7070,7 @@ - ac_sdl_cflags=`$SDL_CONFIG --cflags` - ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" - ac_sdl_ldflags=`$SDL_CONFIG --libs` -+ ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} - LIBS="$LIBS $ac_sdl_ldflags" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unsupported SDL version" >&5 -diff -ruN pjsip/aconfigure.ac patch/aconfigure.ac ---- pjsip/aconfigure.ac 2024-09-03 11:24:53 -+++ patch/aconfigure.ac 2024-09-03 11:27:36 -@@ -763,10 +763,12 @@ - - AC_SUBST(ac_pjmedia_video) - --# Disable video on mingw -+# Disable video on mingw by default (but respect --enable-video=yes) - case $target in - *mingw*) -+ if test ! "$enable_video" = "yes"; then - enable_video="no" -+ fi - ;; - esac - -@@ -818,6 +820,18 @@ - fi - ac_android_cflags="$ac_android_cflags -DPJMEDIA_VIDEO_DEV_HAS_ANDROID=1" - ;; -+ *mingw*) -+ if test "$enable_video" = "yes"; then -+ ac_pjmedia_video=windows_os -+ AC_SUBST(ac_pjmedia_video_dev_has_dshow) -+ ac_pjmedia_video_dev_has_dshow=yes -+ AC_SUBST(ac_dshow_cflags) -+ ac_dshow_cflags="-DPJMEDIA_HAS_VIDEO=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1" -+ AC_SUBST(ac_dshow_ldflags) -+ ac_dshow_ldflags=" -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ LIBS="$LIBS -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ fi -+ ;; - *darwin*) - ac_pjmedia_video=darwin_os - AC_SUBST(ac_pjmedia_video_has_darwin) -@@ -1072,6 +1086,7 @@ - ac_sdl_cflags=`$SDL_CONFIG --cflags` - ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" - ac_sdl_ldflags=`$SDL_CONFIG --libs` -+ ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} - LIBS="$LIBS $ac_sdl_ldflags" - else - AC_MSG_RESULT([Unsupported SDL version]) -diff -ruN pjsip/build.mak.in patch/build.mak.in ---- pjsip/build.mak.in 2024-09-03 11:24:53 -+++ patch/build.mak.in 2024-09-03 11:27:36 -@@ -200,13 +200,22 @@ - AC_PJMEDIA_VIDEO_HAS_IOS_OPENGL = @ac_pjmedia_video_has_ios_opengl@ - DARWIN_CFLAGS = @ac_darwin_cflags@ - -+# mingw -+AC_PJMEDIA_VIDEO_DEV_HAS_DSHOW = @ac_pjmedia_video_dev_has_dshow@ -+ifeq (@ac_pjmedia_video_dev_has_dshow@,yes) -+DSHOW_CFLAGS = @ac_dshow_cflags@ -+DSHOW_LDFLAGS = @ac_dshow_ldflags@ -+APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libbaseclasses-$(LIB_SUFFIX) -+APP_THIRD_PARTY_LIBS += -lbaseclasses-$(TARGET_NAME) -+endif -+ - # Android - ANDROID_CFLAGS = @ac_android_cflags@ - - # PJMEDIA features exclusion --PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ -+PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(DSHOW_CFLAGS) $(QT_CFLAGS) \ - $(OPENH264_CFLAGS) $(VPX_CFLAGS) $(DARWIN_CFLAGS) --PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ -+PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) $(DSHOW_LDFLAGS) \ - $(OPENH264_LDFLAGS) $(VPX_LDFLAGS) - - # CFLAGS, LDFLAGS, and LIBS to be used by applications -diff -ruN pjsip/pjmedia/build/os-auto.mak.in patch/pjmedia/build/os-auto.mak.in ---- pjsip/pjmedia/build/os-auto.mak.in 2024-09-03 11:24:53 -+++ patch/pjmedia/build/os-auto.mak.in 2024-09-03 11:27:36 -@@ -18,6 +18,10 @@ - V4L2_CFLAGS = @ac_v4l2_cflags@ - V4L2_LDFLAGS = @ac_v4l2_ldflags@ - -+# Directshow -+DSHOW_CFLAGS = @ac_dshow_cflags@ -+DSHOW_LDFLAGS = @ac_dshow_ldflags@ -+ - # QT - AC_PJMEDIA_VIDEO_HAS_QT = @ac_pjmedia_video_has_qt@ - # QT_CFLAGS = @ac_qt_cflags@ -@@ -39,10 +43,10 @@ - - # PJMEDIA features exclusion - export CFLAGS += @ac_no_small_filter@ @ac_no_large_filter@ @ac_no_speex_aec@ \ -- $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ -+ $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(DSHOW_CFLAGS) $(QT_CFLAGS) \ - $(DARWIN_CFLAGS) $(ANDROID_CFLAGS) \ - $(OPENH264_CFLAGS) $(VPX_CFLAGS) --export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ -+export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) $(DSHOW_LDFLAGS) \ - $(OPENH264_LDFLAGS) $(VPX_LDFLAGS) - - # Define the desired sound device backend -@@ -287,6 +291,14 @@ - # - ifeq ($(AC_PJMEDIA_VIDEO_HAS_IOS_OPENGL),yes) - export PJMEDIA_VIDEODEV_OBJS += ios_opengl_dev.o -+endif -+ -+# -+# Directshow video device -+# -+ifeq ($(AC_PJMEDIA_VIDEO_DEV_HAS_DSHOW),yes) -+export PJMEDIA_VIDEODEV_OBJS += dshow_dev.o dshowclasses.o -+export CFLAGS += -I$(THIRD_PARTY)/BaseClasses - endif - - # -diff -ruN pjsip/pjmedia/src/pjmedia-videodev/dshow_dev.c patch/pjmedia/src/pjmedia-videodev/dshow_dev.c ---- pjsip/pjmedia/src/pjmedia-videodev/dshow_dev.c 2024-09-03 11:24:53 -+++ patch/pjmedia/src/pjmedia-videodev/dshow_dev.c 2024-09-03 11:20:53 -@@ -38,6 +38,12 @@ - # define DIBSIZE(BI) ((BI).biHeight < 0 ? (-1)*(_DIBSIZE(BI)) : _DIBSIZE(BI)) - #endif - -+#ifdef _MSC_VER -+# pragma warning(pop) -+#else -+#include -+#endif -+ - #define THIS_FILE "dshow_dev.c" - #define DEFAULT_CLOCK_RATE 90000 - #define DEFAULT_WIDTH 640 -diff -ruN pjsip/pjsip/build/Makefile patch/pjsip/build/Makefile ---- pjsip/pjsip/build/Makefile 2020-02-14 10:48:27 -+++ patch/pjsip/build/Makefile 2024-09-03 11:27:49 -@@ -163,7 +163,7 @@ - export PJSUA2_TEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ - main.o - export PJSUA2_TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS) --export PJSUA2_TEST_CXXFLAGS = $(_CXXFLAGS) $(PJSUA2_LIB_CFLAGS) -+export PJSUA2_TEST_CXXFLAGS = $(_CXXFLAGS) $(PJSUA2_LIB_CFLAGS) $(PJ_VIDEO_CFLAGS) - export PJSUA2_TEST_LDFLAGS += $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS) - ifeq ($(EXCLUDE_APP),0) - export PJSUA2_TEST_EXE := pjsua2-test-$(TARGET_NAME)$(HOST_EXE) -@@ -182,7 +182,7 @@ - tsx_basic_test.o tsx_bench.o tsx_uac_test.o \ - tsx_uas_test.o txdata_test.o uri_test.o \ - inv_offer_answer_test.o --export TEST_CFLAGS += $(_CFLAGS) -+export TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS) - export TEST_CXXFLAGS += $(_CXXFLAGS) - export TEST_LDFLAGS += $(PJSIP_LDLIB) \ - $(PJSIP_UA_LDLIB) \ -diff -ruN pjsip/pjsip/src/pjsua2-test/main.cpp patch/pjsip/src/pjsua2-test/main.cpp ---- pjsip/pjsip/src/pjsua2-test/main.cpp 2020-02-14 10:48:27 -+++ patch/pjsip/src/pjsua2-test/main.cpp 2024-09-03 11:27:49 -@@ -20,6 +20,7 @@ - - using namespace pj; - -+extern "C" - int main(int argc, char *argv[]) - { - Endpoint ep; -diff -ruN pjsip/pjsip-apps/build/Samples.mak patch/pjsip-apps/build/Samples.mak ---- pjsip/pjsip-apps/build/Samples.mak 2020-02-14 10:48:27 -+++ patch/pjsip-apps/build/Samples.mak 2024-09-03 11:27:49 -@@ -7,8 +7,8 @@ - ############################################################################### - # Gather all flags. - # --export _CFLAGS := $(PJ_CFLAGS) $(CFLAGS) --export _CXXFLAGS:= $(PJ_CXXFLAGS) $(CFLAGS) -+export _CFLAGS := $(PJ_CFLAGS) $(CFLAGS) $(PJ_VIDEO_CFLAGS) -+export _CXXFLAGS:= $(PJ_CXXFLAGS) $(CFLAGS) $(PJ_VIDEO_CFLAGS) - export _LDFLAGS := $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) - export _LDXXFLAGS := $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS) - -diff -ruN pjsip/pjsip-apps/src/samples/pjsua2_demo.cpp patch/pjsip-apps/src/samples/pjsua2_demo.cpp ---- pjsip/pjsip-apps/src/samples/pjsua2_demo.cpp 2020-02-14 10:48:27 -+++ patch/pjsip-apps/src/samples/pjsua2_demo.cpp 2024-09-03 11:27:49 -@@ -410,6 +410,7 @@ - } - - -+extern "C" - int main() - { - int ret = 0; -diff -ruN pjsip/third_party/BaseClasses/amvideo2.h patch/third_party/BaseClasses/amvideo2.h ---- pjsip/third_party/BaseClasses/amvideo2.h 1970-01-01 01:00:00 -+++ patch/third_party/BaseClasses/amvideo2.h 2024-09-03 11:27:49 -@@ -0,0 +1,26 @@ -+/* -+ Some necessary macros are missing from mingw version. They are here. -+ See https://github.com/ofTheo/videoInput/blob/master/videoInputSrcAndDemos/libs/DShow/Include/amvideo.h -+*/ -+//------------------------------------------------------------------------------ -+// File: AMVideo.h -+// -+// Desc: Video related definitions and interfaces for ActiveMovie. -+// -+// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved. -+//------------------------------------------------------------------------------ -+ -+#define TRUECOLOR(pbmi) ((TRUECOLORINFO *)(((LPBYTE)&((pbmi)->bmiHeader)) \ -+ + (pbmi)->bmiHeader.biSize)) -+#define COLORS(pbmi) ((RGBQUAD *)(((LPBYTE)&((pbmi)->bmiHeader)) \ -+ + (pbmi)->bmiHeader.biSize)) -+ -+#define SIZE_MASKS (iMASK_COLORS * sizeof(DWORD)) -+#define SIZE_PREHEADER (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader)) -+ -+#define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) -+#define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount) -+#define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight) -+#define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi)) -+ -+#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= iPALETTE) -diff -ruN pjsip/third_party/BaseClasses/arithutil.cpp patch/third_party/BaseClasses/arithutil.cpp ---- pjsip/third_party/BaseClasses/arithutil.cpp 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/arithutil.cpp 2024-09-03 11:27:49 -@@ -21,7 +21,7 @@ - // Enlarged integer divide - 64-bits / 32-bits > 32-bits - // - --#ifndef _X86_ -+#if !defined(_X86_) || !defined(_MSC_VER) - - #define LLtoU64(x) (*(unsigned __int64*)(void*)(&(x))) - -diff -ruN pjsip/third_party/BaseClasses/sal2.h patch/third_party/BaseClasses/sal2.h ---- pjsip/third_party/BaseClasses/sal2.h 1970-01-01 01:00:00 -+++ patch/third_party/BaseClasses/sal2.h 2024-09-03 11:27:49 -@@ -0,0 +1,19 @@ -+/* -+ See https://github.com/RobertBeckebans/RBDOOM-3-BFG/blob/master/neo/libs/mingw-hacks/sal.h -+*/ -+/* From PortAudio, which is under MIT license: -+ * https://www.assembla.com/code/portaudio/subversion/nodes/portaudio/trunk/src/hostapi/wasapi/mingw-include/sal.h -+ */ -+#pragma once -+ -+#if __GNUC__ >=3 -+#pragma GCC system_header -+#endif -+ -+#define __in -+#define __out -+#define __deref_in -+#define __deref_inout_opt -+#define __field_ecount_opt(x) -+#define __in_bcount_opt(size) -+ -diff -ruN pjsip/third_party/BaseClasses/streams.h patch/third_party/BaseClasses/streams.h ---- pjsip/third_party/BaseClasses/streams.h 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/streams.h 2024-09-03 11:27:49 -@@ -23,6 +23,11 @@ - #else - #define AM_NOVTABLE - #endif -+#else -+ #include -+ #include -+ #define AM_NOVTABLE -+ #pragma GCC diagnostic ignored "-Wwrite-strings" - #endif // MSC_VER - - -@@ -193,6 +198,13 @@ - //#include // External device control interface defines - //#include // audio filter device error event codes - -+#ifndef _MSC_VER -+ -+#define min(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; }) -+#include -+ -+#endif -+ - - #else - #ifdef DEBUG -diff -ruN pjsip/third_party/BaseClasses/wxutil.cpp patch/third_party/BaseClasses/wxutil.cpp ---- pjsip/third_party/BaseClasses/wxutil.cpp 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/wxutil.cpp 2024-09-03 11:27:49 -@@ -384,7 +384,7 @@ - { - void * ret = dst; - --#ifdef _X86_ -+#if defined(_X86_) && defined(_MSC_VER) - if (dst <= src || (char *)dst >= ((char *)src + count)) { - - /* -@@ -432,6 +432,7 @@ - return ret; - } - -+#ifdef _MSC_VER - HRESULT AMSafeMemMoveOffset( - __in_bcount(dst_size) void * dst, - __in size_t dst_size, -@@ -458,6 +459,7 @@ - memmoveInternal( (BYTE *)dst+cb_dst_offset, (BYTE *)src+cb_src_offset, count); - return S_OK; - } -+#endif - - - #ifdef DEBUG -diff -ruN pjsip/third_party/BaseClasses/wxutil.h patch/third_party/BaseClasses/wxutil.h ---- pjsip/third_party/BaseClasses/wxutil.h 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/wxutil.h 2024-09-03 11:27:49 -@@ -337,6 +337,7 @@ - } - }; - -+#ifdef _MSC_VER - // Ensures that memory is not read past the length source buffer - // and that memory is not written past the length of the dst buffer - // dst - buffer to copy to -@@ -358,13 +359,14 @@ - __in size_t src_size, - __in DWORD cb_src_offset, - __in size_t count); -+#endif - - extern "C" - void * __stdcall memmoveInternal(void *, const void *, size_t); - - inline void * __cdecl memchrInternal(const void *buf, int chr, size_t cnt) - { --#ifdef _X86_ -+#if defined(_X86_) && defined(_MSC_VER) - void *pRet = NULL; - - _asm { -diff -ruN pjsip/third_party/build/baseclasses/Makefile patch/third_party/build/baseclasses/Makefile ---- pjsip/third_party/build/baseclasses/Makefile 1970-01-01 01:00:00 -+++ patch/third_party/build/baseclasses/Makefile 2024-09-03 11:27:49 -@@ -0,0 +1,72 @@ -+include ../../../build.mak -+include ../../../build/common.mak -+ -+export LIBDIR := ../../lib -+ -+RULES_MAK := $(PJDIR)/build/rules.mak -+ -+export BASECLASSES_LIB := libbaseclasses-$(TARGET_NAME)$(LIBEXT) -+ -+ifeq ($(PJ_SHARED_LIBRARIES),) -+else -+export BASECLASSES_SONAME := libbaseclasses.$(SHLIB_SUFFIX) -+export BASECLASSES_SHLIB := $(BASECLASSES_SONAME).$(PJ_VERSION_MAJOR) -+endif -+ -+############################################################################### -+# Gather all flags. -+# -+export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ -+ $(CFLAGS) $(CC_INC)../../BaseClasses \ -+ $(CC_INC)../../../pjmedia/include $(CC_INC)../../../pjlib/include -+export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ -+ $(HOST_CXXFLAGS) $(CXXFLAGS) -+export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ -+ $(LDFLAGS) -+ -+export BASECLASSES_SRCDIR = ../../BaseClasses -+export BASECLASSES_OBJS = amfilter.o amvideo.o arithutil.o combase.o ctlutil.o \ -+ mtype.o renbase.o wxdebug.o wxlist.o \ -+ wxutil.o -+ -+export BASECLASSES_CFLAGS = $(_CFLAGS) -+export BASECLASSES_CXXFLAGS = -fpermissive -D__STRSAFE__NO_INLINE=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1 $(_CFLAGS) -+ -+ -+export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT -+############################################################################### -+# Main entry -+# -+# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. -+# -+TARGETS := $(BASECLASSES_LIB) $(BASECLASSES_SONAME) -+ -+all: $(TARGETS) -+ -+doc: -+ cd .. && doxygen docs/doxygen.cfg -+ -+dep: depend -+distclean: realclean -+ -+.PHONY: all dep depend clean realclean distclean -+.PHONY: $(TARGETS) -+.PHONY: $(BASECLASSES_LIB) $(BASECLASSES_SONAME) -+ -+libbaseclasses: $(BASECLASSES_LIB) -+$(BASECLASSES_SONAME): $(BASECLASSES_LIB) -+$(BASECLASSES_LIB) $(BASECLASSES_SONAME): -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -+ -+clean print_lib: -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ -+ -+realclean: -+ $(subst @@,$(subst /,$(HOST_PSEP),.ilbc-$(TARGET_NAME).depend),$(HOST_RMR)) -+ -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ -+ -+depend: -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ -+ -+ -diff -ruN pjsip/third_party/build/os-auto.mak.in patch/third_party/build/os-auto.mak.in ---- pjsip/third_party/build/os-auto.mak.in 2024-09-03 11:24:53 -+++ patch/third_party/build/os-auto.mak.in 2024-09-03 11:27:49 -@@ -39,6 +39,10 @@ - endif - endif - -+ifneq ($(findstring windows_os,@ac_pjmedia_video@),) -+DIRS += baseclasses -+endif -+ - ifneq (@ac_external_srtp@,0) - # External SRTP - else diff --git a/deps/patches/2.11/008_support_mingw_w64.patch b/deps/patches/2.11/008_support_mingw_w64.patch deleted file mode 100644 index 294a8d5d..00000000 --- a/deps/patches/2.11/008_support_mingw_w64.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff -ruN pjsip/Makefile pjsip-patch/Makefile ---- pjsip/Makefile 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/Makefile 2024-09-03 10:32:23.926160100 +0200 -@@ -129,10 +129,9 @@ - sed -e "s!@INCLUDEDIR@!$(includedir)!" | \ - sed -e "s!@LIBDIR@!$(libdir)!" | \ - sed -e "s/@PJ_VERSION@/$(PJ_VERSION)/" | \ -- sed -e "s!@PJ_LDLIBS@!!" | \ -- sed -e "s!@PJ_LDXXLIBS@!$(PJ_LDXXLIBS)!" | \ -- sed -e "s!@PJ_INSTALL_CFLAGS@!!" | \ -- sed -e "s!@PJ_INSTALL_CXXFLAGS@!$(PJ_INSTALL_CXXFLAGS)!" > $(DESTDIR)/$(libdir)/pkgconfig/libpjproject.pc -+ sed -e "s!@PJ_INSTALL_LDFLAGS@!$(PJ_INSTALL_LDFLAGS)!" | \ -+ sed -e "s!@PJ_INSTALL_LDFLAGS_PRIVATE@!$(PJ_INSTALL_LDFLAGS_PRIVATE)!" | \ -+ sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc - - uninstall: - $(RM) $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc -diff -ruN pjsip/aconfigure pjsip-patch/aconfigure ---- pjsip/aconfigure 2024-09-03 10:10:13.926165600 +0200 -+++ pjsip-patch/aconfigure 2024-09-03 10:32:23.941785600 +0200 -@@ -5156,6 +5156,12 @@ - - $as_echo "#define WIN32_LEAN_AND_MEAN 1" >>confdefs.h - -+ case $target in -+ *_64-w64-mingw* ) -+ $as_echo "#define PJ_WIN64 1" >>confdefs.h -+ -+ ;; -+ esac - ;; - *darwin*) - $as_echo "#define PJ_DARWINOS 1" >>confdefs.h -diff -ruN pjsip/aconfigure.ac pjsip-patch/aconfigure.ac ---- pjsip/aconfigure.ac 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/aconfigure.ac 2024-09-03 10:32:23.973036300 +0200 -@@ -161,6 +161,11 @@ - AC_DEFINE(PJ_WIN32,1) - AC_DEFINE(PJ_WIN32_WINNT,0x0400) - AC_DEFINE(WIN32_LEAN_AND_MEAN) -+ case $target in -+ *_64-w64-mingw* ) -+ AC_DEFINE(PJ_WIN64,1) -+ ;; -+ esac - ;; - *darwin*) - AC_DEFINE(PJ_DARWINOS,1) -diff -ruN pjsip/pjlib/include/pj/compat/os_auto.h.in pjsip-patch/pjlib/include/pj/compat/os_auto.h.in ---- pjsip/pjlib/include/pj/compat/os_auto.h.in 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/pjlib/include/pj/compat/os_auto.h.in 2024-09-03 10:32:23.988659900 +0200 -@@ -30,6 +30,7 @@ - #undef PJ_OS_NAME - - /* Legacy macros */ -+#undef PJ_WIN64 - #undef PJ_WIN32 - #undef PJ_WIN32_WINNT - #undef WIN32_LEAN_AND_MEAN -diff -ruN pjsip/pjnath/src/pjnath-test/stun_sock_test.c pjsip-patch/pjnath/src/pjnath-test/stun_sock_test.c ---- pjsip/pjnath/src/pjnath-test/stun_sock_test.c 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/pjnath/src/pjnath-test/stun_sock_test.c 2024-09-03 10:32:23.988659900 +0200 -@@ -25,7 +25,6 @@ - RESPOND_STUN = 1, - WITH_MAPPED = 2, - WITH_XOR_MAPPED = 4, -- - ECHO = 8 - }; - diff --git a/deps/patches/2.12/007_fix_zrtp_cstdint_include.patch b/deps/patches/2.12/007_fix_zrtp_cstdint_include.patch new file mode 100644 index 00000000..6b21f4e8 --- /dev/null +++ b/deps/patches/2.12/007_fix_zrtp_cstdint_include.patch @@ -0,0 +1,10 @@ +--- pjsip/third_party/zsrtp/zrtp/zrtp/EmojiBase32.cpp.orig 2026-01-22 15:52:01.376662475 +0100 ++++ pjsip/third_party/zsrtp/zrtp/zrtp/EmojiBase32.cpp 2026-01-22 15:52:26.075802041 +0100 +@@ -2,6 +2,7 @@ + // Created by werner on 26.12.15. + // + #include ++#include + // stdlib.h required for Android NDK builds, not included within the above includes + #include + diff --git a/deps/patches/2.12/007_video_support_dshow_mingw.patch b/deps/patches/2.12/007_video_support_dshow_mingw.patch deleted file mode 100644 index e40ec3b5..00000000 --- a/deps/patches/2.12/007_video_support_dshow_mingw.patch +++ /dev/null @@ -1,480 +0,0 @@ -diff -ruN pjsip/aconfigure patch/aconfigure ---- pjsip/aconfigure 2024-09-03 11:24:53 -+++ patch/aconfigure 2024-09-03 11:27:36 -@@ -681,6 +681,9 @@ - ac_pjmedia_video_has_ios_opengl - ac_pjmedia_video_has_vtoolbox - ac_pjmedia_video_has_darwin -+ac_dshow_ldflags -+ac_dshow_cflags -+ac_pjmedia_video_dev_has_dshow - ac_android_cflags - ac_pjmedia_video_has_android - ac_pjmedia_video -@@ -6471,10 +6474,12 @@ - - - --# Disable video on mingw -+# Disable video on mingw by default (but respect --enable-video=yes) - case $target in - *mingw*) -+ if test ! "$enable_video" = "yes"; then - enable_video="no" -+ fi - ;; - esac - -@@ -6545,6 +6550,18 @@ - fi - ac_android_cflags="$ac_android_cflags -DPJMEDIA_VIDEO_DEV_HAS_ANDROID=1" - ;; -+ *mingw*) -+ if test "$enable_video" = "yes"; then -+ ac_pjmedia_video=windows_os -+ -+ ac_pjmedia_video_dev_has_dshow=yes -+ -+ ac_dshow_cflags="-DPJMEDIA_HAS_VIDEO=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1" -+ -+ ac_dshow_ldflags=" -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ LIBS="$LIBS -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ fi -+ ;; - *darwin*) - ac_pjmedia_video=darwin_os - -@@ -7053,6 +7070,7 @@ - ac_sdl_cflags=`$SDL_CONFIG --cflags` - ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" - ac_sdl_ldflags=`$SDL_CONFIG --libs` -+ ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} - LIBS="$LIBS $ac_sdl_ldflags" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unsupported SDL version" >&5 -diff -ruN pjsip/aconfigure.ac patch/aconfigure.ac ---- pjsip/aconfigure.ac 2024-09-03 11:24:53 -+++ patch/aconfigure.ac 2024-09-03 11:27:36 -@@ -763,10 +763,12 @@ - - AC_SUBST(ac_pjmedia_video) - --# Disable video on mingw -+# Disable video on mingw by default (but respect --enable-video=yes) - case $target in - *mingw*) -+ if test ! "$enable_video" = "yes"; then - enable_video="no" -+ fi - ;; - esac - -@@ -818,6 +820,18 @@ - fi - ac_android_cflags="$ac_android_cflags -DPJMEDIA_VIDEO_DEV_HAS_ANDROID=1" - ;; -+ *mingw*) -+ if test "$enable_video" = "yes"; then -+ ac_pjmedia_video=windows_os -+ AC_SUBST(ac_pjmedia_video_dev_has_dshow) -+ ac_pjmedia_video_dev_has_dshow=yes -+ AC_SUBST(ac_dshow_cflags) -+ ac_dshow_cflags="-DPJMEDIA_HAS_VIDEO=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1" -+ AC_SUBST(ac_dshow_ldflags) -+ ac_dshow_ldflags=" -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ LIBS="$LIBS -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " -+ fi -+ ;; - *darwin*) - ac_pjmedia_video=darwin_os - AC_SUBST(ac_pjmedia_video_has_darwin) -@@ -1072,6 +1086,7 @@ - ac_sdl_cflags=`$SDL_CONFIG --cflags` - ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" - ac_sdl_ldflags=`$SDL_CONFIG --libs` -+ ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} - LIBS="$LIBS $ac_sdl_ldflags" - else - AC_MSG_RESULT([Unsupported SDL version]) -diff -ruN pjsip/build.mak.in patch/build.mak.in ---- pjsip/build.mak.in 2024-09-03 11:24:53 -+++ patch/build.mak.in 2024-09-03 11:27:36 -@@ -200,13 +200,22 @@ - AC_PJMEDIA_VIDEO_HAS_IOS_OPENGL = @ac_pjmedia_video_has_ios_opengl@ - DARWIN_CFLAGS = @ac_darwin_cflags@ - -+# mingw -+AC_PJMEDIA_VIDEO_DEV_HAS_DSHOW = @ac_pjmedia_video_dev_has_dshow@ -+ifeq (@ac_pjmedia_video_dev_has_dshow@,yes) -+DSHOW_CFLAGS = @ac_dshow_cflags@ -+DSHOW_LDFLAGS = @ac_dshow_ldflags@ -+APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libbaseclasses-$(LIB_SUFFIX) -+APP_THIRD_PARTY_LIBS += -lbaseclasses-$(TARGET_NAME) -+endif -+ - # Android - ANDROID_CFLAGS = @ac_android_cflags@ - - # PJMEDIA features exclusion --PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ -+PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(DSHOW_CFLAGS) $(QT_CFLAGS) \ - $(OPENH264_CFLAGS) $(VPX_CFLAGS) $(DARWIN_CFLAGS) --PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ -+PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) $(DSHOW_LDFLAGS) \ - $(OPENH264_LDFLAGS) $(VPX_LDFLAGS) - - # CFLAGS, LDFLAGS, and LIBS to be used by applications -diff -ruN pjsip/pjmedia/build/os-auto.mak.in patch/pjmedia/build/os-auto.mak.in ---- pjsip/pjmedia/build/os-auto.mak.in 2024-09-03 11:24:53 -+++ patch/pjmedia/build/os-auto.mak.in 2024-09-03 11:27:36 -@@ -18,6 +18,10 @@ - V4L2_CFLAGS = @ac_v4l2_cflags@ - V4L2_LDFLAGS = @ac_v4l2_ldflags@ - -+# Directshow -+DSHOW_CFLAGS = @ac_dshow_cflags@ -+DSHOW_LDFLAGS = @ac_dshow_ldflags@ -+ - # QT - AC_PJMEDIA_VIDEO_HAS_QT = @ac_pjmedia_video_has_qt@ - # QT_CFLAGS = @ac_qt_cflags@ -@@ -39,10 +43,10 @@ - - # PJMEDIA features exclusion - export CFLAGS += @ac_no_small_filter@ @ac_no_large_filter@ @ac_no_speex_aec@ \ -- $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ -+ $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(DSHOW_CFLAGS) $(QT_CFLAGS) \ - $(DARWIN_CFLAGS) $(ANDROID_CFLAGS) \ - $(OPENH264_CFLAGS) $(VPX_CFLAGS) --export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ -+export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) $(DSHOW_LDFLAGS) \ - $(OPENH264_LDFLAGS) $(VPX_LDFLAGS) - - # Define the desired sound device backend -@@ -287,6 +291,14 @@ - # - ifeq ($(AC_PJMEDIA_VIDEO_HAS_IOS_OPENGL),yes) - export PJMEDIA_VIDEODEV_OBJS += ios_opengl_dev.o -+endif -+ -+# -+# Directshow video device -+# -+ifeq ($(AC_PJMEDIA_VIDEO_DEV_HAS_DSHOW),yes) -+export PJMEDIA_VIDEODEV_OBJS += dshow_dev.o dshowclasses.o -+export CFLAGS += -I$(THIRD_PARTY)/BaseClasses - endif - - # -diff -ruN pjsip/pjmedia/src/pjmedia-videodev/dshow_dev.c patch/pjmedia/src/pjmedia-videodev/dshow_dev.c ---- pjsip/pjmedia/src/pjmedia-videodev/dshow_dev.c 2024-09-03 11:24:53 -+++ patch/pjmedia/src/pjmedia-videodev/dshow_dev.c 2024-09-03 11:20:53 -@@ -38,6 +38,12 @@ - # define DIBSIZE(BI) ((BI).biHeight < 0 ? (-1)*(_DIBSIZE(BI)) : _DIBSIZE(BI)) - #endif - -+#ifdef _MSC_VER -+# pragma warning(pop) -+#else -+#include -+#endif -+ - #define THIS_FILE "dshow_dev.c" - #define DEFAULT_CLOCK_RATE 90000 - #define DEFAULT_WIDTH 640 -diff -ruN pjsip/pjsip/build/Makefile patch/pjsip/build/Makefile ---- pjsip/pjsip/build/Makefile 2020-02-14 10:48:27 -+++ patch/pjsip/build/Makefile 2024-09-03 11:27:49 -@@ -163,7 +163,7 @@ - export PJSUA2_TEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ - main.o - export PJSUA2_TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS) --export PJSUA2_TEST_CXXFLAGS = $(_CXXFLAGS) $(PJSUA2_LIB_CFLAGS) -+export PJSUA2_TEST_CXXFLAGS = $(_CXXFLAGS) $(PJSUA2_LIB_CFLAGS) $(PJ_VIDEO_CFLAGS) - export PJSUA2_TEST_LDFLAGS += $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS) - ifeq ($(EXCLUDE_APP),0) - export PJSUA2_TEST_EXE := pjsua2-test-$(TARGET_NAME)$(HOST_EXE) -@@ -182,7 +182,7 @@ - tsx_basic_test.o tsx_bench.o tsx_uac_test.o \ - tsx_uas_test.o txdata_test.o uri_test.o \ - inv_offer_answer_test.o --export TEST_CFLAGS += $(_CFLAGS) -+export TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS) - export TEST_CXXFLAGS += $(_CXXFLAGS) - export TEST_LDFLAGS += $(PJSIP_LDLIB) \ - $(PJSIP_UA_LDLIB) \ -diff -ruN pjsip/pjsip/src/pjsua2-test/main.cpp patch/pjsip/src/pjsua2-test/main.cpp ---- pjsip/pjsip/src/pjsua2-test/main.cpp 2020-02-14 10:48:27 -+++ patch/pjsip/src/pjsua2-test/main.cpp 2024-09-03 11:27:49 -@@ -20,6 +20,7 @@ - - using namespace pj; - -+extern "C" - int main(int argc, char *argv[]) - { - Endpoint ep; -diff -ruN pjsip/pjsip-apps/build/Samples.mak patch/pjsip-apps/build/Samples.mak ---- pjsip/pjsip-apps/build/Samples.mak 2020-02-14 10:48:27 -+++ patch/pjsip-apps/build/Samples.mak 2024-09-03 11:27:49 -@@ -7,8 +7,8 @@ - ############################################################################### - # Gather all flags. - # --export _CFLAGS := $(PJ_CFLAGS) $(CFLAGS) --export _CXXFLAGS:= $(PJ_CXXFLAGS) $(CFLAGS) -+export _CFLAGS := $(PJ_CFLAGS) $(CFLAGS) $(PJ_VIDEO_CFLAGS) -+export _CXXFLAGS:= $(PJ_CXXFLAGS) $(CFLAGS) $(PJ_VIDEO_CFLAGS) - export _LDFLAGS := $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) - export _LDXXFLAGS := $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS) - -diff -ruN pjsip/pjsip-apps/src/samples/pjsua2_demo.cpp patch/pjsip-apps/src/samples/pjsua2_demo.cpp ---- pjsip/pjsip-apps/src/samples/pjsua2_demo.cpp 2020-02-14 10:48:27 -+++ patch/pjsip-apps/src/samples/pjsua2_demo.cpp 2024-09-03 11:27:49 -@@ -410,6 +410,7 @@ - } - - -+extern "C" - int main() - { - int ret = 0; -diff -ruN pjsip/third_party/BaseClasses/amvideo2.h patch/third_party/BaseClasses/amvideo2.h ---- pjsip/third_party/BaseClasses/amvideo2.h 1970-01-01 01:00:00 -+++ patch/third_party/BaseClasses/amvideo2.h 2024-09-03 11:27:49 -@@ -0,0 +1,26 @@ -+/* -+ Some necessary macros are missing from mingw version. They are here. -+ See https://github.com/ofTheo/videoInput/blob/master/videoInputSrcAndDemos/libs/DShow/Include/amvideo.h -+*/ -+//------------------------------------------------------------------------------ -+// File: AMVideo.h -+// -+// Desc: Video related definitions and interfaces for ActiveMovie. -+// -+// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved. -+//------------------------------------------------------------------------------ -+ -+#define TRUECOLOR(pbmi) ((TRUECOLORINFO *)(((LPBYTE)&((pbmi)->bmiHeader)) \ -+ + (pbmi)->bmiHeader.biSize)) -+#define COLORS(pbmi) ((RGBQUAD *)(((LPBYTE)&((pbmi)->bmiHeader)) \ -+ + (pbmi)->bmiHeader.biSize)) -+ -+#define SIZE_MASKS (iMASK_COLORS * sizeof(DWORD)) -+#define SIZE_PREHEADER (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader)) -+ -+#define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) -+#define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount) -+#define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight) -+#define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi)) -+ -+#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= iPALETTE) -diff -ruN pjsip/third_party/BaseClasses/arithutil.cpp patch/third_party/BaseClasses/arithutil.cpp ---- pjsip/third_party/BaseClasses/arithutil.cpp 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/arithutil.cpp 2024-09-03 11:27:49 -@@ -21,7 +21,7 @@ - // Enlarged integer divide - 64-bits / 32-bits > 32-bits - // - --#ifndef _X86_ -+#if !defined(_X86_) || !defined(_MSC_VER) - - #define LLtoU64(x) (*(unsigned __int64*)(void*)(&(x))) - -diff -ruN pjsip/third_party/BaseClasses/sal2.h patch/third_party/BaseClasses/sal2.h ---- pjsip/third_party/BaseClasses/sal2.h 1970-01-01 01:00:00 -+++ patch/third_party/BaseClasses/sal2.h 2024-09-03 11:27:49 -@@ -0,0 +1,19 @@ -+/* -+ See https://github.com/RobertBeckebans/RBDOOM-3-BFG/blob/master/neo/libs/mingw-hacks/sal.h -+*/ -+/* From PortAudio, which is under MIT license: -+ * https://www.assembla.com/code/portaudio/subversion/nodes/portaudio/trunk/src/hostapi/wasapi/mingw-include/sal.h -+ */ -+#pragma once -+ -+#if __GNUC__ >=3 -+#pragma GCC system_header -+#endif -+ -+#define __in -+#define __out -+#define __deref_in -+#define __deref_inout_opt -+#define __field_ecount_opt(x) -+#define __in_bcount_opt(size) -+ -diff -ruN pjsip/third_party/BaseClasses/streams.h patch/third_party/BaseClasses/streams.h ---- pjsip/third_party/BaseClasses/streams.h 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/streams.h 2024-09-03 11:27:49 -@@ -23,6 +23,11 @@ - #else - #define AM_NOVTABLE - #endif -+#else -+ #include -+ #include -+ #define AM_NOVTABLE -+ #pragma GCC diagnostic ignored "-Wwrite-strings" - #endif // MSC_VER - - -@@ -193,6 +198,13 @@ - //#include // External device control interface defines - //#include // audio filter device error event codes - -+#ifndef _MSC_VER -+ -+#define min(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; }) -+#include -+ -+#endif -+ - - #else - #ifdef DEBUG -diff -ruN pjsip/third_party/BaseClasses/wxutil.cpp patch/third_party/BaseClasses/wxutil.cpp ---- pjsip/third_party/BaseClasses/wxutil.cpp 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/wxutil.cpp 2024-09-03 11:27:49 -@@ -384,7 +384,7 @@ - { - void * ret = dst; - --#ifdef _X86_ -+#if defined(_X86_) && defined(_MSC_VER) - if (dst <= src || (char *)dst >= ((char *)src + count)) { - - /* -@@ -432,6 +432,7 @@ - return ret; - } - -+#ifdef _MSC_VER - HRESULT AMSafeMemMoveOffset( - __in_bcount(dst_size) void * dst, - __in size_t dst_size, -@@ -458,6 +459,7 @@ - memmoveInternal( (BYTE *)dst+cb_dst_offset, (BYTE *)src+cb_src_offset, count); - return S_OK; - } -+#endif - - - #ifdef DEBUG -diff -ruN pjsip/third_party/BaseClasses/wxutil.h patch/third_party/BaseClasses/wxutil.h ---- pjsip/third_party/BaseClasses/wxutil.h 2020-02-14 10:48:27 -+++ patch/third_party/BaseClasses/wxutil.h 2024-09-03 11:27:49 -@@ -337,6 +337,7 @@ - } - }; - -+#ifdef _MSC_VER - // Ensures that memory is not read past the length source buffer - // and that memory is not written past the length of the dst buffer - // dst - buffer to copy to -@@ -358,13 +359,14 @@ - __in size_t src_size, - __in DWORD cb_src_offset, - __in size_t count); -+#endif - - extern "C" - void * __stdcall memmoveInternal(void *, const void *, size_t); - - inline void * __cdecl memchrInternal(const void *buf, int chr, size_t cnt) - { --#ifdef _X86_ -+#if defined(_X86_) && defined(_MSC_VER) - void *pRet = NULL; - - _asm { -diff -ruN pjsip/third_party/build/baseclasses/Makefile patch/third_party/build/baseclasses/Makefile ---- pjsip/third_party/build/baseclasses/Makefile 1970-01-01 01:00:00 -+++ patch/third_party/build/baseclasses/Makefile 2024-09-03 11:27:49 -@@ -0,0 +1,72 @@ -+include ../../../build.mak -+include ../../../build/common.mak -+ -+export LIBDIR := ../../lib -+ -+RULES_MAK := $(PJDIR)/build/rules.mak -+ -+export BASECLASSES_LIB := libbaseclasses-$(TARGET_NAME)$(LIBEXT) -+ -+ifeq ($(PJ_SHARED_LIBRARIES),) -+else -+export BASECLASSES_SONAME := libbaseclasses.$(SHLIB_SUFFIX) -+export BASECLASSES_SHLIB := $(BASECLASSES_SONAME).$(PJ_VERSION_MAJOR) -+endif -+ -+############################################################################### -+# Gather all flags. -+# -+export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ -+ $(CFLAGS) $(CC_INC)../../BaseClasses \ -+ $(CC_INC)../../../pjmedia/include $(CC_INC)../../../pjlib/include -+export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ -+ $(HOST_CXXFLAGS) $(CXXFLAGS) -+export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ -+ $(LDFLAGS) -+ -+export BASECLASSES_SRCDIR = ../../BaseClasses -+export BASECLASSES_OBJS = amfilter.o amvideo.o arithutil.o combase.o ctlutil.o \ -+ mtype.o renbase.o wxdebug.o wxlist.o \ -+ wxutil.o -+ -+export BASECLASSES_CFLAGS = $(_CFLAGS) -+export BASECLASSES_CXXFLAGS = -fpermissive -D__STRSAFE__NO_INLINE=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1 $(_CFLAGS) -+ -+ -+export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT -+############################################################################### -+# Main entry -+# -+# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. -+# -+TARGETS := $(BASECLASSES_LIB) $(BASECLASSES_SONAME) -+ -+all: $(TARGETS) -+ -+doc: -+ cd .. && doxygen docs/doxygen.cfg -+ -+dep: depend -+distclean: realclean -+ -+.PHONY: all dep depend clean realclean distclean -+.PHONY: $(TARGETS) -+.PHONY: $(BASECLASSES_LIB) $(BASECLASSES_SONAME) -+ -+libbaseclasses: $(BASECLASSES_LIB) -+$(BASECLASSES_SONAME): $(BASECLASSES_LIB) -+$(BASECLASSES_LIB) $(BASECLASSES_SONAME): -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -+ -+clean print_lib: -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ -+ -+realclean: -+ $(subst @@,$(subst /,$(HOST_PSEP),.ilbc-$(TARGET_NAME).depend),$(HOST_RMR)) -+ -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ -+ -+depend: -+ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ -+ -+ -diff -ruN pjsip/third_party/build/os-auto.mak.in patch/third_party/build/os-auto.mak.in ---- pjsip/third_party/build/os-auto.mak.in 2024-09-03 11:24:53 -+++ patch/third_party/build/os-auto.mak.in 2024-09-03 11:27:49 -@@ -39,6 +39,10 @@ - endif - endif - -+ifneq ($(findstring windows_os,@ac_pjmedia_video@),) -+DIRS += baseclasses -+endif -+ - ifneq (@ac_external_srtp@,0) - # External SRTP - else diff --git a/deps/patches/2.12/008_support_mingw_w64.patch b/deps/patches/2.12/008_support_mingw_w64.patch deleted file mode 100644 index 294a8d5d..00000000 --- a/deps/patches/2.12/008_support_mingw_w64.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff -ruN pjsip/Makefile pjsip-patch/Makefile ---- pjsip/Makefile 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/Makefile 2024-09-03 10:32:23.926160100 +0200 -@@ -129,10 +129,9 @@ - sed -e "s!@INCLUDEDIR@!$(includedir)!" | \ - sed -e "s!@LIBDIR@!$(libdir)!" | \ - sed -e "s/@PJ_VERSION@/$(PJ_VERSION)/" | \ -- sed -e "s!@PJ_LDLIBS@!!" | \ -- sed -e "s!@PJ_LDXXLIBS@!$(PJ_LDXXLIBS)!" | \ -- sed -e "s!@PJ_INSTALL_CFLAGS@!!" | \ -- sed -e "s!@PJ_INSTALL_CXXFLAGS@!$(PJ_INSTALL_CXXFLAGS)!" > $(DESTDIR)/$(libdir)/pkgconfig/libpjproject.pc -+ sed -e "s!@PJ_INSTALL_LDFLAGS@!$(PJ_INSTALL_LDFLAGS)!" | \ -+ sed -e "s!@PJ_INSTALL_LDFLAGS_PRIVATE@!$(PJ_INSTALL_LDFLAGS_PRIVATE)!" | \ -+ sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc - - uninstall: - $(RM) $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc -diff -ruN pjsip/aconfigure pjsip-patch/aconfigure ---- pjsip/aconfigure 2024-09-03 10:10:13.926165600 +0200 -+++ pjsip-patch/aconfigure 2024-09-03 10:32:23.941785600 +0200 -@@ -5156,6 +5156,12 @@ - - $as_echo "#define WIN32_LEAN_AND_MEAN 1" >>confdefs.h - -+ case $target in -+ *_64-w64-mingw* ) -+ $as_echo "#define PJ_WIN64 1" >>confdefs.h -+ -+ ;; -+ esac - ;; - *darwin*) - $as_echo "#define PJ_DARWINOS 1" >>confdefs.h -diff -ruN pjsip/aconfigure.ac pjsip-patch/aconfigure.ac ---- pjsip/aconfigure.ac 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/aconfigure.ac 2024-09-03 10:32:23.973036300 +0200 -@@ -161,6 +161,11 @@ - AC_DEFINE(PJ_WIN32,1) - AC_DEFINE(PJ_WIN32_WINNT,0x0400) - AC_DEFINE(WIN32_LEAN_AND_MEAN) -+ case $target in -+ *_64-w64-mingw* ) -+ AC_DEFINE(PJ_WIN64,1) -+ ;; -+ esac - ;; - *darwin*) - AC_DEFINE(PJ_DARWINOS,1) -diff -ruN pjsip/pjlib/include/pj/compat/os_auto.h.in pjsip-patch/pjlib/include/pj/compat/os_auto.h.in ---- pjsip/pjlib/include/pj/compat/os_auto.h.in 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/pjlib/include/pj/compat/os_auto.h.in 2024-09-03 10:32:23.988659900 +0200 -@@ -30,6 +30,7 @@ - #undef PJ_OS_NAME - - /* Legacy macros */ -+#undef PJ_WIN64 - #undef PJ_WIN32 - #undef PJ_WIN32_WINNT - #undef WIN32_LEAN_AND_MEAN -diff -ruN pjsip/pjnath/src/pjnath-test/stun_sock_test.c pjsip-patch/pjnath/src/pjnath-test/stun_sock_test.c ---- pjsip/pjnath/src/pjnath-test/stun_sock_test.c 2020-02-14 10:48:27.000000000 +0100 -+++ pjsip-patch/pjnath/src/pjnath-test/stun_sock_test.c 2024-09-03 10:32:23.988659900 +0200 -@@ -25,7 +25,6 @@ - RESPOND_STUN = 1, - WITH_MAPPED = 2, - WITH_XOR_MAPPED = 4, -- - ECHO = 8 - }; - diff --git a/get_dependencies.sh b/get_dependencies.sh old mode 100644 new mode 100755 index a6f6afcf..766bdd29 --- a/get_dependencies.sh +++ b/get_dependencies.sh @@ -1,7 +1,8 @@ -#!/bin/bash +#!/usr/bin/env bash +set -eu -o pipefail unamestr=$(uname) -if [[ "$unamestr" == 'Linux' ]]; then +if [[ "$unamestr" == 'Linux' && ${AUTOINSTALL:-1} != 0 ]]; then sudo apt install python3 dh-python python3-all-dev cython3 libasound2-dev \ python3-dateutil python3-dnspython libssl-dev libv4l-dev libavcodec-dev \ libavformat-dev libopencore-amrnb-dev libopencore-amrwb-dev libavutil-dev \ @@ -15,7 +16,7 @@ cd deps PJSIP_VERSION="${1:-2.10}" # -# Update PJSIP +# Update PJSIP # echo "Preparing PJSIP $PJSIP_VERSION sources..." if [ ! -f $PJSIP_VERSION.tar.gz ]; then @@ -76,21 +77,38 @@ cp ZRTPCPP/README.md ./pjsip/third_party/zsrtp/zrtp/ patches_dir="patches" -if [ -d patches/$PJSIP_VERSION ];then - patches_dir=patches/$PJSIP_VERSION +if [[ "${PJSIP_VERSION}" =~ [0-9]+\.[0-9]+ ]]; +then + PJSIP_VERSION_MINOR="${BASH_REMATCH[0]}" +else + PJSIP_VERSION_MINOR="${PJSIP_VERSION}" fi -uname -v|grep ARM64 |grep Darwin > /dev/null +if [ -d "patches/${PJSIP_VERSION_MINOR}" ]; +then + patches_dir="patches/${PJSIP_VERSION_MINOR}" +fi -if [ $? -eq 0 ]; then - rm $patches_dir/005_fix_ffmpeg.patch 2> /dev/null - rm $patches_dir/007_video_support_dshow_mingw.patch 2> /dev/null - rm $patches_dir/008_support_mingw_w64.patch 2> /dev/null +patches=( "${patches_dir}"/0*.patch ) + +# Remove unnecessary patches on aarch64-darwin +if uname -v | grep ARM64 | grep Darwin >/dev/null; +then + patches_subset=() + for path in "${patches[@]}"; + do + case "${path}" in + "${patches_dir}/005_fix_ffmpeg.patch") ;; + "${patches_dir}/007_video_support_dshow_mingw.patch") ;; + "${patches_dir}/008_support_mingw_w64.patch") ;; + *) patches_subset+=( "${path}" ) ;; + esac + done + patches=( "${patches_subset[@]}" ) fi -for p in $patches_dir/0*.patch; do - echo "Applying patch $p" - patch -p0 < $p > /dev/null +for p in "${patches[@]}"; +do + echo "Applying patch ${p}" + patch -p0 <"${p}" done - -cd - > /dev/null