Mediastreamer2 VoIP เจ‡เฉฐเจœเจฃ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจญเจพเจ— 2

เจฒเฉ‡เจ– เจธเจฎเฉฑเจ—เจฐเฉ€ เจฎเฉ‡เจฐเฉ‡ เจคเฉ‹เจ‚ เจฒเจˆ เจ—เจˆ เจนเฉˆ เจœเจผเฉˆเจจ เจšเฉˆเจจเจฒ.

Mediastreamer2 VoIP เจ‡เฉฐเจœเจฃ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจญเจพเจ— 2

เจ‡เฉฑเจ• เจŸเฉ‹เจจ เจœเจจเจฐเฉ‡เจŸเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจชเจฟเจ›เจฒเฉ‡ เจตเจฟเฉฑเจš เจฒเฉ‡เจ– เจ…เจธเฉ€เจ‚ เจฎเฉ€เจกเฉ€เจ† เจธเจŸเฉเจฐเฉ€เจฎเจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€, เจตเจฟเจ•เจพเจธ เจธเจพเจงเจจ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ…เจœเจผเจฎเจพเจ‡เจธเจผ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพ เจ•เฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€เฅค

เจ…เฉฑเจœ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡ เจœเฉ‹ เจธเจพเจŠเจ‚เจก เจ•เจพเจฐเจก 'เจคเฉ‡ เจŸเฉ‹เจจ เจธเจฟเจ—เจจเจฒ เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเจ–เจพเจ เจ—เจ เจธเจพเจŠเจ‚เจก เจœเจจเจฐเฉ‡เจŸเจฐ เจธเจฐเจ•เจŸ เจจเจพเจฒ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

Mediastreamer2 VoIP เจ‡เฉฐเจœเจฃ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจญเจพเจ— 2

เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ–เฉฑเจฌเฉ‡ เจคเฉ‹เจ‚ เจธเฉฑเจœเฉ‡ เจชเฉœเฉเจนเจฆเฉ‡ เจนเจพเจ‚, เจ‡เจน เจ‰เจน เจฆเจฟเจธเจผเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจพเจกเจพ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจตเจพเจน เจšเจฒเจฆเจพ เจนเฉˆเฅค เจคเฉ€เจฐ เจตเฉ€ เจ‡เจธ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ†เจ‡เจคเจ•เจพเจฐ เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ เจœเฉ‹ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเจพ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ†เจ‡เจค เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจ‡เจธเจฆเฉ€ เจญเฉ‚เจฎเจฟเจ•เจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฒเจŸเจฐ เจฆเฉ€ เจ•เจฟเจธเจฎ เจฌเจฟเจฒเจ•เฉเจฒ เจนเฉ‡เจ เจพเจ‚ เจตเฉฑเจกเฉ‡ เจ…เฉฑเจ–เจฐเจพเจ‚ เจตเจฟเฉฑเจš เจฆเจฐเจธเจพเจˆ เจ—เจˆ เจนเฉˆเฅค เจ†เจ‡เจคเจพเจ•เจพเจฐ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจตเจพเจฒเฉ‡ เจคเฉ€เจฐ เจกเฉ‡เจŸเจพ เจ•เจคเจพเจฐเจพเจ‚ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจฌเจฒเจพเจ• เจซเจฟเจฒเจŸเจฐ เจคเฉ‹เจ‚ เจซเจฟเจฒเจŸเจฐ เจคเฉฑเจ• เจกเจฟเจฒเฉ€เจตเจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เฉฑเจ• เจซเจฟเจฒเจŸเจฐ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ‡เจจเจชเฉเจŸเจธ เจ…เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ‡เจน เจธเจญ เจ˜เฉœเฉ€ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจŸเฉˆเจ‚เจชเฉ‹ เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจ˜เฉœเฉ€ เจฆเฉ‡ เจšเฉฑเจ•เจฐ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจนเจฐเฉ‡เจ• เจซเจฟเจฒเจŸเจฐ เจธเจพเจฐเฉ‡ เจกเฉ‡เจŸเจพ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เจธเจฆเฉ‡ เจ‡เจจเจชเฉเจŸ เจคเฉ‡ เจนเจจเฅค เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ‡ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจชเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจชเจนเจฟเจฒเจพเจ‚, เจ˜เฉœเฉ€ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจฆเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจจเฉ‡เฉœเฉ‡ เจฆเจพ เจซเจฟเจฒเจŸเจฐ เจ—เจฃเจจเจพ เจ•เจฐเจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจ‡เจธเจฆเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจซเจฟเจฒเจŸเจฐ (เจ‡เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ), เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจตเฉ€เฅค เจšเฉ‡เจจ เจตเจฟเฉฑเจš เจ†เจ–เจฐเฉ€ เจซเจฟเจฒเจŸเจฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ˜เฉœเฉ€ เจฆเฉ‡ เจ†เจ‰เจฃ เจคเฉฑเจ• เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฐเฉเจ• เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฌเฉ€เจŸเจธ, เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, 10 เจฎเจฟเจฒเฉ€เจธเจ•เจฟเฉฐเจŸ เจฆเฉ‡ เจ…เฉฐเจคเจฐเจพเจฒ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ†เจ‰ เจ†เจชเจฃเฉ‡ เจšเจฟเฉฑเจคเจฐ เจคเฉ‡ เจตเจพเจชเจธ เจšเจฒเฉ€เจ. เจ˜เฉœเฉ€ เจฆเฉ‡ เจšเฉฑเจ•เจฐ เจšเฉเฉฑเจช เจธเจฐเฉ‹เจค เจฆเฉ‡ เจ‡เจจเจชเฉเจŸ 'เจคเฉ‡ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ; เจ‡เจน เจ‡เฉฑเจ• เจซเจฟเจฒเจŸเจฐ เจนเฉˆ, เจœเฉ‹ เจนเจฐเฉ‡เจ• เจ˜เฉœเฉ€ เจšเฉฑเจ•เจฐ เจฒเจˆ เจ‡เจธเจฆเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ 'เจคเฉ‡ เจœเจผเฉ€เจฐเฉ‹ เจตเจพเจฒเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ‡เฉฑเจ• เจฌเจฒเจพเจ• เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจตเจฟเฉฑเจš เจฐเฉเฉฑเจเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฌเจฒเจพเจ• เจจเฉ‚เฉฐ เจงเฉเจจเฉ€ เจฆเฉ‡ เจจเจฎเฉ‚เจจเจฟเจ†เจ‚ เจฆเจพ เจฌเจฒเจพเจ• เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ‡เจน เจšเฉเฉฑเจช เจคเฉ‹เจ‚ เจตเฉฑเจง เจ•เฉเจ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจชเจนเจฟเจฒเฉ€ เจจเจœเจผเจฐ 'เจคเฉ‡, เจšเฉเฉฑเจช เจจเจพเจฒ เจกเจพเจŸเจพ เจฌเจฒเจพเจ• เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจœเฉ€เจฌ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ - เจ†เจ–เจฐเจ•เจพเจฐ, เจ‡เจน เจธเฉเจฃเจฟเจ† เจจเจนเฉ€เจ‚ เจœเจพ เจธเจ•เจฆเจพ, เจชเจฐ เจ‡เจน เจฌเจฒเจพเจ• เจธเจพเจŠเจ‚เจก เจธเจฟเจ—เจจเจฒ เจœเจจเจฐเฉ‡เจŸเจฐ เจฆเฉ‡ เจ•เฉฐเจฎ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเจจ. เจœเจจเจฐเฉ‡เจŸเจฐ เจ‡เจนเจจเจพเจ‚ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจ—เจœเจผ เจฆเฉ€ เจ–เจพเจฒเฉ€ เจธเจผเฉ€เจŸ เจตเจพเจ‚เจ— เจตเจฐเจคเจฆเจพ เจนเฉˆ, เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ†เจตเจพเจœเจผ เจฆเฉ‡ เจจเจฎเฉ‚เจจเฉ‡ เจฐเจฟเจ•เจพเจฐเจก เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเฉ€ เจ†เจฎ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจœเจจเจฐเฉ‡เจŸเจฐ เจฌเฉฐเจฆ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจฟเจฐเจซเจผ เจ‡เจจเจชเฉเจŸ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจตเจฟเฉฑเจš เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจšเฉเฉฑเจช เจฆเฉ‡ เจฌเจฒเจพเจ• เจ–เฉฑเจฌเฉ‡ เจคเฉ‹เจ‚ เจธเฉฑเจœเฉ‡ เจชเฉ‚เจฐเฉ‡ เจธเจฐเจ•เจŸ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจฌเจฆเจฒเฉ‡ เจฒเฉฐเจ˜เจฆเฉ‡ เจนเจจ, เจธเจพเจŠเจ‚เจก เจ•เจพเจฐเจก เจตเจฟเฉฑเจš เจ–เจคเจฎ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจœเฉ‹ เจšเฉเฉฑเจชเจšเจพเจช เจ†เจชเจฃเฉ‡ เจ‡เจจเจชเฉเจŸ เจจเจพเจฒ เจœเฉเฉœเฉ€ เจ•เจคเจพเจฐ เจคเฉ‹เจ‚ เจฌเจฒเจพเจ• เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค

เจชเจฐ เจธเจญ เจ•เฉเจ เจฌเจฆเจฒ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‡ เจœเจจเจฐเฉ‡เจŸเจฐ เจจเฉ‚เฉฐ เจ†เจตเจพเจœเจผ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจก เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ‡เจน เจ†เจตเจพเจœเจผ เจฆเฉ‡ เจจเจฎเฉ‚เจจเฉ‡ เจฌเจฃเจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจจเจชเฉเจŸ เจฌเจฒเจพเจ•เจพเจ‚ เจตเจฟเฉฑเจš เจจเจฎเฉ‚เจจเจฟเจ†เจ‚ เจจเจพเจฒ เจฌเจฆเจฒ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฌเจฆเจฒเฉ‡ เจนเฉ‹เจ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ 'เจคเฉ‡ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจธเจพเจŠเจ‚เจก เจ•เจพเจฐเจก เจตเฉฑเจœเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจนเฉ‡เจ เจพเจ‚ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจนเฉˆ เจœเฉ‹ เจ‰เฉฑเจชเจฐ เจตเจฐเจฃเจฟเจค เจ•เจพเจฐเจœ เจฏเฉ‹เจœเจจเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ:

/* ะคะฐะนะป mstest2.c */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/mssndcard.h>
int main()
{
    ms_init();

    /* ะกะพะทะดะฐะตะผ ัะบะทะตะผะฟะปัั€ั‹ ั„ะธะปัŒั‚ั€ะพะฒ. */
    MSFilter  *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
    MSFilter  *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
    MSSndCard *card_playback = ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
    MSFilter  *snd_card_write = ms_snd_card_create_writer(card_playback);

    /* ะกะพะทะดะฐะตะผ ั‚ะธะบะตั€. */
    MSTicker *ticker = ms_ticker_new();

    /* ะกะพะตะดะธะฝัะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฒ ั†ะตะฟะพั‡ะบัƒ. */
    ms_filter_link(voidsource, 0, dtmfgen, 0);
    ms_filter_link(dtmfgen, 0, snd_card_write, 0);

   /* ะŸะพะดะบะปัŽั‡ะฐะตะผ ะธัั‚ะพั‡ะฝะธะบ ั‚ะฐะบั‚ะพะฒ. */
   ms_ticker_attach(ticker, voidsource);

   /* ะ’ะบะปัŽั‡ะฐะตะผ ะทะฒัƒะบะพะฒะพะน ะณะตะฝะตั€ะฐั‚ะพั€. */
   char key='1';
   ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY, (void*)&key);

   /* ะ”ะฐะตะผ, ะฒั€ะตะผั, ั‡ั‚ะพะฑั‹ ะฒัะต ะฑะปะพะบะธ ะดะฐะฝะฝั‹ั… ะฑั‹ะปะธ ะฟะพะปัƒั‡ะตะฝั‹ ะทะฒัƒะบะพะฒะพะน ะบะฐั€ั‚ะพะน.*/
   ms_sleep(2);   
}

เจฎเฉ€เจกเฉ€เจ† เจธเจŸเฉเจฐเฉ€เจฎเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเจฟเฉฐเจจ เจซเจฟเจฒเจŸเจฐ เจฌเจฃเจพเจ เจ—เจ เจนเจจ: voidsource, dtmfgen, snd_card_write. เจ‡เฉฑเจ• เจ˜เฉœเฉ€ เจธเจฐเฉ‹เจค เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ.

เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจธเจฐเจ•เจŸ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจ…เจคเฉ‡ เจ˜เฉœเฉ€ เจฆเจพ เจธเจฐเฉ‹เจค เจ†เจ–เจฐเฉ€ เจตเจพเจฐ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจฐเจ•เจŸ เจคเฉเจฐเฉฐเจค เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเฉ‡เจตเฉ‡เจ—เจพ. เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ˜เฉœเฉ€ เจธเจฐเฉ‹เจค เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ…เจงเฉ‚เจฐเฉ‡ เจธเจฐเจ•เจŸ เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ…เจœเจฟเจนเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉ€เจกเฉ€เจ† เจธเจŸเฉเจฐเฉ€เจฎเจฐ เจ•เฉเจฐเฉˆเจธเจผ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‡เจ•เจฐ เจ‡เจน เจธเจพเจฐเฉ‡ เจ‡เจจเจชเฉเจŸเจธ เจœเจพเจ‚ เจธเจพเจฐเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ "เจนเจตเจพ เจตเจฟเฉฑเจš เจฒเจŸเจ•เจฆเฉ‡" (เจ•เจจเฉˆเจ•เจŸ เจจเจนเฉ€เจ‚) เจฆเฉ‡ เจจเจพเจฒ เจšเฉ‡เจจ เจตเจฟเฉฑเจš เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‡เฉฑเจ• เจซเจฟเจฒเจŸเจฐ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจเจพ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ

ms_filter_link(src, src_out, dst, dst_in)

เจœเจฟเฉฑเจฅเฉ‡ เจชเจนเจฟเจฒเฉ€ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจธเจฐเฉ‹เจค เจซเจฟเจฒเจŸเจฐ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจนเฉˆ, เจฆเฉ‚เจœเจพ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจธเจฐเฉ‹เจค เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉฐเจฌเจฐ เจนเฉˆ (เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ เจ‡เจจเจชเฉเจŸเจธ เจ…เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจœเจผเฉ€เจฐเฉ‹ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจ•เฉ‡ เจจเฉฐเจฌเจฐ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ)เฅค เจคเฉ€เจœเจพ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฐเจฟเจธเฉ€เจตเจฐ เจซเจฟเจฒเจŸเจฐ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจนเฉˆ, เจšเฉŒเจฅเจพ เจฐเจฟเจธเฉ€เจตเจฐ เจ‡เฉฐเจชเฉเฉฑเจŸ เจจเฉฐเจฌเจฐ เจนเฉˆเฅค

เจธเจพเจฐเฉ‡ เจซเจฟเจฒเจŸเจฐ เจœเฉเฉœเฉ‡ เจนเฉ‹เจ เจนเจจ เจ…เจคเฉ‡ เจ˜เฉœเฉ€ เจฆเจพ เจธเจฐเฉ‹เจค เจ†เจ–เจฐเฉ€ เจตเจพเจฐ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ (เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจŸเจฟเจ•เจฐ เจ•เจนเจพเจ‚เจ—เฉ‡)เฅค เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจพเจกเจพ เจธเจพเจŠเจ‚เจก เจธเจฐเจ•เจŸ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจฆเฉ‡ เจธเจชเฉ€เจ•เจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจœเฉ‡ เจคเฉฑเจ• เจ•เฉเจ เจตเฉ€ เจจเจนเฉ€เจ‚ เจธเฉเจฃเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ - เจธเจพเจŠเจ‚เจก เจœเจจเจฐเฉ‡เจŸเจฐ เจฌเฉฐเจฆ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจšเฉเฉฑเจช เจฆเฉ‡ เจจเจพเจฒ เจ‡เจจเจชเฉเจŸ เจกเฉ‡เจŸเจพ เจฌเจฒเจพเจ•เจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจŸเฉ‹เจจ เจฌเจฃเจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจœเจจเจฐเฉ‡เจŸเจฐ เจซเจฟเจฒเจŸเจฐ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจซเจผเฉ‹เจจ 'เจคเฉ‡ "1" เจฌเจŸเจจ เจจเฉ‚เฉฐ เจฆเจฌเจพเจ‰เจฃ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฆเฉ‹-เจŸเฉ‹เจจ (DTMF) เจธเจฟเจ—เจจเจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ ms_filter_call_method() เจ…เจธเฉ€เจ‚ MS_DTMF_GEN_PLAY เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเจฒเฉ€เจฒ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉ‹เจก เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเจพเจธ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจœเจฟเจธ เจจเจพเจฒ เจชเจฒเฉ‡เจฌเฉˆเจ• เจธเจฟเจ—เจจเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจœเฉ‹ เจ•เฉเจ เจฌเจšเจฟเจ† เจนเฉˆ เจ‰เจน เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจเจพ เจนเฉˆ:

$ gcc mstest2.c -o mstest2 `pkg-config mediastreamer --libs --cflags`

เจ…เจคเฉ‡ เจšเจฒเจพเจ“:

$ ./mstest2

เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจธเจชเฉ€เจ•เจฐ เจตเจฟเฉฑเจš เจฆเฉ‹ เจŸเฉ‹เจจเจพเจ‚ เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจœเจฟเจนเจพ เจธเจพเจŠเจ‚เจก เจธเจฟเจ—เจจเจฒ เจธเฉเจฃเจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค

เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเจพ เจชเจนเจฟเจฒเจพ เจธเจพเจŠเจ‚เจก เจธเจฐเจ•เจŸ เจฌเจฃเจพเจ‡เจ† เจ…เจคเฉ‡ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพเฅค เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฟเจ† เจ•เจฟ เจซเจฟเจฒเจŸเจฐ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‰เจฃเฉ€เจ†เจ‚ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจœเฉ‹เฉœเจจเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจขเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจพเจฒ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจซเจฒเจคเจพ เจคเฉ‹เจ‚ เจ–เฉเจธเจผ เจนเจพเจ‚, เจธเจพเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เจธ เจคเฉฑเจฅ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจ•เจฟ เจธเจพเจกเจพ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฌเจพเจนเจฐ เจœเจพเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจ–เจพเจฒเฉ€ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจ—เจฒเฉ‡ เจตเจฟเฉฑเจš เจฒเฉ‡เจ– เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจเจพ เจธเจฟเฉฑเจ– เจฒเจตเจพเจ‚เจ—เฉ‡เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹