[FFmpeg-devel] Scalable Video Encoding and FGS

Erik van Zijst ffmpeg
Fri Oct 12 00:30:18 CEST 2007


Michael Niedermayer wrote:
>> I think streaming video could also benefit from this
>> platform/protocol when you apply some form of scalable encoding:
>> have a small base-layer and multiple enhancement layers. I've
>> looked at MPEG2 FGS which comes closest to my needs, but this has
>> not been implemented in any serious codec AFAIK.
> 
> no, and i think almost everyone is very glad that it hasnt, same for
> the equivalent mpeg4 scalability stuff
> 
> have you considered using several streams where each is optimized for
> a specific bitrate and then just switch between them depending on
> network state or even encode a stream in realtime depending on the
> available bitrate?

You're referring to "simulcasting" which I believe is done by
RealNetworks and Windows Media Server.

Simulcasting works great in point-to-point distribution, letting the
server switch between streams in response to the size of a send buffer,
but it's not very suitable in large-scale multicast environments where a
server publishes the stream just once and there's no flow-control.
"Self-adapting" (layered) streams with incremental quality enhancements
are more elegant there IMHO.

> also you should keep in mind that all the scalability stuff will be 
> worse quality per bitrate than streams optimized for a single bitrate

No such thing as a free lunch, I fully realize that, but the increased
resilience to congestion ought to be worth something :)

> also maybe b frames provide already enough scalability for your needs
> and they are fully supported on all decoders

True, but we feel that gently lowering the spatial resolution or
signal-to-noise ratio tends to give a smoother user experience than
cutting down on the framerate.

We've built a proof-of-concept encoder that scatters DCT coefficients
over layers (we didn't do P- or B-frames, so we were cheating a bit) and
that really works well. As little as 20% of the required bandwidth still
gives a smooth 25fps playback. Much more blurry, but no artifacts.
If the input is high quality (we use DVD), then a significant decrease
in signal-to-noise can still be quite acceptable.

> PS2: iam of course not against adding FGS/... support to ffmpeg if 
> someone submits a VERY clean patch which also can be disabled at 
> compile time

Happy to contribute patches if we manage to make it work, but I doubt
they'll be able to match the efficiency and cleanness of the ffmpeg
codebase..

Maybe the overall skepticism towards complex scalable encoding is
justified, but at the moment I think they're able to offer an elegant
solution to live streaming bandwidth fluctuations, so I do want to give
it a try.

cheers,
Erik
-- 
You have acquired a scroll entitled 'irk gleknow mizk'(n).--More--

This is an IBM Manual scroll.--More--

You are permanently confused.
		-- Dave Decot




More information about the ffmpeg-devel mailing list