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


Метод IAMVideoCompression::GetInfo (strmif.h)

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

Метод GetInfo извлекает сведения о свойствах сжатия фильтра, включая возможности и значения по умолчанию.

Синтаксис

HRESULT GetInfo(
  [out]     LPWSTR pszVersion,
  [in, out] int    *pcbVersion,
  [out]     LPWSTR pszDescription,
  [in, out] int    *pcbDescription,
  [out]     long   *pDefaultKeyFrameRate,
  [out]     long   *pDefaultPFramesPerKey,
  [out]     double *pDefaultQuality,
  [out]     long   *pCapabilities
);

Параметры

[out] pszVersion

Указатель на буфер, который получает строку версии, например "Версия 2.1.0".

[in, out] pcbVersion

Получает размер строки версии в байтах.

[out] pszDescription

Указатель на буфер, который получает строку описания, например "Мой видеокомпрессор".

[in, out] pcbDescription

Получает размер строки описания в байтах.

[out] pDefaultKeyFrameRate

Получает частоту ключевых кадров по умолчанию.

[out] pDefaultPFramesPerKey

Получает частоту прогнозируемых кадров (P) на ключевой кадр по умолчанию.

[out] pDefaultQuality

Получает качество по умолчанию.

[out] pCapabilities

Получает возможности сжатия в виде побитового сочетания нулевых или нескольких флагов CompressionCaps .

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

Возвращает значение HRESULT .

Комментарии

Любой из перечисленных параметров может иметь значение NULL, и в этом случае метод игнорирует этот параметр.

Приложение должно выделить буферы для строк версии и описания. Чтобы определить требуемый размер буферов, вызовите этот метод со значением NULL для параметров pszVersion и pszDescription . Используйте значения, возвращаемые в pcbVersion и pcbDescription , чтобы выделить буферы, а затем снова вызвать метод, как показано в следующем коде:

C++
// Get the size of the version and description strings, in bytes.
int cbVersion, cbDesc; 
hr = pCompress->GetInfo(NULL, &cbVersion, NULL, &cbDesc, 
    NULL, NULL, NULL, NULL);
if (SUCCEEDED(hr))
{
    // Allocate the buffers.
    WCHAR *pszVersion = new WCHAR[cbVersion / sizeof(WCHAR)];  
    WCHAR *pszDesc = new WCHAR[cbDesc / sizeof(WCHAR)];

    // Now query for the strings.
    hr = pCompress->GetInfo(pszVersion, &cbVersion, pszDesc, &cbDesc, 
        NULL, NULL, NULL, NULL);
    }
    delete [] pszVersion;
    delete [] pszDesc;
}
Обратите внимание, что строки являются строками расширенных символов, а возвращаемые размеры — в байтах, а не в количестве символов. Кроме того, одна или обе строки могут иметь нулевую длину.

Параметр pCapabilities получает набор флагов, указывающих, какие свойства сжатия поддерживаются, и, таким образом, какие методы IAMVideoCompression поддерживаются. Например, если возвращается флаг CompressionCaps_CanKeyFrame , фильтр поддерживает методы IAMVideoCompression::get_KeyFrameRate и IAMVideoCompression::p ut_KeyFrameRate .

Остальные параметры получают значения по умолчанию для свойств сжатия. Для неподдерживаемых свойств (как определено флагами, возвращаемыми в pCapabilities) следует игнорировать соответствующее значение по умолчанию, так как оно может быть неправильным или значимым.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

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

Коды ошибок и успешности

Интерфейс IAMVideoCompression