Метод IAMStreamConfig::GetStreamCaps (strmif.h)
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Метод GetStreamCaps извлекает набор возможностей форматирования.
Синтаксис
HRESULT GetStreamCaps(
[in] int iIndex,
[out] AM_MEDIA_TYPE **ppmt,
[out] BYTE *pSCC
);
Параметры
[in] iIndex
Указывает возможность извлечения формата, индексированного с нуля. Чтобы определить количество возможностей, поддерживаемых контактом, вызовите метод IAMStreamConfig::GetNumberOfCapabilities .
[out] ppmt
Адрес указателя на структуру AM_MEDIA_TYPE . Метод выделяет структуру и заполняет ее типом носителя.
[out] pSCC
Указатель на массив байтов, выделенный вызывающим объектом. Для видео используйте структуру VIDEO_STREAM_CONFIG_CAPS (см. примечания). Для звука используйте структуру AUDIO_STREAM_CONFIG_CAPS . Чтобы определить требуемый размер массива, вызовите метод GetNumberOfCapabilities . Размер возвращается в параметре piSize .
Возвращаемое значение
Возвращает значение HRESULT . Ниже приведены возможные значения.
Код возврата | Описание |
---|---|
|
Указан слишком высокий индекс. |
|
Успешно. |
|
Недопустимый индекс. |
|
Недостаточно памяти. |
|
Значение указателя NULL . |
|
Контакт ввода не подключен. |
Комментарии
Этот метод возвращает два элемента информации:
- Параметр pmt получает заполненную AM_MEDIA_TYPE структуру, которая описывает один поддерживаемый формат выходных данных.
- Параметр pSCC получает структуру, содержащую дополнительные сведения о формате. Для видео pSCC получает VIDEO_STREAM_CONFIG_CAPS структуру. Для звука он получает AUDIO_STREAM_CONFIG_CAPS структуру.
Перед вызовом SetFormat можно изменить структуру AM_MEDIA_TYPE в pmt, используя сведения в pSCC. Например, аудио пин-код может возвращать тип мультимедиа по умолчанию 16-разрядной стереосистемы 44 кГц в параметре pmt . В зависимости от значений, возвращенных в AUDIO_STREAM_CONFIG_CAPS структуре, этот формат можно изменить на 8-разрядный моно перед вызовом SetFormat.
Метод выделяет память для структуры AM_MEDIA_TYPE , возвращаемой в параметре pmt . Вызывающий объект должен освободить память, включая блок форматирования. Вспомогательную функцию DeleteMediaType можно использовать в библиотеке базовых классов. Вызывающий объект должен выделить память для параметра pSCC .
В некоторых фильтрах сжатия этот метод завершается ошибкой, если входной контакт фильтра не подключен.
Разработчики фильтров. Дополнительные сведения о реализации этого метода см. в разделе Предоставление форматов захвата и сжатия.
Примеры
В следующем примере извлекается первый поддерживаемый формат (нуль индекса) на выводе видео, а затем устанавливается этот формат для контакта.
C++ |
---|
int iCount, iSize; BYTE *pSCC = NULL; AM_MEDIA_TYPE *pmt; |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | strmif.h (включая Dshow.h) |
Библиотека | Strmiids.lib |