ISM Voice Chat

Post on 13-Jan-2016

36 views 0 download

description

ISM Voice Chat. מנחים: פרופ' חבר פרידמן רועי מר קוגן אלכס. מגישים: ישראל צ'רניאק שי פרץ מרינה יצינה. ארכיטקטורת מערכת. מודולים ראשיים. VoiceCaller ISMVoiceCaller Portaudio Speex JVoipVoiceCaller JVoiplib Presence OLSRD GUI. VoiceCaller. - PowerPoint PPT Presentation

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מערכת