mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-06 06:58:57 +02:00
426 lines
13 KiB
Plaintext
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
|
|
|