M>Нужно всего лишь обернуть свой callback в DirectShow source-фильтр.
Спасибо, я в общем-то тоже склоняюсь к этому решению. По крайней мере не придётся лезть в алгоритмы.
А ткните меня носом пожалуйста в простой примерчик.
Единственные более-менее несложные примерчики, которые я нашёл, вот эти:
http://www.codeproject.com/KB/audio-video/VideoImageGrabber.aspx
http://www.codeproject.com/KB/directx/Paint_your_source_filter.aspx
Я в правильном направлении копаю?
В примерах DirectShow SDK как-то туманно всё...
Где-то в коде мне надо будет вставить вот такую штуку:
---
The following example describes how to set the various fields to describe grayscale 16-bit data in which only the lower 10 bits are to be used:
LGRYVIDEOINFO info; /* warning: do not put this on stack, as it is very large */
info.bmiHeader.biSize = sizeof(LGRYINFOHEADER);
info.bmiHeader.biWidth = VideoWidth;
info.bmiHeader.biHeight = VideoHeight; /* should be positive for normal (unflipped video) */
info.bmiHeader.biPlanes = 1;
info.bmiHeader.biBitCount = 16; /* I have 16 bits per pixel, although only the lower 10 bits contain useful data */
info.bmiHeader.biCompression = mmioFOURCC('L','G','R','Y');
info.bmiHeader.biSizeImage = (((VideoWidth * 2) + 3) & ~3) * VideoHeight;
info.bmiHeader.biClrUsed = 0; /* there is no LUT */
info.bmiHeader.biClrImportant = 0; /* not used right now. Set this value to 0 */
/* Fields specific only to the LGRY format */
info.bmiHeader.biLowBit = 0; /* low bit for the pixel data (0 <= biLowBit <= biHighBit <= biBitCount-1) */
info.bmiHeader.biHighBit = 9; /* 10-1 = 9. high bit for pixel data. */
info.bmiHeader.biFlags = LGRY_BITRANGE_VALID; /* only biLowBit and biHighBit are valid */
---
Андрей.
Здравствуйте, Андрей Дмитриев, Вы писали:
АД>А ткните меня носом пожалуйста в простой примерчик.
АД>Единственные более-менее несложные примерчики, которые я нашёл, вот эти:
АД>http://www.codeproject.com/KB/audio-video/VideoImageGrabber.aspx
АД>http://www.codeproject.com/KB/directx/Paint_your_source_filter.aspx
АД>Я в правильном направлении копаю?
Первая ссылка — это renderer, т.е. не совсем в тему, а вторая вроде бы то что надо.
АД>В примерах DirectShow SDK как-то туманно всё...
В примерах из SDK есть достаточно простой source-фильтр Ball, его стоит посмотреть.
Ну и MSDN курить, если что-то не ясно, там все описано подробно.