Metodo IAudioClient3::InitializeSharedAudioStream (audioclient.h)
Inizializza un flusso condiviso con la periodicità specificata.
Sintassi
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
Parametri
[in] StreamFlags
Tipo: DWORD
Flag per controllare la creazione del flusso. Il client deve impostare questo parametro su 0 o sull'OR bit per bit di una o più costanti supportate AUDCLNT_STREAMFLAGS_XXX o costanti AUDCLNT_SESSIONFLAGS_XXX. Le costanti AUDCLNT_STREAMFLAGS_XXX supportate per questo parametro quando si usa questo metodo sono:
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK
[in] PeriodInFrames
Tipo: UINT32
Periodicità richiesta dal client. Questo valore deve essere un multiplo integrale del valore restituito nel parametro pFundamentalPeriodInFrames su IAudioClient3::GetSharedModeEnginePeriod. I periodInFrame devono essere anche maggiori o uguali al valore restituito in pMinPeriodInFrames e minore o uguale al valore restituito in pMaxPeriodInFrames.
[in] pFormat
Tipo: const WAVEFORMATEX*
Puntatore a un descrittore di formato. Questo parametro deve puntare a un descrittore di formato valido di tipo WAVEFORMATEX oWAVEFORMATEXTENSIBLE. Per altre informazioni, vedere la sezione Osservazioni per IAudioClient::Initialize.
[in, optional] AudioSessionGuid
Tipo: LPCGUID
Puntatore a un GUID di sessione. Questo parametro punta a un valore GUID che identifica la sessione audio a cui appartiene il flusso. Se il GUID identifica una sessione aperta in precedenza, il metodo aggiunge il flusso a tale sessione. Se il GUID non identifica una sessione esistente, il metodo apre una nuova sessione e aggiunge il flusso a tale sessione. Il flusso rimane un membro della stessa sessione per la sua durata. L'impostazione di questo parametro su NULL equivale a passare un puntatore a un valore GUID_NULL.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, viene restituito S_OK. Se ha esito negativo, i codici restituiti possibili includono, ma non sono limitati a, i valori visualizzati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
L'oggetto IAudioClient è già inizializzato. |
|
Il flag AUDCLNT_STREAMFLAGS_LOOPBACK è impostato, ma il dispositivo endpoint è un dispositivo di acquisizione, non un dispositivo di rendering. |
|
Indica che la durata del passaggio del processo ha superato l'utilizzo massimo della CPU. Il motore audio tiene traccia dell'utilizzo della CPU mantenendo il numero di volte in cui la durata del passaggio del processo supera l'utilizzo massimo della CPU. L'utilizzo massimo della CPU viene calcolato come percentuale della periodicità del motore. Il valore percentuale è il valore della limitazione della CPU del sistema (entro l'intervallo del 10% e del 90%). Se questo valore non viene trovato, viene usato il valore predefinito del 40% per calcolare l'utilizzo massimo della CPU. |
|
Il dispositivo endpoint audio è stato scollegato o l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse o altrimenti non disponibili per l'uso. |
|
Il dispositivo endpoint è già in uso. Il dispositivo viene usato in modalità esclusiva oppure il dispositivo viene usato in modalità condivisa e il chiamante ha chiesto di usare il dispositivo in modalità esclusiva. |
|
Il client specificato AUDCLNT_STREAMOPTIONS_MATCH_FORMAT quando si chiama IAudioClient2::SetClientProperties, ma il formato del motore audio è stato bloccato da un altro client. In questo caso, è possibile chiamare IAudioClient2::SetClientProperties senza specificare l'opzione di formato di corrispondenza e quindi usare il formato corrente del motore audio. |
|
Il client specificato AUDCLNT_STREAMOPTIONS_MATCH_FORMAT quando si chiama IAudioClient2::SetClientProperties, ma la periodicità del motore audio è stata bloccata da un altro client. In questo caso, è possibile chiamare IAudioClient2::SetClientProperties senza specificare l'opzione di formato di corrispondenza e quindi usare la periodicità corrente del motore audio. |
|
Il metodo non è riuscito a creare l'endpoint audio per il rendering o il dispositivo di acquisizione. Ciò può verificarsi se il dispositivo dell'endpoint audio è stato scollegato o l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse o altrimenti non disponibili per l'uso. |
|
Indica che il periodo di dispositivo richiesto specificato con PeriodInFrames non è un multiplo integrale della periodicità fondamentale del motore audio, è più breve del periodo minimo del motore o è più lungo del periodo massimo del motore. Ottenere i valori di periodicità supportati del motore chiamando IAudioClient3::GetSharedModeEnginePeriod. |
|
Il motore audio (modalità condivisa) o il dispositivo endpoint audio (modalità esclusiva) non supporta il formato specificato. |
|
Il servizio audio Di Windows non è in esecuzione. |
|
Il parametro pFormat è NULL. |
|
Il parametro pFormat punta a una descrizione del formato non valida; o il flag di AUDCLNT_STREAMFLAGS_LOOPBACK è impostato, ma ShareMode non è uguale a AUDCLNT_SHAREMODE_SHARED; o il flag di AUDCLNT_STREAMFLAGS_CROSSPROCESS è impostato, ma ShareMode è uguale a AUDCLNT_SHAREMODE_EXCLUSIVE.
Una chiamata precedente a SetClientProperties è stata effettuata con una categoria non valida per i flussi audio/rendering. |
|
Memoria insufficiente. |
Commenti
A differenza di IAudioClient::Initialize, questo metodo non consente di specificare una dimensione del buffer. La dimensione del buffer viene calcolata in base alla periodicità richiesta con il parametro PeriodInFrames . È responsabilità dell'app client assicurarsi che gli esempi audio vengano trasferiti e fuori dal buffer in modo tempestivo.
I client audio devono verificare la presenza di valori consentiti per il parametro PeriodInFrames chiamando IAudioClient3::GetSharedModeEnginePeriod. Il valore di PeriodInFrames deve essere un multiplo integrale del valore restituito nel parametro pFundamentalPeriodInFrames . PeriodInFrames deve essere maggiore o uguale al valore restituito in pMinPeriodInFrames e minore o uguale al valore di pMaxPeriodInFrames.
Ad esempio, per un formato 44100 kHz, GetSharedModeEnginePeriod potrebbe restituire:
pDefaultPeriodInFrames = 448 frame (circa 10,16 millisecondi)
pFundamentalPeriodInFrames = 4 fotogrammi (circa 0,09 millisecondi)
pMinPeriodInFrames = 48 fotogrammi (circa 1,09 millisecondi)
pMaxPeriodInFrames = 448 frame (uguale al valore predefinito)
I valori consentiti per il parametro PeriodInFrames in InitializeSharedAudioStream includono 48 e 448. Includono anche cose come 96 e 128.
Non includerebbero 4 (che è minore del valore minimo consentito) o 98 (che non è un multiplo del fondamentale) o 1000 (maggiore del valore massimo consentito).
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 [solo app desktop] |
Server minimo supportato | Windows Server 2016 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | audioclient.h |