הפעם בחרתי להביא שני סיפורים על דברים שנראים כמו באגים אבל בעצם הם ….
מקרה I – זה לא באג זה ….
אחד הבאגים המעניינים שנתקלתי בהם החודש נגע בבעיה מוכרת: כיצד למנוע ארטיפקטים כתוצאה מנפילות פאקטים באפליקציות של וידאו מעל IP כמו סטרימינג או וידאו-קונפרנסינג. במקרה זה כמות הארטיפקטים היתה עצומה ולא נראתה קורלציה בין כמות הארטיפקטים לסוג הערוץ או יחס ה-FEC. בבדיקה פשוטה של הקלטת מוצא הדוחס, נמצא שהוידאו היוצא מהדוחס כבר מכיל את הארטיפקטים האלו (ראה בתמונה) עוד לפני מעבר בערוץ. האם זה באג בדוחס הוידאו? ע"י שימוש באנלייזר וידאו ( Vega H.264 Analyzer) היה ניתן לראות כי הוידאו חוקי לחלוטין ובכל זאת יוצר ארטיפקטים של tiering הדומים לאלו הנוצרים ע"י איבוד של פאקטים. עיון בתעוד של הקודק גילה כי כדי לעמוד במגבלות גודל מקסימלי של Slice Size הוכנס מוד מיוחד שברגע ש-Slice מגיע לגודל מקסימלי הוא פשוט מדלג על שארית ה-Slice ולא מקודד אותה. התמונה הנוצרת היא ערבוב של שתי פריימים: הפריים הנוכחי והפריים הקודם. תוצאה זו דומה לתוצאה של נפילת פאקט בו הוחזק חלק מהמידע של הפריים הנוכחי. במקרה זה, הוידאו היה חוקי לחלוטין ללא באגים, התנהגות הדוחס והוידאו שיצר היו חוקיים (אם כי בלתי ניתנים לשימוש) והתברר כי התנהגות זו הוכנסה בכוונה ע"פ בקשת החברה. מתברר שה"באג" הזה היה פיטצ'ר.
מקרה II – זה לא באג זה ….
מקרה מעניין אחר בו נתקלתי החודש היה קובץ MP4 בו האודיו הפסיק באמצע הקובץ בעת הזרמה משרת בעוד שניגון לוקלי לא הראה שום בעיה. תקלה כזו יכולה להצביע על בעיה ב – Hint tracks המכילים את אינפורמציית ההזרמה עבור השרת ואינם בשימוש בעת ניגון לוקלי. בדיקה של הקובץ באמצעות Jongbel AtomBox ובאמצעות – MP4Box החינמי, העלו כי אכן יש בעיות חוקיות קשות ב-Hint tracks. מחקר קצר גילה כי יש נגנים בהם מתגלה בעיית האודיו גם בניגון לוקלי ולכן הבעיה שהתגלתה ב-hint track אינה קשורה לאודיו. מחקר מעמיק יותר גילה כי הבעיות נגרמו כתוצאה משינוי בסיס הזמן באמצע האודיו טרק מבסיס זמן של 90000 המתאים לוידאו לבסיס זמן של 48000, דבר זה הוא חוקי על פי הסטנדרט של ה- MP4 File Format ולכן כלי הבדיקה לא התריאו עליו בצורה אוטומטית כתקלה. גם ה-VLC שהוא נגן עמיד ודי חסין תקלות הצליח לנגן את האודיו ללא בעיות, לעומת זאת בנגנים אחרים כן התבטאה הבעיה הזו. גם במקרה זה התברר שהבאג הוא לא באג אלא "פיטצ'ר חוקי אך לא בשימוש" של הסטנדרט, הפתרון היה לבקש מהחברה שמייצרת את הקבצים לתקן את התהליך כך שיופיע רק בסיס זמן אחד בקבצים המיוצרים.
מסקנות:
- לא כל מה שנראה כמו באג הוא באג
- לפעמים כלי הבדיקה לא עוזרים לנו וצריך לחפור.
- כדאי להשתמש במגוון כלים כדי להשיג כיסוי מלא לתקלות
- לא כל מה שמתנגן ב- VLC הוא אכן חוקי (במקרה זה דוקא כן).
רוצים ללמוד עוד על כלי אינטדרציה ובדיקות לוידאו? בדקו את הקורס שלי Hands – on Video

