Mediastreamer2 VoIP ಎಂಜಿನ್ ಅನ್ನು ಅನ್ವೇಷಿಸಲಾಗುತ್ತಿದೆ. ಭಾಗ 3

ಲೇಖನದ ವಸ್ತುವನ್ನು ನನ್ನಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ ಝೆನ್ ಚಾನೆಲ್.

Mediastreamer2 VoIP ಎಂಜಿನ್ ಅನ್ನು ಅನ್ವೇಷಿಸಲಾಗುತ್ತಿದೆ. ಭಾಗ 3

ಟೋನ್ ಜನರೇಟರ್ ಉದಾಹರಣೆಯನ್ನು ಸುಧಾರಿಸುವುದು

ಹಿಂದಿನದರಲ್ಲಿ ಲೇಖನ ನಾವು ಟೋನ್ ಜನರೇಟರ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬರೆದಿದ್ದೇವೆ ಮತ್ತು ಅದನ್ನು ಕಂಪ್ಯೂಟರ್ ಸ್ಪೀಕರ್‌ನಿಂದ ಧ್ವನಿಯನ್ನು ಹೊರತೆಗೆಯಲು ಬಳಸಿದ್ದೇವೆ. ನಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಪೂರ್ಣಗೊಂಡಾಗ ಮೆಮೊರಿಯನ್ನು ಮತ್ತೆ ರಾಶಿಗೆ ಹಿಂತಿರುಗಿಸುವುದಿಲ್ಲ ಎಂದು ಈಗ ನಾವು ಗಮನಿಸುತ್ತೇವೆ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಸ್ಪಷ್ಟಪಡಿಸುವ ಸಮಯ ಬಂದಿದೆ.

ನಮಗೆ ಇನ್ನು ಮುಂದೆ ಸರ್ಕ್ಯೂಟ್ ಅಗತ್ಯವಿಲ್ಲದ ನಂತರ, ಡೇಟಾ ಪೈಪ್‌ಲೈನ್ ಅನ್ನು ನಿಲ್ಲಿಸುವ ಮೂಲಕ ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸುವುದು ಪ್ರಾರಂಭವಾಗಬೇಕು. ಇದನ್ನು ಮಾಡಲು, ಕಾರ್ಯವನ್ನು ಬಳಸಿಕೊಂಡು ಸರ್ಕ್ಯೂಟ್ನಿಂದ ಗಡಿಯಾರ ಮೂಲ ಮತ್ತು ಟಿಕ್ಕರ್ ಅನ್ನು ನೀವು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಬೇಕಾಗುತ್ತದೆ 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().

ನಾವು ಈಗ ಬೇರ್ಪಡಿಸಿದ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ಬಳಸಿ ತೆಗೆದುಹಾಕುತ್ತೇವೆ ms_filter_destroy():

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

ನಮ್ಮ ಉದಾಹರಣೆಗೆ ಈ ಸಾಲುಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ, ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯ ದೃಷ್ಟಿಕೋನದಿಂದ ನಾವು ಸರಿಯಾದ ಪ್ರೋಗ್ರಾಂ ಮುಕ್ತಾಯವನ್ನು ಪಡೆಯುತ್ತೇವೆ.

ನಾವು ನೋಡುವಂತೆ, ಪ್ರೋಗ್ರಾಮ್‌ನ ಸರಿಯಾದ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗೆ ನಾವು ಆರಂಭದಲ್ಲಿದ್ದಂತೆ ಸರಿಸುಮಾರು ಅದೇ ಸಂಖ್ಯೆಯ ಕೋಡ್‌ಗಳ ಸಾಲುಗಳನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ, ಪ್ರತಿ ಫಿಲ್ಟರ್‌ಗೆ ಸರಾಸರಿ ನಾಲ್ಕು ಸಾಲುಗಳ ಕೋಡ್‌ನೊಂದಿಗೆ. ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ನ ಗಾತ್ರವು ಯೋಜನೆಯಲ್ಲಿ ಬಳಸಿದ ಫಿಲ್ಟರ್ಗಳ ಸಂಖ್ಯೆಗೆ ಅನುಗುಣವಾಗಿ ಹೆಚ್ಚಾಗುತ್ತದೆ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ. ನಾವು ಸರ್ಕ್ಯೂಟ್‌ನಲ್ಲಿ ಸಾವಿರ ಫಿಲ್ಟರ್‌ಗಳ ಬಗ್ಗೆ ಮಾತನಾಡಿದರೆ, ಅವುಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ನಾಶಮಾಡಲು ನಾಲ್ಕು ಸಾವಿರ ವಾಡಿಕೆಯ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿಮ್ಮ ಕೋಡ್‌ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ.

ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್ ಅನ್ನು ಬಳಸುವ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸರಿಯಾಗಿ ಕೊನೆಗೊಳಿಸುವುದು ಹೇಗೆ ಎಂದು ಈಗ ನಿಮಗೆ ತಿಳಿದಿದೆ. ಕೆಳಗಿನ ಉದಾಹರಣೆಗಳಲ್ಲಿ, ಸಾಂದ್ರತೆಯ ಸಲುವಾಗಿ, ನಾನು ಇದನ್ನು ಮಾಡಲು "ಮರೆತುಬಿಡುತ್ತೇನೆ". ಆದರೆ ನೀವು ಮರೆಯುವುದಿಲ್ಲವೇ?

ಮೀಡಿಯಾ ಸ್ಟ್ರೀಮರ್‌ನ ಡೆವಲಪರ್‌ಗಳು ಸರ್ಕ್ಯೂಟ್‌ಗಳನ್ನು ಜೋಡಿಸುವಾಗ/ಡಿಸ್ಅಸೆಂಬಲ್ ಮಾಡುವಾಗ ಫಿಲ್ಟರ್‌ಗಳ ಕುಶಲತೆಯನ್ನು ಸುಲಭಗೊಳಿಸಲು ಸಾಫ್ಟ್‌ವೇರ್ ಪರಿಕರಗಳನ್ನು ಒದಗಿಸಲಿಲ್ಲ. ಅದೇನೇ ಇದ್ದರೂ, ಸರ್ಕ್ಯೂಟ್ನಿಂದ ಫಿಲ್ಟರ್ ಅನ್ನು ತ್ವರಿತವಾಗಿ ಸೇರಿಸಲು / ತೆಗೆದುಹಾಕಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಸಹಾಯಕವಿದೆ.

ನಮ್ಮ ಉದಾಹರಣೆಗಳಲ್ಲಿನ ಫಿಲ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆಯು ಒಂದೆರಡು ಡಜನ್‌ಗಳನ್ನು ಮೀರಿದಾಗ ನಾವು ನಂತರ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಹಿಂತಿರುಗುತ್ತೇವೆ.

ಮುಂದೆ ಲೇಖನ ನಾವು ಸಿಗ್ನಲ್ ಮಟ್ಟದ ಮೀಟರ್ ಸರ್ಕ್ಯೂಟ್ ಅನ್ನು ಜೋಡಿಸುತ್ತೇವೆ ಮತ್ತು ಫಿಲ್ಟರ್ನಿಂದ ಮಾಪನ ಫಲಿತಾಂಶವನ್ನು ಓದುವುದು ಹೇಗೆ ಎಂದು ಕಲಿಯುತ್ತೇವೆ. ಮಾಪನದ ನಿಖರತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡೋಣ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ