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

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

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

āĻĄāĻžāĻŸāĻž āĻŽā§āĻ­āĻŽā§‡āĻ¨ā§āĻŸ āĻŽā§‡āĻ•āĻžāĻ¨āĻŋāĻœāĻŽ

  • āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• dblk_t
  • āĻŦāĻžāĻ°ā§āĻ¤āĻž mblk_t
  • mblk_t āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨
  • āĻ¸āĻžāĻ°āĻŋ āĻ¸āĻžāĻ°āĻŋ_āĻŸāĻŋ
  • quees queue_t āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨
  • āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡
  • āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ—ā§āĻ°āĻžāĻĢā§‡āĻ° āĻ¸āĻŋāĻ—āĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ
  • āĻĒāĻ°ā§āĻĻāĻžāĻ° āĻ†āĻĄāĻŧāĻžāĻ˛ā§‡ āĻŸāĻŋāĻ•āĻžāĻ° āĻ¤ā§ŽāĻĒāĻ°āĻ¤āĻž
  • āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻ‡āĻœāĻžāĻ° (MSBufferizer)
  • MSBufferizer āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨

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

āĻĄāĻžāĻŸāĻž āĻŽā§āĻ­āĻŽā§‡āĻ¨ā§āĻŸ āĻŽā§‡āĻ•āĻžāĻ¨āĻŋāĻœāĻŽ

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

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

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

āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• dblk_t

āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻāĻ•āĻŸāĻŋ āĻšā§‡āĻĄāĻžāĻ° āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ—āĻ āĻŋāĻ¤āĨ¤ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽāĻŸāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡,

typedef struct datab
{
unsigned char *db_base; // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ĐŊĐ°Ņ‡Đ°ĐģĐž ĐąŅƒŅ„ĐĩŅ€ Đ´Đ°ĐŊĐŊŅ‹Ņ….
unsigned char *db_lim;  // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ĐēĐžĐŊĐĩŅ† ĐąŅƒŅ„ĐĩŅ€ Đ´Đ°ĐŊĐŊŅ‹Ņ….
void (*db_freefn)(void*); // ФŅƒĐŊĐēŅ†Đ¸Ņ ĐžŅĐ˛ĐžĐąĐžĐļĐ´ĐĩĐŊиŅ ĐŋĐ°ĐŧŅŅ‚и ĐŋŅ€Đ¸ ŅƒĐ´Đ°ĐģĐĩĐŊии ĐąĐģĐžĐēĐ°.
int db_ref; // ĐĄŅ‡ĐĩŅ‚Ņ‡Đ¸Đē ŅŅŅ‹ĐģĐžĐē.
} dblk_t;

āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŦāĻžāĻĢāĻžāĻ°ā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡, āĻŦāĻžāĻĢāĻžāĻ°ā§‡āĻ° āĻļā§‡āĻˇā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĨāĻžāĻ•ā§‡āĨ¤ āĻšā§‡āĻĄāĻžāĻ°ā§‡ āĻļā§‡āĻˇ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ db_ref — āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°, āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻļā§‚āĻ¨ā§āĻ¯ā§‡ āĻĒā§ŒāĻāĻ›āĻžāĻ¯āĻŧ, āĻāĻŸāĻŋ āĻŽā§‡āĻŽāĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ‡ āĻŦā§āĻ˛āĻ•āĻŸāĻŋ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ datab_alloc() , āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻžāĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻšā§‡āĻĄāĻžāĻ°ā§‡āĻ° āĻĒāĻ°āĻĒāĻ°āĻ‡ āĻŽā§‡āĻŽāĻ°āĻŋāĻ¤ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻ…āĻ¨ā§āĻ¯ āĻ¸āĻŦ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻŦāĻžāĻĢāĻžāĻ° āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ•ā§‹āĻĨāĻžāĻ“ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ¸āĻŋāĻ—āĻ¨ā§āĻ¯āĻžāĻ˛ā§‡āĻ° āĻ¨āĻŽā§āĻ¨āĻž āĻŦāĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĄā§‡āĻŸāĻž āĻĨāĻžāĻ•āĻŦā§‡ āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ā§ˇ

āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

dblk_t *datab_alloc(int size);

āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨āĻĒā§āĻŸ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻŦā§āĻ˛āĻ•āĻŸāĻŋ āĻ¯ā§‡ āĻĄā§‡āĻŸāĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŦā§‡ āĻ¤āĻžāĻ° āĻ†āĻ•āĻžāĻ° āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻ•ā§ƒāĻ¤ āĻŽā§‡āĻŽāĻ°āĻŋāĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻšā§‡āĻĄāĻžāĻ° - āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° - āĻ°āĻžāĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ°āĻ“ āĻŽā§‡āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻĄā§‡āĻŸāĻžāĻŦ. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŸāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ˜āĻŸāĻŦā§‡ āĻ¨āĻž; āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻšā§‡āĻĄāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ āĻ¤āĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋ db_base āĻ¤āĻĨā§āĻ¯ āĻāĻ˛āĻžāĻ•āĻžāĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤, āĻāĻŦāĻ‚ db_lim āĻ¤āĻžāĻ° āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ˛āĻŋāĻ™ā§āĻ• āĻ—āĻŖāĻ¨āĻž db_ref āĻāĻ• āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ. āĻĄā§‡āĻŸāĻž āĻ•ā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻļā§‚āĻ¨ā§āĻ¯ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻŦāĻžāĻ°ā§āĻ¤āĻž mblk_t

āĻ¯ā§‡āĻŽāĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¸āĻžāĻ°āĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻŸāĻžāĻ‡āĻĒ āĻšāĻ¯āĻŧ mblk_t, āĻāĻŸāĻž āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:

typedef struct msgb
{
  struct msgb *b_prev;   // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ĐŋŅ€ĐĩĐ´Ņ‹Đ´ŅƒŅ‰Đ¸Đš ŅĐģĐĩĐŧĐĩĐŊŅ‚ ŅĐŋиŅĐēĐ°.
  struct msgb *b_next;   // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ŅĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đš ŅĐģĐĩĐŧĐĩĐŊŅ‚ ŅĐŋиŅĐēĐ°.
  struct msgb *b_cont;   // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ Đ´ĐģŅ ĐŋОдĐēĐģĐĩĐšĐēи Đē ŅĐžĐžĐąŅ‰ĐĩĐŊиŅŽ Đ´Ņ€ŅƒĐŗиŅ… ŅĐžĐžĐąŅ‰ĐĩĐŊиК, Đ´ĐģŅ ŅĐžĐˇĐ´Đ°ĐŊиŅ ĐēĐžŅ€Ņ‚ĐĩĐļĐ° ŅĐžĐžĐąŅ‰ĐĩĐŊиК.
  struct datab *b_datap; // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Ņƒ ĐąĐģĐžĐēĐ° Đ´Đ°ĐŊĐŊŅ‹Ņ….
  unsigned char *b_rptr; // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ĐŊĐ°Ņ‡Đ°ĐģĐž ОйĐģĐ°ŅŅ‚и Đ´Đ°ĐŊĐŊŅ‹Ņ… Đ´ĐģŅ Ņ‡Ņ‚ĐĩĐŊиŅ Đ´Đ°ĐŊĐŊŅ‹Ņ… ĐąŅƒŅ„ĐĩŅ€Đ° b_datap.
  unsigned char *b_wptr; // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ĐŊĐ°Ņ‡Đ°ĐģĐž ОйĐģĐ°ŅŅ‚и Đ´Đ°ĐŊĐŊŅ‹Ņ… Đ´ĐģŅ СаĐŋиŅĐ¸ Đ´Đ°ĐŊĐŊŅ‹Ņ… ĐąŅƒŅ„ĐĩŅ€Đ° b_datap.
  uint32_t reserved1;    // ЗаŅ€ĐĩСĐĩŅ€Đ˛Đ¸Ņ€ĐžĐ˛Đ°ĐŊĐŊĐžĐĩ ĐŋĐžĐģĐĩ1, ĐŧĐĩдиаŅŅ‚Ņ€Đ¸ĐŧĐĩŅ€ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ Ņ‚ŅƒĐ´Đ° ŅĐģŅƒĐļĐĩĐąĐŊŅƒŅŽ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ. 
  uint32_t reserved2;    // ЗаŅ€ĐĩСĐĩŅ€Đ˛Đ¸Ņ€ĐžĐ˛Đ°ĐŊĐŊĐžĐĩ ĐŋĐžĐģĐĩ2, ĐŧĐĩдиаŅŅ‚Ņ€Đ¸ĐŧĐĩŅ€ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ Ņ‚ŅƒĐ´Đ° ŅĐģŅƒĐļĐĩĐąĐŊŅƒŅŽ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ.
  #if defined(ORTP_TIMESTAMP)
  struct timeval timestamp;
  #endif
  ortp_recv_addr_t recv_addr;
} mblk_t;

āĻ—āĻ āĻ¨ mblk_t āĻļā§āĻ°ā§āĻ¤ā§‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ b_prev, b_āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĻā§āĻŦāĻŋāĻ—ā§āĻŖ āĻ˛āĻŋāĻ™ā§āĻ•āĻ¯ā§āĻ•ā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ (āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ queue_t).

āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻ†āĻ¸ā§‡ b_cont, āĻ¯āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻ–āĻ¨āĻ‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻ–āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻ…āĻ‚āĻļ āĻšāĻ¯āĻŧāĨ¤ āĻŸāĻŋāĻĒāĻ˛ā§‡ āĻļā§‡āĻˇ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻ‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°āĻŸāĻŋ āĻļā§‚āĻ¨ā§āĻ¯ āĻĨāĻžāĻ•ā§‡āĨ¤

āĻāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ‡ b_datap, āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨āĨ¤ āĻāĻŸāĻŋ āĻŦā§āĻ˛āĻ• āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ°ā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡āĻ° āĻāĻ˛āĻžāĻ•āĻžāĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻŽāĻžāĻ  b_rptr āĻ¯ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻŦāĻžāĻĢāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧāĻž āĻšāĻŦā§‡ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡āĨ¤ āĻŽāĻžāĻ  b_wptr āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ°āĻžāĻ‡āĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻŋāĻ° āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤

āĻ¨āĻŋāĻšā§‡ āĻ¨āĻžāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ†āĻ›ā§‡ m1 āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• d1.
Mediastreamer2 āĻ­āĻŋāĻ“āĻ†āĻ‡āĻĒāĻŋ āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻ…āĻ¨ā§āĻŦā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 11
āĻ¨āĻŋāĻšā§‡āĻ° āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ m1, m1_1, m1_2.
Mediastreamer2 āĻ­āĻŋāĻ“āĻ†āĻ‡āĻĒāĻŋ āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻ…āĻ¨ā§āĻŦā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 11

āĻŽā§‡āĻ¸ā§‡āĻœāĻŋāĻ‚ āĻĢāĻžāĻ‚āĻļāĻ¨ mblk_t

āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž mblk_t āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ:

mblk_t *allocb(int size, int pri); 

āĻ¸ā§‡ āĻ¸ā§āĻŽā§ƒāĻ¤āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ°āĻžāĻ–ā§‡ mblk_t āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻ¸āĻš āĻ†āĻ¯āĻŧāĻ¤āĻ¨, āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ - pri āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻāĻ‡ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻŸāĻž āĻļā§‚āĻ¨ā§āĻ¯ āĻĨāĻžāĻ•āĻž āĻ‰āĻšāĻŋāĻ¤. āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋāĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻšāĻ˛āĻžāĻ•āĻžāĻ˛ā§€āĻ¨, āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§‡āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻ•āĻ˛ āĻ•āĻ°āĻž āĻšāĻŦā§‡ mblk_init(), āĻ¯āĻž āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡, āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ datab_alloc(), āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡āĨ¤ āĻāĻ° āĻĒāĻ°ā§‡ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡:

mp->b_datap=datab;
mp->b_rptr=mp->b_wptr=datab->db_base;
mp->b_next=mp->b_prev=mp->b_cont=NULL;

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

memcpy(msg->b_rptr, data, size);

āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ‰āĻĒāĻžāĻ¤ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ‰ā§ŽāĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°, āĻāĻŦāĻ‚ āĻ†āĻ¯āĻŧāĻ¤āĻ¨ - āĻ¤āĻžāĻĻā§‡āĻ° āĻ†āĻ•āĻžāĻ°āĨ¤
āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°āĻŸāĻŋāĻ•ā§‡ āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻāĻŸāĻŋ āĻ†āĻŦāĻžāĻ° āĻŦāĻžāĻĢāĻžāĻ°ā§‡āĻ° āĻŽā§āĻ•ā§āĻ¤ āĻ…āĻžā§āĻšāĻ˛ā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡:

msg->b_wptr = msg->b_wptr + size

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻŦāĻžāĻĢāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻŦā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨:

mblk_t *esballoc(uint8_t *buf, int size, int pri, void (*freefn)(void*)); 

āĻĢāĻžāĻ‚āĻļāĻ¨, āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ¯āĻŧ āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻ¤āĻžāĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻŦā§‡ āĻŦā§āĻĢ. āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹. āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ°āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻšā§‡āĻĄāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻĒāĻ°ā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ, āĻ¯ā§‡āĻŽāĻ¨āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ›āĻŋāĻ˛ datab_alloc(). āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻ¸āĻš āĻŦāĻžāĻĢāĻžāĻ°āĻŸāĻŋ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ›āĻŋāĻ˛ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡āĻ‡ āĻĨāĻžāĻ•āĻŦā§‡, āĻ¤āĻŦā§‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ āĻāĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€, āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡āĨ¤

āĻāĻ•āĻŸāĻž āĻŽā§‡āĻ¸ā§‡āĻœā§‡āĻ° āĻ•āĻžāĻ›ā§‡ mblk_t āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻ•ā§āĻ°āĻŽā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:

mblk_t * appendb(mblk_t *mp, const char *data, int size, bool_t pad); 

mp — āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻŦā§‡;
āĻ‰āĻĒāĻžāĻ¤ā§āĻ¤ — āĻŦā§āĻ˛āĻ•ā§‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°, āĻ¯āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻŦā§‡;
āĻ†āĻ¯āĻŧāĻ¤āĻ¨ - āĻĄā§‡āĻŸāĻž āĻ†āĻ•āĻžāĻ°;
āĻĒā§āĻ¯āĻžāĻĄ — āĻāĻ•āĻŸāĻŋ āĻĒāĻ¤āĻžāĻ•āĻž āĻ¯āĻž āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻž āĻŽā§‡āĻŽāĻ°āĻŋāĻ° āĻ†āĻ•āĻžāĻ° āĻ…āĻŦāĻļā§āĻ¯āĻ‡ 4-āĻŦāĻžāĻ‡āĻŸā§‡āĻ° āĻ¸ā§€āĻŽāĻžāĻ¨āĻž āĻŦāĻ°āĻžāĻŦāĻ° āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ (āĻĒā§āĻ¯āĻžāĻĄāĻŋāĻ‚ āĻļā§‚āĻ¨ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ•āĻ°āĻž āĻšāĻŦā§‡)āĨ¤

āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻŽā§‡āĻ¸ā§‡āĻœ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻœāĻžāĻ¯āĻŧāĻ—āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§‡āĻŸāĻž āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡ āĻĨāĻžāĻ•āĻž āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻŋāĻ›āĻ¨ā§‡ āĻĒā§‡āĻ¸ā§āĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻŽā§‡āĻ¸ā§‡āĻœ āĻĄāĻžāĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻŽ āĻĢāĻžāĻāĻ•āĻž āĻœāĻžāĻ¯āĻŧāĻ—āĻž āĻĨāĻžāĻ•āĻ˛ā§‡ āĻ†āĻ¯āĻŧāĻ¤āĻ¨, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻŦāĻžāĻĢāĻžāĻ° āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¤āĻžāĻ° āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž, āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻ¸āĻ˛āĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ˛āĻŋāĻ™ā§āĻ• āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ b_cont. āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŸāĻŋāĻĒāĻ˛ā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŸā§āĻĒāĻ˛ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻ…āĻ¨ā§āĻ¯ āĻŦā§āĻ˛āĻ• āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

void msgappend(mblk_t *mp, const char *data, int size, bool_t pad);

āĻ¸ā§‡ āĻŸāĻŋāĻĒāĻ˛ā§‡ āĻļā§‡āĻˇ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻŦā§‡ (āĻ¤āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ†āĻ›ā§‡ b_cont āĻ¨āĻžāĻ˛ āĻšāĻŦā§‡) āĻāĻŦāĻ‚ āĻāĻ‡ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ āĻ•āĻ°āĻŦā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻœāĻ¨ ().

āĻ†āĻĒāĻ¨āĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŦāĻž āĻŸāĻŋāĻĒāĻ˛ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻ†āĻ•āĻžāĻ° āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:

int msgdsize(const mblk_t *mp);

āĻāĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻ˛ā§āĻĒ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ‡ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŽā§‹āĻŸ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻŦā§‡āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§‚āĻĒ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:

 mp->b_wptr - mp->b_rptr

āĻĻā§āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡, āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨:

mblk_t *concatb(mblk_t *mp, mblk_t *newm);

āĻ¸ā§‡ āĻŸāĻŋāĻĒāĻ˛ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ newm āĻŸā§āĻĒāĻ˛ā§‡āĻ° āĻ˛ā§‡āĻœā§‡āĻ° āĻ•āĻžāĻ›ā§‡ mp āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻļā§‡āĻˇ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡, āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛āĻ•ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻāĻ•āĻ• āĻŦā§āĻ˛āĻ• āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡; āĻāĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:

void msgpullup(mblk_t *mp,int len);

āĻ¯āĻĻāĻŋ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ˛ā§‡āĻ¨ āĻšāĻ¯āĻŧ -1, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻ•ā§ƒāĻ¤ āĻŦāĻžāĻĢāĻžāĻ°ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻ˛ā§‡āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ§āĻ¨āĻžāĻ¤ā§āĻŽāĻ• āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž, āĻāĻ‡ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻĢāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻŸā§āĻĒāĻ˛ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĄā§‡āĻŸāĻž āĻāĻ¤ā§‡ āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻŦāĻžāĻĢāĻžāĻ° āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ˛ā§‡, āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡āĻ‡ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻŦāĻžāĻĢāĻžāĻ° āĻĒāĻžāĻŦā§‡āĨ¤ āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāĻ°āĻŋāĻŸāĻŋ āĻšāĻŋāĻĒā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸āĻŦā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ mblk_t āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¯āĻĻāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ—āĻŖāĻ¨āĻž āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻžāĻ¯āĻŧ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ freeb() āĻāĻŸāĻž āĻļā§‚āĻ¨ā§āĻ¯ āĻšāĻ¤ā§‡ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ†āĻ‰āĻŸ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¤āĻĨā§āĻ¯ āĻŦāĻžāĻĢāĻžāĻ° āĻ‡āĻ¨āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻŦāĻ°āĻžāĻŦāĻ° āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧ mblk_t, āĻ¯āĻž āĻāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

void mblk_init(mblk_t *mp);

āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻĄā§‡āĻŸāĻžāĻ° āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ…āĻ‚āĻļ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

mblk_t * appendb(mblk_t *mp, const char *data, size_t size, bool_t pad);

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

āĻāĻ•āĻŸāĻŋ āĻŸā§āĻĒāĻ˛ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ‚āĻļ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž:

void msgappend(mblk_t *mp, const char *data, size_t size, bool_t pad); 

āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ˛ā§āĻĒā§‡ appendb() āĻ•āĻ˛ āĻ•āĻ°ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋāĻ¤ā§‡ āĻĻā§āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž:

mblk_t *concatb(mblk_t *mp, mblk_t *newm);

āĻŦāĻžāĻ°ā§āĻ¤āĻž newm āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻŦā§‡ mp.

āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž:

mblk_t *copyb(const mblk_t *mp);

āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ:

mblk_t *copymsg(const mblk_t *mp);

āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ•āĻĒāĻŋāĻŦ().

āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ mblk_t. āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¤āĻžāĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ° āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ db_ref:

mblk_t *dupb(mblk_t *mp);

āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ˛āĻ•āĻž āĻ•āĻĒāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĨ¤ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻĻā§‡āĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ° āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ db_ref:

mblk_t *dupmsg(mblk_t* m);

āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ†āĻ āĻžāĻ˛ā§‹:

void msgpullup(mblk_t *mp,size_t len);

āĻ¯āĻĻāĻŋ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ˛ā§‡āĻ¨ āĻšāĻ¯āĻŧ -1, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻ•ā§ƒāĻ¤ āĻŦāĻžāĻĢāĻžāĻ°ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻšā§āĻ›ā§‡, āĻŸāĻŋāĻĒāĻ˛:

void freemsg(mblk_t *mp);

āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ—āĻŖāĻ¨āĻž āĻāĻ• āĻĻā§āĻŦāĻžāĻ°āĻž āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻļā§‚āĻ¨ā§āĻ¯ā§‡ āĻĒā§ŒāĻāĻ›āĻžāĻ¯āĻŧ, āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•āĻŸāĻŋāĻ“ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧāĨ¤

āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŦāĻž āĻŸāĻŋāĻĒāĻ˛ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻŽā§‹āĻŸ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§‡āĻ° āĻ—āĻŖāĻ¨āĻžāĨ¤

size_t msgdsize(const mblk_t *mp);

āĻ¸āĻžāĻ°āĻŋāĻ° āĻ˛ā§‡āĻœ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

mblk_t *ms_queue_peek_last (q);

āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ…āĻ¨ā§āĻ¯ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻž (āĻ†āĻ¸āĻ˛ā§‡, āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒāĻ¤āĻžāĻ•āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ):

mblk_meta_copy(const mblk_t *source, mblk *dest);

āĻŽā§‹āĻĄāĻŧ queue_t

āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ°ā§‡ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§ƒāĻ¤ā§āĻ¤āĻžāĻ•āĻžāĻ° āĻĻā§āĻŦāĻŋāĻ—ā§āĻŖ āĻ˛āĻŋāĻ™ā§āĻ•āĻ¯ā§āĻ•ā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻŋāĻ—āĻ¨ā§āĻ¯āĻžāĻ˛ āĻ¨āĻŽā§āĻ¨āĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻšā§āĻ›ā§‡ āĻ¯ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄāĻžāĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛ā§‹ āĻ˜ā§āĻ°ā§‡ āĻĻāĻžāĻāĻĄāĻŧāĻžāĻ¯āĻŧ, āĻ¯āĻ–āĻ¨ āĻĄāĻžāĻŸāĻž āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ—āĻ¤āĻŋāĻšā§€āĻ¨ āĻĨāĻžāĻ•ā§‡āĨ¤ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹. āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻĻā§‡āĻ° āĻ˛āĻŋāĻ™ā§āĻ• āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ.
āĻ¸āĻžāĻ°āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻ•āĻžāĻ āĻžāĻŽā§‹ queue_t, āĻ¨āĻŋāĻšā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹:

typedef struct _queue
{
   mblk_t _q_stopper; /* "ĐĨĐžĐģĐžŅŅ‚ОК" ŅĐģĐĩĐŧĐĩĐŊŅ‚ ĐžŅ‡ĐĩŅ€Đĩди, ĐŊĐĩ ŅƒĐēаСŅ‹Đ˛Đ°ĐĩŅ‚ ĐŊĐ° Đ´Đ°ĐŊĐŊŅ‹Đĩ, иŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ŅŅ Ņ‚ĐžĐģŅŒĐēĐž Đ´ĐģŅ ŅƒĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиŅ ĐžŅ‡ĐĩŅ€ĐĩĐ´ŅŒŅŽ. ПŅ€Đ¸ иĐŊиŅ†Đ¸Đ°ĐģиСаŅ†Đ¸Đ¸ ĐžŅ‡ĐĩŅ€Đĩди (qinit()) ĐĩĐŗĐž ŅƒĐēаСаŅ‚ĐĩĐģи ĐŊĐ°ŅŅ‚Ņ€Đ°Đ¸Đ˛Đ°ŅŽŅ‚ŅŅ Ņ‚Đ°Đē, Ņ‡Ņ‚ОйŅ‹ ĐžĐŊи ŅƒĐēаСŅ‹Đ˛Đ°Đģи ĐŊĐ° ĐŊĐĩĐŗĐž ŅĐ°ĐŧĐžĐŗĐž. */
   int q_mcount;        // КоĐģиŅ‡ĐĩŅŅ‚вО ŅĐģĐĩĐŧĐĩĐŊŅ‚Ов в ĐžŅ‡ĐĩŅ€Đĩди.
} queue_t;

āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° _q_āĻ¸ā§āĻŸāĻĒāĻžāĻ° *mblk_t āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ°ā§āĻ¨, āĻāĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ (āĻŦāĻžāĻ°ā§āĻ¤āĻž) āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡āĨ¤ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻĨāĻžāĻ•āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°āĨ¤
āĻ¨ā§€āĻšā§‡āĻ° āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ q1 āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ 4āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž m1, m2, m3, m4 āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
Mediastreamer2 āĻ­āĻŋāĻ“āĻ†āĻ‡āĻĒāĻŋ āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻ…āĻ¨ā§āĻŦā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 11
āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ q1 āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ 4āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž m1,m2,m3,m4 āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž m2 āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒāĻ˛ā§‡āĻ° āĻŽāĻžāĻĨāĻž āĻ¯āĻžāĻ¤ā§‡ āĻ†āĻ°āĻ“ āĻĻā§āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž m2_1 āĻāĻŦāĻ‚ m2_2 āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

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

quees queue_t āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨

āĻ¸āĻžāĻ°āĻŋ āĻ†āĻ°āĻŽā§āĻ­:

void qinit(queue_t *q);

āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° _q_āĻ¸ā§āĻŸāĻĒāĻžāĻ° (āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ•ā§‡ "āĻ¸ā§āĻŸāĻĒāĻžāĻ°" āĻŦāĻ˛āĻŦ) āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻ°āĻŽā§āĻ­ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ mblk_init(), āĻāĻ° āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¸āĻžāĻ°āĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ° āĻļā§‚āĻ¨ā§āĻ¯ āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻŦāĻžāĻ°ā§āĻ¤āĻž):

void putq(queue_t *q, mblk_t *m);

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

āĻ¸āĻžāĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

mblk_t * getq(queue_t *q); 

āĻ¸ā§āĻŸāĻĒāĻžāĻ° āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻ¯ā§‡ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻ†āĻ¸ā§‡ āĻāĻŦāĻ‚ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°āĻŸāĻŋ āĻšā§āĻ°āĻžāĻ¸ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻ¸ā§āĻŸāĻĒāĻžāĻ° āĻ›āĻžāĻĄāĻŧāĻž āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ 0 āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤

āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

void insq(queue_t *q, mblk_t *emp, mblk_t *mp); 

āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ mp āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ā§‡āĻ° āĻ†āĻ—ā§‡ āĻĸā§‹āĻ•āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ EMPāĨ¤ āĻ¯āĻĻāĻŋ EMP=0, āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ° āĻ˛ā§‡āĻœā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ¸āĻžāĻ°āĻŋāĻ° āĻŽāĻžāĻĨāĻž āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

void remq(queue_t *q, mblk_t *mp); 

āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ° āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĒāĻĄāĻŧāĻž:

mblk_t * peekq(queue_t *q); 

āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻžāĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻšā§āĻ›ā§‡:

void flushq(queue_t *q, int how);

āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž. āĻ¸āĻžāĻ°āĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ° āĻļā§‚āĻ¨ā§āĻ¯ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻ¸āĻžāĻ°āĻŋāĻ° āĻļā§‡āĻˇ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§āĻ¯āĻžāĻ•ā§āĻ°ā§‹:

mblk_t * qlast(queue_t *q);

āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻ•āĻ˛ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¤āĻ–āĻ¨ āĻ¸āĻšā§‡āĻ¤āĻ¨ āĻĨāĻžāĻ•ā§āĻ¨ ms_queue_put(q, m) āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻžāĻ˛ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻ¸āĻš, āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻ˛ā§āĻĒ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻšāĻŋāĻŽāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻŦā§‡. āĻāĻ•āĻ‡āĻ­āĻžāĻŦā§‡ āĻ†āĻšāĻ°āĻŖ āĻ•āĻ°ā§‡ ms_queue_next(q, m).

āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ‰āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻžāĻ°āĻŋāĻŸāĻŋ āĻāĻ• āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡ āĻŦāĻž āĻāĻ• āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ—ā§āĻ°āĻžāĻĢ āĻ—āĻ āĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ‡āĻ¨āĻĒā§āĻŸ āĻŦāĻž āĻ†āĻ‰āĻŸāĻĒā§āĻŸāĻ•ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻļāĻŦā§āĻĻ "āĻĒāĻŋāĻ¨" āĻŦāĻ˛āĻž āĻšāĻŦā§‡āĨ¤ āĻ¯ā§‡ āĻ•ā§āĻ°āĻŽā§‡ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻāĻ•ā§‡ āĻ…āĻĒāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡, āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ° āĻāĻ•āĻŸāĻŋ "āĻ¸āĻŋāĻ—āĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ" āĻ§āĻžāĻ°āĻŖāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻ—āĻ āĻ¨ _MSCP āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ, āĻ¯āĻž āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻāĻŦāĻ‚ āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻŋāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡; āĻ¸ā§‡āĻ‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€, āĻāĻŸāĻŋ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ‡āĻ¨āĻĒā§āĻŸ āĻŦāĻž āĻ†āĻ‰āĻŸāĻĒā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋāĻ° āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤

āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ—ā§āĻ°āĻžāĻĢā§‡āĻ° āĻ¸āĻŋāĻ—āĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ

typedef struct _MSCPoint{
struct _MSFilter *filter; // ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° Ņ„иĐģŅŒŅ‚Ņ€ ĐŧĐĩдиаŅŅ‚Ņ€Đ¸ĐŧĐĩŅ€Đ°.
int pin;                        // НоĐŧĐĩŅ€ ОдĐŊĐžĐŗĐž иС вŅ…ОдОв иĐģи вŅ‹Ņ…ОдОв Ņ„иĐģŅŒŅ‚Ņ€Đ°, Ņ‚.Đĩ. ĐŋиĐŊ.
} MSCPoint;

āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻĒāĻŋāĻ¨āĻ—ā§āĻ˛āĻŋ āĻļā§‚āĻ¨ā§āĻ¯ āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¯ā§āĻ•ā§āĻ¤āĨ¤

āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĻā§āĻŸāĻŋ āĻĒāĻŋāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧ _MS āĻ¸āĻžāĻ°āĻŋ, āĻāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ āĻĻā§āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

typedef struct _MSQueue
{
queue_t q;
MSCPoint prev;
MSCPoint next;
}MSQueue;

āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻ˛āĻŋāĻ™ā§āĻ• āĻŦāĻ˛āĻŦāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡ āĻ‡āĻ¨āĻĒā§āĻŸ āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ (MSQueue) āĻāĻ•āĻŸāĻŋ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ; āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻāĻ•ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻž āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŸāĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ MSFilterDesc, āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋāĨ¤ āĻ¨ā§€āĻšā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ°ā§‡ āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡, āĻāĻŽāĻāĻ¸āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°:


struct _MSFilter{
    MSFilterDesc *desc;    /* ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° Đ´ĐĩŅĐēŅ€Đ¸ĐŋŅ‚ĐžŅ€ Ņ„иĐģŅŒŅ‚Ņ€Đ°. */
    /* ЗаŅ‰Đ¸Ņ‰ĐĩĐŊĐŊŅ‹Đĩ Đ°Ņ‚Ņ€Đ¸ĐąŅƒŅ‚Ņ‹, иŅ… ĐŊĐĩĐģŅŒĐˇŅ ŅĐ´Đ˛Đ¸ĐŗĐ°Ņ‚ŅŒ иĐģи ŅƒĐąĐ¸Ņ€Đ°Ņ‚ŅŒ иĐŊĐ°Ņ‡Đĩ ĐąŅƒĐ´ĐĩŅ‚ ĐŊĐ°Ņ€ŅƒŅˆĐĩĐŊĐ° Ņ€Đ°ĐąĐžŅ‚Đ° Ņ ĐŋĐģĐ°ĐŗиĐŊĐ°Đŧи. */
    ms_mutex_t lock;      /* ĐĄĐĩĐŧĐ°Ņ„ĐžŅ€. */
    MSQueue **inputs;     /* ĐĸĐ°ĐąĐģиŅ†Đ° вŅ…ОдĐŊŅ‹Ņ… ĐģиĐŊĐēОв. */
    MSQueue **outputs;    /* ĐĸĐ°ĐąĐģиŅ†Đ° вŅ‹Ņ…ОдĐŊŅ‹Ņ… ĐģиĐŊĐēОв. */
    struct _MSFactory *factory; /* ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° Ņ„Đ°ĐąŅ€Đ¸ĐēŅƒ, ĐēĐžŅ‚ĐžŅ€Đ°Ņ ŅĐžĐˇĐ´Đ°ĐģĐ° Đ´Đ°ĐŊĐŊŅ‹Đš ŅĐēСĐĩĐŧĐŋĐģŅŅ€ Ņ„иĐģŅŒŅ‚Ņ€Đ°. */
    void *padding;              /* НĐĩ иŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ŅŅ, ĐąŅƒĐ´ĐĩŅ‚ СадĐĩĐšŅŅ‚вОваĐŊ ĐĩŅĐģи дОйавŅŅ‚ŅŅ СаŅ‰Đ¸Ņ‰ĐĩĐŊĐŊŅ‹Đĩ ĐŋĐžĐģŅ. */
    void *data;                 /* ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐžĐģŅŒĐŊŅƒŅŽ ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Ņƒ Đ´ĐģŅ Ņ…Ņ€Đ°ĐŊĐĩĐŊиŅ Đ´Đ°ĐŊĐŊŅ‹Ņ… вĐŊŅƒŅ‚Ņ€ĐĩĐŊĐŊĐĩĐŗĐž ŅĐžŅŅ‚ĐžŅĐŊиŅ Ņ„иĐģŅŒŅ‚Ņ€Đ° и ĐŋŅ€ĐžĐŧĐĩĐļŅƒŅ‚ĐžŅ‡ĐŊŅ‹Ņ… вŅ‹Ņ‡Đ¸ŅĐģĐĩĐŊиК. */
    struct _MSTicker *ticker;   /* ĐŖĐēаСаŅ‚ĐĩĐģŅŒ ĐŊĐ° ОйŅŠĐĩĐēŅ‚ Ņ‚иĐēĐĩŅ€Đ°, ĐēĐžŅ‚ĐžŅ€Ņ‹Đš ĐŊĐĩ Đ´ĐžĐģĐļĐĩĐŊ ĐąŅ‹Ņ‚ŅŒ ĐŊŅƒĐģĐĩвŅ‹Đŧ ĐēĐžĐŗĐ´Đ° вŅ‹ĐˇŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ Ņ„ŅƒĐŊĐēŅ†Đ¸Ņ process(). */
    /*private attributes, they can be moved and changed at any time*/
    MSList *notify_callbacks; /* ĐĄĐŋиŅĐžĐē ОйŅ€Đ°Ņ‚ĐŊŅ‹Ņ… вŅ‹ĐˇĐžĐ˛ĐžĐ˛, иŅĐŋĐžĐģŅŒĐˇŅƒĐĩĐŧŅ‹Ņ… Đ´ĐģŅ ОйŅ€Đ°ĐąĐžŅ‚Đēи ŅĐžĐąŅ‹Ņ‚иК Ņ„иĐģŅŒŅ‚Ņ€Đ°. */
    uint32_t last_tick;       /* НоĐŧĐĩŅ€ ĐŋĐžŅĐģĐĩĐ´ĐŊĐĩĐŗĐž Ņ‚Đ°ĐēŅ‚Đ°, ĐēĐžĐŗĐ´Đ° вŅ‹ĐŋĐžĐģĐŊŅĐģŅŅ вŅ‹ĐˇĐžĐ˛ process(). */ 
    MSFilterStats *stats;     /* ĐĄŅ‚Đ°Ņ‚иŅŅ‚иĐēĐ° Ņ€Đ°ĐąĐžŅ‚Ņ‹ Ņ„иĐģŅŒŅ‚Ņ€Đ°.*/
    int postponed_task; /*КоĐģиŅ‡ĐĩŅŅ‚вО ĐžŅ‚ĐģĐžĐļĐĩĐŊĐŊŅ‹Ņ… СадаŅ‡. НĐĩĐēĐžŅ‚ĐžŅ€Ņ‹Đĩ Ņ„иĐģŅŒŅ‚Ņ€Ņ‹ ĐŧĐžĐŗŅƒŅ‚ ĐžŅ‚ĐēĐģĐ°Đ´Ņ‹Đ˛Đ°Ņ‚ŅŒ ОйŅ€Đ°ĐąĐžŅ‚ĐēŅƒ Đ´Đ°ĐŊĐŊŅ‹Ņ… (вŅ‹ĐˇĐžĐ˛ process()) ĐŊĐ° ĐŊĐĩŅĐēĐžĐģŅŒĐēĐž Ņ‚Đ°ĐēŅ‚Ов.*/
    bool_t seen;  /* ФĐģĐ°Đŗ, ĐēĐžŅ‚ĐžŅ€Ņ‹Đš иŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ Ņ‚иĐēĐĩŅ€, Ņ‡Ņ‚ОйŅ‹ ĐŋĐžĐŧĐĩŅ‡Đ°Ņ‚ŅŒ Ņ‡Ņ‚Đž ŅŅ‚ĐžŅ‚ ŅĐēСĐĩĐŧĐŋĐģŅŅ€ Ņ„иĐģŅŒŅ‚Ņ€Đ° ĐžĐŊ ŅƒĐļĐĩ ОйŅĐģŅƒĐļиĐģ ĐŊĐ° Đ´Đ°ĐŊĐŊĐžĐŧ Ņ‚Đ°ĐēŅ‚Đĩ.*/
};
typedef struct _MSFilter MSFilter;

āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ¸āĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ (āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŸāĻŋāĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋāĻ¨āĻŋ), āĻ†āĻŽāĻ°āĻž āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ—ā§āĻ°āĻžāĻĢ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¯āĻžāĻ° āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻāĻŽāĻāĻ¸āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°, āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤āĻ—ā§āĻ˛āĻŋ āĻ˛āĻŋāĻ™ā§āĻ•ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ MSQueue.

āĻĒāĻ°ā§āĻĻāĻžāĻ° āĻ†āĻĄāĻŧāĻžāĻ˛ā§‡ āĻŸāĻŋāĻ•āĻžāĻ° āĻ¤ā§ŽāĻĒāĻ°āĻ¤āĻž

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

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

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

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

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

āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻ‡āĻœāĻžāĻ° (MSBufferizer)

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

āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ¯āĻž āĻŦāĻžāĻĢāĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡:

struct _MSBufferizer{
queue_t q; /* ОŅ‡ĐĩŅ€ĐĩĐ´ŅŒ ŅĐžĐžĐąŅ‰ĐĩĐŊиК. */
int size; /* ĐĄŅƒĐŧĐŧĐ°Ņ€ĐŊŅ‹Đš Ņ€Đ°ĐˇĐŧĐĩŅ€ Đ´Đ°ĐŊĐŊŅ‹Ņ… ĐŊĐ°Ņ…ОдŅŅ‰Đ¸Ņ…ŅŅ в ĐąŅƒŅ„ĐĩŅ€Đ¸ĐˇĐ°Ņ‚ĐžŅ€Đĩ в Đ´Đ°ĐŊĐŊŅ‹Đš ĐŧĐžĐŧĐĩĐŊŅ‚. */
};
typedef struct _MSBufferizer MSBufferizer;

MSBufferizer āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨

āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻĢāĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

MSBufferizer * ms_bufferizer_new(void);

āĻŽā§‡āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ ms_buferizer_init() āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤

āĻ¸ā§‚āĻšāĻ¨āĻž āĻĢāĻžāĻ‚āĻļāĻ¨:

void ms_bufferizer_init(MSBufferizer *obj); 

āĻ¸āĻžāĻ°āĻŋ āĻļā§āĻ°ā§ āĻšāĻšā§āĻ›ā§‡ q, āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ†āĻ¯āĻŧāĻ¤āĻ¨ āĻļā§‚āĻ¨ā§āĻ¯ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m); 

āĻŦāĻžāĻ°ā§āĻ¤āĻž m āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡āĨ¤ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ—āĻŖāĻ¨āĻžāĻ•ā§ƒāĻ¤ āĻ†āĻ•āĻžāĻ° āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ†āĻ¯āĻŧāĻ¤āĻ¨.

āĻ˛āĻŋāĻ™ā§āĻ• āĻĄā§‡āĻŸāĻž āĻ¸āĻžāĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ q:

void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q);   

āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻĨā§‡āĻ•ā§‡ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° q āĻŦāĻžāĻĢāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ ms_buferizer_put().

āĻŦāĻžāĻĢāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻž:

int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int datalen); 

āĻ¯āĻĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻœāĻŽāĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĄā§‡āĻŸāĻžāĻ° āĻ†āĻ•āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ•ā§ƒāĻ¤ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻŽ āĻšāĻ¯āĻŧ (āĻĄā§‡āĻŸāĻžāĻ˛ā§‡āĻ¨), āĻ¤āĻžāĻ°āĻĒāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ āĻļā§‚āĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡, āĻĄā§‡āĻŸāĻž āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻŸāĻŋāĻĒāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻ…āĻ¨ā§āĻ•ā§āĻ°āĻŽāĻŋāĻ• āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻŸāĻŋāĻĒāĻ˛ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāĻ°āĻŋ āĻŽā§āĻ•ā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻĄā§‡āĻŸāĻžāĻ˛ā§‡āĻ¨ āĻŦāĻžāĻ‡āĻŸ āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ˛ā§‡ āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻļā§‡āĻˇ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻŽāĻžāĻāĻ–āĻžāĻ¨ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨ āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ‡ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ, āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ•āĻŸāĻŋ āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻ†āĻ¨āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻ…āĻ‚āĻļā§‡ āĻšā§āĻ°āĻžāĻ¸ āĻĒāĻžāĻŦā§‡āĨ¤ āĻĒāĻ°ā§‡āĻ° āĻŦāĻžāĻ° āĻ¯āĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ˛ āĻ•āĻ°āĻŦā§‡āĻ¨, āĻ¤āĻ–āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ˛āĻŦā§‡āĨ¤

āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻĒāĻĄāĻŧāĻž:

int ms_bufferizer_get_avail(MSBufferizer *obj); 

āĻŽāĻžāĻ ā§‡ āĻĢā§‡āĻ°ā§‡ āĻ†āĻ¯āĻŧāĻ¤āĻ¨ āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻ°

āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻ…āĻ‚āĻļ āĻŦāĻžāĻĻ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻšā§āĻ›ā§‡:

void ms_bufferizer_skip_bytes(MSBufferizer *obj, int bytes);

āĻĄā§‡āĻŸāĻžāĻ° āĻŦāĻžāĻ‡āĻŸā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻžāĻšā§€āĻ¨āĻ¤āĻŽ āĻ¤āĻĨā§āĻ¯ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻšā§āĻ›ā§‡:

void ms_bufferizer_flush(MSBufferizer *obj); 

āĻĄā§‡āĻŸāĻž āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°āĻŸāĻŋ āĻļā§‚āĻ¨ā§āĻ¯ā§‡ āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻšā§āĻ›ā§‡:

void ms_bufferizer_uninit(MSBufferizer *obj); 

āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ° āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž.

āĻŦāĻžāĻĢāĻžāĻ° āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāĻ°āĻŋ āĻŽā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž:

void ms_bufferizer_destroy(MSBufferizer *obj);  

āĻŦāĻžāĻĢāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, MS_L16_ENC āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡, āĻ¯āĻž āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻšā§‹āĻ¸ā§āĻŸ āĻ…āĻ°ā§āĻĄāĻžāĻ°ā§‡ āĻ¨āĻŽā§āĻ¨āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŦāĻžāĻ‡āĻŸāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĒā§āĻ¨āĻ°ā§āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻ•āĻ°ā§‡: l16.c

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

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

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