HTC DriverGate - phiên bản âm thanh

Biểu tượng thời gian đọc 4 phút đọc


Bạn đọc giúp đỡ ủng hộ MSpoweruser. Chúng tôi có thể nhận được hoa hồng nếu bạn mua thông qua các liên kết của chúng tôi. Biểu tượng chú giải công cụ

Đọc trang tiết lộ của chúng tôi để tìm hiểu cách bạn có thể giúp MSPoweruser duy trì nhóm biên tập Tìm hiểu thêm

cổng vào

Chà, sau một hoặc hai ngày Windows Mobile hoạt động tốt, chúng tôi quay lại với một số sự cố đang gây khó chịu cho thiết bị của chúng tôi một cách không cần thiết.

Có vẻ như trình điều khiển lại một lần nữa ảnh hưởng đến các thiết bị HTC được chọn, bao gồm tất cả các thiết bị thế hệ cao cấp hiện tại như HTC Touch Diamond, Touch Pro, HD và Xperia. Khi âm thanh được phát định kỳ qua tai nghe hoặc loa (thường là 5 phút một lần), bạn sẽ nghe thấy một tiếng "bỏ qua" ngắn trong âm thanh. Âm thanh được mô tả là lag/skip/hiccup/tick/blip. Vấn đề dường như nằm sâu trong trình điều khiển thiết bị wave hoặc có thể là chính thiết bị wave phần cứng (Qualcomm hoạt động trở lại?) Vấn đề dường như không xuất hiện trong A2DP.

Vấn đề chủ yếu ảnh hưởng đến những người chơi bên thứ ba, vì HTC dường như đã giải quyết vấn đề, nhưng chỉ cho chính họ, bằng cách xây dựng trình điều khiển sóng tùy chỉnh.

Nhóm Conduits Pocket Player đã xem xét vấn đề này và đã trở nên chán nản. Đây là những gì đã phải nói về chủ đề này.

Chúng tôi đã thực hiện nhiều thử nghiệm liên quan đến vấn đề bỏ qua âm thanh của HTC và đã đi đến kết luận rằng đó không phải là vấn đề mà Conduits có thể giải quyết. Sau khi phân tích chương trình HTC Audio Manager và một số tệp khác (chẳng hạn như HTC's DirectShow Audio Renderer HTCRenderFlt2.dll và HTCADXRenderer4.dll), chúng tôi nhận thấy rằng cả hai đều đang thực hiện một số cuộc gọi hệ thống rất đặc biệt vào trình điều khiển WaveOut.

Dưới đây là một số chi tiết kỹ thuật cho những gì chúng tôi đã tìm thấy. Đầu tiên, chúng tôi không nghĩ rằng mức độ ưu tiên của luồng hoặc quy trình có liên quan gì đến vấn đề này. Ứng dụng âm thanh thông thường sử dụng một chu kỳ 'bộ đệm waveOut' để giữ cho đầu ra âm thanh 'đầy đủ' với dữ liệu âm thanh để hệ thống lấy và phát. Các ứng dụng sử dụng các hàm waveOutWrite tiêu chuẩn để lấp đầy các bộ đệm này. Theo quan điểm của Pocket Player, các bộ đệm này luôn đầy và việc điều chỉnh các mức độ ưu tiên sẽ không ảnh hưởng đến điều này. Một cách để cải thiện việc bỏ qua âm thanh (đã ảnh hưởng đến HTC TyTN) là tăng mức độ ưu tiên luồng của trình điều khiển WaveOut bằng cách chỉnh sửa giá trị đăng ký trong HKLM\Drivers\Builtin\WaveOut. Cách tiếp cận này không hoạt động ở đây. Thật thú vị, những sự cố bỏ qua này xảy ra trên máy tính để bàn. Ở đó, sự cố liên quan đến trình điều khiển thời gian thực mất "quá nhiều thời gian" trong quá trình xử lý của chúng, điều này ngăn trình điều khiển âm thanh xử lý lô âm thanh tiếp theo. Điều này xảy ra trong Vista với một số trình điều khiển MacBook.

Trình quản lý âm thanh sử dụng một cơ chế đầu ra khác với các lệnh gọi waveOut tiêu chuẩn - nó sử dụng bộ lọc kết xuất âm thanh DirectShow, đây là một cách khác để gửi âm thanh. Nhìn vào bên trong cách thức hoạt động của nó, nó đang sử dụng một cơ chế hoàn toàn khác. Nó đang sử dụng lệnh gọi waveOutMessage độc ​​quyền để mở một hàng đợi tin nhắn mới, sau đó âm thanh này sẽ được “truyền trực tuyến” qua.

Pocket Player (và các ứng dụng khác) có thể giải quyết vấn đề này bằng cách sử dụng HTC Audio Renderer thay vì các thói quen waveOut của riêng họ, nhưng sau đó chúng tôi sẽ mất tính năng làm mờ chéo và các tính năng cụ thể khác của Pocket Player. Chúng tôi đã thực hiện một số thử nghiệm ban đầu về việc tạo biểu đồ bộ lọc DirectShow (hoàn chỉnh với Trình kết xuất âm thanh của họ) nhưng vẫn bị bỏ qua, vì vậy phải thực hiện các bước bổ sung.

Do đó, Conduits hiện coi đây là sự cố dành riêng cho thiết bị mà nhà sản xuất có nghĩa vụ phải khắc phục. Ngoài ra, nếu HTC muốn ghi lại “chế độ phát trực tuyến” đặc biệt của họ cho trình điều khiển đầu ra âm thanh của họ, chúng tôi có thể xem xét việc điều chỉnh cho phù hợp với mô hình đó.

Nếu bạn giải nén Wavedev.dll từ ROM, bạn sẽ thấy vô số thông báo sửa lỗi liên quan đến “Luồng MP3” và những thứ tương tự, cho biết đường dẫn âm thanh hoàn toàn riêng biệt cho âm nhạc đến từ phần mềm của họ. Nếu cần, chúng tôi sẽ viết lại plug-in đầu ra WaveOut của chúng tôi (các thói quen đầu ra của chúng tôi sử dụng kiến ​​trúc plug-in riêng giống như các loại plug-in khác của chúng tôi) sử dụng đầu ra DirectShow.

HTC đã từ chối ghi lại cách họ giải quyết vấn đề, nói rằng họ không hỗ trợ phần mềm của bên thứ 3.

Tất nhiên XDA-Developers không bao giờ là những người để cho một tình huống như thế này nói dối. Thx1200 đang bắt đầu trao tiền thưởng cho các nhà phát triển có thể tạo ra giải pháp mã nguồn mở cho vấn đề này và cung cấp giải pháp đó cho cộng đồng. Hiện tại tiền thưởng chỉ là 30 đô la nhỏ, nhưng tôi chắc chắn rằng chúng tôi có thể tạo ra nhiều khoản đóng góp hơn nữa để giải quyết vấn đề khó chịu này cho bất kỳ ai sử dụng phần mềm âm thanh của bên thứ 3.

Đọc toàn bộ chủ đề tại XDA-Developers tại đâyvà đừng quên thêm cam kết của bạn nếu bạn cảm thấy đây là một tình huống cần sửa chữa.

Thông tin thêm về các chủ đề: trình điều khiển âm thanh, htc