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


Функция DeleteMediaType

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

Функция DeleteMediaType удаляет выделенную AM_MEDIA_TYPE структуру, включая блок форматирования.

Синтаксис

void WINAPI DeleteMediaType(
   AM_MEDIA_TYPE *pmt
);

Параметры

Pmt

Указатель на структуру AM_MEDIA_TYPE .

Возвращаемое значение

Эта функция не возвращает значение.

Комментарии

Эта функция позволяет освободить любую структуру типов мультимедиа, выделенную с помощью CoTaskMemAlloc или CreateMediaType.

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

// Release the format block for a media type.

void _FreeMediaType(AM_MEDIA_TYPE& mt)
{
    if (mt.cbFormat != 0)
    {
        CoTaskMemFree((PVOID)mt.pbFormat);
        mt.cbFormat = 0;
        mt.pbFormat = NULL;
    }
    if (mt.pUnk != NULL)
    {
        // pUnk should not be used.
        mt.pUnk->Release();
        mt.pUnk = NULL;
    }
}


// Delete a media type structure that was allocated on the heap.
void _DeleteMediaType(AM_MEDIA_TYPE *pmt)
{
    if (pmt != NULL)
    {
        _FreeMediaType(*pmt); 
        CoTaskMemFree(pmt);
    }
}

Требования

Требование Значение
Заголовок
Mtype.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)

См. также раздел

FreeMediaType

Функции типов мультимедиа