During the Windows Phone 7 debut/craze in February (Mobile World Congress), I made a connection between its UI and the Zune software’s “Iris”-powered UI. While I don’t purport to know exactly what drives the phone experience – I could be way off – I’m merely making an educated guess based on two facts: the experiences share the same look, feel, and behavior; and the team responsible for both the Phone and Zune are one and the same.
So, Windows Phone 7 aside, what the heck is “Iris”?
Microsoft Iris appears to be an offshoot of Microsoft’s Media Center .NET-based UI framework, with changes in areas such as its markup language, providing sophisticated scripting opportunities; and in its structure, increasing its modularity allowing it to be ported to various (.NET enabled) platforms with minimal effort. Its only to-date retail manifestation is the Zune PC software, residing in assemblies UIX.dll, UIX.RenderAPI.dll, and UIXControls.dll specifically. As there’s no documentation whatsoever, writing a complete piece on Iris is impossible. Instead, I will provide notes regarding its capabilities, sectioned off for organizational purposes. None of the information below has been confirmed by Microsoft. Your mileage will vary.
NOTE: This information was put together based on information sucked out of the Zune PC software. I have yet to disassemble the Windows Phone 7 components released at MIX today. I will examine these components and create a new post as needed.
Input
- Remote control support (your usual button scan codes)
Imaging
- Anti-aliasing support, “method” used is unknown.
- Raw image formats (A8R8G8B8, X8R8G8B8, A8)
- Surface image formats (A8, ARGB16_1555, ARGB32, YUY2, etc.)
- External image formats (extensible)
Animation
- 3D space support (cameras, axis support)
- DirectX 9 w/ GDI (software) fallback (likely to be upgraded for DirectX 10+)
- Rendering quality profiles, adjustable on-the-fly depending on conditions
- Slew of built-in transitions (e.g. alpha blending, camera twirling, orientation shifts, scaling, etc.)
- External input support (extensible)
Data
- External input support (extensible)
Sound
- DirectSound, WaveAudio, and XAudio framework support
- Built-in PCM support, extensible of course
Markup
- XML-based w/ scripting support (UIX)
- Loaded and compiled into a platform-agnostic byte-code
- Platform-specific virtual machine to support byte-code input
- Supports various ‘types’ (e.g. UI, Class, Effect, DataType, DataQuery)
- Approximately 47 tuned virtual machine “opcodes” (e.g. MethodInvokePeek, PushNull), not including the 18 “operations” (e.g. MathModulus)
Video
- Television and monitor support (NTSC, PAL, PAL60 baked in)
Accessibility
- Right-to-left support
- High contrast modes available
Intellectual Property Protection
- Uses a method of signature comparison to ensure only Microsoft (at this time) can fully utilize the Iris rendering platform. Subverting the assembly check is possible but Microsoft offers a useful “tool mode” which disables rendering code (e.g. useful for scripting).
