W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2011

Re: [XHR] support for streaming data

From: Charles Pritchard <chuck@jumis.com>
Date: Wed, 10 Aug 2011 14:19:46 -0700
Message-ID: <4E42F5F2.2040202@jumis.com>
To: Cyril Concolato <cyril.concolato@telecom-paristech.fr>
CC: public-webapps@w3.org
On 8/9/2011 1:00 AM, Cyril Concolato wrote:
> Hi Charles,
>
>> I believe that GPAC seeks through large SVG files via offsets and 
>> small buffers, from what I understood at SVG F2F.
>> http://gpac.wp.institut-telecom.fr/
>> The technique is similar to what PDF has in it's spec.
> I don't know what you're referring to.

PDF 7.5.8.3 Cross-Reference Stream Data
PDF supports byte offsets, links and SMIL.

I suppose I was referring more to the MP4Box work than GPAC, though they 
do work in harmony.

MP4 has chunk offsets,  and GPAC includes SVG <discard> support.
I believe that MP4Box stores, and GPAC reads fragments of a large SVG file
throughout the MP4 stream, in a limited manner, similar to how a PDF 
processes streams.

They both allow someone to seek and render portions of a large file,
without loading it all into memory.

 From the article:

"We have applied the proposed method to fragment SVG content into SVG 
streams on
long-running animated vector graphics cartoons, resulting from
the transcoding of Flash content... NHML descriptions were  generated
automatically by the cartoon or subtitle transcoders."

"... the smallest amount of memory [consumed] is the 'Streaming and 
Progressive Rendering'. The
memory consumption peak is reduced by 64%"

>> SVG does not have byte offset hints, but GPAC expects
>> data to be processed by an authoring tool and otherwise works with 
>> transcoding, much as VLC (VideoLan) does.
> The details of how we can do it is here:
> http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=7129
> Basically, for long running SVG animations (e.g. automatic translation 
> from Flash to SVG), it is interesting to load only some SVG parts when 
> they are needed and to discard them (using the SVG Tiny 1.2 <discard> 
> element), when they are no longer needed. For that, we use an 
> auxiliary file that indicates how to fragment the SVG file into a 
> stream, giving timestamps to each SVG file fragment. That auxiliary 
> file is then used to store the SVG fragments as regular access units 
> in MP4 files, we use MP4Box for that. The manipulation of those 
> fragments for storage and playback is then similar to what you would 
> do for audio/video streams. We don't do transcoding for SVG fragments 
> but for instance individual gzip encoding is possible.
>
> I think an interesting use case for XHR would be to be able to request 
> data with some synchronization, i.e. with a clock reference and 
> timestamp for each response data.
Some part of that could be handled via custom HTTP headers; though it's 
certainly a bit of extra-work,
much as implementing "seek" over http can be work.

I'll keep thinking about the case you brought up. I do believe 
timestamps are currently
available on events, relating to when the event was raised.

What do you mean by a clock reference?

-Charles
Received on Wednesday, 10 August 2011 21:20:30 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:47 GMT