Re[3]: Загрузка процессора 100%
От: 245_Monah  
Дата: 12.03.07 13:25
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.