הטעות של רד-האט בנושא תמיכה במקודדי וידאו

אחד הדברים המבורכים בהפצות לינוקס – זו היכולת לקרוא את הדיונים לגבי שינויים שנעשים בהפצות לינוקס, דעות, בעד ונגד. במקרים רבים ישנם החלטות ודיונים פנימיים, אולם בד"כ התוצאות של הדיונים יוצאות בהודעה מסודרת ב-Mailing List הרלוונטי.

דיון מעניין שחל אתמול קשור להפצת Fedora ולהחלטה לבטל כל האצה של קידוד או פריסת וידאו בהפצת הלינוקס ברמת תשתית כברירת מחדל. במילים אחרות: אם מאן דהוא יפעיל מצלמת Webcam ברזולוציית 1080P והוא ינסה להקליט את הוידאו (לדוגמא עם תוכנה כמו OBS Studio) – סביר להניח שהוא ימצא את התוצאות בלתי מספקות. אם הוא ינסה לנגן וידאו שמקודד ב-H.264 או HEVC או VC1, סביר להניח שבקטעי האקשן, הוא יקבל דילוגים ו"נפילות" (Dropped) בפריימים כך שהתוצאה לא תיראה טוב.

סביר להניח שמי שישתמש בהפצת הלינוקס וידע לינוקס, ימצא בסופו של דבר כי יש צורך להוסיף REPO שנקרא rpmfusion וממנו יהיה צריך להתקין חבילות של Mesa בהתאם לכרטיס הגרפי שיש במחשב/בלאפטופ (החבילות כיום עדיין אינן קיימות, למיטב ידיעתי). משתמשים חדשים לעומת זאת, שהחליטו לנסות את פדורה, יצטרכו לחפש איזה "מדריך" או איזה פוסט בבלוג כלשהו שיסביר להם מדוע יש את הבעיה ואיך לתקן אותה – לכשהם יתקלו בבעיה.

מדוע בכלל הבעיה הזו קיימת? (כפי שניתן לראות בדיון הזה, העובדה שהחבילות יצאו עם Hardware Acceleration היא בכלל באג שעכשיו "תוקן" ושישבית כל האצה) – התשובה לכך פשוטה: פחדים עלומים של רד-האט מתביעות לגבי פטנטים ותמלוגים, דבר שלא קרה כבר יותר מ-30 שנה בהפצעות לינוקס.

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

כפי שתוכלו לראות בכל מיני אתרים – ארגון ה-MPEG LA (שהוא בעצם "ארגון" שדואג למכירת רשיונות למקודדי וידאו ואודיו שונים, גביית תמלוגים, תביעת מפירים וכו') לא ממש "רודף" אחרי נגנים מבוססי קוד פתוח. הארגון מעולם לא תבע את KODI (תבעו את KODI על דברים אחרים, לא על Codecs), או את VLC או את FFMPEG או OBS Studio או כל תוכנת ניגון ו/או עריכת אודיו וידאו מהסיבה הפשוטה שזה לא שווה להם – הן מבחינת יח"צ, הן מבחינת גביה ממשית והן מבחינת רווח סופי כלשהו. (חריגה אחת היתה, למיטב זכרוני, כאשר Dolby Labs ביקשו ממפתחי החבילה ac3dec להפסיק להשתמש במינוח "AC3" מכיוון שמדובר בסימן רשום. מאז פג תוקף למושג, כך שדולבי ירדו מהעניין).

הארגון כן "רודף" אחרי יצרנים של מוצרים סופיים (בין אם הם משתמשים בפתרונות מבוססי קוד פתוח או סגור). אם לדוגמא חברה מייצרת טלפונים או טאבלטים, והיצרן רוצה לכלול קידוד או פריסה (Encode/Decode) של אודיו או וידאו עם מקודדים מסויימים, אז אותה חברה תסגור רשיון עם MPEG-LA שבו יפורטו סוגי הרשיונות (יש כמה, לא רק סוגי codecs), האם זה יכלול רק פריסה, רק קידוד או גם וגם, וכמובן סוגי Codecs. דוגמא פשוטה: חברת Lenovo מייצרת טאבלטים וטלפונים זולים, רוב המכשירים מהסוגים הנ"ל כוללים תמיכה של פריסה וקידוד במקודד H.264 אך רובם אינם כוללים תמיכה בפריסה וקידוד במקודד HEVC (זה סגור ברמת חומרה), כך שלנובו משלמת רק על H.264, לא על השאר.

אם נתרגם את זה למציאות: אם מחר אבנה נגן מבוסס Raspberry Pi שיריץ KODI ואמכור זאת כמוצר סופי, סביר להניח ש-MPEG LA יצרו קשר ויבקשו תמלוגים (ואם לא אשלם – אתבע).

בתחום מערכות ההפעלה השונות, המצב שונה. מיקרוסופט מבקשת בחלק מהמקרים מהמשתמש לרכוש לדוגמא רשיון HEVC במחיר של $1. הסיבה? מיקרוסופט נותנת מספר כלים לתצוגה ועריכת וידאו עם תמיכה ל-HEVC ורשיון Windows אינו כולל רשיון ל-encode (קידוד) בכלים שמיקרוסופט נותנת, ולפיכך דרישת התשלום (לא תופיע דרישת תשלום אם מדובר רק בניגון וידאו, לדוגמא).

בכל הקשור לניגון וידאו – יש כבר מי שמשלם את רשיון ה-Codec והוא – יצרן ה-GPU במחשב, ובדרך כלל אותו יצרן גם כותב את התמיכה להאצת ה-codec ברמת הדרייבר גם בלינוקס, כך שאין כאן צורך תשלום כפול כלשהו לניגון הוידאו, ורד-האט יכולה להתנהג בדיוק כמו מיקרוסופט (שגם היא לא משלמת על מקודדים לצרכי ניגון מדיה), אולם לצערי רד-האט לוקחת צעד אחד רחוק-מדי, ועוצרת את תמיכת הקידוד/פריסה עוד ברמת התשתית (Mesa), אפילו לא ברמת הנגן, דבר שאף אחד לא עושה ואינו נדרש מצד שום גוף רשמי כלשהו, למיטב ידיעתי.

לסיכום: רד-האט היא חלק מחברת IBM, חברה בעלת מיליוני פטנטים (גם בתחום האודיו ו-וידאו, אגב), וחבל שברד-האט לא מנסים לבדוק את העניין לעומק ובמקום זאת מקשים על משתמשים חדשים בלי שום סיבה רצינית.

במזל טוב, VVC Codec הוכרז, מה זה אומר?

לאחרונה התבשרנו כי ה- Joint Video Experts Team (JVET) הכריז על Codec חדש, ה-VCC, או בשם היותר פופולרי H.266. תכנון ה-Codec במכון Fraunhofer הסתיים וכבר בחורף הקרוב יצא קוד אב-טיפוס לפענוח וקידוד תכנים בתוכנה (על לינוקס) – בעזרת Codec זה.

מה זה בעצם אומר?

כשזה מגיע לתכנון ושימוש ב-Codecs, יש לא מעט Codecs שקיימים בשוק. רובם לא מוכרים לאלו העובדים בתחום האודיו/וידאו אך בהחלט מוכרים בעולם התוכנה והחומרה. קחו לדוגמא Codecs כמו DIRAC או AV1 או או SNOW (אלו רק דוגמאות ספורות ל-Video Codecs) או OGG, Flac, Vorbix, CELT, OPUS, Speex (כולם Codecs ל-Audio) מוכרים לכם? כמה השתמשתם בהם? ברוב המקרים התשובה תהיה "לא משתמשים" – אולם אם אתם משתמשים ב-Whatsapp, Messenger, ותוכנות וידאו צ'אט אחרות – שם בהחלט נעשה שימוש בחלק מאותם Codecs שציינתי. ה-Codecs היותר מוכרים נמצאים בשימוש מתמיד בעולם הוידאו/אודיו המסחרי לשידור תכנים בזרימה.

החלק הבעייתי ביותר לכל Codec הוא אדפטציה ושימוש בו, הן מבחינה טכנית והן מבחינה "פוליטית".

בואו ניקח לדוגמא את ה-Codec הידוע H.265 (או כפי שהוא יותר ידוע – HEVC): הוא יצא לשוק ב-2013, אך האימוץ שלו בשוק היה מאוחר, הוא ומי שבעצם גרם לחברות "לברוח" מאימוץ שלו הוא הגוף שאחראי על רישוי ה-Codec כולל פטנטים וכו', ה-MPEG LA. כשה-Codec יצא, התנאים לשימוש בו היו מטורפים לחלוטין מבחינת סכומים לתשלום פר מכשיר/פר תוכנה שתשתמש ב-Codec, ומחירים מטורפים ליצרני מצלמות – הצליחו להניא את רוב ה"לקוחות הפוטנציאלים" משימוש באותו Codec למשך מספר שנים, עד שה-MEPG LA ירד מהעץ, ואז החל אימוץ של ה-Codec ע"י רוב החברות.

עוד Codec שמתחיל לתפוס תאוצה הוא ה-AV1. בניגוד ל-H.265, כאן הלקוחות הפוטנציאליים (יצרני ציוד, טלויזיות וכו' וכו') לא יצטרכו לשלם תמלוגים על שימוש ב-Codec זה, אך התחרות מול H.266 הולכת להיות מעניינת. בשני המקרים מדובר על Codecs תחרותיים שיודעים לחסוך בתעבורת נתונים – אך כולם מחכים לראות אלו גופים גדולים יעמדו מאחורי ה-Codecs, וכרגע – רוב החברות המסורתיות (יצרני מצלמות וטלויזיות לדוגמא) עומדים מאחורי שני ה-Codecs אולם גוגל נותנת יותר דגש ל-AV1 בשעה שאפל נותנת יותר גב ל-H.266, כך שיקחו כמה שנים טובות עד שנוכל לדעת מי ניצח במלחמת ה-Codecs הספציפיים הללו.

מה לגבי שימוש ב-Codecs הללו בעריכה? (הרי בסופו של יום, אם יצרני מצלמות יאמצו את ה-H.266, מצלמות בקצה התחתון והבינוני פשוט יקליטו רק ב-Codec זה) – כאן בדרך כלל הבעיה מתחילה להתעורר: משאבי עיבוד. Codecs כמו H.264/H.265 נתמכים על הסיליקון של כרטיסי ה-GPU ומעבדים שונים (בטלפון, מעבדים למחשבים, טלויזיות, טאבלטים וכו') ובכך ניתן להציג וידאו מקודד באותם Codecs שהשבבים תומכים – מבלי לצרוך יותר מדי חשמל (עניין חשוב במכשירים כמו טאבלטים וטלפונים), אולם ברגע שה-Codecs אינם נתמכים בצורה טבעית – יהיה צורך לפענח/לקודד את הוידאו עם המעבדים עצמם ובעזרת תוכנות ללא כל "סיוע" של המעבד, וזהו דבר שהוא לא רק איטי, הוא גם צורך משאבים מרובים, ולכן כל יצרני תוכנות עריכת וידאו אינן תומכות ב-Export ב-Codecs שאין להם תמיכת חומרה – עד שיוצאים פתרונות הכוללים תמיכה באותו Codecs כמו כרטיסים גרפיים חדשים, ומעבדים חדשים ל-PC, סלולר וכו'.

ומה קורה כיום?

כיום, כל יצרני החומרה השונים תומכים ב-H.264, H.265, וב-VP9 של גוגל (למעט אפל). כיום, התמיכה הולכת וגודלת (בקצב איטי) ל-AV1. סמסונג ו-LG הכריזו כי בטלויזיות ה-8K שלהם תהיה תמיכה לניגון וידאו AV1, חברת MediaTek הכריזה על מעבד Dimensity 1000 שיתמוך ב-AV1 עם ניגון עד 4K ב-60 פריימים לשניה ואילו חברת Chip&Media החליטה להתעלות מעל כולם ולהציע תמיכה וניגון קבצים בקידוד AV1 עם רזולוציה של 4K עד 120 פריימים לשניה (שימושי? לא חושב). הכרזה חשובה נוספת יצאה מחברת Amlogic על 3 מעבדים חדשים שיכללו תמיכה ב-AV1. הסיבה לחשיבות ההכרזה – כמעט כל יצרני מכשירי אנדרואיד TV (בטלויזיה עצמה או כסטרימר) כוללים את השבבים של Amlogic. ישנה גם חברות שהחלו להזרים וידאו ב-AV1 לחלק ממכשירי האנדרואיד, אולי שמעתם עליהן: נטפליקס ו-יוטיוב. (אתם יכולים לצפות בערימת קליפים שמקודדים ב-AV1 כאן. שימו לב שהרזולוציה המקסימלית של הקליפים היא 1080P). אתם יכולים גם להשוות בין HEVC ל-AV1 כאן.

הבעיה? אין חומרה שתומכת ב-AV1.

תמיכה ב-AV1 (פריסה בלבד) תהיה במעבדים בדור הבא של אינטל (Tiger Lake) וכפי הנראה שתמיכת חומרה ב-GPU תהיה בכרטיסי RTX 3XXX שיצאו כפי הנראה לקראת סוף השנה ותחילת השנה הבאה, ורק אז נראה תמיכה את תחילתה של תמיכה בקידוד קבצי AV1 בתוכנות עריכה (מי שמתעקש ורוצה להוציא AV1 כיום מתוכנות כמו Premiere Pro, יצטרך קצת להפשיל שרוולים ולעקוב אחר ההוראות כאן כיצד לחבר בין Premiere Pro ל-FFMPEG ומשם לקודד כ-AV1 (שימו לב שהמקום היחידי שמקבל קבצים כאלו זה יוטיוב וגם אז – עד 1080P, וצריך מעבד די חזק לעבד את הוידאו).

לסיכום: ל-Codec לוקח לפחות 2-4 שנים עד שדברים מתחילים לזוז להיכן שהוא, ולא חשוב אם יש לו גב מסחרי כמו MPEG-LA או Codec שעומדת מאחוריו גוגל וחברות רבות הצטרפו ואין צורך בתשלום תמלוגים. H.266 נשמע נחמד, אבל זו בדיוק גם הפינה של AV1 (לחתוך ב-50% תעבורה של H.265) ולכן אני מאמין שיהיה מאבק, ובכל מקרה לא נראה תמיכה משמעותית לאף Codec מבחינת חומרה לפחות עד השנה הבאה.