2014-01-31 3 views
0

Я понимаю поток buffer полезен для IO в целом.Stream Buffer для голосового чата/voIP?

Я хотел бы спросить, как buffer следует использовать в режиме реального времени Voip приложений, , такие как поток в (Android) MediaRecorder выход -> LocalSocket -> UDP/RTP

Для меня это выглядит как там нет пространство для буфера любого потока.

Правильно ли я? или я пропускаю что-то важное?

Как об эффективности ресурса устройства (CPU & Buttery), когда не использовать буфер в этом случае?

псевдокод

//UNIX type localSocket Server to receive stream from mediaRecorder 
server = new LocalServerSocket(SOCKET_ADDRESS); 

// local socket between mediaRecorder and localSocket Server 
sender = new LocalSocket(); 
sender.connect(new LocalSocketAddress(SOCKET_ADDRESS)); 
//mediaRecorder 
mRecorder = new MediaRecorder(); 
//..................... 
//sender.getFileDescriptor() is set as the vitual Outputfile 
mRecorder.setOutputFile(sender.getFileDescriptor()); 
mRecorder.prepare(); 
mRecorder.start(); 

//localSocket Server accept the stream to receiver 
receiver = server.accept(); 

int val; 
byte[] buf; 
DatagramPacket packet; 
ds = new DatagramSocket(localPort); 

while (localServerLoop) 
{ 
    //receiver stream is read to (int)val 
    val = receiver.getInputStream().read(); 
    //======localServer to remoteUDP======================  
    // (int)val to (byte)buf 
    buf = toBytes(val); 
    // byte to packet 
    packet = new DatagramPacket(buf, buf.length, 
      InetAddress.getByName(remoteHost), remotePort); 
    //send to remoteHost 
    ds.send(packet); 
    //========================= 
} 

ответ

1

Вы читаете один байт из потока, так что нет ничего в буфер действительно. Используйте один из методов read(), которые принимают байтовый массив, который будет вашим буфером. Вы также можете обернуть BufferedInputStream и т. Д. Возможно, вам стоит прочитать, как работает поток на Java в целом, это не специфический для Android.

http://developer.android.com/reference/java/io/InputStream.html#read(byte[])

+0

Спасибо за ваш очень информативный ответ. Я исследую их. –

Смежные вопросы