![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DirectShow [D5, Win95/98]
miamy © (2001-11-04 15:40:00)Помогите, пожалуйста, в решении следующего вопроса:
Есть видеокарта ATI Rage 128 Fury Pro (Video In), с которой делаю видеозахват (используется DirectX 8.0). Вручную создаю связку фильтров
Video Capture->AVI Decompressor->Color Space Converter->Sample Grabber->AVI Compressor->AVI Mux->File Writer
(вручную потому, что если рендерить Capture Pin этой карты, потом не подключается Sample Grabber). Все работает, пишется и видеофильм, и отдельные кадры, НО только в виде 256 градаций черного, а мне нужно хотя бы 16 бит (используется глубина цвета монитора 16 или 32 бит).
Sample Grabber инициализирую так:
mt: TAM_Media_Type;
.........
FillChar(mt, sizeof(mt), 0);
mt.majortype:= MEDIATYPE_Video;
mt.formattype:= FORMAT_VideoInfo;
mt.subtype:= MEDIASUBTYPE_aRGB32; //если не использовать Color Space Converter, проходит MEDIASUBTYPE_RGB565
mt.bFixedSizeSamples:=true;
mt.bTemporalCompression:=false;
mt.lSampleSize:=0;
hr:=Grabber.SetMediaType(mt);
Пробовал добавить строки
pmt: PAM_MEDIA_TYPE;
..............
Builder.FindInterface( @PIN_CATEGORY_CAPTURE, @MEDIATYPE_Video,
VidCapt, IID_IAMStreamConfig, VStreamConf);
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biBitCount:=32;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biPlanes:=1;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biXPelsPerMeter:=0;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biYPelsPerMeter:=0;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biClrUsed:=0;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biClrImportant:=0;
VStreamConf.SetFormat(pmt^);
но это ничего не дало.
При этом на Preview Pin отличная картинка. При использовании Smart Tee на Capture Pin - те же 256 градаций :(((
Подозреваю, что нужно прописать еще что-то для фильтров Video Capture или AVI Decompressor, но что и где?
Буду благодарен за любую помощь.
С уважением
Вадим
PGM (2001-11-05 22:08:00) [1]А пробовал строить граф в GraphEdt с выводом через Video Renderer?
Там то получается?