<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>AsfMojo</title><link>http://asfmojo.codeplex.com/project/feeds/rss</link><description>AsfMojo is an open source .NET ASF parsing library, providing support for parsing WMA audio and WMV video files.       It offers classes to create streams from packet data within a media file, gather file statistics and extract audio segments or frame accurate still frames.</description><item><title>Source code checked in, #16811</title><link>http://asfmojo.codeplex.com/SourceControl/changeset/changes/16811</link><description>Upgrade&amp;#58; New Version of LabDefaultTemplate.xaml. To upgrade your build definitions, please visit the following link&amp;#58; http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkId&amp;#61;254563</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 21:13:55 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16811 20121001091355P</guid></item><item><title>Source code checked in, #16810</title><link>http://asfmojo.codeplex.com/SourceControl/changeset/changes/16810</link><description>Checked in by server upgrade</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 21:12:48 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16810 20121001091248P</guid></item><item><title>New Post: FPS</title><link>http://asfmojo.codeplex.com/discussions/282496</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hi Chris - better late than never - you can get the FPS from the AsfExtendedStreamProperties object, below an example:&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;AsfFile asfFile = &lt;span style="color:blue"&gt;new&lt;/span&gt; AsfFile(testVideoFileName);
AsfExtendedStreamProperties asfExtendedStreamProperties = asfFile.GetAsfObject&amp;lt;AsfExtendedStreamProperties&amp;gt;();

&lt;span style="color:blue"&gt;if&lt;/span&gt; (asfExtendedStreamProperties.AvgTimePerFrame &amp;gt; 0)
{
    &lt;span style="color:blue"&gt;double&lt;/span&gt; frameRate = 1.0 / TimeSpan.FromTicks((&lt;span style="color:blue"&gt;long&lt;/span&gt;)asfExtendedStreamProperties.AvgTimePerFrame).TotalSeconds;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Sat, 08 Sep 2012 14:53:33 GMT</pubDate><guid isPermaLink="false">New Post: FPS 20120908025333P</guid></item><item><title>New Post: Updating ContentProperties</title><link>http://asfmojo.codeplex.com/discussions/393380</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;gxdata - this class is used by the fluent interface. You can look at the interface IAsfFileUpdateOptions to see what properties you can update:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;interface&lt;/span&gt; IAsfFileUpdateOptions
    {
        IAsfFileUpdateOptions WithFileCreationTime(DateTime fileCreationTime);
        IAsfFileUpdateOptions WithAuthor(&lt;span style="color: blue;"&gt;string&lt;/span&gt; author);
        IAsfFileUpdateOptions WithDescription(&lt;span style="color: blue;"&gt;string&lt;/span&gt; description);
        IAsfFileUpdateOptions WithTitle(&lt;span style="color: blue;"&gt;string&lt;/span&gt; title);
        IAsfFileUpdateOptions WithRating(&lt;span style="color: blue;"&gt;string&lt;/span&gt; rating);
        IAsfFileUpdateOptions WithCopyright(&lt;span style="color: blue;"&gt;string&lt;/span&gt; copyright);
        &lt;span style="color: blue;"&gt;void&lt;/span&gt; Update(&lt;span style="color: blue;"&gt;string&lt;/span&gt; targetFileName = &lt;span style="color: blue;"&gt;null&lt;/span&gt;);
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;There's also an example on how to use this in the unit tests:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;            AsfFile.From(testVideoFileName)
                   .WithFileCreationTime(DateTime.Parse(&lt;span style="color: #a31515;"&gt;"2/27/2011"&lt;/span&gt;))
                   .WithAuthor(&lt;span style="color: #a31515;"&gt;"Fred Fish"&lt;/span&gt;)
                   .WithDescription(&lt;span style="color: #a31515;"&gt;"Some lengthy description of the content"&lt;/span&gt;)
                   .WithCopyright(&lt;span style="color: #a31515;"&gt;"Copyright (c) 2011"&lt;/span&gt;)
                   .WithTitle(&lt;span style="color: #a31515;"&gt;"Some title"&lt;/span&gt;)
                   .WithRating(&lt;span style="color: #a31515;"&gt;"5.0"&lt;/span&gt;)
                   .Update(testBackupFileName);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Sat, 08 Sep 2012 14:42:59 GMT</pubDate><guid isPermaLink="false">New Post: Updating ContentProperties 20120908024259P</guid></item><item><title>New Post: Updating ContentProperties</title><link>http://asfmojo.codeplex.com/discussions/393380</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I see that there is an internal class AsfFileUpdateOptions() - how do I update those few properties?&lt;/p&gt;
&lt;/div&gt;</description><author>gxdata</author><pubDate>Tue, 28 Aug 2012 16:56:40 GMT</pubDate><guid isPermaLink="false">New Post: Updating ContentProperties 20120828045640P</guid></item><item><title>New Post: FPS</title><link>http://asfmojo.codeplex.com/discussions/282496</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Is there a way of getting the fps of a AsfFile?&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;/div&gt;</description><author>c_h_r_i_s</author><pubDate>Sat, 10 Dec 2011 16:30:06 GMT</pubDate><guid isPermaLink="false">New Post: FPS 20111210043006P</guid></item><item><title>Commented Issue: GetAveragePacketDuration() - DivideByZeroException [812]</title><link>http://asfmojo.codeplex.com/workitem/812</link><description>I cant post the source video, but its a WMV file -- 29 seconds long.  I also have a problem with DirectShow on this wmv, but its structures are all good.  Very odd.&lt;br /&gt;&lt;br /&gt;System.DivideByZeroException&amp;#58; Attempted to divide by zero.&lt;br /&gt;   at AsfMojo.File.AsfFile.GetAveragePacketDuration&amp;#40;&amp;#41;&lt;br /&gt;   at AsfMojo.File.AsfFile.GetFilePosition&amp;#40;Double searchOffset, AsfStreamType streamType, Boolean isStart&amp;#41;&lt;br /&gt;   at AsfMojo.File.AsfFile.SetOffsetRange&amp;#40;Double startOffset, Double endOffset, FilePosition&amp;#38; requestStartPosition, Fil&lt;br /&gt;ePosition&amp;#38; requestEndPosition, AsfStreamType streamType&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfStream.Init&amp;#40;AsfStreamType streamType, Double startOffset, Double endOffset&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfStream..ctor&amp;#40;AsfStreamType streamType, String fileName, Double startOffset, Double endOffset&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfStream..ctor&amp;#40;AsfStreamType streamType, String fileName, Double offset&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfImage.FromFile&amp;#40;String fileName, Double offset&amp;#41;&lt;br /&gt;Comments: ** Comment from web user: michael_knapp ** &lt;p&gt;This could only happen if no packets have been successfully parsed in the file - do any of the other headers get populated at all&amp;#63; Any way you can make the sample file available for testing&amp;#63;&lt;/p&gt;</description><author>michael_knapp</author><pubDate>Mon, 24 Oct 2011 12:34:50 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetAveragePacketDuration() - DivideByZeroException [812] 20111024123450P</guid></item><item><title>Created Issue: GetAveragePacketDuration() - DivideByZeroException [812]</title><link>http://asfmojo.codeplex.com/workitem/812</link><description>I cant post the source video, but its a WMV file -- 29 seconds long.  I also have a problem with DirectShow on this wmv, but its structures are all good.  Very odd.&lt;br /&gt;&lt;br /&gt;System.DivideByZeroException&amp;#58; Attempted to divide by zero.&lt;br /&gt;   at AsfMojo.File.AsfFile.GetAveragePacketDuration&amp;#40;&amp;#41;&lt;br /&gt;   at AsfMojo.File.AsfFile.GetFilePosition&amp;#40;Double searchOffset, AsfStreamType streamType, Boolean isStart&amp;#41;&lt;br /&gt;   at AsfMojo.File.AsfFile.SetOffsetRange&amp;#40;Double startOffset, Double endOffset, FilePosition&amp;#38; requestStartPosition, Fil&lt;br /&gt;ePosition&amp;#38; requestEndPosition, AsfStreamType streamType&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfStream.Init&amp;#40;AsfStreamType streamType, Double startOffset, Double endOffset&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfStream..ctor&amp;#40;AsfStreamType streamType, String fileName, Double startOffset, Double endOffset&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfStream..ctor&amp;#40;AsfStreamType streamType, String fileName, Double offset&amp;#41;&lt;br /&gt;   at AsfMojo.Media.AsfImage.FromFile&amp;#40;String fileName, Double offset&amp;#41;&lt;br /&gt;</description><author>TWhidden</author><pubDate>Fri, 14 Oct 2011 18:26:43 GMT</pubDate><guid isPermaLink="false">Created Issue: GetAveragePacketDuration() - DivideByZeroException [812] 20111014062643P</guid></item><item><title>Commented Issue: Every packet in AsfDataObject.Packets is holding exactly same data (_packet) [799]</title><link>http://asfmojo.codeplex.com/workitem/799</link><description>This was because when create a Packet list for AsfObject,  the temporaraly variable &amp;#34;packetData&amp;#34; was not initialise every time when read packet from the file.&lt;br /&gt;The result is the raw byte array &amp;#40;_packet&amp;#41; of every packet in the AsfDataObject is holding the last piece of the packet data of the asf file.&lt;br /&gt;&lt;br /&gt;I guess, this was the reason you weren&amp;#39;t able to create seek index for the Asf file, as AsfFileConfiguration.Packets was assigned to the value of AsjObject.Packets.&lt;br /&gt;When creating the seek index, your code was reference to AsfFileConfiguration.Packets.&lt;br /&gt;&lt;br /&gt;To solve this issue, simply move &amp;#34;byte&amp;#91;&amp;#93; packetData &amp;#61; new byte&amp;#91;config.AsfPacketSize&amp;#93;&amp;#59;&amp;#34; into the inside of the while loop in the constructor of &amp;#34;AsfDataObject&amp;#34; class.&lt;br /&gt;Comments: ** Comment from web user: yxhu ** &lt;p&gt;sorry, i didn&amp;#39;t read your code carefully. It has nothing to do with  &amp;#34;creating seek index&amp;#34;&lt;br /&gt;As I saw the following code snip in the constructor of AsfIndexObject&amp;#58;&lt;/p&gt;&lt;p&gt;AsfPacket packet &amp;#61; config.Packets&amp;#91;packetIdx&amp;#93;&amp;#59;&lt;/p&gt;</description><author>yxhu</author><pubDate>Tue, 30 Aug 2011 04:45:28 GMT</pubDate><guid isPermaLink="false">Commented Issue: Every packet in AsfDataObject.Packets is holding exactly same data (_packet) [799] 20110830044528A</guid></item><item><title>Commented Issue: Every packet in AsfDataObject.Packets is holding exactly same data (_packet) [799]</title><link>http://asfmojo.codeplex.com/workitem/799</link><description>This was because when create a Packet list for AsfObject,  the temporaraly variable &amp;#34;packetData&amp;#34; was not initialise every time when read packet from the file.&lt;br /&gt;The result is the raw byte array &amp;#40;_packet&amp;#41; of every packet in the AsfDataObject is holding the last piece of the packet data of the asf file.&lt;br /&gt;&lt;br /&gt;I guess, this was the reason you weren&amp;#39;t able to create seek index for the Asf file, as AsfFileConfiguration.Packets was assigned to the value of AsjObject.Packets.&lt;br /&gt;When creating the seek index, your code was reference to AsfFileConfiguration.Packets.&lt;br /&gt;&lt;br /&gt;To solve this issue, simply move &amp;#34;byte&amp;#91;&amp;#93; packetData &amp;#61; new byte&amp;#91;config.AsfPacketSize&amp;#93;&amp;#59;&amp;#34; into the inside of the while loop in the constructor of &amp;#34;AsfDataObject&amp;#34; class.&lt;br /&gt;Comments: ** Comment from web user: michael_knapp ** &lt;p&gt;yxhu - confirmed this is a problem, thanks for pointing it out&amp;#33; Unfortunately the memory requirements for keeping the full packet data for all packets in memory is prohibitive, so I will have to think about another solution.  This problem would only show when directly accessing the packet data  in the AsfDataObject since all other data is retrieved&amp;#47;set immediately after reading in the packet. I am not sure what you are hinting at with the &amp;#34;create seek index&amp;#34; - can you elaborate&amp;#63;&lt;/p&gt;</description><author>michael_knapp</author><pubDate>Tue, 30 Aug 2011 04:11:31 GMT</pubDate><guid isPermaLink="false">Commented Issue: Every packet in AsfDataObject.Packets is holding exactly same data (_packet) [799] 20110830041131A</guid></item><item><title>Created Issue: Every packet in AsfDataObject.Packets is holding exactly same data (_packet) [799]</title><link>http://asfmojo.codeplex.com/workitem/799</link><description>This was because when create a Packet list for AsfObject,  the temporaraly variable &amp;#34;packetData&amp;#34; was not initialise every time when read packet from the file.&lt;br /&gt;The result is the raw byte array &amp;#40;_packet&amp;#41; of every packet in the AsfDataObject is holding the last piece of the packet data of the asf file.&lt;br /&gt;&lt;br /&gt;I guess, this was the reason you weren&amp;#39;t able to create seek index for the Asf file, as AsfFileConfiguration.Packets was assigned to the value of AsjObject.Packets.&lt;br /&gt;When creating the seek index, your code was reference to AsfFileConfiguration.Packets.&lt;br /&gt;&lt;br /&gt;To solve this issue, simply move &amp;#34;byte&amp;#91;&amp;#93; packetData &amp;#61; new byte&amp;#91;config.AsfPacketSize&amp;#93;&amp;#59;&amp;#34; into the inside of the while loop in the constructor of &amp;#34;AsfDataObject&amp;#34; class.&lt;br /&gt;</description><author>yxhu</author><pubDate>Tue, 30 Aug 2011 02:31:24 GMT</pubDate><guid isPermaLink="false">Created Issue: Every packet in AsfDataObject.Packets is holding exactly same data (_packet) [799] 20110830023124A</guid></item><item><title>Closed Issue: AsfImage.GetImage() Holding On To File Lock [619]</title><link>http://asfmojo.codeplex.com/workitem/619</link><description>When extracting a frame from an ASF video&amp;#59; AsfMojo appears to be holding on to a file reference preventing a file from being deleted until the process exits.&lt;br /&gt;&lt;br /&gt;My Code&amp;#58;&lt;br /&gt;        using &amp;#40;var asfStream &amp;#61; new AsfStream&amp;#40;AsfStreamType.asfImage, FileName, timePoint.TotalSeconds&amp;#41;&amp;#41;&lt;br /&gt;        using &amp;#40;var asfImage &amp;#61; new AsfImage&amp;#40;asfStream&amp;#41;&amp;#41;&lt;br /&gt;          return asfImage.GetImage&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;Lock Grabbed &amp;#64; Line 95 of AsfImage&amp;#58;&lt;br /&gt;         syncReader.GetNextSample&amp;#40;0, out pSample, out cnsSampleTime, out cnsSampleDuration, out dwFlags, out dwOutputNum, out dwStreamNum&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;In theory, should have been released &amp;#64; Line 108 and&amp;#47;or 110 of AsfImage&amp;#63;&lt;br /&gt;         Marshal.FinalReleaseComObject&amp;#40;pSample&amp;#41;&amp;#59;&lt;br /&gt;         Marshal.FinalReleaseComObject&amp;#40;syncReader&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;However, cannot delete referenced video file until main process exists. Only file access to video via AsfMojo&amp;#59; my code never touches the file directly.&lt;br /&gt;&lt;br /&gt;What else is required to release file lock&amp;#63;&lt;br /&gt;Comments: &lt;p&gt;Implemented as part of AsfMojo 1.2&lt;/p&gt;</description><author>michael_knapp</author><pubDate>Fri, 03 Jun 2011 02:19:51 GMT</pubDate><guid isPermaLink="false">Closed Issue: AsfImage.GetImage() Holding On To File Lock [619] 20110603021951A</guid></item><item><title>Updated Wiki: Home</title><link>http://asfmojo.codeplex.com/wikipage?version=21</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;AsfMojo Overview&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AsfMojo is an open source .NET ASF parsing library, providing support for parsing Windows Media Audio (WMA) and Windows Media Video (WMV) files.&amp;nbsp; It offers classes to create streams from packet data within a media file, gather file statistics and extract
 audio segments or frame accurate still frames. The library parses ASF objects as per the
&lt;a title="ASF specification" href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=56de5ee4-51ca-46c6-903b-97390ad14fea" target="_blank"&gt;
ASF specification&lt;/a&gt; revision 01.20.05&lt;/p&gt;
&lt;p&gt;AsfMojo comes with a WPF UI application and a command line utility application that both make use of the AsfMojo core library.&lt;/p&gt;
&lt;p&gt;The AsfMojo WPF UI app is a full fledged ASF Parser (similar to Windows Media AsfView 9) offering a simple but powerful interface into the structure of ASF files down to the packet level. Still frames and audio for every payload can be previewed (based on
 presentation time). The UI makes use of &lt;a title="NAudio" href="http://naudio.codeplex.com/" target="_self"&gt;
NAudio&lt;/a&gt; to calculate and display the waveform of audio data.&lt;/p&gt;
&lt;p&gt;The AsfMojo command line utility offers a few streamlined options to access the AsfMojo library, such as updating its content properties(Author, Description etc.), creating thumb images from an offset within a media file or extracting a WAVE file from a
 time range within a media file.&lt;/p&gt;
&lt;p&gt;AsfMojo core library is also available as &lt;a href="http://nuget.org/List/Packages/AsfMojo"&gt;
NuGet package&lt;/a&gt; - install via the packet manager&amp;nbsp;&lt;strong&gt;Install-Package AsfMojo
&lt;/strong&gt;to test and try it out! &lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:240px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI parsing a media file and displaying the still frame for a payload&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img802.imageshack.us/img802/1307/asfmojo4.png" alt="" width="648" height="466"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI showing media file properties&lt;br&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img213.imageshack.us/img213/8374/asfmojo2.png" alt="AsfMojo WPF UI showing media file properties" width="630" height="477" style="vertical-align:middle"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;AsfMojo core library usage&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;At the center of the core library is the &lt;em&gt;AsfStream
&lt;/em&gt;a stream based wrapper for a ASF compliant stream covering a range of time within a media asset.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;An &lt;em&gt;AsfStream &lt;/em&gt;can be&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Saved to disk to create a partial video segment(unindexed) &lt;/li&gt;&lt;li&gt;Used as the input for audio or still frame extraction &lt;/li&gt;&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style="padding-left:30px"&gt;Additionally the core library provides classes for extracting still frames (&lt;em&gt;AsfImage&lt;/em&gt;) and audio segments (&lt;em&gt;AsfAudio&lt;/em&gt;). Interface changes in Release 1.2 are detailed on the
&lt;strong&gt;Documentation &lt;/strong&gt;page.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Creating a still frame from an offset&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; offset = 31.2;&lt;br&gt;Bitmap bitmap = AsfImage.FromFile(videoFileName, offset);&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Extracting an audio segment to disk&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; startOffset = 5.0;&lt;br&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; endOffset = 12.3;&lt;br&gt;WaveMemoryStream waveMemoryStream = WaveMemoryStream.FromFile(videoFileName)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .From(startOffset)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .To(endOffset);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (FileStream fs = &lt;span style="color:blue"&gt;new&lt;/span&gt; FileStream(&lt;span style="color:#a31515"&gt;&amp;quot;audio.wav&amp;quot;&lt;/span&gt;, FileMode.Create))&lt;br&gt;waveMemoryStream.WriteTo(fs);&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Tue, 31 May 2011 07:16:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110531071653A</guid></item><item><title>Updated Release: AsfMojo 1.2 (May 30, 2011)</title><link>http://asfmojo.codeplex.com/releases/view/67329</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;AsfMojo library 1.2 bug fixes:&lt;/b&gt;&lt;br /&gt; - fixed AsfPacket error correction data parsing &lt;br /&gt; - fixed Dispose implementation in AsfFile so it wouldn&amp;#39;t keep holding a file lock&lt;br /&gt; - added appropriate using blocks in AsfAudio&lt;br /&gt; - fixed AsfPacket error correction detection&lt;br /&gt; - fixed Duration attribute calculation in Configuration class&lt;br /&gt; - fixed end offset calculation for packet range using AsfDataObject, this would cause exceptions when trying to parse packets in positions not covered by the AsfDataObject.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AsfMojo library 1.2 feature additions:&lt;/b&gt;&lt;br /&gt; - added ability to update content properties (Author, Title, Description, Copyright)&lt;br /&gt; - provide simplified interface to create image / wave stream as well as a fluent alternative&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo Cmd 1.2 changes:&lt;/b&gt;&lt;br /&gt; - simplified existing functionality using new fluent/static interface to create image, wave stream&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo Cmd 1.2 feature additions:&lt;/b&gt;&lt;br /&gt; - added ability to update content properties (Author, Title, Description, Copyright)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo UI 1.2 bug fixes:&lt;/b&gt;&lt;br /&gt;  - fixed display bug in TimeToDisplayConverter which did cut off hours&lt;br /&gt;  - fixed a bug in displaying preview images&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo UI 1.2 feature additions:&lt;/b&gt;&lt;br /&gt; - added ability to update content properties (Author, Title, Description, Copyright, Rating)&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Mon, 30 May 2011 22:29:26 GMT</pubDate><guid isPermaLink="false">Updated Release: AsfMojo 1.2 (May 30, 2011) 20110530102926P</guid></item><item><title>Released: AsfMojo 1.2 (May 30, 2011)</title><link>http://asfmojo.codeplex.com/releases/view/67329</link><description>
&lt;div class="wikidoc"&gt;&lt;b&gt;AsfMojo library 1.2 bug fixes:&lt;/b&gt;&lt;br&gt;
- fixed AsfPacket error correction data parsing &lt;br&gt;
- fixed Dispose implementation in AsfFile so it wouldn&amp;#39;t keep holding a file lock&lt;br&gt;
- added appropriate using blocks in AsfAudio&lt;br&gt;
- fixed AsfPacket error correction detection&lt;br&gt;
- fixed Duration attribute calculation in Configuration class&lt;br&gt;
- fixed end offset calculation for packet range using AsfDataObject, this would cause exceptions when trying to parse packets in positions not covered by the AsfDataObject.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;AsfMojo library 1.2 feature additions:&lt;/b&gt;&lt;br&gt;
- added ability to update content properties (Author, Title, Description, Copyright)&lt;br&gt;
- provide simplified interface to create image / wave stream as well as a fluent alternative&lt;br&gt;
&lt;br&gt;
&lt;b&gt;AsfMojo Cmd 1.2 changes:&lt;/b&gt;&lt;br&gt;
- simplified existing functionality using new fluent/static interface to create image, wave stream&lt;br&gt;
&lt;br&gt;
&lt;b&gt;AsfMojo Cmd 1.2 feature additions:&lt;/b&gt;&lt;br&gt;
- added ability to update content properties (Author, Title, Description, Copyright)&lt;br&gt;
&lt;br&gt;
&lt;b&gt;AsfMojo UI 1.2 bug fixes:&lt;/b&gt;&lt;br&gt;
- fixed display bug in TimeToDisplayConverter which did cut off hours&lt;br&gt;
- fixed a bug in displaying preview images&lt;br&gt;
&lt;br&gt;
&lt;b&gt;AsfMojo UI 1.2 feature additions:&lt;/b&gt;&lt;br&gt;
- added ability to update content properties (Author, Title, Description, Copyright, Rating)&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Mon, 30 May 2011 22:29:26 GMT</pubDate><guid isPermaLink="false">Released: AsfMojo 1.2 (May 30, 2011) 20110530102926P</guid></item><item><title>Updated Wiki: Home</title><link>http://asfmojo.codeplex.com/wikipage?version=20</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;AsfMojo Overview&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AsfMojo is an open source .NET ASF parsing library, providing support for parsing Windows Media Audio (WMA) and Windows Media Video (WMV) files.&amp;nbsp; It offers classes to create streams from packet data within a media file, gather file statistics and extract
 audio segments or frame accurate still frames. The library parses ASF objects as per the
&lt;a title="ASF specification" href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=56de5ee4-51ca-46c6-903b-97390ad14fea" target="_blank"&gt;
ASF specification&lt;/a&gt; revision 01.20.05&lt;/p&gt;
&lt;p&gt;AsfMojo comes with a WPF UI application and a command line utility application that both make use of the AsfMojo core library.&lt;/p&gt;
&lt;p&gt;The AsfMojo WPF UI app is a full fledged ASF Parser (similar to Windows Media AsfView 9) offering a simple but powerful interface into the structure of ASF files down to the packet level. Still frames and audio for every payload can be previewed (based on
 presentation time). The UI makes use of &lt;a title="NAudio" href="http://naudio.codeplex.com/" target="_self"&gt;
NAudio&lt;/a&gt; to calculate and display the waveform of audio data.&lt;/p&gt;
&lt;p&gt;The AsfMojo command line utility offers a few streamlined options to access the AsfMojo library, such as updating its content properties(Author, Description etc.), creating thumb images from an offset within a media file or extracting a WAVE file from a
 time range within a media file.&lt;/p&gt;
&lt;p&gt;AsfMojo core library is also available as &lt;a href="http://nuget.org/List/Packages/AsfMojo"&gt;
NuGet package&lt;/a&gt; - install via the packet manager&amp;nbsp;&lt;strong&gt;Install-Package AsfMojo
&lt;/strong&gt;to test and try it out! &lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:240px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI parsing a media file and displaying the still frame for a payload&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img802.imageshack.us/img802/1307/asfmojo4.png" alt="" width="648" height="466"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI showing media file properties&lt;br&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img213.imageshack.us/img213/8374/asfmojo2.png" alt="AsfMojo WPF UI showing media file properties" width="630" height="477" style="vertical-align:middle"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;AsfMojo core library usage&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;At the center of the core library is the &lt;em&gt;AsfStream
&lt;/em&gt;a stream based wrapper for a ASF compliant stream covering a range of time within a media asset.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;An &lt;em&gt;AsfStream &lt;/em&gt;can be&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Saved to disk to create a partial video segment(unindexed) &lt;/li&gt;&lt;li&gt;Used as the input for audio or still frame extraction &lt;/li&gt;&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style="padding-left:30px"&gt;Additionally the core library provides classes for extracting still frames (&lt;em&gt;AsfImage&lt;/em&gt;) and audio segments (&lt;em&gt;AsfAudio&lt;/em&gt;). Interface changes in Release 1.2 are detailed on the
&lt;strong&gt;Documentation &lt;/strong&gt;page.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Creating a still frame from an offset&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; offset = 31.2;&lt;br&gt;Bitmap bitmap = AsfImage.FromFile(videoFileName, 1.0);&lt;br&gt;&lt;/pre&gt;
&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Extracting an audio segment to disk&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; startOffset = 5.0;&lt;br&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; endOffset = 12.3;&lt;br&gt;WaveMemoryStream waveMemoryStream = WaveMemoryStream.FromFile(videoFileName)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .From(startOffset)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .To(endOffset);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (FileStream fs = &lt;span style="color:blue"&gt;new&lt;/span&gt; FileStream(&lt;span style="color:#a31515"&gt;&amp;quot;audio.wav&amp;quot;&lt;/span&gt;, FileMode.Create))&lt;br&gt;waveMemoryStream.WriteTo(fs);&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Mon, 30 May 2011 21:21:15 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110530092115P</guid></item><item><title>Updated Wiki: Home</title><link>http://asfmojo.codeplex.com/wikipage?version=19</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;AsfMojo Overview&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AsfMojo is an open source .NET ASF parsing library, providing support for parsing Windows Media Audio (WMA) and Windows Media Video (WMV) files.&amp;nbsp; It offers classes to create streams from packet data within a media file, gather file statistics and extract
 audio segments or frame accurate still frames. The library parses ASF objects as per the
&lt;a title="ASF specification" href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=56de5ee4-51ca-46c6-903b-97390ad14fea" target="_blank"&gt;
ASF specification&lt;/a&gt; revision 01.20.05&lt;/p&gt;
&lt;p&gt;AsfMojo comes with a WPF UI application and a command line utility application that both make use of the AsfMojo core library.&lt;/p&gt;
&lt;p&gt;The AsfMojo WPF UI app is a full fledged ASF Parser (similar to Windows Media AsfView 9) offering a simple but powerful interface into the structure of ASF files down to the packet level. Still frames and audio for every payload can be previewed (based on
 presentation time). The UI makes use of &lt;a title="NAudio" href="http://naudio.codeplex.com/" target="_self"&gt;
NAudio&lt;/a&gt; to calculate and display the waveform of audio data.&lt;/p&gt;
&lt;p&gt;The AsfMojo command line utility offers a few streamlined options to access the AsfMojo library, such as updating its content properties(Author, Description etc.), creating thumb images from an offset within a media file or extracting a WAVE file from a
 time range within a media file.&lt;/p&gt;
&lt;p&gt;AsfMojo core library is also available as &lt;a href="http://nuget.org/List/Packages/AsfMojo"&gt;
NuGet package&lt;/a&gt; - install via the packet manager&amp;nbsp;&lt;strong&gt;Install-Package AsfMojo
&lt;/strong&gt;to test and try it out! &lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:240px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI parsing a media file and displaying the still frame for a payload&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img802.imageshack.us/img802/1307/asfmojo4.png" alt="" width="648" height="466"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI showing media file properties&lt;br&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img213.imageshack.us/img213/8374/asfmojo2.png" alt="AsfMojo WPF UI showing media file properties" width="630" height="477" style="vertical-align:middle"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;AsfMojo core library usage&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;At the center of the core library is the AsfStream a stream based wrapper for a ASF compliant stream covering a range of time within a media asset.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;An AsfStream can be&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Saved to disk to create a partial video segment(unindexed) &lt;/li&gt;&lt;li&gt;Used as the input for audio or still frame extraction &lt;/li&gt;&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style="padding-left:30px"&gt;Additionally the core library provides classes for extracting still frames (AsfImage) and audio segments (AsfAudio). Interface changes in Release 1.2 are detailed on the
&lt;strong&gt;Documentation &lt;/strong&gt;page.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Creating a still frame from an offset&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; offset = 31.2;&lt;br&gt;Bitmap bitmap = AsfImage.FromFile(videoFileName, 1.0);&lt;br&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Extracting an audio segment to disk&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; startOffset = 5.0;&lt;br&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; endOffset = 12.3;&lt;br&gt;AsfAudio asfAudio = &lt;span style="color:blue"&gt;new&lt;/span&gt; AsfAudio(asfStream);&lt;br&gt;WaveMemoryStream waveMemoryStream = WaveMemoryStream.FromFile(videoFileName)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .From(startOffset)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .To(endOffset);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (FileStream fs = &lt;span style="color:blue"&gt;new&lt;/span&gt; FileStream(&lt;span style="color:#a31515"&gt;&amp;quot;audio.wav&amp;quot;&lt;/span&gt;, FileMode.Create))&lt;br&gt;waveMemoryStream.WriteTo(fs);&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Mon, 30 May 2011 21:19:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110530091951P</guid></item><item><title>Updated Wiki: Home</title><link>http://asfmojo.codeplex.com/wikipage?version=18</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;AsfMojo Overview&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AsfMojo is an open source .NET ASF parsing library, providing support for parsing Windows Media Audio (WMA) and Windows Media Video (WMV) files.&amp;nbsp; It offers classes to create streams from packet data within a media file, gather file statistics and extract
 audio segments or frame accurate still frames. The library parses ASF objects as per the
&lt;a title="ASF specification" href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=56de5ee4-51ca-46c6-903b-97390ad14fea" target="_blank"&gt;
ASF specification&lt;/a&gt; revision 01.20.05&lt;/p&gt;
&lt;p&gt;AsfMojo comes with a WPF UI application and a command line utility application that both make use of the AsfMojo core library.&lt;/p&gt;
&lt;p&gt;The AsfMojo WPF UI app is a full fledged ASF Parser (similar to Windows Media AsfView 9) offering a simple but powerful interface into the structure of ASF files down to the packet level. Still frames and audio for every payload can be previewed (based on
 presentation time). The UI makes use of &lt;a title="NAudio" href="http://naudio.codeplex.com/" target="_self"&gt;
NAudio&lt;/a&gt; to calculate and display the waveform of audio data.&lt;/p&gt;
&lt;p&gt;The AsfMojo command line utility offers a few streamlined options to access the AsfMojo library, such as updating its content properties(Author, Description etc.), creating thumb images from an offset within a media file or extracting a WAVE file from a
 time range within a media file.&lt;/p&gt;
&lt;p&gt;AsfMojo core library is also available as &lt;a href="http://nuget.org/List/Packages/AsfMojo"&gt;
NuGet package&lt;/a&gt; - install via the packet manager&amp;nbsp;&lt;strong&gt;Install-Package AsfMojo
&lt;/strong&gt;to test and try it out! &lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:240px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI parsing a media file and displaying the still frame for a payload&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img802.imageshack.us/img802/1307/asfmojo4.png" alt="" width="648" height="466"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI showing media file properties&lt;br&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img213.imageshack.us/img213/8374/asfmojo2.png" alt="AsfMojo WPF UI showing media file properties" width="630" height="477" style="vertical-align:middle"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;AsfMojo core library usage&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;At the center of the core library is the AsfStream a stream based wrapper for a ASF compliant stream covering a range of time within a media asset.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;An AsfStream can be&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Saved to disk to create a partial video segment(unindexed) &lt;/li&gt;&lt;li&gt;Used as the input for audio or still frame extraction &lt;/li&gt;&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style="padding-left:30px"&gt;Additionally the core library provides classes for extracting still frames (AsfImage) and audio segments (AsfAudio). Interface changes in Release 1.2 are detailed on the
&lt;strong&gt;Documentation &lt;/strong&gt;page.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Creating a still frame from an offset&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; offset = 31.2;&lt;br&gt;Bitmap bitmap = AsfImage.FromFile(videoFileName, 1.0);&lt;br&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Extracting an audio segment to disk&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; startOffset = 5.0;&lt;br&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; endOffset = 12.3;&lt;br&gt;AsfAudio asfAudio = &lt;span style="color:blue"&gt;new&lt;/span&gt; AsfAudio(asfStream);&lt;br&gt;WaveMemoryStream waveMemoryStream = WaveMemoryStream.FromFile(videoFileName)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .From(startOffset)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .To(endOffset);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (FileStream fs = &lt;span style="color:blue"&gt;new&lt;/span&gt; FileStream(&lt;span style="color:#a31515"&gt;&amp;quot;audio.wav&amp;quot;&lt;/span&gt;, FileMode.Create))&lt;br&gt;waveMemoryStream.WriteTo(fs);&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Mon, 30 May 2011 21:19:24 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110530091924P</guid></item><item><title>Updated Wiki: Home</title><link>http://asfmojo.codeplex.com/wikipage?version=17</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;AsfMojo Overview&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AsfMojo is an open source .NET ASF parsing library, providing support for parsing Windows Media Audio (WMA) and Windows Media Video (WMV) files.&amp;nbsp; It offers classes to create streams from packet data within a media file, gather file statistics and extract
 audio segments or frame accurate still frames. The library parses ASF objects as per the
&lt;a title="ASF specification" href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=56de5ee4-51ca-46c6-903b-97390ad14fea" target="_blank"&gt;
ASF specification&lt;/a&gt; revision 01.20.05&lt;/p&gt;
&lt;p&gt;AsfMojo comes with a WPF UI application and a command line utility application that both make use of the AsfMojo core library.&lt;/p&gt;
&lt;p&gt;The AsfMojo WPF UI app is a full fledged ASF Parser (similar to Windows Media AsfView 9) offering a simple but powerful interface into the structure of ASF files down to the packet level. Still frames and audio for every payload can be previewed (based on
 presentation time). The UI makes use of &lt;a title="NAudio" href="http://naudio.codeplex.com/" target="_self"&gt;
NAudio&lt;/a&gt; to calculate and display the waveform of audio data.&lt;/p&gt;
&lt;p&gt;The AsfMojo command line utility offers a few streamlined options to access the AsfMojo library, such as updating its content properties(Author, Description etc.), creating thumb images from an offset within a media file or extracting a WAVE file from a
 time range within a media file.&lt;/p&gt;
&lt;p&gt;AsfMojo core library is also available as &lt;a href="http://nuget.org/List/Packages/AsfMojo"&gt;
NuGet package&lt;/a&gt; - install via the packet manager&amp;nbsp;&lt;strong&gt;Install-Package AsfMojo
&lt;/strong&gt;to test and try it out! &lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:240px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI parsing a media file and displaying the still frame for a payload&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img802.imageshack.us/img802/1307/asfmojo4.png" alt="" width="648" height="466"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;em&gt;AsfMojo WPF UI showing media file properties&lt;br&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&lt;img src="http://img213.imageshack.us/img213/8374/asfmojo2.png" alt="AsfMojo WPF UI showing media file properties" width="630" height="477" style="vertical-align:middle"&gt;&lt;/p&gt;
&lt;p style="padding-left:210px"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;AsfMojo core library usage&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;At the center of the core library is the AsfStream a stream based wrapper for a ASF compliant stream covering a range of time within a media asset.&lt;/p&gt;
&lt;p style="padding-left:30px"&gt;An AsfStream can be&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Saved to disk to create a partial video segment(unindexed) &lt;/li&gt;&lt;li&gt;Used as the input for audio or still frame extraction &lt;/li&gt;&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style="padding-left:30px"&gt;Additionally the core library provides classes for extracting still frames (AsfImage) and audio segments (AsfAudio). Interface changes in Release 1.2 are detailed on the
&lt;strong&gt;Documentation &lt;/strong&gt;page.&lt;/p&gt;
&lt;pre&gt;  
&lt;/pre&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Creating a still frame from an offset&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; offset = 31.2;&lt;br&gt;Bitmap bitmap = AsfImage.FromFile(videoFileName, 1.0);&lt;br&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style="padding-left:30px"&gt;&lt;strong&gt;Extracting an audio segment to disk&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; startOffset = 5.0;&lt;br&gt;&lt;span style="color:blue"&gt;double&lt;/span&gt; endOffset = 12.3;&lt;br&gt;AsfAudio asfAudio = &lt;span style="color:blue"&gt;new&lt;/span&gt; AsfAudio(asfStream);&lt;br&gt;WaveMemoryStream waveMemoryStream = WaveMemoryStream.FromFile(videoFileName)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .From(startOffset)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .To(endOffset);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (FileStream fs = &lt;span style="color:blue"&gt;new&lt;/span&gt; FileStream(&lt;span style="color:#a31515"&gt;&amp;quot;audio.wav&amp;quot;&lt;/span&gt;, FileMode.Create))&lt;br&gt;waveMemoryStream.WriteTo(fs);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Mon, 30 May 2011 21:17:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110530091703P</guid></item><item><title>Updated Release: AsfMojo 1.2 (May 30, 2011)</title><link>http://asfmojo.codeplex.com/releases/view/67329</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;AsfMojo library 1.2 bug fixes:&lt;/b&gt;&lt;br /&gt; - fixed AsfPacket error correction data parsing &lt;br /&gt; - fixed Dispose implementation in AsfFile so it wouldn&amp;#39;t keep holding a file lock&lt;br /&gt; - added appropriate using blocks in AsfAudio&lt;br /&gt; - fixed AsfPacket error correction detection&lt;br /&gt; - fixed Duration attribute calculation in Configuration class&lt;br /&gt; - fixed end offset calculation for packet range using AsfDataObject, this would exceptions when trying to parse packets in positions not covered by the AsfDataObject.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AsfMojo library 1.2 feature additions:&lt;/b&gt;&lt;br /&gt; - added ability to update content properties (Author, Title, Description, Copyright)&lt;br /&gt; - provide simplified interface to create image / wave stream as well as a fluent alternative&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo Cmd 1.2 changes:&lt;/b&gt;&lt;br /&gt; - simplified existing functionality using new fluent/static interface to create image, wave stream&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo Cmd 1.2 feature additions:&lt;/b&gt;&lt;br /&gt; - added ability to update content properties (Author, Title, Description, Copyright)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo UI 1.2 bug fixes:&lt;/b&gt;&lt;br /&gt;  - fixed display bug in TimeToDisplayConverter which did cut off hours&lt;br /&gt;  - fixed a bug in displaying preview images&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AsfMojo UI 1.2 feature additions:&lt;/b&gt;&lt;br /&gt; - added ability to update content properties (Author, Title, Description, Copyright, Rating)&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>michael_knapp</author><pubDate>Mon, 30 May 2011 21:08:17 GMT</pubDate><guid isPermaLink="false">Updated Release: AsfMojo 1.2 (May 30, 2011) 20110530090817P</guid></item></channel></rss>