Настройка драйвера tw68

415 views
Skip to first unread message

Сергей Голубцов

unread,
May 24, 2012, 8:27:44 AM5/24/12
to avreg-users
Всем доброго времени суток! Использую плату на 8 каналов с 2 чипами
TW6816. Плата куплена у китайцев на eBay и не похожа ни на одну из
описанных на avreg.net или где-либо ещё. После установки драйвера
видеозахват работает, но только с разрешением 320x240. Вопрос
следующий: разрешение видеозахвата устанавливается в драйвере или
достаточно поменять настройки в софте? Нужно ли указывать в драйвере
тип платы ('card =' или что-то ещё)?
Какие параметры драйвера tw68 должны быть изменены пользователем для
нормальной работы драйвера?
Заранее благодарю за любую помощь.
root@CCTVsrv:~# lspci
04:04.0 Multimedia video controller: Techwell Inc. Device 6810 (rev
10)
04:04.1 Multimedia video controller: Techwell Inc. Device 6811 (rev
10)
04:04.2 Multimedia video controller: Techwell Inc. Device 6812 (rev
10)
04:04.3 Multimedia video controller: Techwell Inc. Device 6813 (rev
10)
04:04.4 Multimedia controller: Techwell Inc. Device 6814 (rev 10)
04:04.5 Multimedia controller: Techwell Inc. Device 6815 (rev 10)
04:04.6 Multimedia controller: Techwell Inc. Device 6816 (rev 10)
04:04.7 Multimedia controller: Techwell Inc. Device 6817 (rev 10)
04:05.0 Multimedia video controller: Techwell Inc. Device 6810 (rev
10)
04:05.1 Multimedia video controller: Techwell Inc. Device 6811 (rev
10)
04:05.2 Multimedia video controller: Techwell Inc. Device 6812 (rev
10)
04:05.3 Multimedia video controller: Techwell Inc. Device 6813 (rev
10)
04:05.4 Multimedia controller: Techwell Inc. Device 6814 (rev 10)
04:05.5 Multimedia controller: Techwell Inc. Device 6815 (rev 10)
04:05.6 Multimedia controller: Techwell Inc. Device 6816 (rev 10)
04:05.7 Multimedia controller: Techwell Inc. Device 6817 (rev 10)

Andrey Nikitin

unread,
May 24, 2012, 8:40:12 AM5/24/12
to avreg...@googlegroups.com
Сергей Голубцов писал(а):
> Заранее благодарю за любую помощь.

v4l-info /dev/video0
для начала

vasvk vasvk

unread,
May 24, 2012, 1:09:34 PM5/24/12
to avreg-users
У вас платы на PCI или на PCI-express шине?
Вот только недавно испытал подобное на шине PCI чип tw6816 плата на 8
видеовходов. На "родном" разрешениии 704x576 (как впрочем и на
640х480) больше чем 4 видеовхода не работают без полос и зеленых
артефактов.
Значит вывод - упираемся в ширину канала обычной PCI-шины и
взаимодействие чипа с данным типом шины (точнее суммарный FPS от всех
камер через чип на шину).
Правда сейчас я подключаю и настраиваю аналоговые видеокамеры на
платах PCI-e tw6805 (4 чипа, 16 видеовходов) и уже готов подтвердить
что уже навешаны 14 видеокамер и все они прекрасно работают на
максимальном разрешении.
На очереди запуск 2-ой такой-же видеоплаты и есть еще возможность
проверить "до-кучи" вместе с ними плату на bt878 чипах (4 чипа, 16
видеовходов)
На днях ждите ответ.

Сергей Голубцов

unread,
May 24, 2012, 3:33:54 PM5/24/12
to avreg-users
root@CCTVsrv:~# v4l-info /dev/video0

### v4l2 device info [/dev/video0] ###
general info
VIDIOC_QUERYCAP
driver : "tw68"
card : "GENERIC"
bus_info : "PCI:0000:04:04.0"
version : 0.0.8
capabilities : 0x5000011
[VIDEO_CAPTURE,VBI_CAPTURE,READWRITE,STREAMING]

standards
VIDIOC_ENUMSTD(0)
index : 0
id : 0xb000 [NTSC_M,NTSC_M_JP,?]
name : "NTSC"
frameperiod.numerator : 1001
frameperiod.denominator : 30000
framelines : 525
VIDIOC_ENUMSTD(1)
index : 1
id : 0x1000 [NTSC_M]
name : "NTSC-M"
frameperiod.numerator : 1001
frameperiod.denominator : 30000
framelines : 525
VIDIOC_ENUMSTD(2)
index : 2
id : 0x2000 [NTSC_M_JP]
name : "NTSC-M-JP"
frameperiod.numerator : 1001
frameperiod.denominator : 30000
framelines : 525
VIDIOC_ENUMSTD(3)
index : 3
id : 0x8000 [?]
name : "NTSC-M-KR"
frameperiod.numerator : 1001
frameperiod.denominator : 30000
framelines : 525
VIDIOC_ENUMSTD(4)
index : 4
id : 0x4000 [?]
name : "NTSC-443"
frameperiod.numerator : 1001
frameperiod.denominator : 30000
framelines : 525
VIDIOC_ENUMSTD(5)
index : 5
id : 0xff
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K]
name : "PAL"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(6)
index : 6
id : 0x7 [PAL_B,PAL_B1,PAL_G]
name : "PAL-BG"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(7)
index : 7
id : 0x8 [PAL_H]
name : "PAL-H"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(8)
index : 8
id : 0x10 [PAL_I]
name : "PAL-I"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(9)
index : 9
id : 0xe0 [PAL_D,PAL_D1,PAL_K]
name : "PAL-DK"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(10)
index : 10
id : 0x100 [PAL_M]
name : "PAL-M"
frameperiod.numerator : 1001
frameperiod.denominator : 30000
framelines : 525
VIDIOC_ENUMSTD(11)
index : 11
id : 0x200 [PAL_N]
name : "PAL-N"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(12)
index : 12
id : 0x400 [PAL_Nc]
name : "PAL-Nc"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(13)
index : 13
id : 0x800 [PAL_60]
name : "PAL-60"
frameperiod.numerator : 1001
frameperiod.denominator : 30000
framelines : 525
VIDIOC_ENUMSTD(14)
index : 14
id : 0xff0000
[SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
name : "SECAM"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(15)
index : 15
id : 0x10000 [SECAM_B]
name : "SECAM-B"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(16)
index : 16
id : 0x40000 [SECAM_G]
name : "SECAM-G"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(17)
index : 17
id : 0x80000 [SECAM_H]
name : "SECAM-H"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(18)
index : 18
id : 0x320000 [SECAM_D,SECAM_K,SECAM_K1]
name : "SECAM-DK"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(19)
index : 19
id : 0x400000 [SECAM_L]
name : "SECAM-L"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625
VIDIOC_ENUMSTD(20)
index : 20
id : 0x800000 [?ATSC_8_VSB]
name : "SECAM-Lc"
frameperiod.numerator : 1
frameperiod.denominator : 25
framelines : 625

inputs
VIDIOC_ENUMINPUT(0)
index : 0
name : "Composite1"
type : CAMERA
audioset : 1
tuner : 0
std : 0xffffff
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?
ATSC_8_VSB]
status : 0x100 [NO_H_LOCK]
VIDIOC_ENUMINPUT(1)
index : 1
name : "Composite2"
type : CAMERA
audioset : 1
tuner : 0
std : 0xffffff
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?
ATSC_8_VSB]
status : 0x0 []
VIDIOC_ENUMINPUT(2)
index : 2
name : "Composite3"
type : CAMERA
audioset : 1
tuner : 0
std : 0xffffff
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?
ATSC_8_VSB]
status : 0x0 []
VIDIOC_ENUMINPUT(3)
index : 3
name : "Composite4"
type : CAMERA
audioset : 1
tuner : 0
std : 0xffffff
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?
ATSC_8_VSB]
status : 0x0 []

video capture
VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
index : 0
type : VIDEO_CAPTURE
flags : 0
description : "15 bpp RGB, le"
pixelformat : 0x4f424752 [RGBO]
VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE)
index : 1
type : VIDEO_CAPTURE
flags : 0
description : "15 bpp RGB, be"
pixelformat : 0x51424752 [RGBQ]
VIDIOC_ENUM_FMT(2,VIDEO_CAPTURE)
index : 2
type : VIDEO_CAPTURE
flags : 0
description : "16 bpp RGB, le"
pixelformat : 0x50424752 [RGBP]
VIDIOC_ENUM_FMT(3,VIDEO_CAPTURE)
index : 3
type : VIDEO_CAPTURE
flags : 0
description : "16 bpp RGB, be"
pixelformat : 0x52424752 [RGBR]
VIDIOC_ENUM_FMT(4,VIDEO_CAPTURE)
index : 4
type : VIDEO_CAPTURE
flags : 0
description : "24 bpp RGB, le"
pixelformat : 0x33524742 [BGR3]
VIDIOC_ENUM_FMT(5,VIDEO_CAPTURE)
index : 5
type : VIDEO_CAPTURE
flags : 0
description : "24 bpp RGB, be"
pixelformat : 0x33424752 [RGB3]
VIDIOC_ENUM_FMT(6,VIDEO_CAPTURE)
index : 6
type : VIDEO_CAPTURE
flags : 0
description : "32 bpp RGB, le"
pixelformat : 0x34524742 [BGR4]
VIDIOC_ENUM_FMT(7,VIDEO_CAPTURE)
index : 7
type : VIDEO_CAPTURE
flags : 0
description : "32 bpp RGB, be"
pixelformat : 0x34424752 [RGB4]
VIDIOC_ENUM_FMT(8,VIDEO_CAPTURE)
index : 8
type : VIDEO_CAPTURE
flags : 0
description : "4:2:2 packed, YUYV"
pixelformat : 0x56595559 [YUYV]
VIDIOC_ENUM_FMT(9,VIDEO_CAPTURE)
index : 9
type : VIDEO_CAPTURE
flags : 0
description : "4:2:2 packed, UYVY"
pixelformat : 0x59565955 [UYVY]
VIDIOC_G_FMT(VIDEO_CAPTURE)
type : VIDEO_CAPTURE
fmt.pix.width : 720
fmt.pix.height : 576
fmt.pix.pixelformat : 0x33524742 [BGR3]
fmt.pix.field : INTERLACED
fmt.pix.bytesperline : 2160
fmt.pix.sizeimage : 1244160
fmt.pix.colorspace : SMPTE170M
fmt.pix.priv : 0

vbi capture
VIDIOC_G_FMT(VBI_CAPTURE): Invalid argument

controls
VIDIOC_QUERYCTRL(BASE+0)
id : 9963776
type : INTEGER
name : "Brightness"
minimum : -128
maximum : 127
step : 1
default_value : 20
flags : 0
VIDIOC_QUERYCTRL(BASE+1)
id : 9963777
type : INTEGER
name : "Contrast"
minimum : 0
maximum : 255
step : 1
default_value : 100
flags : 0
VIDIOC_QUERYCTRL(BASE+2)
id : 9963778
type : INTEGER
name : "Saturation"
minimum : 0
maximum : 255
step : 1
default_value : 128
flags : 0
VIDIOC_QUERYCTRL(BASE+3)
id : 9963779
type : INTEGER
name : "Hue"
minimum : -128
maximum : 127
step : 1
default_value : 0
flags : 0

### video4linux device info [/dev/video0] ###
general info
VIDIOCGCAP
name : "GENERIC"
type : 0x5 [CAPTURE,TELETEXT]
channels : 4
audios : 0
maxwidth : 720
maxheight : 480
minwidth : 48
minheight : 32

channels
VIDIOCGCHAN(0)
channel : 0
name : "Composite1"
tuners : 0
flags : 0x0 []
type : CAMERA
norm : 1
VIDIOCGCHAN(1)
channel : 1
name : "Composite2"
tuners : 0
flags : 0x0 []
type : CAMERA
norm : 1
VIDIOCGCHAN(2)
channel : 2
name : "Composite3"
tuners : 0
flags : 0x0 []
type : CAMERA
norm : 1
VIDIOCGCHAN(3)
channel : 3
name : "Composite4"
tuners : 0
flags : 0x0 []
type : CAMERA
norm : 1

tuner
ioctl VIDIOCGTUNER: Invalid argument

audio
VIDIOCGAUDIO
audio : 0
volume : 0
bass : 0
treble : 0

picture
VIDIOCGPICT
brightness : 32896
hue : 32896
colour : 32896
contrast : 32896
whiteness : 0
depth : 24
palette : RGB24

buffer
ioctl VIDIOCGFBUF: Invalid argument

window
VIDIOCGWIN
x : 0
y : 0
width : 720
height : 576
chromakey : 0
flags : 0

Сергей Голубцов

unread,
May 24, 2012, 3:44:13 PM5/24/12
to avreg-users
On 24 май, 21:09, vasvk vasvk <vasvk2...@gmail.com> wrote:
> У вас платы на PCI или на PCI-express шине?
На PCI. Вот такая плата -
http://www.ebay.com/itm/8CH-Audio-video-DVR-Card-200-240FPS-Digial-video-Capture-Card-CCTV-Security-/310362939872?pt=LH_DefaultDomain_3&hash=item484312a1e0#ht_6770wt_1154

> Вот только недавно испытал подобное на шине PCI чип tw6816 плата на 8
> видеовходов. На "родном" разрешениии 704x576 (как впрочем и на
> 640х480) больше чем 4 видеовхода не работают без полос и зеленых
> артефактов.
Разрешение видеозахвата выставляется в драйвере? При 704x576 вы
используете PAL или NTSC?

> Значит вывод - упираемся в ширину канала обычной PCI-шины и
> взаимодействие чипа с данным типом шины (точнее суммарный FPS от всех
> камер через чип на шину).
Я не думаю, что полосы и артефакты могут иметь какое-либо
отношение к полосе пропускания PCI шины...
> На днях ждите ответ.

Andrey Nikitin

unread,
May 25, 2012, 1:41:38 AM5/25/12
to avreg...@googlegroups.com
>видеозахват работает, но только с разрешением 320x240. Вопрос
geo = 720x576
попробуйте

--
Андрей Никитин.

ООО "Сетевые информационные системы".
http://avreg.net
http://linuxdvr.ru
/8442/ 50-14-90 +7 927 259 04 29

vasvk vasvk

unread,
May 25, 2012, 2:21:50 AM5/25/12
to avreg-users
> Я не думаю, что полосы и артефакты могут иметь какое-либо
> отношение к полосе пропускания PCI шины...

Я понимаю, что жалко потраченного времени и денег, но постараемся
технически обосновано ответить на данный вопрос.
1) Все мы знаем, что шина PCI для всех разъемов PCI параллельная, все
"проводники" на разъемах подключены в параллель и управляются всего
одним контроллером (исключение составляют специализированные серверные
мат. платы) - соответственно ограничены пропускной способностью
контроллера PCI см. http://ru.wikipedia.org/wiki/PCI
2) Для тех, кто использовал Windows-видеосистемы знают, что на шину
PCI без аппаратной обработки видеобластером можно навешать лишь 5шт
цветных в/камер (реже 6шт) в режиме "реального времени" 25 кадров/сек,
далее получаем эффект выбивания строк, "полосы" на изображении (ничего
не напоминает ?)
3) Отсюда вывод - для шины PCI суммарный поток составляет примерно
130...150 кадров/сек от цветных видеокамер (и примерно на 20...30%
больше для ч/белых в/к)
4) Смотрим в различные мануалы для "шустрого" чипа tw6816 - суммарный
поток составляет 200 кадров/сек от цветных видеокамер в режиме PAL
(разумеется в режиме максимального разрешения), уже превышен порог
пропускной способности шины PCI, ему самое место базироваться на PCI-E
шинах
5) Возникает вопрос - а почему такая видеоплата на PCI-шине
выпускается для Windows-систем находясь в заведомо проигрышной позиции
по сравнению с PCI-E платами.
а) ответ No.1 - почти все это производится товарищами китайцами, а у
них, как мы знаем, свой менталитет, а точнее желание до последнего
выжимать все возможности из устаревшего оборудования и технологий
(речь идет о не передовых производствах)
б) ответ No.2 - если посмотреть внимательнее, то рекомендуемое
производителем разрешение видеодеозахвата при задействовании всех
видеовходов в цветном режиме зачастую указывается ниже чем
максимальное
в) ответ No.3 - более грамотные разработчики ПО вводят различные
алгоритмы и режимы для снижения пиковых перегрузок шины PCI (например
VideoNet), что позволяет незначительно улучшить ситуацию
6) Уменьшение скорости видеозахвата далеко не всегда исправляет
ситуацию - дело в том, что весь видеопоток может захватывается
драйвером чипа, а ПО лишь пытается "выхватить" прореженные кадры из
общего видеопотока

Обобщая вышесказанное - при выборе видеоплат мы должны
ориентироваться
- на суммарный поток видеозахвата в максимальном разрешении для данной
модели чипа (чипов), кадров/сек
- тип шины, PCI или PCI-E
- возможность внутреннего аппаратного сжатия чипом видеоплаты (MJPEG
или H264) в соответствии с возможностями ПО

А вообще вопросы на подобную тему уже многократно всплывают на
данном форуме. Считаю что пора уже отвести место вышеуказанной
информации в руководство на сайте Avreg.

Сергей Голубцов

unread,
May 25, 2012, 2:35:11 AM5/25/12
to avreg-users
> geo = 720x576
> попробуйте
Пробовал все возможные варианты разшения - бесполезно. 80x60,
160x120, 320x240 - работает хорошо, большее разрешение - чёрный
экран. Я так понял, что максимальное разрешение видеозахвата
устанавливается в драйвере, но как это сделать? Подскажите пожалуйста.
Обнаружил, что нет файла bttv.conf в /etc/modprobe.d/ . Для работы
tw68 он нужен?

Andrey Nikitin

unread,
May 25, 2012, 4:21:49 AM5/25/12
to avreg...@googlegroups.com
>большее разрешение - чёрный экран.
может проблема в не захвате а видеовыводе?
в записи смотрели? что в логах?

Сергей Голубцов

unread,
May 25, 2012, 5:16:04 AM5/25/12
to avreg-users
> в записи смотрели? что в логах?
запись я пока не настраивал. В логах ничего относящегося к проблеме
не вижу. Я не профи - только разбираюсь. Ваши ответы, косвенно
говорят о том, что нет оснований сомниваться в правильности в настроек
драйвера, правильно ли я вас понял? Важны ли настройки bttv для
данного случая?
Спасибо за вашу помощь.

Сергей Голубцов

unread,
May 28, 2012, 4:50:35 AM5/28/12
to avreg-users
> может проблема в не захвате а видеовыводе?
> в записи смотрели? что в логах?

Вы оказались правы. Проблема в видеовыводе. Я попробовал захватывать
видео непосредственно с помощью ffmpeg и оказалось, что драйвер
работает при вех заявленных разрешениях (т.е. максимум для этой карты
720x480 @ 29fps (NTSC) 200 kbps).
# захватить изображение можно следующей командой
ffmpeg -f video4linux2 -s 720x480 -i /dev/video1 -y /tmp/
test_capture_720x480.avi
# при этом видеопоток с /dev/video1 будет записываться в файл /tmp/
test_capture_720x480.avi
# следующая команда захватывает изображение и записывает его в файл,
не сжимая, "как есть"
ffmpeg -f video4linux2 -s 720x480 -i /dev/video1 -sameq -y /tmp/
test_capture_-sameq_720x480.avi
Теперь появляется следующий вопрос: как использовать возможность
аппаратного H.264 сжатия видеопотока имеющуюся у TW6816 (или не
имеющуюся)? В каком формате необходимо брать видео с карты? Как он
назван в драйвере? Декодирование видеопотока в H.264 для отображения
на экране ведётся софтом с помощью того же ffmpeg?

Andrey Nikitin

unread,
May 28, 2012, 6:18:41 AM5/28/12
to avreg...@googlegroups.com
> Теперь появляется следующий вопрос: как использовать возможность
> аппаратного H.264 сжатия видеопотока имеющуюся у TW6816 (или не
> имеющуюся)?
Никак.

> В каком формате необходимо брать видео с карты? Как он
> назван в драйвере? Декодирование видеопотока в H.264 для отображения
> на экране ведётся софтом с помощью того же ffmpeg?
Вы что в конечном итоге хотите получить:
* AVReg - тогда вам не нужны ответы на эти вопросы,
* иное (ffmpeg,vlc,etc) - тогда вам следует начать с его изучения в
первую очередь.

Сергей Голубцов

unread,
May 28, 2012, 6:53:54 AM5/28/12
to avreg-users
>
> Никак.
>

Почему?

Andrey Nikitin

unread,
May 28, 2012, 6:57:57 AM5/28/12
to avreg...@googlegroups.com
Сергей Голубцов писал(а):
> Почему?
Потому что в tw6816 нет схемы h264 декодера.
Reply all
Reply to author
Forward
0 new messages