תמיכה בפיענוח חומרה ב MKV , יש או אין?

רבות השאלות על תמיכה בפורמט ה MKV בהאצת חומרה בשימוש כרטיסי המסך החדשים.לרוב התשובה לא היתה חד משמעית ולכן לא ...


 

הרבה מדובר פה על בעיה שקשורה לחוסר האצת חומרה בכרטיסי מסך בזמן ניגון קבצי MKV לדוגמא בכרטסי מסך של ATI דגם 2600 האחרון.

אז הנה קצת סדר בבלגן, ונתחיל דווקא מהסוף

אני מניח שבקרוב יתרחשו שלושה דברים:
1. יתבצע עידכון דרייברים לכרטיסים שתומכים בהאצת חומרה ואז תיפתר בעיית ניגון התוכן שנמצא ברוב קבצי ה MKV
2. אחרי שהתגלה באחד הפורומים הגורם לבעיה (שקשור לקידוד הוידאו) האנשים שבונים ומפיצים את התכנים האלה (קבצי ה MKV) ישנו במעט את הגדרות הקידוד (x264) כדי שלא תיווצר בעייה להאיץ תכנים אלה בכרטיסי המסך
3. מפענחים בתוכנה כגון ה FFDSOW Video Decoder (שחלקם משתמשים גם ביכולות פיענוח החומרה) יבצעו מעקף כלשהוא כדי לאפשר האצה בחומרה (לדעתי המפענח של CyberLink יודע לעשות את זה כבר היום בצורה חלקית)

מה זה בעצם קובץ MKV?

 

קובץ MKV זה בעצם מעטפת לערוצים שונים
הקובץ בדר"כ מכיל ערוץ מקודד של וידאו וערוץ מקודד של אודיו
(יכולים להיות שם יותר מערוץ וידאו\אודיו אחד וגם יכולים להיות ערוצים אחרים כגון כתובית לדוגמה יכולים להיות שם ערוצי אודיו ל DTS ו AC3)
ערוץ הוידאו בדר"כ מקודד ל H.264 ובפעולת הקידוד (X264) צריך לבחור מהם הגדרות הקידוד הרצויות, זה נקרא הגדרת פרופיל (profile).
הבעיה התחילה כאשר רוב הקידודים נעשו ל פרופיל שנקרא High@Level 5.1 פרופיל זה אומנם טוב, איכותי ויפה אבל זה לא פרופיל שתואם לתוכן שהוגדר כסטנדרט למדיה HD-DVD ו Blue-Ray.
הסטנדרט נקרא High@Level 4.1 .

אז איך כל זה מתקשר להאצת חומרה ?

כרטיסי המסך שתומכים בהאצת חומרה תומכים רק בפרופיל High@Leve 4.1 ולכן רגע הם לא יכולים להאיץ תוכן שקודד ל ..High@Level 5.1 .מגבלה הזאת בכרטיסי המסך היא שרירותית ולא קשורה למגבלות חומרה (זה אומנם נכון שהפרופיל הזה צורך יותר זיכרון מצד המפענח אבל לכרטיסי המסך האלה יש מספיק, ראו הסבר בהמשך) לכן אני מניח שלא רחוק היום שהבעיה הזאת תיפתר.

האם יש פיתרון ביניים?

יש כלים שיודעים היום לקחת קובץ MKV ולשנות לו את הפרופיל בלי לקודד מחדש, אבל זה עובד ברוב המקרים בעיקר על תוכן P720 (ששם הרי זה פחות חשוב) אך בתוכן P1080 זה לא ניתן לביצוע בלי לקודד מחדש. זה קשור למגבלה בפרמטר שנקרא DPB (Decoded Picture Buffer) שמושפע מפרמטר אחר שנקרא : Ref Frames .

לסיכום:
מהיום נא לא להאשים את Matroska (יצרני ה MKV) בחוסר האצת החומרה אלא את יצרני כרטיסי המסך ובעיקר את הח´ברה שמבצעים את הקידודים !!

איך DPB ו Ref Frames קשורים לכל העסק?

 

כפי שכבר הוסבר הפרופיל בעצם מגדיר מהם הפרמטרים ההכרחיים, המותרים והמקסימליים
שהמקודד (Encoder) צריך להשתמש כדי שערוץ המקודד שנוצר יתמוך בפרופיל מסוים .

פרופיל [email protected] מגדיר שה DPB לא יכול להיות גדול מ 12,582,912 בתים. את הנתון הזה כרטיס המסך מפענח ומקצה זיכרון בגודל זה. זיכרון זה ישמש אותו לפענוח הערוץ המקודד. DPB בעצם מגדיר כמה פריימים הכרטיס צריך בו זמנית להחזיק בזיכרון כפול גודל כל פריים כזה.
לדוגמה: עד עכשיו בתוכן P1080 נתון זה היה מוגדר כ 8 פריימים (המספר הזה זהו פרמטר
שנקרא ref frames שהוא הגורם לכל בעיותנו) גודל הזיכרון לכן בקרה זה יהיה: 920x1080x8=16,588,800 (גובה תמונה X רוחב תמונה X כמות תמונות).
וכאן רואים שיש חריגה מהגדרת הפרופיל של גודל מקסימלי ל DPB ולכן כרטיסי המסך שתומכים רק בפרופיל הזה (וכל הפרופילים מתחת אבל לא מעל !) לא יבצעו האצה בחומרה. כדי להשלים את התמונה ב P720 בדר"כ הקידוד הוא 8 או 9 פריימים ואז: 1080x720x9=6,998,400 וזה נמצא בתוך הגבולות ולכן אין בעייה רק לשנות את נתוני הפרופיל ואז ניתן לקבל האצה בחומרה.
(כדי לדייק מספר ה ref frames המקסימלי לתוכן P1080 בפרופיל המדובר הוא 4 וזה מכיוון שהמספר המקסימלי של בתים צריך להיות קטן או שווה 8,294,400 בתים. אכן 16,588,800 בתים זאת מגבלת הפרופיל אבל חלק מהזיכרון דרוש לצורך הקידוד ולכן המספר הרלוונטי הוא 8,294,400 בתים)

ודבר נוסף אחרון:

נעשה נסיון מעניין ע"י אחד המשתמשים בפורום doom9 בו הוא ניסה לקחת קובץ H.264-1080P ולשנות ידנית ע"י עורך HEX את האיזור בקובץ שם מוגדר ref frames מ 8 ל 3 (זה נמצא בתחום ה 10 בתים ראשונים בקובץ H.264ובקובץ MKV זה נמצא קצת יותר עמוק) ואז הוא ניסה להריץ ולראות האם כרטיס המסך יודע לקבל נתונים אלה והאם הוא יודע לפענח בחומרה את הערוץ והכי מעניין האם הוידאו המשודר נראה טוב. לפי בדיקתו זה עובד עם בעיות מינוריות בזמן הניגון (זה נשמע מאוד מוזר מכיוון שהשינוי הזה אמור לשבש את פעולת ה decoder ולכן ההגיון אומר שאולי ההאצה הייתה עובדת אבל הוידאו יצא משובש)
למי שמעוניין לנסות ולשחק – זה לא כל כך קשה לפענח ב Header-ים את השדות (שכתובים בתחילת קובץ הH.264 ) ובעיקר למצוא את השדה ref framed ולשנות אותו (זה קצת יותר מסובך ממה שזה נשמע בהתחלה מכיוון ששינוי שדה ref frames משפיע על כל שאר השדות שבאים אחריו ולכן זה דורש לבצע shifting של כמה בתים).

להלן צילומי הגדרות הפרופיל בשני קבצי MKV הראשון 720P והשני 1080P

 

720P


אז למה בכלל נוצר הפרופיל (profile) ?

פורמט ה MPEG (בתוכו נמצא גם H.264) תומך במגוון אפליקציות חלקם פשוטות כמו במכשירי ניגון ניידים ובמכשירי טלפון ועד נגני Blue-Ray ותוכנות עריכה ל HD. לחלק גדול מהאפלקציות זה לא ריאלי וגם יקר מידי לתמוך בכל הסטנדט ולכן כדי לאפשר לאפלקציות האלה (לדוגמה נגן HD-DVD או כרטיס מסך) תמיכה חלקית (subsets) הסטנדרט הגדיר משהו שנקרא פרופילים ורמות – profiles and levels (ולשם הדיוק בכל פעם שהוזכר במאמר הפרופיל הכוונה הייתה לשניהם).
הפרופיל – מגדיר מגוון מאפיינים שקשורים לאלגוריתם הדחיסה כגון: ref frames, chroma format, שימוש בפריימים I, P ו B וכו.
הרמה – (level) מגדירה יכולות כמותית מקסימליות כגון :max bit rate, גודל מקסימלי של פריים וכו
וכך כל אפלקצייה מגדירה באיזה פרופיל ורמה היא יודעת לעבוד וזה מחייב שכל מקודד שקידד את ערוץ הוידאו בפרופיל הנתמך ינוגן ע"י אותה אפליקצייה.
לדוגמא הפרופיל High@Leve 4.1 מתאר פרופיל שנקרא High Profile ורמה שנקראת Level 4.1
ל H.264 הוגדרו כ 14 פרופילים ו 17 רמות.

להורדת הקוד הפתוח שלH.264/AVCEncoder&Decoder

להמשך דיון בנושא המאמר לחץ כאן.


חלק מהתכנים באתר כוללים מעת לעת קישורים לתוכניות שותפים, שעבורם האתר מקבל עמלה עם רכישה בפועל באמצעותם.
עמלה זו איננה מייקרת את עלות הרכישה של המוצרים.

7:00
  /  
01.02.2008
  
כתב: אריה אושרוב (osherov), ערך: דרור אנגל

1