Esplora u mutore VoIP Mediastreamer2. Parte 3

U materiale di l'articulu hè pigliatu da u mo canale zen.

Esplora u mutore VoIP Mediastreamer2. Parte 3

Migliurà l'esempiu di generatore di tonu

In u precedente articulu Avemu scrittu una applicazione generatore di tonu è l'avete utilizata per caccià u sonu da un parlante di l'urdinatore. Avà avemu nutatu chì u nostru prugramma ùn torna micca a memoria à u munzeddu quandu finisce. Hè ora di clarificà stu prublema.

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 articulu Assemblaremu un circuitu di metru di livellu di signale è amparà à leghje u risultatu di a misurazione da u filtru. Evaluemu a precisione di a misura.

Source: www.habr.com

Add a comment