Bagikan melalui


Untuk Mendekode Audio ke S/PDIF

[Fitur yang terkait dengan halaman ini, Windows Media Format 11 SDK , adalah fitur warisan. Ini telah digantikan oleh Pembaca Sumber dan Penulis Aliran. Pembaca Sumber dan Penulis Sink telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan Pembaca Sumber dan Sink Writer alih-alih Windows Media Format 11 SDK , jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Audio yang dikodekan dengan codec Windows Media Audio 9 Professional dapat didekodekan ke Format Interkoneksi Digital Sony/Philips (S/PDIF). Untuk menghasilkan output S/PDIF, lakukan langkah-langkah berikut:

  1. Buka file yang berisi aliran Windows Media Audio 9 Professional dengan memanggil metode IWMReader::Open.
  2. Identifikasi jumlah output aliran yang Anda inginkan. Untuk informasi selengkapnya, lihat Untuk Mengidentifikasi Nomor Output.
  3. Panggil metode IWMReaderAdvanced2::SetOutputSetting untuk mengonfigurasi output S/PDIF. Gunakan g_wszEnableWMAProSPDIFOutput untuk nama pengaturan. Jenis data WMT_TYPE_BOOL; atur nilai ke TRUE untuk mengaktifkan output S/PDIF.
  4. Dapatkan antarmuka properti output (IWMOutputMediaProps) dari format output yang diinginkan dengan memanggil metodeIWMReader::GetOutputFormat. Untuk informasi selengkapnya tentang menghitung format output, lihat Menetapkan Format Output.
  5. Atur format output dengan memanggil metode IWMReader::SetOutputProps. Teruskan penunjuk ke antarmuka IWMOutputMediaProps yang diperoleh di langkah 4.
  6. Buat perubahan konfigurasi lain dan mulai pemutaran.

Nota

Anda dapat melakukan langkah-langkah sebelumnya pada pembaca sinkron dengan menggunakan metode yang sesuai dari antarmuka IWMSyncReader.

 

Contoh kode berikut menunjukkan cara mengatur aliran audio untuk menghasilkan audio sebagai data S/PDIF. Fungsi ini mengasumsikan bahwa file telah dimuat di pembaca dan bahwa nomor output telah diidentifikasi. Untuk informasi selengkapnya tentang menggunakan kode ini, lihat Menggunakan Contoh Kode.

HRESULT SetSPDIF(DWORD dwOutputNum, IWMReader* pReader)
{
    HRESULT hr = S_OK;

    IWMReaderAdvanced2*  pReaderAdv   = NULL;
    IWMOutputMediaProps* pOutputProps = NULL; 

    BOOL fValue = TRUE;

    // Get the advanced reader interface.
    hr = pReader->QueryInterface(IID_IWMReaderAdvanced2,
                                 (void**)&pReaderAdv);
    GOTO_EXIT_IF_FAILED(hr);

    // Set S/PDIF output.
    hr = pReaderAdv->SetOutputSetting(dwOutputNum, 
                                      g_wszEnableWMAProSPDIFOutput, 
                                      WMT_TYPE_BOOL, 
                                      (BYTE*)&fValue, 
                                      sizeof(BOOL));
    GOTO_EXIT_IF_FAILED(hr);

    // Get the first output format for the stream.
    // NOTE: You could also enumerate the available output formats
    // and pick one to use.

    hr = pReader->GetOutputFormat(dwOutputNum, 0, &pOutputProps);
    GOTO_EXIT_IF_FAILED(hr);

    // Set the output properties back on the reader.
    hr = pReader->SetOutputProps(dwOutputNum, pOutputProps);

Exit:
    SAFE_RELEASE(pReaderAdv);
    SAFE_RELEASE(pOutputProps);

    return hr;
}

Topik Tingkat Lanjut

Membaca File ASF

Antarmuka IWMReader

antarmuka IWMReaderAdvanced2

Antarmuka IWMSyncReader