แž€แžถแžšแžšแžปแž€แžšแž€แž˜แŸ‰แžถแžŸแŸŠแžธแž“ Mediastreamer2 VoIP แŸ” แž•แŸ’แž“แŸ‚แž€แž‘แžธ 2

แžŸแž˜แŸ’แž—แžถแžšแŸˆแž“แŸƒแžขแžแŸ’แžแž”แž‘แž‚แžบแž™แž€แž–แžธแžแŸ’แž‰แžปแŸ† แž”แŸ‰แžปแžŸแŸ’แžแžทแŸ zen.

แž€แžถแžšแžšแžปแž€แžšแž€แž˜แŸ‰แžถแžŸแŸŠแžธแž“ Mediastreamer2 VoIP แŸ” แž•แŸ’แž“แŸ‚แž€แž‘แžธ 2

แž€แžถแžšแž”แž„แŸ’แž€แžพแžแžงแž”แž€แžšแžŽแŸแž”แž„แŸ’แž€แžพแžแžŸแž˜แŸ’แž›แŸแž„

แž“แŸ…แž˜แžปแž“แž“แŸแŸ‡แŸ” แžขแžแŸ’แžแž”แž‘ แž™แžพแž„แž”แžถแž“แžŠแŸ†แžกแžพแž„แž”แžŽแŸ’แžŽแžถแž›แŸแž™แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž•แŸ’แžŸแž–แŸ’แžœแž•แŸ’แžŸแžถแž™ แžงแž”แž€แžšแžŽแŸแžขแž—แžทแžœแžŒแŸ’แžแž“แŸ แž“แžทแž„แžŸแžถแž€แž›แŸ’แž”แž„แž˜แžปแžแž„แžถแžšแžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸแžŠแŸ„แž™แž”แž„แŸ’แž€แžพแžแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŸแžถแž€แž›แŸ’แž”แž„แŸ”

แžแŸ’แž„แŸƒแž“แŸแŸ‡แž™แžพแž„แž“แžนแž„แž”แž„แŸ’แž€แžพแžแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž˜แžฝแž™แžŠแŸ‚แž›แžขแžถแž…แž”แž„แŸ’แž€แžพแžแžŸแž‰แŸ’แž‰แžถแžŸแŸ†แžกแŸแž„แž“แŸ…แž›แžพแž€แžถแžแžŸแŸ†แžกแŸแž„แŸ” แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž“แŸแŸ‡ แž™แžพแž„แžแŸ’แžšแžผแžœแž—แŸ’แž‡แžถแž”แŸ‹แžแž˜แŸ’แžšแž„แž‘แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ€แž‚แŸ’แžœแžธแž”แž„แŸ’แž€แžพแžแžŸแŸ†แžกแŸแž„แžŠแŸ‚แž›แž”แž„แŸ’แž แžถแž‰แžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ–

แž€แžถแžšแžšแžปแž€แžšแž€แž˜แŸ‰แžถแžŸแŸŠแžธแž“ Mediastreamer2 VoIP แŸ” แž•แŸ’แž“แŸ‚แž€แž‘แžธ 2

แž™แžพแž„แžขแžถแž“แžŠแŸ’แž™แžถแž€แŸ’แžšแžถแž˜แž–แžธแž†แŸ’แžœแŸแž„แž‘แŸ…แžŸแŸ’แžแžถแŸ† แž“แŸแŸ‡แž‚แžบแž‡แžถแž‘แžทแžŸแžŠแŸ…แžŠแŸ‚แž›แž›แŸ†แž แžผแžšแž‘แžทแž“แŸ’แž“แž“แŸแž™แžšแž”แžŸแŸ‹แž™แžพแž„แž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธแŸ” แž–แŸ’แžšแžฝแž‰แž€แŸแž…แž„แŸ’แžขแžปแž›แž”แž„แŸ’แž แžถแž‰แžขแŸ†แž–แžธแžšแžฟแž„แž“แŸแŸ‡แžŠแŸ‚แžšแŸ” แž…แžแžปแž€แŸ„แžŽแž€แŸ‚แž„แž”แž„แŸ’แž แžถแž‰แž–แžธแžแž˜แŸ’แžšแž„แžŠแŸ‚แž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แŸ’แž›แžปแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™ แž“แžทแž„แž”แž‰แŸ’แž…แŸแž‰แž›แž‘แŸ’แž’แž•แž›แŸ” แž“แŸ…แžแžถแž„แž€แŸ’แž“แžปแž„แž…แžแžปแž€แŸ„แžŽแž€แŸ‚แž„ แžแžฝแž“แžถแž‘แžธแžšแž”แžŸแŸ‹แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แŸ’แžขแžปแž›แž”แž„แŸ’แž แžถแž‰ แž แžพแž™แž”แŸ’แžšแž—แŸแž‘แžแž˜แŸ’แžšแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แŸ’แžขแžปแž›แž”แž„แŸ’แž แžถแž‰แž‡แžถแžขแž€แŸ’แžŸแžšแž’แŸ†แžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ” แž–แŸ’แžšแžฝแž‰แžŠแŸ‚แž›แž—แŸ’แž‡แžถแž”แŸ‹แž…แžแžปแž€แŸ„แžŽแž€แŸ‚แž„แž‚แžบแž‡แžถแž‡แžฝแžšแž‘แžทแž“แŸ’แž“แž“แŸแž™แžŠแŸ‚แž›แž”แŸ’แž›แžปแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž‰แŸ’แž‡แžผแž“แž–แžธแžแž˜แŸ’แžšแž„แž‘แŸ…แžแž˜แŸ’แžšแž„แŸ” แž‡แžถแž‘แžผแž‘แŸ… แžแž˜แŸ’แžšแž„แž˜แžฝแž™แžขแžถแž…แž˜แžถแž“แž’แžถแžแžปแž…แžผแž› แž“แžทแž„แž›แž‘แŸ’แž’แž•แž›แž‡แžถแž…แŸ’แžšแžพแž“แŸ”

แžœแžถแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž‡แžถแž˜แžฝแž™แž“แžนแž„แž”แŸ’แžšแž—แž–แž“แžถแžกแžทแž€แžถ แžŠแŸ‚แž›แž€แŸ†แžŽแžแŸ‹แž–แŸแž›แžœแŸแž›แžถแžŠแŸ‚แž›แž‘แžทแž“แŸ’แž“แž“แŸแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แžŽแž“แžถแž“แŸ…แž€แŸ’แž“แžปแž„แžแž˜แŸ’แžšแž„แŸ” แž™แŸ„แž„แž‘แŸ…แžแžถแž˜แžœแžŠแŸ’แžแž“แžถแžกแžทแž€แžถแžšแž”แžŸแŸ‹แžœแžถ แžแž˜แŸ’แžšแž„แž“แžธแž˜แžฝแž™แŸ—แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แŸ’แž›แžปแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แž‘แžถแŸ†แž„แžขแžŸแŸ‹แžŠแŸ‚แž›แž˜แžถแž“แž“แŸ…แž€แžถแžšแž”แž‰แŸ’แž…แžผแž›แžšแž”แžŸแŸ‹แžœแžถแŸ” แž แžพแž™แžŠแžถแž€แŸ‹แž”แŸ’แž›แžปแž€แž‡แžถแž˜แžฝแž™แž“แžนแž„แž›แž‘แŸ’แž’แž•แž›แž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แž‡แžฝแžšแŸ” แžŠแŸ†แž”แžผแž„ แžแž˜แŸ’แžšแž„แžŠแŸ‚แž›แž“แŸ…แž‡แžทแžแž”แŸ†แž•แžปแžแž‘แŸ…แž“แžนแž„แž”แŸ’แžšแž—แž–แž“แžถแžกแžทแž€แžถแž’แŸ’แžœแžพแž€แžถแžšแž‚แžŽแž“แžถ แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แžแž˜แŸ’แžšแž„แžŠแŸ‚แž›แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ…แž›แž‘แŸ’แž’แž•แž›แžšแž”แžŸแŸ‹แžœแžถ (แžขแžถแž…แž˜แžถแž“แž›แž‘แŸ’แž’แž•แž›แž‡แžถแž…แŸ’แžšแžพแž“) แž แžพแž™แžŠแžผแž…แŸ’แž“แŸแŸ‡แž“แŸ…แž›แžพแŸ” แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแžแž˜แŸ’แžšแž„แž…แžปแž„แž€แŸ’แžšแŸ„แž™แž“แŸ…แž€แŸ’แž“แžปแž„แžŸแž„แŸ’แžœแžถแž€แŸ‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž…แž”แŸ‹ แž€แžถแžšแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž“แžนแž„แžˆแž”แŸ‹แžšแž แžผแžแžŠแž›แŸ‹แž“แžถแžกแžทแž€แžถแžแŸ’แž˜แžธแž˜แž€แžŠแž›แŸ‹แŸ” Beats แžแžถแž˜แž›แŸ†แž“แžถแŸ†แžŠแžพแž˜ แž’แŸ’แžœแžพแžแžถแž˜แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž› 10 แž˜แžทแž›แŸ’แž›แžธแžœแžทแž“แžถแž‘แžธแŸ”

แž…แžผแžšแž™แžพแž„แžแŸ’แžšแž›แž”แŸ‹แž‘แŸ…แžŠแŸ’แž™แžถแž€แŸ’แžšแžถแž˜แžšแž”แžŸแŸ‹แž™แžพแž„แŸ” แžœแžŠแŸ’แžแž“แžถแžกแžทแž€แžถแž˜แž€แžŠแž›แŸ‹แž€แžถแžšแž”แž‰แŸ’แž…แžผแž›แž“แŸƒแž”แŸ’แžšแž—แž–แžŸแŸ’แž„แžถแžแŸ‹ แž“แŸแŸ‡แž‚แžบแž‡แžถแžแž˜แŸ’แžšแž„ แžŠแŸ‚แž›แžšแžœแž›แŸ‹แž”แž„แŸ’แž€แžพแžแž”แŸ’แž›แžปแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŠแŸ‚แž›แž˜แžถแž“แž›แŸแžแžŸแžผแž“แŸ’แž™แž“แŸ…แž‘แžทแž“แŸ’แž“แž•แž›แžšแž”แžŸแŸ‹แžœแžถแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžœแžŠแŸ’แžแž“แžถแžกแžทแž€แžถแž“แžธแž˜แžฝแž™แŸ—แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแž™แžพแž„แž…แžถแžแŸ‹แž‘แžปแž€แž”แŸ’แž›แžปแž€แž“แŸแŸ‡แž‡แžถแž”แžŽแŸ’แžแžปแŸ†แž“แŸƒแžŸแŸ†แžŽแžถแž€แžŸแŸ†แžกแŸแž„ แž“แŸ„แŸ‡แž‚แŸ’แž˜แžถแž“แžขแŸ’แžœแžธแž€แŸ’แžšแŸ…แž–แžธแž—แžถแž–แžŸแŸ’แž„แŸ€แž˜แžŸแŸ’แž„แžถแžแŸ‹แž“แŸ„แŸ‡แž‘แŸแŸ” แž“แŸ… glance แžŠแŸ†แž”แžผแž„ แžœแžถแž แžถแž€แŸ‹แžŠแžผแž…แž‡แžถแž…แž˜แŸ’แž›แŸ‚แž€แž€แŸ’แž“แžปแž„แž€แžถแžšแž”แž„แŸ’แž€แžพแžแž”แŸ’แž›แžปแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŠแŸ„แž™แž—แžถแž–แžŸแŸ’แž„แŸ€แž˜แžŸแŸ’แž„แžถแžแŸ‹ - แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž‘แžถแŸ†แž„แžขแžŸแŸ‹ แžœแžถแž˜แžทแž“แžขแžถแž…แžŸแŸ’แžแžถแž”แŸ‹แž”แžถแž“ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž”แŸ’แž›แžปแž€แž‘แžถแŸ†แž„แž“แŸแŸ‡แž‚แžบแž…แžถแŸ†แž”แžถแž…แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž“แŸƒแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แž„แŸ’แž€แžพแžแžŸแž‰แŸ’แž‰แžถแžŸแŸ†แžกแŸแž„แŸ” แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž—แŸ’แž›แžพแž„แž”แŸ’แžšแžพแž”แŸ’แž›แžปแž€แž‘แžถแŸ†แž„แž“แŸแŸ‡แžŠแžผแž…แž‡แžถแžŸแž“แŸ’แž›แžนแž€แž€แŸ’แžšแžŠแžถแžŸแž‘แž‘แŸ แž€แžแŸ‹แžแŸ’แžšแžถแžŸแŸ†แžŽแžถแž€แžŸแŸ†แžกแŸแž„แž‘แŸ…แž€แŸ’แž“แžปแž„แž–แžฝแž€แžœแžถแŸ” แž“แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ’แžแžถแž“แž—แžถแž–แž’แž˜แŸ’แž˜แžแžถแžšแž”แžŸแŸ‹แžœแžถ แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž—แŸ’แž›แžพแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž”แžทแž‘ แž แžพแž™แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž”แž‰แŸ’แž‡แžผแž“แž”แŸ’แž›แžปแž€แž”แž‰แŸ’แž…แžผแž›แž‘แŸ…แž‘แžทแž“แŸ’แž“แž•แž›แŸ” แžŠแžผแž…แŸ’แž“แŸแŸ‡ แž”แŸ’แž›แžปแž€แž“แŸƒแž—แžถแž–แžŸแŸ’แž„แŸ€แž˜แžŸแŸ’แž„แžถแžแŸ‹แž†แŸ’แž›แž„แž€แžถแžแŸ‹แž˜แžทแž“แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžแžถแž˜แžšแž™แŸˆแžŸแŸ€แž‚แŸ’แžœแžธแž‘แžถแŸ†แž„แž˜แžผแž›แž–แžธแž†แŸ’แžœแŸแž„แž‘แŸ…แžŸแŸ’แžแžถแŸ† แžŠแŸ„แž™แž”แž‰แŸ’แž…แž”แŸ‹แžŠแŸ„แž™แž€แžถแžแžŸแŸ†แžกแŸแž„แŸ” แžŠแŸ‚แž›แž™แž€แž”แŸ’แž›แžปแž€แžŠแŸ„แž™แžŸแŸ’แž„แŸ€แž˜แžŸแŸ’แž„แžถแžแŸ‹แž–แžธแž‡แžฝแžšแžŠแŸ‚แž›แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ…แž€แžถแžšแž”แž‰แŸ’แž…แžผแž›แžšแž”แžŸแŸ‹แžœแžถแŸ”

แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžขแŸ’แžœแžธแž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž”แŸ’แžšแžŸแžทแž“แž”แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž—แŸ’แž›แžพแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžแž›แŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžฑแŸ’แž™แž…แžถแž€แŸ‹แžŸแŸ†แžกแŸแž„ แžœแžถแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž”แž„แŸ’แž€แžพแžแžŸแŸ†แžŽแžถแž€แžŸแŸ†แžกแŸแž„ แž แžพแž™แž‡แŸ†แž“แžฝแžŸแž–แžฝแž€แžœแžถแžŠแŸ„แž™แž‚แŸ†แžšแžผแž“แŸ…แž€แŸ’แž“แžปแž„แž”แŸ’แž›แžปแž€แž”แž‰แŸ’แž…แžผแž› แž แžพแž™แžŠแžถแž€แŸ‹แž”แŸ’แž›แžปแž€แžŠแŸ‚แž›แž”แžถแž“แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž“แŸ…แž‘แžทแž“แŸ’แž“แž•แž›แŸ” แž€แžถแžแžŸแŸ†แžกแŸแž„แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž…แžถแž€แŸ‹แžŸแŸ†แžกแŸแž„แŸ” แžแžถแž„โ€‹แž€แŸ’แžšแŸ„แž˜โ€‹แž“แŸแŸ‡โ€‹แž‡แžถโ€‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธโ€‹แžŠแŸ‚แž›โ€‹แžขแž“แžปแžœแžแŸ’แžโ€‹แž‚แž˜แŸ’แžšแŸ„แž„โ€‹แž€แžถแžšแž„แžถแžšโ€‹แžŠแŸ‚แž›โ€‹แž”แžถแž“โ€‹แž–แžทแž–แžŽแŸŒแž“แžถโ€‹แžแžถแž„แž›แžพแŸ–

/* ะคะฐะนะป 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)

แžŠแŸ‚แž›แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แž‘แžธแž˜แžฝแž™แž‡แžถแž‘แŸ’แžšแž“แžทแž…แž‘แŸ…แžแž˜แŸ’แžšแž„แž”แŸ’แžšแž—แž– แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แž‘แžธแž–แžธแžšแž‚แžบแž‡แžถแž›แŸแžแž›แž‘แŸ’แž’แž•แž›แž”แŸ’แžšแž—แž– (แž…แŸ†แžŽแžถแŸ†แžแžถแž’แžถแžแžปแž”แž‰แŸ’แž…แžผแž› แž“แžทแž„แž›แž‘แŸ’แž’แž•แž›แžแŸ’แžšแžผแžœแž”แžถแž“แžšแžถแž”แŸ‹แž›แŸแžแžŠแŸ„แž™แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž–แžธแžŸแžผแž“แŸ’แž™)แŸ” แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แž‘แžธแž”แžธแž‚แžบแž‡แžถแž‘แŸ’แžšแž“แžทแž…แž‘แŸ…แžแž˜แŸ’แžšแž„แžขแŸ’แž“แž€แž‘แž‘แžฝแž› แž‘แžธแž”แžฝแž“แž‚แžบแž‡แžถแž›แŸแžแž”แž‰แŸ’แž…แžผแž›แžขแŸ’แž“แž€แž‘แž‘แžฝแž›แŸ”

แžแž˜แŸ’แžšแž„แž‘แžถแŸ†แž„แžขแžŸแŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž—แŸ’แž‡แžถแž”แŸ‹ แž แžพแž™แž”แŸ’แžšแž—แž–แž“แžถแžกแžทแž€แžถแžแŸ’แžšแžผแžœแž”แžถแž“แž—แŸ’แž‡แžถแž”แŸ‹แž…แžปแž„แž€แŸ’แžšแŸ„แž™ (แžแž‘แŸ…แž“แŸแŸ‡ แž™แžพแž„แž“แžนแž„แž แŸ…แžœแžถแžแžถ ticker แž™แŸ‰แžถแž„แžŸแžถแž˜แž‰แŸ’แž‰)แŸ” แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž“แŸ„แŸ‡แžŸแŸ€แž‚แŸ’แžœแžธแžŸแŸ†แžกแŸแž„แžšแž”แžŸแŸ‹แž™แžพแž„แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžŠแŸ†แžŽแžพแžšแž€แžถแžš แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž‚แŸ’แž˜แžถแž“แžขแŸ’แžœแžธแžขแžถแž…แž›แžบแž“แŸ…แž€แŸ’แž“แžปแž„แžงแž”แž€แžšแžŽแŸแž”แŸ†แž–แž„แžŸแž˜แŸ’แž›แŸแž„แž€แžปแŸ†แž–แŸ’แž™แžผแž‘แŸแžšแž“แŸ…แžกแžพแž™แž‘แŸ - แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž”แž„แŸ’แž€แžพแžแžŸแŸ†แžกแŸแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž”แžทแž‘ แž แžพแž™แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž†แŸ’แž›แž„แž€แžถแžแŸ‹แž”แŸ’แž›แžปแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แž”แž‰แŸ’แž…แžผแž›แžŠแŸ„แž™แžŸแŸ’แž„แŸ€แž˜แžŸแŸ’แž„แžถแžแŸ‹แŸ” แžŠแžพแž˜แŸ’แž”แžธแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž”แž„แŸ’แž€แžพแžแžŸแž˜แŸ’แž›แŸแž„ แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžšแžแž˜แŸ’แžšแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž—แŸ’แž›แžพแž„แŸ”

แž™แžพแž„แž“แžนแž„แž”แž„แŸ’แž€แžพแžแžŸแž‰แŸ’แž‰แžถแž–แžธแžšแžŸแž˜แŸ’แž›แŸแž„ (DTMF) แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž“แžนแž„แž€แžถแžšแž…แžปแž…แž”แŸŠแžผแžแžปแž„ "1" แž“แŸ…แž›แžพแž‘แžผแžšแžŸแŸแž–แŸ’แž‘แŸ” แžŠแžพแž˜แŸ’แž”แžธแž’แŸ’แžœแžพแžŠแžผแž…แž“แŸแŸ‡แž™แžพแž„แž”แŸ’แžšแžพแž˜แžปแžแž„แžถแžš ms_filter_call_method() แž™แžพแž„แž แŸ…แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžš MS_DTMF_GEN_PLAY แžŠแŸ„แž™แž†แŸ’แž›แž„แž€แžถแžแŸ‹แžœแžถแž‡แžถแžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹ แž…แž„แŸ’แžขแžปแž›แž‘แŸ…แž›แŸแžแž€แžผแžŠแžŠแŸ‚แž›แžŸแž‰แŸ’แž‰แžถแž…แžถแž€แŸ‹แžŸแžถแžšแžแŸ’แž˜แžธแž‚แžฝแžšแžแŸ‚แžแŸ’แžšแžผแžœแž‚แŸ’แž“แžถแŸ”

แžขแŸ’แžœแžธแžŠแŸ‚แž›แž“แŸ…แžŸแž›แŸ‹แž‚แžบแžแŸ’แžšแžผแžœแž…แž„แž€แŸ’แžšแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแŸ–

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

แž แžพแž™แžšแžแŸ‹แŸ–

$ ./mstest2

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž€แž˜แŸ’แž˜แžœแžทแž’แžธ แžขแŸ’แž“แž€แž“แžนแž„แžฎแžŸแž‰แŸ’แž‰แžถแžŸแŸ†แžกแŸแž„แžแŸ’แž›แžธแž˜แžฝแž™แžŠแŸ‚แž›แž˜แžถแž“แžŸแž˜แŸ’แž›แŸแž„แž–แžธแžšแž“แŸ…แž€แŸ’แž“แžปแž„แžงแž”แž€แžšแžŽแŸแž”แŸ†แž–แž„แžŸแž˜แŸ’แž›แŸแž„แž€แžปแŸ†แž–แŸ’แž™แžผแž‘แŸแžšแŸ”

แž™แžพแž„โ€‹แž”แžถแž“โ€‹แž”แž„แŸ’แž€แžพแž แž“แžทแž„โ€‹แž”แžพแž€โ€‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšโ€‹แžŸแŸ€แž‚แŸ’แžœแžธโ€‹แžŸแŸ†แžกแŸแž„โ€‹แžŠแŸ†แž”แžผแž„โ€‹แžšแž”แžŸแŸ‹โ€‹แž™แžพแž„แŸ” แž™แžพแž„แž”แžถแž“แžƒแžพแž‰แž–แžธแžšแž”แŸ€แž”แž”แž„แŸ’แž€แžพแž filter instances แžšแž”แŸ€แž”แž—แŸ’แž‡แžถแž”แŸ‹แž–แžฝแž€แžœแžถ แž“แžทแž„แžšแž”แŸ€แž”แž แŸ… method แžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸแŸ” แžแžŽแŸˆแž–แŸแž›แžŠแŸ‚แž›แž™แžพแž„แžŸแž”แŸ’แž”แžถแž™แž…แžทแžแŸ’แžแž‡แžถแž˜แžฝแž™แž“แžนแž„แž—แžถแž–แž‡แŸ„แž‚แž‡แŸแž™แžŠแŸ†แž”แžผแž„แžšแž”แžŸแŸ‹แž™แžพแž„ แž™แžพแž„แž“แŸ…แžแŸ‚แžแŸ’แžšแžผแžœแž™แž€แž…แžทแžแŸ’แžแž‘แžปแž€แžŠแžถแž€แŸ‹แž›แžพแž€แžถแžšแž–แžทแžแžŠแŸ‚แž›แžแžถแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžšแž”แžŸแŸ‹แž™แžพแž„แž˜แžทแž“แžŠแŸ„แŸ‡แž›แŸ‚แž„แžขแž„แŸ’แž‚แž…แž„แž…แžถแŸ†แžŠแŸ‚แž›แž”แžถแž“แž”แž˜แŸ’แžšแžปแž„แž‘แžปแž€แž˜แžปแž“แž–แŸแž›แž…แŸแž‰แŸ” แž“แŸ…แž”แž“แŸ’แž‘แžถแž”แŸ‹ แžขแžแŸ’แžแž”แž‘ แž™แžพแž„แž“แžนแž„แžšแŸ€แž“แžŸแž˜แŸ’แžขแžถแžแžแŸ’แž›แžฝแž“แž™แžพแž„แŸ”

แž”แŸ’แžšแž—แž–: www.habr.com

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹