jacktrip - a efficient solution for remote audio transmissionmusic/files/13spr/jacktrip... ·...

27
JackTrip A efficient solution for remote audio transmission Dalong Cheng<[email protected]> April 5, 2013

Upload: others

Post on 18-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

1/27

JackTrip

A efficient solution for remote audio transmission

Dalong Cheng<[email protected]>

April 5, 2013

Page 2: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Presentation Outline

1. Keyword, Concept Review

2. Challenges for Audio Transmission

3. JackTrip’s SolutionI MotivationI ArchitectureI Buffer DesignI Redundancy Design

4. A JackTrip’s ExtensionI MotivationI Evaluation MetricsI DesignI Implementation

2/27

Page 3: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

UDP

Figure: UDP3/27

Page 4: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

TCP

Figure: TCP4/27

Page 5: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

LAN & WAN

Figure: LAN & WAN

5/27

Page 6: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Process & Thread

Figure: Process Model

6/27

Page 7: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Process & Thread

Figure: Process with Multi-thread

7/27

Page 8: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Scheduling & Block & Non-Block

Figure: Architecture of HCMP8/27

Page 9: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Classic Multi-Thread Program Model

Figure: Single-Producer & Consumer Model

I More than one consumer thread (Thread Pool)

I What if more than one producer and consumer

9/27

Page 10: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Distributed Flavor

Figure: Architecture of HCMP

I A single node to receive all request

I Add a “dispatcher” to assign work

10/27

Page 11: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

“Universal” Distributed System Design Principle

1. Add another layer of indirection & abstraction

2. Add cahce & buffer

11/27

Page 12: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Problem Definition

1. WAN, Bi-directionl, Audio, Transimition

2. Similar Problems (Not Same!)I LAN Area Studio SystemI Uni-directional WAN Streaming

12/27

Page 13: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Objective

1. Latency Critical (25ms is upper bound!)

2. Maximize Audio Quality (Tradeoff)

Possible Solution

1. Compressed Audio

2. One way recording techniques

13/27

Page 14: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Audio Latency

1. Acoustic Delay

2. Analogue to Digital, Digital to Analogue Delay

3. Transmission Delay

4. Settings Chosen for Audio Quality(Etc. Sample Rate, Buffer,Packet Size)

I 96kHz Sample Rate, Audio Buffer 64 samples, deliver64/96000 * 1000 = 0.67ms

14/27

Page 15: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Basic Approach

I Transfer Uncompresssed Audio(require large bandwidth)

I Use UDP instead of TCPI TCP, Retransmission, Fix-Order, Ack-SchemeI Have to deal with UDP lost packet :(

I Ring buffer

15/27

Page 16: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Architecture - Sender

Figure: Sender

I Block if empty

I Ring buffer for share

16/27

Page 17: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Architecture - Receiver

Figure: Receiver

I Never block

I Ring buffer for share

17/27

Page 18: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Architecture - Whole Picture

Figure: Architecture

18/27

Page 19: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Ring Buffer Analysis

I Ring buffer is to Inter-thread CommunicationI InitializationI What is ideal situation, What is two possible consequence

Figure: Ring Buffer19/27

Page 20: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Consequence 1 - Underflow

I Vread > Vwrite

I Reason: packet lost or network jitter

I Solution: send slicent or last received packet

Figure: Ring Buffer Underflow

20/27

Page 21: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Consequence 2 - Overflow

I Vwrite > Vread

I Reason: clock drift, peer’s clock faster than local clock

I Solution: reset read position (drop samples)

Figure: Ring Buffer Overflow

21/27

Page 22: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

UDP’s Price - Redundancy

Figure: Redundancy

22/27

Page 23: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

A Interesting Extenion

Think of Such Scenario

I You have a muscian friend

I You build a tool for him to use

I He need to tune parameters everytime using the tool

I He don’t understand those parameters

23/27

Page 24: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Evaluation Metric

Figure: Karplus - Strong string model

I Pinging the network acoustically

I Lpsilaternal be server side

I Contralateral be client side

24/27

Page 25: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Server Architecture 1

Figure: Server Architecture1

I Pinging the network acousticallyI Lpsilaternal be server sideI Contralateral be client side

25/27

Page 26: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Server Architecture 2

Figure: Server Architecture2

26/27

Page 27: JackTrip - A efficient solution for remote audio transmissionmusic/files/13spr/JackTrip... · Figure:Architecture of HCMP I A single node to receive all request I Add a \dispatcher"

JackTrip

Review

Challenge

JackTrip

Extension

Summary

Summary

I Multi-thread model in audio

I Ring buffer

I Use ear to facilitate tuning parameters

27/27