Lettura di audio multicanale
[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita dal lettore di origine e dallo scrittore sink . Source Reader e Sink Writer sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice utilizzi lettore di origine e scrittore sink invece di Windows Media Format 11 SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Il codec Windows Media Audio 9 Professional può codificare l'audio multicanale (più di due canali). Quando si legge un file con audio multicanale, è necessario configurare correttamente l'output o l'audio verrà distribuito a 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 fornire output audio ad alta definizione. L'audio ad alta definizione è codificato dal codec Windows Media Audio 9 con campioni 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 sul computer è impostato con g_wszSpeakerConfig. Questa impostazione è un valore DWORD impostato su una delle costanti altoparlanti 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 audio surround a quattro canali. |
DSSPEAKER_5POINT1 | 0x00000006 | Il computer client è dotato di cinque altoparlanti e un subwoofer. |
DSSPEAKER_7POINT1 | 0x00000007 | Il computer client è dotato di sette altoparlanti e un subwoofer. |
Per impostare queste impostazioni, usare IWMReaderAdvanced2::SetOutputSetting.
Infine, affinché i canali vengano restituiti in modo discreto, senza riduzione dello stereo, è necessario impostare il tipo di supporto corretto nell'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 in base 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 media.
- 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 i formati con 1 o 2 canali e un massimo di 16 bit per canale. Come con altri formati audio, è consigliabile usare solo i formati enumerati dal lettore; non configurare il proprio.
Nota
Puoi restituire audio multicanale solo se l'applicazione è in esecuzione in Microsoft Windows XP o in una versione successiva di Microsoft Windows.
Argomenti correlati