HTC DriverGate – نسخه صوتی
4 دقیقه خواندن
منتشر شده در
صفحه افشای ما را بخوانید تا بدانید چگونه می توانید به MSPoweruser کمک کنید تا تیم تحریریه را حفظ کند ادامه مطلب
خوب، پس از یک یا دو روز استفاده از ویندوز موبایل، ما به برخی از مشکلاتی که بی جهت دستگاههای ما را آزار میدهند، برمیگردیم.
به نظر می رسد که درایور بار دیگر بر دستگاه های انتخابی HTC، از جمله تمام دستگاه های نسل فعلی پیشرفته مانند HTC Touch Diamond، Touch Pro، HD و Xperia تأثیر می گذارد. هنگامی که صدا از طریق هدفون یا بلندگوها به صورت دوره ای (معمولاً هر 5 دقیقه یک بار) پخش می شود، یک "پرش" کوتاه در صدا خواهید شنید. صدا به عنوان تاخیر / پرش / سکسکه / تیک / بلیپ توصیف شده است. به نظر می رسد مشکل در عمق درایور دستگاه موج یا احتمالاً خود دستگاه موج سخت افزاری باشد (کوالکام دوباره در حال عمل است؟) به نظر نمی رسد مشکل در A2DP وجود داشته باشد.
این مشکل عمدتاً روی بازیکنان شخص ثالث تأثیر می گذارد، زیرا به نظر می رسد HTC با ساخت یک درایور موج سفارشی مشکل را حل کرده است، اما فقط برای خودشان.
تیم Conduits Pocket Player به دنبال این موضوع بوده و ناامید شده است. این چیزی است که در مورد این موضوع گفته شده است.
ما آزمایشهای گستردهای را در مورد مشکل پرش صدای HTC انجام دادهایم و به این نتیجه رسیدهایم که این چیزی نیست که Conduits بتواند به آن رسیدگی کند. پس از تجزیه و تحلیل برنامه HTC Audio Manager و چندین فایل دیگر (مانند DirectShow Audio Renderer HTCRenderFlt2.dll و HTCADXRenderer4.dll)، متوجه شدیم که هر دو در حال برقراری تماس های سیستمی بسیار خاص با درایور WaveOut هستند.
در اینجا برخی از جزئیات فنی برای آنچه ما پیدا کرده ایم آورده شده است. اولاً، ما فکر نمیکنیم که اولویت موضوع یا فرآیند ربطی به مشکل داشته باشد. برنامههای صوتی معمولی از چرخهای از بافرهای WaveOut استفاده میکنند که خروجی صدا را با دادههای صوتی کامل نگه میدارند تا سیستم از آن خارج شده و پخش شود. برنامه ها از توابع استاندارد waveOutWrite برای پر کردن این بافرها استفاده می کنند. از دیدگاه Pocket Player، این بافرها همیشه پر هستند و تنظیم اولویتها بر این موضوع تأثیری نخواهد داشت. یکی از راههای بهبود پرشهای صوتی (که بر HTC TyTN تأثیر گذاشته است) تقویت اولویت رشته درایور WaveOut با ویرایش یک مقدار رجیستری در HKLM\Drivers\Builtin\WaveOut بود. این رویکرد در اینجا کارساز نبود. به اندازه کافی جالب توجه است که این مشکلات پرش در رایانه های شخصی رومیزی رخ می دهد. در آنجا، مشکل مربوط به درایورهای بیدرنگ است که پردازش آنها "خیلی طولانی" طول می کشد، که مانع از پردازش دسته بعدی صدا توسط درایور صوتی می شود. این در Vista با برخی از درایورهای مک بوک اتفاق می افتد.
Audio Manager از مکانیزم خروجی متفاوتی از تماسهای waveOut استاندارد استفاده میکند - از فیلتر رندر صوتی DirectShow استفاده میکند که راه دیگری برای ارسال صدا است. با نگاهی به درونیات نحوه عملکرد آن، از مکانیزم کاملاً متفاوتی استفاده می کند. از یک فراخوان اختصاصی waveOutMessage برای باز کردن یک صف پیام جدید استفاده میکند که سپس صدا از طریق آن «استریم» میشود.
Pocket Player (و سایر برنامهها) احتمالاً میتوانند این مشکل را با استفاده از HTC Audio Renderer بهجای روتینهای WaveOut خود حل کنند، اما در این صورت ما میتوانیم ویژگیهای خاص Pocket Player و دیگر ویژگیهای Pocket Player را از دست بدهیم. ما چند آزمایش اولیه برای ایجاد یک نمودار فیلتر DirectShow (کامل با رندر صوتی آنها) انجام دادیم، اما همچنان پرش را تجربه کردیم، بنابراین باید مراحل دیگری وجود داشته باشد.
در نتیجه، Conduits اکنون این مشکل را یک مشکل خاص دستگاه می داند که سازنده موظف به رفع آن است. از طرف دیگر، اگر HTC بخواهد «حالت پخش جریانی» ویژه خود را برای درایور خروجی صوتی خود مستند کند، میتوانیم به دنبال تطبیق با آن مدل باشیم.
اگر Wavedev.dll را از یک رام استخراج کنید، پیامهای اشکال زدایی بیشماری در رابطه با «جریانهای MP3» و موارد مشابه خواهید دید که نشاندهنده یک مسیر صوتی کاملاً مجزا برای موسیقی است که از نرمافزار آنها میآید. در صورت نیاز، ما افزونه خروجی WaveOut خود را بازنویسی می کنیم (روال های خروجی ما از یک معماری پلاگین خصوصی مانند سایر انواع افزونه های ما استفاده می کنند) که از خروجی DirectShow استفاده می کند.
HTC از مستندسازی نحوه حل این مشکل خودداری کرده و گفته است که از نرم افزار شخص ثالث پشتیبانی نمی کند.
البته XDA-Developers هرگز کسانی نیستند که اجازه نمی دهند موقعیتی مانند این دروغ باشد. Thx1200 یک جایزه برای توسعه دهندگانی است که می توانند یک راه حل منبع باز برای این مشکل تولید کنند و آن را در دسترس جامعه قرار دهند. در حال حاضر جایزه فقط 30 دلار کوچک است، اما من مطمئن هستم که میتوانیم کمکهای مالی بیشتری برای رفع این مشکل آزاردهنده برای هر کسی که از نرمافزار صوتی شخص ثالث استفاده میکند، ایجاد کنیم.
موضوع کامل در XDA-Developers را اینجا بخوانیدو فراموش نکنید که تعهد خود را نیز اضافه کنید اگر احساس می کنید که این وضعیتی است که نیاز به اصلاح دارد.