Date: Sun, 16 Feb 2003 18:56:09 GMT From: Richard Tobin <richard@cogsci.ed.ac.uk> To: freebsd-firewire@freebsd.org Subject: PAL DV, doesn't quite work Message-ID: <200302161856.SAA09274@sorley.cogsci.ed.ac.uk>
next in thread | raw e-mail | index | archive | help
I just tried capturing a PAL DV stream. Summary: it thought it was NTSC; hacking fwdv.c to force it to PAL worked. The long version: I'm running 4.7-RELEASE, not STABLE, so I used CVS to download /usr/src/dev/firewire and /usr/src/usr.sbin/fwcontrol. Boot messages were: /kernel: fwohci0: <Texas Instruments TSB12LV23> mem 0xdf008000-0xdf00bfff,0xdf00d000-0xdf00d7ff irq 11 at device 13.0 on pci0 /kernel: fwohci0: PCI bus latency was changing to 250. /kernel: fwohci0: OHCI version 1.0 (ROM=1) /kernel: fwohci0: No. of Isochronous channel is 4. /kernel: fwohci0: EUI64 01:00:50:c5:00:00:06:02 /kernel: fwohci0: Phy 1394a available S400, 3 ports. /kernel: fwohci0: Link S400, max_rec 2048 bytes. /kernel: firewire0: <IEEE1394(FireWire) bus> on fwohci0 /kernel: if_fwe0: <Ethernet over FireWire> on firewire0 /kernel: if_fwe0: Fake Ethernet address: 02:00:50:00:06:02 /kernel: sbp0: <SBP2/SCSI over firewire> on firewire0 /kernel: fwohci0: Initiate bus reset /kernel: fwohci0: BUS reset /kernel: fwohci0: node_id = 0xc800ffc0, CYCLEMASTER mode /kernel: firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) I plugged in and switched on my Panasonic NV-DS1 DV camcorder. This produced: /kernel: fwohci0: BUS reset /kernel: fwohci0: node_id = 0x0800ffc0, Bus reset failure /kernel: fwohci0: BUS reset last message repeated 12 times Switching it off produced: /kernel: fwohci0: node_id = 0xc800ffc0, CYCLEMASTER mode /kernel: firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) However running fwcontrol -r did cause it to detect the camcorder: /kernel: fwohci0: txd err=14 ack busy_X /kernel: fw_asybusy [lots of those two, followed by:] /kernel: firewire0: Device AV/C I then used "fwcontrol -R" to capture some video. I used "playdv" to look at it, and both audio and video were scrambled. I added a printf to fwdv.c, and found that the test pal = ((dv->payload[0] & DV_DSF_12) != 0); was returning 0 because dv->payload[0] is 63 (DV_DSF_12 is 128). I added pal = 1; to force it to PAL, and this produced a recording that playdv displayed perfectly. -- Richard To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-firewire" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200302161856.SAA09274>