Lettura dell'audio multicanale
Il codec Windows Media Audio 9 Professional può codificare audio multicanale (più di due canali). Quando si legge un file con audio multicanale, è necessario configurare l'output correttamente o l'audio verrà recapitato in una qualità inferiore e in stereo. Per impostare un output per la distribuzione audio multicanale, è necessario impostare due impostazioni di output: g_wszEnableDiscreteOutput e g_wszSpeakerConfig.
L'impostazione di g_wszEnableDiscreteOutput su TRUE imposta il codec per offrire output audio ad alta definizione. L'audio ad alta definizione è codificato dal codec Windows Media Audio 9 con esempi a 24 bit in stereo o più canali. Se questa impostazione è FALSE, verrà recapitato solo l'output stereo a 16 bit.
Il numero di altoparlanti nel computer di riproduzione è impostato con g_wszSpeakerConfig. Questa impostazione è un valore DWORD impostato su una delle costanti dell'altoparlante DirectSound elencate nella tabella seguente. Per risolvere questi nomi costanti per il compilatore, è necessario includere dsound.h.
Costante | Valore | Descrizione |
---|---|---|
DSSPEAKER_DIRECTOUT | 0x00000000 | L'audio viene passato direttamente, senza essere configurato per gli altoparlanti. |
DSSPEAKER_HEADPHONE | 0x00000001 | Il computer client è dotato di cuffie. |
DSSPEAKER_MONO | 0x00000002 | Il computer client è dotato di un altoparlante monaurale. |
DSSPEAKER_QUAD | 0x00000003 | Il computer client è dotato di altoparlanti quadrafonici. |
DSSPEAKER_STEREO | 0x00000004 | Il computer client è dotato di altoparlanti stereo. |
DSSPEAKER_SURROUND | 0x00000005 | Il computer client è dotato di altoparlanti surround a quattro canali. |
DSSPEAKER_5POINT1 | 0x00000006 | Il computer client è dotato di cinque altoparlanti e un mdf. |
DSSPEAKER_7POINT1 | 0x00000007 | Il computer client è dotato di sette altoparlanti e un mdf. |
Per impostare queste impostazioni, usare IWMReaderAdvanced2::SetOutputSetting.
Infine, affinché i canali vengano restituiti in modo discreto, senza piegare lo stereo, è necessario impostare il tipo di supporto corretto sull'output seguendo questa procedura:
- Chiamare IWMReader::GetOutputFormatCount per ottenere il numero di formati supportati per l'output audio pertinente. Gli indici di formato di output sono basati su zero.
- Per ogni formato supportato, chiamare IWMReader::GetOutputFormat per recuperare l'interfaccia IWMOutputMediaProps nell'oggetto proprietà dei supporti di output.
- Chiamare IWMMediaProps::GetMediaType per recuperare il tipo di supporto.
- Se il tipo di supporto recuperato è il tipo multicanale desiderato, impostarlo chiamando IWMReader::SetOutputProps.
Dopo aver impostato l'output discreto e la configurazione dell'altoparlante, i formati di output enumerati dal lettore devono includere formati multicanale che usano la struttura WAVEFORMATEXTENSIBLE . Se si enumera i formati di output prima di impostare le proprietà, verranno inclusi solo formati con 1 o 2 canali e un massimo di 16 bit per canale. Come per altri formati audio, è consigliabile usare solo i formati enumerati dal lettore; non configurare il proprio.
Nota
È possibile restituire audio multicanale solo se l'applicazione è in esecuzione in Microsoft Windows XP o in una versione successiva di Microsoft Windows.
Argomenti correlati