HTC DriverGate - גרסת האודיו

סמל זמן קריאה 4 דקות לקרוא


קוראים עוזרים לתמוך ב-MSpoweruser. אנו עשויים לקבל עמלה אם תקנה דרך הקישורים שלנו. סמל טיפים

קרא את דף הגילויים שלנו כדי לגלות כיצד תוכל לעזור ל-MSPoweruser לקיים את צוות העריכה קראו עוד

דלת הנהג

ובכן, לאחר יום או יומיים של הרגשה טובה של Windows Mobile, אנו חוזרים לכמה בעיות שמטרידות את המכשירים שלנו שלא לצורך.

נראה שהנהגים משפיעים שוב על מכשירי HTC נבחרים, כולל כל מכשירי הדור הגבוה ביותר כמו HTC Touch Diamond, Touch Pro, HD ו-Xperia. כשקול מושמע דרך אוזניות או רמקולים מעת לעת (בדרך כלל אחת ל-5 דקות) תשמע "דילוג" קצר באודיו. הצליל תואר כפיגור/דילוג/שיהוק/תקתק/פליפ. נראה שהבעיה נמצאת עמוק במנהל ההתקן של wave או אולי בהתקן wave החומרה עצמו (Qualcomm שוב בפעולה?) נראה שהבעיה לא קיימת ב-A2DP.

הבעיה משפיעה בעיקר על נגני צד שלישי, שכן נראה ש-HTC פתרו את הבעיה, אבל רק לעצמם, על ידי בניית דרייבר Wave מותאם אישית.

צוות Conduits Pocket Player בדק את הנושא וחזר מיואש. זה מה שהיה להם לומר בנושא.

עשינו בדיקות מקיפות בנוגע לבעיית דילוג האודיו של HTC, והגענו למסקנה שזה לא משהו ש-Conduits יכול לטפל בו. לאחר ניתוח התוכנית HTC Audio Manager, וכמה קבצים אחרים (כגון DirectShow Audio Renderer HTCRenderFlt2.dll ו-HTCADXRenderer4.dll), גילינו ששניהם מבצעים כמה קריאות מערכת מיוחדות מאוד למנהל ההתקן של WaveOut.

הנה כמה פרטים טכניים למה שמצאנו. ראשית, אנחנו לא חושבים שלעדיפות שרשור או תהליך יש קשר לבעיה. אפליקציית אודיו רגילה משתמשת במחזור של "waveOut buffers" השומרים על פלט האודיו "מלא" עם נתוני אודיו כדי שהמערכת תוכל לשלוף מהם ולהפעיל. יישומים משתמשים בפונקציות waveOutWrite סטנדרטיות כדי למלא מאגרים אלה. מנקודת המבט של Pocket Player, המאגרים האלה תמיד מלאים, והתאמת סדרי העדיפויות לא תשפיע על זה. דרך אחת לשפר דילוגים על אודיו (שהשפיעה על HTC TyTN) הייתה להגביר את עדיפות השרשור של מנהל ההתקן WaveOut על ידי עריכת ערך רישום תחת HKLM\Drivers\Builtin\WaveOut. גישה זו לא עבדה כאן. באופן מעניין למדי, בעיות הדילוג הללו מתרחשות במחשבים שולחניים. שם, הבעיה קשורה לדרייברים בזמן אמת שלוקחים "ארוך מדי" בעיבוד שלהם, מה שמונע ממנהל התקן השמע לעבד את אצווה הסאונד הבאה. זה קורה ב-Vista עם כמה מנהלי התקנים של MacBook.

מנהל האודיו משתמש במנגנון פלט שונה משיחות waveOut הסטנדרטיות - הוא משתמש במסנן מעבד האודיו של DirectShow, שהוא דרך נוספת לשלוח אודיו. בהסתכלות הפנימית של איך זה עובד, זה משתמש במנגנון אחר לגמרי. הוא משתמש בשיחת waveOutMessage קניינית כדי לפתוח תור הודעות חדש, שהשמע "מודר" דרכו.

Pocket Player (ויישומים אחרים) אולי יכולים לפתור בעיה זו על ידי שימוש ב-HTC Audio Renderer במקום שגרות waveOut משלהם, אבל אז נאבד דהייה צולבת ותכונות ספציפיות אחרות של Pocket Player. עשינו כמה בדיקות ראשוניות של יצירת גרף מסנן DirectShow (השלם עם ה- Audio Renderer שלהם) אבל עדיין חווינו את הדילוג, אז חייבים להיות שלבים נוספים.

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

אם תחלץ את ה-Wavev.dll מ-ROM, תראה אינספור הודעות איתור באגים בנוגע ל-"MP3 Streams" וכדומה, המצביעות על נתיב שמע נפרד לחלוטין למוזיקה שמגיעה מהתוכנה שלהם. אם יהיה צורך, נכתוב מחדש את הפלאגין הפלט של WaveOut שלנו (שגרות הפלט שלנו משתמשות בארכיטקטורת פלאגין פרטית בדיוק כמו סוגי הפלאגין האחרים שלנו) המשתמשת בפלט DirectShow.

HTC סירבה לתעד כיצד הם פתרו את הבעיה, ואמרו שהם לא תמכו בתוכנת צד שלישי.

כמובן שמפתחי XDA לעולם אינם נותנים למצב כזה לשקר. Thx1200 פותחת פרס למפתחים שיכולים לייצר פתרון קוד פתוח לבעיה זו ולהפוך אותו לזמין לקהילה. נכון לעכשיו, הפרס הוא רק $30 קטנים, אבל אני בטוח שנוכל להפיק הרבה יותר תרומות כדי לטפל בבעיה המטרידה הזו עבור כל מי שמשתמש בתוכנת שמע של צד שלישי.

קרא את השרשור המלא ב-XDA-Developers כאןואל תשכח להוסיף את התחייבותך גם אם אתה מרגיש שזה מצב שצריך לתקן.

עוד על הנושאים: מנהלי התקני שמע, HTC