A cikk anyaga az én .

Fejlesztjük a tonális generátor példáját
A korábbi Írtunk egy tonális generátor alkalmazást, amellyel hangot nyertünk a számítógép hangszórójából. Most figyeljünk oda arra, hogy a programunk a munka befejezésekor nem adja vissza a memóriát a halomra. Itt az ideje tisztázni ezt a kérdést.
Miután a séma már nem szükséges számunkra, a memória felszabadítása a adatfolyam leállításával kell, hogy kezdődjön. Ehhez a sémát le kell választani az óra forrásáról, a ticker segítségével a ms_ticker_detach(). A mi esetünkben le kell választanunk a tickert a szűrő bemenetéről voidsource:
ms_ticker_detach(ticker, voidsource)Egyébként, miután leállítottuk az adatfolyamot, megváltoztathatjuk a sémáját, és újra munkára bocsáthatjuk, ismét csatlakoztatva a tickert.
Most eltávolíthatjuk az ms_ticker_destroy():
ms_ticker_destroy(ticker)Az adatfolyam leállt, és kezdhetjük a részekre bontását, leválasztva a szűrőket. Ehhez az ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);az argumentumok célja megegyezik a ms_filter_link().
Most eltávolítjuk az immár leválasztott szűrőket a ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);Ezeket a sorokat hozzáadva a példánkhoz helyes, memória kezelés szempontjából megfelelő befejezést kapunk.
Amint látjuk, a program helyes befejezéséhez hozzátettünk körülbelül ugyanannyit sor kódot, mint amennyit az elején, és átlagosan minden szűrőre négy sor kód jutott. Így a program kódja arányosan növekszik a projektben felhasznált szűrők számával. Ha ezer szűrőről beszélünk a sémában, akkor a kódodhoz négyezer sor rutin művelet kerül hozzáadásra a létrehozásuknak és megsemmisítésüknek folyamatában.
Most már tudod, hogyan kell helyesen befejezni a média streamert használó programot. A következő példákban, a tömörség kedvéért, "elfelejtem" ezt megtenni. De te nem fogsz elfelejteni?
A média streamerek fejlesztői nem biztosítottak programozási eszközöket a szűrők manipulációjának megkönnyítésére a sémák összeállítása/leszerelése során. Ennek ellenére van egy segédprogram, amely lehetővé teszi a gyors szűrők be- és kihelyezését a sémából.
Később visszatérünk ennek a kérdésnek a megoldására, amikor a példáinkban használt szűrők száma meghaladja a néhány tucatot.
A következő Össze fogjuk állítani a jelzőszint mérőjének sémáját, és megtanuljuk, hogyan olvassuk le a szűrőből származó mérési eredményt. Értékelni fogjuk a mérés pontosságát.
Forrás: habr.com
