Настройка индексатора

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Индексатор можно настроить перед его использованием для индексирования ASF-файла. Каждый поток в файле можно настроить отдельно или задать одинаковую конфигурацию для всех потоков.

Если вы настраиваете несколько пар для индексирования в файле, необходимо настроить их все, а затем начать индексирование. Если настроить и индексировать поток, а затем настроить другой поток в том же файле, запуск индексатора снова приведет к удалению первого индекса. Это должно соответствовать формату файла ASF.

В следующем коде показано, как настроить индексатор. В коде предполагается, что индексаемый файл содержит два потока: первый — это аудиопоток, который индексировать не требуется, а второй — видеопоток. В этом коде показано, как настроить индексатор. Чтобы индексировать файл, необходимо выполнить действия, описанные в разделе Индексирование 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;

Примечание

Тип индекса по умолчанию — WMT_IT_NEAREST_CLEAN_POINT. Хотя вы можете задать для типа индекса другие значения, это приведет к снижению производительности поиска.

 

IWMIndexer2::Configure

Индексирование ФАЙЛА ASF

WMCreateIndexer

Работа с индексами