Apple recently released FireWire SDK 16, which has expanded support for AV/C. There's a sample application that allows you to record from D-VHS, and another that allows your Mac to behave like a virtual D-VHS device. Pretty cool stuff.http://developer.apple.com/firewire/index.html
From the read me:
This SDK includes updated system software components and source code, and new and updated FireWire sample code.
This SDK also includes a new project, FireWireMPEG, which creates a framework that supports transmission and reception of MPEG2-TS packets over FireWire conforming to the IEC 61883-4 specification. Two sample applications are included that use the FireWireMPEG.framework.
Also, the pre-release components packages include new API changes in IOFireWireAVC that may be included in the next major release of Mac OS X. These API changes simplify the creation of applications that provide virtual AV/C target functionality, and allow multiple applications that contain AV/C target services to function as a single multi-function virtual AV/C device. Refer to the documentation included with the pre-release of IOFireWireAVC for more details.
This SDK is for developer use only. It may not be redistributed by any means in whole or in part; Customers should not be directed to install the SDK.
Installing the SDK
To install this SDK, you must have Mac OS X and the Developer Tools installed. In the Finder, navigate to the mounted disk titled "FireWire SDK 16" and double-click the "FireWireSDK16.pkg" package.
You can use SDK 16 on Mac OS 10.2.0 and later without installing any additional pieces, however please note that systems that have been updated through the software update service will have headers that are outdated with respect to the installed software. (It is generally the policy of Software Update to not include header files.)
If you intend to use this SDK with the system components already installed on your system, you should install the system software package corresponding to the version of Mac OS X with which you are working. This ensures your header files will match your installed software.
To install (or re-install) the original Mac OS X 10.2.6 FireWire system components, use the "Jaguar_10_2_6_FireWire.pkg" installer package in the "Jaguar 10.2.6 Components" folder.
This SDK includes pre-release, evaluation versions of the Mac OS X FireWire software. We recommend working with these pre-release components. To install them, double-click the "FireWire_PreRelease.pkg" installer package in the "PreRelease Components" folder.
What's in SDK 16?
This SDK contains source code and binary installers for the current (Mac OS X 10.2.6) version of the FireWire system software. A debug package is included. The debug package will print diagnostic information to the system log (/var/log/system.log) that may be useful when writing drivers.
Please note: The sources for AppleLynx and AppleFWOHCI (the FWIMs) are not included and are not available.
Sample code and corresponding pre-built binaries are included in this SDK and will be installed in the standard developer tools install folders. This may overwrite any versions of the tools and sample code you already have installed. The following folders are affected:
The SDK also installs a main SDK folder to /Developer/FireWire SDK 16 for Mac OS X/ that has these main directories:
â€¢ "Jaguar 10.2.6 Components" â€“ Installer packages and source code for the FireWire system components for Mac OS X 10.2.6.
â€¢ "IOFireWireIP (pre-release)" - Installer packages and source code for a prerelease version of IOFireWireIP (IP1394 support).
â€¢ "Documentation" â€“ Basic documentation for components in this SDK. (PDFs, diagrams, and HeaderDoc generated HTML)
â€¢ "Examples" - Sample code (link to /Developer/Examples/IOKit/firewire)
â€¢ "Tools" - Pre-built command line tools (link to /Developer/Tools/fw)
â€¢ "Links" - Links to useful web pages.
This is the SDK starting point.
SDK 16 includes source code for most of the Mac OS X FireWire software stack.
The FireWire software stack includes the following main components:
â€¢ General FireWire family services
â€¢ SBP-2 services (both in-kernel and user space)
â€¢ AV/C services (both in-kernel and user space)
â€¢ A DV device driver
â€¢ A device driver for IP (Internet Protocol) over FireWire
There are SBP-2 services in the kernel and in user space. The SBP-2 "user client" provides access to the SBP-2 services from user space.
This SDK includes SBP-2 sample code. You can write an application to drive SBP-2 devices, such as printers, scanners, and still cameras with this sample code. You could also write PPDT (IEEE 1394.3) software using the SBP-2 services. Full source code for the SBP-2 stack is included, as noted above. If your device uses a SCSI command set over SBP-2, you should investigate the SCSITask User Client (located in IOSCSIArchitectureModelFamily.kext) instead of the SBP-2 user client. It provides a much higher level interface for working with SCSI architecture model devices from user space.
About the DV driver
The DV driver is a user-space QuickTime component. This SDK includes the DV driver source code and sample code for test applications that transmit and receive DV. Also included is a QuickTime video digitizer component (vdig) that enables full use of the Sequence Grabber, a sample application to test it, and a simple application to output DV. DV API documentation is included.
About the sample code and applications
The following is a summary of the included example projects. Each project includes a more detailed readme file. Please consult the project readme file for details on that project or application
DamBusters - Configuration ROM browser application. (The source for this application is not included.)
FireLog - High speed logging tool, designed to be able to keep up with FireWire's packet rate.
FWLib â€“ Set of source files containing objects that developers can use to apply Mac OS X FireWire technologies quickly.
FWSampleProject HP (Hot Plug)â€“ A user space driver and application combination that demonstrates how to dynamically discover and open user space drivers for FireWire devices.
FWUtil â€“ General purpose command-line test tool.
IOFireWireLibBasics â€“ Simple configuration ROM reader sample code.
IOFireWireLibIsochTest â€“ Simple isochronous transmit program.
IOFireWireLibPacketQueueTest â€“ Simple packet receiver sample code.
IOFireWireLibVersionTest â€“ Demonstrates how to obtain the version number of the installed FireWire user client.
IsocTest â€“ Sample DV input and output sample code. (DV developers should use standard QuickTime APIs to access DV, but the command-line programs may be useful to study how the lower levels work.)
Mr. Registry - IORegistry exploration application
Notifier â€“ Shows how to receive notifications about FireWire events, such as devices being added to the bus.
QTComponents â€“ Simple Cocoa application for browsing installed QuickTime components
ResetStorm - FireWire bus reset stress testing application
SBP2SampleProject and SBP2Sample-SingleThread - User-space SBP-2 device driver and application sample code.
Transcalent â€“ Sample peer-to-peer protocol application and source code.
FireWireMPEG â€“ Source code to build the FireWireMPEG.framework which supports IEC 61883-4 transmission and reception of MPEG2-TS packets over firewire.
DVHSCap â€“ Sample application that uses the FireWireMPEG.framework to import and export streams from DVHS devices.
VirtualDVHS â€“ An example application that uses the FireWireMPEG.framework, and the new IOFireWireAVC APIs to allow the Mac to emulate a DVHS device.
May 14, 2003