DeleteMediaType 函数

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

DeleteMediaType 函数删除分配的AM_MEDIA_TYPE结构,包括格式块。

语法

void WINAPI DeleteMediaType(
   AM_MEDIA_TYPE *pmt
);

参数

Pmt

指向 AM_MEDIA_TYPE 结构的指针。

返回值

此函数不返回值。

注解

使用此函数可释放使用 CoTaskMemAllocCreateMediaType 分配的任何媒体类型结构。

此函数在 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

媒体类型函数