Friday, February 29, 2008

เอามาทิ้งไว้ (เรื่องของการเสียเปล่า หรือเปล่านะ)

วันนี้จะลง http bining (boch) ให้กับ openfire jabber server
เพิ่งรู้ว่าตัว jabber โดยปกติมันไม่ support
ที่นี่http://groups.google.com/group/flex_india/msg/43397004ab6c9311
คุณ Arul Prasad เค้าว่าไว้อย่างนี้I've been working on a WildFire / Openfire based IM application, and so far its been acting good.
A few things pointers:
1. Wildfire / Openfire are pretty popular OS jabber servers out there 2. Flash libraries include - XIFF from JiveSoft, and mx.collaborations.xmpppackage, by Danny Dura of adobe. Not sure if there are more. A few things to remember:
1. I've heard from my network folks that Openfire/Wildfire is not 'scalable', so not very future proof. 2. Openfire/Wildfire work over xmlsockets - which might get blocked at firewalls. An answer to this is BOSH ( or HTTP Binding) and Openfire doesnt support it natively 3. you can install BOSH support as a component over wildfire/openfire. Google for BOSH and Punjab ( thats the name of the BOSH component)
Haven't used Red5, have heard its pretty good, but not sure especially since its still in early stages of development.
~Arul Prasad.
======
ก็เลยต้องออกแรงกันหน่อย โดนเริ่มไปเอา Punjab มาลง จากที่ http://butterfat.net/punjab/
ตัว punjab ยังต้องการ package เพิ่มเติมอีกนิดหน่อยดูจากใน Readme
Please make sure all dependencies are met before submitting a troubleshooting question.
- Python 2.3>
- Twisted >= 2.4
- Twisted-words >= 0.5.0 - Twisted-web >= 0.5.0
Recommended - Twisted-conch >= 0.5.0
NOTE : You can download all of these packages with the Twisted Sumo package. http://twistedmatrix.com/
- A jabber server like jabberd 1.4.x
ลืมบอกว่า punjab ที่ใช้คือ version 0.12 ในเวบเค้าบอกว่ากำลังจะเป็น 1.0 แต่มันก็ตั้งแต่กลางปี 2007
ดังนั้น เราจึงไป download python ตัวใหม่มาเพื่อความชัวร อย่าลืม check ด้วยว่า x64 มีมั้ย(ไม่เจอ แต่ไว้หาอีกที)ที่http://www.python.org/download/windows/คราวนี้ได้ปลา เอ้ย software version = pywin32-210.win32-py2.6.exe
โหลดต่อ จะเอา Twisted ที่ http://twistedmatrix.com/trac/ดันบอกว่า support กะ python 2.5 เลยต้องกลับไปโหลด python2.5 ใหม่คราวนี้ link ตรงไป sourceforge เลย http://sourceforge.net/project/platformdownload.php?group_id=78018
แล้วก็โหลด twisted ซะด้วย (สงสัยว่า twisted คืออะไร ก็อ่านเอา Twisted is an event-driven networking engine written in Python and licensed under the MIT license. )ได้ version นี้มา ฮ่าๆ http://tmrc.mit.edu/mirror/twisted/Twisted/2.5/Twisted_NoDocs-2.5.0.win32-py2.5.exe
แล้วก็ขนไปลงที่เครื่องกัน
กรรม python ที่เอาไปไม่ใช่ตัว python แต่เป็นหน้ากาก python เฉยๆ ซวยแระกลับไปเอาตัว python project มาด้วย
อืมๆ มีตัวของ x64 ด้วย ฝากไว้ก่อน ไว้ได้ดีจะกลับมาขอ
คราวนี้ขอน้อง python-2.5.2.msi ไปก่อนละกันนะhttp://www.python.org/download/releases/2.5.2/ เป็น vesion ของ 2.5 อันสุดท้านที่ release ก่อนไปขึ้น 3.0a2 ตอนนี้
Step เทพ ลงละนะ1.install python ก็ คลิ๊กๆ ง่ายจริงๆ ลงไปไว้ c โลด
1a แล้วก็ไหนๆโหลด python win มาแล้ว ก็ลงไปด้วย เผื่อมันช่วยอะไร ฮ่าๆ เนี่ยแหละวิธีทำงานของโปรแกรมเมอร์(มั่ว)มี lib เพิ่มดีกว่าไม่มี
2. ต่อไปลง Twisted อันนี้บอกตรงๆไม่เคยลงมาก่อนเลย ขอลงดู ก็คิ๊กๆเช่นเดิม (ไม่ได้นั่งหัวเราะเฉยๆนะ กดด้วยเม้าส์อะ)
3. สุดท้าย ลง punjab อันนี้งงนิดหน่อย เพราะเคยแต่ perl ไม่เคย python เท่าไร ฮะๆ(ปลอบใจตัวเอง) เห็นแต่พี่ชาเขียวใช้ เก่งโครตอยากทำได้มั่งแต่ขี้เกียจ เอ้า เลิกบ่น ไปทำซะหลังจากมั่วๆกู ก็ทำได้ ตามนี้เลย 1.ก่อนอื่นก็ต้อง set path ให้มันมี c:\python25 ที่เราเพิ่งลงไปได้ก่อน จะได้ run python.exe ได้ 2.จากนั้นก็ ไปที่ path c:\punjab-0.12 ที่เราเพิ่งลงไปเช่นกัน แล้วสั่ง command ตามใน readme
-------------Installing Punjab-------------
1. Untar the current punjab-X.X.tar.gz file in a directory you would like punjab to reside.
shell>tar vxzf punjab-X.X.tar.gz
2. Run setup to install
shell>python ./setup.py install
3. Configure punjab
shell>mktap punjab --port=5280 --host=localhost --xmlrpc=1 --httpp=1 --httpb=1 --soap=1 --html_dir="./html"
For viewing all options, run:
shell>mktap punjab --help
4. Run punjab
shell>twistd -f punjab.tap
5. HAVE FUN!!
3. ทำไงต่อหละ ไปทำต่อไป => อ้าวซวย mktap ไม่เห็นรู้จักเลย ก่งก๊ง เลยพึ่งพ่อกู(เกิ้ล)ก่อนใครไปเจอคำนึง จึงค่อยอ๋อ mktap/twistd in a Windows service << มันไม่เกี่ยวหรอก แต่รู้เลยว่า ต้องเรียกผ่าน twisted เมื่อกี้ไปเล่นแล้วรู้ว่ามันเป็น command line tool ตัวนึงนี่แหละ และเหมือนจะ set path อัตโนมัต i iไม่น่าโง่เลยตู แต่ก็ยังดีที่น่าจะทำได้ต่อ ก็ทำตาม command ที่เหลือเลย
คราวนี้ซวยของจริง ดัน error บอกว่าไม่มี SoapPy จะไปหาจากไหนละเนี่ย
C:\punjab-0.12>mktap punjab --port=5280 --host=localhost --xmlrpc=1 --httpp=1 --httpb=1 --soap=1 --html_dir="./html"C:\Python25\lib\site-packages\twisted\names\dns.py:50: RuntimeWarning: PyCryptonot available - proceeding with non-cryptographically secure random source 1Traceback (most recent call last): File "C:\Python25\scripts\mktap.py", line 19, in run() File "C:\Python25\lib\site-packages\twisted\scripts\mktap.py", line 180, in run ser = plg.makeService(options.subOptions) File "C:\punjab-0.12\punjab\tap.py", line 33, in makeService return punjab.makeService(config) File "C:\punjab-0.12\punjab\punjab.py", line 73, in makeService from soap import SOAPPJab File "C:\punjab-0.12\punjab\soap.py", line 2, in from twisted.web import server, resource, soap File "C:\Python25\lib\site-packages\twisted\web\soap.py", line 20, in
import SOAPpyImportError: No module named SOAPpy
C:\punjab-0.12>
search ต่อๆลองเอา SOAPPy มาลงเองเลยเพิ่งรู้ว่าการ set path ยังไงก็ต้องทำไว้ก่อน เจ้า twisted อะไรไม่ได้ช่วยตรงนี้เลยไป compile ตัว SoapPy อีกตัว ด้วยคำสั่ง python ./setup.py เหมือนๆเดิมอ้อ มีเวบนึงบอกว่า ให้ set เป็น PYTHONPATH ไว้ใน envirionment เลย จริงๆไปแหมะไว้กะ path เหมือนกัน เรียกหรูๆแค่นั้นก็ลองไปทำกันดูละกัน เอางี้ไปก่อน
อันนี้บอกว่าให้ลงเพิ่มเองhttp://twistedmatrix.com/pipermail/twisted-python/2004-July/008138.html
อันนี้เวบโปรเจค Soap ที่อยู่กะ python เชื่อมโดย twisted มั้งนะ มั่วๆเอาhttp://pywebsvcs.sourceforge.net/
ตัวนี้ไว้ไปโหลดมา SoapPyhttp://sourceforge.net/project/showfiles.php?group_id=26590&package_id=18246
พอรันคอมมานด์ปกติ (อย่าลืมใส่คำว่า install ผมลืม 2 ทีและ)มันก็ error บอกว่า import ต้องมาก่อน บรรทัดแรกอะไรงี้ก็ต้องไป search หาทางแก้ในเน็ทอันนี้แก้ http://lists.ibiblio.org/pipermail/cc-devel/2007-July/000530.html
เค้าบอกให้แก้ script เราก็ไม่ค่อยรู้เรื่อง แก้แค่เลื่อนบรรทัดไปก็ยัง error ก็เลย backup file setup.py เอาไว้ก่อน แล้วแก้ให้มัน simple ขึ้น โดยเลียนแบบจาก setup.py ของโปรเจค punjab ตามข้างล่างนี่
ก็เลยเปลี่ยน command setup มันให้ง่ายๆหน่อย set para วุ่นวายเลย error (ฮึ ไอ้พวกโชว์เหนือ -> บ้าเดะ เค้าทำให้ดูเป็นบุญตาแล้ว ยังไม่สำเหนียกอีก)
แก้ แบบนี้ ใส่ fix ไปโลด
from distutils.core import setup, Command, Extension
setup(name="SOAPpy", version='0.12.0', description="SOAP Services for Python", maintainer="Gregory Warnes", maintainer_email="Gregory.R.Warnes@Pfizer.com", url = 'http://pywebsvcs.sf.net/', long_description='SOAPpy provides tools for building SOAP clients and servers. For more information see http://pywebsvcs.sf.net/', packages=['SOAPpy','SOAPpy/wstools'] )
ก็ compile สำเร็จ เหอๆ ท้าทายดีหวะ เหนื่อย แต่ว่าทำไงต่อ หละเนี่ย


==========ข้อความเต็ม=================

Flex India Community

หน้าแรก
การสนทนา + การโพสต์ใหม่
หน้า
ไฟล์ เกี่ยวกับกลุ่มนี้ เข้าร่วมกลุ่มนี้ ข้อความจากการสนทนา Flex and Jabber กลุ่มที่คุณกำลังโพสต์ข้อความเข้าไปเป็นกลุ่ม Usenet ข้อความที่ถูกส่งไปยังกลุ่มนี้จะแสดงอีเมลต่อทุกๆ คนบนอินเทอร์เน็ตข้อความตอบกลับของคุณยังไม่ถูกส่งออกไปการโพสต์ของคุณสำเร็จแล้ว Arul Prasad M L ดูโปรไฟล์ ตัวเลือกเพิ่มเติม 8 ธ.ค. 2007, 03:27
จาก: "Arul Prasad M L" <arulpra...@gmail.com>วันที่: Sat, 8 Dec 2007 04:27:32 +0800ท้องที่: ส 8 ธ.ค. 2007 03:27เรื่อง: Re: [flex_india:4757] Re: Flex and Jabberตอบกลับผู้สร้าง ส่งต่อ พิมพ์ ดูกลุ่มหัวข้อ แสดงต้นฉบับ รายงานข้อความนี้ ค้นหาข้อความโดยผู้เขียนคนนี้ I've been working on a WildFire / Openfire based IM application, and so far its been acting good.
A few things pointers:
1. Wildfire / Openfire are pretty popular OS jabber servers out there 2. Flash libraries include - XIFF from JiveSoft, and mx.collaborations.xmpppackage, by Danny Dura of adobe. Not sure if there are more.
A few things to remember:
1. I've heard from my network folks that Openfire/Wildfire is not 'scalable', so not very future proof. 2. Openfire/Wildfire work over xmlsockets - which might get blocked at firewalls. An answer to this is BOSH ( or HTTP Binding) and Openfire doesnt support it natively 3. you can install BOSH support as a component over wildfire/openfire. Google for BOSH and Punjab ( thats the name of the BOSH component)
Haven't used Red5, have heard its pretty good, but not sure especially since its still in early stages of development.
~Arul Prasad.
On Dec 2, 2007 3:10 AM, Sajid Hussain <sajidun...@gmail.com> wrote:

> Hi Abdul ,
> Hos open fire and its given plugin for flash to make any IM ? > I also found tht with open fire we could use RED 5 for audio calls any > comment from u all guyz ?
> Thanks > Sajid > www.synergyi.com > Pakistan
> On Nov 28, 2007 7:57 AM, Abdul Qabiz <abdul.qa...@gmail.com> wrote:
> > Protocol is an industry standard and can do most of stuff (presence, p2p > > etc).... GTalk runs on Jabber protocol and there are many others...
> > You gotta take care of right server selection, there are many > > open-source servers, choose the one which scales...
> > You can surely take care of file-upload functionality, you can't do peer > > to peer stuff now... Hopefully, AIR would have P2P support (being able to > > open a socket connection or be a socket-server)
> > -abdul
> > On Nov 28, 2007 5:52 PM, vinay pillay <pillay.vi...@gmail.com> wrote:
> > > Hi friends > > > I am making a jabber client using a xmpplibrary > > > Can any one tell me how stable is this protocol > > > And is functionality like file transfer and transport possible
> > > Any kind of feedback is welcome I am waiting for ur response
> > > Thanks in advance
> > -- > > -abdul > > --------------------------------------- > > http://abdulqabiz.com/blog/ > > ---------------------------------------

-- Arul Prasad http://arulprasad.blogspot.com

ตอบกลับผู้สร้าง ส่งต่อ จัดอันดับการโพสต์นี้: Text for clearing space
โอยยยงง
เอาใหม่ตั้งแต่ต้นทำการ compile soappy ใหม่ (แก้กลับ)มันฟ้อง error
อ๋อพอดีไม่อ่าน Readme ของตัว Soap มันต้องการสองตัวนี้
- fpconst 0.6.0 or later, <http://research.warnes.net/projects/rzope/fpconst/>
- pyXML 0.8.3 or later, <http://pyxml.sourceforge.net>เรายังไม่ไดลงตัวล่างเลย ทำไมมันผ่านหละวะ

C:\punjab-0.12>mktap punjab --port=5280 --host=localhost --xmlrpc=1 --httpp=1 --httpb=1 --soap=1 --html_dir="./html"C:\Python25\lib\site-packages\twisted\names\dns.py:50: RuntimeWarning: PyCryptonot available - proceeding with non-cryptographically secure random source 1http://www.amk.ca/python/code/crypto

Thursday, February 28, 2008

jabber ใส่ยากจริงๆ



















LogoNamesort iconVersionOS
adium_logo.pngAdium1.2.2
Mac OS X
Blackberry-Vayu-logo.pngBlackberry-Vayu XMPP Client for RIM3.x
Java
J2me
RIM
coccinella_logo.pngCoccinella0.96.4.1
GNU/Linux
Mac OS X
Windows
BSD
Pocket PC
Windows CE
gajim_logo.pngGajim0.11.4
GNU/Linux
Windows
BSD
jabber.el_logo.pngjabber.el0.7.1
GNU/Linux
Mac OS X
Windows
BSD
Solaris
jabbim_logo.pngJabbim0.3
GNU/Linux
Windows
jeti_logo.pngJeti0.7.7
GNU/Linux
Mac OS X
Windows
AIX
browser
BSD
HP-UX
Java
Solaris
eCS / OS/2
JWChat1.0 beta 3
browser
konnekt_logo.pngKonnekt0.6.22.137
Windows
mcabber0.9.6
GNU/Linux
Mac OS X
BSD

Gibphone 2006

แกะไปแกะมา โค้ดนี้เขียนด้วย c# มีวิธีการหลายวิธีมากๆที่ไม่เคยรู้มาก่อน
เช่นการสร้าง Class จาก String ที่ส่งไปเป็น parameter => อันนี้ใช้ Type GetEvent GetMethod เอา
การ import dll แบบเลือกใน code เพราะมันทำให้สามารถรองรับกับ Class อื่นที่เป็น plugin ที่อยู่ใน Assembly อื่นเข้ามาในโปรเจคได้แบบ dynamic => อันนี้มันทำ Plugin Manager ขึ้นมา แล้วทำการ check ว่า Assembly ชื่ออะไรจาก LocalClassLoader
และทำการ unwrap <<== ยังไม่รู้ว่าทำอะไรทำไม

code แบบนี้

ObjectHandle oh = Activator.CreateInstanceFrom(file, typeName);
return
oh.Unwrap();

System.Activator
กะ ObjectHandle
ต้องลองไปดูเพิ่มถ้าจะใช้ แต่เอาด่วนๆ ก็จะเรียกเป็น ตรงๆประมาณ hardcode ไปแบบปรกติก็ได้

เป็นคนอื่นคงเสร็จไปแล้ว(หาได้ก็หามาละกัน) แต่เป็นผมก็นานหน่อยอะ

Tuesday, February 26, 2008

ในที่สุด.. ผมก็เจอ speex_net

เพระว่าเคยอ่าน และหาๆอยู่ว่า speex มันมี version ที่เป็น dot net ด้วย
แต่เข้าไปหาใน sourceforge ก็เจอแต่โปรเจคเปล่าๆ

แต่วันนี้ผม ก็ได้เจอแล้ว เนื่องจาก คนที่เขียน article เกี่ยวกับ encoder G.711 บน Code Project มาตอบ comment ไว้ว่า
โปรเจคที่เค้าทำเกี่ยวกับ VOIP ชื่อว่า GibPhone รวมทั้งทิ้ง link ไว้ให้ด้วย

อันนี้ link ไปโหลดโค้ด
http://sourceforge.net/projects/gibphone

Gibphone0.7 May 18, 2006 Download
Speex.NET Plugin1.0 May 18, 2006 Download

อันนี้ search เจอว่าเป็น main page
http://gibphone.sourceforge.net/

อันนี้ link ไปที่ Code Project เป็น c# พี่
http://www.codeproject.com/KB/security/g711audio.aspx

เข้าไปดูถึงได้เจอว่า ในโปรเจคนี้ทำ engine เกี่ยวกับ VoIP แล้วแยกการ Encode เป็นส่วนที่สามารถ plugable (มี plugin) เพิ่มเติมได้
plugin ก็คือ codec ที่ใช้ในการ encode voice นั่นเอง วะฮ่าๆๆ

แน่นอน มันมี Speex .Net ที่ตามหา ที่ไฝ่ฝันมานาน เป็น project ย่อยอีก
โปรแกรมเมอร์ที่ยืมจมูกคนอื่นหายใจมาครึ่งชีวิตจึงได้ดีใจสุดๆ ฮ่าๆ

เป็นการ port มา c# จาก Java อย่างที่เคยพูดไป... ก็ยังดีกว่าแกะโค้ด c ละวะ
มีลุ้นว่า จะ port เป็น
ว่าแล้วก็เข้าไปแกะๆเกาๆโค้ดกันดีกว่า

.... ไว้มาต่อ วันหลัง สอบ MIS ก่อน

Monday, February 25, 2008

เอาที่เค้าโพสไว้มาเก็บ TTS บน PPC

Hi,

A search with a search engine for "pocket pc text to speech sdk" or "pocket pc speech synthesis sdk" should turn up some results.

Some that I am aware of:
Homemade Text-To-Speech with .NET - an article discussing one possible approach to creatign a crude speech synthesis engine by hand with a .NET CF sample application http://www.generation5.org/content/2004/ttSpeech.asp
Flite - an open source text to speech engine with a Windows Mobile port available at http://www.viksoe.dk/code/flite.htm
Cepstral Text-to-speech - a commercial engine with a range of voices available (online demos at http://cepstral.com/demos/, downloads for pocket pc at http://cepstral.com/cgi-bin/downloads?type=1152217432), has a C / C++ API that is easily P/Invoked from .NET CF code.
The only one I have investigated/used in the past is the Cepstral product.

Hope this helps,
Christopher Fairbairn

====================

Other popular Audio and Video articles:
Motion Detection Algorithms
Some approaches to detect motion in a video stream.
Camera Vision - video surveillance on C#
A C# video surveillance application, which allows monitoring several IP cameras simultaneously.
Face Detection C++ Library with Skin and Motion Analysis
The article demonstrates face detection SSE optimized C++ library for color and gray scale data with skin detection, motion estimation for faster processing, small sized SVM and NN rough face prefiltering, PCA/LDA/ICA/any dimensionality reduction/projection and final NN classification
A Simple C# Wrapper for the AviFile Library
Edit AVI files in .NET.
CAviCap and CFrameGrabber - wrappers for AVICap Window
AVICap wrappers to ease real-time video processing and single frame capture

vs2008 ฮ่าอ่าอะ

จับมาไม่นาน ต้อง config อะไรนักนะ
การ Dev บน Dot net framework c#

เมื่อวานได้เล่นเรื่อง unsafe
เราสามารถใส่เกี่ยวกับ pointer บน c# ได้ โดยให้มันรู้ว่าเป็น unmanage code ด้วย keywork unsafe
จะใส่เฉพาะที่ function หรือ ที่ class เลยก็ได้ ยังไม่รู้ว่าต่างกันยังไง
เพราะยังไงก็ต้อง enable unsafe mode ใน project configuration อยู่ดี เป็น checkbox อยู่อะ

สองสามวันนี้มีการเอา โปรเจคอื่น อย่าง speex เอามาใช้โดย c#
หาวิธี compile ให้เป็น dll ด้วยนการเลือกให้เป็น dynamic output ที่ project config เหมือนกัน
แต่ต้องทำ dll_export เองอะ ใช้ extern แล้ว c# มองไม่เห็น อย่าถามว่าทำไม เค้าว่าเป็นเรื่องของ assembly code อะไรก็ไม่รู้

แต่ก่อนนี้ก็พยายามทำโปรเจค c++ มาเป็นตัว wrapper ประมาณเรียกว่า mixmoide ให้มันเป็น manage code ให้ c# เรียกได้
ติดที่ว่า เวลา include file header .h เข้ามาแล้ว กะใส่ lib เข้ามาใน project configuration แล้ว ก็ยังมีปัญหา เต้แก้โดยการใส่ full path ของ lib file เลย ในช่อง Additional library (ชื่ออาจจะยังผิดๆ ขออภัย ไว้ว่างๆจะมาแก้ให้ถูก)
เอาเป็นว่า ความรู้ใหม่ เวลาดึง lib ไปใช้ ต้องใช้ทั้ง .h และ dll ด้วย ไม่ใช่ lib เฉยๆ

แต่ speex ก็ยังมีปัญฆาอยู่เ เพราะเอามา encryp ไฟล์เล็กๆดังไม่ได้ ได้แต่ file ใหญ่
เพราะเราใช้ code ตรง โปรเจคตัวอย่าง

ถัดมาลองดูเรื่อง encode แบบอื่นบ้าง ก็ได้ นี่ A-Law กะ mu-Law (ตัว มิวอะ ไม่รู้ code) encoder/decoder ซึ่งใน CodeProject มีเป็น c# ให้ด้วย

ทั้ง 2 ตัวเป็น algorithm ของการ encoding แบบ G.711 ซึ่งเป็นการ encode vocoder แบบเก่า
เหมาะกับเสียงพูด ประสิทธิภาพ ลดขนาด byte ลงได้ครึ่งนึง คสามแตกต่างของทั้งสองน่าจะเป็นที่มาตรฐานของ IP Phone ที่ A-Law มี support มากกว่า แต่ mu-law ทำได้ดีกว่า มีการลด all zero bit ได้ด้วย (ไม่มีอ้างอิง อ่านๆเดาๆเอา ใครรูจริงก็เข้ามาว่าได้เลยนะครับ ไว้ถ้ารู้เมื่อไหร่จะเอามา update)

เลยเลือกใช้ mu-law เข้ากับ project ผม

เจอปัญหาคือผมมา encode ในโปรเจค streaming ซึ่งไม่รู้มันทำยังงี้กันไหม คือ ตัดทีละ packet udp ส่งไปเรื่อยๆ ทีละ 1k ดังนั้น เวลา encode ก็จะต้อง encode ทีละ pack ซึ่งผม encode ที่ 16k แล้วค่อยตัดส่งทีละ 1k ตอนรับ ก็รวมจนมันเป็น 8k แล้วก็เอามา decode กลับ (มันลดได้ครึงนึงพอดีเด๊ะแน่นอนอยู่แล้ว เลยใช้หารสองเลย)

ปัญหาคือ เกิดเสียง ตุ้บ ตุ้บ ตุ้บ เป็นจังหวะตลอด เหมือน ทุกครั้งที่เป็นช่วงต่อ มันจะมีเสียงตุ้บ
ยังไม่รู้จะแก้ยังไง

และพอเล่นๆไป เสียงจะมีอาการกระโดด เหมือนเล่นเลยแล้ว มาเล่น packet เดิม เอาเป็นแบบนี้ คือ
1 2 3 4 5 6 ควรเล่นต่อๆกันไป
แต่มันเล่นแบบ 1 4 2 3 6 5 มีการกระโดดไปเล่น packet อื่นเฉย เพราะมันเป็น udp เหรอ งั้นซวยละสิ ทำไงดีหว่า...

i.i
(โปรแกรมเมอร์อั่ว#1)

Wednesday, February 20, 2008

พยายามเหลือเกิน Voice ใน Windows Mobile

Voice ในที่นี้เป็นส่วนหนึ่งในโปรเจคสำคัญ คือ XMPP + VOIP +... Video Flv + ... +... (อะไรนักหนา)
ซึ่งต้องลงบน PPC

เลือกใช้ based on WM5
XMPP ใช้ของ AG Software (agsxmpp) เป็น C# อยู่แล้ว ใช้ง่าย มีคุณ Alex ตอบทุกกระทู้

เรื่องการจัดการ session ใช้ XMPP Server ของ Openfire ใช้ได้ดี Admin ง่าย

แต่เริ่มมีปัญหาที่ Voice เนื่องจากไม่มี Engine ที่ใช้ได้ เนื่องจาก

ส่วนใหญ่ยังไม่ port ลง CF ให้
ล้วนเป็น c++
ล้วนซับซ้อน ต้อง call dll วุ่นวาย เหยๆ
(แค่เรื่อง dll กับ lib ต่างกันยังไง managed ไม่ managed ก็ตายแล่ว)

เลยใช้ตรงๆคือ PCM Wave ไปก่อน

ซึ่ง ช้ามากเมื่อส่งไปทาง Network แม้จะเป็น UDP แล้วก็ตาม
Delay แระมาน 6-7 วิ ทั้งๆอยู่ใน LAN รับไม่ได้

พยายามเหลือเกิน Voice อยากใช้ Speex เพราะเคยใช้อ่านเสียง E-book ในคอม ไฟล์เล็กดี

แต่มันเป็น C++ พยายามอยู่นาน ที่จะ pack เป็น Wrapper เพื่อเรียกจาก C# ได้
แค่ compile ผ่านยังไม่พอ เพราะเวลามัน Link กันยังไม่เจอซักที เรื่องการเรียก DLL บน C# ที่ Add reference ไม่ได้
(คือ มาจาก c++ และไม่ได้เป็น Assembly)

ก็เรียกผ่าน P/Invoke แต่ก็นั่นแหละ ขั้นตอนการ link ไม่เจอ ใส่ Add Additional Library ก็ทั้งหมดแล้ว ยัง link ไม่ได้เลย
ขึ้นประมาณว่า unresolved external symbol กะตัวยึ้กยือ หมดปัญญา เพราะวิธีแก้ก็คือ Add Lib แต่ Add ไปล้วก็ไม่เจอ

มีเค้าว่า ต้องใส่ให้มัน extern "C" เพราะ Class จาก C++~ มันจะมี C นำให้ต้องบอกใน header ให้ code เรารู้ ก็ทำแล้ว ก็ยังเจ๊งบ้ง

เลยกลับมาไล่ดู lib อื่นบ้าง ไม่ไหว พัก speex ไว้ก่อน

ดู GIPS ดู LibJingle ซึ่งเมื่อก่อนดูๆไว้ แต่มันเป็น c++ ไง เลยเลือกใช้ agsxmpp

กลับมาก็ link กันไม่ได้เหมือนเดิม ปัญหาคือเราโง่ dot net

มีเค้า(เค้านี่มาจาก พ่อกูกทั้งนั้น)บอกว่า มี speex .net ทำจาก JSpeex เหอ จะเอางี้ไหว port จาก c++~ ไม่ได้ดีนัก เดี๋ยวพ่อทำมั่ง port จาก java มา c# ซะดีมั้ยเนี่ย

แต่ก็นะดันเจอนี่ http://www.ilbcfreeware.org/software.html ในบล็อกพี่ Hui น่ะ แต่หาทางเอา source เค้าออกมาไม่ได้อะ
ไม่ใช่ SVN ด้วย

ดูๆอยู่ว่า 2 แนวนี้น่าจะไปซักแนว หรือไม่ก็ช่างมันไปเลย ทำ PCM ให้ดี และเน PTT (Push To Talk) ของเดิม ของถนัดดีกว่า


ปล. ตัดสินใจเขียนในสิ่งที่ไม่รู้ ดีกว่ารอให้รู้ก่อนค่อยเขียน เพราะการรอนั้น อาจไม่มีวันมาถึง เพราะสิ่งเดียวที่รู้แน่ คือความไม่รู้...

Sunday, February 17, 2008

Script ที่ใช้เวลาเปลี่ยน Database

SQLSyncDB.txt

delete from openfire.jiveUser where username <> "admin"
truncate
openfire.jivePresence
truncate openfire.jiveRoster

insert into
openfire.jiveUser
(username,plainPassword,creationDate,modificationDate) (select
DISTINCTROW
MEMBER_ID,
MEMBER_ID,
'001202458195089','001202458195089' from enados.member)