Skip to content

Commit

Permalink
Add source files from old repository.
Browse files Browse the repository at this point in the history
  • Loading branch information
slomkowski committed Oct 25, 2015
1 parent 261df11 commit 6b846af
Show file tree
Hide file tree
Showing 17 changed files with 2,549 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,9 @@
*.exe
*.out
*.app

build/

# IntelliJ
*.iml
.idea/
59 changes: 59 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
cmake_minimum_required(VERSION 3.1.1)
project(libmumble)

list(APPEND CMAKE_C_FLAGS " -std=c99 -g -Wall -pedantic ${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-DOPT_TLS_GNUTLS -D_POSIX_C_SOURCE=200112L)

INCLUDE(FindPkgConfig)
find_package(PkgConfig REQUIRED)
find_package(Boost COMPONENTS system unit_test_framework program_options filesystem REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(Protobuf REQUIRED)

pkg_check_modules(LOG4CPP "log4cpp")
pkg_check_modules(OPUS "opus")


INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
include_directories(${OPENSSL_INCLUDE_DIR})
include_directories(${PROTOBUF_INCLUDE_DIRS})
include_directories(${OPUS_INCLUDE_DIRS})

include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${LOG4CPP_INCLUDE_DIRS})
include_directories(include)

file(GLOB ProtoFiles "mumble.proto")

set(MUMLIB_PUBLIC_HEADERS include/mumlib.hpp include/mumlib/VarInt.hpp)

set(MUMLIB_PRIVATE_HEADERS
include/mumlib/Callback.hpp
include/mumlib/CryptState.hpp
include/mumlib/Transport.hpp
include/mumlib/Audio.hpp
include/mumlib/enums.hpp
)

set(MUMLIB_SRC
src/mumlib.cpp
src/Callback.cpp
src/CryptState.cpp
src/VarInt.cpp
src/Transport.cpp
src/Audio.cpp
)

PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS mumble.proto)

add_library(mumlib SHARED ${MUMLIB_SRC} ${MUMLIB_PUBLIC_HEADERS} ${MUMLIB_PRIVATE_HEADERS} ${PROTO_SRCS} ${PROTO_HDRS})
target_link_libraries(mumlib ${PROTOBUF_LIBRARIES})
target_link_libraries(mumlib ${Boost_LIBRARIES})
target_link_libraries(mumlib ${OPENSSL_LIBRARIES})
target_link_libraries(mumlib ${LOG4CPP_LIBRARIES})
target_link_libraries(mumlib ${OPUS_LIBRARIES})


add_executable(mumlib_example mumlib_example.cpp)
target_link_libraries(mumlib_example mumlib)
47 changes: 47 additions & 0 deletions include/mumlib.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#pragma once

#include "mumlib/Callback.hpp"

#include <boost/asio.hpp>
#include <boost/noncopyable.hpp>

#include <string>
#include <mumlib/enums.hpp>

namespace mumlib {

using namespace std;
using namespace boost::asio;

class MumlibException : public runtime_error {
public:
MumlibException(string message) : runtime_error(message) { }
};

struct _Mumlib_Private;


class Mumlib : boost::noncopyable {
public:
Mumlib();

Mumlib(io_service &ioService);

~Mumlib();

void setCallback(Callback &callback);

void connect(string host, int port, string user, string password);

void disconnect();

void run();

ConnectionState getConnectionState();

void sendAudioData(int16_t *pcmData, int pcmLength);

private:
_Mumlib_Private *impl;
};
}
41 changes: 41 additions & 0 deletions include/mumlib/Audio.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#pragma once

#include "Transport.hpp"

#include <opus.h>

namespace mumlib {

constexpr int SAMPLE_RATE = 48000;

class AudioException : public MumlibException {
public:
AudioException(string message) : MumlibException(message) { }
};

class Audio : boost::noncopyable {
public:
Audio();

~Audio();


int decodeAudioPacket(AudioPacketType type, uint8_t *inputBuffer, int inputLength, int16_t *pcmBuffer,
int pcmBufferSize);

int encodeAudioPacket(
int target,
int16_t *inputPcmBuffer,
int inputLength,
uint8_t *outputBuffer,
int outputBufferSize = MAX_UDP_LENGTH);

private:
log4cpp::Category &logger;

OpusDecoder *opusDecoder;
OpusEncoder *opusEncoder;

int64_t outgoingSequenceNumber;
};
}
Loading

0 comments on commit 6b846af

Please sign in to comment.