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
注意
尚無 mse3000 的模組可用
尚無 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通用公共許可證。
有關更多資訊,請參見http://www.gnu.org/。