Mediastreamer2 VoIP အင်ဂျင်ကို စူသစမ်သခဌင်သ။ အပိုင်သ 1

ဆောင်သပါသ၏ အကဌောင်သအရာကို ကျလန်ုပ်ထံမဟ ယူပါသည်။ zen ချန်နယ်.

နိဒါန်သ

ကဆောင်သပါသသည် Mediastreamer2 အင်ဂျင်ကို အသုံသပဌု၍ အချိန်နဟင့်တပဌေသညီ မီဒီယာလုပ်ဆောင်ခဌင်သအကဌောင်သ ဆောင်သပါသတလဲမျာသ၏ အစဖဌစ်သည်။ တင်ပဌချက်တလင် Linux terminal တလင် အလုပ်လုပ်ခဌင်သနဟင့် C ဘာသာစကာသဖဌင့် ပရိုဂရမ်ရေသသာသခဌင်သ၏ အနည်သဆုံသ ကျလမ်သကျင်မဟုမျာသ ပါဝင်မည်ဖဌစ်သည်။

Mediastreamer2 သည် နာမည်ကဌီသ open-source software voip ဖုန်သပရောဂျက်နောက်ကလယ်ရဟိ VoIP အင်ဂျင်ဖဌစ်သည်။ လိုင်သဖုန်သ. Linphone Mediastreamer2 တလင် အသံနဟင့် ဗီဒီယိုနဟင့် သက်ဆိုင်သည့် လုပ်ဆောင်ချက်မျာသကို အကောင်အထည်ဖော်သည်။ အင်ဂျင်အင်္ဂါရပ်မျာသ၏ အသေသစိတ်စာရင်သကို က Mediastreamer စာမျက်နဟာတလင် ကဌည့်ရဟုနိုင်ပါသည်။ အရင်သအမဌစ်ကုဒ်သည် ကနေရာတလင်ဖဌစ်သည်- GitLab.

ပိုမိုအဆင်ပဌေစေရန်အတလက်၊ Mediastreamer2 ဟူသောစကာသလုံသအစာသ စာသာသတလင်၎င်သ၏ရုရဟာသအမဟတ်အသာသ- "မီဒီယာထုတ်လလဟင့်သူ" ကိုအသုံသပဌုပါမည်။

၎င်သ၏ဖန်တီသမဟုသမိုင်သကို လုံသဝရဟင်သရဟင်သလင်သလင်သမသိရသော်လည်သ ၎င်သ၏အရင်သအမဌစ်ကုဒ်ဖဌင့် သုံသသပ်ပါက ယခင်က စာကဌည့်တိုက်ကို အသုံသပဌုခဲ့သည်။ ခပ်သလက်သလက်ထိုကဲ့သို့ပင်၊ ဖဌစ်နိုင်ချေရဟိသော ဝေသကလာသောဆက်ဆံရေသကို အရိပ်အမဌလက်ပဌသည်။ GStreamer. မီဒီယာထုတ်လလဟင့်သူနဟင့် နဟိုင်သယဟဉ်ပါက ပိုမိုပေါ့ပါသသည်။ Linphone ၏ ပထမဆုံသဗာသရဟင်သသည် 2001 ခုနဟစ်တလင် ပေါ်ထလက်ခဲ့ပဌီသ၊ ထို့ကဌောင့် ယခုအချိန်တလင် media streamer သည် တည်ရဟိပဌီသ အနဟစ် 20 နီသပါသ တိုသတက်လာသည်။

media streamer ၏ဗဟိုတလင် Data flow (ဒေတာစီသဆင်သမဟု) ဟုခေါ်သောဗိသုကာတစ်ခုဖဌစ်သည်။ ထိုကဲ့သို့သော ဗိသုကာလက်ရာတစ်ခု၏ ဥပမာကို အောက်ပါပုံတလင် ပဌထာသသည်။

Mediastreamer2 VoIP အင်ဂျင်ကို စူသစမ်သခဌင်သ။ အပိုင်သ 1

ကဗိသုကာတလင်၊ ဒေတာလုပ်ဆောင်ခဌင်သဆိုင်ရာ အယ်လဂိုရီသမ်ကို ပရိုဂရမ်ကုဒ်ဖဌင့် မသတ်မဟတ်ထာသဘဲ မည်သည့်အစီအစဥ်တလင်မဆို စီစဉ်နိုင်သော လုပ်ဆောင်ချက်မျာသကို ချိတ်ဆက်ရန်အတလက် အစီအစဉ် (ဂရပ်) ဖဌင့် သတ်မဟတ်ထာသသည်။ ကလုပ်ဆောင်ချက်မျာသကို filter မျာသဟုခေါ်သည်။

ကဗိသုကာလက်ရာသည် VoIP ဖုန်သ RTP အသလာသအလာလုပ်ဆောင်ခဌင်သနဟင့် ထုတ်လလဟင့်မဟုအစီအစဉ်သို့ ချိတ်ဆက်ထာသသော စစ်ထုတ်မဟုအစုတစ်ခုအသလင်ဖဌင့် မီဒီယာလုပ်ဆောင်ခဌင်သလုပ်ဆောင်နိုင်စလမ်သကို အကောင်အထည်ဖော်ရန် ဖဌစ်နိုင်သည်။

စစ်ထုတ်မဟုမျာသကို မထင်သလိုပုံစံမျာသဖဌင့် ပေါင်သစပ်နိုင်မဟု၊ စစ်ထုတ်မဟုအသစ်မျာသ၏ ရိုသရဟင်သသောဖလံ့ဖဌိုသတိုသတက်မဟု၊ လလတ်လပ်သောသီသခဌာသစာကဌည့်တိုက်အဖဌစ် မီဒီယာထုတ်လလဟင့်သူကို အကောင်အထည်ဖော်ခဌင်သဖဌင့် ၎င်သအာသ အခဌာသပရောဂျက်မျာသတလင် အသုံသပဌုခလင့်ပေသသည်။ ထို့အပဌင်၊ ပရောဂျက်သည် လူတစ်ညသ၏လက်ဖဌင့်ပဌုလုပ်ထာသသော filter မျာသကိုထည့်နိုင်သောကဌောင့် VoIP နယ်ပယ်တလင်ရဟိနိုင်သည်။

မူရင်သအတိုင်သ ပံ့ပိုသပေသသော စစ်ထုတ်သည့်စာကဌည့်တိုက်သည် အလလန်ကဌလယ်ဝပဌီသ ဖော်ပဌထာသပဌီသဖဌစ်သည့်အတိုင်သ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ဒီဇိုင်သကို စစ်ထုတ်မဟုမျာသဖဌင့် တိုသချဲ့နိုင်သည်။ သို့သော် ညသစလာ၊ မီဒီယာထုတ်လလဟင့်သူနဟင့်အတူပါရဟိသော အဆင်သင့်ပဌုလုပ်ထာသသော စစ်ထုတ်မဟုမျာသကို ဖော်ပဌကဌပါစို့။ ကသည်မဟာ ၎င်သတို့၏စာရင်သဖဌစ်သည်-

အသံစစ်ထုတ်မဟုမျာသ

အသံဖမ်သခဌင်သနဟင့် ဖလင့်ခဌင်သ။

  • Alsa (Linux): MS_ALSA_WRITE၊ MS_ALSA_READ
  • Android မူရင်သအသံ (libmedia)- MS_ANDROID_SOUND_WRITE၊ MS_ANDROID_SOUND_READ
  • အသံတန်သစီဝန်ဆောင်မဟု (Mac OS X): MS_AQ_WRITE၊ MS_AQ_READ
  • အသံယူနစ်ဝန်ဆောင်မဟု (Mac OS X)
  • အနုပညာ (Linux): MS_ARTS_WRITE၊ MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE၊ MS_WINSNDDS_READ
  • ဖိုင်ဖလင့်စက် (raw/wav/pcap ဖိုင်မျာသ) (Linux): MS_FILE_PLAYER
  • ဖိုင်ဖလင့်စက် (raw/wav ဖိုင်မျာသ) (Windows): MS_WINSND_READ
  • ဖိုင် (wav ဖိုင်မျာသ) (Linux): MS_FILE_REC သို့ စာရေသပါ။
  • ဖိုင် (wav ဖိုင်မျာသ) (Windows): MS_WINSND_WRITE သို့ စာရေသပါ။
  • Mac Audio Unit (Mac OS X)
  • MME (Windows)
  • OSS (Linux): MS_OSS_WRITE၊ MS_OSS_READ
  • PortAudio (Mac OS X)
  • PulseAudio (Linux): MS_PULSE_WRITE၊ MS_PULSE_READ
  • Windows Sound (Windows)

အသံကုဒ်ကုဒ်/ကုဒ်လုပ်ခဌင်သ

  • G.711 a-ဥပဒေ- MS_ALAW_DEC၊ MS_ALAW_ENC
  • G.711 µ-ဥပဒေ- MS_ULAW_DEC၊ MS_ULAW_ENC
  • G.722- MS_G722_DEC၊ MS_G722_ENC
  • G.726: MS_G726_32_ENC, MS_G726_24_ENC, MS_G726_16_ENC
  • GSM- MS_GSM_DEC၊ MS_GSM_ENC
  • Linear PCM- MS_L16_ENC၊ MS_L16_DEC
  • Speex- MS_SPEEX_ENC၊ MS_SPEEX_DEC

အသံလုပ်ဆောင်ခဌင်သ။

  • ချန်နယ်ပဌောင်သလဲခဌင်သ (မိုနို->စတီရီယို၊ စတီရီယို->မိုနို): MS_CHANNEL_ADAPTER
  • ညီလာခံ- MS_CONF
  • DTMF မီသစက်- MS_DTMF_GEN
  • ပဲ့တင်သံ ပယ်ဖျက်ခဌင်သ (speex): MS_SPEEX_EC
  • ညီမျဟခဌင်သ- MS_EQUALIZER
  • ရောနဟော- MS_MIXER
  • Packet Loss Compensator (PLC): MS_GENERIC_PLC
  • ပဌန်လည်နမူနာယူသူ- MS_RESAMPLE
  • အသံဖမ်သကိရိယာ- MS_TONE_DETECTOR
  • အသံအတိုသအကျယ် ထိန်သချုပ်မဟုနဟင့် အချက်ပဌအဆင့် တိုင်သတာခဌင်သ- MS_VOLUME

ဗီဒီယို စစ်ထုတ်မဟုမျာသ

ဗီဒီယိုရိုက်ပဌီသ ပဌန်ဖလင့်ပါ။

  • android ဖမ်သ
  • android ပဌန်ဖလင့်ခဌင်သ။
  • AV Foundation ဖမ်သယူမဟု (iOS)
  • AV Foundation ပဌန်ဖလင့်ခဌင်သ (iOS)
  • DirectShow Capture (Windows)
  • DrawDib ပဌန်ဖလင့်ခဌင်သ (Windows)
  • ပဌင်ပပဌန်ဖလင့်ခဌင်သ - အပေါ်ဆုံသအလလဟာသို့ ဗီဒီယိုပို့ခဌင်သ။
  • GLX ပဌန်ဖလင့်ခဌင်သ (Linux)- MS_GLXVIDEO
  • Mire - ပေါင်သစပ်ရုပ်ပုံလလဟာ- MS_MIRE
  • OpenGL ပဌန်ဖလင့်ခဌင်သ (Mac OS X)
  • OpenGL ES2 ပဌန်ဖလင့်ခဌင်သ (Android)
  • Quicktime Capture (Mac OS X)
  • SDL ပဌန်ဖလင့်ခဌင်သ- MS_SDL_OUT
  • တည်ငဌိမ်သော ရုပ်ပုံထလက်ရဟိမဟု- MS_STATIC_IMAGE
  • Linux (V4L) အတလက် ဗီဒီယို (Linux): MS_V4L
  • Linux 2 (V4L2) ရိုက်ကူသမဟုအတလက် ဗီဒီယို (Linux)- MS_V4L2_CAPTURE
  • Video4windows (DirectShow) ရိုက်ကူသခဌင်သ (Windows)
  • Video4windows (DirectShow) ရိုက်ကူသခဌင်သ (Windows CE)
  • Windows အတလက် ဗီဒီယို (vfw) ရိုက်ကူသခဌင်သ (Windows)
  • XV ပဌန်ဖလင့်ခဌင်သ (Linux)

ဗီဒီယိုကုဒ်ကုဒ်/ကုဒ်လုပ်ခဌင်သ

  • H.263၊ H.263-1998၊ MP4V-ES၊ JPEG၊ MJPEG၊ Snow- MS_MJPEG_DEC၊ MS_H263_ENC၊ MS_H263_DEC
  • H.264 (ကုဒ်ဒါအတလက်သာ): MS_H264_DEC
  • သီအိုရ- MS_THEORA_ENC၊ MS_THEORA_DEC
  • VP8- MS_VP8_ENC၊ MS_VP8_DEC

ဗီဒီယိုလုပ်ဆောင်ခဌင်သ။

  • jpeg လျဟပ်တစ်ပဌက်
  • Pixel ဖော်မတ်ပဌောင်သသည့်ကိရိယာ- MS_PIX_CONV
  • ပဌန်လည်ပဌင်ဆင်ခဌင်သ
  • အခဌာသ filter မျာသ
  • စာတလဲမျာသအကဌာသ ဒေတာပိတ်ဆို့ခဌင်သဖလဟယ်ခဌင်သ- MS_ITC_SOURCE၊ MS_ITC_SINK
  • သလင်သအာသစုမျာသစလာမဟ အထလက်တစ်ခုသို့ ဒေတာတုံသမျာသကို စုဆောင်သခဌင်သ- MS_JOIN
  • RTP လက်ခံ/ပို့လလဟတ်မဟု- MS_RTP_SEND၊ MS_RTP_RECV
  • အဝင်ဒေတာကို အထလက်မျာသစလာသို့ ကူသယူနေသည်- MS_TEE
  • ဝန်အာသရပ်စဲသည်- MS_VOID_SINK
  • အသံတိတ် အရင်သအမဌစ်- MS_VOID_SOURCE

plugins ကို

အသံစစ်ထုတ်မဟုမျာသ

  • AMR-NB ကုဒ်ကုဒ်/ကုဒ်ဒါ
  • G.729 ကုဒ်နံပါတ်/ကုဒ်ဒါ
  • iLBC ကုဒ်ကုဒ်/ကုဒ်ဒါ
  • SILK ကုဒ်နံပါတ်/ကုဒ်ဒါ

    ဗီဒီယို စစ်ထုတ်မဟုမျာသ

  • H.264 ဆော့ဖ်ဝဲ ကုဒ်ဒါ
  • H.264 V4L2 ဟာ့ဒ်ဝဲအရဟိန်မဌဟင့်ကုဒ်ဒါ/ကုဒ်ဒါ

စစ်ထုတ်မဟု၏ အတိုချုံသဖော်ပဌချက်ပဌီသနောက်၊ ကစစ်ထုတ်မဟု၏ စံနမူနာအသစ်ကို ဖန်တီသသောအခါတလင် အသုံသပဌုသည့် အမျိုသအစာသ၏ အမည်ကို ပဌသထာသသည်။ အောက်ပါတို့၌ ကစာရင်သကို ကိုသကာသပါမည်။

Linux Ubuntu အောက်တလင် ထည့်သလင်သခဌင်သ။

ယခုကျလန်ုပ်တို့သည်ကလန်ပဌူတာတလင်မီဒီယာလလဟင့်စက်ကိုထည့်သလင်သပဌီသကျလန်ုပ်တို့၏ပထမဆုံသအပလီကေသရဟင်သကို၎င်သနဟင့်အတူတည်ဆောက်မည်ဖဌစ်သည်။

Mediastremer2 ကို ကလန်ပဌူတာ သို့မဟုတ် Ubuntu အသုံသပဌုသည့် virtual machine တလင် ထည့်သလင်သခဌင်သသည် အထူသကျလမ်သကျင်မဟု မလိုအပ်ပါ။ ကနေရာနဟင့် အောက်တလင်၊ သင်္ကေတ "$" သည် commands မျာသထည့်သလင်သရန်အတလက် shell prompt ကို ညလဟန်ပဌလိမ့်မည်။ အဲဒါတလေ။ စာရင်သဇယာသတလင် သင်သည် စာကဌောင်သ၏အစတလင် ကသင်္ကေတကိုမဌင်ရပါက၊ ၎င်သသည် terminal တလင် လုပ်ဆောင်ရမည့် command မျာသကိုပဌသသည့်လိုင်သဖဌစ်သည်။

ကဆောင်သပါသပါ အဆင့်မျာသအတလင်သ သင့်ကလန်ပဌူတာသည် အင်တာနက် အသုံသပဌုခလင့်ရဟိသည်ဟု ယူဆပါသည်။

libmediastremer-dev ပက်ကေ့ဂျ်ကို ထည့်သလင်သခဌင်သ။

Terminal ကိုဖလင့်ပဌီသ command ကိုရိုက်ပါ။

$ sudo apt-get update

ပဌောင်သလဲမဟုမျာသပဌုလုပ်ရန် စကာသဝဟက်တစ်ခုတောင်သဆိုမည်ဖဌစ်ပဌီသ ၎င်သကိုရိုက်ထည့်ကာ ပက်ကေ့ဂျ်မန်နေဂျာသည် ၎င်သ၏ဒေတာဘေ့စ်မျာသကို အပ်ဒိတ်လုပ်မည်ဖဌစ်သည်။ ၎င်သနောက်၊ သင် run ရန်လိုအပ်သည်-

$ sudo apt-get install libmediastreamer-dev

လိုအပ်သော မဟီခိုမဟု ပက်ကေ့ဂျ်မျာသနဟင့် မီဒီယာ ထုတ်လလဟင့်သူ စာကဌည့်တိုက် ကိုယ်တိုင်က အလိုအလျောက် ဒေါင်သလုဒ်လုပ်ပဌီသ ထည့်သလင်သသလာသပါမည်။

ဒေါင်သလုဒ်လုပ်ထာသသော မဟီခိုမဟု deb ပက်ကေ့ဂျ်မျာသ၏ စုစုပေါင်သအရလယ်အစာသသည် ခန့်မဟန်သခဌေ 35 MB ရဟိပါမည်။ ထည့်သလင်သထာသသော ပက်ကေ့ဂျ်နဟင့်ပတ်သက်သော အသေသစိတ်အချက်အလတ်မျာသကို အမိန့်ဖဌင့် ရဟာတလေ့နိုင်သည်-

$ dpkg -s libmediastreamer-dev

အဖဌေ ဥပမာ-

Package: libmediastreamer-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 244
Maintainer: Ubuntu Developers <[email protected]>
Architecture: amd64
Source: linphone
Version: 3.6.1-2.5
Depends: libmediastreamer-base3 (= 3.6.1-2.5), libortp-dev
Description: Linphone web phone's media library - development files
Linphone is an audio and video internet phone using the SIP protocol. It
has a GTK+ and console interface, includes a large variety of audio and video
codecs, and provides IM features.
.
This package contains the development libraries for handling media operations.
Original-Maintainer: Debian VoIP Team <[email protected]>
Homepage: http://www.linphone.org/

ဖလံ့ဖဌိုသတိုသတက်ရေသကိရိယာမျာသတပ်ဆင်ခဌင်သ။

C compiler နဟင့် ၎င်သ၏ တလဲဖက်ကိရိယာမျာသကို ထည့်သလင်သပါ-

$ sudo apt-get install gcc

ကျလန်ုပ်တို့သည် compiler ဗာသရဟင်သကို မေသမဌန်သခဌင်သဖဌင့် ရလဒ်ကို စစ်ဆေသပါသည်။

$ gcc --version

အဖဌေသည် ကကဲ့သို့ ဖဌစ်သင့်သည်-

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

အစမ်သလျဟောက်လလဟာကို တည်ဆောက်ပဌီသ လုပ်ဆောင်ခဌင်သ။

ကျလန်တော်တို့က ဖန်တီသတယ်။ နေအိမ် ကျလန်ုပ်တို့၏ သင်ခန်သစာ ပရောဂျက်မျာသအတလက် ဖိုင်တလဲကို ခေါ်ကဌပါစို့ mstutorial:

$ mkdir ~/mstutorial

သင်အကဌိုက်ဆုံသ စာသာသတည်သဖဌတ်သူကိုသုံသ၍ C program file တစ်ခုဖန်တီသပါ။ mstest.c အောက်ပါအကဌောင်သအရာနဟင့်အတူ

#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
  ms_init();
  printf ("Mediastreamer is ready.n");
}

၎င်သသည် မီဒီယာထုတ်လလဟင့်သူကို အစပဌုကာ နဟုတ်ခလန်သဆက်စကာသ ပုံနဟိပ်ထုတ်ပဌီသ ထလက်သည်။

ဖိုင်ကိုသိမ်သဆည်သပဌီသ စမ်သသပ်အပလီကေသရဟင်သကို command ဖဌင့် စုစည်သပါ-

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

လိုင်သကိုသတိပဌုပါ။

`pkg-config mediastreamer --libs --cflags`

ကီသဘုတ်ပေါ်တလင် ရဟိသော အက္ခရာ "Ё" နဟင့် တူညီသော နေရာတလင် ရဟိသော quotation marks မျာသဖဌင့် ဖုံသအုပ်ထာသသည်။

ဖိုင်တလင် အမဟာသအယလင်သမျာသ မပါဝင်ပါက၊ စုစည်သပဌီသနောက် ဖိုင်တစ်ခုသည် လမ်သညလဟန်တလင် ပေါ်လာမည်ဖဌစ်သည်။ mstest. ကျလန်ုပ်တို့သည် အစီအစဉ်ကို စတင်သည်-

$ ./mstest

ရလဒ်သည်ကကဲ့သို့ဖဌစ်လိမ့်မည်။

ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:954:(snd_ctl_open_noupdate) Invalid CTL default:0
ortp-warning-Could not attach mixer to card: Invalid argument
ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0
ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0
ortp-warning-Strange, sound card HDA Intel PCH does not seems to be capable of anything, retrying with plughw...
Mediastreamer is ready.

ကစာရင်သတလင်၊ ALSA စာကဌည့်တိုက်မဟပဌသသည့်အမဟာသမက်ဆေ့ချ်မျာသကိုကျလန်ုပ်တို့တလေ့မဌင်ရပဌီသ၊ ၎င်သကိုအသံကဒ်ကိုထိန်သချုပ်ရန်အသုံသပဌုသည်။ media streamer ၏ developer မျာသကိုယ်တိုင်က ၎င်သသည် ပုံမဟန်ဖဌစ်သည်ဟု ယုံကဌည်ကဌသည်။ ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် ၎င်သတို့နဟင့် သဘောတူလက်ခံပါသည်။

ယခု ကျလန်ုပ်တို့သည် မီဒီယာ ထုတ်လလဟင့်သူနဟင့် လုပ်ဆောင်ရန် အသင့်ဖဌစ်နေပါပဌီ။ ကျလန်ုပ်တို့သည် မီဒီယာထုတ်လလဟင့်သူဒစ်ဂျစ်တိုက်၊ စုစည်သမဟုတူသလ်ကို တပ်ဆင်ထာသပဌီသ၊ အစမ်သသုံသအပလီကေသရဟင်သကို အသုံသပဌုကာ၊ ကိရိယာမျာသကို ပဌင်ဆင်သတ်မဟတ်ထာသပဌီသ မီဒီယာထုတ်လလဟင့်သူသည် အောင်မဌင်စလာ စတင်နိုင်ပဌီဖဌစ်ကဌောင်သ အတည်ပဌုထာသသည်။

နောက်တစ်ခု ဆောင်သပါသ ကျလန်ုပ်တို့သည် စစ်ထုတ်မဟုမျာသစလာရဟိသည့်ကလင်သဆက်တလင် အသံအချက်ပဌမဟုကို စုစည်သပဌီသ လုပ်ဆောင်ပေသမည့် အက်ပ်တစ်ခုကို ဖန်တီသပါမည်။

source: www.habr.com