Meneroka enjin Mediastreamer2 VoIP. Bahagian 3

Bahan artikel diambil dari saya saluran zen.

Meneroka enjin Mediastreamer2 VoIP. Bahagian 3

Memperbaiki contoh penjana nada

Dalam sebelumnya artikel Kami menulis aplikasi penjana nada dan menggunakannya untuk mengeluarkan bunyi daripada pembesar suara komputer. Sekarang kita akan perasan bahawa program kita tidak mengembalikan memori kembali ke timbunan apabila ia selesai. Sudah tiba masanya untuk menjelaskan isu ini.

Selepas kita tidak memerlukan skema, pelepasan memori harus bermula dengan penghentian penghantar data. Untuk melakukan ini, anda perlu memutuskan sambungan sumber jam dari litar, ticker menggunakan fungsi tersebut ms_ticker_detach(). Dalam kes kita, kita mesti memutuskan sambungan ticker daripada input penapis voidsource:

ms_ticker_detach(ticker, voidsource)

Dengan cara ini, selepas menghentikan penghantar, kita boleh menukar skemanya dan memasukkannya ke dalam kerja semula, sekali lagi menyambungkan ticker.

Sekarang kita boleh mengeluarkannya menggunakan fungsi tersebut ms_ticker_destroy():

ms_ticker_destroy(ticker)

Penghantar telah berhenti dan kita boleh mula membuka bahagiannya, memutuskan sambungan penapis. Untuk melakukan ini, gunakan fungsi ms_filter_unlink():

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

Tujuan hujah adalah sama dengan fungsi pautan_ms_filter().

Kami mengalih keluar penapis yang kini dipisahkan menggunakan ms_filter_destroy():

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

Dengan menambahkan baris ini pada contoh kami, kami akan membuat program ditamatkan dengan betul, dari sudut pandangan pengurusan memori.

Seperti yang kita lihat, penyiapan program yang betul memerlukan kami menambah kira-kira bilangan baris kod yang sama pada permulaannya, dan secara purata, empat baris kod mempunyai secara purata untuk setiap penapis. Ternyata saiz program program adalah berkadar dengan bilangan penapis yang digunakan dalam projek. Jika kita bercakap tentang seribu penapis dalam skema, maka empat ribu baris operasi rutin untuk mencipta dan memusnahkannya akan ditambahkan pada kod anda.

Kini anda tahu cara menamatkan program yang menggunakan penstrim media dengan betul. Dalam contoh berikut, demi kekompakan, saya akan "terlupa" untuk melakukan ini. Tetapi anda tidak akan lupa?

Pembangun penstrim media tidak menyediakan alatan perisian untuk memudahkan manipulasi penapis semasa memasang/menyahpasang litar. Namun begitu, terdapat pembantu yang membolehkan anda memasukkan/mentanggalkan penapis dengan cepat daripada litar.

Kami akan kembali untuk menyelesaikan isu ini kemudian, apabila bilangan penapis dalam contoh kami melebihi beberapa dozen.

Seterusnya artikel Kami akan memasang litar meter aras isyarat dan belajar cara membaca hasil pengukuran daripada penapis. Mari kita nilai ketepatan pengukuran.

Sumber: www.habr.com

Tambah komen