Our voice over mesh protocol (VoMP) is mainly designed as a
replacement for SIP. It handles a similar state model; codec
negotiation, "I'm ringing", "they're ringing", in call with audio,
hangup. It's not really suitable for n-way communications.
We don't yet have any kind of voice mail system. And we've had a
number of requests for some kind of push-to-talk, group chat system as
well.
The idea I've been bouncing around for a while, is to include voice
messages into our text messaging UI. Incoming voice messages would be
listed between text messages and sorted based on arrival time. The
user would need some UI elements to control audio playback, and may
specify that incoming audio messages are played immediately. Playback
would be paused while the user is recording an outgoing message.
This neatly side-steps around the complexity an n-way voice
conferencing system would have. We don't have to worry about echo
cancellation, or mixing multiple incoming voice tracks together.
You can currently use our messaging interface to send broadcast text
messages. But it's a bit of a hack, and probably has some undiscovered
bugs. We plan to support encrypted private group messaging eventually.
We've talked about possible solutions, but we haven't started working
on anything yet.
Our current text messaging solution is built on rhizome, our store and
forward file transport service. Outgoing messages are appended to a
log file which is added / updated in rhizome. rhizome copies this new
file to other network neighbours, flooding the network. That way
messages should eventually arrive, even if there is no real-time path
to your intended recipient. It should work if their phone was off when
you sent the message, and yours is off when they turn theirs on again.
But using rhizome also adds to the latency between sending and
arrival. Something that could be annoying with a push-to-talk system
as the network transfer wouldn't start until the entire message was
recorded. Streaming a new message while it's being recorded could be
useful, but we should always fall back to transferring via rhizome for
the extra resilience it offers.
If we're going to modify our text messaging service again, we really
want to rip out the file parsing code & message database from the
android / java code and shift all of that directly into servald. When
the user opens the activity to view a message thread, the android code
should be able to implement a Cursor to browse the messages directly
out of the message log in the rhizome content store. Shifting this
processing into servald will also help when we start porting this
service to other platforms.
On Sat, Oct 6, 2012 at 5:37 AM, ®om <
romain...@gmail.com> wrote:
> According to §2.5, I have the impression that collision is a problem for
> messages greater than 1K: will it work for an audio stream ?
I don't believe that packet size has much effect on collisions on
wifi. I believe two transmitters can only collide if they start
sending a packet at the same time, otherwise they'll hear each other
and wont transmit even if they are slightly out of range of each
other. But packet length could effect the resilience to other sources
of interference.
> On the contrary, §2.7 plans to allow live video streaming (broadcasting).
>
> How would you do that ?
Live video streaming isn't really supported on android. The SDK
interfaces are all designed around recording media files for later
playback.
There are approaches that might work on some phones. eg;
http://code.google.com/p/spydroid-ipcamera/
But we don't have any current plans to implement anything.
We could certainly add the option to automatically share recorded
videos and photos via rhizome, but we have to be careful about disk
space limits.
> Thank you for your lights ;-)
Keep asking good questions, and we'll keep trying to answer them.