On Saturday 16 November 2002 15:04, Ian wrote:

I don't think you need to change the SplitFile format. You won't 
save much space by messing with it.  The amount of stuff that is the same for 
each block -- i.e.  2 lines of FEC params -- is trivial in comparison with 
the amount of stuff that is different for each block -- i.e. the CHK's of the 
the data and check blocks. 

Why not just make a new Metadata type:

Stream.BlockSize=1000000
Stream.BlockTimeMs=ea600
Stream.StartTime=??? (too lazy to calculate example)
Stream.BlockDBR=SSK at xdDLu9KYaJGEL9543hOrarcoFM8PAgM/PussyGalore//catcam

e.g.
A stream with 16MB blocks updated once every 16 minutes.
The client should read the data off off the DBR, which probably is a FEC 
SplitFile, but doesn't even need to be spec'd.  

The BlockTimeMs field is actually redundant.  We could force the client to 
read it out of the DBR.

You could also add your string description field too if there was a good 
reason not to using the existing Info metadata type.

Offtopic:
I think the focus on streaming is somewhat misguided.  People who talk about 
QOS guarantees over freenet are either liars or fools.  

Continually reinserting the same content but with enough salt so that its 
CHKs don't collide is silly.  Such an approach downplays Freenet's 
fundamental strength in distributed caching while making its  weakness in 
lack of QOS guarantee painfully apparent.

A much better approach would be to come up with a convention for publishing
information about the multimedia files to concatenate that the client app 
can use to render a continuous stream.

http://www.w3.org/AudioVideo/

> > Here is the current SplitFile metadata format:
>
> SplitFile?.Size=<hex file size>
> SplitFile?.BlockCount=<hex no. of data blocks>
> [SplitFile.CheckBlockCount=<hex. no of check blocks>]
>    SplitFile?.Block.<n>=<URI>
> [SplitFile.Graph.<x>=a,b,c...]
>
> How about another set of possible SplitFile settings, which would be
> mutually exclusive with the above, that would allow streaming of things
> such as mp3s and oggs:
>
> SplitFile.Continuous=yes
> SplitFile.Prefix=<URI fragment>
> SplitFile.StartTime=<hex. insertion time of first block in seconds since
>                      epoch>
> SplitFile.BlockTime=<hex. milli-seconds between blocks>
> [SplitFile.StreamInfo.<n>=<string>]
>
> Explanation:
>
> Continuous=yes indicates that this is a continuous stream, rather than a
> finite splitfile.
>
> Prefix is a KSK or SSK URI fragment such as
> "freenet:SSK@<pubkey>/stream1/" to which hex numbers will be appended
> for retrieval of each block.
People pay attention to you.  Don't advocate dumb this like using KSK keys.

>
> StartTime is the time in seconds since the epoch after the first block
> was added.
>
> BlockTime is the time interval between insertion of successive blocks.
>
> StreamInfo are arbitrary strings which can contain additional data about
> the stream (such as format etc).
>
> ---
>
> This may not be perfect, but it is a starting point.  Someone who
> understands FEC can figure out how to add FEC functionality.
>
> Ian.

----------------------------------------
Content-Type: application/pgp-signature; charset="us-ascii"; 
name="Attachment: 1"
Content-Transfer-Encoding: 7bit
Content-Description: 
----------------------------------------

_______________________________________________
devl mailing list
devl at freenetproject.org
http://hawk.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to