| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > DirectShow: как правильно написать входной Pin? |
| Автор: Dims 6.1.2010, 23:16 | ||
Из фильтра Dumb примера я вижу, что должна быть переопределена функция
Внутри этой функции я заполняю посланный мне объект pMediaType, чтобы сообщить, какие типы я готов принять. Однако, я заполняю его не полностью и у меня возникает ошибка -- графбильдер не может подобрать цепочку фильтров для преобразования. Что, разве нельзя заполнить структуру не полностью? Я обязан указать все параметры? Я хочу принимать любой формат FORMAT_WaveFormatEx. Мне что, всё равно надо все поля структуры WAVEFORMATEX заполнять? Добавлено через 13 минут и 24 секунды Вроде бы, теперь формат задал точно, а соединения не происходит. Может, ещё какие-то условия есть? |
| Автор: AndreySol 11.1.2010, 08:20 |
| Ну вообще-то принимаемые пином типы данных задаются в методе CheckMediaType. Вот пример: HRESULT CPsiParserInputPin::CheckMediaType(const CMediaType *pMediaType) { if( *(pMediaType->Type()) == MY_MEDIATYPE_MPEG2_SECTIONS || *(pMediaType->Type()) == MEDIATYPE_MPEG2PSI) { return S_OK; } return VFW_E_INVALIDMEDIATYPE; } // CheckMediaType А метод GetMediaType скорее всего "информациионного" типа. |