Bagikan melalui


Pembuatan dan Konfigurasi Pengindeks

Pengindeks ASF adalah komponen lapisan WMContainer yang digunakan untuk membaca atau menulis Objek Indeks dalam file Format Sistem Tingkat Lanjut (ASF). Topik ini menyediakan informasi tentang membuat objek pengindeks default yang disediakan oleh Media Foundation.

Untuk informasi tentang struktur file ASF, lihat Struktur File ASF.

Untuk membuat dan menginisialisasi pengindeks ASF

  1. Panggil fungsi MFCreateASFIndexer untuk menerima penunjuk IMFASFIndexer ke objek pengindeks.

  2. Panggil IMFASFIndexer::SetFlags untuk menentukan mode baca atau tulis untuk objek pengindeks. Secara default, pengindeks dikonfigurasi untuk pencarian maju.

    Gunakan Bendera
    Membaca (pencarian penerusan) Nol (default)
    Membaca (pencarian terbalik) MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK
    Menulis MFASF_INDEXER_WRITE_NEW_INDEX

     

    Catatan

    Instans pengindeks yang sama tidak dapat digunakan untuk membaca dan menulis. Anda harus mengonfigurasi pengindeks untuk satu atau yang lain.

     

  3. Panggil IMFASFIndexer::Initialize untuk menginisialisasi pengindeks dengan menentukan penunjuk IMFASFContentInfo dari objek ContentInfo yang menjelaskan file yang akan ditulis atau dibaca. Objek ContentInfo berisi informasi yang merupakan Objek Header ASF. Objek pengindeks memerlukan objek ContentInfo yang valid sebelum menghasilkan atau membaca entri indeks file ASF.

Contoh kode berikut menunjukkan bagaimana aplikasi dapat membuat dan menginisialisasi objek pengindeks untuk bekerja dengan konten ASF tertentu. Objek ContentInfo mewakili Objek Header ASF; konten diteruskan sebagai aliran byte.

HRESULT CreateASFIndexer(
    IMFASFContentInfo* pContentInfo, 
    DWORD dwFlags,
    IMFASFIndexer** ppIndexer
    )
{
    *ppIndexer = NULL;

    IMFASFIndexer *pIndexer = NULL;

    HRESULT hr = MFCreateASFIndexer(&pIndexer);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pIndexer->SetFlags(dwFlags);
    if (FAILED(hr))
    {
        goto done;
    }

    hr =  pIndexer->Initialize(pContentInfo);
    if (FAILED(hr))
    {
        goto done;
    }

    // Return the object to the caller.
    *ppIndexer = pIndexer;
    (*ppIndexer)->AddRef();

done:
    // Clean up.
    SafeRelease(&pIndexer);
    return hr;
}

Pengindeks ASF

Menggunakan Pengindeks untuk Mencari Dalam File ASF

Menggunakan Pengindeks untuk Menulis Indeks Baru