Estudamos o mecanismo VoIP do Mediastreamer2. Parte 3

Material do artigo retirado do meu canal zen .



Melhorando o exemplo do gerador de tons


Em um artigo anterior , escrevemos um aplicativo gerador de tons e, com ele, extraímos o som de um alto-falante do computador. Agora vamos prestar atenção ao fato de que nosso programa, após a conclusão do trabalho, não retorna a memória de volta ao heap. Chegou a hora de esclarecer esta questão.


Depois que não precisarmos mais do circuito, a liberação da memória deve começar parando o pipeline de dados. Para fazer isso, você precisa desconectar a fonte do relógio, ticker do circuito, usando a função ms_ticker_detach () . No nosso caso, devemos desconectar o ticker da entrada do filtro voidsource :


ms_ticker_detach(ticker, voidsource)

A propósito, depois que o transportador parar, podemos mudar seu esquema e colocá-lo novamente em operação, conectando novamente o ticker.


Agora podemos removê-lo usando a função ms_ticker_destroy () :


ms_ticker_destroy(ticker)

O transportador está parado e podemos desmontá-lo desconectando os filtros. A função ms_filter_unlink () é usada para isso :


ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);

o objetivo dos argumentos é o mesmo que a função ms_filter_link () .


, , c ms_filter_destroy():


ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);

, , .


, , . , . , .


. , , "" . - ?


Os desenvolvedores da serpentina de mídia não forneceram ferramentas de software para facilitar a manipulação de filtros durante a montagem / desmontagem de circuitos. No entanto, existe um auxiliar que permite inserir / remover rapidamente um filtro do circuito.


Voltaremos a resolver esse problema mais tarde, quando o número de filtros em nossos exemplos exceder algumas dezenas.


No próximo artigo, montaremos o circuito do medidor de nível de sinal e aprenderemos a ler o resultado da medição no filtro. Estime a precisão da medição.


All Articles