Re: [Jack-Devel] netjack audio routing from smart OSs (IOS and Android)

PrevNext  Index
DateThu, 26 Mar 2015 20:54:05 +0100
From Christian Schoenebeck <[hidden] at crudebyte dot com>
To[hidden] at lists dot jackaudio dot org
In-Reply-ToTobias Hoffmann Re: [Jack-Devel] netjack audio routing from smart OSs (IOS and Android)
On Thursday 26 March 2015 16:47:15 Tobias Hoffmann wrote:
> I think we have to distinguish between Jack (as audio router) and
> Netjack (as protocol):
> * Porting the Jack server to iOS has been done, but due to iOS changes
> it cannot be used any more.
> * But iOS instead now has an API for "Inter-App Audio".

Note though that Inter-App Audio (IAA) is a lite-weight plugin-like solution 
specifically designed for iOS. You do not have much routing freedom with IAA, 
compared to i.e. JACK. And most IAA host apps on iOS are quite restricted as 
well. You are also not able to launch several instances of a so called "IAA 
Node" (plugin) on the entire system. So there are a lot of restrictions with 
IAA. It is *not* comparable with desktop plugin solutions like LV2, VST, AU, 
RTAS.

> Using the (quite simple) netjack1 protocol "standalone" (e.g. by
> reimplementing it - no licensing problems here) and providing it as
> "Netjack audio source" could work.

Sure you can re-implement everything with the same protocol. But who would do 
that? And even if somebody does, he must still take care of license issues:
He must not use any kind of GPL/LGPL based components from other people. And 
if somebody else wants to contribute to his iOS app, then all those persons 
must either transfer their copyright to him or they must release their 
contributions under a less restrictive license (i.e. a BSD style one).

> I'm not sure about possible clock issues; I think using the iOS device
> as "netjack master" should work.
> When the netjack protocol handling is statically embedded to be used
> only in a certain application, this is probably even less of a problem.

The technical problem here is that you have a lot of packet losses with WLAN. 
So you cannot compare the stability with wired Ethernet at all. Accordingly 
you probably must live with a reasonably high latency of 40ms(?) or so. There 
are a bunch of people on this list who know the numbers better than I do.

> Using the device as "netjack slave" (i.e. "jackd -d net") forces the
> masters clock onto the device while e.g. the audio hardware of the iPad
> has it's own idea of timing.
> 
> * Wrt. to Android, I don't know much about this MediaRouter class....
> Still, implementing the netjack protocol inside a single application is
> possible (and you already mentioned Jack for Android).

Java based callbacks don't make sense. You need to use a native (NDK) based 
solution for real-time audio parts. You would not use Objective-C on iOS for 
real-time audio stuff either.

CU
Christian
PrevNext  Index

1427403244.2010_0.ltw:2, <201503262054.05886.schoenebeck at crudebyte dot com>