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

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

RTP เจธเจŸเฉเจฐเฉ€เจฎ เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ• เจ†เจกเฉ€เจ“ เจธเจฟเจ—เจจเจฒ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจจเจพ

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

เจชเจฟเจ›เจฒเฉ‡ เจตเจฟเฉฑเจš เจฒเฉ‡เจ– เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจŸเฉ‹เจจ เจœเจจเจฐเฉ‡เจŸเจฐ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจŸเฉ‹เจจ เจกเจฟเจŸเฉˆเจ•เจŸเจฐ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฐเจฟเจฎเฉ‹เจŸ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจธเจฐเจ•เจŸ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ•เฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเจš เจ…เจธเฉ€เจ‚ เจธเจฟเจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ RTP เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ (RFC 3550 -) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจเฅค RTP: เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจŸเฉเจฐเจพเจ‚เจธเจชเฉ‹เจฐเจŸ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ) เจ‡เฉฑเจ• เจˆเจฅเจฐเจจเฉˆเฉฑเจŸ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ‰เฉฑเจคเฉ‡ เจ‡เฉฑเจ• เจ†เจกเฉ€เจ“ เจธเจฟเจ—เจจเจฒ เจชเฉเจฐเจพเจชเจค/เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆเฅค

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

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

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

เจฒเฉ‹เจก เจฆเฉ€ เจ•เจฟเจธเจฎ เจธเฉฑเจค-เจฌเจฟเฉฑเจŸ เจจเฉฐเจฌเจฐ เจฆเฉเจ†เจฐเจพ เจฆเจฐเจธเจพเจˆ เจ—เจˆ เจนเฉˆเฅค เจธเจฟเจซเจพเจฐเจธเจผ RFC3551 (เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ†เจกเฉ€เจ“ เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจ•เจพเจจเจซเจฐเฉฐเจธเจพเจ‚ เจฒเจˆ RTP เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ) เจ•เจˆ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจฒเฉ‹เจก เจธเจฅเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ; เจ…เจจเฉเจธเจพเจฐเฉ€ เจธเจพเจฐเจฃเฉ€ เจฒเฉ‹เจก เจฆเฉ€เจ†เจ‚ เจ•เจฟเจธเจฎเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจ•เฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจ…เจฐเจฅเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจจเฉ‹เจจเฉ€เจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ•เฉเจ เจ•เฉ‹เจก เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจฒเฉ‹เจก เจจเจพเจฒ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจจเจนเฉ€เจ‚ เจœเฉเฉœเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ; เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฎเจจเจฎเจพเจจเฉ‡ เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจฎเจจเฉ‹เจจเฉ€เจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพ เจฌเจฒเจพเจ• เจฆเจพ เจ†เจ•เจพเจฐ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉˆเจ•เฉ‡เจŸ เจ†เจ•เจพเจฐ เจฆเฉเจ†เจฐเจพ เจธเฉ€เจฎเจฟเจค เจนเฉˆ เจœเฉ‹ เจ•เจฟ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจธเฉˆเจ—เจฎเฉˆเจ‚เจŸเฉ‡เจธเจผเจจ (MTU เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ) เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน 1500 เจฌเจพเจˆเจŸเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจง เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจชเฉˆเจ•เฉ‡เจŸ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจค เจฌเจฟเฉฐเจฆเฉ‚ เจคเฉฑเจ• เจตเจงเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉˆเจ•เฉ‡เจŸ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจฎเฉ€เจกเฉ€เจ† เจธเจŸเฉเจฐเฉ€เจฎเจฐ เจตเจฟเฉฑเจš, เจ‡เจน เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพเจฏเฉ‹เจ— เจธเฉˆเจŸเจฟเฉฐเจ— เจนเฉˆเฅค เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เจน 50 Hz เจนเฉˆ, i.e. 50 เจชเฉˆเจ•เฉ‡เจŸ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ. เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจธเจพเจฐเจฟเจค RTP เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ‡ เจ•เฉเจฐเจฎ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• RTP เจธเจŸเฉเจฐเฉ€เจฎ เจ•เจนเจพเจ‚เจ—เฉ‡เฅค

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

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

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

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

เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ‡เฉฑเจ• เจคเจฐเจซเจพ เจธเฉฐเจšเจพเจฐ RTP เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจฌเจพเจนเจฐเฉ€ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจŸเฉเจฐเจพเจ‚เจธเจฎเฉ€เจŸเจฐ เจ…เจคเฉ‡ เจฐเจฟเจธเฉ€เจตเจฐ เจฆเฉ‹เจตเฉ‡เจ‚ เจ‡เฉฑเจ•เฉ‹ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ เจธเจฅเจฟเจค เจนเฉ‹เจฃเจ—เฉ‡ - เจชเฉˆเจ•เฉ‡เจŸ เจ‡เจธ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฏเจพเจคเจฐเจพ เจ•เจฐเจจเจ—เฉ‡เฅค

เจ‡เฉฑเจ• RTP เจธเจŸเฉเจฐเฉ€เจฎ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจฎเฉ€เจกเฉ€เจ† เจธเจŸเฉเจฐเฉ€เจฎเจฐ เจฆเฉ‹ เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ: MS_RTP_SEND เจ…เจคเฉ‡ MS_RTP_RECVเฅค เจชเจนเจฟเจฒเจพ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเฉ‚เฉฐ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ RTP เจธเจŸเฉเจฐเฉ€เจฎ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• RTP เจธเฉˆเจธเจผเจจ เจ†เจฌเจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจชเจพเจธ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจœเจพเจ‚ เจคเจพเจ‚ เจกเฉ‡เจŸเจพ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจŸเฉเจฐเฉ€เจฎ เจจเฉ‚เฉฐ RTP เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจพเจ‚ เจ‡เจธเจฆเฉ‡ เจ‰เจฒเจŸ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉ€เจกเฉ€เจ† เจธเจŸเฉเจฐเฉ€เจฎเจฐ เจฆเจพ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจกเฉ‡เจŸเจพ เจซเจพเจฐเจฎเฉˆเจŸ RTP เจชเฉˆเจ•เฉ‡เจŸ เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจซเจพเจฐเจฎเฉˆเจŸ เจจเจพเจฒ เจฎเฉ‡เจฒ เจจเจนเฉ€เจ‚ เจ–เจพเจ‚เจฆเจพ, เจ‡เจธ เจฒเจˆ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ MS_RTP_SEND เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจเจจเจ•เฉ‹เจกเจฐ เจซเจฟเจฒเจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ 16-เจฌเจฟเฉฑเจŸ เจ†เจกเฉ€เจ“ เจธเจฟเจ—เจจเจฒ เจจเจฎเฉ‚เจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจ -เจฌเจฟเฉฑเจŸ เจเจจเจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเจพ เจนเฉˆ. เจ‰-เจฒเจพเจ… (เจฎเฉ‚-เจฒเจพเจ…)เฅค เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเจพเจธเฉ‡, เจกเฉ€เจ•เฉ‹เจกเจฐ เจซเจฟเจฒเจŸเจฐ เจ‰เจฒเจŸ เจซเฉฐเจ•เจธเจผเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจนเฉ‡เจ เจพเจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเจพ เจŸเฉˆเจ•เจธเจŸ เจนเฉˆ เจœเฉ‹ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจˆ เจ—เจˆ เจธเจ•เฉ€เจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ (เจธเจผเจพเจฎเจฒ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ # เจšเจฟเฉฐเจจเฉเจน เจนเจŸเจพ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹):

/* ะคะฐะนะป mstest6.c ะ˜ะผะธั‚ะฐั‚ะพั€ ะฟัƒะปัŒั‚ะฐ ัƒะฟั€ะฐะฒะปะตะฝะธั ะธ ะฟั€ะธะตะผะฝะธะบะฐ. */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/mssndcard.h>
#include <mediastreamer2/msvolume.h>
#include <mediastreamer2/mstonedetector.h>
#include <mediastreamer2/msrtp.h>
#include <ortp/rtpsession.h>
#include <ortp/payloadtype.h>
/* ะŸะพะดะบะปัŽั‡ะฐะตะผ ะทะฐะณะพะปะพะฒะพั‡ะฝั‹ะน ั„ะฐะนะป ั ั„ัƒะฝะบั†ะธัะผะธ ัƒะฟั€ะฐะฒะปะตะฝะธั ัะพะฑั‹ั‚ะธัะผะธ
* ะผะตะดะธะฐัั‚ั€ะธะผะตั€ะฐ.*/
include <mediastreamer2/mseventqueue.h>
#define PCMU 0
/* ะคัƒะฝะบั†ะธั ะพะฑั€ะฐั‚ะฝะพะณะพ ะฒั‹ะทะพะฒะฐ, ะพะฝะฐ ะฑัƒะดะตั‚ ะฒั‹ะทะฒะฐะฝะฐ ั„ะธะปัŒั‚ั€ะพะผ, ะบะฐะบ ั‚ะพะปัŒะบะพ ะพะฝ
ะพะฑะฝะฐั€ัƒะถะธั‚ ัะพะฒะฟะฐะดะตะฝะธะต ั…ะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบ ะฒั…ะพะดะฝะพะณะพ ัะธะณะฝะฐะปะฐ ั ะทะฐะดะฐะฝะฝั‹ะผะธ. */
static void tone_detected_cb(void *data, MSFilter *f, unsigned int event_id,
MSToneDetectorEvent *ev)
{
printf("ะŸั€ะธะฝัั‚ะฐ ะบะพะผะฐะฝะดะฐ: %sn", ev->tone_name);
}
/*----------------------------------------------------------------------------*/
/* ะคัƒะฝะบั†ะธั ั€ะตะณะธัั‚ั€ะฐั†ะธะธ ั‚ะธะฟะพะฒ ะฟะพะปะตะทะฝั‹ั… ะฝะฐะณั€ัƒะทะพะบ. */
void register_payloads(void)
{
/*ะ ะตะณะธัั‚ั€ะธั€ัƒะตะผ ั‚ะธะฟั‹ ะฝะฐะณั€ัƒะทะพะบ ะฒ ั‚ะฐะฑะปะธั†ะต ะฟั€ะพั„ะธะปะตะน. ะŸะพะทะดะฝะตะต, ะฟะพ ะธะฝะดะตะบััƒ
ะฒะทัั‚ะพะผัƒ ะธะท ะทะฐะณะพะปะพะฒะบะฐ RTP-ะฟะฐะบะตั‚ะฐ ะธะท ัั‚ะพะน ั‚ะฐะฑะปะธั†ั‹ ะฑัƒะดัƒั‚ ะธะทะฒะปะตะบะฐั‚ัŒัั
ะฟะฐั€ะฐะผะตั‚ั€ั‹ ะฝะฐะณั€ัƒะทะบะธ, ะฝะตะพะฑั…ะพะดะธะผั‹ะต ะดะปั ะดะตะบะพะดะธั€ะพะฒะฐะฝะธั ะดะฐะฝะฝั‹ั… ะฟะฐะบะตั‚ะฐ. */
rtp_profile_set_payload (&av_profile, PCMU, &payload_type_pcm8000);
}
/*----------------------------------------------------------------------------*/
/* ะญั‚ะฐ ั„ัƒะฝะบั†ะธั ัะพะทะดะฐะฝะฐ ะธะท ั„ัƒะฝะบั†ะธะธ create_duplex_rtpsession() ะฒ audiostream.c
ะผะตะดะธะฐัั‚ั€ะธะผะตั€ะฐ2. */
static RtpSession *
create_rtpsession (int loc_rtp_port, int loc_rtcp_port,
bool_t ipv6, RtpSessionMode mode)
{
RtpSession *rtpr;
rtpr = rtp_session_new ((int) mode);
rtp_session_set_scheduling_mode (rtpr, 0);
rtp_session_set_blocking_mode (rtpr, 0);
rtp_session_enable_adaptive_jitter_compensation (rtpr, TRUE);
rtp_session_set_symmetric_rtp (rtpr, TRUE);
rtp_session_set_local_addr (rtpr, ipv6 ? "::" : "0.0.0.0", loc_rtp_port,
loc_rtcp_port);
rtp_session_signal_connect (rtpr, "timestamp_jump",
(RtpCallback) rtp_session_resync, 0);
rtp_session_signal_connect (rtpr, "ssrc_changed",
(RtpCallback) rtp_session_resync, 0);
rtp_session_set_ssrc_changed_threshold (rtpr, 0);
rtp_session_set_send_payload_type(rtpr, PCMU);
/* ะŸะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะฒั‹ะบะปัŽั‡ะฐะตะผ RTCP-ัะตััะธัŽ, ั‚ะฐะบ ะบะฐะบ ะฝะฐัˆ ะฟัƒะปัŒั‚ ะฝะต ะฑัƒะดะตั‚ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะตั‘. */
rtp_session_enable_rtcp (rtpr, FALSE);
return rtpr;
}
/*----------------------------------------------------------------------------*/
int main()
{
ms_init();
/* ะกะพะทะดะฐะตะผ ัะบะทะตะผะฟะปัั€ั‹ ั„ะธะปัŒั‚ั€ะพะฒ. */
MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
MSFilter *volume = ms_filter_new(MS_VOLUME_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);
MSFilter *detector = ms_filter_new(MS_TONE_DETECTOR_ID);
/* ะžั‡ะธั‰ะฐะตะผ ะผะฐััะธะฒ ะฝะฐั…ะพะดัั‰ะธะนัั ะฒะฝัƒั‚ั€ะธ ะดะตั‚ะตะบั‚ะพั€ะฐ ั‚ะพะฝะพะฒ, ะพะฝ ะพะฟะธัั‹ะฒะฐะตั‚
* ะพัะพะฑั‹ะต ะฟั€ะธะผะตั‚ั‹ ั€ะฐะทั‹ัะบะธะฒะฐะตะผั‹ั… ัะธะณะฝะฐะปะพะฒ.*/
ms_filter_call_method(detector, MS_TONE_DETECTOR_CLEAR_SCANS, 0);
/* ะŸะพะดะบะปัŽั‡ะฐะตะผ ะบ ั„ะธะปัŒั‚ั€ัƒ ั„ัƒะฝะบั†ะธัŽ ะพะฑั€ะฐั‚ะฝะพะณะพ ะฒั‹ะทะพะฒะฐ. */
ms_filter_set_notify_callback(detector,
(MSFilterNotifyFunc)tone_detected_cb, NULL);
/* ะกะพะทะดะฐะตะผ ะผะฐััะธะฒ, ะบะฐะถะดั‹ะน ัะปะตะผะตะฝั‚ ะบะพั‚ะพั€ะพะณะพ ะพะฟะธัั‹ะฒะฐะตั‚ ั…ะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบัƒ
* ะพะดะฝะพะณะพ ะธะท ั‚ะพะฝะพะฒ, ะบะพั‚ะพั€ั‹ะน ั‚ั€ะตะฑัƒะตั‚ัั ะพะฑะฝะฐั€ัƒะถะธะฒะฐั‚ัŒ: ะขะตะบัั‚ะพะฒะพะต ะธะผั
* ะดะฐะฝะฝะพะณะพ ัะปะตะผะตะฝั‚ะฐ, ั‡ะฐัั‚ะพั‚ะฐ ะฒ ะณะตั€ั†ะฐั…, ะดะปะธั‚ะตะปัŒะฝะพัั‚ัŒ ะฒ ะผะธะปะปะธัะตะบัƒะฝะดะฐั…,
* ะผะธะฝะธะผะฐะปัŒะฝั‹ะน ัƒั€ะพะฒะตะฝัŒ ะพั‚ะฝะพัะธั‚ะตะปัŒะฝะพ 0,775ะ’. */
MSToneDetectorDef scan[6]=
{
{"V+",440, 100, 0.1}, /* ะšะพะผะฐะฝะดะฐ "ะฃะฒะตะปะธั‡ะธั‚ัŒ ะณั€ะพะผะบะพัั‚ัŒ". */
{"V-",540, 100, 0.1}, /* ะšะพะผะฐะฝะดะฐ "ะฃะผะตะฝัŒัˆะธั‚ัŒ ะณั€ะพะผะบะพัั‚ัŒ". */
{"C+",640, 100, 0.1}, /* ะšะพะผะฐะฝะดะฐ "ะฃะฒะตะปะธั‡ะธั‚ัŒ ะฝะพะผะตั€ ะบะฐะฝะฐะปะฐ". */
{"C-",740, 100, 0.1}, /* ะšะพะผะฐะฝะดะฐ "ะฃะผะตะฝัŒัˆะธั‚ัŒ ะฝะพะผะตั€ ะบะฐะฝะฐะปะฐ". */
{"ON",840, 100, 0.1}, /* ะšะพะผะฐะฝะดะฐ "ะ’ะบะปัŽั‡ะธั‚ัŒ ั‚ะตะปะตะฒะธะทะพั€". */
{"OFF", 940, 100, 0.1}/* ะšะพะผะฐะฝะดะฐ "ะ’ั‹ะบะปัŽั‡ะธั‚ัŒ ั‚ะตะปะตะฒะธะทะพั€". */
};
/* ะŸะตั€ะตะดะฐะตะผ "ะฟั€ะธะผะตั‚ั‹" ัะธะณะฝะฐะปะพะฒ ะดะตั‚ะตะบั‚ะพั€ ั‚ะพะฝะพะฒ. */
int i;
for (i = 0; i < 6; i++)
{
ms_filter_call_method(detector, MS_TONE_DETECTOR_ADD_SCAN,
&scan[i]);
}
/* ะกะพะทะดะฐะตะผ ั„ะธะปัŒั‚ั€ั‹ ะบะพะดะตั€ะฐ ะธ ะดะตะบะพะดะตั€ะฐ */
MSFilter *encoder = ms_filter_create_encoder("PCMU");
MSFilter *decoder=ms_filter_create_decoder("PCMU");
/* ะ ะตะณะธัั‚ั€ะธั€ัƒะตะผ ั‚ะธะฟั‹ ะฝะฐะณั€ัƒะทะบะธ. */
register_payloads();
/* ะกะพะทะดะฐะตะผ RTP-ัะตััะธัŽ ะฟะตั€ะตะดะฐั‚ั‡ะธะบะฐ. */
RtpSession *tx_rtp_session = create_rtpsession (8010, 8011, FALSE, RTP_SESSION_SENDONLY);
rtp_session_set_remote_addr_and_port(tx_rtp_session,"127.0.0.1", 7010, 7011);
rtp_session_set_send_payload_type(tx_rtp_session, PCMU);
MSFilter *rtpsend = ms_filter_new(MS_RTP_SEND_ID);
ms_filter_call_method(rtpsend, MS_RTP_SEND_SET_SESSION, tx_rtp_session);
/* ะกะพะทะดะฐะตะผ RTP-ัะตััะธัŽ ะฟั€ะธะตะผะฝะธะบะฐ. */
MSFilter *rtprecv = ms_filter_new(MS_RTP_RECV_ID);
RtpSession *rx_rtp_session = create_rtpsession (7010, 7011, FALSE, RTP_SESSION_RECVONLY);
ms_filter_call_method(rtprecv, MS_RTP_RECV_SET_SESSION, rx_rtp_session);
/* ะกะพะทะดะฐะตะผ ะธัั‚ะพั‡ะฝะธะบะธ ั‚ะฐะบั‚ะพะฒ - ั‚ะธะบะตั€ั‹. */
MSTicker *ticker_tx = ms_ticker_new();
MSTicker *ticker_rx = ms_ticker_new();
/* ะกะพะตะดะธะฝัะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฟะตั€ะตะดะฐั‚ั‡ะธะบะฐ. */
ms_filter_link(voidsource, 0, dtmfgen, 0);
ms_filter_link(dtmfgen, 0, volume, 0);
ms_filter_link(volume, 0, encoder, 0);
ms_filter_link(encoder, 0, rtpsend, 0);
/* ะกะพะตะดะธะฝัะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฟั€ะธั‘ะผะฝะธะบะฐ. */
ms_filter_link(rtprecv, 0, decoder, 0);
ms_filter_link(decoder, 0, detector, 0);
ms_filter_link(detector, 0, snd_card_write, 0);
/* ะŸะพะดะบะปัŽั‡ะฐะตะผ ะธัั‚ะพั‡ะฝะธะบ ั‚ะฐะบั‚ะพะฒ. */
ms_ticker_attach(ticker_tx, voidsource);
ms_ticker_attach(ticker_rx, rtprecv);
/* ะะฐัั‚ั€ะฐะธะฒะฐะตะผ ัั‚ั€ัƒะบั‚ัƒั€ัƒ, ัƒะฟั€ะฐะฒะปััŽั‰ัƒัŽ ะฒั‹ั…ะพะดะฝั‹ะผ ัะธะณะฝะฐะปะพะผ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ. */
MSDtmfGenCustomTone dtmf_cfg;
dtmf_cfg.tone_name[0] = 0;
dtmf_cfg.duration = 1000;
dtmf_cfg.frequencies[0] = 440;
/* ะ‘ัƒะดะตะผ ะณะตะฝะตั€ะธั€ะพะฒะฐั‚ัŒ ะพะดะธะฝ ั‚ะพะฝ, ั‡ะฐัั‚ะพั‚ัƒ ะฒั‚ะพั€ะพะณะพ ั‚ะพะฝะฐ ัƒัั‚ะฐะฝะพะฒะธะผ ะฒ 0. */
dtmf_cfg.frequencies[1] = 0;
dtmf_cfg.amplitude = 1.0;
dtmf_cfg.interval = 0.;
dtmf_cfg.repeat_count = 0.;
/* ะžั€ะณะฐะฝะธะทัƒะตะผ ั†ะธะบะป ัะบะฐะฝะธั€ะพะฒะฐะฝะธั ะฝะฐะถะฐั‚ั‹ั… ะบะปะฐะฒะธัˆ. ะ’ะฒะพะด ะฝัƒะปั ะทะฐะฒะตั€ัˆะฐะตั‚
* ั†ะธะบะป ะธ ั€ะฐะฑะพั‚ัƒ ะฟั€ะพะณั€ะฐะผะผั‹. */
char key='9';
printf("ะะฐะถะผะธั‚ะต ะบะปะฐะฒะธัˆัƒ ะบะพะผะฐะฝะดั‹, ะทะฐั‚ะตะผ ะฒะฒะพะด.n"
"ะ”ะปั ะทะฐะฒะตั€ัˆะตะฝะธั ะฟั€ะพะณั€ะฐะผะผั‹ ะฒะฒะตะดะธั‚ะต 0.n");
while(key != '0')
{
key = getchar();
if ((key >= 49) && (key <= 54))
{
printf("ะžั‚ะฟั€ะฐะฒะปะตะฝะฐ ะบะพะผะฐะฝะดะฐ: %cn", key);
/* ะฃัั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ ั‡ะฐัั‚ะพั‚ัƒ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ ะฒ ัะพะพั‚ะฒะตั‚ัั‚ะฒะธะธ ั
* ะบะพะดะพะผ ะฝะฐะถะฐั‚ะพะน ะบะปะฐะฒะธัˆะธ. */
dtmf_cfg.frequencies[0] = 440 + 100*(key-49);
/* ะ’ะบะปัŽั‡ะฐะตะผ ะทะฒัƒะบะพะฒะพะน ะณะตะฝะตั€ะฐั‚ะพั€ c ะพะฑะฝะพะฒะปะตะฝะฝะพะน ั‡ะฐัั‚ะพั‚ะพะน. */
ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM,
(void*)&dtmf_cfg);
}
/* ะฃะบะปะฐะดั‹ะฒะฐะตะผ ั‚ั€ะตะด ะฒ ัะฟัั‡ะบัƒ ะฝะฐ 20ะผั, ั‡ั‚ะพะฑั‹ ะดั€ัƒะณะธะต ั‚ั€ะตะดั‹
* ะฟั€ะธะปะพะถะตะฝะธั ะฟะพะปัƒั‡ะธะปะธ ะฒั€ะตะผั ะฝะฐ ั€ะฐะฑะพั‚ัƒ. */
ms_usleep(20000);
}
}

เจ…เจธเฉ€เจ‚ เจ•เฉฐเจชเจพเจ‡เจฒ เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚. เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจชเจฟเจ›เจฒเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเจพเจ‚เจ— เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพ, เจชเจฐ เจกเฉ‡เจŸเจพ เจ‡เฉฑเจ• RTP เจธเจŸเฉเจฐเฉ€เจฎ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจ…เจ—เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เจธ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจฆเฉ‹ เจธเฉเจคเฉฐเจคเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจพเจ‚เจ—เฉ‡ - เจ‡เฉฑเจ• เจฐเจฟเจธเฉ€เจตเจฐ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจŸเฉเจฐเจพเจ‚เจธเจฎเฉ€เจŸเจฐ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจŸเจฐเจฎเฉ€เจจเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจพเจ‚เจš เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจนเฉ€, เจ…เจธเฉ€เจ‚ เจธเจฟเจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ TShark เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ RTP เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆเฅค

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

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