<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Robert A. Wlodarczyk's Blog (MSFT) : Windows Longhorn</title><link>http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx</link><description>Tags: Windows Longhorn</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Implementing a Custom CODEC for the WindowsCodecs Extensibility System</title><link>http://blogs.msdn.com/rwlodarc/archive/2005/08/10/implementing-a-custom-codec-for-the-windowscodecs-extensibility-system.aspx</link><pubDate>Thu, 11 Aug 2005 04:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:450265</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/450265.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=450265</wfw:commentRss><description>&lt;P&gt;As the name implies, a CODEC is a enCOder and DECoder. In the case of WindowsCodecs, Microsoft provides a set of APIs that allow our customers to implement their own CODEC for their custom image file format. Like this anyone who utilizes the WindowsCodecs APIs will be able to take advantage of all of the built-in CODECs as well as any custom CODECs installed on the machine. The &lt;A href="http://go.microsoft.com/fwlink/?linkid=50707" mce_href="http://go.microsoft.com/fwlink/?linkid=50707"&gt;WinFX Beta 1 SDK&lt;/A&gt; (&lt;A href="http://blogs.msdn.com/rwlodarc/archive/2005/08/10/450137.aspx" mce_href="http://blogs.msdn.com/rwlodarc/archive/2005/08/10/450137.aspx"&gt;with some minor modifications&lt;/A&gt;) provides the necessary headers and libs for taking the first steps in building your own CODEC.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;Implementing a Decoder&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;There are 2 interfaces that you must implement:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;IWICBitmapFrameDecode&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face="Courier New"&gt;IWICBitmapDecoder&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Implementation is found in &lt;FONT face="Courier New"&gt;AitDecoder.h|cpp&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;FONT size=4&gt;Implementing an Encoder&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/STRONG&gt;There are 2 interfaces that you must implement:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;IWICBitmapFrameEncode&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face="Courier New"&gt;IWICBitmapEncoder&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Implementation is found in &lt;FONT face="Courier New"&gt;AitEncoder.h|cpp&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;FONT size=4&gt;Miscellaneous Glue&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/STRONG&gt;In addition to implementing the 4 interfaces, you must setup the registry in order for WindowsCodecs to know about the custom CODEC. Ideally, these can be added as part of your CODEC's MSI package or as part of the &lt;FONT face="Courier New"&gt;DllRegisterServer()&lt;/FONT&gt; so that when you register the DLL on the machine these registry entries get set.&lt;/P&gt;
&lt;P&gt;Implementation is found in &lt;FONT face="Courier New"&gt;Main.cpp&lt;/FONT&gt; as well as some helpers in &lt;FONT face="Courier New"&gt;ClassFactory.h&lt;/FONT&gt;, &lt;FONT face="Courier New"&gt;RegistryValueManager.h&lt;/FONT&gt;, &lt;FONT face="Courier New"&gt;UnknownImpl.h&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;&lt;EM&gt;About the sample "AIT" CODEC&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;When my team and I were designing the "AIT" (Avalon Imaging Test) CODEC, we wanted to keep it as simple as possible. It doesn't utilize any compression methods. It's pretty much a straight "dump" of the pixel data to a persistent format. Also, we wanted to represent data as if this were a "production" CODEC, so concepts such as image blocks are similar to other formats, such as PNG. Within the AIT CODEC, a block takes the form of:&lt;/P&gt;
&lt;BLOCKQUOTE style="BACKGROUND-COLOR: #d3d3d3; MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;struct AIT_BLOCK&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t&amp;nbsp; name[4];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// used to distinguish the type of block&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// (first 3 bytes are ASCII,&amp;nbsp;last byte must be 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t frame_number;&amp;nbsp;// specifies which frame in the&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// image this data should be applied to&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t size;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// gives the number of bytes in&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// the data section of the block&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t&amp;nbsp; data[size];&amp;nbsp;&amp;nbsp;&amp;nbsp;// gives the raw data of the block&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// (must be interprested based upon&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// the name of the block)&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;There are 6 types of blocks that the AIT CODEC support -- AIT, COL, FRA, PAL, PRE, THU&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;AIT Block&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;This block must be the first block in the file and must be specified only once. It may be regarded as the header of AIT files.&lt;BR&gt;The data section of this block takes the form:&lt;/P&gt;
&lt;BLOCKQUOTE style="BACKGROUND-COLOR: #d3d3d3; MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;struct AIT_BLOCK_DATA&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uint32_t num_frames; // number of frames in the images (permitted to be 0)&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;COL Block&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR&gt;This block specifies a color context to be applied either globally to the image (when &lt;FONT face="Courier New"&gt;AIT_BLOCK.frame_number == 0xFFFFFFFF&lt;/FONT&gt;) or to a frame (when &lt;FONT face="Courier New"&gt;AIT_BLOCK.frame_number != 0xFFFFFFFF&lt;/FONT&gt;).&lt;BR&gt;The field &lt;FONT face="Courier New"&gt;AIT_BLOCK.size&lt;/FONT&gt; specifies the size in bytes of the ICM profile to be used in this color context.&lt;BR&gt;The data section is the value of those bytes.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;FRA Block&lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;This block specifies the bitmap data of a frame. The &lt;FONT face="Courier New"&gt;AIT_BLOCK.frame_number&lt;/FONT&gt; must be a value in the range [0, N) where N is the number of frames in the image (as specified in the AIT block).&lt;BR&gt;The data section of this block takes the form:&lt;/P&gt;
&lt;BLOCKQUOTE style="BACKGROUND-COLOR: #d3d3d3; MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;struct FRA_BLOCK_DATA&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BITMAP_SOURCE_DATA bitmap_source;&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;where &lt;FONT face="Courier New"&gt;BITMAP_SOURCE_DATA&lt;/FONT&gt; takes the form:&lt;/P&gt;
&lt;BLOCKQUOTE style="BACKGROUND-COLOR: #d3d3d3; MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;struct BITMAP_SOURCE_DATA&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t width;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// width dimension of the image&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t height;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// height dimension of the image&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double&amp;nbsp;&amp;nbsp; dpi_x;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;resolution (pixels/inch) of image in X direction&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double&amp;nbsp;&amp;nbsp; dpi_y;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;resolution (pixels/inch) of image in&amp;nbsp;Y direction&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t stride;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// the number of bytes needed to&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;encode one scanline of the bitmap&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GUID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pixel_format;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// the GUID of the pixel format of this bitmap&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;valid values include those recognized&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // in wincodec.h (GUID_WICPixelFormat*)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t&amp;nbsp; bitmap_data[stride * height]; // all data values one scanline at a time beginning&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// at the top-most scanline and continuing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // to the bottom-most scanline&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;(Here, a double is an IEEE 64-bit floating-point number and GUID is 16 bytes used to uniquely identify an object.)&lt;BR&gt;A FRA block, therefore, is simply the &lt;FONT face="Courier New"&gt;BITMAP_SOURCE_DATA&lt;/FONT&gt; needed to represent that frame.&lt;BR&gt;&lt;FONT face="Courier New"&gt;BITMAP_SOURCE_DATA&lt;/FONT&gt; contains a variety of fields.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;PAL Block&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;This block specifies a palette to be either applied to the image as a whole or to an individual frame (using the same logic as outlined in the COL block).&lt;BR&gt;The data section of this block takes the form:&lt;/P&gt;
&lt;BLOCKQUOTE style="BACKGROUND-COLOR: #d3d3d3; MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;struct PAL_BLOCK_DATA&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t num_colors;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// number of colors in this palette (must be &amp;gt; 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WICColor colors[num_colors]; // gives those colors as WICColors (defined in wincodec.h)&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;PRE Block&lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;This block specifies a preview bitmap that may be applied to the image as a whole (&lt;FONT face="Courier New"&gt;AIT_BLOCK.frame_number must equal 0xFFFFFFFF&lt;/FONT&gt;).&lt;BR&gt;Its data section is simply a &lt;FONT face="Courier New"&gt;BITMAP_SOURCE_DATA&lt;/FONT&gt; (similar to a FRA block).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;THU Block&lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;This block specifies a thumbnail bitmap the may be applied to the entire image or a single frame (as specified in the save rules as COL’s).&lt;BR&gt;Its data section is simply a &lt;FONT face="Courier New"&gt;BITMAP_SOURCE_DATA&lt;/FONT&gt; (similar to a FRA block).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Acknowledgements&lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;This CODEC was originally written by one of the testers on my team, Frank Krueger (but has since left Microsoft). Also, the code was reviewed by our development leads, Rajat Goel and Thomas Olsen. Many thanks to all of them for their help and effort in getting this sample posted.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;CODE (Beta 1): &lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="http://code.msdn.microsoft.com/wictools" mce_href="http://code.msdn.microsoft.com/wictools"&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;AitCodec.zip&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;BETA 1 SDK work around: &lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="http://code.msdn.microsoft.com/wictools" mce_href="http://code.msdn.microsoft.com/wictools"&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;UpdatedInclude.zip&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=450265" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Imaging/default.aspx">Imaging</category></item><item><title>Working on implementing a CODEC</title><link>http://blogs.msdn.com/rwlodarc/archive/2005/08/10/450137.aspx</link><pubDate>Thu, 11 Aug 2005 01:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:450137</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/450137.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=450137</wfw:commentRss><description>&lt;P&gt;As I mentioned last week, I would be sharing a test implementation of a CODEC built for the WindowsCodecs extensibility system. This work is progressing along nicely... the CODEC is full written and working. However, there were a few snags that I hit... which, unfortunately, are snags that will be hit by others as well. Here are the work-arounds for the two issues:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;WINCODEC_SDK_VERSION&lt;/FONT&gt; is incorrect. In the wincodec.h that is shipped with the WinFX Beta 1 SDK, this version is set to &lt;FONT face="Courier New"&gt;0x0228&lt;/FONT&gt;. The correct version is &lt;FONT face="Courier New"&gt;0x0229&lt;/FONT&gt;. 
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;On line&amp;nbsp;213 of wincodec.h, replace: &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;#define&lt;/FONT&gt; WINCODEC_SDK_VERSION 0x0228&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;with 
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;#define&lt;/FONT&gt; WINCODEC_SDK_VERSION 0x0229&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;LI&gt;If you &lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;#include&lt;/FONT&gt;&lt;FONT size=+0&gt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;&amp;lt;wincodec.h&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt; you'll get build errors: 
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;.&lt;BR&gt;.&lt;BR&gt;.&lt;BR&gt;c:\program files\microsoft sdks\winfx\include\wincodec.h(463) : error C2061: syntax error : identifier '__RPC__in'&lt;BR&gt;c:\program files\microsoft sdks\winfx\include\wincodec.h(466) : error C2061: syntax error : identifier '__RPC__inout'&lt;BR&gt;c:\program files\microsoft sdks\winfx\include\wincodec.h(473) : error C2061: syntax error : identifier '__RPC__out' &lt;BR&gt;.&lt;BR&gt;.&lt;BR&gt;.&lt;BR&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;In order to work-around this,&amp;nbsp;please download&amp;nbsp;the&amp;nbsp;&lt;A href="http://www.rawweb.net/samples/UpdatedInclude_Beta1.zip"&gt;rpcsal.h&lt;/A&gt; and&amp;nbsp;on line 32 of wincodec.h add: 
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;#include&lt;/FONT&gt; "rpcsal.h"&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Alternatively, you can get the updated wincodec.h and rpcsal.h from &lt;A href="http://www.rawweb.net/samples/UpdatedInclude_Beta1.zip"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As for the CODEC itself, I should have it up here by the end of the week. It's code complete, I just need to write it up a bit before I post it.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=450137" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Imaging/default.aspx">Imaging</category></item><item><title>Introducing WindowsCodecs!</title><link>http://blogs.msdn.com/rwlodarc/archive/2005/08/04/447832.aspx</link><pubDate>Thu, 04 Aug 2005 21:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:447832</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/447832.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=447832</wfw:commentRss><description>&lt;P&gt;Last night, Pablo made a &lt;A href="http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.windows.developer.winfx.avalon&amp;amp;mid=a87c2ecf-30cb-4d23-a21c-a40cd3565764"&gt;post to the Avalon newsgroups about WindowsCodecs&lt;/A&gt;... To quote him directly:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px; BACKGROUND-COLOR: #d3d3d3"&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;We are pleased to announce that the documentation for Avalon's Windows CODECs is now posted on MSDN.&lt;BR&gt;&lt;BR&gt;&lt;A class=WNAnc href="http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/wic/wiclh/imagingcodec/overviews/aboutwindowsimagingcodec.asp" target=winout&gt;http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/wic/wiclh/imagingcodec/overviews/aboutwindowsimagingcodec.asp&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;This component of Avalon/Windows Presentation Foundation provides an extensible mechanism for supporting different imaging formats.&amp;nbsp; An application that uses these APIs can open/save images in multiple formats, both provided by Microsoft and third parties.&amp;nbsp; The individual CODECs are implemented in unmanaged code.&amp;nbsp; The imaging infrastructure can be used both from unmanaged or managed code. &lt;BR&gt;&lt;A class=WNAnc href="http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/wcp_conceptual/html/4b9264c8-44ca-4f8b-b9b0-3b52ff106d35.asp" target=winout&gt;http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/wcp_conceptual/html/4b9264c8-44ca-4f8b-b9b0-3b52ff106d35.asp&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;Along with an extensible image format infrastructure (including registration, discovery, and arbitration), the architecture includes extensibility for metadata formats.&lt;BR&gt;&lt;BR&gt;An excellent overview was given at the WinHEC conference earlier in the year. &lt;BR&gt;&lt;A class=WNAnc href="http://download.microsoft.com/download/9/8/f/98f3fe47-dfc3-4e74-92a3-088782200fe7/TWPR05004_WinHEC05.ppt" target=winout&gt;http://download.microsoft.com/download/9/8/f/98f3fe47-dfc3-4e74-92a3-088782200fe7/TWPR05004_WinHEC05.ppt&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;This architecture provides the basis for RAW support by different companies &lt;BR&gt;&lt;A class=WNAnc href="http://www.microsoft.com/presspass/press/2005/jun05/06-01RAWWindowsPR.mspx" target=winout&gt;http://www.microsoft.com/presspass/press/2005/jun05/06-01RAWWindowsPR.mspx&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;In addition to imaging extensibility, the additional functionality in other areas provided by Avalon , such as text and graphics, makes Avalon the ideal platform for imaging applications, including for web based Windows applications.&amp;nbsp; A couple of additional components that complement this functionality are Longhorn/Windows Vista's Next Generation Print Path, which enables higher color fidelity for the print path, and Avalon's use of Direct3D to accelerate operations with images.&lt;BR&gt;&lt;BR&gt;We welcome your feedback and questions, and hope to have the opportunity to chat with you about this and other Avalon/Windows Presentation Foundation technologies at the Professional Developer Conference next month in Los Angeles (&lt;A class=WNAnc href="http://msdn.microsoft.com/events/pdc/" target=winout&gt;http://msdn.microsoft.com/events/pdc/&lt;/A&gt;).&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Additionally, once you install the &lt;A href="http://go.microsoft.com/fwlink/?linkid=50707"&gt;WinFx SDK&lt;/A&gt;, you'll find:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;wincodec.h&lt;/STRONG&gt; and &lt;STRONG&gt;wincodecsdk.h&lt;/STRONG&gt;&amp;nbsp;in C:\Program Files\Microsoft SDKs\WinFX\Include 
&lt;LI&gt;&lt;STRONG&gt;windowscodecs.lib&lt;/STRONG&gt; in C:\Program Files\Microsoft SDKs\WinFX\Lib 
&lt;UL&gt;
&lt;LI&gt;for x64 version of this lib, use: C:\Program Files\Microsoft SDKs\WinFX\Lib\AMD64 
&lt;LI&gt;for ia64 version of this libe, use C:\Program Files\Microsoft SDKs\WinFX\Lib\ia64&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Stay tuned for a bunch of samples... those will be coming within the next week.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=447832" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Imaging/default.aspx">Imaging</category></item><item><title>My next Avalon Imaging sample...</title><link>http://blogs.msdn.com/rwlodarc/archive/2004/01/16/59604.aspx</link><pubDate>Sat, 17 Jan 2004 04:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:59604</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/59604.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=59604</wfw:commentRss><description>&lt;DIV&gt;I just posted my next Avalon Imaging sample. This one is an entire one devoted to ImageEffectGlow.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;More samples coming next week!&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=59604" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category></item><item><title>Avalon Imaging Samples</title><link>http://blogs.msdn.com/rwlodarc/archive/2004/01/15/59274.aspx</link><pubDate>Fri, 16 Jan 2004 05:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:59274</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/59274.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=59274</wfw:commentRss><description>&lt;DIV&gt;Recently I've been playing around with the PDC build of Longhorn at home along with the PDC build of VS.net Whidbey. I figured that I would write up some samples using both of these. In particular, I wanted to write some samples of how to use some Avalon Imaging APIs.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://www.longhornblogs.com/rwlodarc/archive/2004/01/15/2142.aspx"&gt;I just posted the first in a series of samples that I will be writing&lt;/A&gt;. All of these posts will be placed on &lt;A href="http://www.longhornblogs.com/rwlodarc"&gt;my LonghornBlogs blog&lt;/A&gt; since I'd like to keep a collection of those sample there. &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;The first sample is an example of how to use some of the Avalon Imaging ImageEffects. This covers some of the classes starting with the name of: &lt;FONT face="Courier New"&gt;MSAvalon.Windows.Media.ImageEffect*&lt;/FONT&gt;.&amp;nbsp; &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Please leave me feedback on the sample in the comments section. I'd love to hear what people think...&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Enjoy :)&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=59274" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category></item><item><title>Interesting read...</title><link>http://blogs.msdn.com/rwlodarc/archive/2003/10/15/32175.aspx</link><pubDate>Thu, 16 Oct 2003 06:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:32175</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/32175.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=32175</wfw:commentRss><description>&lt;A href="http://weblogs.asp.net/donxml/"&gt;DonXML&lt;/A&gt; discusses some interesting viewpoints on &lt;A href="http://weblogs.asp.net/donxml/posts/32121.aspx"&gt;SVG and Avalon&lt;/A&gt;... SVG is definitely a very hot standard. I'm very excite about it as I &lt;A href="http://weblogs.asp.net/rwlodarc/posts/9996.aspx"&gt;wrote about it back in July&lt;/A&gt;.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=32175" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/.NET+-+General/default.aspx">.NET - General</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category></item><item><title>Longhorn Blogs!</title><link>http://blogs.msdn.com/rwlodarc/archive/2003/09/30/29726.aspx</link><pubDate>Tue, 30 Sep 2003 07:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:29726</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/29726.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=29726</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://radio.weblogs.com/0001011/2003/09/29.html#a4842"&gt;Scoble points to his new Longhorn specific blog&lt;/A&gt;... I've got one too courtesy of &lt;A href="http://weblogs.asp.net/rmclaws/"&gt;Robert McLaws&lt;/A&gt;. Here's the &lt;A href="http://www.longhornblogs.com/rwlodarc"&gt;Cowboy Wlodarczyk Longhorn Blog&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Also check out &lt;A href="http://www.longhornblogs.com"&gt;www.longhornblogs.com&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=29726" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category></item><item><title>Longhorn, MSBuild...</title><link>http://blogs.msdn.com/rwlodarc/archive/2003/09/16/27874.aspx</link><pubDate>Wed, 17 Sep 2003 03:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:27874</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/27874.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=27874</wfw:commentRss><description>&lt;P&gt;Two things to watch out for:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/longhorn/"&gt;Longhorn Developer Center&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.gotdotnet.com/korbyp/permalink.aspx/c6c8775e-74b3-4d9c-971b-615f744cc1e5"&gt;MSBuild talks at PDC&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=27874" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/.NET+-+General/default.aspx">.NET - General</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category></item><item><title>Developers 37 times!!!</title><link>http://blogs.msdn.com/rwlodarc/archive/2003/09/13/27404.aspx</link><pubDate>Sat, 13 Sep 2003 07:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:27404</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/27404.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=27404</wfw:commentRss><description>&lt;A href="http://www.gotdotnet.com/team/dbox/"&gt;Don Box&lt;/A&gt; &lt;A href="http://www.gotdotnet.com/team/dbox/default.aspx?key=2003-09-13T05:04:32Z"&gt;points to&lt;/A&gt; this &lt;A href="http://www.gotdotnet.com/team/redvsblue/"&gt;very funny PDC spoof video&lt;/A&gt;. Go check it out.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=27404" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/General+Rants/default.aspx">General Rants</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/.NET+-+Web+Services/default.aspx">.NET - Web Services</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/.NET+-+General/default.aspx">.NET - General</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category></item><item><title>WS's and Longhorn</title><link>http://blogs.msdn.com/rwlodarc/archive/2003/09/07/26667.aspx</link><pubDate>Mon, 08 Sep 2003 05:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:26667</guid><dc:creator>RWlodarczyk</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/rwlodarc/comments/26667.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rwlodarc/commentrss.aspx?PostID=26667</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://news.com.com/2010-1071_3-5069441.html"&gt;Charles Cooper of CNET&lt;/a&gt; has an interesting take on Longhorn and Web Services.&lt;/p&gt;
&lt;p&gt;Ok, so he says that big companies aren't abandoning ship on J2EE just because Ballmer says .NET is better... But in fact, if you look at the toolset provided by VS.net, developing Web Services with .NET is far easier than anything in the Java world. I suppose that Java developers don't realize that. Also, Charles says that everything that Java has Microsoft's gradually reinvented... I personally wouldn't say that that is accurate. Ok, from the naive look you can say that .NET and Java &amp;#8220;are the same&amp;#8221;, but fundamentally they aren't. Performance wise .NET is better. GC is handled differently in .NET than in Java. Creating Windows (or windowed) applications is different (ie: they actually &lt;em&gt;look&lt;/em&gt; like &lt;em&gt;real&lt;/em&gt; MFC Windows Applications, unlike Swing). .NET has this ubiquoty about it, where even if you look at mobile devices, you can create applications on a Toshiba Pocket PC and not have to worry whether it will run on an iPaq. This is simply not the case with J2ME. I won't even get started about development for .NET on the SmartPhone compared to development of applications for Java cell phones.&lt;/p&gt;
&lt;p&gt;In terms of Web Services, show me another platform (eh em, Java) where you have fantstic things like the Web Services Enhancement SDK (that is for .NET!) (&lt;a href="http://microsoft.com/downloads/details.aspx?familyid=21fb9b9a-c5f6-4c95-87b7-fc7ab49b3edd&amp;displaylang=en"&gt;v2 TP&lt;/a&gt;, &lt;a href="http://microsoft.com/downloads/details.aspx?familyid=06255a94-2635-4d29-a90c-28b282993a41&amp;displaylang=en"&gt;v1&lt;/a&gt;). This SDK implements not-yet-standards or some proof-of-concept things. Show me something like this for Java developers. Ok, ok, IBM has something supporting some of the things in WSE, but not as innovative or &amp;#8220;risk-ey&amp;#8220; as WSE. As &lt;a href="http://www.gotdotnet.com/team/dbox"&gt;Don Box&lt;/a&gt; pointed out a while ago, &lt;a href="http://www.gotdotnet.com/team/dbox/default.aspx?key=2003-07-29T06:18:05Z"&gt;WSE is for the Web Service enthusiasts out there&lt;/a&gt;. There is simply nothing like this for Java.&lt;/p&gt;
&lt;p&gt;So simply put, yes .NET is better. Looking into the future, the future looks very bright for .NET support. Look for more insanely awesome stuff to come. If you're going to the PDC, you'll love it. For those who aren't going, I'm sure plenty of bloggers will be blogging about the insanely awesome stuff.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=26667" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/.NET+-+Web+Services/default.aspx">.NET - Web Services</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/.NET+-+General/default.aspx">.NET - General</category><category domain="http://blogs.msdn.com/rwlodarc/archive/tags/Windows+Longhorn/default.aspx">Windows Longhorn</category></item></channel></rss>