Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Управление платой видеозахвата [D7, Win2k, WinXP]


joseph ©   (2006-12-27 11:19:00) 

Здравствуйте, уважаемые коллеги.

Прошу помочь новичку в области видеозахвата.

Для одного приложения, которое я пишу, требуется вывод на экран, а затем запись в файл одним блоком одного кадра  изображений с четырех видеокамер.

Есть четырехвходовая плата на чипе Bt878. Для видеозахвата я использую DSPack (аналог примера PlayVideoCap из дистрибутива).

Переключение входов пытаюсь делать с помощью метода Route интерфейса IAMCrossBar.

procedure TVideoForm.SampleGrabberBuffer(sender: TObject;
 SampleTime: Double; pBuffer: Pointer; BufferLen: Integer);
var
 Image: TImage;

begin
 case DeviceNo of
   0: Image := Image1;
   1: Image := Image2;
   2: Image := Image3;
   3: Image := Image4;
 end;

 Image.Canvas.Lock;
 try
   SampleGrabber.GetBitmap(Image.Picture.Bitmap, pBuffer, BufferLen);
 finally
   Image.Canvas.Unlock;
 end;

 Inc(DeviceNo); if DeviceNo > 3 then DeviceNo := 0;

 amcbTest.Route(0, DeviceNo);
end;

Каналы действительно выводятся каждый в свой Image, но выглядят как кадры телевизора
с неисправной кадровой синхронизацией: то посредине кадра какая-то полоса, то часть
изображения одного канала попадает в окно другого и т.п.

Наверное событие OnBuffer надо как-то синхронизовать с переключением? Или я вообще иду по неверному пути?

Помогите, пожалуйста разобраться с происходящим!

Заранее благодарен,

                                  Иосиф Рисенберг


joseph   (2006-12-29 00:33:00) [1]

Большое спасибо, коллеги!

Оказалось достаточным просто пропустить один кадр. С синхронизацией камер обязательно попробую.


Sapersky   (2006-12-28 12:34:00) [2]

Если есть возможность - лучше синхронизировать камеры (общий FPS будет выше). См. в инструкции словосочетания line-lock (от сети) и gen-lock (друг от друга).


medved_68   (2006-12-28 09:40:00) [3]


> Каналы действительно выводятся каждый в свой Image, но выглядят
> как кадры телевизора
> с неисправной кадровой синхронизацией: то посредине кадра
> какая-то полоса, то часть
> изображения одного канала попадает в окно другого и т.п.
>

josephпосле переключения входа на другой канал необходимо для "устаканивания" изображения перед захватом кадра сделать паузу примерно 280 мс. Или же пропустить два кадра и захватить в Имадже 3. :)))


Наверх

Титульная страница Поиск, карта сайта Написать письмо