نحن ندرس محرك Mediastreamer2 VoIP. الجزء 3

مادة المقالة مأخوذة من قناة zen الخاصة بي .



مثال على تحسين مولد النغمة


في مقال سابق ، كتبنا تطبيقًا لتوليد النغمات ومعه استخرجنا الصوت من مكبر صوت الكمبيوتر. الآن سننتبه إلى حقيقة أن برنامجنا ، عند الانتهاء من العمل ، لا يعيد الذاكرة إلى كومة الذاكرة المؤقتة. حان الوقت لتوضيح هذه القضية.


بعد أن لم نعد بحاجة إلى الدائرة ، يجب أن يبدأ تحرير الذاكرة عن طريق إيقاف خط البيانات. للقيام بذلك ، تحتاج إلى فصل مصدر الساعة ، مؤشر من الدائرة باستخدام وظيفة ms_ticker_detach () . في حالتنا ، يجب علينا فصل المؤشر عن إدخال مرشح مصدر الفراغات :


ms_ticker_detach(ticker, voidsource)

بالمناسبة ، بعد توقف الناقل ، يمكننا تغيير مخططه وإعادة تشغيله مرة أخرى ، وربط المؤشر مرة أخرى.


الآن يمكننا إزالته باستخدام وظيفة ms_ticker_destroy () :


ms_ticker_destroy(ticker)

يتم إيقاف الناقل ويمكننا المضي قدمًا لتفكيكه عن طريق فصل المرشحات. يتم استخدام وظيفة ms_filter_unlink () لهذا :


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

الغرض من الوسيطات هو نفس الغرض من دالة ms_filter_link () .


, , c ms_filter_destroy():


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

, , .


, , . , . , .


. , , "" . - ?


لم يقدم مطورو دفق الوسائط أدوات برمجية لتسهيل معالجة المرشحات أثناء تجميع / تفكيك الدوائر. ومع ذلك ، هناك مساعد يسمح لك بإدخال / إزالة مرشح من الدائرة بسرعة.


سنعود إلى حل هذه المشكلة لاحقًا ، عندما يتجاوز عدد الفلاتر في أمثلةنا بضع عشرات.


في المقالة التالية ، سنقوم بتجميع دائرة مقياس مستوى الإشارة وتعلم كيفية قراءة نتيجة القياس من المرشح. تقدير دقة القياس.


All Articles