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(new)

  • 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(old)

  • 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 VCR 中使用。 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(new)、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. Samsung 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. Philips 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. Analog Devices adv7170 电视编码器

  • 于 2000 年推出,用于 LML300R10

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

9.1.13.4.4. Analog Devices 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,或者在您的启动脚本(通常是 rc.local)中运行“v4l-conf -c <device>”(如果您不使用 X)。 两者都确保模块在启动时在 root 帐户下加载。

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

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

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

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

  • VIA MVP3
    • 别想了。 无意义。 不起作用。

  • 英特尔 430FX(奔腾 200)
    • LML33 完美,Buz 可以忍受(每部电影丢掉 3 或 4 帧)

  • 英特尔 440BX(早期步进)
    • LML33 可以忍受。 Buz 开始变得烦人(每小时 6-10 帧)

  • 英特尔 440BX(后期步进)
    • Buz 可以忍受,LML3 几乎完美(偶尔会丢掉单帧)

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

  • VIA KT133(*)
    • LML33 开始变得烦人,Buz 足够差,我放弃了。

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

Bernhard Praschinger 后来补充说

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

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

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

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

9.1.13.7. 编程接口

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

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

软件开发者的补充说明

驱动程序根据当前的电视标准(norm)返回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 bits/field(2 fields/frame)= 207360 bytes/field x 2 = 414720 bytes/frame(为标头和DHT(huffman)/DQT(量化)表添加一些字节,你将得到大约512kB/帧的1:2压缩。对于1:4压缩,帧的大小将是此大小的一半。

Martin Samuelsson的一些补充说明,这也解释了缓冲区大小的重要性: -- > 嗯,我不认为真的是那样。使用当前的(周一下午6:00下载的)驱动程序,我得到以下10秒的输出大小: > -q 50 -b 128 : 24.283.332 Bytes > -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的输出(使用debug=2加载zr36067.o,使用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通用公共许可证。

有关更多信息,请参见https://gnu.ac.cn/