<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for Alex Zambelli's Silverlight Media Blog</title>
	<atom:link href="http://alexzambelli.com/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexzambelli.com/blog</link>
	<description>Silverlight, streaming media, Windows Media, VC-1, H.264</description>
	<pubDate>Thu, 20 Nov 2008 07:56:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>Comment on An inside look at NBC Olympics video player by Alex Zambelli</title>
		<link>http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1783</link>
		<dc:creator>Alex Zambelli</dc:creator>
		<pubDate>Thu, 30 Oct 2008 05:23:30 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1783</guid>
		<description>Cagdas,

There's no broad standard on how to implement adaptive streaming in Silverlight.

MediaStreamSource API merely allows A/V samples to be independently downloaded and then handed over to Silverlight to decode and render. How the samples are actually encoded, contained and transported - can vary.

For example, you could chunk up the media stream into thousands of pieces at encoding time and then have the client request tiny files. Or, you could generate a contiguous stream but have the client request a byte offset corresponding to a particular time sequence in the video. Either way works.

The most important thing in preparing content for adaptive streaming is to make sure each video sample has a valid sequence header in order to allow seamless switching in the decoder. This is why encoding for adaptive streaming typically requires video GOPs of fixed length (i.e. 2 seconds) and entry point headers at the start of each GOP. This allows the decoder to treat every GOP as a standalone unit, making it possible to switch between streams even when the resolution or bitstream configs change.

It's definitely possible to do adaptive streaming from live sources. It requires an encoder that's able to encode, index and upload the content to a CDN - all in realtime. Move Networks already provides this type of service today.

Correct, NBC Olympics used purely web servers for adaptive streaming.

Related to all this: Microsoft announced a productized version of our adaptive streaming technology this week - IIS 7.0 Smooth Streaming. The technology is based on IIS 7.0 and Silverlight, and is currently available through Akamai to end customers. You can visit http://www.smoothhd.com for demo and info.</description>
		<content:encoded><![CDATA[<p>Cagdas,</p>
<p>There&#8217;s no broad standard on how to implement adaptive streaming in Silverlight.</p>
<p>MediaStreamSource API merely allows A/V samples to be independently downloaded and then handed over to Silverlight to decode and render. How the samples are actually encoded, contained and transported - can vary.</p>
<p>For example, you could chunk up the media stream into thousands of pieces at encoding time and then have the client request tiny files. Or, you could generate a contiguous stream but have the client request a byte offset corresponding to a particular time sequence in the video. Either way works.</p>
<p>The most important thing in preparing content for adaptive streaming is to make sure each video sample has a valid sequence header in order to allow seamless switching in the decoder. This is why encoding for adaptive streaming typically requires video GOPs of fixed length (i.e. 2 seconds) and entry point headers at the start of each GOP. This allows the decoder to treat every GOP as a standalone unit, making it possible to switch between streams even when the resolution or bitstream configs change.</p>
<p>It&#8217;s definitely possible to do adaptive streaming from live sources. It requires an encoder that&#8217;s able to encode, index and upload the content to a CDN - all in realtime. Move Networks already provides this type of service today.</p>
<p>Correct, NBC Olympics used purely web servers for adaptive streaming.</p>
<p>Related to all this: Microsoft announced a productized version of our adaptive streaming technology this week - IIS 7.0 Smooth Streaming. The technology is based on IIS 7.0 and Silverlight, and is currently available through Akamai to end customers. You can visit <a href="http://www.smoothhd.com" rel="nofollow">http://www.smoothhd.com</a> for demo and info.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on An inside look at NBC Olympics video player by Venkatarangan's Blog [???????????? ??????????] - Notes on PDC2008 Sessions - Inside the NBC Olympics Player</title>
		<link>http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1766</link>
		<dc:creator>Venkatarangan's Blog [???????????? ??????????] - Notes on PDC2008 Sessions - Inside the NBC Olympics Player</dc:creator>
		<pubDate>Wed, 29 Oct 2008 21:54:03 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1766</guid>
		<description>[...] had to. Which was then mapped to Limelight &#38; Level 3 CDN's massive WMS boxes. More details of encoding process in the blog post hereNo full screen due to IOC Advertising requirements on the percentage of advertisements to videoMany [...]</description>
		<content:encoded><![CDATA[<p>[...] had to. Which was then mapped to Limelight &amp; Level 3 CDN&#8217;s massive WMS boxes. More details of encoding process in the blog post hereNo full screen due to IOC Advertising requirements on the percentage of advertisements to videoMany [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Moonlight 2.0 - Help wanted by Cecilia</title>
		<link>http://alexzambelli.com/blog/2008/08/16/moonlight-20-help-wanted/#comment-1731</link>
		<dc:creator>Cecilia</dc:creator>
		<pubDate>Wed, 29 Oct 2008 02:40:53 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/16/moonlight-20-help-wanted/#comment-1731</guid>
		<description>Good words.</description>
		<content:encoded><![CDATA[<p>Good words.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on An inside look at NBC Olympics video player by Cagdas Gerede</title>
		<link>http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1558</link>
		<dc:creator>Cagdas Gerede</dc:creator>
		<pubDate>Thu, 23 Oct 2008 17:56:03 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1558</guid>
		<description>Thank you very much for your response.

If I may, I have some follow up questions.


I have some experience with MediaStreamSource and I am confused to hear "Adaptive Streams" and "dual-bitrate adaptive streaming".

When I thought about how Adaptive Streaming works, I thought there are multiple separate streams (there are, for instance, in NBC case four streams with different bitrates and resolutions), and after we hook-in to a MediaElement with our custom MediaStreamSource, in the MediaStreamSource's method preparing the next sample to play in MediaElement, we decide from which stream we should generate the sample.

Does "Adaptive Stream" or "dual-bitrate adaptive streaming" refer to a single stream with some special features? For example, would there be 4 separate adaptive streams in NBC case for encore content. If that is the case, would we need different tools to create such streams than the tools to create regular media streams?

Also, you pointed out that it was a challenge to do adaptive streaming in realtime. Do you think Adaptive Streaming is a feature suitable for recorded media, but not for live media? If it is, why is this the case? 
Is it because, it takes time to create these kinds of "special" streams, and therefore the real-time requirement would be unmet.

Lastly, when you mentioned "Adaptive streaming to Silverlight was done entirely over HTTP using progressive download", I conclude that the backend server is a web server, not a streaming server. Am I correct? If that is the case, then, I assume the complete logic of adaptation is on the Silverlight site so I can use my choice of server technologies.


I appreciate your answers,
thanks</description>
		<content:encoded><![CDATA[<p>Thank you very much for your response.</p>
<p>If I may, I have some follow up questions.</p>
<p>I have some experience with MediaStreamSource and I am confused to hear &#8220;Adaptive Streams&#8221; and &#8220;dual-bitrate adaptive streaming&#8221;.</p>
<p>When I thought about how Adaptive Streaming works, I thought there are multiple separate streams (there are, for instance, in NBC case four streams with different bitrates and resolutions), and after we hook-in to a MediaElement with our custom MediaStreamSource, in the MediaStreamSource&#8217;s method preparing the next sample to play in MediaElement, we decide from which stream we should generate the sample.</p>
<p>Does &#8220;Adaptive Stream&#8221; or &#8220;dual-bitrate adaptive streaming&#8221; refer to a single stream with some special features? For example, would there be 4 separate adaptive streams in NBC case for encore content. If that is the case, would we need different tools to create such streams than the tools to create regular media streams?</p>
<p>Also, you pointed out that it was a challenge to do adaptive streaming in realtime. Do you think Adaptive Streaming is a feature suitable for recorded media, but not for live media? If it is, why is this the case?<br />
Is it because, it takes time to create these kinds of &#8220;special&#8221; streams, and therefore the real-time requirement would be unmet.</p>
<p>Lastly, when you mentioned &#8220;Adaptive streaming to Silverlight was done entirely over HTTP using progressive download&#8221;, I conclude that the backend server is a web server, not a streaming server. Am I correct? If that is the case, then, I assume the complete logic of adaptation is on the Silverlight site so I can use my choice of server technologies.</p>
<p>I appreciate your answers,<br />
thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on An inside look at NBC Olympics video player by Alex Zambelli</title>
		<link>http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1538</link>
		<dc:creator>Alex Zambelli</dc:creator>
		<pubDate>Thu, 23 Oct 2008 09:32:13 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1538</guid>
		<description>Restricting adaptive streaming to only Highlights/Encore content was mostly a design decision. Rewind videos could've been created as dual-bitrate adaptive streaming assets, but the thought during the design phase was that doing so would require additional testing. In hindsight, that was probably an overly cautious decision.

As for Live streams, we simply didn't have the encoder tools available that could easily create adaptive streams and upload them to CDNs in realtime. On the other hand, Windows Media-ready live encoders (such as the Digital Rapids Stream encoders used by NBC) were widely available and of great quality.

As for your last question... Adaptive streaming to Silverlight was done entirely over HTTP using progressive download. This was made possible by Silverlight's low-level MediaStreamSource API which allows you to download data using .NET methods, parse it and hand it off to Silverlight to decode and render. Engineering the same functionality in WMP would've required an additional ActiveX plugin, at the very least.</description>
		<content:encoded><![CDATA[<p>Restricting adaptive streaming to only Highlights/Encore content was mostly a design decision. Rewind videos could&#8217;ve been created as dual-bitrate adaptive streaming assets, but the thought during the design phase was that doing so would require additional testing. In hindsight, that was probably an overly cautious decision.</p>
<p>As for Live streams, we simply didn&#8217;t have the encoder tools available that could easily create adaptive streams and upload them to CDNs in realtime. On the other hand, Windows Media-ready live encoders (such as the Digital Rapids Stream encoders used by NBC) were widely available and of great quality.</p>
<p>As for your last question&#8230; Adaptive streaming to Silverlight was done entirely over HTTP using progressive download. This was made possible by Silverlight&#8217;s low-level MediaStreamSource API which allows you to download data using .NET methods, parse it and hand it off to Silverlight to decode and render. Engineering the same functionality in WMP would&#8217;ve required an additional ActiveX plugin, at the very least.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on An inside look at NBC Olympics video player by Cagdas Gerede</title>
		<link>http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1523</link>
		<dc:creator>Cagdas Gerede</dc:creator>
		<pubDate>Wed, 22 Oct 2008 23:53:33 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/21/an-inside-look-at-nbc-olympics-video-player/#comment-1523</guid>
		<description>Thanks for the article. 

One question I have is why adaptive streaming only works with Highlights/Encore content. What is the challenge with Live/Rewind content?

Also, you mentioned that Live video is streamed via WMS HTTP streaming protocol. And you also mentioned "If you’re using the WMP plugin, you always get the WMS stream, regardless of content type." 

How is this different for Silverlight? When the content is not live, does it delivered via Progressive Download? if it does, why is this the case?

I appreciate your answer,
thanks</description>
		<content:encoded><![CDATA[<p>Thanks for the article. </p>
<p>One question I have is why adaptive streaming only works with Highlights/Encore content. What is the challenge with Live/Rewind content?</p>
<p>Also, you mentioned that Live video is streamed via WMS HTTP streaming protocol. And you also mentioned &#8220;If you’re using the WMP plugin, you always get the WMS stream, regardless of content type.&#8221; </p>
<p>How is this different for Silverlight? When the content is not live, does it delivered via Progressive Download? if it does, why is this the case?</p>
<p>I appreciate your answer,<br />
thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on H.264 and AAC support coming in Silverlight v.Next by Alex Zambelli</title>
		<link>http://alexzambelli.com/blog/2008/09/09/h264-and-aac-support-coming-in-silverlight-vnext/#comment-1291</link>
		<dc:creator>Alex Zambelli</dc:creator>
		<pubDate>Wed, 15 Oct 2008 15:31:11 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/09/09/h264-and-aac-support-coming-in-silverlight-vnext/#comment-1291</guid>
		<description>Hi Mano,

No, it won't support DXVA because DXVA is a Windows-only API and Silverlight must offer equivalent functionality on both Windows and Mac.</description>
		<content:encoded><![CDATA[<p>Hi Mano,</p>
<p>No, it won&#8217;t support DXVA because DXVA is a Windows-only API and Silverlight must offer equivalent functionality on both Windows and Mac.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on H.264 and AAC support coming in Silverlight v.Next by Mano</title>
		<link>http://alexzambelli.com/blog/2008/09/09/h264-and-aac-support-coming-in-silverlight-vnext/#comment-1290</link>
		<dc:creator>Mano</dc:creator>
		<pubDate>Wed, 15 Oct 2008 10:46:36 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/09/09/h264-and-aac-support-coming-in-silverlight-vnext/#comment-1290</guid>
		<description>Hi Alex,

Is this going to be DXVA hardware accelerated ?

Thanks,
Mano</description>
		<content:encoded><![CDATA[<p>Hi Alex,</p>
<p>Is this going to be DXVA hardware accelerated ?</p>
<p>Thanks,<br />
Mano</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Moonlight 2.0 - Help wanted by herve</title>
		<link>http://alexzambelli.com/blog/2008/08/16/moonlight-20-help-wanted/#comment-456</link>
		<dc:creator>herve</dc:creator>
		<pubDate>Mon, 29 Sep 2008 08:21:36 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/16/moonlight-20-help-wanted/#comment-456</guid>
		<description>thx for this information alex!</description>
		<content:encoded><![CDATA[<p>thx for this information alex!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Moonlight 2.0 - Help wanted by Alex Zambelli</title>
		<link>http://alexzambelli.com/blog/2008/08/16/moonlight-20-help-wanted/#comment-225</link>
		<dc:creator>Alex Zambelli</dc:creator>
		<pubDate>Thu, 25 Sep 2008 22:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://alexzambelli.com/blog/2008/08/16/moonlight-20-help-wanted/#comment-225</guid>
		<description>Probably because of too many complex intellectual property concerns. Microsoft doesn't really do GPL open source projects so this would be a serious precedent. Also keep in mind that Moonlight is based on Mono (the open source equivalent of .NET Framework) which Microsoft hasn't officially blessed yet.

I'm not saying it can't be done, but it's certainly not a trivial matter of just churning out yet another release.</description>
		<content:encoded><![CDATA[<p>Probably because of too many complex intellectual property concerns. Microsoft doesn&#8217;t really do GPL open source projects so this would be a serious precedent. Also keep in mind that Moonlight is based on Mono (the open source equivalent of .NET Framework) which Microsoft hasn&#8217;t officially blessed yet.</p>
<p>I&#8217;m not saying it can&#8217;t be done, but it&#8217;s certainly not a trivial matter of just churning out yet another release.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
