DPK 1.0 RC is Available
I’m excited to announce that the Windows Media Photo Device Porting Kit (DPK) 1.0 Release Candidate (RC) is now available to evaluation licensees via SpecServer. If you have executed an evaluation license, you should have received an email with the details on how to retrieve this latest update.
As you can see, the version number has finally moved from the fractional values (0.7, 0.8, 0.9) to a whole integer (1.0), indicating that this release does include the specification and reference source code for the FINAL Windows Media Photo 1.0 compressed bit stream. We’re here; we’ve made it; we’re locking the bit stream and we will not make any further changes to the bit stream. This specification and reference source code can be used as the basis for production implementations of Windows Media Photo encoders and decoders.
With that said, there are a couple caveats. (Aren’t there always!)
The Windows Media Photo codec that has been released in Windows Vista Beta 2 (and WinFX Beta 2) has a but that effects the bit stream with tiled images. Therefore, while bit streams created with the DPK 1.0RC are correct, if tiling (specifically, vertical tiling) is enabled, these bit streams will not decode using Windows Vista Beta 2 or WinFX Beta 2. Any bit stream with no vertical tiling will work just fine.
So, since this is likely to trip up a whole bunch of developers that are working with both the DPK and Windows Vista (or WinFX), we elected to disable the vertical tiling feature in the DPK. This prevents the DPK code from generating bit streams that can’t be decoded on Windows Vista or WinFX.
If you need to work with tiling, there is a simple code change for the DPK to enable vertical tiling. If you do this, the DPK will generate correct v1.0 tiled bit streams, and the DPK code will be able to decode the bit streams it encodes. However, the bug in Windows Vista Beta 2 (and WinFX Beta 2) will prevent it from decoding these tiled bit streams.
The second caveat is with the version number in the header of the container. As defined in the Feature Specification, this one-byte version number should be set to 01 with the final bit stream. Version number 00 represents pre-released bit streams that aren’t guaranteed to be compatible with production codecs. Any version byte value greater than 01 is reserved for future use.
Therefore, since this DPK is generating correct, v1.0 final bit streams, you would think that our sample code that creates the container would set the version byte to 01. However, there’s another bug in Windows Vista Beta 2 that causes it not to recognize Windows Media Photo files unless this version byte is set to 00. The codec works fine, but the WIC API’s that automatically figure out which codec to use with which file will fail with Windows Media Photo files unless the version byte is set to 00.
So, to make sure things work correctly with Windows Vista Beta 2, the DPK sample code is still using 00 as the value for the version byte. For your production implementation, you code should be setting the version byte to 01. However, if you need to test with Windows Vista Beta 2, we recommend you stay with 00 until the next Windows Vista release.
We’ve called this release a “release candidate” rather than the final RTM version of the DPK because of these caveats and because we are continuing to run very extensive tests looking for any other bugs or omissions in the reference code. Our current plan is to provide another release – the 1.0 RTM version – around the time that Windows Vista RC1 is made available. Of course, if we uncover any important issues that need fixing before then, we’ll provide an update without waiting for Windows Vista.
Even after the RTM release, our plan is to provide regular updates. While we are guaranteeing that the bit stream will not change from this point forward, we will continue to expand and improve the documentation, provide more sample code and offer additional development and testing tools.
We are also actively working on a library of test images in all the different pixel formats and encoder option combinations to help test decoders. I’ll have more information on the availability of this image library in a couple weeks.