לפני כחודש התבשרנו בצער רב על לכתו של עוזיה גליל ז"ל, אחד מחלוצי ההייטק בישראל והמייסד של חברת האחזקות אלרון, שהייתה שותפה להקמת חברות הייטק ישראליות רבות. נזכרנו באחת מהן, צורן [1], שהחלה את דרכה לפני 40 שנה ונסגרה לפני עשור. הייתה זו חברה ייחודית שנאבקה בשוק הצפוף של מוצרי אלקטרוניקה ביתיים. היא עסקה בין השאר בפיתוח רכיבים למצלמות, למדפסות, לטלוויזיות וגם למערכות שמע בקולנוע, אולם התבלטה במיוחד בכך שהייתה בין הראשונות שפיתחו רכיבים לנגני DVD.
הפוסט נכתב בשיתוף עם טניה אורנשטיין.
כשאנו טוענים למחשב תמונות איכותיות בפורמט jpeg המקובל, נבחין ודאי שהן תופסות שטח אחסון גדול ולוקח זמן רב להעלותן. אז מה הקסם שמאפשר לנו לשמור, לטעון ולצפות על המסך בקובץ וידאו, למשל בפורמט mp4 המקובל, המכיל בתוכו אלפי תמונות (כלומר, "פריימים")?
ההברקה מתבססת על טכנולוגיית הדחיסה. בטכנולוגיה הזאת מנצלים את העובדה שבוידאו יש בדרך כלל שינויים הדרגתיים במעבר בין פריימים סמוכים. נניח שצילמנו סרטון וידאו בהרצאה, שבה המרצה זז קצת, אולם הרקע סביבו, הקהל הרדום והלוח שמאחוריו כמעט שלא השתנו. תוכנת הדחיסה תשמור בהתחלת הקובץ תמונה של אולם ההרצאות ("תמונת בסיס") בפורמט דמוי jpeg. עבור הפריימים הבאים היא תשמור רק אינפורמציה תמציתית הכוללת מידע על השינויים שחלו בהם ביחס לפריימים הקודמים, כלומר, בדוגמה שלנו, אינפורמציה על אודות תנועת המרצה באולם. אינפורמציה זו תאפשר בעת התצוגה של קובץ הוידאו לשחזר את הפריימים המקוריים. לאחר כמה פריימים כאלו, או כשיש שינוי גדול בסרטון, התוכנה תשמור תמונת בסיס חדשה בפורמט jpeg, וחוזר חלילה. בשיטה זו נחסך מקום אחסון רב ומתאפשרת העברה והצגה מהירה של הוידאו.
כדי לממש זאת בתוכנה, האלגוריתם לדחיסת וידאו [2], למשל MPEG2 או H264 החדיש יותר, לוקח בלוק של פיקסלים מהפריים הנוכחי שצריך לדחוס, בדרך כלל ריבוע של 16x16 פיקסלים, ומחפש בלוק בעל ערכים דומים בפריימים ישנים שכבר נשמרו. נניח שהריבוע הכיל פיקסלים המתארים חלק מהגוף של המרצה, והוא זז שמאלה. התוכנה תאתר בתמונת הבסיס, בצד ימין, את הבלוק המכיל ערכים דומים. במקום לשמור את ערכי הפיקסלים בבלוק החדש, התוכנה פשוט תשמור הודעה שצריך להשתמש בבלוק בתמונה הישנה, ותציין את מידת התזוזה של הבלוק בתוך הפריים. אולם כיוון שאין בדרך כלל התאמה מלאה בין שני הבלוקים, התוכנה תשמור גם את ערכי השגיאה: ההפרש בין כל פיקסל בבלוק החדש למתאים לו בבלוק הישן. ההפרשים הללו הם בדרך כלל מספרים קטנים, ולכן ניתן לשמור אותם בצורה מאוד מתוחכמת וקומפקטית ולחסוך מקום רב באחסון.
לא דיברנו עדיין על מתמטיקה, אז הנה היא באה: התוכנה ממירה את ערכי השגיאות באמצעות אלגוריתם מתמטי [3] הנקרא DCT, לייצוג חדש שנקרא "מרחב התדר", המאפשר להיפטר מאינפורמציה שהעין אינה מבחינה בה. כדי להסביר זאת לעומק צריך פוסט נפרד, אז נראה כאן רק דוגמה פשוטה: נניח שיש סדרת מספרים המייצגת צבע מונוכרום של פיקסלים, המדלג בין שני ערכים (0.4, 0.6, 0.4, 0.6...). בהפעלת DCT נקבל שיש בסדרה מרכיב בעל ערך קבוע DC=0.5, ומרכיב בתדירות מאוד גבוהה. ידוע שהעין שלנו לא מבחינה בשינויים כה מהירים בפיקסלים שכנים, ולכן נוכל להיפטר ממרכיב זה. עבור סדרה זו נשמור רק ערך אחד (0.5) ונחסוך בשטח אחסון.
לאחר שלב זה, התוכנה שומרת את ייצוג ערכי השגיאות בצורה חסכונית. הרעיון הוא לשמור ערכים שכיחים, למשל 0, באמצעות מספר קטן של ביטים, והשאר עם מספר גדול יותר. ישנם כמה אלגוריתמים שיודעים לבצע זאת [3]. זהו הרעיון הכללי של דחיסת וידאו, שנעשית בדרך כלל באמצעות מחשבים חזקים. לעומת זאת, פריסת הוידאו והצגתו על המסך נעשית במכשירים רבים: מחשבים, טלפונים, סטרימרים, וגם נגני DVD, ולהם נקדיש את השורות הבאות.
ההיסטוריה של צורן קשורה בין היתר לטכנולוגיית דחיסת וידאו ונגני DVD. נגני DVD, המאפשרים לנגן דיסקים המכילים סרטים, התפתחו במהירות בתחילת שנות האלפיים, והם החליפו את מכשירי הוידאו הישנים. שיטת הדחיסה של סרטי DVD סטנדרטיים נקראה MPEG2, והיא דומה למה שתיארנו. חברת צורן נכנסה בסערה לתחום. היא הוציאה סדרת רכיבים שמימשו בצורה יעילה פריסת וידאו, שזכו להיכלל בנגני DVD של חברות רבות, למשל טושיבה.
הצלחה זו נמשכה כמה שנים, אולם כיוון שסטנדרט ה-DVD היה קבוע, ולא היו חידושים, השוק הפך בהדרגה לרווי והמחירים צנחו. חברות האלקטרוניקה ניסו להלהיב עם פורמטים חדשים לדיסקים, כמו "בלו-ריי" [4], אולם העולם השתנה, והשוק עובר ברובו לסרטים שנשמרים בענן.
בימינו, הסטרימריים שמעבירים סרטים מהרשת למקלט הטלוויזיה מממשים פרוטוקולים דומים אבל משוכללים יותר. צורן לא מצאה שם את מקומה, ובשנת 2011 נסגרה החברה, והעובדים, מצוידים בהרבה ידע, ניסיון וחוויות המשיכו בדרכם.
לכבוד כתיבת הפוסט הזה ניסיתי להפעיל את נגן DVD שלי, שהיה מונח זמן רב ליד הטלוויזיה כאבן שאין לה הופכין, אולם לא הצלחתי. נראה לי שמה שהפריע לנגן הוא הממיר החדיש של הטלוויזיה שהנחתי עליו, שסתם לו את הארובה.
"וצ'יף צ'יף צ'ף, הקטר כבר לא נשף, ותיק תיק תק, הגלגל לא דפק, ואז פס אחד לשני לחש: המלך מת, יחי המלך החדש..." [6]
עריכה: ינון קחטן
הערות והרחבות:
[1] חברת צורן
[3] המרת DCT
[4] אלגוריתמים לקידוד יעיל לצורך דחיסה
[5] בלו-ריי
[6] שיר הקטר