9.1.13. Zoran 驱动程序

统一的 zoran 驱动程序 (zr360x7, zoran, buz, dc10(+), dc30(+), lml33)

网站:http://mjpeg.sourceforge.net/driver-zoran/

9.1.13.1. 常见问题解答

9.1.13.2. 支持哪些卡

Iomega Buz、Linux Media Labs LML33/LML33R10、Pinnacle/Miro DC10/DC10+/DC30/DC30+ 和相关板卡(以各种名称提供)。

9.1.13.2.1. Iomega Buz

  • Zoran zr36067 PCI 控制器

  • Zoran zr36060 MJPEG 编解码器

  • Philips saa7111 电视解码器

  • Philips saa7185 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、saa7111、saa7185、zr36060、zr36067

输入/输出:复合和 S-video

标准:PAL、SECAM (720x576 @ 25 fps)、NTSC (720x480 @ 29.97 fps)

卡号:7

9.1.13.2.2. AverMedia 6 Eyes AVS6EYES

  • Zoran zr36067 PCI 控制器

  • Zoran zr36060 MJPEG 编解码器

  • Samsung ks0127 电视解码器

  • Conexant bt866 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、ks0127、bt866、zr36060、zr36067

输入/输出

六个物理输入。1-6 是复合输入,1-2、3-4、5-6 兼作 S-video,1-3 兼作分量输入。一个复合输出。

标准:PAL、SECAM (720x576 @ 25 fps)、NTSC (720x480 @ 29.97 fps)

卡号:8

注意

未自动检测到,card=8 是必要的。

9.1.13.2.3. Linux Media Labs LML33

  • Zoran zr36067 PCI 控制器

  • Zoran zr36060 MJPEG 编解码器

  • Brooktree bt819 电视解码器

  • Brooktree bt856 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、bt819、bt856、zr36060、zr36067

输入/输出:复合和 S-video

标准:PAL (720x576 @ 25 fps)、NTSC (720x480 @ 29.97 fps)

卡号:5

9.1.13.2.4. Linux Media Labs LML33R10

  • Zoran zr36067 PCI 控制器

  • Zoran zr36060 MJPEG 编解码器

  • Philips saa7114 电视解码器

  • Analog Devices adv7170 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、saa7114、adv7170、zr36060、zr36067

输入/输出:复合和 S-video

标准:PAL (720x576 @ 25 fps)、NTSC (720x480 @ 29.97 fps)

卡号:6

9.1.13.2.5. Pinnacle/Miro DC10(新)

  • Zoran zr36057 PCI 控制器

  • Zoran zr36060 MJPEG 编解码器

  • Philips saa7110a 电视解码器

  • Analog Devices adv7176 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、saa7110、adv7175、zr36060、zr36067

输入/输出:复合、S-video 和内部

标准:PAL、SECAM (768x576 @ 25 fps)、NTSC (640x480 @ 29.97 fps)

卡号:1

9.1.13.2.6. Pinnacle/Miro DC10+

  • Zoran zr36067 PCI 控制器

  • Zoran zr36060 MJPEG 编解码器

  • Philips saa7110a 电视解码器

  • Analog Devices adv7176 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、saa7110、adv7175、zr36060、zr36067

输入/输出:复合、S-video 和内部

标准:PAL、SECAM (768x576 @ 25 fps)、NTSC (640x480 @ 29.97 fps)

卡号:2

9.1.13.2.7. Pinnacle/Miro DC10(旧)

  • Zoran zr36057 PCI 控制器

  • Zoran zr36050 MJPEG 编解码器

  • Zoran zr36016 视频前端或 Fuji md0211 视频前端(克隆?)

  • Micronas vpx3220a 电视解码器

  • mse3000 电视编码器或 Analog Devices adv7176 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、vpx3220、mse3000/adv7175、zr36050、zr36016、zr36067

输入/输出:复合、S-video 和内部

标准:PAL、SECAM (768x576 @ 25 fps)、NTSC (640x480 @ 29.97 fps)

卡号:0

9.1.13.2.8. Pinnacle/Miro DC30

  • Zoran zr36057 PCI 控制器

  • Zoran zr36050 MJPEG 编解码器

  • Zoran zr36016 视频前端

  • Micronas vpx3225d/vpx3220a/vpx3216b 电视解码器

  • Analog Devices adv7176 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、vpx3220/vpx3224、adv7175、zr36050、zr36016、zr36067

输入/输出:复合、S-video 和内部

标准:PAL、SECAM (768x576 @ 25 fps)、NTSC (640x480 @ 29.97 fps)

卡号:3

9.1.13.2.9. Pinnacle/Miro DC30+

  • Zoran zr36067 PCI 控制器

  • Zoran zr36050 MJPEG 编解码器

  • Zoran zr36016 视频前端

  • Micronas vpx3225d/vpx3220a/vpx3216b 电视解码器

  • Analog Devices adv7176 电视编码器

要使用的驱动程序:videodev、i2c-core、i2c-algo-bit、videocodec、vpx3220/vpx3224、adv7175、zr36050、zr36015、zr36067

输入/输出:复合、S-video 和内部

标准:PAL、SECAM (768x576 @ 25 fps)、NTSC (640x480 @ 29.97 fps)

卡号:4

注意

  1. mse3000 还没有模块

  2. vpx3224 还没有模块

9.1.13.3. 1.1 电视解码器可以做什么和不能做什么

最知名的电视标准是 NTSC/PAL/SECAM。但是对于解码帧而言,该信息是不够的。电视标准有几种格式。并非每个电视解码器都能处理每种格式。驱动程序也支持每种组合。目前,世界上有 11 种不同的电视广播格式。

CCIR 定义了广播信号所需的参数。CCIR 定义了不同的标准:A、B、D、E、F、G、D、H、I、K、K1、L、M、N、... CCIR 对于使用的色彩系统没有过多说明!!!而谈论色彩系统并没有过多说明它是如何广播的。

CCIR 标准 A、E、F 不再使用。

当您谈论 NTSC 时,通常指的是标准:CCIR - M,使用 NTSC 色彩系统,该系统在美国、日本、墨西哥、加拿大和其他一些国家使用。

当您谈论 PAL 时,通常指的是:CCIR - B/G,使用 PAL 色彩系统,该系统在许多国家使用。

当您谈论 SECAM 时,指的是:CCIR - L,使用 SECAM 色彩系统,该系统在法国和其他一些国家使用。

还有其他版本的 SECAM,CCIR - D/K 在保加利亚、中国、斯洛伐克、匈牙利、韩国(共和国)、波兰、罗马尼亚和其他一些国家使用。

CCIR - H 使用 PAL 色彩系统(有时使用 SECAM),在埃及、利比亚、斯里兰卡、叙利亚阿拉伯共和国使用。

CCIR - I 使用 PAL 色彩系统,在英国、香港、爱尔兰、尼日利亚、南非使用。

CCIR - N 使用 PAL 色彩系统和 PAL 帧大小,但使用 NTSC 帧速率,在阿根廷、乌拉圭和其他一些国家使用

我们不谈论音频是如何广播的!

关于电视标准的一些不错的网站是:http://www.sony.jp/support/ http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/http://www.cabl.com/restaurant/channel.html

其他奇怪的事情:NTSC 4.43 是一种经过修改的 NTSC,主要用于能够播放 NTSC 的 PAL 录像机。PAL 60 似乎与 NTSC 4.43 相同。数据表还谈论 NTSC 44,它似乎与 NTSC 4.43 相同。NTSC Combs 似乎是一种解码器模式,其中解码器使用梳状滤波器来分离 coma 和 luma,而不是延迟线。

但我没有明确地弄清楚 NTSC Comb 是什么。

9.1.13.3.1. Philips saa7111 电视解码器

  • 于 1997 年推出,用于 BUZ 和

  • 可以处理:PAL B/G/H/I、PAL N、PAL M、NTSC M、NTSC N、NTSC 4.43 和 SECAM

9.1.13.3.2. Philips saa7110a 电视解码器

  • 于 1995 年推出,用于 Pinnacle/Miro DC10(新)、DC10+ 和

  • 可以处理:PAL B/G、NTSC M 和 SECAM

9.1.13.3.3. Philips saa7114 电视解码器

  • 于 2000 年推出,用于 LML33R10 和

  • 可以处理:PAL B/G/D/H/I/N、PAL N、PAL M、NTSC M、NTSC 4.43 和 SECAM

9.1.13.3.4. Brooktree bt819 电视解码器

  • 于 1996 年推出,用于 LML33 和

  • 可以处理:PAL B/D/G/H/I、NTSC M

9.1.13.3.5. Micronas vpx3220a 电视解码器

  • 于 1996 年推出,用于 DC30 和 DC30+ 和

  • 可以处理:PAL B/G/H/I、PAL N、PAL M、NTSC M、NTSC 44、PAL 60、SECAM、NTSC Comb

9.1.13.3.6. 三星 ks0127 电视解码器

  • 用于 AVS6EYES 卡,并且

  • 可以处理:NTSC-M/N/44、PAL-M/N/B/G/H/I/D/K/L 和 SECAM

9.1.13.4. 电视编码器能做什么和不能做什么

电视编码器执行与解码器“相同”的操作,但方向相反。 您向其馈送数字数据,然后生成复合信号或 SVHS 信号。 有关颜色系统和电视制式的信息,请查看电视解码器部分。

9.1.13.4.1. 飞利浦 saa7185 电视编码器

  • 于 1996 年推出,用于 BUZ

  • 可以生成:PAL B/G、NTSC M

9.1.13.4.2. Brooktree bt856 电视编码器

  • 于 1994 年推出,用于 LML33

  • 可以生成:PAL B/D/G/H/I/N、PAL M、NTSC M、PAL-N(阿根廷)

9.1.13.4.3. 模拟器件 adv7170 电视编码器

  • 于 2000 年推出,用于 LML300R10

  • 可以生成:PAL B/D/G/H/I/N、PAL M、NTSC M、PAL 60

9.1.13.4.4. 模拟器件 adv7175 电视编码器

  • 于 1996 年推出,用于 DC10、DC10+、DC10 old、DC30、DC30+

  • 可以生成:PAL B/D/G/H/I/N、PAL M、NTSC M

9.1.13.4.5. ITT mse3000 电视编码器

  • 于 1991 年推出,用于 DC10 old

  • 可以生成:PAL、NTSC、SECAM

9.1.13.4.6. Conexant bt866 电视编码器

  • 用于 AVS6EYES,并且

  • 可以生成:NTSC/PAL、PAL-M、PAL-N

adv717x 应该能够生成 PAL N。 但是您在寄存器中找不到任何特定于 PAL N 的信息。 似乎您必须重用另一个标准来生成 PAL N,也许如果您使用 PAL M 设置,它会起作用。

9.1.13.5. 我该如何让这个该死的东西工作

加载 zr36067.o。 如果它无法自动检测您的卡,请使用 card=X insmod 选项,其中 X 是上一节中给出的卡号。 要拥有多个卡,请使用 card=X1[,X2[,X3,[X4[..]]]]

要自动执行此操作,请将以下内容添加到您的 /etc/modprobe.d/zoran.conf

options zr36067 card=X1[,X2[,X3[,X4[..]]]] alias char-major-81-0 zr36067

需要记住的一件事是,这不会立即加载 zr36067.o 本身。 它只是自动加载。 如果您开始使用 xawtv,则设备在某些系统上不会加载,因为您正在尝试以用户身份加载模块,这是不允许的(“权限被拒绝”)。 一个快速的解决方法是在您默认使用 X 时将“Load “v4l””添加到 XF86Config-4 中,或者如果您不使用 X,则在您的某个启动脚本(通常是 rc.local)中运行 ‘v4l-conf -c <设备>’。 这两种方法都确保模块在启动时以 root 帐户加载。

9.1.13.6. 我应该使用什么主板(或者为什么我的卡不工作)

<在此处插入糟糕的免责声明>。 简而言之:好=SiS/Intel,坏=VIA。

经验告诉我们,使用 Buz 的人平均而言比使用 DC10+/LML33 的用户遇到的问题更多。 此外,它告诉我们,与使用基于不同芯片组的主板的用户相比,拥有基于 VIA 的主板 (ktXXX, MVP3) 的用户遇到的问题更多。 这是 Andrew Stevens 的一些说明

以下是我在各种主板上使用 LML33 和 Buz 的经验

  • VIA MVP3
    • 算了吧。 毫无意义。 不工作。

  • Intel 430FX (Pentium 200)
    • LML33 完美,Buz 可以忍受(每部电影丢弃 3 或 4 帧)

  • Intel 440BX(早期版本)
    • LML33 可以忍受。 Buz 开始变得令人烦恼(每小时 6-10 帧)

  • Intel 440BX(后期版本)
    • Buz 可以忍受,LML3 几乎完美(偶尔丢帧)

  • SiS735
    • LML33 完美,Buz 可以忍受。

  • VIA KT133(*)
    • LML33 开始变得令人烦恼,Buz 表现很差,我放弃了。

  • 这两个 440BX 板都是双 CPU 版本。

Bernhard Praschinger 后来补充说

  • AMD 751
    • Buz 完美 - 可以忍受

  • AMD 760
    • Buz 完美 - 可以忍受

一般来说,如果您使用基于 VIA 的主板,用户邮件列表中的人不会给您太多机会。 它们可能很便宜,但有时,您宁愿在更好的主板上花更多的钱。 通常,与其他主板相比,VIA 主板的 IDE/PCI 性能也很差。 您会注意到概览中未提及 DC10+/DC30+。 基本上,您可以假设如果 Buz 可以工作,LML33 也可以工作。 如果 LML33 可以工作,DC10+/DC30+ 也可以工作。 它们对所有支持的卡的不同主板芯片组的容忍度最高。

如果您在捕获过程中遇到超时,请购买更好的主板或在捕获期间降低质量/缓冲区大小(请参阅“关于缓冲区大小、质量、输出大小等”)。 如果它挂起,我们目前也无能为力。 检查您的 IRQ 并确保卡有自己的中断。

9.1.13.7. 编程接口

此驱动程序符合 video4linux2。 在内核 2.6.38 中,已删除对 V4L1 和自定义 zoran ioctl 的支持。

有关编程示例,请查看 MJPEG 工具中的 lavrec.c 和 lavplay.c 代码 (http://mjpeg.sf.net/)。

软件开发人员的补充说明

驱动程序会根据当前的电视标准(制式)返回 maxwidth 和 maxheight 参数。 因此,与驱动程序通信并“请求”这些参数的软件应首先设置正确的制式。 嗯,这似乎是合乎逻辑的:对于当前国家/地区,电视标准比可能以 ITU 或方形像素格式工作的各种电视采集卡的几何设置“更恒定”。

9.1.13.8. 应用程序

已知可与此驱动程序一起使用的应用程序

观看电视

  • xawtv

  • kwintv

  • 可能任何支持 video4linux 或 video4linux2 的电视应用程序。

MJPEG 捕获/播放

  • mjpegtools/lavtools(或 Linux Video Studio)

  • gstreamer

  • mplayer

常规原始捕获

  • xawtv

  • gstreamer

  • 可能任何支持 video4linux 或 video4linux2 的应用程序

视频编辑

  • Cinelerra

  • MainActor

  • mjpegtools(或 Linux Video Studio)

9.1.13.9. 关于缓冲区大小、质量、输出大小等

zr36060 可以进行 1:2 的 JPEG 压缩。 这实际上是芯片组可以达到的理论最大值。 但是,驱动程序可以将压缩限制为最大(大小)1:4。 这样做的原因是,某些卡(例如 Buz)无法在几分钟后停止捕获的情况下处理 1:2 压缩。 使用 1:4,它大部分都可以正常工作。 如果您有 Buz,请使用 ‘low_bitrate=1’ 进入 1:4 最大压缩模式。

因此,实际上 100% 的 JPEG 质量是 1:2 的压缩。 因此,对于完整的 PAL 帧(大小为 720x576)。 JPEG 字段以 YUY2 格式存储,因此字段的大小为 720x288x16/2 位/字段(2 个字段/帧)= 207360 字节/字段 x 2 = 414720 字节/帧(为标头和 DHT(霍夫曼)/DQT(量化)表添加一些字节,您将得到 1:2 压缩时每个帧大约 512kB 的大小。 对于 1:4 压缩,您将得到一半大小的帧。

Martin Samuelsson 的一些补充说明,也解释了缓冲区大小的重要性:-- > 嗯,我不认为真的是这样。 使用当前(周一下午 6:00 下载的)驱动程序,我得到 10 秒的输出大小为: > -q 50 -b 128:24.283.332 字节 > -q 50 -b 256:48.442.368 > -q 25 -b 128:24.655.992 > -q 25 -b 256:25.859.820

我醒了,又睡不着了。 我将花一些时间解释为什么这对我来说并不奇怪。

让我们使用 704 像素的宽度进行一些计算。 我不确定 Buz 是否真的使用该数字,但这现在并不太重要。

704x288 像素,一个字段,为 202752 像素。 除以每个块 64 像素; 每个字段 3168 个块。 每个像素由两个字节组成; 每个块 128 个字节; 每个块 1024 位。 新驱动程序中的 100% 表示 1:2 压缩; 最大输出变为每个块 512 位。 实际上是 510,但 512 更易于用于计算。

假设我们指定 d1q50。 因此,我们想要每个块 256 位; 乘以 3168 变为 811008 位; 每个字段 101376 字节。 我们在这里讨论的是原始位和字节,因此我们不需要对每像素的位或此类内容进行任何花哨的校正。 每个字段 101376 字节。

d1 视频每帧包含两个字段。 这些总计为每帧 202752 字节,其中一帧进入每个缓冲区。

但是等等! -b128 提供 128kB 的缓冲区! 不可能将 202752 字节的 JPEG 数据塞入 128kB!

这是驱动程序在您的示例中注意到并自动补偿的。 让我们使用此信息进行一些计算

128kB 为 131072 字节。 在此缓冲区中,我们想要存储两个字段,这为每个字段留下 65536 字节。 使用每个字段 3168 个块,我们得到每个块 20.68686868... 个可用字节; 165 位。 当只有 165 位可用时,我们不能允许每个块 256 位的请求! -q50 选项被静默覆盖,并且 -b128 选项优先,使我们得到相当于 -q32 的结果。

这使得每个数据块的数据速率为 165 位,乘以 3168,总计为每个字段 65340 字节,在允许的 65536 字节之内。当前的驱动程序还有另一层速率限制;它不会接受填充超过指定缓冲区 6/8 的 -q 值。(我不确定为什么。“为了安全起见”似乎是一个稳妥的选择。我个人认为,我应该将请求的每个数据块的位数降低一位,或者类似的做法。)我们不能使用每个数据块 165 位,而必须再次降低它,降到可用缓冲区空间的 6/8:最终我们得到每个数据块 124 位,相当于 -q24。使用 128kB 的缓冲区,在 -d1 的情况下,不能使用大于 -q24 的值。(以及 PAL 和 704 像素宽度...)

第三个示例也通过相同的过程被限制为 -q24。第二个示例,使用非常相似的计算,被限制为 -q48。唯一真正使用指定的 -q 值的示例是最后一个,这通过查看文件大小可以清楚地看到。--

结论:生成的电影的质量取决于缓冲区大小、质量,是否使用 'low_bitrate=1' 作为 zr36060.c 模块的 insmod 选项来执行 1:4 而不是 1:2 的压缩,等等。

如果您遇到超时,降低质量/缓冲区大小或者使用 'low_bitrate=1' 作为 zr36060.o 的 insmod 选项可能会有所帮助,正如 Buz 所证明的那样。

9.1.13.10. 它挂起/崩溃/失败/随便什么!救命啊!

请确保该卡有自己的中断(请查看 /proc/interrupts),在高详细级别下检查 dmesg 的输出(加载 zr36067.o 时使用 debug=2,加载所有其他模块时使用 debug=1)。检查您的主板是否兼容(请参见问题 2),如果不是,请在另一台计算机中测试该卡。另请参阅问题 3 中给出的说明,如果录制一段时间后失败,请尝试降低质量/缓冲区大小/捕获大小。

如果所有这些都没有帮助,请提供问题的清晰描述,包括详细的硬件信息(内存+品牌、主板+芯片组+品牌、哪种 MJPEG 卡、处理器、其他可能相关的 PCI 卡),提供系统 PnP 信息(/proc/interrupts、/proc/dma、/proc/devices),并提供内核版本、驱动程序版本、glibc 版本、gcc 版本以及任何其他可能相关的信息。此外,请提供高详细级别下的 dmesg 输出。请参阅“联系方式”了解如何联系开发人员。

9.1.13.11. 维护者/联系方式

此驱动程序之前的维护者/开发人员是 - Laurent Pinchart <laurent.pinchart@skynet.be> - Ronald Bultje rbultje@ronald.bitfreak.net - Serguei Miridonov <mirsev@cicese.mx> - Wolfgang Scherr <scherr@net4you.net> - Dave Perks <dperks@ibm.net> - Rainer Johanni <Rainer@Johanni.de>

9.1.13.12. 驱动程序许可

此驱动程序根据通用公共许可证的条款分发。

本程序是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;无论是许可证的第 2 版,还是(由您选择)任何以后的版本。

本程序分发时希望它能有用,但没有任何担保;甚至没有对适销性或对特定用途的适用性的暗示保证。有关更多详细信息,请参阅 GNU 通用公共许可证。

请访问 http://www.gnu.org/ 以获取更多信息。