So, this thread seems to be talking about exactly the kind of thing I'm trying to accomplish: find a connected camera; ask it what capabilities it has; and then send (undocumented) PTP commands to it to do other things, like grab the current viewfinder image.
But, the code posted in that thread references symbols that I can't find any documentation for or definitions of, like kICAMessageCameraPassThrough (which seems to be the ICAObjectSendMessage() argument that lets you compose raw PTP commands). That sounds like something that should be in ICACamera.h or one of the other ICA headers in ImageCapture.framework, but it's not.
Then I found Image Capture SDK for Mac OS X v10.4 (from here) which contains those symbols. So, this sounds like, I have to install this API in order to do these things. A little odd that it's not installed by default, but whatever.
But... WTF is this thing? This DMG doesn't include an installer. It includes an XCode project that builds an application, not a framework (and that application appears to do nothing).
This must be some new usage of the word "SDK" with which I was previously unfamiliar.
- Update: Current best guess is that there is no installer because the ImageCapture API is pre-installed on 10.x as a part of Carbon... but, what's in this DMG documents some hypothetical future version of this SDK, so a bunch of interesting symbols that really oughta someday be a part of it are just dumped willy-nilly into the sample application?
And to add insult to injury, the definitions of the structures in the header files use C++ syntax that doesn't work from Objective C code. Nice. (Update: apparently .mm means "ObjC++" which is a bastard hybrid that mostly works.)
Can any of you make any sense out of this? Or do you know someone at Apple who might be able to? Since that mailing list archive helpfully obfuscates email addresses (fuck you, you fucking fucks) I can't even mail any of the people involved in that thread to ask for clues.
I did get a copy of Canon's "official" SDK, but it looks kind of horrible, so I'd rather do things by following the Apple Party Line instead, since that really seems like it would have to be the least painful route. (Likewise for any approach that involves trying to port some janky-assed Linux software to MacOS.)
Maybe I should be doing this with some other API instead, but I can't tell. The USB stuff in IOkit.framework seems way too low level; like, I saw no way to ask a device, "are you a camera? do you provide pictures?" but only ways to ask them things like, "are you product 0x1ABC from vendor 0xFF0A?"
Something I read somewhere said that Quicktime was the way to go for getting images out of still cameras, but my experience with all the Quicktime-related docs on developer.apple.com is that they are basically, "this is how it used to work in MacOS 8." What's up with that?
(I have a hard time seeing it this way, but apparently that's not actually an anus with lips. It's the other way around: it's a head with two snouts, and the goatse in the middle is two of the eyes, not a mouth.)
If we accept all the Star Wars films as the same canon, then a lot that happens in the original films has to be reinterpreted in the light of the prequels. As we now know, the rebel Alliance was founded by Yoda, Obi-Wan Kenobi and Bail Organa. What can readily be deduced is that their first recruit, who soon became their top field agent, was R2-D2. [...] Much of Obi-Wan's behaviour in this film, and Yoda's in the next, can best be understood if they are frankly scared to death of what Luke might become.
This is the best Star Wars nerding I've read since The Endor Holocaust...
It is named the Proteus, and is the first of what might be a long line of wave adaptive modular vessels -- WAM-V for short -- developed by Ugo Conti, an engineer and inventor. Conti calls it "the prototype of a new class of vessel."
Using technology developed by Conti's El Cerrito Marine Advanced Research Inc., the WAM-V is "a new class of watercraft ... that delivers a radically new seagoing experience." It has twin hulls, like a catamaran, connected to each other and a control cabin by four metal legs. The legs ride on titanium springs -- like shock absorbers -- that allow the WAM-V to adjust to the surface of the water -- to flex like knees.
The cabin, which sleeps four, can be lowered into the water -- "like a helicopter landing," Conti said -- and sail off on its own.
Jim Jessie, a yachtsman who has been sailing San Francisco Bay for more than 65 years, has never seen anything like it. "It's different," he said as he watched the Proteus slink over the wake of a passing boat, its hulls flexing. "It wiggles like a porpoise or a whale," he said.