cPEG Linux driver

News | FAQ | Howto | Docs | Links | Download


This site hosts the Linux device driver for the cPEG™ C 3.0 PCI DVD / MPEG-2 decoder.
NOTE: This software is in Beta testing stage. It is stable but may contain bugs.


Overview

cPEG PCI decoder card revision 1.5:

cPEG C 3.0    cPEG C 3.0  (click for larger images)

Main logic:

  1. C-Cube's ZiVA-PC - highly integrated ASIC for DVD/MPEG-2 decoding.
  2. Conexant or BrookTree BT865A - I2C controlled YCrCb to NTSC/PAL digital video encoder.

[top]

Hardware Features


[top]

Interfaces

Video Out: Audio Output:
[top]

Currently Implemented Software Support

There are more features implemented, but need more testing: For new features check the news section periodically.
 
[top]

News

Sat Feb 24 00:00:43 EET 2007 - Initial setup of CVS and project home page.
 
[top]

FAQ

Q: Where do I buy the cPEG™ C 3.0 decoder card(s)?
A: Contact CIFELLI Corporation directly: send an e-mail to cifelli sales or phone them at +1.613.723.7218

Q: What Linux kernel versions are supported?
A: Currently Linux 2.6.x. Any time soon 2.4.x backport will be provided.

Q: The driver compilation fails. Why?
A: Probably you are running not supported Linux kernel version.
Report what is your Linux distribution and what Linux kernel version you are running to CIFELLI Technical Support.

Q: I found a bug. What should I do?
A: Report it to CIFELLI Technical Support or better yet, submit a fix.
 

[top]

Howto and Tips

You can use replex (http://www.metzlerbros.org/dvb/index.html) to play transport stream files
(captured from DVB):

   replex -t DVD myfile.ts > /dev/cpeg0

You can use nc (netcat) to stream mpeg file over the network. Run this on the machine with your mpeg file: 

   nc -l -p 12345 < myfile.mpg

And this on the machine where cPEG card is intalled:

   nc 192.168.0.1 12345 > /dev/cpeg0

192.168.0.1 is the IP address and 12345 is the network port of the machine with the mpeg file.
 
[top]

Documentation

Documentation is limited. Those familiar with video playback in Linux will find usage straightforward. Compile and install as follows:

   ~/tmp/src$ tar xzvf cpeg-x.x.x.tar.gz
   ~/tmp/src$ cd cpeg-x.x.x
   ~/tmp/src/cpeg-x.x.x$ make && sudo make install && sudo depmod
   ~/tmp/src/cpeg-x.x.x$ cd ucode
   ~/tmp/src/cpeg-x.x.x/ucode$ tar xzvf ucode-1.21.tgz
   ~/tmp/src/cpeg-x.x.x/ucode$ sudo cp c3.ux /lib/firmware
   ~/tmp/src/cpeg-x.x.x$ cd ..
   ~/tmp/src/cpeg-x.x.x$ sudo modprobe cpeg

   ~/tmp/src/cpeg-x.x.x$ dmesg
   ACPI: PCI Interrupt 0000:00:0f.0[A] -> Link [LNKB] -> GSI 5 (level, low) -> IRQ 5
   cpeg_c3: found board rev. 01, io @ 0000e000, size 0100
   cpeg_c3: DMA buffer @ c3550000, size 00010000
   cpeg_c3: assigned irq 5
   cpeg_c3: starting watchdog
   cpeg_c3: powering on the decoder core
   cpeg_c3: i2c: BT865A YCrCb to NTSC/PAL encoder detected at 88
   cpeg_c3: i2c: setting BT865A to PAL mode
   cpeg_c3: using microcode file `c3.ux'
   cpeg_c3: microcode size 141336 bytes, version 1.21
   cpeg_c3: booting decoder core..
   cpeg_c3: GBUS_FW[0]: 0000000A @ 0000003A
   cpeg_c3: GBUS_FW[1]: 0000C000 @ 0000003B
   cpeg_c3: GBUS_FW[2]: 00900000 @ 00000039
   cpeg_c3: microcode started
   cpeg_c3: silicon v.28, stepping a2
   cpeg_c3: registering i2c adapter
   cpeg_c3: got device major: 254
   cpeg_c3: adding device cpeg0 (0)

   ~/tmp/src/cpeg-x.x.x$ ls -al /dev/cpeg0
   crw-rw---- 1 root root 254, 0 2007-02-24 11:55 /dev/cpeg0

   ~/tmp/src/cpeg-x.x.x$ cat ~/myfile.mpg > /dev/cpeg0


[top]

Related Links

CIFELLI Corporation - manufacturer of the cPEG™ C3.0 DVD/MPEG2 decoder card.
GNU DBox2 Software Project - Includes device driver for C-Cube's AViA chips.
DVD Resources for Open Source Development.

 
[top]

Software Download

You may browse our CVS and/or get the source. When prompted for a password for anonymous, simply press the <ENTER> key:

   cvs -d:pserver:anonymous@cpeg.cvs.sourceforge.net:/cvsroot/cpeg login
   cvs -z3 -d:pserver:anonymous@cpeg.cvs.sourceforge.net:/cvsroot/cpeg co -P cpeg
 

[top]


Notes

¹This is a bonus feature since video is always available on the S-Video and RCA composite jacks. This port allows one to experience the best possible video quality any PCI decoder can produce on a VGA (D-sub 15) or DVI port. The digital video is transferred from the cPEG card directly to the video card's frame buffer memory. Consequently, the video experiences zero loss of quality. This technique is is referred to as digital inlay². This port is in the form of a 26 pin header (of which 25 are used). One must connect it to a compatible video card. Not all video cards have this 26-pin header port. Not all video cards with this 26-pin header port support VIP/AMC/VMI. There are a handful of cards that do, nearly all of them exclusively made for use with the cPEG. Connection between the two ports is achieved via ribbon cable. In Linux, the only video cards which will work  are from nVidia and ATi using proprietary (not open source) drivers. There is no support in XFree86/Xorg for VIP/AMC/VMI transfers because VIP/AMC/VMI requires interrupt handling - the whole X is user space based and cannot handle DMA and interrupts.

How do I know if my nVidia card will support digital inlay with the cPEG? If the xvinfo command shows something like this below, you very likely have working and usable VIP overlay.

  Adaptor #2: "NVIDIA Video Interface Port"
    number of ports: 1
    port base: 259
    operations supported: PutVideo
    supported visuals:
      depth 24, visualID 0x21
      depth 24, visualID 0x23
      .... 
      depth 24, visualID 0x6f
      depth 24, visualID 0x70
    number of attributes: 9
      "XV_ENCODING" (range 0 to 1)
              client settable attribute
              client gettable attribute (current value is 1)
      "XV_COLORKEY" (range 0 to 16777215)
              client settable attribute
              client gettable attribute (current value is 66046)
      "XV_AUTOPAINT_COLORKEY" (range 0 to 1)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_SET_DEFAULTS" (range 0 to 0)
              client settable attribute
      "XV_BRIGHTNESS" (range -512 to 511)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_CONTRAST" (range 0 to 8191)
              client settable attribute
              client gettable attribute (current value is 4096)
      "XV_SATURATION" (range 0 to 8191)
              client settable attribute
              client gettable attribute (current value is 4096)
      "XV_HUE" (range 0 to 360)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_ITURBT_709" (range 0 to 1)
              client settable attribute
              client gettable attribute (current value is 1)
    number of encodings: 2
      encoding ID #0: "ntsc"
        size: 720 x 480
        rate: 59.940060
      encoding ID #1: "pal"
        size: 720 x 576
        rate: 50.000000
            

²All other PCI hardware decoders require the analog output from the VGA (D-sub 15) to be looped into the decoder card, which then overlays the video onto this analog signal, before sending the combined result back out the VGA (D-sub 15) port on the decoder card. Consequently, many visual artifacts are introduced in to the video as well as an overall loss of quality on the desktop. This technique is referred to as analog overlay.
 

[top]

SourceForge Logo

Valid HTML 4.01 Transitional


cPEG is a trademark of CIFELLI Corporation.

Copyright © 1993-2007, CIFELLI Corporation
All rights reserved.