Funzione MFCreateASFStreamingMediaSink (wmcontainer.h)
Crea un oggetto attivazione per il sink di streaming ASF.
Il sink di streaming ASF consente a un'applicazione di scrivere pacchetti ASF (Advanced Systems Format) in streaming in un flusso di byte HTTP.
Sintassi
HRESULT MFCreateASFStreamingMediaSink(
IMFByteStream *pIByteStream,
IMFMediaSink **ppIMediaSink
);
Parametri
pIByteStream
Puntatore a un oggetto flusso di byte in cui il sink multimediale ASF scrive il contenuto trasmesso.
ppIMediaSink
Riceve un puntatore all'interfaccia IMFMediaSink dell'oggetto sink di streaming ASF. Per creare il sink multimediale, l'applicazione deve chiamare IMFActivate::ActivateObject sul puntatore ricevuto. Il chiamante deve rilasciare il puntatore dell'interfaccia.
Valore restituito
Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Per creare il sink di streaming ASF in un altro processo, chiamare MFCreateASFStreamingMediaSinkActivate.
Un'applicazione può ottenere un puntatore all'oggetto ContentInfo ASF chiamando IUnknown::QueryInterface sull'oggetto sink multimediale ricevuto nel parametro ppIMediaSink . L'oggetto ContentInfo viene usato per impostare le impostazioni di configurazione del codificatore, fornire le proprietà del flusso fornite da un profilo ASF e aggiungere informazioni sui metadati. Queste impostazioni di configurazione popolano i vari oggetti intestazione ASF del file ASF codificato. Per ulteriori informazioni, vedere
Impostazione delle proprietà nell'oggetto ContentInfo.
Esempio
Nell'esempio di codice seguente viene illustrato come creare un sink multimediale per un'origine ASF. In questo esempio le impostazioni di configurazione del flusso vengono copiate dall'origine all'oggetto ContentInfo che rappresenta l'oggetto intestazione ASF del file di output.
// Creates an an instance of the ASF streaming sink.
HRESULT CreateASFStreamingSink(
IMFMediaSource *pSource,
IMFByteStream *pOutputByteStream,
IMFMediaSink **ppMediaSink
)
{
IMFPresentationDescriptor* pSourcePD = NULL;
IMFASFProfile* pASFProfile = NULL;;
IMFMediaSink* pMediaSink = NULL;
IMFASFContentInfo* pASFContentInfo = NULL;
// Create the streaming media sink for the ASF file
HRESULT hr = MFCreateASFStreamingMediaSink(pOutputByteStream, &pMediaSink);
if (FAILED(hr))
{
goto done;
}
//
// Transfer the ASF profile from the media source to the sink.
//
// Get the presentation descriptor from the source.
hr = pSource->CreatePresentationDescriptor(&pSourcePD);
if (FAILED(hr))
{
goto done;
}
// Convert the presentation descriptor to an ASF profile.
hr = MFCreateASFProfileFromPresentationDescriptor(pSourcePD, &pASFProfile);
if (FAILED(hr))
{
goto done;
}
hr = pMediaSink->QueryInterface(IID_PPV_ARGS(&pASFContentInfo));
if (FAILED(hr))
{
goto done;
}
// Set the profile on the sink.
hr = pASFContentInfo->SetProfile(pASFProfile);
if (FAILED(hr))
{
goto done;
}
*ppMediaSink = pMediaSink;
(*ppMediaSink)->AddRef();
done:
SafeRelease(&pSourcePD);
SafeRelease(&pASFProfile);
SafeRelease(&pASFContentInfo);
SafeRelease(&pMediaSink);
return hr;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | wmcontainer.h |
Libreria | Mf.lib |
DLL | Mf.dll |