<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.southworks.net/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ezequiel Jadib's Blog</title>
	
	<link>http://blogs.southworks.net/ejadib</link>
	<description>There is not place like 127.0.0.1</description>
	<pubDate>Sat, 06 Feb 2010 00:34:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.southworks.net/ejadib" /><feedburner:info uri="ejadib" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Common mistakes / issues when creating and using Composite Stream Manifests (.CSM)</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/bAGOvGAe1Z0/</link>
		<comments>http://blogs.southworks.net/ejadib/2010/02/05/common-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 21:39:49 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Adaptive Streaming]]></category>

		<category><![CDATA[CSM]]></category>

		<category><![CDATA[Composite Stream Manifest]]></category>

		<category><![CDATA[IIS7]]></category>

		<category><![CDATA[Live Smooth Streaming]]></category>

		<category><![CDATA[RCE]]></category>

		<category><![CDATA[Rough Cut Editing]]></category>

		<category><![CDATA[SSME]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<category><![CDATA[Smooth Streaming Media Element]]></category>

		<category><![CDATA[Smooth Streaming Player Development Kit]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/?p=213</guid>
		<description><![CDATA[One of the greatest features added on the Beta 2 version of the IIS Smooth Streaming Player Development Kit (SSPDK) is the support for Composite Stream Manifests for Rough Cut Editing. This a powerful feature which I really recommend looking at, and if you want to learn the basics of the CSMs you must take [...]]]></description>
			<content:encoded><![CDATA[<p>One of the greatest features added on the Beta 2 version of the IIS Smooth Streaming Player Development Kit (SSPDK) is the support for Composite Stream Manifests for Rough Cut Editing. This a powerful feature which I really recommend looking at, and if you want to learn the basics of the CSMs you must take a look at the following posts:</p>
<ul>
<li><a href="http://blogs.iis.net/vsood/archive/2010/01/22/composite-manifest-support-for-rough-cut-editing-scenarios-in-ssme.aspx" target="_blank">Composite Manifest Support for Rough Cut Editing scenarios in SSME</a> by <a href="http://blogs.iis.net/vsood" target="_blank">Vishal Sood</a></li>
<li><a href="http://blog.johndeutscher.com/2010/01/22/new-composite-manifest-support-for-building-rough-cut-editing-rce-scenarios-with-smooth-streaming/" target="_blank">New Composite Manifest support for building Rough Cut Editing (RCE) scenarios with Smooth Streaming</a> by <a href="http://blog.johndeutscher.com" target="_blank">John Deutscher</a></li>
</ul>
<p>I&#8217;ve been working with CSMs for three months now, so in this post I would like to share with you the lessons I&#8217;ve learnt during the process of creation and usage of the CSMs.</p>
<p>There are a few common mistakes and issues you might face during that process, so I hope this post will be helpful for the community.</p>
<p> </p>
<h4><strong>&#8220;Error encountered on HEAD request to manifest uri &lt;your manifest&gt; for &lt;position&gt; clip in RCE manifest&#8221;</strong></h4>
<p>This will likely be the first issue you will encounter after trying to use a CSM. When using a CSM the Smooth Streaming Media Element (SSME) attempts to do a HEAD request on the manifest for each clip to make sure that the content hasn&#8217;t been moved (and if it has, it will used the new URL on the response).</p>
<p>There are two changes you have to make in order to fix this issue.</p>
<p>The first one is related to an existing known-issue on the applicationHost.config file of IIS. This server bug prevents the On-Demand smooth streaming handler from responding to HEAD request. To fix this go to the <a href="http://www.iis.net/downloads/files/media/smoothstream_readme.htm" target="_blank">Smooth Streaming Readme page</a> and check the <strong>Known Issues</strong> section, specifically the &#8220;Configuring the SmoothHandler handler mapping to process HTTP Head requests&#8221; item.</p>
<p>The second change must be done on the clientaccesspolicy.xml file, essentially to indicate that HEAD requests are allowed. To fix this make sure that your clientaccesspolicy.xml file includes <strong>http-methods=&#8221;*&#8221;</strong>or <strong>http-methods=&#8221;GET,HEAD,POST&#8221;</strong>:</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;access-policy&gt;<br />
  &lt;cross-domain-access&gt;<br />
    &lt;policy&gt;<br />
      &lt;allow-from <strong>http-methods=&#8221;*&#8221;</strong> http-request-headers=&#8221;*&#8221;&gt;     <br />
        &lt;domain uri=&#8221;*&#8221;/&gt;<br />
      &lt;/allow-from&gt;     <br />
      &lt;grant-to&gt;     <br />
        &lt;resource path=&#8221;/&#8221; include-subpaths=&#8221;true&#8221;/&gt;<br />
      &lt;/grant-to&gt;     <br />
    &lt;/policy&gt;<br />
  &lt;/cross-domain-access&gt;<br />
&lt;/access-policy&gt;</p>
<p> </p>
<h4><strong>&#8220;Caught exception trying to parse main manifest: V2 Manifest: Audio stream requires CodecPrivateData attribute&#8221;</strong></h4>
<p>This is because the CSM contains a clip that is referring a V1 Manifest, which is not a valid source for a CSM.</p>
<p> </p>
<h5><strong></strong></h5>
<h4><strong>&#8220;Caught exception trying to parse main manifest: First video (audio) chunk in clip &lt;position&gt; [start time = &lt;start time&gt;, duration = &lt;duration&gt;] does not contain clip start position &lt;clipStartPosition&gt;&#8221;</strong></h4>
<p>This message indicates that the first chunk time + the first chunk duration of the reported stream is smaller or larger that the clip&#8217;s begin position. Therefore the first chunk time + the first chunk duration of the stream must contain the clip&#8217;s begin position.</p>
<p> </p>
<h4><strong>&#8220;Caught exception trying to parse main manifest: Last video (audio) chunk in clip &lt;position&gt; [start time = &lt;start time&gt;, duration = &lt;duration&gt;] does not contain clip end position &lt;clipEndPosition&gt;&#8221;</strong></h4>
<p>This message indicates that the last chunk time + the last chunk duration of the reported stream is smaller or larger that the clip&#8217;s end position. Therefore the last chunk time + the last chunk duration of the stream must contain the clip&#8217;s end position.</p>
<p> </p>
<h4><strong>Different A</strong><strong>udio encoding settings in the CSM clips</strong></h4>
<p>If you have clips with different audio encoding settings, then the playback will suddenly stop. Due to a limitation on Silverlight, the audio settings have to be the same. The Silverlight pipeline is not able to handle audio property changes on the fly. So make sure that the audio of the clips are being encoded at same bit rate.</p>
<p> </p>
<h4><strong></strong></h4>
<h4><strong>Sparse stream data within the clip</strong></h4>
<p>This will likely not cause any issue, but as today having sparse stream data within a clip is not supported I decided to include it on this list.</p>
<p> </p>
<p>As you see, there are a couple of things to have in mind when creating and using composite stream manifests. I hope this post encourages you to use this amazing feature.</p>
<p> </p>
<p>Happy streaming!</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f02%2f05%2fcommon-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f02%2f05%2fcommon-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Ezequiel-Jadibs-Blog-Common-mistakes-issues-when-creating-and-using-Composite-Stream-Manifests-CSM"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fblogs.southworks.net%2Fejadib%2F2010%2F02%2F05%2Fcommon-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm%2F"></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=bAGOvGAe1Z0:DPZWTp4sVx8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=bAGOvGAe1Z0:DPZWTp4sVx8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=bAGOvGAe1Z0:DPZWTp4sVx8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=bAGOvGAe1Z0:DPZWTp4sVx8:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=bAGOvGAe1Z0:DPZWTp4sVx8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=bAGOvGAe1Z0:DPZWTp4sVx8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=bAGOvGAe1Z0:DPZWTp4sVx8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=bAGOvGAe1Z0:DPZWTp4sVx8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=bAGOvGAe1Z0:DPZWTp4sVx8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/bAGOvGAe1Z0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2010/02/05/common-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2010/02/05/common-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm/</feedburner:origLink></item>
		<item>
		<title>Live Smooth Streaming: Managing Publishing Points Programmatically on IIS Media Services 3.0</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/5-6RX8CiXRs/</link>
		<comments>http://blogs.southworks.net/ejadib/2010/01/18/live-smooth-streaming-managing-publishing-points-programmatically-on-iis-media-services-30/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 18:24:56 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Adaptive Streaming]]></category>

		<category><![CDATA[IIS7]]></category>

		<category><![CDATA[Live Smooth Streaming]]></category>

		<category><![CDATA[RSCA]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/?p=212</guid>
		<description><![CDATA[Many people have been asking me how to manage publishing point programmatically on IIS Media Services 3.0 (instead of the 2.0 bits, as I explained in this post)
So, I started to dig and I came up with the following code:

// Live Streaming Section Path
const string LiveStreamingSectionPath = &#8220;system.webServer/media/liveStreaming&#8220;;
 
// Change this settings with your values
 
// Site [...]]]></description>
			<content:encoded><![CDATA[<p>Many people have been asking me how to manage publishing point programmatically on <a href="http://www.iis.net/expand/LiveSmoothStreaming" target="_blank">IIS Media Services 3.0</a> (instead of the 2.0 bits, as I explained in <a href="http://blogs.southworks.net/ejadib/2009/04/16/live-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically/" target="_blank">this post</a>)</p>
<p>So, I started to dig and I came up with the following code:</p>
<pre style="padding-bottom: 5px;padding-left: 5px;width: 650px;padding-right: 5px;padding-top: 5px">
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Live Streaming Section Path</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span> LiveStreamingSectionPath = &#8220;<span style="color: #8b0000">system.webServer/media/liveStreaming</span>&#8220;;
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Change this settings with your values</span>
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Site name</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #0000ff">string</span> siteName = &#8220;<span style="color: #8b0000">Default Web Site</span>&#8220;;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Application name</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #0000ff">string</span> applicationName = &#8220;<span style="color: #8b0000">/SmoothStreaming</span>&#8220;;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Publishing point filename</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #0000ff">string</span> fileName = &#8220;<span style="color: #8b0000">LiveSmooth.isml</span>&#8220;;
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">ServerManager serverManager = <span style="color: #0000ff">new</span> ServerManager();
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Gets the site from IIS</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">Site site = serverManager.Sites[siteName];
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Gets the application from IIS</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">Application application = site.Applications[applicationName];
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Gets the LiveStreamingSection from the site configuration </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">ConfigurationSection section = site.GetWebConfiguration().GetSection(LiveStreamingSectionPath);
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Gets the ConfigurationMethodInstance to get the available publishing points</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">ConfigurationMethodInstance instance = section.Methods["<span style="color: #8b0000">GetPublishingPoints</span>"].CreateInstance();
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Sets the input parameters of the GetPublishingPoints method</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">instance.Input["<span style="color: #8b0000">siteName</span>"] = site.Name;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">instance.Input["<span style="color: #8b0000">virtualPath</span>"] = applicationName;
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Executes the method</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">instance.Execute();
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Gets the PublishingPointCollection type.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">Type type = Type.GetType("<span style="color: #8b0000">Microsoft.Web.Management.Media.LiveStreaming.PublishingPointCollection, Microsoft.Web.Management.Media.LiveStreaming</span>&#8220;);
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Gets the PublishingPointCollection associated with the method output</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">ConfigurationElement collection = instance.Output.GetCollection(type);
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Gets an item from the collection using the Publishing Point fileName as parameter. </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// The item is of type PublishingPoint.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #0000ff">object</span> pubPoint = collection.GetType()</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">                            .InvokeMember("<span style="color: #8b0000">Item</span>&#8220;,</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">                                          BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance,</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">                                          <span style="color: #0000ff">null</span>, collection, <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>[] { fileName }, <span style="color: #0000ff">null</span>);
 </pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// Invokes the desired method of the Publishing Point. </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px"><span style="color: #008000">// In this case we are calling the Start method (others supported functions are &#8220;Shutdown&#8221; and &#8220;Stop&#8221;)</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">pubPoint.GetType().InvokeMember("<span style="color: #8b0000">Start</span>&#8220;,</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">                                BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod,</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 11px">                                <span style="color: #0000ff">null</span>, pubPoint, <span style="color: #0000ff">null</span>);</pre>
</pre>
<p>Remember that in order to use the previous code, you must have references to the following assemblies:</p>
<ul>
<li>Microsoft.Web.Administration.dll (can be found at IIS Directory %windir%\System32\inetSrv)</li>
<li>Microsoft.Web.Management.Media.LiveStreaming.dll (can be found in the GAC after installing the Live Smooth Streaming bits)</li>
</ul>
<p>Hope this helps.</p>
<p>Happy streaming!</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f01%2f18%2flive-smooth-streaming-managing-publishing-points-programmatically-on-iis-media-services-30%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f01%2f18%2flive-smooth-streaming-managing-publishing-points-programmatically-on-iis-media-services-30%2f" border="0" alt="kick it on DotNetKicks.com" /></a><br />
<a rev="vote-for" href="http://dotnetshoutout.com/Ezequiel-Jadibs-Blog-Live-Smooth-Streaming-Managing-Publishing-Points-Programmatically-on-IIS-Media-Services-30"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fblogs.southworks.net%2Fejadib%2F2010%2F01%2F18%2Flive-smooth-streaming-managing-publishing-points-programmatically-on-iis-media-services-30%2F"></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=5-6RX8CiXRs:QRDmv-loXnQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5-6RX8CiXRs:QRDmv-loXnQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5-6RX8CiXRs:QRDmv-loXnQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5-6RX8CiXRs:QRDmv-loXnQ:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5-6RX8CiXRs:QRDmv-loXnQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=5-6RX8CiXRs:QRDmv-loXnQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5-6RX8CiXRs:QRDmv-loXnQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=5-6RX8CiXRs:QRDmv-loXnQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5-6RX8CiXRs:QRDmv-loXnQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/5-6RX8CiXRs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2010/01/18/live-smooth-streaming-managing-publishing-points-programmatically-on-iis-media-services-30/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2010/01/18/live-smooth-streaming-managing-publishing-points-programmatically-on-iis-media-services-30/</feedburner:origLink></item>
		<item>
		<title>Rewind and Fast Forward using the Smooth Streaming Media Element (SSME) Beta 2</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/wIBKFGU21DE/</link>
		<comments>http://blogs.southworks.net/ejadib/2010/01/15/rewind-and-fast-forward-using-the-smooth-streaming-media-element-ssme-beta-2/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 10:16:08 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Adaptive Streaming]]></category>

		<category><![CDATA[IIS7]]></category>

		<category><![CDATA[Live Smooth Streaming]]></category>

		<category><![CDATA[SSME]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Silverlight 3]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<category><![CDATA[Smooth Streaming Media Element]]></category>

		<category><![CDATA[Smooth Streaming Player Development Kit]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/?p=211</guid>
		<description><![CDATA[Hey Folks! Time ago I blogged about how to add the Slow Motion capability to your Smooth Streaming player by using the Smooth Streaming Media Element published by the IIS team.
Now it’s time to share with you how to provide the rewind and fast forward options to enable a real rich video experience.
Again, adding support [...]]]></description>
			<content:encoded><![CDATA[<p>Hey Folks! Time ago <a href="http://blogs.southworks.net/ejadib/2009/10/16/slow-motion-using-the-smooth-streaming-media-element-ssme/" target="_blank">I blogged about how to add the Slow Motion capability to your Smooth Streaming player</a> by using the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2b1ce605-3b99-49ad-8a26-1250f2acbbf6&amp;displaylang=en" target="_blank">Smooth Streaming Media Element</a> published by the IIS team.</p>
<p>Now it’s time to share with you how to provide the rewind and fast forward options to enable a real rich video experience.</p>
<p>Again, adding support for these features is easy, and if you understood what we did for providing the Slow Motion experience, then the following will be a piece of cake.</p>
<p>For rewind, the trick is getting all the playback rates under 0.0 and for fast forward, all the playback rates above 1.0.</p>
<h4><strong>Show me the code!</strong></h4>
<h5><strong>Rewind</strong></h5>
<pre style="padding-bottom: 5px;padding-left: 5px;width: 650px;padding-right: 5px;padding-top: 5px">
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// &lt;summary&gt;</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// Toogles the PlaybackRate of the Smooth Streaming Media Element.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// Uses the PlaybackRates under 0.0 to support Rewind.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// &lt;/summary&gt;</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> OnRewind()</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">{</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #008000">// PlaybackRate index to set on the SSME.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #0000ff">int</span> newPlaybackRateIndex = 0;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #008000">// Verify the state of the SmoothPlayer</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == SmoothStreamingMediaElementState.Paused</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        || <span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == SmoothStreamingMediaElementState.Playing</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        || <span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == SmoothStreamingMediaElementState.Buffering)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// Get the current PlaybackRate of the SSME</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">double</span> playbackRate = <span style="color: #0000ff">this</span>.PlaybackRate;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// The first time we get the Rewind PlaybackRates from</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// the SSME supported PlayBackRates. Rewind PlaybackRates </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// are under 0.0</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.rewindPlaybackRates == <span style="color: #0000ff">null</span>)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">this</span>.rewindPlaybackRates = <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">double</span>&gt;();</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            IList&lt;<span style="color: #0000ff">double</span>&gt; supportedPlaybackRates = <span style="color: #0000ff">this</span>.SmoothPlayer.SupportedPlaybackRates;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i &lt; supportedPlaybackRates.Count - 1; i++)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                <span style="color: #0000ff">if</span> (supportedPlaybackRates[i] &lt; 0.0)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                    <span style="color: #0000ff">this</span>.rewindPlaybackRates.Add(supportedPlaybackRates[i]);</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">this</span>.rewindPlaybackRates.Add(1.0);</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// Verify if the current PlaybackRate is within the </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// allowables values. Get the index of the new </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// PlaybackRate to set.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">if</span> (playbackRate &gt;= 0.0)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            newPlaybackRateIndex = 0;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">else</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i &lt; <span style="color: #0000ff">this</span>.rewindPlaybackRates.Count - 1; i++)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.rewindPlaybackRates[i] == playbackRate)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                    newPlaybackRateIndex = (i + 1) % <span style="color: #0000ff">this</span>.rewindPlaybackRates.Count;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                    <span style="color: #0000ff">break</span>;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">this</span>.SmoothPlayer.SetPlaybackRate(<span style="color: #0000ff">this</span>.rewindPlaybackRates[newPlaybackRateIndex]);</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">}</pre>
</pre>
<h5><strong></strong></h5>
<h5><strong></strong></h5>
<h5><strong></strong></h5>
<h5><strong></strong></h5>
<h5><strong>Fast Forward</strong></h5>
<pre style="padding-bottom: 5px;padding-left: 5px;width: 650px;padding-right: 5px;padding-top: 5px">
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// &lt;summary&gt;</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// Toogles the PlaybackRate of the Smooth Streaming Media Element.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// Uses the PlaybackRates greather than 1.0 to support Fast forward.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #808080">/// &lt;/summary&gt;</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> OnFastForward()</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">{</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #008000">// PlaybackRate index to set on the SSME.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #0000ff">int</span> newPlaybackRateIndex = 0;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #008000">// Verify the state of the SmoothPlayer</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == SmoothStreamingMediaElementState.Paused</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        || <span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == SmoothStreamingMediaElementState.Playing</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        || <span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == SmoothStreamingMediaElementState.Buffering)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// Get the current PlaybackRate of the SSME</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">double</span> playbackRate = <span style="color: #0000ff">this</span>.PlaybackRate;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// The first time we get the Fast Forward PlaybackRates from</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// the SSME supported PlayBackRates. Fast Forward PlaybackRates </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// are above 1.0</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.fastForwardPlaybackRates == <span style="color: #0000ff">null</span>)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">this</span>.fastForwardPlaybackRates = <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">double</span>&gt;();</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            IList&lt;<span style="color: #0000ff">double</span>&gt; supportedPlaybackRates = <span style="color: #0000ff">this</span>.SmoothPlayer.SupportedPlaybackRates;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i &lt; supportedPlaybackRates.Count - 1; i++)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                <span style="color: #0000ff">if</span> (supportedPlaybackRates[i] &gt; 1.0)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                    <span style="color: #0000ff">this</span>.fastForwardPlaybackRates.Add(supportedPlaybackRates[i]);</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">this</span>.fastForwardPlaybackRates.Add(1.0);</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// Verify if the current PlaybackRate is within the </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// allowables values. Get the index of the new </span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #008000">// PlaybackRate to set.</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">if</span> (playbackRate &lt;= 1.0)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            newPlaybackRateIndex = 0;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">else</span></pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i &lt; <span style="color: #0000ff">this</span>.fastForwardPlaybackRates.Count - 1; i++)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.fastForwardPlaybackRates[i] == playbackRate)</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                {</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                    newPlaybackRateIndex = (i + 1) % <span style="color: #0000ff">this</span>.fastForwardPlaybackRates.Count;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                    <span style="color: #0000ff">break</span>;</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">                }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">            }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">        <span style="color: #0000ff">this</span>.SmoothPlayer.SetPlaybackRate(<span style="color: #0000ff">this</span>.fastForwardPlaybackRates[newPlaybackRateIndex]);</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">    }</pre>
<pre style="margin: 0em;width: 100%;font-family: consolas,'Courier New',courier,monospace;font-size: 12px">}</pre>
</pre>
<p>For more information about the SSME Beta 2 release, check Vishal&#8217;s post : <a href="http://blogs.iis.net/vsood/archive/2010/01/15/iis-smooth-streaming-player-development-kit-beta-2-released.aspx" target="_blank">IIS Smooth Streaming Player Development Kit Beta 2 released </a></p>
<p>Enjoy it!<br />
<a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f01%2f15%2frewind-and-fast-forward-using-the-smooth-streaming-media-element-ssme-beta-2%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f01%2f15%2frewind-and-fast-forward-using-the-smooth-streaming-media-element-ssme-beta-2%2f" border="0" alt="kick it on DotNetKicks.com" /></a><br />
<a rev="vote-for" href="http://dotnetshoutout.com/Ezequiel-Jadibs-Blog-Rewind-and-Fast-Forward-using-the-Smooth-Streaming-Media-Element-SSME-Beta-2"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fblogs.southworks.net%2Fejadib%2F2010%2F01%2F15%2Frewind-and-fast-forward-using-the-smooth-streaming-media-element-ssme-beta-2%2F"></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=wIBKFGU21DE:6TzRc7s97EU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=wIBKFGU21DE:6TzRc7s97EU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=wIBKFGU21DE:6TzRc7s97EU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=wIBKFGU21DE:6TzRc7s97EU:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=wIBKFGU21DE:6TzRc7s97EU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=wIBKFGU21DE:6TzRc7s97EU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=wIBKFGU21DE:6TzRc7s97EU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=wIBKFGU21DE:6TzRc7s97EU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=wIBKFGU21DE:6TzRc7s97EU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/wIBKFGU21DE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2010/01/15/rewind-and-fast-forward-using-the-smooth-streaming-media-element-ssme-beta-2/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2010/01/15/rewind-and-fast-forward-using-the-smooth-streaming-media-element-ssme-beta-2/</feedburner:origLink></item>
		<item>
		<title>Slow Motion using the Smooth Streaming Media Element (SSME)</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/XdIlx5iZtLM/</link>
		<comments>http://blogs.southworks.net/ejadib/2009/10/16/slow-motion-using-the-smooth-streaming-media-element-ssme/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 02:59:24 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Adaptive Streaming]]></category>

		<category><![CDATA[IIS7]]></category>

		<category><![CDATA[Live Smooth Streaming]]></category>

		<category><![CDATA[SSME]]></category>

		<category><![CDATA[Silverlight 3]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<category><![CDATA[Smooth Streaming Media Element]]></category>

		<category><![CDATA[Smooth Streaming Player Development Kit]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/?p=209</guid>
		<description><![CDATA[The week started with really great news from the IIS Team. The IIS Media Services 3.0 streaming was released. Among others features the release includes the RTW bits of Live Smooth Streaming.
Also, in the efforts to bring the Smooth Streaming experience to everyone the IIS team published the IIS Smooth Streaming Player Development Kit 1.0 [...]]]></description>
			<content:encoded><![CDATA[<p>The week started with really great news from the IIS Team. The IIS Media Services 3.0 streaming was released. Among others features the release includes the RTW bits of Live Smooth Streaming.</p>
<p>Also, in the efforts to bring the Smooth Streaming experience to everyone the IIS team published the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2b1ce605-3b99-49ad-8a26-1250f2acbbf6&amp;displaylang=en" target="_blank">IIS Smooth Streaming Player Development Kit 1.0 – Beta 1</a> which is intended to aid the development of rich Smooth Streaming experiences.</p>
<p>Bunch of posts to review if you are not aware of the new releases:</p>
<ul>
<li><a href="http://blogs.iis.net/chriskno/archive/2009/10/12/iis-media-services-3-0-including-iis-live-smooth-streaming-has-been-released.aspx" target="_blank">IIS Media Services 3.0, including IIS Live Smooth Streaming, has been released</a> – <a href="http://blogs.iis.net/chriskno/default.aspx" target="_blank">Chris Knowlton</a></li>
<li><a href="http://blogs.iis.net/jboch/archive/2009/10/12/rtw-of-live-smooth-streaming-is-now-live.aspx" target="_blank">RTW of Live Smooth Streaming is now… Live.</a> – <a href="http://blogs.iis.net/jboch/" target="_blank">John Bocharov</a></li>
<li><a href="http://alexzambelli.com/blog/2009/10/12/iis-media-services-3-0-and-player-sdk-released/" target="_blank">IIS Media Services 3.0 and Player SDK released!</a> – <a href="http://alexzambelli.com/blog/2009/10/12/iis-media-services-3-0-and-player-sdk-released/" target="_blank">Alex Zambelli</a></li>
<li><a href="http://blogs.iis.net/vsood/archive/2009/10/09/iis-smooth-streaming-player-development-kit-1-0-beta-1-released.aspx" target="_blank">IIS Smooth Streaming Player Development Kit 1.0 – Beta 1 Released</a> – <a href="http://blogs.iis.net/vsood/" target="_blank">Vishal Sood</a></li>
</ul>
<p>I’m very excited with this release, as we have been using the Smooth Streaming Media Element almost from its beginning mainly for the work we did for the NBC Sunday Night Football event. (see <a href="http://team.silverlight.net/announcement/sunday-night-football-powered-by-silverlight/" target="_blank">here</a> &amp; <a href="http://blogs.iis.net/alexzam/archive/2009/09/10/nbc-sunday-night-football-powered-by-silverlight-and-smooth-streaming.aspx" target="_blank">here</a>). I will start sharing with you how to take advantage of the SSME.</p>
<p>In this post I will show you how easy is to bring an Slow Motion experience using the SSME. Vishal blogged a great <a href="http://blogs.iis.net/vsood/archive/2009/10/14/building-your-first-smooth-streaming-player.aspx" target="_blank">SSME getting started guide</a> that I encourage you  to review before digging into the details of this post.</p>
<p>Adding support for Slow Motion to your Smooth Player is really easy, and basically what you have to do is getting the playback rates between 0.0 and 1.0, and move across them every time you click your Slow Motion button on the player.</p>
<p>Below you will find a code snippet ready to be used that will help you to implement the Slow Motion logic.</p>
<pre style="border: 1px solid #CECECE;padding-bottom: 5px;width: 650px;padding: 5px">
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em"><span style="color: #0000ff">private</span> List&lt;<span style="color: #0000ff">double</span>&gt; slowMotionPlaybackRates;</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em"><span style="color: #808080">/// &lt;summary&gt;</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em"><span style="color: #808080">/// Toogles the PlaybackRate of the Smooth Streaming Media Element.</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em"><span style="color: #808080">/// Uses the PlaybackRates between 0.0 and 1.0 to support Slow Motion.</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em"><span style="color: #808080">/// &lt;/summary&gt;</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> OnSlowMotion()</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">{</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">    <span style="color: #008000">// PlaybackRate index to set on the SSME.</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">    <span style="color: #0000ff">int</span> newPlaybackRateIndex = 0;</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">    <span style="color: #008000">// Verify the state of the SmoothPlayer</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">    <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == MediaElementState.Paused</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        || <span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == MediaElementState.Playing</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        || <span style="color: #0000ff">this</span>.SmoothPlayer.CurrentState == MediaElementState.Buffering)</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">    {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #008000">// Get the current PlaybackRate of the SSME</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #0000ff">double</span> playbackRate = <span style="color: #0000ff">this</span>.SmoothPlayer.PlaybackRate;</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #008000">// The first time we get the SlowMotion PlaybackRates from</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #008000">// the SSME supported PlayBackRates. SlowMotion PlaybackRates </span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #008000">// are between 0.0 and 1.0.</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.slowMotionPlaybackRates == <span style="color: #0000ff">null</span>)</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            <span style="color: #0000ff">this</span>.slowMotionPlaybackRates = <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">double</span>&gt;();</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            IList&lt;<span style="color: #0000ff">double</span>&gt; supportedPlaybackRates = <span style="color: #0000ff">this</span>.SmoothPlayer.SupportedPlaybackRates;</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i &lt; supportedPlaybackRates.Count; i++)</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                <span style="color: #0000ff">if</span> (supportedPlaybackRates[i] &gt; 0.0 &amp;&amp; supportedPlaybackRates[i] &lt; 1.0)</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                    <span style="color: #0000ff">this</span>.slowMotionPlaybackRates.Add(supportedPlaybackRates[i]);</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            <span style="color: #0000ff">this</span>.slowMotionPlaybackRates.Add(1.0);</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #008000">// Verify if the current PlaybackRate is within the </span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #008000">// allowables values. Get the index of the new </span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #008000">// PlaybackRate to set.</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #0000ff">if</span> (playbackRate &lt;= 0.0 || playbackRate &gt;= 1.0)</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            newPlaybackRateIndex = 0;</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #0000ff">else</span></pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i &lt; <span style="color: #0000ff">this</span>.slowMotionPlaybackRates.Count; i++)</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.slowMotionPlaybackRates[i] == playbackRate)</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                {</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                    newPlaybackRateIndex = (i + 1) % <span style="color: #0000ff">this</span>.slowMotionPlaybackRates.Count;</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                    <span style="color: #0000ff">break</span>;</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">                }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">            }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">        <span style="color: #0000ff">this</span>.SmoothPlayer.SetPlaybackRate(<span style="color: #0000ff">this</span>.slowMotionPlaybackRates[newPlaybackRateIndex]);</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">    }</pre>
<pre style="font-family: consolas,'Courier New',courier,monospace;font-size: 12px;width: 100%;margin: 0em">}</pre>
</pre>
<p>Hope you find the code snippet useful. Stay tuned!, new posts are coming.</p>
<p>PS: If you face any issue with the Smooth Streaming Development Kit or if you just want to provide feedback to the IIS team, please use this <a href="http://forums.iis.net/t/1161702.aspx" target="_blank">thread</a>.</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=XdIlx5iZtLM:Vj_V-_tkJMw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=XdIlx5iZtLM:Vj_V-_tkJMw:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=XdIlx5iZtLM:Vj_V-_tkJMw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=XdIlx5iZtLM:Vj_V-_tkJMw:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=XdIlx5iZtLM:Vj_V-_tkJMw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=XdIlx5iZtLM:Vj_V-_tkJMw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=XdIlx5iZtLM:Vj_V-_tkJMw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=XdIlx5iZtLM:Vj_V-_tkJMw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=XdIlx5iZtLM:Vj_V-_tkJMw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/XdIlx5iZtLM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2009/10/16/slow-motion-using-the-smooth-streaming-media-element-ssme/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2009/10/16/slow-motion-using-the-smooth-streaming-media-element-ssme/</feedburner:origLink></item>
		<item>
		<title>PRISM @ CodeCamp Buenos Aires 2009</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/5C8Eyq4EXJ4/</link>
		<comments>http://blogs.southworks.net/ejadib/2009/09/22/prism-codecamp-buenos-aires-2009/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 16:50:23 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[CWPF]]></category>

		<category><![CDATA[Client Development]]></category>

		<category><![CDATA[Composite Application Guidance for Silverlight]]></category>

		<category><![CDATA[Composite Application Guidance for WPF]]></category>

		<category><![CDATA[Composite Application Library]]></category>

		<category><![CDATA[Composite WPF]]></category>

		<category><![CDATA[Events]]></category>

		<category><![CDATA[Patterns &amp; Practices]]></category>

		<category><![CDATA[Presentation Model]]></category>

		<category><![CDATA[Prism]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Silverlight 2]]></category>

		<category><![CDATA[Silverlight 3]]></category>

		<category><![CDATA[Southies]]></category>

		<category><![CDATA[WPF]]></category>

		<category><![CDATA[WPF Composite Client]]></category>

		<category><![CDATA[Windows Presentation Foundation]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/2009/09/22/prism-codecamp-buenos-aires-2009/</guid>
		<description><![CDATA[This post announces an event being held at Buenos Aires, Argentina.

 
On September 26th, a new CodeCamp will take place at Buenos Aires. This year, I will join my teammate Diego Poza and together we will talk about how to develop composite applications for WPF &#38; Silverlight using PRISM. Our presentation starts at 4:15 PM and [...]]]></description>
			<content:encoded><![CDATA[<p><em>This post announces an <a href="http://www.codecamp.com.ar/" target="_blank">event</a> being held at Buenos Aires, Argentina.</em></p>
<p><a href="http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=DD-17-4E-41-85-DA-1B-FD-23-78-01-63-2B-E3-3B-7F&amp;Culture=es-AR" target="_blank"><img style="margin-left: 0px;margin-right: 0px" src="http://blogs.southworks.net/ejadib/files/2009/09/ban-ar-180x150-coqcamp.gif" alt="CodeCamp Buenos Aires 2009" width="180" height="150" align="left" /></a></p>
<p> </p>
<p>On September 26th, a new <a href="http://www.codecamp.com.ar/" target="_blank">CodeCamp</a> will take place at Buenos Aires. This year, I will join my teammate <a href="http://blogs.southworks.net/dpoza" target="_blank">Diego Poza</a> and together we will talk about how to develop composite applications for WPF &amp; Silverlight using <a href="http://compositewpf.codeplex.com/" target="_blank">PRISM</a>. Our presentation starts at 4:15 PM and will last 1 hour.</p>
<p> </p>
<p>During the presentation we will go over PRISM Core Concepts and show a real-world implementation. Don&#8217;t miss the surprises at the end of the session.</p>
<p><img src="http://blogs.southworks.net/ejadib/files/2009/09/image.png" border="0" alt="Desarrollando aplicaciones modulares en WPF y Silverlight con Prism" width="469" height="363" /></p>
<p>On a related topic, <a href="http://www.southworks.net" target="_blank">Southworks</a> is one of the sponsors of the event and several other <em><strong>southies</strong></em> will be presenting as well:</p>
<ul>
<li><a href="http://blogs.southworks.net/mwoloski" target="_blank">Matias</a> and <a href="http://blogs.southworks.net/jhalife/" target="_blank">Johnny</a> will be presenting about Mega Datacenters with Windows Azure. <a href="http://blogs.southworks.net/jhalife/" target="_blank">Johnny</a> will also join Zaiden and together they will present about VS 2010 and C# 4.0</li>
<li><a href="http://blog.salias.com.ar/" target="_blank">Martin Salias</a> will be in functional mode explaining the main advantages of F#.</li>
<li><a href="http://blogs.southworks.net/nicopaez/" target="_blank">Nico Paez</a> will be talking about open source tools for .NET</li>
<li><a href="http://blogs.southworks.net/aortega/" target="_blank">Beto</a>, our IT Pro, will be off the charts. He will present in four sessions talking about Hyper-V, Windows Server 2008 R2 and SSME (SCOM, SCVMM, SCDPM).</li>
</ul>
<p>Are you going to miss this amazing event? <a href="http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=DD-17-4E-41-85-DA-1B-FD-23-78-01-63-2B-E3-3B-7F&amp;Culture=es-AR" target="_blank">Register Now</a>!</p>
<p><strong>Where</strong>: Universidad de Palermo, Mario Bravo 1050, Buenos Aires</p>
<p><strong>Time</strong>: From 9:30 AM to 19:00 PM</p>
<p>See you in the event and in the <a href="http://www.southworks.net" target="_blank">Southworks</a> booth.</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=5C8Eyq4EXJ4:c8lEQw91N4U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5C8Eyq4EXJ4:c8lEQw91N4U:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5C8Eyq4EXJ4:c8lEQw91N4U:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5C8Eyq4EXJ4:c8lEQw91N4U:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5C8Eyq4EXJ4:c8lEQw91N4U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=5C8Eyq4EXJ4:c8lEQw91N4U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5C8Eyq4EXJ4:c8lEQw91N4U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=5C8Eyq4EXJ4:c8lEQw91N4U:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=5C8Eyq4EXJ4:c8lEQw91N4U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/5C8Eyq4EXJ4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2009/09/22/prism-codecamp-buenos-aires-2009/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2009/09/22/prism-codecamp-buenos-aires-2009/</feedburner:origLink></item>
		<item>
		<title>WPF &amp; Windows 7 Screencast</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/ndMKPhKw9kI/</link>
		<comments>http://blogs.southworks.net/ejadib/2009/08/10/wpf-windows-7-screencast/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 14:01:16 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Client Development]]></category>

		<category><![CDATA[Events]]></category>

		<category><![CDATA[Screencasts]]></category>

		<category><![CDATA[WPF]]></category>

		<category><![CDATA[Windows 7]]></category>

		<category><![CDATA[Windows Presentation Foundation]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/2009/08/10/wpf-windows-7-screencast/</guid>
		<description><![CDATA[Last week, we recorded with Matias Woloski an screencast for the Windows 7&#215;7 campaign (Alberto Ortega blogged about the campaign), showing how to take advantage of some of the new features of Windows 7 in a Windows Presentation Foundation application.
During the screencast we showed how the user experience can be enhanced by using the new [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, we recorded with <a href="http://blogs.southworks.net/mwoloski" target="_blank">Matias Woloski</a> an <a href="http://www.mslatam.com/latam/mediacenter/default.aspx?v=4c66302e-e87b-4a83-bb4a-caacbd22a563" target="_blank">screencast</a> for the Windows 7&#215;7 campaign (<a href="http://blogs.southworks.net/aortega/" target="_blank">Alberto Ortega</a> blogged about the <a href="http://blogs.southworks.net/aortega/2009/07/10/windows-7x7-is-training-campaign-is-running/" target="_blank">campaign</a>), showing how to take advantage of some of the new features of Windows 7 in a Windows Presentation Foundation application.</p>
<p>During the screencast we showed how the user experience can be enhanced by using the new capabilities of the Windows 7 Taskbar.</p>
<p>Thanks to <a href="http://blogs.southworks.net/dschenkelman" target="_blank">Damian Schenkelman</a> who helped us with the application.</p>
<p><a href="http://blogs.southworks.net/ejadib/files/2009/08/image.png"><img src="http://blogs.southworks.net/ejadib/files/2009/08/image-thumb.png" border="0" alt="image" width="539" height="480" /></a> </p>
<p><strong>Resources</strong></p>
<ul>
<li><a href="http://www.mslatam.com/latam/mediacenter/default.aspx?v=4c66302e-e87b-4a83-bb4a-caacbd22a563" target="_blank">Screencast</a> (in Spanish)</li>
<li><a href="http://cid-99e3cd967baf3dc7.skydrive.live.com/self.aspx/MSDN%20%7C0%20TechNet/Windows%207x7/SnowShopW7.zip" target="_blank">Code</a></li>
<li><a href="http://blogs.southworks.net/mwoloski/2009/08/11/windows-7-screencast-taskbar-overlayimage-progressbar-thumbnails/" target="_blank">Windows 7 Screencast – Taskbar, OverlayImage, ProgressBar, Thumbnails</a></li>
<li><a href="http://blogs.southworks.net/dschenkelman/2009/08/11/developing-applications-with-wpf-and-windows-7-part-i/" target="_blank">Developing applications with WPF and Windows 7 (Part I)</a> </li>
</ul>
<p>Enjoy!</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=ndMKPhKw9kI:oX0N7yqVBhE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ndMKPhKw9kI:oX0N7yqVBhE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ndMKPhKw9kI:oX0N7yqVBhE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ndMKPhKw9kI:oX0N7yqVBhE:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ndMKPhKw9kI:oX0N7yqVBhE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=ndMKPhKw9kI:oX0N7yqVBhE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ndMKPhKw9kI:oX0N7yqVBhE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=ndMKPhKw9kI:oX0N7yqVBhE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ndMKPhKw9kI:oX0N7yqVBhE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/ndMKPhKw9kI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2009/08/10/wpf-windows-7-screencast/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2009/08/10/wpf-windows-7-screencast/</feedburner:origLink></item>
		<item>
		<title>Live Smooth Streaming: How-to: Retrieve the configuration settings programmatically</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/CepBtSv6hos/</link>
		<comments>http://blogs.southworks.net/ejadib/2009/04/17/live-smooth-streaming-how-to-retrieve-the-configuration-settings-programmatically/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 07:39:16 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Adaptive Streaming]]></category>

		<category><![CDATA[IIS7]]></category>

		<category><![CDATA[Live Smooth Streaming]]></category>

		<category><![CDATA[RSCA]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/?p=202</guid>
		<description><![CDATA[In my previous post, I explained how the Microsoft.Web.Administration API of IIS7 helped us to manage the Live Smooth Streaming Publishing Points programmatically. In this post I&#8217;m going to show you how, using the same API, you can retrieve the Live Smooth Streaming configuration settings.
First, let&#8217;s take a look at the Live Smooth Streaming configuration [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://blogs.southworks.net/ejadib/2009/04/16/live-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically/" target="_blank">previous post</a>, I explained how the <a href="http://msdn.microsoft.com/en-us/library/microsoft.web.administration.aspx" target="_blank">Microsoft.Web.Administration API</a> of IIS7 helped us to manage the Live Smooth Streaming Publishing Points programmatically. In this post I&#8217;m going to show you how, using the same API, you can retrieve the Live Smooth Streaming configuration settings.</p>
<p>First, let&#8217;s take a look at the Live Smooth Streaming configuration settings window</p>
<p><img src="http://blogs.southworks.net/ejadib/files/2009/04/image2.png" border="0" alt="image" width="600" height="374" /></p>
<p>The main idea here is to read the Live Streaming configuration section and get the attributes values from there. The piece of code looks like:</p>
<table border="0" cellspacing="0" cellpadding="0" width="600">
<tbody>
<tr>
<td width="600" valign="top">
<pre><span style="color: #0000ff">const string </span>LiveStreamingSectionPath = <span style="color: #a31515">&#8220;system.webServer/media/liveStreaming&#8221;</span>;

<span style="color: #2b91af">ServerManager </span>serverManager = <span style="color: #0000ff">new </span><span style="color: #2b91af">ServerManager</span>();

<span style="color: #2b91af">Configuration </span>configuration = serverManager.GetApplicationHostConfiguration();
<span style="color: #2b91af">ConfigurationSection </span>section = configuration.GetSection(LiveStreamingSectionPath);

<span style="color: #0000ff">if </span>(section != <span style="color: #0000ff">null</span>)
{
    <span style="color: #0000ff">foreach </span>(<span style="color: #2b91af">ConfigurationAttribute </span>attribute <span style="color: #0000ff">in </span>section.Attributes)
    {
        <span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">&#8220;{0}: {1}&#8221;</span>, attribute.Name, attribute.Value);
    }

    <span style="color: #2b91af">Console</span>.ReadLine();
}</pre>
</td>
</tr>
</tbody>
</table>
<p>Running the preceding code will output the following:</p>
<p><img src="http://blogs.southworks.net/ejadib/files/2009/04/image3.png" border="0" alt="image" width="600" height="143" /></p>
<p>As you see, reading the configuration settings is easy and can enable you different scenarios, for example, deleting the archived streams of a publishing point.<br />
If you want to take a look at the Live Smooth Streaming schema, go to <em>%windir%\System32\inetsrv\config\schema</em> and open the<em> IISMedia_LiveStreaming_schema.xml</em> file.</p>
<p>Happy streaming!</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=CepBtSv6hos:JATRl1AGlMM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=CepBtSv6hos:JATRl1AGlMM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=CepBtSv6hos:JATRl1AGlMM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=CepBtSv6hos:JATRl1AGlMM:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=CepBtSv6hos:JATRl1AGlMM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=CepBtSv6hos:JATRl1AGlMM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=CepBtSv6hos:JATRl1AGlMM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=CepBtSv6hos:JATRl1AGlMM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=CepBtSv6hos:JATRl1AGlMM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/CepBtSv6hos" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2009/04/17/live-smooth-streaming-how-to-retrieve-the-configuration-settings-programmatically/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2009/04/17/live-smooth-streaming-how-to-retrieve-the-configuration-settings-programmatically/</feedburner:origLink></item>
		<item>
		<title>Live Smooth Streaming: How-to: Start, Stop &amp; Shutdown a Publishing Point Programmatically</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/TTTLqnq7PAY/</link>
		<comments>http://blogs.southworks.net/ejadib/2009/04/16/live-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 12:05:17 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Adaptive Streaming]]></category>

		<category><![CDATA[IIS7]]></category>

		<category><![CDATA[Live Smooth Streaming]]></category>

		<category><![CDATA[RSCA]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Silverlight 2]]></category>

		<category><![CDATA[Silverlight 3]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/2009/04/16/live-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically/</guid>
		<description><![CDATA[During the last months I have been working in a project highly related to multimedia and client development technologies such as Silverlight. And in the last few weeks, I started to look to some of the new IIS Media services such as Smooth Streaming and Live Smooth Streaming in order to gather as much knowledge [...]]]></description>
			<content:encoded><![CDATA[<p>During the last months I have been working in a project highly related to multimedia and <img style="margin-left: 0px;margin-right: 0px" src="http://blogs.southworks.net/ejadib/files/2009/04/iissmooth.jpg" border="0" alt="iis-smooth" width="182" height="134" align="right" />client development technologies such as Silverlight. And in the last few weeks, I started to look to some of the new <a href="http://www.iis.net/media">IIS Media services</a> such as <a href="http://www.iis.net/extensions/SmoothStreaming">Smooth Streaming</a> and <a href="http://www.iis.net/extensions/LiveSmoothStreaming">Live Smooth Streaming</a> in order to gather as much knowledge about them to perform some spikes for the project.</p>
<p>One of the things that came up while spiking was finding a way to start, stop &amp; shutdown a publishing point via code.</p>
<h5><strong>Microsoft.Web.Administration to the Rescue</strong></h5>
<p><a href="http://blogs.msdn.com/carlosag/archive/2006/04/17/MicrosoftWebAdministration.aspx" target="_blank"><img style="margin-left: 0px;margin-right: 0px" src="http://blogs.southworks.net/ejadib/files/2009/04/servermanager.png" border="0" alt="ServerManager" width="297" height="188" align="left" /></a>With IIS7 a <a href="http://msdn.microsoft.com/en-us/library/microsoft.web.administration.aspx" target="_blank">new API</a> to administer IIS from managed code was introduced. This API is really simple to use and with a few lines of code you can manipulate the server configuration as any other information available in IIS7. (if you want to taste the power of this API, I recommend you to read <a href="http://blogs.msdn.com/carlosag/archive/2006/04/17/MicrosoftWebAdministration.aspx" target="_blank">this post</a> from <a href="http://blogs.msdn.com/carlosag" target="_blank">Carlos Aguilar Mares</a>).</p>
<p>So, I used the Microsoft.Web.Administration.dll assembly, that can be found at IIS Directory (%windir%\System32\inetSrv), to perform the operations over the publishing point. But it was not so easy to do it, as there is no information available yet about what RSCA function has to be called  and which parameters need to be used in order get the desired results.</p>
<p>Then, I started to look at the different IIS configuration files (%windir%\System32\inetsrv\config) searching for clues and I came up with the Microsoft.Web.Management.Media.LiveStreaming.dll assembly (this assembly can be found in the GAC after installing the <a href="http://www.iis.net/extensions/LiveSmoothStreaming" target="_blank">Live Smooth Streaming bits</a>).</p>
<p>In that moment I summoned my best friend Reflector and together went to the depths of this assembly until we found some code that might be useful for our objective.</p>
<p>After doing some tests, I ended up with the following method:</p>
<table border="0" cellspacing="0" cellpadding="0" width="604">
<tbody>
<tr>
<td width="602" valign="top">
<pre><span style="color: blue">private static void </span>ExecuteRscaFunction(<span style="color: #2b91af">ConfigurationElement </span>workerProcess,</pre>
<pre>                                        <span style="color: blue">string </span>siteName, <span style="color: blue">string </span>applicationPath,</pre>
<pre>                                        <span style="color: blue">string </span>fileName, <span style="color: blue">string </span>functionName)
{
    <span style="color: #2b91af">ConfigurationMethod </span>configurationMethod = workerProcess.Methods[<span style="color: #a31515">"GetCustomData"</span>];

    <span style="color: #2b91af">ConfigurationMethodInstance </span>instance = configurationMethod.CreateInstance();
    instance.Input[<span style="color: #a31515">"guidIdOfFunctionCall"</span>] = <span style="color: #a31515">&#8220;Media_LiveStreaming_Control&#8221;</span>;

    <span style="color: blue">string </span>currentLogicalPath = applicationPath;

    <span style="color: blue">if </span>(!currentLogicalPath.EndsWith(<span style="color: #a31515">&#8220;/&#8221;</span>, <span style="color: #2b91af">StringComparison</span>.OrdinalIgnoreCase))
    {
        currentLogicalPath = currentLogicalPath + <span style="color: #a31515">&#8220;/&#8221;</span>;
    }

    <span style="color: blue">string </span>fullPath = <span style="color: blue">string</span>.Concat(currentLogicalPath, fileName);
    <span style="color: blue">string </span>parameters = <span style="color: blue">string</span>.Format(<span style="color: #2b91af">CultureInfo</span>.InvariantCulture, <span style="color: #a31515">&#8220;{0};{1};{2}&#8221;</span>,
                                      functionName, siteName, fullPath);
    instance.Input[<span style="color: #a31515">"parametersOfFunctionCall"</span>] = parameters;
    instance.Execute();
}</pre>
<p><a href="http://11011.net/software/vspaste"></a></td>
</tr>
</tbody>
</table>
<p>The most important thing of the method above is the <em>functionName</em> parameter. This parameter can be one the following values depending on what you want to accomplish:</p>
<ul>
<li><strong>StartPublishingPoint</strong>. This is used to start a publishing point.</li>
<li><strong>StopPublishingPoint</strong>.<strong> </strong>This is used to stop the live source of the publishing point.</li>
<li><strong>ShutdownPublishingPoint</strong>. This is used to shutdown a publishing point.</li>
</ul>
<p>To understand where the others parameters should come from, let’s take a look at the following example:  <img src="http://blogs.southworks.net/ejadib/files/2009/04/image.png" border="0" alt="image" width="486" height="231" /> So, if we want to the start the <em>LiveSmoothStream</em> publishing point associated to the <em>SmoothStreaming</em> application from the <em>Default Web Site</em>, we should call the ExecuteRscaFunction method in this way:</p>
<table border="0" cellspacing="0" cellpadding="0" width="600">
<tbody>
<tr>
<td width="600" valign="top">
<pre>ExecuteRscaFunction(workerProcess,</pre>
<pre>                    <span style="color: #a31515">&#8220;Default Web Site&#8221;</span>, <span style="color: #a31515">&#8220;/SmoothStreaming&#8221;</span>,</pre>
<pre>                    <span style="color: #a31515">&#8220;LiveSmoothStream.isml&#8221;</span>, <span style="color: #a31515">&#8220;StartPublishingPoint&#8221;</span>);</pre>
</td>
</tr>
</tbody>
</table>
<p>The remaining parameter (<em>workerProcess</em>) must be retrieved from the application pool associated to the application.</p>
<p><strong>Note</strong>: You can use the Microsoft.Web.Administration API to get all the values previously mentioned.</p>
<p>To see if the function is working you can add the following lines of code at the end of the method to parse the output and print it on the console.</p>
<table border="0" cellspacing="0" cellpadding="0" width="600">
<tbody>
<tr>
<td width="600" valign="top">
<pre><span style="color: blue">string </span>rawOutput = instance.Output[<span style="color: #a31515">"data"</span>] <span style="color: blue">as string</span>;

<span style="color: blue">byte</span>[] bytes = <span style="color: #2b91af">Convert</span>.FromBase64String(rawOutput);
<span style="color: #2b91af">ASCIIEncoding </span>encoding = <span style="color: blue">new </span><span style="color: #2b91af">ASCIIEncoding</span>();

<span style="color: #2b91af">Console</span>.WriteLine(encoding.GetString(bytes));</pre>
</td>
</tr>
</tbody>
</table>
<p>The output after executing the Stop, Shutdown and Start functions:</p>
<p><img src="http://blogs.southworks.net/ejadib/files/2009/04/image1.png" border="0" alt="image" width="578" height="198" /></p>
<p>Hope this helps!. If you want to learn more about Smooth Streaming you might find useful the following links:</p>
<ul>
<li><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=03d22583-3ed6-44da-8464-b1b4b5ca7520" target="_blank">IIS Smooth Streaming Technical Overview</a></li>
<li><a href="http://alexzambelli.com/blog/2009/02/10/smooth-streaming-architecture/">Smooth Streaming Architecture</a></li>
<li><a href="http://alexzambelli.com/blog/2009/02/04/the-birth-of-smooth-streaming/">The Birth of Smooth Streaming</a></li>
<li><a href="http://learn.iis.net/page.aspx/620/live-smooth-streaming-for-iis-70---getting-started/" target="_blank">Live Smooth Streaming for IIS 7.0 - Getting Started</a></li>
<li><a href="http://learn.iis.net/page.aspx/622/iis-live-smooth-streaming---creating-and-managing-publishing-points/" target="_blank">IIS Live Smooth Streaming - Creating and Managing Publishing Points</a></li>
<li><a href="http://blogs.iis.net/jboch/archive/2009/02/19/smooth-streaming-questions-we-ve-got-answers.aspx">Smooth Streaming Questions? We’ve Got Answers!</a></li>
<li><a href="http://blogs.iis.net/jboch/archive/2008/10/28/i-ve-seen-the-future-and-the-future-is-smooth.aspx" target="_blank">I’ve seen the future and the future is… Smooth!</a></li>
<li><a href="http://alexzambelli.com/blog/2008/12/17/a-brief-history-of-multi-bitrate-streaming/">A Brief History of Multi-Bitrate Streaming</a></li>
</ul>
<p>Happy streaming!.</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2009%2f04%2f16%2flive-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2009%2f04%2f16%2flive-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=TTTLqnq7PAY:QFLkzP8VODo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=TTTLqnq7PAY:QFLkzP8VODo:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=TTTLqnq7PAY:QFLkzP8VODo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=TTTLqnq7PAY:QFLkzP8VODo:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=TTTLqnq7PAY:QFLkzP8VODo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=TTTLqnq7PAY:QFLkzP8VODo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=TTTLqnq7PAY:QFLkzP8VODo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=TTTLqnq7PAY:QFLkzP8VODo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=TTTLqnq7PAY:QFLkzP8VODo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/TTTLqnq7PAY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2009/04/16/live-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2009/04/16/live-smooth-streaming-how-to-start-stop-shutdown-a-publishing-point-programmatically/</feedburner:origLink></item>
		<item>
		<title>Prism v2: Migrating from Drop 9 to Drop 10</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/ZsTxU9DuoQE/</link>
		<comments>http://blogs.southworks.net/ejadib/2009/02/03/prism-v2-migrating-from-drop-9-to-drop-10/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 17:23:44 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[CWPF]]></category>

		<category><![CDATA[Composite Application Guidance for Silverlight]]></category>

		<category><![CDATA[Composite Application Guidance for WPF]]></category>

		<category><![CDATA[Composite Application Library]]></category>

		<category><![CDATA[Composite WPF]]></category>

		<category><![CDATA[Patterns &amp; Practices]]></category>

		<category><![CDATA[Powershell]]></category>

		<category><![CDATA[Prism]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[WPF]]></category>

		<category><![CDATA[WPF Composite Client]]></category>

		<category><![CDATA[Windows Presentation Foundation]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/?p=192</guid>
		<description><![CDATA[As you may know, last Friday a new drop of the Composite Application Guidance for WPF &#38; Silverlight was released.
As Erwin said in this post, one of the breaking changes of this new drop is that they removed the .Silverlight and .Desktop extensions from the Assembly names. If you are like me and have more [...]]]></description>
			<content:encoded><![CDATA[<p>As you may know, last Friday a <a href="http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=22566">new drop</a> of the <a href="http://www.codeplex.com/CompositeWPF">Composite Application Guidance for WPF &amp; Silverlight</a> was released.</p>
<p>As <a href="http://blogs.msdn.com/erwinvandervalk/">Erwin</a> said in <a href="http://blogs.msdn.com/erwinvandervalk/archive/2009/01/30/prism-v2-drop-10-composite-application-guidance.aspx">this post</a>, one of the breaking changes of this new drop is that they removed the .Silverlight and .Desktop extensions from the Assembly names. If you are like me and have more than one solution using <a href="http://www.codeplex.com/CompositeWPF">Prism v2</a> with a bunch of projects, you will probably find really annoying going over each project to update the references and the xaml files.</p>
<p>So, in order to accomplish this, I created a Powershell script that will look for all the .csproj and .xaml that contain references to the old prism assemblies and will update it to the new version of them.</p>
<p><strong>Note</strong>: If you have your code in TFS, make sure to go offline before running the script, so when you go back online it will detect the changes.</p>
<p><strong>Disclaimer </strong></p>
<p>This code is provided &#8220;AS IS&#8221; with no warranties, and confers no rights.</p>
<p><strong>Download </strong></p>
<p>You can find the script <a href="http://blogs.southworks.net/ejadib/files/2009/02/migratefromdrop9todrop10.zip" target="_blank">here</a>.</p>
<p> </p>
<p>Hope you find it useful.</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=ZsTxU9DuoQE:_dMpBt21bFk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ZsTxU9DuoQE:_dMpBt21bFk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ZsTxU9DuoQE:_dMpBt21bFk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ZsTxU9DuoQE:_dMpBt21bFk:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ZsTxU9DuoQE:_dMpBt21bFk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=ZsTxU9DuoQE:_dMpBt21bFk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ZsTxU9DuoQE:_dMpBt21bFk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=ZsTxU9DuoQE:_dMpBt21bFk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=ZsTxU9DuoQE:_dMpBt21bFk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/ZsTxU9DuoQE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2009/02/03/prism-v2-migrating-from-drop-9-to-drop-10/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2009/02/03/prism-v2-migrating-from-drop-9-to-drop-10/</feedburner:origLink></item>
		<item>
		<title>PDC 2008 Time: Meet Me In Los Angeles</title>
		<link>http://feeds.southworks.net/~r/ejadib/~3/GqZ4qM5xrho/</link>
		<comments>http://blogs.southworks.net/ejadib/2008/10/27/pdc-2008-time-meet-me-in-los-angeles/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 04:00:50 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[PDC]]></category>

		<category><![CDATA[PDC 2008]]></category>

		<category><![CDATA[Redmond]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/2008/10/27/pdc-2008-time-meet-me-in-los-angeles/</guid>
		<description><![CDATA[
 During the latest months at Southworks, we have been working on several demos and materials for the Microsoft’s Professional Developer Conference 2008. 
And in the last two weeks, with Matias and Edgardo, we were in Redmond (Microsoft Corp Main Campus) working hard with the Microsoft Developer &#38; Platform Evangelism (DPE) Team on many different [...]]]></description>
			<content:encoded><![CDATA[</p>
<p><a href="http://blogs.southworks.net/ejadib/files/2008/10/meetme.jpg"><img height="188" alt="meetme" src="http://blogs.southworks.net/ejadib/files/2008/10/meetme-thumb.jpg" width="138" align="left" border="0" /></a> During the latest months at <a href="http://www.southworks.net">Southworks</a>, we have been working on several demos and materials for the <a href="http://www.microsoftpdc.com/">Microsoft’s Professional Developer Conference 2008</a>. </p>
<p>And in the last two weeks, with <a href="http://blogs.southworks.net/mwoloski">Matias</a> and <a href="http://blogs.southworks.net/erossetto">Edgardo</a>, we were in Redmond (Microsoft Corp Main Campus) working hard with the Microsoft Developer &amp; Platform Evangelism (DPE) Team on many different projects, all them related to PDC 2008.</p>
<p>Now is time to fly to LA. <a href="http://blogs.southworks.net/mwoloski">Matias</a>, <a href="http://blogs.southworks.net/erossetto">Edgardo</a>, <a href="http://blogs.southworks.net/tosborn">Tim</a>, Alex, <a href="http://blogs.southworks.net/jhalife">Johnny</a>, <a href="http://blogs.southworks.net/fjack">Fede</a>, and <a href="http://blogs.southworks.net/ejadib">myself</a> will be attending one of the biggest events designed for leading-edge developers and software architects.</p>
<p>There are a lot of <a href="https://sessions.microsoftpdc.com/public/sessions.aspx">sessions</a> about many different topics, but the star will be the cloud. Microsoft will be announcing new technologies around the development platform, including the Windows Live Services Platform.</p>
<p>&#160;</p>
<p>So if you are attending, let&#8217;s meet there. For sure that you will find me in the Cloud and Identity sessions.</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/ejadib?a=GqZ4qM5xrho:jqxlDgXHUYg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=GqZ4qM5xrho:jqxlDgXHUYg:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ejadib?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=GqZ4qM5xrho:jqxlDgXHUYg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ejadib?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=GqZ4qM5xrho:jqxlDgXHUYg:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/ejadib?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=GqZ4qM5xrho:jqxlDgXHUYg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ejadib?i=GqZ4qM5xrho:jqxlDgXHUYg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=GqZ4qM5xrho:jqxlDgXHUYg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ejadib?i=GqZ4qM5xrho:jqxlDgXHUYg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/ejadib?a=GqZ4qM5xrho:jqxlDgXHUYg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ejadib?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ejadib/~4/GqZ4qM5xrho" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.southworks.net/ejadib/2008/10/27/pdc-2008-time-meet-me-in-los-angeles/feed/</wfw:commentRss>
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2008/10/27/pdc-2008-time-meet-me-in-los-angeles/</feedburner:origLink></item>
	</channel>
</rss>
