Files
haikuports/net-im/telegram-desktop/patches/telegram_desktop-1.1.23-libtgvoip.patchset
2017-12-12 18:13:01 +03:00

453 lines
14 KiB
Plaintext

From ec7bde5fd17969a08b8149785445ecb69b09c729 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 15 Sep 2017 22:18:56 +1000
Subject: Fix opus header path
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusDecoder.h b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusDecoder.h
index 51bbbac..31c8b29 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusDecoder.h
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusDecoder.h
@@ -9,7 +9,11 @@
#include "MediaStreamItf.h"
+#ifdef __HAIKU__
+#include <opus/opus.h>
+#else
#include "opus.h"
+#endif
#include "threading.h"
#include "BlockingQueue.h"
#include "BufferPool.h"
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusEncoder.h b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusEncoder.h
index 9329f89..b2a9305 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusEncoder.h
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/OpusEncoder.h
@@ -9,7 +9,11 @@
#include "MediaStreamItf.h"
+#ifdef __HAIKU__
+#include <opus/opus.h>
+#else
#include "opus.h"
+#endif
#include "threading.h"
#include "BlockingQueue.h"
#include "BufferPool.h"
--
2.13.1
From 11ec9121c35bcf4127ff2e982329ba2c354d0259 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 15 Sep 2017 22:22:31 +1000
Subject: Add haiku
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioInput.cpp b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioInput.cpp
index 674b955..6021425 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioInput.cpp
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioInput.cpp
@@ -23,6 +23,8 @@
#elif defined(__linux__)
#include "../os/linux/AudioInputALSA.h"
#include "../os/linux/AudioInputPulse.h"
+#elif defined(__HAIKU__)
+#include "../os/haiku/AudioInputHaiku.h"
#else
#error "Unsupported operating system"
#endif
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioOutput.cpp b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioOutput.cpp
index 4f5fdfa..a0409e6 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioOutput.cpp
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/audio/AudioOutput.cpp
@@ -24,6 +24,8 @@
#elif defined(__linux__)
#include "../os/linux/AudioOutputALSA.h"
#include "../os/linux/AudioOutputPulse.h"
+#elif defined(__HAIKU__)
+#include "../os/haiku/AudioOutputHaiku.h"
#else
#error "Unsupported operating system"
#endif
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/libtgvoip.gyp b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/libtgvoip.gyp
index 52fbea1..6a44ab3 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/libtgvoip.gyp
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/libtgvoip.gyp
@@ -81,18 +81,12 @@
'<(tgvoip_src_loc)/os/darwin/AudioOutputAudioUnitOSX.h',
'<(tgvoip_src_loc)/os/darwin/DarwinSpecific.mm',
'<(tgvoip_src_loc)/os/darwin/DarwinSpecific.h',
-
- # Linux
- '<(tgvoip_src_loc)/os/linux/AudioInputALSA.cpp',
- '<(tgvoip_src_loc)/os/linux/AudioInputALSA.h',
- '<(tgvoip_src_loc)/os/linux/AudioOutputALSA.cpp',
- '<(tgvoip_src_loc)/os/linux/AudioOutputALSA.h',
- '<(tgvoip_src_loc)/os/linux/AudioOutputPulse.cpp',
- '<(tgvoip_src_loc)/os/linux/AudioOutputPulse.h',
- '<(tgvoip_src_loc)/os/linux/AudioInputPulse.cpp',
- '<(tgvoip_src_loc)/os/linux/AudioInputPulse.h',
- '<(tgvoip_src_loc)/os/linux/PulseAudioLoader.cpp',
- '<(tgvoip_src_loc)/os/linux/PulseAudioLoader.h',
+
+ # Haiku
+ '<(tgvoip_src_loc)/os/haiku/AudioInputHaiku.cpp',
+ '<(tgvoip_src_loc)/os/haiku/AudioInputHaiku.h',
+ '<(tgvoip_src_loc)/os/haiku/AudioOutputHaiku.cpp',
+ '<(tgvoip_src_loc)/os/haiku/AudioOutputHaiku.h',
# POSIX
'<(tgvoip_src_loc)/os/posix/NetworkSocketPosix.cpp',
@@ -253,6 +247,11 @@
},
],
[
+ '"<(OS)" != "haiku"', {
+ 'sources/': [['exclude', '<(tgvoip_src_loc)/os/haiku/']],
+ },
+ ],
+ [
'"<(OS)" != "linux"', {
'sources/': [['exclude', '<(tgvoip_src_loc)/os/linux/']],
},
@@ -371,6 +370,22 @@
},
],
[
+ '"<(OS)" == "haiku"', {
+ 'defines': [
+ 'WEBRTC_POSIX',
+ ],
+ 'cflags_cc': [
+ '-msse2',
+ '-std=gnu++14',
+ ],
+ 'direct_dependent_settings': {
+ 'libraries': [
+
+ ],
+ },
+ },
+ ],
+ [
'"<(OS)" == "linux"', {
'defines': [
'WEBRTC_POSIX',
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioInputHaiku.cpp b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioInputHaiku.cpp
new file mode 100644
index 0000000..0bf2433
--- /dev/null
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioInputHaiku.cpp
@@ -0,0 +1,52 @@
+//
+// libtgvoip is free and unencumbered public domain software.
+// For more information, see http://unlicense.org or the UNLICENSE file
+// you should have received with this source code distribution.
+//
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <dlfcn.h>
+#include "AudioInputHaiku.h"
+#include "../../logging.h"
+#include "../../VoIPController.h"
+
+using namespace tgvoip::audio;
+
+
+AudioInputHaiku::AudioInputHaiku(std::string devID){
+ isRecording=false;
+ failed=true;
+ return;
+}
+
+AudioInputHaiku::~AudioInputHaiku(){
+}
+
+void AudioInputHaiku::Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels){
+
+}
+
+void AudioInputHaiku::Start(){
+ if(failed || isRecording)
+ return;
+
+ isRecording=true;
+}
+
+void AudioInputHaiku::Stop(){
+ if(!isRecording)
+ return;
+
+ isRecording=false;
+}
+
+void AudioInputHaiku::RunThread(){
+}
+
+void AudioInputHaiku::SetCurrentDevice(std::string devID){
+}
+
+void AudioInputHaiku::EnumerateDevices(std::vector<AudioInputDevice>& devs){
+}
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioInputHaiku.h b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioInputHaiku.h
new file mode 100644
index 0000000..e268ee5
--- /dev/null
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioInputHaiku.h
@@ -0,0 +1,36 @@
+//
+// libtgvoip is free and unencumbered public domain software.
+// For more information, see http://unlicense.org or the UNLICENSE file
+// you should have received with this source code distribution.
+//
+
+#ifndef LIBTGVOIP_AUDIOINPUTHAIKU_H
+#define LIBTGVOIP_AUDIOINPUTHAIKU_H
+
+#include "../../audio/AudioInput.h"
+#include "../../threading.h"
+
+namespace tgvoip{
+namespace audio{
+
+class AudioInputHaiku : public AudioInput{
+
+public:
+ AudioInputHaiku(std::string devID);
+ virtual ~AudioInputHaiku();
+ virtual void Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels);
+ virtual void Start();
+ virtual void Stop();
+ virtual void SetCurrentDevice(std::string devID);
+ static void EnumerateDevices(std::vector<AudioInputDevice>& devs);
+
+private:
+ void RunThread();
+ tgvoip_thread_t thread;
+ bool isRecording;
+};
+
+}
+}
+
+#endif //LIBTGVOIP_AUDIOINPUTALSA_H
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioOutputHaiku.cpp b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioOutputHaiku.cpp
new file mode 100644
index 0000000..c5d88b4
--- /dev/null
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioOutputHaiku.cpp
@@ -0,0 +1,54 @@
+//
+// libtgvoip is free and unencumbered public domain software.
+// For more information, see http://unlicense.org or the UNLICENSE file
+// you should have received with this source code distribution.
+//
+
+
+#include <assert.h>
+#include <dlfcn.h>
+#include "AudioOutputHaiku.h"
+#include "../../logging.h"
+#include "../../VoIPController.h"
+
+using namespace tgvoip::audio;
+
+AudioOutputHaiku::AudioOutputHaiku(std::string devID){
+ isPlaying=false;
+ failed=true;
+ return;
+}
+
+AudioOutputHaiku::~AudioOutputHaiku(){
+}
+
+void AudioOutputHaiku::Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels){
+
+}
+
+void AudioOutputHaiku::Start(){
+ if(failed || isPlaying)
+ return;
+
+ isPlaying=true;
+}
+
+void AudioOutputHaiku::Stop(){
+ if(!isPlaying)
+ return;
+
+ isPlaying=false;
+}
+
+bool AudioOutputHaiku::IsPlaying(){
+ return isPlaying;
+}
+
+void AudioOutputHaiku::RunThread(){
+}
+
+void AudioOutputHaiku::SetCurrentDevice(std::string devID){
+}
+
+void AudioOutputHaiku::EnumerateDevices(std::vector<AudioOutputDevice>& devs){
+}
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioOutputHaiku.h b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioOutputHaiku.h
new file mode 100644
index 0000000..759e867
--- /dev/null
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/haiku/AudioOutputHaiku.h
@@ -0,0 +1,36 @@
+//
+// libtgvoip is free and unencumbered public domain software.
+// For more information, see http://unlicense.org or the UNLICENSE file
+// you should have received with this source code distribution.
+//
+
+#ifndef LIBTGVOIP_AUDIOOUTPUTHAIKU_H
+#define LIBTGVOIP_AUDIOOUTPUTHAIKU_H
+
+#include "../../audio/AudioOutput.h"
+#include "../../threading.h"
+
+namespace tgvoip{
+namespace audio{
+
+class AudioOutputHaiku : public AudioOutput{
+public:
+ AudioOutputHaiku(std::string devID);
+ virtual ~AudioOutputHaiku();
+ virtual void Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels);
+ virtual void Start();
+ virtual void Stop();
+ virtual bool IsPlaying();
+ virtual void SetCurrentDevice(std::string devID);
+ static void EnumerateDevices(std::vector<AudioOutputDevice>& devs);
+
+private:
+ void RunThread();
+ tgvoip_thread_t thread;
+ bool isPlaying;
+};
+
+}
+}
+
+#endif //LIBTGVOIP_AudioOutputHaiku_H
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/posix/NetworkSocketPosix.cpp b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/posix/NetworkSocketPosix.cpp
index 7fa7063..0b90f8a 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/posix/NetworkSocketPosix.cpp
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/os/posix/NetworkSocketPosix.cpp
@@ -39,6 +39,7 @@ NetworkSocketPosix::~NetworkSocketPosix(){
}
void NetworkSocketPosix::SetMaxPriority(){
+#ifndef __HAIKU__
#ifdef __APPLE__
int prio=NET_SERVICE_TYPE_VO;
int res=setsockopt(fd, SOL_SOCKET, SO_NET_SERVICE_TYPE, &prio, sizeof(prio));
@@ -57,6 +58,7 @@ void NetworkSocketPosix::SetMaxPriority(){
LOGE("error setting ip tos: %d / %s", errno, strerror(errno));
}
#endif
+#endif
}
void NetworkSocketPosix::Send(NetworkPacket *packet){
@@ -295,6 +297,10 @@ void NetworkSocketPosix::OnActiveInterfaceChanged(){
}
std::string NetworkSocketPosix::GetLocalInterfaceInfo(IPv4Address *v4addr, IPv6Address *v6addr){
+#ifdef __HAIKU__
+ std::string name="";
+ return name;
+#else
struct ifconf ifc;
struct ifreq* ifr;
char buf[16384];
@@ -344,6 +350,7 @@ std::string NetworkSocketPosix::GetLocalInterfaceInfo(IPv4Address *v4addr, IPv6A
}
close(sd);
return name;
+#endif
}
uint16_t NetworkSocketPosix::GetLocalPort(){
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/threading.h b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/threading.h
index 8a6f438..c45d3fb 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/threading.h
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/threading.h
@@ -7,7 +7,7 @@
#ifndef __THREADING_H
#define __THREADING_H
-#if defined(_POSIX_THREADS) || defined(_POSIX_VERSION) || defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))
+#if defined(_POSIX_THREADS) || defined(_POSIX_VERSION) || defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)) || defined(__HAIKU__)
#include <pthread.h>
#include <semaphore.h>
@@ -19,7 +19,7 @@ typedef pthread_cond_t tgvoip_lock_t;
#define start_thread(ref, entry, arg) pthread_create(&ref, NULL, entry, arg)
#define join_thread(thread) pthread_join(thread, NULL)
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__HAIKU__)
#define set_thread_name(thread, name) pthread_setname_np(thread, name)
#else
#define set_thread_name(thread, name)
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
index c9c4e65..9d93596 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
@@ -99,7 +99,12 @@ static void once(void (*func)(void)) {
static pthread_once_t lock = PTHREAD_ONCE_INIT;
pthread_once(&lock, func);
}
-
+#elif defined(__HAIKU__)
+#include <pthread.h>
+static void once(void (*func)(void)) {
+ static pthread_once_t lock = PTHREAD_ONCE_INIT;
+ pthread_once(&lock, func);
+}
#elif defined(_WIN32)
#include <windows.h>
--
2.13.1
From 7e861e2b3c0d02e0fabdab46b9e5f88b56585716 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 18 Sep 2017 22:05:53 +1000
Subject: Fix for crash when calls
diff --git a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/VoIPController.cpp b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/VoIPController.cpp
index 78e9e4b..a9c34b7 100644
--- a/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/VoIPController.cpp
+++ b/libtgvoip-757a5d8ec31aadcf387ac3cb135256152c18de1c/VoIPController.cpp
@@ -276,6 +276,7 @@ VoIPController::~VoIPController(){
sendQueue->Put(PendingOutgoingPacket{0});
if(openingTcpSocket)
openingTcpSocket->Close();
+#ifndef __HAIKU__
LOGD("before join sendThread");
join_thread(sendThread);
LOGD("before join recvThread");
@@ -284,6 +285,7 @@ VoIPController::~VoIPController(){
join_thread(tickThread);
free_mutex(sendBufferMutex);
LOGD("before close socket");
+#endif
if(udpSocket)
delete udpSocket;
if(udpSocket!=realUdpSocket)
--
2.13.1