Bagikan melalui


Untuk Mengidentifikasi Input Berdasarkan Angka

[Fitur yang terkait dengan halaman ini, Windows Media Format 11 SDK, adalah fitur warisan. Ini telah digantikan oleh Pembaca Sumber dan Penulis Sink. Pembaca Sumber dan Penulis Sink telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan Pembaca Sumber dan Penulis Sink 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.]

Setiap sampel yang Anda berikan ke penulis harus dikaitkan dengan nomor input. Setiap nomor input sesuai dengan satu atau beberapa aliran di profil yang digunakan penulis untuk menulis file. Di profil, sumber media diidentifikasi dengan nama koneksi. Penulis mengaitkan nomor input dengan setiap nama koneksi saat Anda mengatur profil untuk penulis. Sebelum Anda dapat meneruskan sampel ke penulis, Anda harus menentukan data apa yang diharapkan setiap input. Anda tidak dapat berasumsi bahwa input akan berada dalam urutan yang sama dengan aliran di profil, bahkan jika ini sering terjadi. Oleh karena itu, satu-satunya cara yang dapat diandalkan untuk mencocokkan input dengan aliran adalah dengan membandingkan nama koneksi input dengan nama koneksi aliran.

Untuk mengidentifikasi nama koneksi dan nomor input yang sesuai untuk profil yang dimuat, lakukan langkah-langkah berikut:

  1. Buat objek penulis dan atur profil yang akan digunakan. Untuk informasi selengkapnya tentang mengatur profil di penulis, lihat Menggunakan Profil dengan Penulis. Anda harus mengetahui nama koneksi yang digunakan untuk aliran di profil. Anda bisa mendapatkan nama koneksi dari dalam profil dengan mendapatkan objek konfigurasi aliran untuk setiap aliran dan memanggil IWMStreamConfig::GetConnectionName. Untuk informasi selengkapnya tentang profil dan objek konfigurasi aliran, lihat Bekerja dengan Profil.
  2. Ambil jumlah total input dengan memanggil IWMWriter::GetInputCount.
  3. Ulangi semua input, lakukan langkah-langkah berikut untuk masing-masing input.

Contoh kode berikut menampilkan nama koneksi untuk setiap input. Untuk informasi selengkapnya tentang menggunakan kode ini, lihat Menggunakan Contoh Kode.

HRESULT GetNamesForInputs(IWMWriter* pWriter)
{
    DWORD    cInputs  = 0;
    HRESULT  hr       = S_OK;
    WCHAR*   pwszName = NULL;
    WORD     cchName  = 0;

    IWMInputMediaProps* pProps = NULL;

    // Get the total number of inputs for the file.
    hr = pWriter->GetInputCount(&cInputs);
    GOTO_EXIT_IF_FAILED(hr);

    // Loop through all supported inputs.
    for (DWORD inputIndex = 0; inputIndex < cInputs; inputIndex++)
    {
        // Get the input properties for the input.
        hr = pWriter->GetInputProps(inputIndex, &pProps);  
        GOTO_EXIT_IF_FAILED(hr);

        // Get the size of the connection name.
        hr = pProps->GetConnectionName(0, &cchName);
        GOTO_EXIT_IF_FAILED(hr);

        if (cchName > 0)
        {
            // Allocate memory for the connection name.
            pwszName = new WCHAR[cchName];
            if (wszName == NULL)
            {
                hr = E_OUTOFMEMORY;
                goto Exit;
            }

            // Get the connection name.
            hr = pProps->GetConnectionName(pwszName, &cchName);
            GOTO_EXIT_IF_FAILED(hr);
            
            // Display the name.
            printf("Input # %d = %S\n", pwszName);
        } // end if

        // Clean up for next iteration.
        SAFE_ARRAY_DELETE(pwszName);
        SAFE_RELEASE(pProps);
    } // end for inputIndex

Exit:
    SAFE_ARRAY_DELETE(pwszName);
    SAFE_RELEASE(pProps);
    return hr;
}

Antarmuka IWMWriter

Menulis File ASF