U materiale di l'articulu hè pigliatu da u mo
Migliurà l'esempiu di generatore di tonu
In u precedente
Dopu ùn avemu più bisognu di u circuitu, a liberazione di a memoria deve principià per fermà u pipeline di dati. Per fà questu, avete bisognu di disconnect a fonte di u clock è u ticker da u circuitu cù a funzione ms_ticker_detach(). In u nostru casu, duvemu disconnect u ticker da l'input di filtru voidsource:
ms_ticker_detach(ticker, voidsource)
In modu, dopu avè firmatu u trasportatore, pudemu cambià u so circuitu è rimette in u funziunamentu, torna à cunnette u ticker.
Avà pudemu sguassà cù a funzione ms_ticker_destroy():
ms_ticker_destroy(ticker)
U trasportatore s'hè firmatu è pudemu cumincià à disassemble parti di questu, disconnecting i filtri. Per fà questu, utilizate a funzione ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);
u scopu di l'argumenti hè u listessu cum'è per a funzione ms_filter_link().
Eliminamu i filtri avà separati usendu ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);
Aghjunghjendu sti linii à u nostru esempiu, avemu da ottene una terminazione curretta di u prugramma da u puntu di vista di a gestione di memoria.
Comu pudemu vede, u cumpletu currettu di u prugramma ci hà bisognu di aghjunghje apprussimatamente u listessu numeru di linee di codice cum'è à u principiu, cù una media di quattru linee di codice per filtru. Ci hè chì a dimensione di u codice di u prugramma cresce in proporzione à u numeru di filtri utilizati in u prugettu. Se parlemu di mille filtri in u circuitu, allora quattru mila linee di operazioni di rutina per a creazione è a distruzzione seranu aghjuntu à u vostru codice.
Avà sapete cumu finisce currettamente un prugramma chì usa un streamer media. In l'esempii seguenti, per a compattezza, "scurdate" di fà questu. Ma ùn vi scurdate micca?
I sviluppatori di u media streamer ùn anu micca furnitu strumenti di software per facilità a manipulazione di i filtri in l'assemblea / disassemblamentu di circuiti. Tuttavia, ci hè un aiutu chì permette di inserisce / caccià rapidamente un filtru da u circuitu.
Riturneremu à risolve stu prublema più tardi, quandu u numeru di filtri in i nostri esempi supira un paru di decine.
Dopu
Source: www.habr.com