Skip site navigation (1)Skip section navigation (2)
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>