Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 11

เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเตฝ เดŽเดจเตเดฑเต†เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดŸเตเดคเตเดคเดคเดพเดฃเต เดธเต†เตป เดšเดพเดจเตฝ.

Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 11

เดกเดพเดฑเตเดฑ เดšเดฒเดจ เดธเด‚เดตเดฟเดงเดพเดจเด‚

  • เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เต dblk_t
  • เดธเดจเตเดฆเต‡เดถเด‚ mblk_t
  • mblk_t เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ
  • เด•เตเดฏเต‚ เด•เตเดฏเต‚_t
  • เด•เตเดฏเต‚เด•เตพ queue_t เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ
  • เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต
  • เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เด—เตเดฐเดพเดซเดฟเดจเตเดฑเต† เดธเดฟเด—เตเดจเตฝ เดชเต‹เดฏเดฟเดจเตเดฑเต
  • เดŸเดฟเด•เตเด•เดฑเดฟเดจเตเดฑเต† เดคเดฟเดฐเดถเตเดถเต€เดฒเดฏเตเด•เตเด•เต เดชเดฟเดจเตเดจเดฟเดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ
  • เดฌเดซเดฑเตˆเดธเตผ (MSBufferizer)
  • MSBufferizer-เดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เด…เดตเดธเดพเดจเดคเตเดคเดฟเตฝ เดฒเต‡เด–เดจเด‚ เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดซเดฟเตฝเดŸเตเดŸเตผ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเตผ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เดจเต€เด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด†เดจเตเดคเดฐเดฟเด• เดธเด‚เดตเดฟเดงเดพเดจเดคเตเดคเดฟเตฝ เดˆ เดฒเต‡เด–เดจเด‚ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด‚. เดญเดพเดตเดฟเดฏเดฟเตฝ เด•เตเดฑเดžเตเดž เดชเตเดฐเดฏเดคเตเดจเดคเตเดคเดฟเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เดŽเดดเตเดคเดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เดกเดพเดฑเตเดฑ เดšเดฒเดจ เดธเด‚เดตเดฟเดงเดพเดจเด‚

เด˜เดŸเดจ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฏเต‚เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดฒเต† เดกเดพเดฑเตเดฑเดพ เดšเดฒเดจเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต เด•เตเดฏเต‚_เดŸเดฟ. เดคเตเดŸเด™เตเด™เดฟเดฏ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เดตเดฐเดฟเด•เตพ mblk_t, เด…เดตเดฏเดฟเตฝ เดคเดจเตเดจเต† เดธเดฟเด—เตเดจเตฝ เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดฎเตเดฎเตเดชเดคเตเดคเต†, เด…เดŸเตเดคเตเดค เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเด‚ เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเดฒเต‡เด•เตเด•เตเด‚ เดฒเดฟเด™เตเด•เตเด•เตพ เดฎเดพเดคเตเดฐเด‚. เด•เต‚เดŸเดพเดคเต†, เด’เดฐเต‡ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เดฟเดจเดพเดฏเดฟ เด’เดฐเต เดซเต€เตฝเดกเตเด‚ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดŠเดจเตเดจเดฟเดชเตเดชเดฑเดฏเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด’เดฑเตเดฑ เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดค เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเดพเตฝ เดเด•เต€เด•เดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเต† เดžเด™เตเด™เตพ เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚. เด…เด™เตเด™เดจเต†, เด•เตเดฏเต‚เดตเดฟเดจเตเดฑเต† เดเดคเต เด˜เดŸเด•เดตเตเด‚ เด’เดฐเตŠเดฑเตเดฑ เดธเดจเตเดฆเต‡เดถเดฎเดพเด•เดพเด‚ mblk_t, เด’เดฐเตเดชเด•เตเดทเต‡ เด’เดฐเต เดธเดจเตเดฆเต‡เดถ เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดจเตเดฑเต† เดคเดฒเดตเตป mblk_t. เด“เดฐเต‹ เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเด‚ เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ เดตเดพเตผเดกเต เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดŸเตเดฏเต‚เดชเตเดชเดฟเตพเดธเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเดจเตเดจเดคเต เดŽเดจเตเดจเต เดžเด™เตเด™เตพ เด•เตเดฑเดšเตเดšเต เด•เดดเดฟเดžเตเดžเต เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเด‚.

เดฎเตเด•เดณเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต† เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด’เดฐเต เดฌเตเดฒเต‹เด•เตเด•เต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ; เดชเด•เดฐเด‚, เดฌเตเดฒเต‹เด•เตเด•เต เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฎเต†เดฎเตเดฎเดฑเดฟ เดเดฐเดฟเดฏเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณเต‚. เดˆ เดญเดพเด—เดคเตเดคเต, เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเตŠเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เดšเดฟเดคเตเดฐเด‚ "เดฎเต‹เตบเดธเตเดฑเตเดฑเต‡เดดเตเดธเต, เด‡เตปเด•เต" เดŽเดจเตเดจ เด•เดพเตผเดŸเตเดŸเต‚เดฃเดฟเดฒเต† เดกเต‹เตผ เดตเต†เดฏเตผเดนเต—เดธเดฟเดจเต† เด…เดจเตเดธเตเดฎเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดฟเดŸเต† เดตเดพเดคเดฟเดฒเตเด•เตพ (เดกเดพเดฑเตเดฑ - เดฑเต‚เดฎเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ) เด“เดตเตผเดนเต†เดกเต เด•เตบเดตเต†เดฏเดฑเดฟเดฒเต‚เดŸเต† เดญเตเดฐเดพเดจเตเดคเดฎเดพเดฏ เดตเต‡เด—เดคเดฏเดฟเตฝ เดจเต€เด™เตเด™เตเดจเตเดจเต, เด…เดคเต‡เดธเดฎเดฏเด‚ เดฎเตเดฑเดฟเด•เตพ เดคเดจเตเดจเต†. เด…เดจเด™เตเด™เดพเดคเต† เด‡เดฐเดฟเด•เตเด•เตเด•.

เด‡เดชเตเดชเต‹เตพ, เดคเดพเดดเต† เดจเดฟเดจเตเดจเต เดฎเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดถเตเดฐเต‡เดฃเดฟเดฏเดฟเดฒเต‚เดŸเต† เดจเต€เด™เตเด™เตเดฎเตเดชเต‹เตพ, เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดฒเต† เดกเดพเดฑเตเดฑเดพ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดทเตป เดฎเต†เด•เตเด•เดพเดจเดฟเดธเดคเตเดคเดฟเดจเตเดฑเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดŽเดจเตเดฑเดฟเดฑเตเดฑเดฟเด•เตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเด‚.

เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เต 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_เด…เดŸเตเดคเตเดคเดคเต, เด‡เดฐเดŸเตเดŸเดฟ เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตโ€Œเดค เดฒเดฟเดธเตโ€Œเดฑเตเดฑเต เด“เตผเด—เดจเตˆเดธเตเดšเต†เดฏเตเดฏเดพเตป เด†เดตเดถเตเดฏเดฎเดพเดฏเดต (เด…เดคเตŠเดฐเต เด•เตเดฏเต‚ เด†เดฃเต เด•เตเดฏเต‚_เดŸเดฟ).

เด…เดชเตเดชเต‹เตพ เดชเต‹เดฏเดฟเดจเตเดฑเตผ เดตเดฐเตเดจเตเดจเต b_cont, เดธเดจเตเดฆเต‡เดถเด‚ เด’เดฐเต เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเด•เตเดฎเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‚. เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดฒเต† เด…เดตเดธเดพเดจ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเต, เดˆ เดชเต‹เดฏเดฟเดจเตเดฑเตผ เด…เดธเดพเดงเตเดตเดพเดฏเดฟ เดคเตเดŸเดฐเตเดจเตเดจเต.

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฎเตเดฎเตพ เด’เดฐเต เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ เด•เดพเดฃเตเดจเตเดจเต b_datap, เด…เดคเดฟเดจเดพเดฏเดฟ เดธเดจเตเดฆเต‡เดถเด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต. เดฌเตเดฒเต‹เด•เตเด•เต เดกเดพเดฑเตเดฑ เดฌเดซเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดเดฐเดฟเดฏเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเต‹เดฏเดฟเดจเตเดฑเดฑเตเด•เตพ เด…เดคเดฟเดจเต† เดชเดฟเดจเตเดคเตเดŸเดฐเตเดจเตเดจเต. เดซเต€เตฝเดกเต b_rptr เดฌเดซเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฑเต€เดกเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดธเตเดฅเดฒเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. เดซเต€เตฝเดกเต b_wptr เดฌเดซเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฑเตˆเดฑเตเดฑเตเด•เตพ เดจเดฟเตผเดตเดนเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจ เดธเตเดฅเดฒเด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เดซเต€เตฝเดกเตเด•เตพ เด’เดฐเต เดธเต‡เดตเดจ เดธเตเดตเดญเดพเดตเดฎเตเดณเตเดณเดตเดฏเดพเดฃเต, เด…เดต เดกเดพเดฑเตเดฑเดพ เดŸเตเดฐเดพเตปเดธเตเดซเตผ เดฎเต†เด•เตเด•เดพเดจเดฟเดธเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดคเดฒเตเดฒ.

เดชเต‡เดฐเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเตŠเดฑเตเดฑ เดธเดจเตเดฆเต‡เดถเด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต m1 เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เตเด‚ d1.
Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 11
เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดšเดฟเดคเตเดฐเด‚ เดฎเต‚เดจเตเดจเต เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต m1, m1_1, m1_2.
Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 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*)); 

เดซเด‚เด—เตเดทเตป, เดธเดจเตเดฆเต‡เดถเดตเตเด‚ เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเดจเตเดฑเต† เด˜เดŸเดจเดฏเตเด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดถเต‡เดทเด‚, เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต† เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต‡เด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† เดชเต‹เดฏเดฟเดจเตเดฑเดฑเตเด•เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด‚. buf. เด†. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดซเด‚เด—เตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเด‚เดญเดตเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเดจเตเดฑเต† เดนเต†เดกเตผ เดซเต€เตฝเดกเตเด•เตพเด•เตเด•เต เดถเต‡เดทเด‚ เดกเดพเดฑเตเดฑ เดฌเดซเตผ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. 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 เด…เดธเดพเดงเตเดตเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚) เด•เต‚เดŸเดพเดคเต† เดˆ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเดพเดฏเดฟ เดซเด‚เด—เตโ€Œเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเด‚ appendb().

เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดฒเต‹ เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดฒเต‹ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚:

int msgdsize(const mblk_t *mp);

เด‡เดคเต เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเดฟเดฒเต‚เดŸเต†เดฏเตเด‚ เดฒเต‚เดชเตเดชเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด† เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑ เดฌเดซเดฑเตเด•เดณเดฟเดฒเต† เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด†เด•เต† เดคเตเด• เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เด“เดฐเต‹ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเด‚, เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด…เดณเดตเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเต:

 mp->b_wptr - mp->b_rptr

เดฐเดฃเตเดŸเต เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเตเด•เตพ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป, เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•:

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

เด…เดตเตพ เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเต เดชเตเดคเดฟเดฏ เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดจเตเดฑเต† เดตเดพเตฝ เดตเดฐเต† mp เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเดจเตเดจเต.

เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ, เด’เดฐเตŠเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เต เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเดฎเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเดพเด‚; เด‡เดคเต เดซเด‚เด—เตเดทเตป เดตเดดเดฟเดฏเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต:

void msgpullup(mblk_t *mp,int len);

เดŽเด™เตเด•เดฟเตฝ เดตเดพเดฆเด‚ เดฒเต†เตป -1 เด†เดฃเต, เด…เดชเตเดชเต‹เตพ เด…เดจเตเดตเดฆเดฟเดšเตเดš เดฌเดซเดฑเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เดฏเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เดŽเด™เตเด•เดฟเตฝ เดฒเต†เตป เด’เดฐเต เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เดธเด‚เด–เตเดฏเดฏเดพเดฃเต, เดˆ เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดฌเดซเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เดธเดจเตเดฆเต‡เดถ เดกเดพเดฑเตเดฑ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดฌเดซเตผ เดคเต€เตผเดจเตเดจเดพเตฝ, เดชเด•เตผเดคเตเดคเตฝ เด…เดตเดฟเดŸเต† เดจเดฟเตผเดคเตเดคเตเด‚. Tuple-เดจเตเดฑเต† เด†เดฆเตเดฏ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเต เดชเด•เตผเดคเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ เดตเดฒเตเดชเตเดช เดฌเดซเตผ เดฒเดญเดฟเด•เตเด•เตเด‚. เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดฎเต†เดฎเตเดฎเดฑเดฟ เดนเต€เดชเตเดชเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เด’เดฐเต เด˜เดŸเดจ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ 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);

เดธเดจเตเดฆเต‡เดถเด‚ เดชเตเดคเดฟเดฏ เดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเด‚ mp.

เด’เดฐเตŠเดฑเตเดฑ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเดฑเต† เดชเด•เตผเดชเตเดชเต เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเต:

mblk_t *copyb(const mblk_t *mp);

เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเดฎเตเดณเตเดณ เด’เดฐเต เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดชเด•เตผเดคเตเดคเตเด•:

mblk_t *copymsg(const mblk_t *mp);

เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดจเตเดฑเต† เด˜เดŸเด•เด™เตเด™เตพ เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเด•เตผเดคเตเดคเตเดจเตเดจเต copyb().

เด’เดฐเต เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเดฑเต† เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเด•เตผเดชเตเดชเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• 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);

เด•เตเดฏเต‚ เด•เตเดฏเต‚_เดŸเดฟ

เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดฒเต† เดธเดจเตเดฆเต‡เดถ เด•เตเดฏเต‚ เด’เดฐเต เดธเตผเด•เตเด•เตเดฒเตผ เด‡เดฐเดŸเตเดŸเดฟ เดฒเดฟเด™เตเด•เตเดกเต เดฒเดฟเดธเตเดฑเตเดฑเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เดฒเดฟเดธเตเดฑเตเดฑเต เดŽเดฒเดฎเต†เดจเตเดฑเดฟเดฒเตเด‚ เดธเดฟเด—เตเดจเตฝ เดธเดพเดฎเตเดชเดฟเดณเตเด•เดณเตเดณเตเดณ เด’เดฐเต เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเต‹เดฏเดฟเดจเตเดฑเดฑเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดฎเดพเดฑเตเดจเตเดจเตเดณเตเดณเต‚, เด…เดคเต‡เดธเดฎเดฏเด‚ เดกเดพเดฑเตเดฑ เดคเดจเตเดจเต† เดšเดฒเดจเดฐเดนเดฟเดคเดฎเดพเดฏเดฟ เดคเตเดŸเดฐเตเดจเตเดจเต. เด†. เด…เดตเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เดฎเดพเดคเตเดฐเด‚ เดจเต€เด•เตเด•เดฟ.
เด•เตเดฏเต‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด˜เดŸเดจ เด•เตเดฏเต‚_เดŸเดฟ, เดคเดพเดดเต† เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

typedef struct _queue
{
   mblk_t _q_stopper; /* "ะฅะพะปะพัั‚ะพะน" ัะปะตะผะตะฝั‚ ะพั‡ะตั€ะตะดะธ, ะฝะต ัƒะบะฐะทั‹ะฒะฐะตั‚ ะฝะฐ ะดะฐะฝะฝั‹ะต, ะธัะฟะพะปัŒะทัƒะตั‚ัั ั‚ะพะปัŒะบะพ ะดะปั ัƒะฟั€ะฐะฒะปะตะฝะธั ะพั‡ะตั€ะตะดัŒัŽ. ะŸั€ะธ ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธะธ ะพั‡ะตั€ะตะดะธ (qinit()) ะตะณะพ ัƒะบะฐะทะฐั‚ะตะปะธ ะฝะฐัั‚ั€ะฐะธะฒะฐัŽั‚ัั ั‚ะฐะบ, ั‡ั‚ะพะฑั‹ ะพะฝะธ ัƒะบะฐะทั‹ะฒะฐะปะธ ะฝะฐ ะฝะตะณะพ ัะฐะผะพะณะพ. */
   int q_mcount;        // ะšะพะปะธั‡ะตัั‚ะฒะพ ัะปะตะผะตะฝั‚ะพะฒ ะฒ ะพั‡ะตั€ะตะดะธ.
} queue_t;

เด˜เดŸเดจเดฏเดฟเตฝ เด’เดฐเต เดซเต€เตฝเดกเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต - เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ _q_เดธเตเดฑเตเดฑเต‹เดชเตเดชเตผ *mblk_t เดŽเดจเตเดจเต เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเด•, เด…เดคเต เด•เตเดฏเต‚เดตเดฟเดฒเต† เด†เดฆเตเดฏ เด˜เดŸเด•เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต (เดธเดจเตเดฆเต‡เดถเด‚) เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด˜เดŸเดจเดฏเตเดŸเต† เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดซเต€เตฝเดกเต เด•เตเดฏเต‚เดตเดฟเดฒเต† เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เด•เต—เดฃเตเดŸเดฑเดพเดฃเต.
m1, m4, m1, m2 เดŽเดจเตเดจเต€ 3 เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏ q4 เดŽเดจเตเดจเต เดชเต‡เดฐเตเดณเตเดณ เด’เดฐเต เด•เตเดฏเต‚ เดคเดพเดดเต†เดฏเตเดณเตเดณ เดšเดฟเดคเตเดฐเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.
Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 11
m1,m4,m1,m2 เดŽเดจเตเดจเต€ 3 เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏ q4 เดŽเดจเตเดจ เดชเต‡เดฐเดฟเดฒเตเดณเตเดณ เด’เดฐเต เด•เตเดฏเต‚ เดคเดพเดดเต†เดฏเตเดณเตเดณ เดšเดฟเดคเตเดฐเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. m2_2, m1_2 เดŽเดจเตเดจเต€ เดฐเดฃเตเดŸเต เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด•เต‚เดŸเดฟ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดจเตเดฑเต† เดคเดฒเดฏเดพเดฃเต เดธเดจเตเดฆเต‡เดถเด‚ m2.

Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 11

เด•เตเดฏเต‚เด•เตพ 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 เดฎเต‚เดฒเด•เดคเตเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดšเต‡เตผเดคเตเดคเต เดŽเด‚เดชเต. เดŽเด™เตเด•เดฟเตฝ เดŽเด‚เดชเต=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;

เดซเดฟเตฝเดŸเตเดŸเตผ เดชเดฟเดจเตเดจเตเด•เตพ เดชเต‚เดœเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เดธเดจเตเดฆเต‡เดถ เด•เตเดฏเต‚ เดตเดดเดฟ เดฐเดฃเตเดŸเต เดชเดฟเดจเตเดจเตเด•เดณเตเดŸเต† เด•เดฃเด•เตเดทเตป เด˜เดŸเดจเดฏเดพเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต _เดŽเด‚เดŽเดธเตเด•เตเดฏเต‚, เด…เดคเดฟเตฝ เด’เดฐเต เดธเดจเตเดฆเต‡เดถ เด•เตเดฏเต‚เดตเตเด‚ เด…เดคเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดฐเดฃเตเดŸเต เดธเดฟเด—เตเดจเตฝ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเต‹เดฏเดฟเดจเตเดฑเดฑเตเด•เดณเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

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

เดˆ เด˜เดŸเดจเดฏเต† เดžเด™เตเด™เตพ เดธเดฟเด—เตเดจเตฝ เดฒเดฟเด™เตเด•เต เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚. เด“เดฐเต‹ เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเตผ เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดฒเตเด‚ เด‡เตปเดชเตเดŸเตเดŸเต เดฒเดฟเด™เตเด•เตเด•เดณเตเดŸเต† เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดฒเดฟเด™เตเด•เตเด•เดณเตเดŸเต† เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (MSQueue). เด’เดฐเต เดซเดฟเตฝเดŸเตเดŸเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดชเดŸเตเดŸเดฟเด•เด•เดณเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต; เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟ เดšเต†เดฏเตโ€Œเดค เด’เดฐเต เดคเดฐเด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด‡เดคเต เด‡เดคเดฟเดจเด•เด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต MSFilterDesc, เดžเด™เตเด™เตพ เดธเตเดตเดจเตเดคเด‚ เดซเดฟเตฝเดŸเตเดŸเตผ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเดชเตเดชเต‹เตพ. เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดฒเต† เดเดคเต เดซเดฟเตฝเดŸเตเดŸเดฑเตเด‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด˜เดŸเดจ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต, MSFilter:


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;

เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเดพเดจเดฟเดจเต เด…เดจเตเดธเตƒเดคเดฎเดพเดฏเดฟ เดธเดฟ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดฒเต† เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดค เดถเต‡เดทเด‚ (เดŽเดจเตเดจเดพเตฝ เดŸเดฟเด•เตเด•เตผ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตโ€ŒเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ), เด…เดคเตเดตเดดเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดกเดฏเดฑเด•เตโ€Œเดฑเตเดฑเต เด—เตเดฐเดพเดซเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเต, เด…เดคเดฟเดจเตเดฑเต† เดจเต‹เดกเตเด•เตพ เด˜เดŸเดจเดฏเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเดพเดฃเต MSFilter, เด’เดชเตเดชเด‚ เด…เดฐเดฟเด•เตเด•เตพ เดฒเดฟเด™เตเด•เตเด•เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเดพเดฃเต MSQueue.

เดŸเดฟเด•เตเด•เดฑเดฟเดจเตเดฑเต† เดคเดฟเดฐเดถเตเดถเต€เดฒเดฏเตเด•เตเด•เต เดชเดฟเดจเตเดจเดฟเดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เดŸเดฟเด•เตเด•เตผ เดŸเดฟเด•เตเด•เตเด•เดณเตเดŸเต† เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดจเตเดณเตเดณ เดซเดฟเตฝเดŸเตเดŸเดฑเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดžเตเดžเดชเตเดชเต‹เตพ, เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฎเตเดดเตเดตเตป เดธเดคเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ. เด•เตเดฒเต‹เด•เตเด•เดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดฐเต เดตเดธเตเดคเตเดตเดพเดฃเต เดŸเดฟเด•เตเด•เตผ เดชเตเดฐเด•เตเดฐเดฟเดฏ() เด…เดคเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเดฟเดจเตเดฑเต† (เด—เตเดฐเดพเดซเต) เดŽเดฒเตเดฒเดพ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เดณเตเด‚. เด’เดฐเต เดธเดฟ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดฒเต† เด—เตเดฐเดพเดซเต เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดŸเดฟเด•เตเด•เดฑเดฟเดจเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เด“เดซเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเดตเดฐเต† เดŸเดฟเด•เตเด•เตผ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด—เตเดฐเดพเดซเต เดžเด™เตเด™เตพ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเดคเดฟเดจเตเดถเต‡เดทเด‚, เดŸเดฟเด•เตเด•เตผ เด…เดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดšเดฐเดฃเดคเตเดคเดฟเตฝ เดเตฝเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด—เตเดฐเดพเดซเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต, เด…เดคเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด’เดฐเต‡ เดซเดฟเตฝเดŸเตเดŸเตผ เดฐเดฃเตเดŸเตเดคเดตเดฃ "เดŽเดฃเตเดฃเด‚" เดšเต†เดฏเตเดฏเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เดณเดฟเตฝ เด’เดฐเต เดšเต†เด•เตเด•เตเดฌเต‹เด•เตเดธเต เดธเตเดฅเดพเดชเดฟเดšเตเดšเต เด…เดคเต เด…เดŸเดฏเดพเดณเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต. seen. เด“เดฐเต‹ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด‚ เด‰เดณเตเดณ เดฒเดฟเด™เตเด•เต เดŸเต‡เดฌเดฟเดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดคเดฟเดฐเดฏเตฝ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต.

เด—เตเดฐเดพเดซเดฟเดจเตเดฑเต† เด†เดฎเตเด– เดŸเต‚เตผ เดธเดฎเดฏเดคเตเดคเต, เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเดŸเต† เด‰เดฑเดตเดฟเดŸเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต†เดฃเตเดฃเดฎเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดŸเดฟเด•เตเด•เตผ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด—เตเดฐเดพเดซเต เดคเต†เดฑเตเดฑเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเด•เดฏเตเด‚ เดŸเดฟเด•เตเด•เตผ เดคเด•เดฐเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เด—เตเดฐเดพเดซเต "เดถเดฐเดฟเดฏเดพเดฃเต" เดŽเดจเตเดจเต เดฎเดพเดฑเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เด“เดฐเต‹ เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเตเด‚, เดซเด‚เด—เตเดทเตป เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต เดชเตเดฐเต€เดชเตเดฐเต‹เดธเดธเต(). เด…เดŸเตเดคเตเดค เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดธเตˆเด•เตเด•เดฟเดณเดฟเดจเตเดณเตเดณ เดจเดฟเดฎเดฟเดทเด‚ เดตเดจเตเดจเดพเดฒเตเดŸเตป (เด“เดฐเต‹ 10 เดฎเดฟเดฒเตเดฒเดฟเดธเต†เด•เตเด•เตปเดกเดฟเดฒเตเด‚ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ), เดŸเดฟเด•เตเด•เตผ เดซเด‚เด—เตโ€Œเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต เดชเตเดฐเด•เตเดฐเดฟเดฏ() เดฎเตเดฎเตเดชเต เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เดŽเดฒเตเดฒเดพ เด‰เดฑเดตเดฟเดŸ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพเด•เตเด•เตเด‚ เดคเตเดŸเตผเดจเตเดจเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเดฒเต† เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพเด•เตเด•เตเด‚. เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเต เด‡เตปเดชเตเดŸเตเดŸเต เดฒเดฟเด™เตเด•เตเด•เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดซเด‚เด—เตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดชเตเดฐเด•เตเดฐเดฟเดฏ() เด‡เตปเดชเตเดŸเตเดŸเต เดฒเดฟเด™เตเด•เต เด•เตเดฏเต‚เด•เตพ เดถเต‚เดจเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เด‡เดคเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเดฒเต† เด…เดŸเตเดคเตเดค เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เตเด•เดฏเตเด‚ เด‡เตปเดชเตเดŸเตเดŸเต เดฒเดฟเด™เตเด•เตเด•เตพ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเตเด•เตเดคเดฎเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด…เดคเต "เดธเตเด•เตเดฐเต‹เตพ" เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดฒเดฟเดธเตเดฑเตเดฑเต เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดฐเต† เดŸเดฟเด•เตเด•เตผ เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เตเดจเตเดจเต. เด‡เดคเต เดธเตˆเด•เตเด•เดฟเดณเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต.

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดŸเตเดฏเต‚เดชเตเดชเดฟเดฒเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•เดฏเตเด‚ เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดŽเดจเตเดฑเดฟเดฑเตเดฑเดฟ เดšเต‡เตผเดคเตเดคเดคเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดชเตŠเดคเตเดตเต‡, เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด…เตฝเด—เต‹เดฐเดฟเดคเดคเตเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด…เดณเดตเต เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ, เด‡เตปเดชเตเดŸเตเดŸเดฟเตฝ เดฒเดญเดฟเดšเตเดš เดกเดพเดฑเตเดฑ เดฌเดซเดฑเตเด•เดณเตเดŸเต† เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดจเตเดฑเต† เด—เตเดฃเดฟเดคเดฎเดฒเตเดฒ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด’เดฐเต เดซเดพเดธเตเดฑเตเดฑเต เดซเตเดฏเต‚เดฑเดฟเดฏเตผ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดฐเต เดซเดฟเตฝเดŸเตเดŸเตผ เดŽเดดเตเดคเตเด•เดฏเดพเดฃเต, เดจเดฟเตผเดตเดšเดจเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดฐเดฃเตเดŸเต เดถเด•เตเดคเดฟเดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเต‚. เด…เดคเต 512 เดŽเดฃเตเดฃเดฎเดพเด•เดŸเตเดŸเต†. เด’เดฐเต เดŸเต†เดฒเดฟเดซเต‹เตบ เดšเดพเดจเดฒเดพเดฃเต เดกเดพเดฑเตเดฑ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต†เด™เตเด•เดฟเตฝ, เด‡เตปเดชเตเดŸเตเดŸเดฟเดฒเต† เด“เดฐเต‹ เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เดกเดพเดฑเตเดฑ เดฌเดซเตผ เดžเด™เตเด™เตพเด•เตเด•เต 160 เดธเดฟเด—เตเดจเตฝ เดธเดพเดฎเตเดชเดฟเดณเตเด•เตพ เด•เตŠเดฃเตเดŸเตเดตเดฐเตเด‚. เด†เดตเดถเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด‡เตปเดชเตเดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเตเดฐเดฒเต‹เดญเดจเดฎเดพเดฃเต. เดŽเดจเตเดจเดพเตฝ เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดŸเดฟเด•เตเด•เดฑเตเดฎเดพเดฏเดฟ เด’เดฐเต เด•เต‚เดŸเตเดŸเดฟเดฏเดฟเดŸเดฟ เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚, เด…เดคเต เด‡เตปเดชเตเดŸเตเดŸเต เดฒเดฟเด™เตเด•เต เดถเต‚เดจเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เดซเดฟเตฝเดŸเตเดŸเตผ เดธเตเด•เตเดฐเต‹เตพ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเต. เดฎเตเดฎเตเดชเต, เดžเด™เตเด™เตพ เดˆ เดจเดฟเดฏเดฎเด‚ เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเตเดฑเต† เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เดคเดคเตเดตเดฎเดพเดฏเดฟ เดจเดฟเดถเตเดšเดฏเดฟเดšเตเดšเต. เดˆ เดคเดคเตเดตเดฎเดจเตเดธเดฐเดฟเดšเตเดšเต, เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เดธเดธเตเดธเต() เดซเด‚เด—เตเดทเตป เด‡เตปเดชเตเดŸเตเดŸเต เด•เตเดฏเต‚เด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด‚ เดŽเดŸเตเด•เตเด•เดฃเด‚.

เด•เต‚เดŸเดพเดคเต†, เด‡เตปเดชเตเดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต 512 เดธเดพเดฎเตเดชเดฟเดณเตเด•เตพ เดฎเดพเดคเตเดฐเด‚ เดŽเดŸเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเตเดดเตเดตเตป เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดŽเดŸเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเต‚, เด…เดคเดพเดฏเดคเต. เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเต 640 เดธเดพเดฎเตเดชเดฟเดณเตเด•เตพ เดŽเดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฏเดฟเตฝ 512 เดŽเดฃเตเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚, เดฌเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดญเดพเด—เด‚ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต. เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เดซเดฟเตฝเดŸเตเดŸเตผ, เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดœเต‹เดฒเดฟเด•เตเด•เต เดชเตเดฑเดฎเต‡, เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด‡เดจเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดธเดนเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเตฝเด•เดฃเด‚. เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดจเตเดฑเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเด‚ เดˆ เดชเตŠเดคเต เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเดตเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต - MSBufferizer (bufferer), เด‡เดคเต tuples เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดˆ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดฌเดซเดฑเตˆเดธเตผ (MSBufferizer)

เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดซเดฟเตฝเดŸเตเดŸเตผ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฎเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เตพ เด…เดคเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดตเดธเตเดคเตเดตเดพเดฃเดฟเดคเต. เดฌเดซเตผ เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเตเดฐเต‹เดธเดธเตเดธเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดชเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเต† เดซเดฟเตฝเดŸเตเดŸเตผ เดจเดฟเดทเตโ€Œเด•เตเดฐเดฟเดฏ เดฎเต‹เดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดจเดพเตฝ เดฌเดซเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฑเต€เดกเดฟเด‚เด—เต เดซเด‚เด—เตโ€Œเดทเตป เดชเต‚เดœเตเดฏเด‚ เด…เดฒเตเดฒเดพเดคเต† เดฎเดฑเตเดฑเตŠเดฐเต เดฎเต‚เดฒเตเดฏเด‚ เดจเตฝเด•เตเดฎเตเดชเต‹เตพ, เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เดธเดธเตเดธเต() เดซเด‚เด—เตโ€Œเดทเตป เดฌเดซเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดฒเตเดณเตเดณ เดญเดพเด—เด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดŽเดŸเตเด•เตเด•เดพเดจเตเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดคเตเดŸเด™เตเด™เตเดจเตเดจเต, เด…เดคเต เดคเต€เดฐเตเดจเตเดจเดคเตเดตเดฐเต†.
เด‡เดคเตเดตเดฐเต† เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดพเดฑเตเดฑ เดŸเตเดฏเต‚เดชเตเดชเดฟเดณเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เด˜เดŸเด•เดฎเดพเดฏเดฟ เดฌเดซเดฑเดฟเตฝ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเตฝ เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เด˜เดŸเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดฌเดซเดฑเดฟเดจเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด˜เดŸเดจ:

struct _MSBufferizer{
queue_t q; /* ะžั‡ะตั€ะตะดัŒ ัะพะพะฑั‰ะตะฝะธะน. */
int size; /* ะกัƒะผะผะฐั€ะฝั‹ะน ั€ะฐะทะผะตั€ ะดะฐะฝะฝั‹ั… ะฝะฐั…ะพะดัั‰ะธั…ัั ะฒ ะฑัƒั„ะตั€ะธะทะฐั‚ะพั€ะต ะฒ ะดะฐะฝะฝั‹ะน ะผะพะผะตะฝั‚. */
};
typedef struct _MSBufferizer MSBufferizer;

MSBufferizer-เดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เด’เดฐเต เดชเตเดคเดฟเดฏ เดฌเดซเตผ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต:

MSBufferizer * ms_bufferizer_new(void);

เดฎเต†เดฎเตเดฎเดฑเดฟ เด…เดจเตเดตเดฆเดฟเดšเตเดšเต, เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต ms_bufferizer_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_bufferizer_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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•