Per configurare l'indicizzatore

[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita dal lettore di origine e dal writer sink. Lettore di origine e writer sink sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi lettore di origine e writer sink anziché Windows Media Format 11 SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

È possibile configurare l'indicizzatore prima di usarlo per indicizzare un file ASF. Ogni flusso nel file può essere configurato separatamente oppure è possibile impostare la stessa configurazione per tutti i flussi.

Se si configurano più vapore per l'indicizzazione in un file, è necessario configurarli tutti e quindi iniziare l'indicizzazione. Se si configura e indicizza un flusso e quindi si configura un altro flusso nello stesso file, l'avvio dell'indicizzatore eliminerà nuovamente il primo indice. Questo è conforme al formato di file ASF.

Nel codice seguente viene illustrato come configurare l'indicizzatore. Il codice presuppone che il file da indicizzare abbia due flussi: il primo è un flusso audio che non deve essere indicizzato e il secondo è un flusso video. Questo codice illustra solo come configurare l'indicizzatore. Per indicizzare un file, è necessario seguire la procedura descritta in Per indicizzare un file ASF.

IWMIndexer*  pBaseIndexer = NULL;
IWMIndexer2* pMyIndexer   = NULL;

DWORD          dwInterval;
HRESULT hr = S_OK;

// Initialize COM.
hr = CoInitialize(NULL);

// Create an indexer.
hr = WMCreateIndexer(&pBaseIndexer);

// Retrieve an IWMIndexer2 interface pointer for the indexer just created.
hr = pBaseIndexer->QueryInterface(IID_IWMIndexer2, (void**)&pMyIndexer);

// Release the base indexer.
pBaseIndexer->Release();
pBaseIndexer = NULL;

// Set the index interval to 5 frames.
dwInterval = 5;

// Configure the indexer to create a frame-based index.
hr = pMyIndexer->Configure(2,                    // Stream Number.
                           WMT_IT_FRAME_NUMBERS, // Indexer type.
                           (void *)&dwInterval,  // Index interval.
                           NULL;        // Index type, use default.

// TODO: Index the file. See To Index an ASF File.

// Release the remaining interface.
pMyIndexer->Release();
pMyIndexer = NULL;

Nota

Il tipo di indice predefinito è WMT_IT_NEAREST_CLEAN_POINT. Anche se è possibile impostare il tipo di indice su altri valori, in questo modo si riducono le prestazioni.

 

IWMIndexer2::Configure

Per indicizzare un file ASF

WMCreateIndexer

Operazioni con gli indici