1 / 18

ISM Voice Chat

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

marty
Download Presentation

ISM Voice Chat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ISM Voice Chat

  2. מנחים: פרופ' חבר פרידמן רועי מר קוגן אלכס מגישים: ישראל צ'רניאק שי פרץ מרינה יצינה

  3. ארכיטקטורת מערכת

  4. מודולים ראשיים • VoiceCaller • ISMVoiceCaller • Portaudio • Speex • JVoipVoiceCaller • JVoiplib • Presence • OLSRD • GUI

  5. VoiceCaller • אחראי על תחילת שיחה חדשה, קבלת שיחה והפסקת שיחה כתוצאה מבקשת הפסקה של אחד מהצדדים המשתתפים בשיחה. • אחראי לתשאל את המשתמש האם הוא מעוניין לקבל או לדחות את השיחה ולפעול בהתאם. • כל עוד מתקיימת שיחה הרכיב דוחה בקשות תחילת שיחה חדשות. • כאשר אחד הצדדים מבקש להפסיק את השיחה הרכיב אחראי להעביר את בקשת הפסקת השיחה לצד השני. • מודולריות – המודול אינו מממש שיחה קולית בעצמו, אלא מהווה תשתית למודול אשר מממש שיחה קולית, ועל-כן, מספק תמיכה לשילוב של מגוון רחב של מודולי שיחה קולית שונים בתוכנית.

  6. ISMVoiceCaller • אחראי על ביצוע השיחה לפי המימוש שלנו (ISM Internal). מקליט ומשמיע קול באמצעות ספריית Port Audio, מקודד ומפענח את הקול באמצעות Speex ומעביר את הקול המקודד בעזרת UDP. • מאפשר למשתמש לצאת מטווח קליטה לפרק זמן קצר ובכך הוא יותר ידידותי לרשתות ad-hoc בהן לעיתים קרובות מאבדים קליטה למספר רגעים, במיוחד כאשר נמצאים בתנועה. • במידה ונאבד קשר לפרק זמן ארוך, המודול מסיק שהמשתמש התנתק ומנתק את השיחה.

  7. תרשים ISMVoiceCaller הקלטה השמעה קידוד פיענוח Network

  8. ISMVoiceCaller - PortAudio זוהי ספריית I/O הכתובה בשפת C ומאפשרת הקלטה והשמעה של קול. ספרייה זו היאopen source ויכולה לפעול על פלטפורמות שונות.

  9. ISMVoiceCaller - Speex זוהי אפליקציית open source המאפשרת קידוד ופענוח של קול.

  10. JVoipVoiceCaller • אחראי על ביצוע השיחה לפי המימוש של ספריית Jvoiplib אשר מממשת הקלטה, השמעה, קידוד, פענוח והעברת קול מקודד בעזרת פרוטוקול RTP כחלק מהמימוש שלה של שיחה. • מאפשר למשתמש לצאת מטווח קליטה לפרק זמן קצר ובכך הוא יותר ידידותי לרשתות ad-hoc בהן לעיתים קרובות מאבדים קליטה למספר רגעים, במיוחד כאשר נמצאים בתנועה. • במידה ונאבד קשר לפרק זמן ארוך, המודול מסיק שהמשתמש התנתק ומנתק את השיחה.

  11. JVoipVoiceCaller - JVoiplib • זוהי ספרייה object-oriented המממשת VoIP וכתובה ב C++. ספרייה זו היאopen source ויכולה לפעול על Linux, Windows. • כחלק מיצירת השיחה הספרייה מקליטה, משמיעה, מקודדת ומפענחת קול ומעבירה את המידע בין משתתפי השיחה באמצעות פרוטוקול RTP (Real-Time Transport Protocol).

  12. אחראי על רשימת הנוכחות של המשתמשים המחוברים לתוכנה. אחראי על פרסום הודעת נוכחות של משתמש אשר מחובר ל ISM Voice Chat ע"י שליחה של broadcasts כל פרק זמן קבוע. בעת התנתקות מסודרת, אחראי על פרסום הודעת התנתקות של המשתמש גם ע"י שליחה של broadcast. אחראי על עדכון רשימת הנוכחות שלISM Voice Chat . כאשר לא מתקבלת אף הודעת נוכחות ממשתמש שנמצא ברשימת הנוכחות במשך תקופה מסויימת, המודול מוריד אותו מהרשימה. Presence

  13. OLSR Daemon • זהו מימושopen source של פרוטוקול OLSR (Optimized Link State Routing ) המאפשר ניתוב ברשתות בטופולוגית mesh עבור כל ציוד קצה שהוא. • ה- Olsrd מאוד יעיל, מנצל מעט מאוד זמן מעבד והוא מאוד scalable (Olsrd רץ ברשת האלחוטית באתונה המכילה כ 2000 מחשבים). • זהו daemon שרץ ברקע, בונה טבלאות ניתוב של המסלולים לכל המחשבים המריצים את Olsrd תוך התחשבות בעלות המסלול (במידה ויש יותר ממסלול אחד). • כמו כן, ה-daemon מעביר את ה packets לפי הטבלאות שהוא בונה ובכך מאפשר העברת מידע דרך מספר hops בין מחשבים שאינם בטווח קליטה ישיר אחד של השני. • במידה והתוכנה שלנו מופעלת על מחשב המריץ את ה Olsrd, ניתן יהיה לבצע שיחה דרך מספר hops גם בין מחשבים שאינם בטווח קליטה ישיר אחד של השני, כמו כן ניתן יהיה לראות ברשימת הנוכחות משתמשים שאינם נמצאים בטווח קליטה ישיר.

  14. GUI

  15. החלטות עיצוב

  16. GUI משלנו לעומת השתלבות ב-PSI • בחרנו לכתוב תוכנית משלנו במקום להשתלב ב-PSI. • הסתכלנו על הקוד של PSI, וראינו שלהשתלב בספריית ה-GUI שבה משתמשת תוכנת PSI (ספריית QT) יצרוך הרבה יותר מאמץ מאשר לכתוב GUI משלנו בספרייה אחרת שמצאנו (wxWidgets). • כמו-כן, לשם כך אם היינו משתמשים ב-PSI, היינו צריכים להשתמש בארטיפקטים שלהם (כגון רשימת הנוכחות, ומחלקות אחרות שלהם), כאשר הקוד של PSI איננו מתועד היטב, וקשה יחסית להבנה.

  17. כתיבת מודול נוכחות משלנו לעומת שימוש ב-Bonjour • תחילה, ניסינו להשתמש ב-Bonjour לצורך מעקב אחר רשימת הנוכחות. • ה-Bonjour עבד, אך נתקענו בבעיות כאשר התחלנו לבדוק את תאימותו ל-multiple hops. תוכנת ה-OLSRD (שתומכת בהעברת כל סוגי ההודעות, כולל broadcast ו-multicast) אכן העבירה את כל ההודעות של Bonjour, אך ה-Bonjour לא הצליח לקלוט משתמשים שלא היו בטווח קליטתו הישיר כ-services – כנראה שה-Bonjour התעלם מהם מסיבה כלשהי. • לאחר ניסיונות רבים להבין ולתקן את הבעיה, החלטנו לממש פרוטוקול דומה בעצמנו, שגם מותאם לצרכינו המיוחדים.

  18. תודות מיוחדות תודה מיוחדת למקסים קווגן, אשר עזר לנו רבות במהלך הפרוייקט בהתקנות והגדרות של מערכת Linux.

More Related