Поделиться через


Создание объекта разделитировщика ASF

Объект разделителя ASF — это объект слоя WMContainer, который анализирует объект данных ASF файла расширенного формата систем (ASF). Чтобы создать новый экземпляр объекта разделения ASF, вызовите функцию MFCreateASFSplitter . Эта функция возвращает указатель на интерфейс IMFASFSplitter , представляющий пустой объект разделителя.

Прежде чем разделитель сможет начать синтаксический анализ, приложение должно инициализировать разделитель с помощью сведений из объекта заголовка ASF. Чтобы инициализировать разделитель, вызовите метод IMFASFSplitter::Initialize . Этот метод принимает указатель на объект ASF ContentInfo , содержащий сведения о заголовке ФАЙЛА ASF для анализа. Приложение должно инициализировать объект ContentInfo перед его передачей в разделитель, чтобы характеристики файла мультимедиа были известны приложению. Метод инициализации разделения извлекает сведения о потоке из объекта ContentInfo, например номера потоков, чтобы разделитель может анализировать пакеты данных.

Пример

В следующем примере кода показано, как создать разделитель и инициализировать его с помощью существующего объекта ContentInfo.

// Create and initialize the ASF splitter.

HRESULT CreateASFSplitter (IMFASFContentInfo* pContentInfo, 
    IMFASFSplitter** ppSplitter)
{
    IMFASFSplitter *pSplitter = NULL;

    // Create the splitter object.
    HRESULT hr = MFCreateASFSplitter(&pSplitter);

    // Initialize the splitter to work with specific ASF data.
    if (SUCCEEDED(hr))
    {
        hr = pSplitter->Initialize(pContentInfo);
    }
    if (SUCCEEDED(hr))
    {
        // Return the object to the caller.
        *ppSplitter = pSplitter;
        (*ppSplitter)->AddRef();
    }
    SafeRelease(&pSplitter);
    return hr;
}

Примечание

В этом примере функция SafeRelease используется для освобождения указателей интерфейса.

 

Разделитель ASF