Здравствуйте, Blazkowicz, Вы писали:
B>Объясни куда это данные теряются? А то не очень понятно. Как по мне это равносильно тому что данные так же теряются если не вычитывать их не достаточно быстро?
привожу пример:
public void run() {
inBuffering = 0;
inBuf = 0;
timestamp = (System.currentTimeMillis())/1000;
new Random(System.currentTimeMillis()).nextBytes(SSRC);
while(inBuffering!=-1){
try{
setRTPAudioStream(audio.getStream());
if(dtmfFlag){
setHeader(true);
System.arraycopy(bufferHeader,0,buffer2,0,12);
System.arraycopy(buffer1,0,buffer2,12,4);
countPacketsDTMF++;
if(countPacketsDTMF<17){
countPacketsDTMF=0;
dtmfFlag=false;
}
} else{
setHeader(false);
inBuffering = inputAudioStream.read(buffer);
System.arraycopy(bufferHeader,0,buffer2,0,12);
g729a.encode(g729a.handle, buffer, 0, buffer1, 0);
System.arraycopy(buffer1,0,buffer2,12,10);
}
}catch(Exception e){
System.out.println(e.getMessage());
}
if(inBuffering>=0){
try{
packet.setData(buffer2);
socket.send(packet);
System.arraycopy(bufferReset,0, bufferHeader,0,12);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
}
Вобщем принцип следующий, значить есть у меня кодер G729A енто вот это обращение "g729a.encode(g729a.handle, buffer, 0, buffer1, 0)", значить боролся я боролся что бы сбить нагрузку на проц и че та нифига неполучилось, кроме этого больше потоков не запущенно, этот запускается один раз, могу привести код самого Кодера G729A, еще прикол, значит пытаюсь весь код вставить в одну линейку в кодере что бы избежать многочисленных обращений к методам других классов, вобщем сократить количество переходов, но если я пытаюсь вставить метод конкретно в тело, то нагрузка увеличивается вдвое, пробывал отладочные печати, пустых цыклов ненашел, в чем бок для меня осталось загадкой

С уважением Гришков И.О.
Добавлена подсветка кода. Blazkowicz