HTC DriverGate – 오디오 버전

독서 시간 아이콘 4 분. 읽다


독자들은 MSpoweruser를 지원하는 데 도움을 줍니다. 당사의 링크를 통해 구매하시면 수수료를 받을 수 있습니다. 툴팁 아이콘

공개 페이지를 읽고 MSPoweruser가 편집팀을 유지하는 데 어떻게 도움을 줄 수 있는지 알아보세요. 자세히 보기

운전석

글쎄, 하루나 이틀의 Windows Mobile이 기분이 좋아지면 불필요하게 장치를 괴롭히는 몇 가지 문제로 돌아갑니다.

드라이버가 HTC Touch Diamond, Touch Pro, HD 및 Xperia와 같은 모든 최신 최신 세대 장치를 포함하여 선택된 HTC 장치에 다시 한 번 영향을 미치는 것으로 보입니다. 헤드폰이나 스피커를 통해 주기적으로(보통 5분에 한 번) 사운드가 재생되면 오디오에서 짧은 "건너뛰기"가 들립니다. 사운드는 지연/건너뛰기/딸꾹질/틱/블립으로 설명되었습니다. 문제는 웨이브 장치 드라이버 또는 하드웨어 웨이브 장치 자체에 있는 것으로 보입니다(Qualcomm이 다시 작동합니까?) A2DP에는 문제가 없는 것 같습니다.

이 문제는 주로 타사 플레이어에게 영향을 미칩니다. HTC가 문제를 해결한 것처럼 보이지만 사용자 지정 웨이브 드라이버를 구축하여 자체적으로만 해당됩니다.

Conduits Pocket Player 팀은 이 문제를 조사한 결과 낙담한 상태로 돌아왔습니다. 이것은 주제에 대해 말한 것입니다.

우리는 HTC 오디오 건너뛰기 문제와 관련하여 광범위한 테스트를 수행했으며 Conduits가 해결할 수 있는 문제가 아니라는 결론에 도달했습니다. HTC Audio Manager 프로그램과 다른 여러 파일(HTC의 DirectShow Audio Renderer HTCRenderFlt2.dll 및 HTCADXRenderer4.dll과 같은)을 분석한 후 우리는 둘 다 WaveOut 드라이버에 매우 특별한 시스템 호출을 하고 있음을 발견했습니다.

다음은 우리가 찾은 것에 대한 몇 가지 기술적인 세부 사항입니다. 첫째, 우리는 스레드나 프로세스 우선순위가 문제와 관련이 있다고 생각하지 않습니다. 일반 오디오 응용 프로그램은 시스템이 가져오고 재생할 오디오 데이터로 오디오 출력을 '전체'로 유지하는 'waveOut 버퍼' 주기를 사용합니다. 응용 프로그램은 표준 waveOutWrite 함수를 사용하여 이러한 버퍼를 채웁니다. Pocket Player의 관점에서 이러한 버퍼는 항상 가득 차 있으며 우선 순위를 조정해도 여기에 영향을 미치지 않습니다. HTC TyTN에 영향을 미친 오디오 건너뛰기를 개선하는 한 가지 방법은 HKLM\Drivers\Builtin\WaveOut에서 레지스트리 값을 편집하여 WaveOut 드라이버의 스레드 우선 순위를 높이는 것입니다. 이 접근 방식은 여기에서 작동하지 않았습니다. 흥미롭게도 이러한 건너뛰기 문제는 데스크톱 PC에서 발생합니다. 거기에서 문제는 오디오 드라이버가 다음 사운드 배치를 처리하지 못하게 하는 처리에 "너무 오래" 걸리는 실시간 드라이버와 관련이 있습니다. 이것은 일부 MacBook 드라이버가 있는 Vista에서 발생합니다.

오디오 관리자는 표준 waveOut 호출과 다른 출력 메커니즘을 사용합니다. 오디오를 보내는 또 다른 방법인 DirectShow 오디오 렌더러 필터를 사용합니다. 작동 방식의 내부를 살펴보면 완전히 다른 메커니즘을 사용하고 있습니다. 새로운 메시지 대기열을 열기 위해 독점적인 waveOutMessage 호출을 사용하고 있으며, 이 대기열을 통해 오디오가 "스트리밍"됩니다.

Pocket Player(및 기타 응용 프로그램)는 자체 waveOut 루틴 대신 HTC 오디오 렌더러를 사용하여 이 문제를 해결할 수 있지만 크로스 페이딩 및 기타 Pocket Player의 특정 기능을 잃게 됩니다. DirectShow 필터 그래프(오디오 렌더러와 함께 완성)를 만드는 몇 가지 초기 테스트를 수행했지만 여전히 건너뛰기가 발생하므로 추가 단계가 필요합니다.

결과적으로 Conduits는 이제 이를 제조업체가 수정해야 하는 장치별 문제로 간주합니다. 또는 HTC가 오디오 출력 드라이버에 대한 특수 "스트리밍 모드"를 문서화하려는 경우 해당 모델에 적용할 수 있습니다.

ROM에서 Wavedev.dll을 추출하면 "MP3 스트림" 등에 관한 수많은 디버깅 메시지를 볼 수 있으며, 이는 해당 소프트웨어에서 나오는 음악에 대한 완전히 별도의 오디오 경로를 나타냅니다. 필요한 경우 DirectShow 출력을 사용하는 WaveOut 출력 플러그인(출력 루틴은 다른 플러그인 유형과 마찬가지로 개인 플러그인 아키텍처를 사용함)을 다시 작성합니다.

HTC는 타사 소프트웨어를 지원하지 않는다고 말하면서 문제를 해결한 방법을 문서화하는 것을 거부했습니다.

물론 XDA 개발자는 이런 상황이 거짓말을 하도록 내버려 두지 않습니다. Thx1200은 이 문제에 대한 오픈 소스 솔루션을 만들고 커뮤니티에 제공할 수 있는 개발자를 위한 현상금을 시작합니다. 현재 현상금은 30달러에 불과하지만 타사 오디오 소프트웨어를 사용하는 모든 사용자를 위해 이 성가신 문제를 해결하기 위해 더 많은 기부금을 생성할 수 있다고 확신합니다.

여기에서 XDA-Developers의 전체 스레드 읽기, 그리고 이것이 수정이 필요한 상황이라고 생각되는 경우에도 서약을 추가하는 것을 잊지 마십시오.

주제에 대한 추가 정보: 오디오 드라이버, HTC