Fungsi MFCreateASFStreamingMediaSink (wmcontainer.h)
Membuat objek aktivasi untuk sink streaming ASF.
Sink streaming ASF memungkinkan aplikasi menulis paket Advanced Systems Format (ASF) streaming ke aliran byte HTTP.
Sintaks
HRESULT MFCreateASFStreamingMediaSink(
IMFByteStream *pIByteStream,
IMFMediaSink **ppIMediaSink
);
Parameter
pIByteStream
Penunjuk ke objek aliran byte tempat sink media ASF menulis konten yang dialirkan.
ppIMediaSink
Menerima penunjuk ke antarmuka IMFMediaSink dari objek sink media streaming ASF. Untuk membuat sink media, aplikasi harus memanggil IMFActivate::ActivateObject pada pointer yang diterima. Pemanggil harus melepaskan penunjuk antarmuka.
Mengembalikan nilai
Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Untuk membuat sink streaming ASF dalam proses lain, panggil MFCreateASFStreamingMediaSinkActivate.
Aplikasi bisa mendapatkan penunjuk ke Objek ContentInfo ASF dengan memanggil IUnknown::QueryInterface pada objek sink media yang diterima dalam parameter ppIMediaSink . Objek ContentInfo digunakan untuk mengatur pengaturan konfigurasi encoder, menyediakan properti aliran yang disediakan oleh profil ASF, dan menambahkan informasi metadata. Pengaturan konfigurasi ini mengisi berbagai objek header ASF dari file ASF yang dikodekan. Untuk mengetahui informasi selengkapnya, lihat
Mengatur Properti di Objek ContentInfo.
Contoh
Contoh kode berikut menunjukkan cara membuat sink media untuk sumber ASF. Contoh ini menyalin pengaturan konfigurasi aliran dari sumber ke objek ContentInfo yang mewakili objek header ASF dari file 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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 R2 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wmcontainer.h |
Pustaka | Mf.lib |
DLL | Mf.dll |