Networking/Archive/DASH/Implementation: Difference between revisions

From MozillaWiki
< Networking‎ | Archive‎ | DASH
Jump to navigation Jump to search
No edit summary
mNo edit summary
Line 5: Line 5:
== Current Design and Behavior of non-adaptive streams ==
== Current Design and Behavior of non-adaptive streams ==
With current native video, Necko buffers the data until it is safe to start playing.  nsMediaChannelStream downloads data via HTTP and puts that data in an nsMediaCache.  nsMediaCache intrun makes this data available to decoder threads via read() and seek() APIs.  The decoders then read the dtaa and enqueue it in A/V queues.
With current native video, Necko buffers the data until it is safe to start playing.  nsMediaChannelStream downloads data via HTTP and puts that data in an nsMediaCache.  nsMediaCache intrun makes this data available to decoder threads via read() and seek() APIs.  The decoders then read the dtaa and enqueue it in A/V queues.
'''Diagram needed'''
'''Diagram needed'''


Line 10: Line 11:
Two initial ideas were suggested by Rob O'Callahan:
Two initial ideas were suggested by Rob O'Callahan:
# One nsMediaDASHStream class is created which manages the monitoring of local capabilities/load and adapts download by switching streams as necessary.  Then one nsMediaCache provides data to a single nsWebMDecoder.
# One nsMediaDASHStream class is created which manages the monitoring of local capabilities/load and adapts download by switching streams as necessary.  Then one nsMediaCache provides data to a single nsWebMDecoder.
'''Diagram needed'''
'''Diagram needed'''
'''Description needed'''
'''Description needed'''


# One nsMediaDASHStream as before, but with multiple nsWebMDecoders, one for each encoded stream available on the server.  Only one nsWebMDecoder would be used at a time.
# One nsMediaDASHStream as before, but with multiple nsWebMDecoders, one for each encoded stream available on the server.  Only one nsWebMDecoder would be used at a time.
'''Diagram needed'''
'''Diagram needed'''
'''Description needed'''
'''Description needed'''


== MPD ==  
== MPD ==  
'''Diagram needed'''
'''Diagram needed'''
'''Description needed'''
'''Description needed'''
=== MPD Classes and Objects ===
=== MPD Classes and Objects ===
'''Diagram needed'''
'''Diagram needed'''
'''Description needed'''
'''Description needed'''
=== MPD Parsing and Behavior ===
=== MPD Parsing and Behavior ===
'''Diagram needed'''
'''Diagram needed'''
'''Description needed'''
'''Description needed'''


Line 32: Line 42:
== Media Segments ==
== Media Segments ==
'''Diagram needed'''
'''Diagram needed'''
'''Description needed'''
'''Description needed'''
=== Media Segment Classes and Objects ===
=== Media Segment Classes and Objects ===
'''Diagram needed'''
'''Diagram needed'''
'''Description needed'''
'''Description needed'''



Revision as of 02:32, 10 January 2012

Work in progress

This design page for DASH implementation in Gecko is focused on the Networking/Necko code to be implemented.

Current Design and Behavior of non-adaptive streams

With current native video, Necko buffers the data until it is safe to start playing. nsMediaChannelStream downloads data via HTTP and puts that data in an nsMediaCache. nsMediaCache intrun makes this data available to decoder threads via read() and seek() APIs. The decoders then read the dtaa and enqueue it in A/V queues.

Diagram needed

High Level Approaches - Segment Request and Delivery to MediaStream/MediaCoder

Two initial ideas were suggested by Rob O'Callahan:

  1. One nsMediaDASHStream class is created which manages the monitoring of local capabilities/load and adapts download by switching streams as necessary. Then one nsMediaCache provides data to a single nsWebMDecoder.

Diagram needed

Description needed

  1. One nsMediaDASHStream as before, but with multiple nsWebMDecoders, one for each encoded stream available on the server. Only one nsWebMDecoder would be used at a time.

Diagram needed

Description needed

MPD

Diagram needed

Description needed

MPD Classes and Objects

Diagram needed

Description needed

MPD Parsing and Behavior

Diagram needed

Description needed

Capability/Load Monitoring

How will this be provided?

Media Segments

Diagram needed

Description needed

Media Segment Classes and Objects

Diagram needed

Description needed

Related Pages