alvox כתב:מאמר מצויין.
רמזת באחת מהתגובות בפורום ש-MERIT זה לא הכול. תרחיב בנושא בחלק "ב"?
...
יפה ששמת לב לפרט הזה
ואכן ה Merit זה לא הדבר היחיד שאחראי על הבחירה.
אומנם לא רציתי להיכנס לקטע טכני זה אבל בכל זאת
הנה ההסבר: (חלק ב
)
ישנם שני מקרים שונים בהם אין משמעות ל
Merit:
1. השימוש ב Merit נעשה רק ברגע שהנגן "מבקש" ממערכת ההפעלה (DirectShow Engine) שתמצא בשבילו מהו הפילטר המתאים ביותר לשימוש (זה נקרא פעולת Render וזה לא קשור ל Renderer Filter).
ראה דוגמה לשימוש בבחירה זו ב GraphEdit (בתמונה 1).
הנגן לא חייב לבחור בדרך זו ויכול להשתמש באיזה פילטר שהוא רוצה כדי ליצור את הגרף המתאים (אם ראיתם בנגנים כל מיני אופציות להשתמש או לא להשתמש בפילטר מסויים אז כך זה ממומש)
תמונה 2 מציגה אופצייה לבחירת פילטר מסוים בלי קשר ל Merit שלו (התמונה נלקחה מנגן ה MPC)
2. במקרה זה ההסבר הוא יותר טכני ונכנס לאיך בדיוק נבחר הפילטר הרצוי:
הסבר קצר על פילטרים במערכת:
כל פילטר שמותקן (DirectShow Filter) מצהיר במערכת באיזה סוג של נתונים הוא מוכן ומסוגל לטפל. בנוסף הוא גם מצהיר מהם הנתונים שהפילטר הזה מוציא החוצה לפילטר הבא (במידה והוא לא הפילטר האחרון ברשימה).
הצהרה זו מתחלקת לשניים:
א.
Major Type : מגדיר את סוג הערוץ בו הפילטר מוכן לטפל (לדוגמה Audio, Video וכו)
ב.
Sub Type : מגדיר עם איזה נתונים בערוץ הראשי המוצהר הפילטר מסוגל לטפל(לדוגמה AC3 ,PCMAudio, MPEG2, H.264 וכו)
שימו לב שהפילטר יכול לתמוך באחד או יותר סוגים ויתרה מזאת הוא יכול להצהיר על עצמו שהוא תומך בכל הסוגים
בתמונה 3 ניתן לראות שפילטר ה AC3Filter מוגדר בחיבור שלו כ Major Type מסוג Audio ו Sub Type מסוג PCMAudio
עכשיו נחזור לענייננו:
במידה והנגן כן משתמש בשרותי מערכת ההפעלה לבחירת הפילטר הרצוי
הפעולות שהמערכת תעשה על מנת למצוא את הפילטר המתאים האם אלו:
-עוברת על כל הפילטרים במערכת ובודקת האם ה
Major Type של הפילטר מתאים לסוג הערוץ אותו מעוניינים לחבר (נניח Video) במידה והתשובה היא שהוא מתאים אז:
-היא בודקת האם ה
Sub Type מתאים (נניח H.264) במידה והתשובה היא שגם הוא מתאים אז היא מכניסה אותו לרשימת המתאימים
-עכשיו היא בודקת האם יש יותר פילטר אחד כזה שמתאים לחיבור ובמידה ויש יותר מאחד רק אז:
-היא בודקת למי יש Merit גבוה יותר וזה הפילטר שיבחר ויחובר !!!
העניין הוא
שהמערכת נותנת עדיפות במידה ויש התאמה מלאה ב Sub Type בין הפילטרים על פני הגדרה גבוה יותר של Merit !!
לדוגמה:
נניח שיש פילטר אחד במערכת שמוכן לקבל וידאו וב
Sub Type שלו מוגדר שהוא מוכן לקבל
כל דבר
וקיים פילטר נוסף שגם הוא מוכן לקבל וידאו אבל הוא מצהיר שהוא מוכן לקבל
Sub Typeמסוים מסוג נניח ש MPEG2
במקרה זה אפילו אם ה Merit של הפילטר הראשון יהיה גבוה יותר תמיד המערכת תבחר את הפילטר השני בגלל התאמה מלאה של ה Sub Type !!
העסק אפילו עוד יותר מסובך מזה אבל אני מקווה שהכוונה הובנה (יש פה עוד עניין ש Foramt
ו Handshakeing בין הפילטרים אבל בשביל זה צריך כבר להכיר לעומק DirectShow)
לסיכום:
כמו שנכתב ה Merit זה לא הדבר היחיד שאחראי על הבחירה של הפילטר המתאים
שימו לב שהרבה פעמים מאשימים את המערכת ואת המנגנון בבחירה לא נכונה, מוזרה ולא הגיונית של פילטרים, אבל הסיבה לזה קשורה להגדרות לפילטרים עצמם !!
ודווקא המערכת עובדת בדיוק כמו שצריך
עופר,
האשמה לתוספות הארוכות שלי היא של alvox ולא שלי 