ISM Voice Chat
description
Transcript of ISM Voice Chat
מגישים:
ישראל צ'רניאקשי פרץ
מרינה יצינה
מנחים:
פרופ' חבר פרידמן רועימר קוגן אלכס
ארכיטקטורת מערכת
מודולים ראשיים
•VoiceCaller–ISMVoiceCaller
•Portaudio•Speex
–JVoipVoiceCaller•JVoiplib
•Presence•OLSRD•GUI
VoiceCaller
אחראי על תחילת שיחה חדשה, קבלת שיחה והפסקת שיחה •כתוצאה מבקשת הפסקה של אחד מהצדדים המשתתפים
בשיחה. אחראי לתשאל את המשתמש האם הוא מעוניין לקבל או •
לדחות את השיחה ולפעול בהתאם.כל עוד מתקיימת שיחה הרכיב דוחה בקשות תחילת שיחה •
חדשות.כאשר אחד הצדדים מבקש להפסיק את השיחה הרכיב אחראי •
להעביר את בקשת הפסקת השיחה לצד השני.מודולריות – המודול אינו מממש שיחה קולית בעצמו, אלא •
מהווה תשתית למודול אשר מממש שיחה קולית, ועל-כן, מספק תמיכה לשילוב של מגוון רחב של מודולי שיחה קולית
שונים בתוכנית.
ISMVoiceCaller
ISMאחראי על ביצוע השיחה לפי המימוש שלנו )•Internal מקליט ומשמיע קול באמצעות ספריית .)
Port Audio מקודד ומפענח את הקול באמצעות ,Speex ומעביר את הקול המקודד בעזרת UDP.
מאפשר למשתמש לצאת מטווח קליטה לפרק זמן • בהן ad-hocקצר ובכך הוא יותר ידידותי לרשתות
לעיתים קרובות מאבדים קליטה למספר רגעים, במיוחד כאשר נמצאים בתנועה.
במידה ונאבד קשר לפרק זמן ארוך, המודול מסיק • שהמשתמש התנתק ומנתק את השיחה.
ISMVoiceCallerתרשים
הקלטה
קידוד
NetworkNetwork
השמעה
פיענוח
ISMVoiceCaller - PortAudio
ומאפשרת C הכתובה בשפת I/Oזוהי ספריית openהקלטה והשמעה של קול. ספרייה זו היא
source .ויכולה לפעול על פלטפורמות שונות
ISMVoiceCaller - Speex
המאפשרת קידוד open sourceזוהי אפליקציית ופענוח של קול.
JVoipVoiceCaller
אחראי על ביצוע השיחה לפי המימוש של ספריית •Jvoiplib ,אשר מממשת הקלטה, השמעה, קידוד
RTPפענוח והעברת קול מקודד בעזרת פרוטוקול כחלק מהמימוש שלה של שיחה.
מאפשר למשתמש לצאת מטווח קליטה לפרק זמן • בהן ad-hocקצר ובכך הוא יותר ידידותי לרשתות
לעיתים קרובות מאבדים קליטה למספר רגעים, במיוחד כאשר נמצאים בתנועה.
במידה ונאבד קשר לפרק זמן ארוך, המודול מסיק • שהמשתמש התנתק ומנתק את השיחה.
JVoipVoiceCaller - JVoiplib
VoIP המממשת object-orientedזוהי ספרייה • open source. ספרייה זו היא++Cוכתובה ב
.Linux, Windowsויכולה לפעול על
כחלק מיצירת השיחה הספרייה מקליטה, •משמיעה, מקודדת ומפענחת קול ומעבירה את
המידע בין משתתפי השיחה באמצעות RTP )Real-Time Transportפרוטוקול Protocol(.
Presence
אחראי על רשימת הנוכחות של המשתמשים המחוברים לתוכנה.
אחראי על פרסום הודעת נוכחות של משתמש אשר מחובר • כל פרק broadcasts ע"י שליחה של ISM Voice Chatל
זמן קבוע.בעת התנתקות מסודרת, אחראי על פרסום הודעת •
.broadcastהתנתקות של המשתמש גם ע"י שליחה של . ISM Voice Chatאחראי על עדכון רשימת הנוכחות של•כאשר לא מתקבלת אף הודעת נוכחות ממשתמש שנמצא •
ברשימת הנוכחות במשך תקופה מסויימת, המודול מוריד אותו מהרשימה.
OLSR Daemon OLSR )Optimized Link State של פרוטוקול open sourceזהו מימוש•
Routing ( המאפשר ניתוב ברשתות בטופולוגית mesh עבור כל ציוד קצה שהוא.
scalable מאוד יעיל, מנצל מעט מאוד זמן מעבד והוא מאוד Olsrdה- •(Olsrd 2000 רץ ברשת האלחוטית באתונה המכילה כ.)מחשבים
שרץ ברקע, בונה טבלאות ניתוב של המסלולים לכל daemonזהו • תוך התחשבות בעלות המסלול )במידה ויש Olsrdהמחשבים המריצים את
יותר ממסלול אחד(. לפי הטבלאות שהוא בונה ובכך packets מעביר את ה daemonכמו כן, ה-•
בין מחשבים שאינם בטווח קליטה hopsמאפשר העברת מידע דרך מספר ישיר אחד של השני.
, ניתן יהיה Olsrdבמידה והתוכנה שלנו מופעלת על מחשב המריץ את ה • גם בין מחשבים שאינם בטווח קליטה ישיר hopsלבצע שיחה דרך מספר
אחד של השני, כמו כן ניתן יהיה לראות ברשימת הנוכחות משתמשים שאינם נמצאים בטווח קליטה ישיר.
GUI
החלטות עיצוב
GUI משלנו לעומת השתלבות PSIב-
.PSIבחרנו לכתוב תוכנית משלנו במקום להשתלב ב-•, וראינו שלהשתלב PSIהסתכלנו על הקוד של •
PSI שבה משתמשת תוכנת GUIבספריית ה-( יצרוך הרבה יותר מאמץ מאשר לכתוב QT)ספריית
GUI( משלנו בספרייה אחרת שמצאנו wxWidgets.), היינו PSIכמו-כן, לשם כך אם היינו משתמשים ב-•
צריכים להשתמש בארטיפקטים שלהם )כגון רשימת הנוכחות, ומחלקות אחרות שלהם(, כאשר הקוד של
PSI.איננו מתועד היטב, וקשה יחסית להבנה
כתיבת מודול נוכחות משלנו לעומת Bonjourשימוש ב-
לצורך מעקב Bonjourתחילה, ניסינו להשתמש ב-•אחר רשימת הנוכחות.
עבד, אך נתקענו בבעיות כאשר התחלנו Bonjourה-•. תוכנת multiple hopsלבדוק את תאימותו ל-
)שתומכת בהעברת כל סוגי ההודעות, OLSRDה-( אכן העבירה את כל multicast ו-broadcastכולל
לא הצליח Bonjour, אך ה-Bonjourההודעות של לקלוט משתמשים שלא היו בטווח קליטתו הישיר
התעלם מהם Bonjour – כנראה שה-servicesכ-מסיבה כלשהי.
לאחר ניסיונות רבים להבין ולתקן את הבעיה, החלטנו •לממש פרוטוקול דומה בעצמנו, שגם מותאם לצרכינו
המיוחדים.
תודות מיוחדות
תודה מיוחדת למקסים קווגן, אשר עזר לנו רבות במהלך הפרוייקט בהתקנות והגדרות של
.Linuxמערכת