|
#recordFile, instância de PCM ou G7231RecordFile, criará um novo arquivo (cujo nome será formado pelo horário de sistema do instante de início da gravação) e gravará o conteúdo da mensagem sendo enviada nos pacotes RTP pelo emissor.
Para entender o procedimento usado por estes importantes objetos, relacionados tanto com o envio da mídia quanto com a gravação, é preciso dizer que existe um mecanismo de gerenciamento de tempo envolvido através do escalonamento dos frames de áudio a serem tocados e gravados. Ambos os objetos precisam de métodos de sincronização de tempo, como o método PCM_OGMChannel::Synchronise, que vai inserindo atrasos caso seja necessário em cada leitura de um frame de áudio, obtido do arquivo pré-gravado e armazenado temporariamente no buffer de envio até o seu encapsulamento RTP. A operação contrária é bastante similar. Na escrita do arquivo contendo a gravação, o método PCM_RecordFile::DelayFrame vai ditando o ritmo de gravação dos frames de áudio que estão armazenados no buffer de recepção ou playout.
Portanto, devido a esta bufferização e sincronismo, não é possível “ouvir” a degradação obtida pelos atrasos fim-a-fim, ao tocar posteriormente arquivo de áudio gerado pela secretária. Uma vez que esta degradação somente poderia ser percebida em uma conversação interativa, o que não é o caso da secretária.
3.2 - Modificações para criar o Call Generator e Melhorar a Precisão das Ferramentas
Foram realizadas algumas modificações no openam, para que ele pudesse suportar o acionamento automático de uma ligação H.323. Inicialmente, nos baseamos no código-fonte do call generator [6], que usava a versão 1.1.9 do openam. As modificações realizadas foram as seguintes:
• Desativar o mecanismo de listernerH323, do openam, que fica bloqueado esperando receber ligações. Trocando este procedimento por uma chamada a um método MakeOutgoingCall.
• Extender alguns métodos de captura de eventos do H323Endpoint que são específicos para um elemento (endpoint H.323) que realize chamadas ao invés de recebê-las, como OnAlerting, OnConnectionEstablished, OnConnectionCleared, AwaitTermination e o próprio MakeOutgoingCall.
• No caso do método MakeOutgoingCall, é obtido como parâmetro do vetor de argumentos de entrada do programa, o endereço relacionado ao ponto que deve ser chamado, e dentro deste método é feita a chamada propriamente dita para este IP.
• Foi modificado o código do método OnConnectionEstablished do caller e do openam, para fazer acesso a sessão RTP iniciada e ajustar a freqüência de envio de pacotes RTCP para 1 pacote a cada segundo. Anteriormente, esta taxa de envio era de 1 a cada 12 segundos (no caso do Netmeeting esta taxa é de 1 a cada 5 seg.), valores inapropriados para medidas mais precisas dos parâmetros de qualidade.
• No código do caller/openam foi criado mais um parâmetro de entrada (--dejitter), onde pode ser inserido o valor do buffer de compensação de jitter em ms. Tendo como faixa de valores válidos de 20 ms até 10 s. Lembrando que para conversas interativas o atraso máximo one-way não pode ultrapassar 150 ms [18].
Inicio Próximo
|
|
 |