Есть устройство, состоящее из лаз.указок (веерные, 4шт) и аналог.камеры.
В некоторые моменты включаются указки, но несинхронно с камерой.
Получаю вот такой поток: animated GIF
Во первых, это означает, что поток interlace?
Во-вторых, как мне собрать эти картинки в цельные кадры? Объясните пожалуста где это более менее подробно написано, я читал DShowSDK, но не нашел подробного примера.
Здравствуйте, cy47, Вы писали:
C>Есть устройство, состоящее из лаз.указок (веерные, 4шт) и аналог.камеры. C>В некоторые моменты включаются указки, но несинхронно с камерой. C>Получаю вот такой поток: C> C>animated GIF
C>Во первых, это означает, что поток interlace? C>Во-вторых, как мне собрать эти картинки в цельные кадры? Объясните пожалуста где это более менее подробно написано, я читал DShowSDK, но не нашел подробного примера.
Здравствуйте, cy47, Вы писали:
C>Есть устройство, состоящее из лаз.указок (веерные, 4шт) и аналог.камеры. C>В некоторые моменты включаются указки, но несинхронно с камерой. C>Получаю вот такой поток: C> C>animated GIF
C>Во первых, это означает, что поток interlace? C>Во-вторых, как мне собрать эти картинки в цельные кадры? Объясните пожалуста где это более менее подробно написано, я читал DShowSDK, но не нашел подробного примера.
interlace, значит, что кадр разбивается на строки (четные и нечетные). И скорее всего к тебе в потоке идут строки.
Длина строки = (кол-во байт на пиксель) * ширина;
Как тебе приходят эти картинки? Может в одной содержатся четные, а в другой нечетные строки.
Мало инф....
Здравствуйте, Виктор, Вы писали:
В>interlace, значит, что кадр разбивается на строки (четные и нечетные). И скорее всего к тебе в потоке идут строки. В>Длина строки = (кол-во байт на пиксель) * ширина; В>Как тебе приходят эти картинки? Может в одной содержатся четные, а в другой нечетные строки. В>Мало инф....
Вот граф:
CaptureDevice --> SampleGrabber --> VideoRenderer
RGB |
|
в функции SampleCB получаю
интерфейс IMediaSample, который
несет картинки как я привел.
RGB 768х576
C>CaptureDevice --> SampleGrabber --> VideoRenderer
C> RGB |
C> |
C> в функции SampleCB получаю
C> интерфейс IMediaSample, который
C> несет картинки как я привел.
C> RGB 768х576
C>
Все сэмплы, которые придут на SampleGrabber, это и есть фреймы (рисунки, кадры). В каждом медиасампле будет содержаться по одному фрейму.
А что теперь вы хотите?
Здравствуйте, Виктор, Вы писали:
В>Все сэмплы, которые придут на SampleGrabber, это и есть фреймы (рисунки, кадры). В каждом медиасампле будет содержаться по одному фрейму. В>А что теперь вы хотите?
Я не понимаю логику работы драйвера. Т.е. не пойму как переслиять фреймы IMediaSample чтобы небыло этих лестниц. (Как пример посмотрите как телевизор делает слияние, для этого надо перед экраном потрясти пальцем например)
Здравствуйте, cy47, Вы писали:
C>Я не понимаю логику работы драйвера. Т.е. не пойму как переслиять фреймы IMediaSample чтобы небыло этих лестниц. (Как пример посмотрите как телевизор делает слияние, для этого надо перед экраном потрясти пальцем например)
Думаю здесь причина не в "логике драйвера".А по-русски говоря чтобы у вас не было "лестниц" или так называемой "гребёнки", вам необходимо сделать Deinterlacing изображения.Например,думаю, что можно между граббером и рендером поставить ffdshow video decoder, но при этом в настройках этого фильтра включить галочку "Deinterlacing", а если у вас там русский шрифт, то название тоже "Деинтерлейс".
Короче (типа P.S.), вам необходимо сделать деинтерлейс изображения, если я вас правильно понял..
Здравствуйте, Виктор, Вы писали:
В>Здравствуйте, cy47, Вы писали:
C>>Я не понимаю логику работы драйвера. Т.е. не пойму как переслиять фреймы IMediaSample чтобы небыло этих лестниц. (Как пример посмотрите как телевизор делает слияние, для этого надо перед экраном потрясти пальцем например)
В>Думаю здесь причина не в "логике драйвера".А по-русски говоря чтобы у вас не было "лестниц" или так называемой "гребёнки", вам необходимо сделать Deinterlacing изображения.Например,думаю, что можно между граббером и рендером поставить ffdshow video decoder, но при этом в настройках этого фильтра включить галочку "Deinterlacing", а если у вас там русский шрифт, то название тоже "Деинтерлейс".
В>Короче (типа P.S.), вам необходимо сделать деинтерлейс изображения, если я вас правильно понял..
Ладно, спасибо за совет, тепрь буду искать как этот деинтерлейс сделать самому.