하드웨어 오프로드된 APO 효과
Windows 10 버전 1511 이상에서는 API(오디오 처리 개체)의 오프로드가 지원됩니다. 가능한 성능 향상 외에도 하드웨어 오프로드 API를 사용할 때 사용할 수 있는 상당한 전력 절감이 있습니다.
하드웨어 오프로드 재생 중에 두 가지 유형의 API를 로드할 수 있습니다.
- OSFX(스트림 효과 오프로드)
- OMFX(오프로드 모드 효과)
하드웨어 오프로드된 APO 효과 개요
하드웨어 오프로드 오디오 처리 및 하드웨어 오프로드된 API
Windows 8 오디오 엔진은 컴퓨터의 기본 오디오 시스템과는 별개이지만 연결된 하드웨어 디바이스로 오프로드된 오디오 스트림과 작동하도록 다시 디자인되었습니다. 이를 하드웨어 오프로드라고 합니다. 자세한 내용은 하드웨어 오프로드 오디오 처리를 참조하세요.
하드웨어 오프로드 기능은 주로 버퍼 크기가 큰 저전력 시나리오를 대상으로 합니다. 예를 들어 지원 시스템에서 LPA(저전력 오디오) 재생 중에 CPU가 작은 버퍼를 처리하기 위해 자주 해제되지 않도록 오디오 버퍼 크기 또는 주기성을 1초로 설정할 수 있습니다(예: 10밀리초마다).
하드웨어 오프로드된 API와 하드웨어 오프로드 오디오 처리를 구현하면 전력 효율성을 최대화할 수 있습니다.
다음 다이어그램은 오디오 처리 개체 아키텍처를 보여줍니다. 다이어그램의 오른쪽에는 하드웨어 오프로드 OSFX 및 OMFX 효과로 통신하는 애플리케이션이 표시됩니다.
하드웨어 오프로드된 APO 효과 구현
하드웨어 오프로드된 APO는 오디오 처리 개체 아키텍처 및 오디오 처리 개체 구현에 설명된 것과 동일한 기본 요구 사항 및 디자인 원칙을 따라야 합니다.
지원되는 오디오 형식 구현 지침
하드웨어 오프로드 API의 경우 지원되는 오디오 형식에 대해 몇 가지 추가 고려 사항을 고려해야 합니다.
각 APO는 출력 오디오 형식 및 형식 변환이 필요한지 여부를 결정하기 위해 오디오 그래프 작성 중에 사용되는 IAudioProcessingObject::IsInputFormatSupported 메서드를 구현합니다.
HRESULT IsInputFormatSupported(
[in, optional] IAudioMediaType *pOppositeFormat,
[in, optional] IAudioMediaType *pRequestedInputFormat,
[out, optional] IAudioMediaType **ppSupportedInputFormat
);
오프로드 렌더링 엔드포인트는 호스트/시스템 핀 렌더링에서 지원하는 기본 형식을 포함하여 다양한 형식을 지원할 수 있습니다. 오프로드 APO는 지원되는 형식의 렌더링 스트림이 추가 형식 변환을 거치지 않아도 되도록 이러한 모든 형식을 지원해야 합니다.
오프로드 SFX는 형식 변환을 구현하고 더 광범위한 형식을 수락할 수 있습니다. 예를 들어 오프로드 SFX가 헤드폰 가상화(즉, 5.1 채널 오디오를 스테레오로 변환)를 제공하는 경우 이 메서드의 적절한 입력/출력 쌍에 대한 S_OK 반환해야 합니다.
오프로드 SFX는 지원되는 오프로드 핀 형식을 검토하고 기능을 함께 지원/확장해야 합니다.
오프로드 MFX는 입력 스트림의 형식을 변경할 수 없지만 여전히 오프로드 엔드포인트에서 제공하는 다양한 형식을 지원하고 불필요한 형식 변환을 제거해야 합니다.
오프로드 핀에서 렌더링하는 동안 해당 핀에서 하나의 스트림만 활성화되므로 스트림이 혼합되지 않습니다. 따라서 스트림 수준 및 모드 수준에서 오디오를 처리할 필요가 없습니다. 따라서 오디오 효과는 스트림 효과와 모드 효과 모두로 사용하도록 설정할 필요가 없습니다. 오프로드된 엔드포인트는 더 많은 스트림을 지원하며, 시스템의 처리 아키텍처에 따라 오프로드 처리를 SFX/MFX로 고려해야 할 수 있습니다.
INF 파일 항목
다음 INF 파일 항목을 구현하여 오프로드 재생 중에 로드되는 효과를 정의합니다. INF 파일 속성 키는 오디오 엔드포인트 작성기에 오프로드된 API에 대한 CLSID를 effects 속성 저장소로 설정하도록 지시합니다. 이 정보는 상위 수준 앱에 어떤 효과가 있는지 알리는 데 사용할 오디오 그래프를 빌드하는 데 사용됩니다.
속성 키 | GUID |
---|---|
PKEY_FX_Offload_StreamEffectClsid | {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},11 |
PKEY_FX_Offload_ModeEffectClsid | {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},12 |
PKEY_SFX_Offload_ProcessingModes_Supported_For_Streaming | {D3993A3F-99C2-4402-B5EC-A92A0367664B},11 |
PKEY_MFX_Offload_ProcessingModes_Supported_For_Streaming | {D3993A3F-99C2-4402-B5EC-A92A0367664B},12 |