Wednesday, 27 October 2004
|1645 - Firewire ain't as fast as it's made out to be|
I've come to the conclusion that I can't stream video between my video capture device, a Canopus ADVC-100, and a Firewire-attached disk drive. Every time I try, it drops frames almost immediately after starting. My iMac only has one Firewire bus, and even if it were Firewire 800, that wouldn't help, since neither the Canopus nor the disks are 800-capable.
This is putting a real crimp into my operations. I might have to see about upgrading the disk drive in my iMac, not a pleasant thought. What I really want is an iMac G5, but the funds for that just don't exist. Damn damn damn.
Of course, I discovered this at a point where I need to turn out a few tapes in a hurry...
current mood: irritated
Hmm, I haven't had that problem, and I was streaming from the ADVC-100 to a SmartDisk 60GB FireLite drive on a TiBook using iMovie. No noticable frame drops.
Firewire can't possibly be the bottleneck here, unless you're using something that uses a lot higher bandwidth than DV. DV is 3.6MB/s codec, and FireWire supports 50MB/s (400Mb/s with a little b)... and in my experience, even a single-CPU 400MHz Mac can handle streaming DV in real time from one device to another. And since FireWire is encapsulated SCSI and can auto-negotiate point-to-point transfer, once the streaming is initiated, you should be seeing a very minimal use of CPU power, meaning your CPU shouldn't be the limiting factor either.
Is this DV or uncompressed video, or something else using much higher-bitrate compression? If so, that's more than likely the real limiting factor. Otherwise, you might want to look at other factors...
Do you know what chipset the external HDD uses for its Firewire-to-IDE bridge? That could very well be the limiting factor right there; early FW-to-IDE bridges had rather abysmal performance, and you might want to consider trying again with something with a newer FW bridge (Oxford 822 or newer I believe is the standard now).
I'm using Final Cut Pro HD 4.5, with straight DV in/out to the ADVC-100. I don't know if FCP does the point-to-point transfer thing, though, or if it insists on passing everything through the CPU on a print-to-video or capture operation.
The external drives use Oxford 911s, I believe; that's what the old drive adapter that I had one drive in (that blew up and had to be replaced) uses, at any rate. I've got two external drives, as well as the Canopus, on the Firewire bus. One drive is a Maxtor 80 GB, the other is an IBM (IIRC; don't wanna open up the case and look) 120 GB IDE in a no-name case (the replacement I mentioned above).
I reliably get dropped frames when transferring in either direction from the Canopus to either external drive. I have no problems at all going to the iMac's internal drive. That's what leads me to believe there's a bottleneck somewhere. I suppose I could fire up FCP and look what preset it's using...
Well, the 911 isn't the newest chipset, but I know it's at least the first generation of decent ones they produced. It really shouldn't be the bottleneck. Neither should a drive new enough to be in an 80 or 120 GB capacity.
On something like a straight capture operation, it ought to just be passing the video straight to the drive. Print-to-video on the other hand I'd expect might involve some CPU rendering. The exception with straight capture operation would be if there's some kind of conversion being done to the video; even if it's just an audio conversion (48KHz to 44.1KHz or whatever bitrate conversion) that can slow things down since it requires the video and audio streams be separated and relinked.
It's obvious there's a bottleneck somewhere, but in my experience it's unlikely that it's due to the Firewire bus itself. In fact, since you're able to easily stream from the ADVC-1000, which is a FW product IIRC, that should say that there's nothing wrong with the bus in terms of streaming video.
Perhaps there's something wrong with the drivers you have installed for those particular FireWire enclosures (I remember at least the older LaCie drives I played with demanded the use of specific LaCie drivers), or some settings with the firewire bus or the hard drive settings (caching? defragmenting?) to do something.
The only way to definitively prove it is the FireWire bus is to get an enclosure that uses a different chipset (preferably a newer one than the Oxford 911) and see if that suffers from dropped frames. But really, I've done many hours of direct streaming from a Sony analog-to-DV box to LaCie 60GB FW hard drives, and the only time I had dropped frames were when there were issues with the drive settings, and I believe your iMac has a faster CPU than the old G4 I used to play with did (400MHz or so) so I really doubt that's the problem.
Yes, the ADVC-100 is a FW product. That's why I was thinking it was a problem with the bandwidth needed to stream video from the Canopus to an external drive; that's double the bandwidth needed to stream to an internal drive, if it's not a direct transfer. Somehow, I doubt I'll be able to find out for sure if it's passing through the CPU and not doing a direct transfer without laying hands on a Firewire protocol analyzer, and those don't exactly grow on trees...
No custom drivers are needed. OS X has recognized them without having to install a driver ever since I first got the iMac and had 10.1.5 running on it. This machine is a G4/800, the first 15-inch flat-panel iMac.
I might have to get another enclosure, but I'd rather not spend money if I don't have to...
Even doing a non-direct transfer, needing double the bandwidth, FireWire still wouldn't be the bottleneck. DV, like I said, is a constant-bitrate codec that uses 3.6MB/s; FireWire has a maximum theoretical output of 50MB/s. It'd take a dozen multiple DV transactions to max out a single FireWire bus. If there's an issue with the FireWire, it's with one of the bridges, one of the drivers, or a setting involving caching. Or something involving the settings for the target drive when capturing in FCP.
I swear, I used to have a problem with something like this, and the solution is on the tip of my tongue, but I just can't remember... but again, that had to do with LaCie driver settings, and I'm not sure it'd even translate, since OSX has built-in drivers.
But it's really not a problem with the FireWire bus itself. A single FW bus should be more than capable of handling what you're doing.
What happens if you capture with iMovie instead of FCP-HD?
I'll have to try that tomorrow and see what happens. I would expect to get the same results, since video input is an OS function, but if I knew the answer, I wouldn't have to test.