Mediastreamer2 āĻ­āĻŋāĻ“āĻ†āĻ‡āĻĒāĻŋ āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻ…āĻ¨ā§āĻŦā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 6

āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ†āĻŽāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻœā§‡āĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛.

RTP āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻĄāĻŋāĻ“ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻž

Mediastreamer2 āĻ­āĻŋāĻ“āĻ†āĻ‡āĻĒāĻŋ āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻ…āĻ¨ā§āĻŦā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 6

āĻļā§‡āĻˇā§‡ āĻĒā§āĻ°āĻŦāĻ¨ā§āĻ§ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŸā§‹āĻ¨ āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸāĻ° āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŸā§‹āĻ¨ āĻĄāĻŋāĻŸā§‡āĻ•ā§āĻŸāĻ° āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻŽā§‹āĻŸ āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛ āĻ¸āĻžāĻ°ā§āĻ•āĻŋāĻŸ āĻāĻ•āĻ¤ā§āĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯āĻž āĻāĻ•āĻ‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻĒā§āĻ°āĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻ°āĻž āĻļāĻŋāĻ–āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ RTP āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ (RFC 3550 - RTP: āĻ°āĻŋāĻ¯āĻŧā§‡āĻ˛-āĻŸāĻžāĻ‡āĻŽ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻšāĻ¨ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛) āĻāĻ•āĻŸāĻŋ āĻ‡āĻĨāĻžāĻ°āĻ¨ā§‡āĻŸ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻĄāĻŋāĻ“ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻ—ā§āĻ°āĻšāĻŖ/āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

RTP āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ (āĻ°āĻŋāĻ¯āĻŧā§‡āĻ˛ āĻŸāĻžāĻ‡āĻŽ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛) āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°āĻž āĻŽāĻžāĻ¨ā§‡ āĻ°āĻŋāĻ¯āĻŧā§‡āĻ˛-āĻŸāĻžāĻ‡āĻŽ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛, āĻāĻŸāĻŋ āĻ…āĻĄāĻŋāĻ“, āĻ­āĻŋāĻĄāĻŋāĻ“, āĻĄā§‡āĻŸāĻž, āĻ°āĻŋāĻ¯āĻŧā§‡āĻ˛ āĻŸāĻžāĻ‡āĻŽā§‡ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻŽāĻ¨ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻĄāĻŋāĻ“ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡āĻ° āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻāĻŽāĻ¨ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒā§‚āĻ°ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻŽāĻžāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻĄāĻŋāĻ“ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ‡āĻ‰āĻĄāĻŋāĻĒāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§‡ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻ•ā§āĻˇāĻ¤āĻŋ āĻŦā§‡āĻļ āĻ—ā§āĻ°āĻšāĻŖāĻ¯ā§‹āĻ—ā§āĻ¯āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ RTP āĻšā§‡āĻĄāĻžāĻ° āĻāĻŦāĻ‚ āĻĒā§āĻ°ā§‡āĻ°āĻŋāĻ¤ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻĨāĻžāĻ•ā§‡āĨ¤ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹āĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻŋāĻ¤ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻ‰ā§ŽāĻ¸ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€, āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¸āĻ‚āĻ•ā§‡āĻ¤ā§‡āĻ° āĻ§āĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻ•ā§āĻ°āĻŽ āĻ¨āĻŽā§āĻŦāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻ āĻŋāĻ• āĻ•ā§āĻ°āĻŽā§‡ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻļā§‡āĻˇā§‡ āĻ¯ā§‡ āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻœāĻžāĻ˛. āĻšā§‡āĻĄāĻžāĻ°ā§‡ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¤āĻĨā§āĻ¯āĻ“ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¤āĻĨāĻžāĻ•āĻĨāĻŋāĻ¤ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨, āĻ¯āĻž āĻšā§‡āĻĄāĻžāĻ°āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻŸāĻžāĻ¸ā§āĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ­āĻŋāĻ¯ā§‹āĻœāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻĄāĻžāĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻĒā§‡āĻ˛ā§‹āĻĄ āĻĨāĻžāĻ•ā§‡āĨ¤ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻ¸āĻ‚āĻ—āĻ āĻ¨ āĻ˛ā§‹āĻĄā§‡āĻ° āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§‹ āĻ¸āĻ‚āĻ•ā§‡āĻ¤, āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§‡āĻ°āĻŋāĻ“ āĻ¸āĻ‚āĻ•ā§‡āĻ¤, āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻšāĻŋāĻ¤ā§āĻ° āĻ˛āĻžāĻ‡āĻ¨ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ° āĻ¨āĻŽā§āĻ¨āĻž āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ˛ā§‹āĻĄā§‡āĻ° āĻ§āĻ°āĻ¨āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ¤-āĻŦāĻŋāĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ RFC3551 (āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻš āĻ…āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻ•āĻ¨āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ RTP āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛) āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻŖā§‡āĻ° āĻ˛ā§‹āĻĄ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡; āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻ˛ā§‹āĻĄā§‡āĻ° āĻĒā§āĻ°āĻ•āĻžāĻ°ā§‡āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻāĻŦāĻ‚ āĻ•ā§‹āĻĄāĻ—ā§āĻ˛āĻŋāĻ° āĻ…āĻ°ā§āĻĨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¯āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤āĻžāĻ°āĻž āĻŽāĻ¨ā§‹āĻ¨ā§€āĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ•āĻŋāĻ›ā§ āĻ•ā§‹āĻĄ āĻ•āĻ ā§‹āĻ°āĻ­āĻžāĻŦā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ˛ā§‹āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŦāĻĻā§āĻ§ āĻ¨āĻ¯āĻŧ; āĻāĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ˛ā§‹āĻĄ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ‰āĻĒāĻ°ā§‡ āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻš āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻ†āĻ•āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ­āĻžāĻœāĻ¨ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (MTU āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°)āĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻāĻŸāĻŋ 1500 āĻŦāĻžāĻ‡āĻŸā§‡āĻ° āĻŦā§‡āĻļāĻŋ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ‡āĻ­āĻžāĻŦā§‡, āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻĒā§āĻ°ā§‡āĻ°āĻŋāĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻŦāĻžāĻĄāĻŧāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ āĻŦāĻžāĻĄāĻŧāĻžāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ°ā§‡, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻāĻŸāĻŋ 50 Hz, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ 50 āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĨ¤ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°ā§‡āĻ°āĻŋāĻ¤ RTP āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻ•ā§āĻ°āĻŽāĻ•ā§‡ RTP āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽ āĻŦāĻ˛āĻŦāĨ¤

āĻ‰āĻ¤ā§āĻ¸ āĻāĻŦāĻ‚ āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ°ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻŸāĻŋ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ¯ā§‡ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻŸāĻžāĻ° āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ°ā§‡āĻ° āĻ†āĻ‡āĻĒāĻŋ āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āĻŸ āĻ¨āĻŽā§āĻŦāĻ° āĻ¯āĻž āĻāĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤āĻž āĻœāĻžāĻ¨ā§‡ā§ˇ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹. āĻ•ā§‹āĻ¨ā§‹ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡, āĻ‰ā§ŽāĻ¸āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ° āĻĢāĻ˛ā§‡ āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ° āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻāĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĨ¤ āĻŽāĻžāĻ¨ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€, āĻāĻ•āĻŸāĻŋ RTP āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻŦāĻž āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻĒā§‹āĻ°ā§āĻŸ āĻ¨āĻŽā§āĻŦāĻ°āĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¸āĻŽāĻžāĻ¨ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻāĻŽāĻ¨ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻžāĻĒāĻ•ā§‡āĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡ āĻœāĻžāĻ¨āĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦ, āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ° āĻ¤āĻžāĻĻā§‡āĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ›ā§‡āĻĄāĻŧā§‡ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻŸāĻžāĻ° āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ°ā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻ¨āĻžāĻŽ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°ā§‡ āĻāĻŸāĻŋāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ¯ā§‡āĻ¸āĻŦ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ—ā§‡āĻ° āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ—ā§āĻŖāĻŽāĻžāĻ¨ āĻŦāĻž āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ°ā§‡āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻœāĻžāĻ¨āĻž, āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻŋāĻĄāĻŦā§āĻ¯āĻžāĻ• āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ° āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻŸāĻžāĻ°āĻ•ā§‡ āĻ¤āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻŽāĻŋāĻ¸ āĻ•āĻ°āĻž āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻœāĻžāĻ¨āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ‡ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛āĻŸāĻŋ RTCP āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡ āĻĒā§āĻ°ā§‡āĻ°āĻŋāĻ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ RFC 3605-āĻ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡ āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ 200..300 āĻŦāĻžāĻ‡āĻŸ, āĻ¤āĻžāĻ‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻāĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻŦā§‹āĻāĻž āĻ¨āĻ¯āĻŧāĨ¤ āĻ¯ā§‡ āĻĒā§‹āĻ°ā§āĻŸ āĻ¨āĻŽā§āĻŦāĻ°ā§‡ RTCP āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ āĻ¸ā§‡āĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻŦāĻŋāĻœā§‹āĻĄāĻŧ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¯ā§‡ āĻĒā§‹āĻ°ā§āĻŸ āĻ¨āĻŽā§āĻŦāĻ° āĻĨā§‡āĻ•ā§‡ RTP āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽ āĻ†āĻ¸ā§‡ āĻ¤āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻĄāĻŧ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ āĻ¨āĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ° āĻāĻŦāĻ‚ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻ‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ°, āĻāĻ–āĻ¨ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻļāĻžāĻ˛ā§€āĻ¨, āĻšāĻžāĻšāĻŋāĻĻāĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋāĨ¤

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡, āĻĄā§‡āĻŸāĻž āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ āĻ¸āĻžāĻ°ā§āĻ•āĻŋāĻŸ, āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, āĻĻā§āĻŸāĻŋ āĻ…āĻ‚āĻļā§‡ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤ āĻšāĻŦā§‡: āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻŸāĻŋāĻ‚ āĻĒāĻžāĻĨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖā§‡āĻ° āĻĒāĻĨāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ‚āĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ˜āĻĄāĻŧāĻŋāĻ° āĻ‰ā§ŽāĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦ, āĻ¯ā§‡āĻŽāĻ¨āĻŸāĻŋ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ āĻ›āĻŦāĻŋāĻ¤ā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

RTP āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŽā§āĻ–ā§€ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻŸāĻžāĻ° āĻāĻŦāĻ‚ āĻ°āĻŋāĻ¸āĻŋāĻ­āĻžāĻ° āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻāĻ•āĻ‡ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ°ā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§‡ - āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻāĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ­ā§āĻ°āĻŽāĻŖ āĻ•āĻ°āĻŦā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ RTP āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ¤ā§‡, āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ° āĻĻā§āĻŸāĻŋ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡: MS_RTP_SEND āĻāĻŦāĻ‚ MS_RTP_RECVāĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧāĻŸāĻŋ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ†āĻ°āĻŸāĻŋāĻĒāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ RTP āĻ¸ā§‡āĻļāĻ¨ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĒāĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¯āĻž āĻšāĻ¯āĻŧ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽāĻ•ā§‡ RTP āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻŦāĻž āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤āĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ°ā§‡āĻ° āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻ†āĻ°āĻŸāĻŋāĻĒāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‡āĻ˛ā§‡ āĻ¨āĻž, āĻ¤āĻžāĻ‡ MS_RTP_SEND-āĻ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ¨āĻ•ā§‹āĻĄāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻž 16-āĻŦāĻŋāĻŸ āĻ…āĻĄāĻŋāĻ“ āĻ¸āĻŋāĻ—āĻ¨ā§āĻ¯āĻžāĻ˛ āĻ¨āĻŽā§āĻ¨āĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ†āĻŸ-āĻŦāĻŋāĻŸ āĻāĻ¨āĻ•ā§‹āĻĄā§‡āĻĄā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤ u-law (mu-law). āĻĒā§āĻ°āĻžāĻĒā§āĻ¤āĻŋāĻ° āĻĻāĻŋāĻ•ā§‡, āĻĄāĻŋāĻ•ā§‹āĻĄāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻ¨ā§€āĻšā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻĒāĻžāĻ ā§āĻ¯ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻšāĻŋāĻ¤ā§āĻ°ā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻ¸ā§āĻ•āĻŋāĻŽāĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°ā§‡ (āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻ¨āĻžāĻ° āĻ†āĻ—ā§‡ # āĻšāĻŋāĻšā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ­ā§āĻ˛āĻŦā§‡āĻ¨ āĻ¨āĻž):

/* ФаКĐģ 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨