Lettura dell'audio multicanale

[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita da Lettore di origine e Writer sink. Lettore di origine e Writer sink sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi Lettore di origine e Writer sink anziché 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 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:

  1. 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.
  2. Per ogni formato supportato, chiamare IWMReader::GetOutputFormat per recuperare l'interfaccia IWMOutputMediaProps nell'oggetto proprietà dei supporti di output.
  3. Chiamare IWMMediaProps::GetMediaType per recuperare il tipo di supporto.
  4. 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.

 

Input, flussi e output

Lettura dei file ASF

Impostazioni di output

Uso dell'audio PCM High-Resolution