The video unit is identified in the Configuration ROM as a Unit Directory with Unit Specification ID 0x00A02D and Unit Software Version 0x000102. This unit is based on the IIDC 1.30 specification, with Apple-specific modifications. Developers can determine that the Apple-specific modifications are supported by finding the following two keys in the Root Directory: The Vendor ID key (value 0x000A27 or 0x080007) and the Model ID key (value 0x000008), when both present, uniquely identify the iSight camera.
iSight supports IIDC Video Format 0 (VGA), and (in Format 0) Mode 1, 2, and 3, as reported by the IIDC V_MODE_INQ_0 register.
Apple has added an additional vendor-specific Format (CIF) and Modes 8 through D (hex) for CIF-sized video used by Internet video chat software. The additional Modes have the parameters shown in “Table 1-1.”
Modes 8 and 9 send 5760 video packets per second, and Modes A through D send 4320 video packets per second. Image data is packed in the same way as in Format 0 Modes 1, 2, and 3. As explained in the“Introduction,” iSight will never send a video packet in the same isochronous cycle as it sends an audio packet.
Apple has added registers where the CIF formats may be detected, using the same bit conventions as defined by IIDC, as shown in “Table 1-2.”
The CIF Modes supported, as indicated by CIF_V_MODE_INQ_0, have the following bit assignments within CIF_V_MODE_INQ_0 (“Table 1-3”).
If a CIF Mode has been selected, it will be indicated in CIF_Cur_V_Mode as shown in “Table 1-4”:
To select a CIF video mode, store the desired CIF mode in CIF_Cur_V_Mode and do not change Cur_V_Mode. To select a VGA video mode, store the desired VGA mode in Cur_V_Mode, and do not change CIF_Cur_V_Mode. When a CIF mode has been selected, reading Cur_V_Mode will return 0xE0000000.
Apple has added additional registers for vendor-unique features, as shown in “Table 1-5.”
At power up, the iSight sets its exposure settings to known good values. If a driver on the host changes the settings, they may no longer have suitable values. For best results, the driver on the host should not change the settings unless requested by the user. At any time, the driver can revert to known good values by reading the default registers and restoring the settings to the recommended values.
Last updated: 2004-10-05