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