FPS and resolution to low with BT878 capture card.

Post here to ask any questions about hardware suitability, configuration in ZoneMinder, or experiences. If you just want to know if something works with ZoneMinder or not, please check the Hardware Compatibility sections in the forum, and the Wiki first. Also search this topic as well.
Post Reply
danisam
Posts: 24
Joined: Mon Oct 19, 2009 5:07 pm

FPS and resolution to low with BT878 capture card.

Post by danisam »

Hello everybody,

I am new in this forum, and it's my first post for asking help , i hope i will
write all the necessary for, you will be able to help me.

My System

OSVER: Ubuntu Server 9.04
Kernel : 2.6.28-18-server
ZMVER: ZoneMinder 1.24.2
RAM: 1GB DDR2
2 DEVICE: : Conexant Ship (4 Channel each and 30fps each ) with 8 analogs cams.
One is attach to the mother board and the other is a PCI card.



My dmesg information :

Code: Select all

Linux video capture interface: v2.00
[    7.262857] bttv: driver version 0.9.17 loaded
[    7.262861] bttv: using 8 buffers with 2080k (520 pages) each for capture
[    7.262928] bttv: Bt8xx card found (0).
[    7.262946] bttv 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    7.262960] bttv0: Bt878 (rev 17) at 0000:02:00.0, irq: 16, latency: 16, mmio: 0xfdbff000
[    7.263759] bttv0: using:  *** UNKNOWN/GENERIC ***  [card=0,autodetected]
[    7.263796] bttv0: gpio: en=00000000, out=00000000 in=00ff9fff [init]
[    7.264587] tveeprom 0-0050: Huh, no eeprom present (err=-6)?
[    7.264590] bttv0: tuner type unset
[    7.264593] bttv0: i2c: checking for MSP34xx @ 0x80... not found
[    7.265261] bttv0: i2c: checking for TDA9875 @ 0xb0... not found
[    7.265926] bttv0: i2c: checking for TDA7432 @ 0x8a... not found
[    7.266658] bttv0: registered device video0
[    7.266687] bttv0: registered device vbi0
[    7.266735] bttv: Bt8xx card found (1).
[    7.266749] bttv 0000:02:04.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    7.266761] bttv1: Bt878 (rev 17) at 0000:02:04.0, irq: 16, latency: 16, mmio: 0xfdbfd000
[    7.266829] bttv1: using:  *** UNKNOWN/GENERIC ***  [card=0,autodetected]
[    7.266856] bttv1: gpio: en=00000000, out=00000000 in=00ff95ff [init]
[    7.267614] tveeprom 1-0050: Huh, no eeprom present (err=-6)?
[    7.267617] bttv1: tuner type unset
[    7.267619] bttv1: i2c: checking for MSP34xx @ 0x80... not found
[    7.268284] bttv1: i2c: checking for TDA9875 @ 0xb0... not found
[    7.268951] bttv1: i2c: checking for TDA7432 @ 0x8a... not found
[    7.269668] bttv1: registered device video1
[    7.269698] bttv1: registered device vbi1
My lspci -v info :

Code: Select all

02:00.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
        Flags: bus master, medium devsel, latency 16, IRQ 16
        Memory at fdbff000 (32-bit, prefetchable) [size=4K]
        Capabilities: <access>
        Kernel driver in use: bttv
        Kernel modules: bttv

02:00.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
        Flags: bus master, medium devsel, latency 4, IRQ 11
        Memory at fdbfe000 (32-bit, prefetchable) [size=4K]
        Capabilities: <access>

02:04.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
        Flags: bus master, medium devsel, latency 16, IRQ 16
        Memory at fdbfd000 (32-bit, prefetchable) [size=4K]
        Capabilities: <access>
        Kernel driver in use: bttv
        Kernel modules: bttv

02:04.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
        Flags: bus master, medium devsel, latency 4, IRQ 11
        Memory at fdbfc000 (32-bit, prefetchable) [size=4K]
        Capabilities: <access>

My Memory :

Code: Select all

        total       used       free     shared    buffers     cached
Mem:          2004       1898        105          0        198       1430
-/+ buffers/cache:        269       1734
Swap:         5867          0       5867
My Interrupts

Code: Select all

           CPU0       CPU1
  0:       2543          0   IO-APIC-edge      timer
  1:          2          0   IO-APIC-edge      i8042
  8:          1          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 14:          0          0   IO-APIC-edge      ata_piix
 15:          0          0   IO-APIC-edge      ata_piix
 16:  118951576          0   IO-APIC-fasteoi   uhci_hcd:usb5, HDA Intel, bttv0, bttv1
 18:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
 19:    1003788          0   IO-APIC-fasteoi   ata_piix, uhci_hcd:usb3
 23:          0          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2
2302:   36126299          0   PCI-MSI-edge      eth0
NMI:          0          0   Non-maskable interrupts
LOC:   26312201   30695238   Local timer interrupts
RES:     180207     214658   Rescheduling interrupts
CAL:        283        342   Function call interrupts
TLB:     128819     122965   TLB shootdowns
SPU:          0          0   Spurious interrupts
My ipcs -l :

Code: Select all

---- Límites memoria compartida ----
número máx. segmentos = 4096
tamaño máx. segmento (kbytes) = 316800
máximo total de memoria compartida (kbytes) = 1297612800
tamaño mín. segmento (bytes) = 1

------ Límites semáforo --------
número máximo de matrices = 128
máx. semáforos por matriz = 250
máx. semáforos sistema = 32000
máx. oper. por llamada semop = 32
valor máx. semáforo = 32767

------ Mensajes: límites -------
máx. colas sistema = 1706
tamaño máx. mensaje (bytes) = 8192
tamaño máx. predeterminado cola (bytes) = 16384
My memory settings .

Code: Select all

kernel.shmall = 324403200
kernel.shmmax = 324403200
my zmu -U xxxxx-Pxxxxx -d video0 -q -v

Code: Select all

Video Device: video0
General Capabilities
  Driver: bttv
  Card: BT878 video ( *** UNKNOWN/GENER
  Bus: PCI:0000:02:00.0
  Version: 0.9.17
  Type: 0x5010015
    Supports video capture (X)
    Does not support video output
    Supports frame buffer overlay
    Supports VBI capture
    Does not support VBI output
    Does not support sliced VBI capture
    Does not support sliced VBI output
    Does not support video output overlay
    Has tuner
    Does not have audio in and/or out
    Does not have radio
    Supports read/write i/o (X)
    Does not support async i/o
    Supports streaming i/o (X)
    Standards:
      NTSC
      NTSC-M
      NTSC-M-JP
      NTSC-M-KR
      PAL
      PAL-BG
      PAL-H
      PAL-I
      PAL-DK
      PAL-M
      PAL-N
      PAL-Nc
      PAL-60
      SECAM
      SECAM-B
      SECAM-G
      SECAM-H
      SECAM-DK
      SECAM-L
      SECAM-Lc
  Formats:
    8 bpp, gray (GREY)
    8 bpp, dithered color (HI24)
    15 bpp RGB, le (RGBO)
    15 bpp RGB, be (RGBQ)
    16 bpp RGB, le (RGBP)
    16 bpp RGB, be (RGBR)
    24 bpp RGB, le (BGR3)
    32 bpp RGB, le (BGR4)
    32 bpp RGB, be (RGB4)
    4:2:2, packed, YUYV (YUYV)
    4:2:2, packed, YUYV (YUYV)
    4:2:2, packed, UYVY (UYVY)
    4:2:2, planar, Y-Cb-Cr (422P)
    4:2:0, planar, Y-Cb-Cr (YU12)
    4:2:0, planar, Y-Cr-Cb (YV12)
    4:1:1, planar, Y-Cb-Cr (411P)
    4:1:0, planar, Y-Cb-Cr (YUV9)
    4:1:0, planar, Y-Cr-Cb (YVU9)
Crop Capabilities
  Bounds: 838 x 504
  Default: 768 x 480
  Current: 768 x 480
my zmu -U xxxxx-Pxxxxx -d video1 -q -v

Code: Select all

Video Device: video1
General Capabilities
  Driver: bttv
  Card: BT878 video ( *** UNKNOWN/GENER
  Bus: PCI:0000:02:04.0
  Version: 0.9.17
  Type: 0x5010015
    Supports video capture (X)
    Does not support video output
    Supports frame buffer overlay
    Supports VBI capture
    Does not support VBI output
    Does not support sliced VBI capture
    Does not support sliced VBI output
    Does not support video output overlay
    Has tuner
    Does not have audio in and/or out
    Does not have radio
    Supports read/write i/o (X)
    Does not support async i/o
    Supports streaming i/o (X)
    Standards:
      NTSC
      NTSC-M
      NTSC-M-JP
      NTSC-M-KR
      PAL
      PAL-BG
      PAL-H
      PAL-I
      PAL-DK
      PAL-M
      PAL-N
      PAL-Nc
      PAL-60
      SECAM
      SECAM-B
      SECAM-G
      SECAM-H
      SECAM-DK
      SECAM-L
      SECAM-Lc
  Formats:
    8 bpp, gray (GREY)
    8 bpp, dithered color (HI24)
    15 bpp RGB, le (RGBO)
    15 bpp RGB, be (RGBQ)
    16 bpp RGB, le (RGBP)
    16 bpp RGB, be (RGBR)
    24 bpp RGB, le (BGR3)
    32 bpp RGB, le (BGR4)
    32 bpp RGB, be (RGB4)
    4:2:2, packed, YUYV (YUYV)
    4:2:2, packed, YUYV (YUYV)
    4:2:2, packed, UYVY (UYVY)
    4:2:2, planar, Y-Cb-Cr (422P)
    4:2:0, planar, Y-Cb-Cr (YU12)
    4:2:0, planar, Y-Cr-Cb (YV12)
    4:1:1, planar, Y-Cb-Cr (411P)
    4:1:0, planar, Y-Cb-Cr (YUV9)
    4:1:0, planar, Y-Cr-Cb (YVU9)
Crop Capabilities
  Bounds: 838 x 504
  Default: 768 x 480
  Current: 768 x 480
It's weird because i can only have a color image, setting the capture palette to BGR24 !!!!
I use also NTSC M and Video for Linux version 2, for each of my 8 analog cams

MY PROBLEMS

1/ I am only be able to capture at : 320x240 if i increase the size i have black image.

2/I was problems adding monitor because when in configure them the channels where interlaced !!
with my 1rst device this problem disapear disabling the V4L_MULTI_BUFFER
but with my second device is the same.

I don´t know if i need to configure In /etc/modprobe.conf

Code: Select all

options bttv card=77,77 tuner=4,4 radio=0,0 triton1=0 vsfx=0 autoload=0
Because i don´t understant this configuration?

3 /I put maximum FPS to 7fps (30fps / 4 = 7.5fps)
But in monitor mode i can only see 3fps for each camera. Why?
mastertheknife
Posts: 678
Joined: Wed Dec 16, 2009 4:32 pm
Location: Israel

Post by mastertheknife »

If you are using PAL cameras, anything above 384x288 will be interlaced, and if you are using NTSC cameras, anything above 320x240 will be interlaced, thats just how PAL and NTSC work. TVs have built in deinterlacing which is why you never see interlacing there.

Your card is probably a pico2000 clone, like here:
http://www.zoneminder.com/wiki/index.php/Pico2000

This card has a single bt878 chip, so it can only capture at 29.97 fps for NTSC and 25 fps for PAL. 2-3 fps with 4 inputs is typical because switching inputs takes some time!
For real time capturing you need to use only 1 input, then you will get the full 25 fps(PAL)/29.97 fps(NTSC)

If you want real time capturing of 8 cameras, you need 8 bt878 chips.
I recommend getting a Kodicom 8800 clone, they are cheap on ebay (around $60 including shipping).
I use this card (with heatsinks installed), and use the Pico2000 as a backup card.
More info:
http://www.zoneminder.com/wiki/index.php/Kodicom_8800
http://www.zoneminder.com/forums/viewtopic.php?t=15269 (scroll down to my post)

mastertheknife.
danisam
Posts: 24
Joined: Mon Oct 19, 2009 5:07 pm

Post by danisam »

Thanks for your response.
I don´t understand why only 3fps and not 7fps almost 30/4cams = 7.5fps...

You think thaht i Can i increase the Size and have a good image?

And i need to put the lines in the modprobe to have better result?

Thank you very much for your help
mastertheknife
Posts: 678
Joined: Wed Dec 16, 2009 4:32 pm
Location: Israel

Post by mastertheknife »

3fps because switching between inputs also takes some time.
If you want real time (25 fps for PAL, 29.97 for NTSC) you need a real time card, such as the Kodicom 8800 i suggested above.

Increase size, I wouldn't because then image will be interlaced and capturing motion wont be good. Stick to 384x288 for PAL and 320x240 for NTSC for best results.

Put lines in modprobe? Technically you should, but if you are having no problems right now i'm not sure its needed.
User avatar
cordel
Posts: 5210
Joined: Fri Mar 05, 2004 4:47 pm
Location: /USA/Washington/Seattle

Post by cordel »

Setting the driver correctly might certainly help. You might have to experiment a bit if you don't know the specific card/model but most single chip devices work with card=77 if it's a bt878 but that is a SWAG value that might not help but can't hurt to try. Since ZM needs to lean on the bttv driver to communicate with, and grab an image from the card, it's a pretty important setting.
danisam
Posts: 24
Joined: Mon Oct 19, 2009 5:07 pm

Post by danisam »

Thank you very much for the advices.
i will try the modprobe.conf

Could you give me some links to read the theory of the CCTV systems to understand better Zoneminder.
Thanks

Best regards
User avatar
cordel
Posts: 5210
Joined: Fri Mar 05, 2004 4:47 pm
Location: /USA/Washington/Seattle

Post by cordel »

I don't have any links per say but cctv (closed circuit television) is standards based typically on NTSC and PAL formats.

http://en.wikipedia.org/wiki/Closed-circuit_television
http://en.wikipedia.org/wiki/NTSC
http://en.wikipedia.org/wiki/PAL
http://en.wikipedia.org/wiki/Interlace

These should get you started and give you enough to google for anything to fill in the gaps.
danisam
Posts: 24
Joined: Mon Oct 19, 2009 5:07 pm

Post by danisam »

Thank you very much , i will read this immediately.
I test this for my 2 cards
options bttv card=77,77 tuner=4,4 radio=0,0 triton1=0 vsfx=0 autoload=0
The result was very good and the camera that i had an image in black is in color right know , but after 1 day of test i still having one channel blinking and in the botom of the image i see sometimes an other camera.

After my reset i see this in the dmesg :
[ 7.044527] Linux video capture interface: v2.00
[ 7.061481] bttv: driver version 0.9.17 loaded
[ 7.061485] bttv: using 8 buffers with 2080k (520 pages) each for capture
[ 7.061551] bttv: Bt8xx card found (0).
[ 7.061570] bttv 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 7.061583] bttv0: Bt878 (rev 17) at 0000:02:00.0, irq: 16, latency: 16, mmio: 0xfdbff000
[ 7.062372] bttv0: using: GrandTec Multi Capture Card (Bt878) [card=77,insmod option]
[ 7.062410] bttv0: gpio: en=00000000, out=00000000 in=00ff9fff [init]
[ 7.062473] bttv0: tuner absent
[ 7.062537] bttv0: registered device video0
[ 7.062565] bttv0: registered device vbi0
[ 7.062591] bttv0: PLL: 28636363 => 35468950 .. ok
[ 7.102503] bttv: Bt8xx card found (1).
[ 7.102522] bttv 0000:02:04.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 7.102542] bttv1: Bt878 (rev 17) at 0000:02:04.0, irq: 16, latency: 16, mmio: 0xfdbfd000
[ 7.102574] bttv1: using: GrandTec Multi Capture Card (Bt878) [card=77,insmod option]
[ 7.102605] bttv1: gpio: en=00000000, out=00000000 in=00ff91ff [init]
[ 7.102670] bttv1: tuner absent
[ 7.102731] bttv1: registered device video1
[ 7.102758] bttv1: registered device vbi1
[ 7.102787] bttv1: PLL: 28636363 => 35468950 .. ok

Do you have some ideas of waths going wrong?

BEst regards
bb99
Posts: 943
Joined: Wed Apr 02, 2008 12:04 am

Post by bb99 »

Can't tell you what's wrong but I can tell you how it started and how to fix it (from my experience). The monitor you are having problems with was inadvertently assigned the same video device path/channel as the one that's showing up as interference. To fix: change the video device path on the source tab to some value that doesn't exist such as video7(0) and save. Now change it back to the values you want to work.
danisam
Posts: 24
Joined: Mon Oct 19, 2009 5:07 pm

Post by danisam »

Thank you , i will test this tomorrow morning.

Best regards
beerygaz
Posts: 28
Joined: Wed Jul 08, 2009 9:43 am
Location: Johannesburg, South Africa

Post by beerygaz »

I've read this and other threads with much interest.

I understand interlacing and that ZM des not have the ability to display display or record interlaced images correctly. Also, I understand that I will get a 'combing' effect on interlaced images with movement in then,

That said, I still don't understand that my cameras (Sony 1/3" CCD cheap units) specs say they support 420 TV lines. If NTSC is only 240 horizontal lines, my faulty logic suggests I'm losing nearly 90% of my potenital resolution. How do I get an image that is better quality and takes advantage of these supposed 420 lines (instead of NTSC's 240)

If this is just impossible and the 420 lines spec is just marketing rubbish, my next questions is: How do I get a better resolution images without making the jump to $500+ megapixel IP camera. Is there something in between?

Am I limited, not so much by the camreea, but by the bt8xx chipset on my Kodicom card?
jameswilson
Posts: 5111
Joined: Wed Jun 08, 2005 8:07 pm
Location: Midlands UK

Post by jameswilson »

yes its teh card.
You can capture at full ntsc ress (640x480 i think) but if you do that you will get the combing effect.
One way around this is to use progressive scan cameras. They do exist but are not cheap.

this is why most people are advising you to limit to 240 vertical resolution.
James Wilson

Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
danisam
Posts: 24
Joined: Mon Oct 19, 2009 5:07 pm

Post by danisam »

Hello, i continue with my problems of instability images and i perform the advice from BB99 and know i have video(0)/3 OK and my video(0)0 with blinking from one camera to another each 2 seconds.... I really don' t understand.
I don't see any error in the logs.... with debug 4.
Wath can i do ?
jameswilson
Posts: 5111
Joined: Wed Jun 08, 2005 8:07 pm
Location: Midlands UK

Post by jameswilson »

have you got both cams set up exactly the same, ie res, pallete etc?

also have you modified any other config settings regarding frame grab ie
CAPTURES_PER_FRAME?
James Wilson

Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
danisam
Posts: 24
Joined: Mon Oct 19, 2009 5:07 pm

Post by danisam »

Ok i found it ...
Firstly it was all my monitors very blinking between them and i uncheck the
V4L_MULTI_BUFFER option , and it' s was better.
And i forgot to test with the option CAPTURES_PER_FRAME i put this option to 2 and all my problems disapear.

thanks you very much for your
Post Reply