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.