Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Audio Video Signaling (AVS)

License

NotificationsYou must be signed in to change notification settings

wireapp/wire-avs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repository is part of the source code of Wire. You can find more information at wire.com or by contactingopensource@wire.com.

You can find the published source code at github.com/wireapp.

For licensing information, see the attached LICENSE file and the list of third-party licenses at wire.com/legal/licenses/.

Build Requirements

Apart from the basic toolchain for each system, you need these:

  • clang, libc++
  • readline (for building zcall, only)
  • yasm (for video only)
  • alsa (for Linux only).

ForOSX andiOS, you should have Xcode and the Command Line Toolsfor your specific version of both OSX and Xcode. Thingswill break ifyou have the wrong version. You can install the latter via menu Xcode,then Open Developer Tool, then More Developer Tools.

For getting autoconf, automake, libtool, readline and yasm, we suggestHomebrew.Follow the instructions there, then:

$ brew install \  autoconf \  automake \  jq \  libsodium \  libtool \  rust \  pkg-config \  protobuf-c \  readline

ForAndroid, you need both theAndroid SDK as well as theAndroid NDK.Just get the latest versions and install them somewhere cozy. You need toexport two environment variablesANDROID_SDK_ROOT andANDROID_NDK_ROOT pointing to the respective location. Unless you do aone-off, you probably want to add them to your.bash_profile.

ForLinux, you need to install the packages for the stuff mentionedabove or, of course, build it all from scratch. If you are on aDebian-esque system, do this:

$ sudo apt-get install \  autoconf \  automake \  clang \  libasound2-dev \  libc++-dev \  libc++abi-dev \  libevent-dev \  libprotobuf-c-dev \  libreadline-dev \  libsodium-dev \  libtool \  libx11-dev \  libxcomposite-dev \  libxdamage-dev \  libxrender-dev \  make \  pkgconf \  protobuf-c-compiler \  yasm \  zlib1g-dev \  zip$ curl -sSf https://static.rust-lang.org/rustup.sh| sh -s -- --channel=nightly

ForWindows, you will have to start by adding your system to the buildsystem. Good luck!

Build Instructions

AVS uses pre-built Google WebRTC by default that are pulled from theprebuilt webrtc repository as a part of the make process. For information about building your own WebRTC see the "Using a Locally Built WebRTC" section below.

AVS has more dependencies that need to be updated. The first time you need to fetch the submodules by doing:

$ ./prepare.sh

Next step is to build AVS itself. When building AVS with the prebuilt WebRTC, invoke make with:

make

This will build a selection of tools or your host machine. You probably wantzcall, the AVS command line client. You can only build that by sayingmake zcall. Similarly, you can build any other tool by giving its name to make.

The deliverables are being built with the commandmake dist.You can limit this to only select target platforms throughmake dist_android,make dist_osx andmake dist_ios. All of them take quite a while on afresh checkout.

You'll find the deliverables inbuild/dist/{android,ios,osx}.

You can also build just the wrappers for a given architecture by sayingmake wrappers AVS_OS=<os> AVS_ARCH=<arch> where<os> is one ofandroid,ios, orosx. There is no wrappers for Linux, so youare out of luck there. For<arch> there are several possible valuesdepending on the OS. You can just leave the whole thing out and willreceive reasonable defaults (ARMv7 or X86-64). Have a look atmk/target.mk for more on this.

If you want to have a local version of adist_* target that hasn'tall the necessary architectures but builds quicker, you can passDIST_ARCH=<your_arch> to make and will only built for thatarchitecture:

$ make dist_ios DIST_ARCH=arm64

will build an iOS distribution that will only contain arm64 instead ofthe usual five architectures.

Using a Locally Built WebRTC

It is possible to use your own locally built WebRTC libraries instead, by following the instructions in the readme file of theprebuilt webrtc repository.

Once built and packaged you should have the following files:

contrib/webrtc/webrtc_<version>_android.zipcontrib/webrtc/webrtc_<version>_headers.zipcontrib/webrtc/webrtc_<version>_ios.zipcontrib/webrtc/webrtc_<version>_linux.zipcontrib/webrtc/webrtc_<version>_osx.zip

These files should be copied to the contrib/webrtc directory and theWEBRTC_VER variable set when making AVS, for example:

make WEBRTC_VER=20200603.local

You can also modify the version set in themk/target.mk file, as follows:

ifeq ($(WEBRTC_VER),)WEBRTC_VER := 20200603.localendif

Runningmake should then unpack and use the locally built version of WebRTC.

Using the Library

During the build, a set of static libraries is being built. You can usethis library in your own projects.

You'll find the APIs ininclude/*.h.avs.h is your catchallinclude file. Always use that to protect yourself agains reorganizations.

Linking is a bit tricky, we'll add instructions soon. The easiest isprobably to addbuild/$(your-platform)/lib to your library path andthen add all.a files in there as-l arguments.

Using the Command Line Client (zcall)

Start the command line client provding the email address of an existingaccount using the-e option. You can switch to staging (aka dev) byadding the-D option and to edge by adding the-E option. Sincecaching is currently a little broken, you probably want to add the-foption, too. For further information on available options, try the everhelpful-h option.

Once started, hith to see a list of key strokes available andtype:help and enter to see a list of commands. All commands areentered by typing: first.

Creating a Client

The first thing you will need is a clientid. This can be done as follows:

:get_clients lists clients for this user, the current one for zcall is marked with a*:reg_client register a new client

There is a limit of 8 clients per user, if all are used you will need to remove one with:

:delete_cient <clientid>

Beware that there is no "are you sure" question, use this only if you know what you are doing! If you delete an in-use client by accident bad things may happen.

Managing Conversations

Keys for listing, selecting and showing conversations are:

l list conversations, the selected one is marked with->j select previous conversationk select next conversationi show selected conversation ID and members

You can also select a conversation with the:switch command and send basic chat messages to the selected conversation with:say

Calling

Keys for calling are:

c start a call in the selected conversationa answer the most recent incoming calle end/leave the callm toggle muteV toggle video sending

Incoming calls are indicated by the following line:

calling: incoming audio call in conv: Conversation (conference) from "test_user:0123456789abcdef" ring: yes ts: 1614244695

Architecture overview:

           .-----------.                            .---------.  .----------.           |   wcall   |                            | engine  |  | mediamgr |           '-----------'                            '---------'  '----------'            /    |    \                                  |  .-----------.  |  .-----------.   .----------.    .---------.  |  egcall   |  |  |   ccall   |---| keystore |    |  REST   |  '-----------'  |  '-----------'   '----------'    |  nevent |            \    |    /                             | protobuf|           .-----------.   .-----------.            '---------'           |   ecall   |---|  econn    |           '-----------'   '-----------'             /        \     mobile /          \ web  .-----------.     .-----------.  | peerflow  |     |  jsflow   |  '-----------'     '-----------'        |                 |  .-----------.     .-----------.  |webrtc(C++)|     | avs_pc(JS)|  | peerconn  |     '-----------'  '-----------'           |                    .-----------.                    | webrtc(JS)|                    | peerconn  |                    '-----------'    .------------------------------.    | Low-level utility modules:   |    | - audummy (Dummy audio-mod)  |    | - base (Base module)         |    | - cert (Certificates)        |    | - dict (Dictionary)          |    | - jzon (Json wrappers)       |    | - log (Logging framework)    |    | - queue (Packet queue)       |    | - sem (Semaphores)           |    | - store (Persistent Storage) |    | - trace (Tracing tool)       |    | - uuid (UUID helpers)        |    | - zapi (ZETA-protocol API)   |    | - ztime (Timestamp helpers)  |    '------------------------------'

Some specifications implemented:

Reporting bugs

When reporting bugs against AVS please include the following:

  • Wireshark PCAP trace (download Wireshark)
  • Full logs from client
  • Session-ID
  • Which Backend was used
  • Exact version of client
  • Exact time when call was started/stopped
  • Name/OS of device
  • Adb logcat for Android

Run-time libraries

FROM ubuntu:16.04RUN apt-get install -qqy --no-install-recommends
libprotobuf-c-dev
libc6-dev-i386
libreadline-dev
libx11-dev
libxcomposite-dev
libxdamage-dev
libxrender-dev
libc++-dev
libc++abi-dev

Upload to sonatype

To manually upload to sonatype create a local.properties with the following values:

sonatype.username=sonatype.password=signingKeyFile=<path to asc file>signingPassword=<gpg key passphrase>

About

Audio Video Signaling (AVS)

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors10


[8]ページ先頭

©2009-2025 Movatter.jp