Files
haikuports/net-im/telegram-desktop/patches/telegram_desktop-1.3.0-libtgvoip.patchset
2018-06-03 10:29:02 +10:00

426 lines
13 KiB
Plaintext

From 03e063f72e9495ce1974aa41b4e708abf3695796 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 25 May 2018 22:46:39 +1000
Subject: Fix opus header path
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/OpusDecoder.h b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/OpusDecoder.h
index 69346ee..5cd00dc 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/OpusDecoder.h
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/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-00851dc6346d9c1e02d09885029e5ba32a4094e8/OpusEncoder.h b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/OpusEncoder.h
index aaf3da1..b86d6f6 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/OpusEncoder.h
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/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.16.2
From d135d442d303ba2cf2ed93256c2833205c31e7de Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 25 May 2018 22:49:20 +1000
Subject: Add haiku support
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioInput.cpp b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioInput.cpp
index 062ca06..348d13c 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioInput.cpp
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioInput.cpp
@@ -22,6 +22,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-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioOutput.cpp b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioOutput.cpp
index da964ec..b19c5ce 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioOutput.cpp
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/audio/AudioOutput.cpp
@@ -25,6 +25,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-00851dc6346d9c1e02d09885029e5ba32a4094e8/libtgvoip.gyp b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/libtgvoip.gyp
index 5ff19f6..9523ea3 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/libtgvoip.gyp
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/libtgvoip.gyp
@@ -87,18 +87,12 @@
'<(tgvoip_src_loc)/os/darwin/AudioUnitIO.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',
@@ -258,6 +252,11 @@
'sources/': [['exclude', '<(tgvoip_src_loc)/os/darwin/']],
},
],
+ [
+ '"<(OS)" != "haiku"', {
+ 'sources/': [['exclude', '<(tgvoip_src_loc)/os/haiku/']],
+ },
+ ],
[
'"<(OS)" != "linux"', {
'sources/': [['exclude', '<(tgvoip_src_loc)/os/linux/']],
@@ -377,6 +376,22 @@
},
},
],
+ [
+ '"<(OS)" == "haiku"', {
+ 'defines': [
+ 'WEBRTC_POSIX',
+ ],
+ 'cflags_cc': [
+ '-msse2',
+ '-std=gnu++14',
+ ],
+ 'direct_dependent_settings': {
+ 'libraries': [
+
+ ],
+ },
+ },
+ ],
[
'"<(OS)" == "linux"', {
'defines': [
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioInputHaiku.cpp b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioInputHaiku.cpp
new file mode 100644
index 0000000..7651b3d
--- /dev/null
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/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* arg){
+}
+
+void AudioInputHaiku::SetCurrentDevice(std::string devID){
+}
+
+void AudioInputHaiku::EnumerateDevices(std::vector<AudioInputDevice>& devs){
+}
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioInputHaiku.h b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioInputHaiku.h
new file mode 100644
index 0000000..2980e71
--- /dev/null
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioInputHaiku.h
@@ -0,0 +1,35 @@
+//
+// 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(void* arg);
+ bool isRecording;
+};
+
+}
+}
+
+#endif //LIBTGVOIP_AUDIOINPUTALSA_H
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioOutputHaiku.cpp b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioOutputHaiku.cpp
new file mode 100644
index 0000000..2233257
--- /dev/null
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/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* arg){
+}
+
+void AudioOutputHaiku::SetCurrentDevice(std::string devID){
+}
+
+void AudioOutputHaiku::EnumerateDevices(std::vector<AudioOutputDevice>& devs){
+}
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioOutputHaiku.h b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioOutputHaiku.h
new file mode 100644
index 0000000..e368b05
--- /dev/null
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/haiku/AudioOutputHaiku.h
@@ -0,0 +1,35 @@
+//
+// 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(void* arg);
+ bool isPlaying;
+};
+
+}
+}
+
+#endif //LIBTGVOIP_AudioOutputHaiku_H
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/posix/NetworkSocketPosix.cpp b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/posix/NetworkSocketPosix.cpp
index 2bacfa4..a2e160f 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/posix/NetworkSocketPosix.cpp
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/os/posix/NetworkSocketPosix.cpp
@@ -47,6 +47,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));
@@ -65,6 +66,7 @@ void NetworkSocketPosix::SetMaxPriority(){
LOGE("error setting ip tos: %d / %s", errno, strerror(errno));
}
#endif
+#endif //__HAIKU__
}
void NetworkSocketPosix::Send(NetworkPacket *packet){
@@ -306,6 +308,10 @@ void NetworkSocketPosix::OnActiveInterfaceChanged(){
}
std::string NetworkSocketPosix::GetLocalInterfaceInfo(IPv4Address *v4addr, IPv6Address *v6addr){
+#ifdef __HAIKU__
+ std::string name="";
+ return name;
+#else
#ifdef __ANDROID__
char sdkNum[PROP_VALUE_MAX];
__system_property_get("ro.build.version.sdk", sdkNum);
@@ -397,6 +403,7 @@ std::string NetworkSocketPosix::GetLocalInterfaceInfo(IPv4Address *v4addr, IPv6A
close(sd);
}
return name;
+#endif
}
uint16_t NetworkSocketPosix::GetLocalPort(){
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/threading.h b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/threading.h
index 0b4933c..adc69b5 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/threading.h
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/threading.h
@@ -33,7 +33,7 @@ namespace tgvoip{
};
}
-#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>
@@ -94,11 +94,13 @@ namespace tgvoip{
static void* ActualEntryPoint(void* arg){
Thread* self=reinterpret_cast<Thread*>(arg);
if(self->name){
+#ifndef __HAIKU__
#ifndef __APPLE__
pthread_setname_np(self->thread, self->name);
#else
pthread_setname_np(self->name);
#endif
+#endif //__HAIKU__
}
self->entry->Invoke(self->arg);
return NULL;
diff --git a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
index c9c4e65..9d93596 100644
--- a/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
+++ b/libtgvoip-00851dc6346d9c1e02d09885029e5ba32a4094e8/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.16.2