08:10:02 RRSAgent has joined #mediafrag 08:10:02 logging to http://www.w3.org/2010/03/09-mediafrag-irc 08:10:04 RRSAgent, make logs public 08:10:04 Zakim has joined #mediafrag 08:10:06 Zakim, this will be IA_MFWG 08:10:06 ok, trackbot; I see IA_MFWG(F2F)2:00AM scheduled to start 70 minutes ago 08:10:07 Meeting: Media Fragments Working Group Teleconference 08:10:07 Date: 09 March 2010 08:10:26 Agenda: http://www.w3.org/2008/WebVideo/Fragments/wiki/FifthF2FAgenda 08:11:08 mhausenblas has joined #mediafrag 08:11:13 Present: Davy, Erik, Jack, Yves, Franck (observer), Raphael, Silvia (remote), Conrad (remote), Philip (remote), Michael (remote) 08:11:19 Chair: Erik, Raphael 08:12:26 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html raphael 08:14:43 scribenick: raphael 08:14:48 Scribe: Raphael 08:15:54 Topic: 1. First day summary 08:17:49 Raphael: I would suggest to start today's agenda with 2 short discussion: 08:18:14 ... a) What should be the delimiter in the URI for specifying multiple tracks: comma or semi-colon 08:19:15 was it understood and found acceptable that whatever separator we use can then not be part of the track name, even if it's percent-encoded? 08:19:42 ... b) Whether we should revisit the delimiter in the URI for specifying the time dimension and use the dash instead of the comma 08:21:02 Philip, no, the separator could be used in a track (or id) name if it is percent-encoded 08:21:11 Why would you you prevent to use it? 08:21:50 Because percent-decoding happens before matching against each syntax 08:23:28 jackjansen has joined #mediafrag 08:23:33 I sent a rather long mail about layering just now, somewhat related. 08:25:32 FD has joined #mediafrag 08:25:32 Philip, the room agrees with what you just said ... there are 2 solutions 08:25:37 a) We quote :-) 08:25:49 erik has joined #mediafrag 08:26:02 b) We forbid multiple tracks selection for the 1.0 version, so there is no delim and no problem 08:26:05 basically, the only bulletproof solution is: don't use names :) 08:26:09 zakim, minutes? 08:26:09 I don't understand your question, jackjansen. 08:26:17 trackbot, minutes? 08:26:17 Sorry, jackjansen, I don't understand 'trackbot, minutes?'. Please refer to http://www.w3.org/2005/06/tracker/irc for help 08:26:24 why was track=a&track=b not ok? 08:26:24 pointer 08:26:51 Philip, we will discuss this on the phone in 5 minutes, could you join? 08:27:27 wait a sec 08:27:34 Philip, track=a&track=b is not valid since any fragment with multiple occurrence of 't' or 'xywh' or 'track' or 'id' will be invalid 08:27:55 phone number? 08:28:00 zakim, code? 08:28:00 the conference code is 3724 (tel:+1.617.761.6200 tel:+33.4.89.06.34.99 tel:+44.117.370.6152), raphael 08:28:09 Philip, hold on, phone in 5 minutes 08:28:15 ok 08:28:23 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html raphael 08:28:32 raphael: we can just make multiple occurences of track valid, can't we? 08:28:36 IA_MFWG(F2F)2:00AM has now started 08:28:42 +WG_room 08:30:31 +mhausenblas 08:31:39 Philip, that would break for libraries that decode only the first of each name=value pairs 08:31:52 erik has joined #mediafrag 08:32:27 -WG_room 08:33:20 + +329331aaaa 08:33:22 jackjansen: yes, but so would t=1&t=2, which processing needs to handle (but it shouldn't be valid) 08:34:11 zakim, aaaa is WG-Room 08:34:11 +WG-Room; got it 08:34:29 Philip, t=1&t=2 is indeed invalid per our syntax 08:34:53 raphael: invalid, but the result of processing it the same as if t=2 was used 08:34:56 the problem is that if you have multiple occurences of key=value with the same key, is that some libraries just take the last one 08:35:37 yes, which is why there is a note in the spec warning about the issue 08:35:51 should I call in now? 08:35:52 what if somebody else decide that t=1&t=2 means something else? Like generate two streams, starting at different times? 08:35:59 somebody else, meaning out of our spec 08:36:35 we shouldn't define an uber-error-recovery mechanism that forbid all reuse and enhancements 08:36:36 Yves: they would simply be violating our spec 08:36:43 so this is not the same: in case of #t=10&t=20 ... invalid fragment, the complete resource is sent back 08:37:13 foolip, yes, so if you implement only mediafrag, you'll get all the data, if you implement their spec, you'll do the "right thing" 08:38:59 having country code troubles 08:39:23 zakim, code? 08:39:23 the conference code is 3724 (tel:+1.617.761.6200 tel:+33.4.89.06.34.99 tel:+44.117.370.6152), silvia 08:40:08 +silvia 08:41:42 I thought we had already discussed this enough times 08:42:20 Philip, what did we already discuss enough? 08:42:56 zakim, mute me 08:42:56 silvia should now be muted 08:45:35 nope, dialing in gets me a busy tone or nothing at all 08:45:37 Philip, on the phone Silvia argues, based on section 2.2 of the URI draft, that all reserved characters are treated equally 08:46:02 what jack just explained was how I understood it 08:46:05 ... so #track=audio,video will work 08:46:17 we have the reserved characters exactly for the purpose of making sub-delimiters 08:46:30 raphael: tried +1 and +44 08:46:42 the percent-encoding should not happen on the complete content value, but only on the segmented values (after separating on sub-delimiters) 08:46:53 zakim, unmute me 08:46:53 silvia should no longer be muted 08:47:38 raphael: just tried it, no luck 08:48:08 Philip, Silvia just contradicts your previous statement, re: we will not be able to have a comma in a track name 08:48:32 we just need to make the parsing & %encoding different 08:49:04 we can make it work, but then we will also have to change how name-value processing works and make percent decoding happen later 08:49:15 Yes Philip 08:49:40 another incompatability with existing languages, just to be clear 08:50:46 if the argument against track=a&track=b is that it breaks existing tools, using a new separator does the same 08:51:10 are there other problems with track=a&track=b? 08:52:30 Philip, the WG_Room + Silvia thinks that using one of the subdelim as defined in URI spec is the right thing to do ... subdelim are made for that 08:53:08 ... so not breaking existing tools 08:53:37 raphael: sure, but is it worth introducing more incompatibilities? 08:54:08 name-value lists already provides a way to repeat the same name 08:55:18 Jack: as soon as there is a UTF-8 character, you will need to decode the string and re-encode the string according to RFC2047 08:56:13 ... so we don't need to have a correlation between what is in the URI and what ends-up in the HTPP headers 08:56:35 Silvia: yes, but in most of the case, there will be ASCII characters so we could ease implementers work 08:56:43 Jack: this is an invit for lazing coding 08:56:56 ... I agree with you with the practical case, but we are editing a spec 08:57:12 ... we should try to follow patterns set by other RFC spec 08:57:50 -mhausenblas 08:57:57 hu? 08:58:04 I dropped ... 08:58:25 Silvia: i would not object on that ... you have a point 08:58:27 +mhausenblas 08:59:09 zakim, mute me 08:59:09 silvia should now be muted 09:00:26 Raphael: should we stand with yesterday's resolution, i.e. keep the semi-colon as separator? 09:00:38 zakim, unmute me 09:00:38 silvia should no longer be muted 09:00:51 Jack: I have checked 2 cgi libraries and indeed, Philip is right, that makes in practice the use of ';' forbidden in track names 09:00:55 I disagree with using a separator 09:01:50 Yves is ok with multiple &track= 09:02:41 +[IPcaller] 09:03:07 zakim, +[IPcaller] is Philip 09:03:07 sorry, raphael, I do not recognize a party named '+[IPcaller]' 09:03:12 zakim, +[IPcaller] is foolip 09:03:12 sorry, raphael, I do not recognize a party named '+[IPcaller]' 09:03:20 zakim, IPcaller is foolip 09:03:20 +foolip; got it 09:03:35 zakim, mute me 09:03:35 silvia should now be muted 09:06:38 let's continue, enough time wasted on phones today :) 09:06:54 Proposal: a new resolution that contradicts yesterday's resolution. Multiple tracks selection will be possible using multiple occurrence of the keyword 'track' (e.g.: #track=audio&track=video) 09:07:07 +1 09:07:10 +1 09:07:11 +1 09:07:13 +42 09:07:19 +1 09:07:21 +1 09:07:27 s/42/1/ 09:07:29 :-) 09:07:34 +1 09:07:42 +1 09:07:54 RESOLUTION: a new resolution that contradicts yesterday's resolution. Multiple tracks selection will be possible using multiple occurrence of the keyword 'track' (e.g.: #track=audio&track=video) 09:08:02 perl..... brrr...... 09:08:47 is the delimiter controversial? 09:09:04 hihi 09:10:07 Raphael: we need to apply many changes in the whole document 09:11:41 Philip: I have also edited the spec 09:11:46 Raphael: please check in 09:11:54 breaking up too much right now 09:12:10 silvia: which bridge did you use? 09:12:24 no, there's no CVS web interface that I know of 09:12:36 ACTION: Yves to change the formal syntax to reflect that we don't need a subdelim for selecting multiple tracks but we allow multiple track= in the URI 09:12:36 Created ACTION-152 - Change the formal syntax to reflect that we don't need a subdelim for selecting multiple tracks but we allow multiple track= in the URI [on Yves Lafon - due 2010-03-16]. 09:13:02 ACTION: Raphael to review the complete document and check whether there are mroe references to uniqueness 09:13:02 Sorry, couldn't find user - Raphael 09:13:08 ACTION: troncy to review the complete document and check whether there are mroe references to uniqueness 09:13:08 Created ACTION-153 - Review the complete document and check whether there are mroe references to uniqueness [on Raphaël Troncy - due 2010-03-16]. 09:13:18 s/mroe/more 09:13:29 Yves: I will commit now, as it conflicts with the action you just got 09:14:34 Short dicussion: re-visiting the use of comma in definition of temporal definition in URI 09:14:42 ... Conrad proposed to use a dash 09:14:47 ... Rejected by all the group 09:15:05 ... it just introduces more problem, uri syntax is not correlated to header syntax anyway 09:15:12 why is the delimiter important? 09:15:19 Conrad, object formally if you're not satisfied with this answer 09:15:49 Topic: 2. HTTP headers discussion 09:17:24 Back to the other objection from Conrad, sent yesterday 09:17:35 ... the use of the Range headers when there is another unit than bytes 09:17:51 ... we miss so far in our discussion the fact that there is synthetic headers 09:18:00 rrsagent, draft minutes 09:18:00 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html erik 09:18:18 ... see also: http://lists.w3.org/Archives/Public/public-media-fragment/2010Mar/0084.html 09:18:56 Silvia, Philip: look at http://www.w3.org/2008/WebVideo/Fragments/wiki/MediaFragmentHeaders 09:19:14 zakim, unmute me 09:19:14 silvia should no longer be muted 09:19:42 raphael, I'm ok with not using a dash for start-end specification 09:20:55 Conrad, in the URL? 09:21:17 Conrad, are you ok with using a comma in the URL?, i.e. #t=10,20 09:22:58 committed some stuff, should make some of you cringe in pain ;) 09:23:59 raphael: except CVS is so terrible, when will we switch to git? 09:25:15 Silvia: is the Content-Range in other units purely descriptive? ... I would think so 09:25:34 http://lists.w3.org/Archives/Public/public-media-fragment/2010Mar/0084.html 09:25:59 HTTP/1.1 206 blah 09:25:59 Content-Range: t:npt=10-20/60 09:25:59 Content-Range-Equivalent: bytes=16384-32768/65536 09:26:04 instead return: 09:26:20 HTTP/1.1 206 blah 09:26:20 Content-Range-Equivalent: t:npt=10-20/60 09:26:20 Content-Range: bytes=16384-32768/65536 09:26:57 Silvia: we are not sending 16 kB but 20 kB since they are also the synthetic headers 09:27:04 ... so your change is just wrong 09:27:50 raphael, yes i am ok with using a comma in the url 09:28:00 Jack: we want to stop old-fashioned try to cache fragments 09:28:11 Silvia: NO NO NO, we don't send synthetic headers 09:28:24 ... this is what we have discussed the last 1/2 year 09:28:34 ... we return in the fragment only the bytes of the original resources 09:29:19 i don't recall that we agreed not to send synthetic headers, obviously we need to supply both the headers required for decode ("synthetic") and the media data 09:29:19 Jack: for queries, we must have synthetic headers, it is OK, this is a new resource 09:29:38 if we use some form of referral to byte ranges for the media data, fine, but that is optional 09:29:56 that is a different issue to the overloading of Range though 09:30:09 Silvia: indeed, we haven't taken yet a formal resolution 09:30:17 Raphael: perhaps it is now time for :-) 09:30:53 ... so let's discuss whether there will be synthetic headers exchange in the case of fragments 09:31:19 i suggest that the response to a fragment url is a valid media file 09:31:24 s/file/stream 09:32:03 whether that does or doesn't require generating new headers, tailer data, intermediate data, referral files (.m3u, adaptive streaming etc.) or whatever is media-dependent 09:32:07 Conrad, does it mean to send synthetic headers? 09:32:32 raphael, for some media types like a raw ogg stream, sure; but that is not something to be specified by mfwg 09:33:07 here we can propose a mechanism for optimising that transfer, like an optional way of saying that some part of the representation can equivalently be gotten by a byte range retrieval 09:33:20 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html raphael 09:34:08 silvia, you become unintelligeble 09:34:39 breaking up... 09:34:40 jack was talking about phone quality ;) 09:34:50 in short, Silvia is 100% right 09:35:26 -silvia 09:35:37 conrad: no, the response to a fragment is a byte range - no media file headers 09:35:41 Michael: I can't hear you guys anymore 09:35:46 only the response to a query needs to headers 09:36:01 Raphael: indeed, there is a contradiction between Silvia and Conrad's view 09:36:02 so where do you get the headers (required for decode) from? 09:36:09 -mhausenblas 09:36:17 Conrad, with another request 09:36:17 e.g. a Web browser has already set itself up for decoding a media file when it is asking for a later byte range 09:36:59 hm ... I can't get in. damn ... trying other line 09:37:00 in that case there is no new http header transaction to be specified anyway 09:37:08 it is just a client-side seek 09:37:31 -foolip 09:38:14 oh - just got a mail from admins. seems like they have to reboot out (VoIP-based) phone system ... will try again as soon as the system is up again 09:38:16 will try calling into another bridge when summoned the next time 09:39:17 thanks raphael but I really really want to dail back in ASAP 09:39:36 conrad: no, the idea of 5.2.2 is to make an improvement over 5.2.1: e.g. instead of having to do bisection search with Ogg over network, you get to simply ask the server for the right byte ranges by asking for the time range or track .. 09:40:37 all URI fragment requests have to be handled the same way - none will require re-retrieving artificial file headers 09:40:38 I agree with Silvia that it's unlikely any browser will implement these headers 09:40:44 if you have an index, there's just no need. 09:41:18 for old Ogg files without an index, it still makes sense 09:41:58 we will not ever have all Ogg files with index and thus this is a way to improve on the bisection search problem 09:41:58 yes, but that's probably not reason enough to spend resources on it, we'd just tell people to use footool to add an index 09:42:23 I of course only make guesses on behalf of Opera 09:42:42 silvia, sure, in the case of no server interaction that makes perfect sense 09:43:02 well, it was the original motiviation for section 5.2.2 - but it may not be relevant much longer (unless the video element starts supporting other such file formats) 09:43:26 bah! but there *is* server interaction! 09:43:51 Raphael: Silvia, Conrad and Philip, we are discussing in the room whether a fragment request should retrieve a playable resource (with synthetic headers) or just bytes from the original resource, or a multi-part reply 09:44:11 anyway - the situation for query is a different one and we can still use all of the above arguments to sort out the query case, which will indeed need to return a full media resource 09:44:44 raphael: the original resource, without a shadow of a doubt. 09:44:47 Yes, Silvia, we don't talk about query, since it is easy and we don't need to specify headers anyway ... it already works 09:45:40 Jack: synthetic headers gives us problem 09:46:01 if we introduce header retrieval into media fragments now, we have to also change the way in which 5.2.1 works - and that doesn't make sense, because that's how browser vendors right now work 09:46:02 ... I'm also more and more convinced that we should not sent them on the wire in the fragment case 09:46:17 not dealing with synthetic headers solves sooo many problems 09:46:45 if we introduce synthetic headers, we get a new media resource with a different start and end time - which will result in a different presentation 09:46:55 that should really be reserved for query only 09:47:04 indeed 09:47:49 it's the fundamental difference between fragments and queries: fragments === byte range requests, query === new resource 09:47:54 in that case we _never_ need anything else than byte ranges 09:48:07 silvia, the 5.2.1 case is different, it uses byte-ranges 09:48:14 and we always need 2 requests at minimum 09:48:17 other than in the case where the UA cannot resolve a time range to a byte range 09:48:21 but that doesn't invalidate the other points 09:48:45 no, Yves, the UA can send a request to the server for a time range and the server can reply with the appropriate byte range 09:48:50 that is what 5.2.2 expresses 09:49:09 no because it's not playable, so you need extra information beforehand 09:49:11 (or after) 09:49:15 5.2.2 and 5.2.3 also use byte ranges 09:49:29 silvia, so you expect 2 exchanges (for 522): one in bytes to get the header, then one in npt to get the video data. Correct? 09:49:31 but if you got the data before, you might be able to do the mapping yourself and ask for bytes directly 09:49:38 Yves, yes, it is playable: it assumes the UA already has all the information to do something useful with the byte range 09:49:47 just as is the case with any other retrieval action that uses byte ranges 09:50:05 jack: I am assuming the headers have already been received earlier 09:50:05 it's playable if you have a-priori information about the data. 09:50:16 it not, then yes, you need to get the headers first 09:50:23 either you are mandating a specific container that have this characteristic, or you don't need this 09:50:27 only for OGG, actually - MPEG doesn't need that 09:50:51 Yves, with Ogg as it currently is, you cannot do the mapping yourself 09:50:55 sure it does, MPEG doesn't repeat the headers over and over does it? 09:51:05 at least not all versions 09:51:20 fix the container! 09:51:30 :-) 09:51:31 in any event: before spending lots of time trying to optimize away one network roundtrip, perhaps we should see if any implementor actually wants to solve this problem. 09:51:32 foolip: MPEG actually does repeat the headers over and over :) 09:51:35 Silvia, all newer formats have a header. So question is, do we do this work only for legacy formats? 09:51:49 (header: I mean one that includes enough info to seek) 09:52:03 Yves: we have fixed it and there is now a possibilty to put an Index into Ogg, which is why foolip said above that 5.2.2 will not be used very often 09:52:04 silvia: even MPEG-4? always? 09:52:16 5.2.2 is only a minimal improvement over 5.2.1 09:53:04 well, we've already done the work and it is a solution for any media format that has that problem, so I'd say we can safely leave it in the spec 09:53:33 OK 09:53:38 foolip: IIUC yes, MPEG-4 has a way to do that, but you'd better ask Eric 09:53:53 I'm trying to summarize where do we stand 09:54:13 I don't have a strong opinion, but would avoid spending time on it. 09:54:32 1. we need a decision that URI fragments always just retrieve a byte range and assume that the UA already knows how to decode that byte range 09:55:25 5.2.1: The UA is very clever, can do the mapping between seconds and bytes, send a Range request in bytes, almost no implementation is needed! 09:55:38 2. we need a decision if we want to remove 5.2.2 and 5.2.3 from the spec or leave it there for legacy formats 09:57:11 5.2.2: tiny optimiziation, the UA connot do the mapping, but there are still 2 requests, the first one, the UA got all the headers, the second one, the bytes of the data, the UA can play the file because of the first request with the headers, the Range request is expressed in seconds for example 09:57:47 except that getting the headers will only happen once and for all subsequence fragment requests it will only be one request 10:03:14 5.2.3: has actuallly 3 exchanges, the first is the same than for 5.2.2 where the UA has requested the headers to be able to play the resource later on 10:03:48 OK, so go back to 2 points from Silvia 10:03:49 5.2.3 does what 5.2.2 does, but in a proxy-cachable manner 10:04:40 my interpretation is that byte ranges should be good enough for anyone provided the container is ok, for clients that will do 2 or more requests to get the data 10:04:44 i.e. the UA asks the server to send it the byte-range mapping and then does 5.2.1 10:04:45 but it has latency issues 10:05:06 the goal of having time ranges is to do everything in one exchange, to reduce latency 10:05:22 5.2.3 Proxy cacheable Server mapped byte ranges 10:05:27 is actually doing 3 exchanges 10:05:30 (but it's fine!) 10:05:39 indeed, and this is why 5.2.1 will realistically be all that UAs do 10:06:02 Jack: Silvia is right, 5.2.2 is just for legacy formats, it has no value overall 10:06:05 but there is optimisation along a different line for those that do 5.2.2: get proxy cachable requsts 10:06:16 ... we can keep it just mentionning that this is for legacy formats 10:06:27 it already says so IIRC 10:06:29 note that even when asked for bytes only, we can send a header to indicate the mapping to time ranges 10:06:34 jut not in these words 10:07:17 Yves, we could, but the UA already knows that, so why would be bother destroying cachability in this way? 10:07:25 silvia, your solution for 5.2.2 is just helping bad container formats 10:07:32 indeed :) 10:08:27 for files that have been recorded live, getting an index is an extra effort 10:08:38 and thus, some files will never have that header 10:08:44 and I think that applies to both Ogg and MPEG 10:08:54 so it's not actually as unrealistic as one might think 10:09:54 Raphael: Silvia, perhaps we should document the VERY first request for 5.2.2 and 5.2.3, the one where the UA got the headers of the media 10:10:11 Silvia, I agree, an action for you ? 10:10:17 I don't give it to you if do it now :-) 10:10:27 can you do a live edits to add this note? 10:10:30 agree on both 10:10:36 happy to make the change 10:10:44 ok, for the note, it is 2 min work 10:10:51 will do both now 10:11:01 for the other, it will require more work ... including changing the figures, you want a formal action? 10:11:19 I don't think we need to add a figure 10:11:28 those two retrieval actions are independent of each other 10:11:54 they may need to occur together, but if the UA already has the header, it will not need to do that first retrieval action 10:12:22 so, I can just add a description of it and refer to 5.2.1 with some byte range from 0 10:12:32 foolip: what byte range do you typically load for Ogg files? 10:13:47 Silvia, Yves objects on one thing (please listen) 10:13:51 silvia: start from the beginning and load until we need to seek to the end, where we get 8500 bytes, then back to wherever data is needed next 10:14:17 Yves considers that 5.2.2 is useless and should be removed ... for legacy formats, 5.2.3 should be used 10:14:28 ... BUT, he sketchs another 5.2.2 10:14:36 silvia: yes 10:14:59 I know, we have an open bug for it :) 10:15:04 ... which is the original intention of the 2-ways handshake, where all data is sent 10:15:29 Jack is drawing on the board, pictures will come soon 10:18:07 zakim, code? 10:18:07 the conference code is 3724 (tel:+1.617.761.6200 tel:+33.4.89.06.34.99 tel:+44.117.370.6152), silvia 10:18:46 +silvia 10:18:55 zakim, mute me 10:18:55 silvia should now be muted 10:19:22 -silvia 10:19:56 rrsagent, draft minutes 10:19:56 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html erik 10:23:07 Silvia, in 5.2.1, there is also this VERY first request to do, where the UA got the headers, so more things to add in the spec 10:23:22 ... do you think you can do that in the next hour? or would you need more time? 10:23:51 I wonder about the result on 5.2.2 10:24:01 I didn't make changes because I was waiting for Yves' proposal 10:24:21 but maybe it's another proposal altogether and needs a 5.2.4 ? 10:24:44 I will start working on 5.2.1 now 10:25:05 5.2.2 as it is is useless, for legacy container 5.2.3 should be used 10:25:10 does the spec need to go into detail about what byte ranges may or may not be needed? it can't be normative anyway 10:25:11 (server side mapping) 10:26:07 Sylvia, indeed, don't change 5.2.2 since Yves and Jack come with a new nice proposal 10:28:11 I've adapted 5.2.1 10:28:18 and committed :) 10:28:28 Silvia, the note for legacy format should go in the section 5.2.3, phrased slightly differently, where we said, legacy formats that cannot do the mappping (give examples, such as the old ogg file) need to use 5.2.3 description 10:29:08 it's actually irrelevant to the spec where the UA gets the information from how to map the fragment to byte ranges - it could come from previously stored information or a previous retrieval action or from guessing - it doesn't matter 10:29:19 so I just made that first paragraph more concrete 10:30:18 raphael: I disagree that 5.2.3 is a requirement for legacy formats 10:30:28 it is a possibility to use this, but not a necessity 10:30:38 ok silvia 10:30:38 and also, you need a collaborating server, which will be hard to get 10:30:51 did you change the figures in 5.2.1 ? we are mainly looking at that :-) 10:31:07 no, as I said: they don't need changing 10:31:16 it doesn't matter where the information for the mapping comes from 10:31:23 it's up to the UA to sort this out 10:31:44 it could come from a index file that it was given by a third party server or anything else 10:31:51 it could even just be guessing 10:32:08 so, there is not necessarily an additional retrieval action 10:33:08 also, 3.2 already describes different means of how the UA could get to that information 10:33:42 Silvia, the WG room thinks that it will be much clearer to add this information, and perhaps mark it specifically as header retrieval 10:34:04 ... the proof being the misunderstanding of some members beforehand 10:34:07 there is no header retrieval for MPEG 10:34:45 some formats just have an index somewhere 10:34:51 Philip: why did you remove the production of Segment? this is the hat on top of query and fragment! 10:34:59 we have to describe the most general case, not just Ogg 10:35:38 silvia, technically correct., but you will do an initial exchange 10:35:49 not necessarily 10:36:11 well you need to know the compression level 10:36:13 Exatly Silvia, that's why we think we should document how the information to be able to play the file has been obtained 10:36:14 Silvai, and more generally I would like to concentrate on modern formats. 10:36:26 I, the UA, may have received the information from a third party of how to map time to byte ranges 10:36:38 it doesn't need to come through an extra interaction with this particular media resource 10:36:42 so technically you request some bytes at the beginning, not file headers, just do have infrmation for doing the mapping 10:36:44 yes, but for clarity, we should write that down somewhere in the spec 10:36:59 and you could write that this info has been obtained from a third-party 10:37:04 Yves: I do that for Ogg, yes 10:37:08 but not for MPEG 10:37:30 I wrote that the UA has somehow obtained this information and I wrote an example 10:37:52 I don't think we need to add a graphic for it since, there are so many cases 10:37:54 Silvia, how do you guess where to do your first seek, for (say) t=10,20? 10:37:58 Silvia, you agree that even in the case of MPEG, you need to know the compressiojn rate 10:38:17 yep, could have been given to me in the HTML markup 10:38:40 hmm, don't see that as a common use (but correct me if I'm wrong) 10:38:55 jackjansen: bisection search, first guess is based on something like total size (bytes) amd total duration (seconds) 10:39:00 there are proposals to put such information into the HTML spec 10:40:38 if we write into the spec that a first retrieval action has to retrieve the resource headers, interpret them, and thus extract the mapping of fragment addressing to byte range, then we are severely restricting how this spec can be used 10:41:06 we are prescribing something that people will need to ignore to actually make it work 10:41:07 hehe, I would simply ignore the spec if it said something like that 10:41:23 see :) 10:41:43 in fact I will ignore *anything* the spec says with regards to what requests to make, when to look in the cache, etc 10:41:46 there is an impact on latency 10:42:21 Yves, nothing that HTML5 doesn't already have 10:42:31 "I know just because it's a youtube URI that we have this format with this compression level" is a client-level hack that shouldn't be part of the discussion :) 10:42:32 there is no extra latency for a media fragment URI 10:42:33 yes, there is a latency problem, but I'd rather solve it with an index than by introducing special headers (which most headers won't understand) 10:42:42 Silvia, we are not saying it *has to* do this. We're saying it is probably going to be the common case. 10:42:55 which is what I described in words 10:43:07 WHich paragraph exactly Silvia? 10:43:08 no need for a graphic that would imply it always has to be done 10:43:16 First one in http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-spec/#processing-protocol-frag ? 10:43:31 5.2.1 10:43:32 As described in section http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-spec/#URIfragment-user-agent, the most optimal case is a user agent that knows how to map media fragments to byte ranges. This is the case typically where a user agent has already downloaded those parts of a media resource that allow it to do or guess the mapping, e.g. headers or a resource, or an index of a resource. 10:44:51 Yves, if the UA already has a copy of the media resource in its local cache from a previous retrieval action days ago, it won't do another request either 10:44:55 OK, we seem to agree Silvia (you win a lot today) 10:45:04 it's hard work! 10:45:09 6 months! 10:45:16 ... but in the existing figure, shows that the UA has already the headers 10:45:23 ... we have a nice drawing on board 10:45:25 Suggestion: we add a little blob to the client timeline saying "header already available or not needed" 10:45:49 it's not a header 10:45:53 s/header/information needed for playback of the fragment 10:45:54 it's a mapping that is available 10:46:07 fragment to byte range mapping already available 10:46:25 we agree that header is bad usage of "enough information to do the mapping" :) 10:46:27 Yes Silvia, this is also what Davy who reads in your mind say 10:46:37 excellent :) 10:46:49 I trust Davy - he has implemented the bugger ;) 10:48:59 Jack, Yves: we change 5.2.2 to have just one round trip, similar to 5.2.1 10:49:07 ... the request is epxressed in seconds for example 10:49:55 ... the server sends back a playable resource, the only question is whether the data parts contains the original headers of the media (that need to be changed by the UA) or new synthetic headers made by the serve 10:50:16 ... this is not cachable by legacy caches 10:50:22 ... it might be by future caches 10:51:33 Philip, you reply to me only? 10:53:07 actually, your description of 5.2.2 is exactly what 5.2.2 is 10:53:15 no headers included 10:53:28 only one roundtrip, just like 5.2.1 10:53:54 why should that fragment request contain a header when 5.2.1 doesn't ? 10:54:22 it needs enough information to play the file 10:54:37 just like 5.2.1, it already has set up the pipeline 10:54:38 so in some cases it can have headers, in some other cases, not 10:55:06 no, in 5.2.2 you MUST NOT need to have the information magically before doing the request 10:55:10 life is so much easier if all fragment requests just map to byte range requests 10:55:20 but it's not needed! 10:55:24 why would 5.2.2 be different to 5.2.1 ? 10:55:27 you have byte ranges for that :) 10:55:42 5.2.2 as it stands has no value at all 10:55:59 I agree with Yves 10:56:03 handling legacy formats is 5.2.3 10:56:19 handling legacy formats using server-based mapping is 5.2.3 10:56:19 no, it's also 5.2.2 10:56:27 5.2.3 is an improvement over 5.2.2 10:56:35 davy: why? 10:56:37 handling legacy content through byte ranges is 5.2.1 10:56:53 we haven't changed 5.2.2 yet 10:57:04 we are discussing it 10:57:14 you want to join on the phone ? 10:57:26 ok ... 10:57:27 but I agree that my vision of 5.2.2 might not be implemented _now_ (or ever :) ) but at least it has a value by reducing the latency and requiring only one exchange 10:57:31 zakim, code? 10:57:31 the conference code is 3724 (tel:+1.617.761.6200 tel:+33.4.89.06.34.99 tel:+44.117.370.6152), silvia 10:58:14 +silvia 11:01:52 http://www.example.com/foo#t=10,20 11:02:02 what do you know beforehand about this thing? 11:02:10 => nothing apart that it may be a media fragment 11:02:23 Raphael: *new* 5.2.2 is different than 5.2.1 since we do not need to have the prior information of mapping the seconds to bytes or the original information to play the media 11:03:02 Silvia: it is another optimization 11:03:50 Yves: no, 5.2.3 has also (like 5.2.1) the same asumption than the UA has the information to play the media 11:04:12 ... so 5.2.3 is the optimization of 5.2.1 11:04:21 ... Range request always expressed in bytes 11:06:44 Jack: again, I see now the value of 5.2.2 11:07:07 ... for example as follow on requests from the same media 11:07:25 ... someone click on the timeline to request another segment, but does not request once more the headers 11:08:20 Raphael: I'm considerink asking Yves to write his new optimization in a section 5.2.4 and see later on if we can keep it or not 11:08:28 I would be happy if we introduced a request type that just gets us the setup information 11:08:46 then that plus the existing 5.2.2 would be what Yves is proposing now 11:09:14 silvia, that will require two roundtrips again. 11:09:56 silvia, I would suggest as 5.2.4 a request that gets us setup information PLUS data 11:10:01 Silvia, what this mean I would be happy if we introduced a request type that just gets us the setup information ? 11:10:17 -silvia 11:10:46 jack is right: if we want to avoid a round trip, we need 5.2.4 11:11:25 incidentally, I am not sure how much browser vendors care about one additional round trip these days ;) 11:12:13 seeking on Ogg without an index typically requires several round trips (I've seen 7 and more) and that was bad, but once it was down to 3-4 it was acceptable 11:12:23 ACTION: Yves to add a section 5.2.4 describing his new optimization 11:12:24 Created ACTION-154 - Add a section 5.2.4 describing his new optimization [on Yves Lafon - due 2010-03-16]. 11:12:51 should I make some changes to 5.2.2 then? 11:12:57 as discussed before? 11:12:58 NO 11:13:05 Raphael: Attempt summary 11:13:41 ... 5.2.2 = request expressed in npt, anwers sent back in bytes + Content-Range equivalent 11:13:50 ... mandatory 11:13:58 ... or not :-) 11:14:24 ... 5.2.3 = server-based bytes mapping, redirect involve, cachable 11:14:39 I think we can adapt the headers once Yves has done his 5.2.4 - we might want to harmonize 11:14:56 no need to adapt, we just reverse the use :) 11:15:17 ... 5.2.4 = unlike the 3 other cases, we DON'T need to obtain first the mapping information (reduce latency), request expressed in npt, content-range expressed in the same unit, and content-range equivalent is in bytes 11:15:18 ok ? 11:15:57 ... 5.2.4 is uncacheable for legacy caches, but might be cacheable with new ones 11:17:29 5.2.2 doesn't have the mapping either 11:17:59 Silvia, 5.2.2 has the mapping, otherwise, how the file is played since this information is not sent 11:18:23 no, there is a difference between having the fragment to byte mapping and having the decoding pipeline set up 11:18:33 if 5.2.2 had the mapping , it would be 5.2.1 11:18:49 Silvia, ok, i'm talking only about decoding pipeline set up 11:19:03 ... I'm not talking about the mapping, different terminology 11:19:40 so, 5.2.4: unlike the other cases, doesn't have the decoding pipeline set up for the file yet and obtains with the request also the necessary background information (headers etc) 11:19:51 Yes silvia 11:20:10 this reduced the retrieval action by one round trip 11:20:14 yes silvia 11:20:23 now, let me consider the headers... 11:20:50 I think we need an extra header that says: send me the setup info, too 11:21:18 how else would the server know whether it has to just return the bytes or also the header bytes? 11:21:33 and … how does the UA know which bytes are header bytes and which are content bytes? 11:21:52 Feeling slightly confused for haviing to channel Silvia as well as myself:-) 11:22:25 like a 'transcode unit' flag 11:22:38 might be optional in range syntax 11:22:42 Raphael: indeed, we need to differenciate at the protocol level that 5.2.2 and 5.2.4 are different, most likely new headers? 11:23:05 ... or different header syntax 11:23:17 Range: t:npt 10-20;convert 11:23:40 even if we ignored 5.2.2 and it use of HTTP header syntax: how would the server package the data in a way that the client knows it's just receiving the header info and some byte range later in the file? 11:23:48 ... perhaps it is part of Yves's action when describing the new 5.2.4 making sure it does not collide with 5.2.2 11:24:48 we also need to remember that we have defined that media fragments provide for a subpart of the main resource and that e.g. a player would display the full timeline 11:24:51 silvia, through the CRE, or a new "here is data" paramter or header or whatever 11:25:05 so, the reply needs to signal to the UA exactly what data belongs to what 11:25:18 ok, I'll wait till you've written it 11:25:38 I just want to make sure we are on the same page in that this is NOT a new, shorter resource 11:25:41 Raphael: the WG thinks we should have a new name that Content-Range-Equivalent 11:25:43 that's what the query is for 11:25:45 the goal is not to send synthetic headed (well, metainformation needed to DTRT), but the orignal one 11:25:54 no, query is identifying new resources 11:26:06 ok, cool 11:26:19 Silvia, in 5.2.4 you will still have the context, the full timeline of the original media 11:26:24 this is where we may still need to discuss with Conrad ;) 11:26:37 I'm cool with it 11:27:54 OK, proposal for new header names? 11:28:10 Proposal: Range-Mapping ? 11:29:06 This new header will be used in 5.2.2 and 5.2.4 11:29:32 ... in 5.2.2, Content-Ranges is expressed in bytes, and Range-Mapping in the unit of the original HTTP request 11:29:47 ... in 5.2.4, this is exactly the other way around 11:30:13 s/other way around/other way round/ 11:30:43 ... that conflicts with Conrad's opinion who thinks we should not have the Range header used with another unit than bytes 11:31:11 Silvia, are we done with that? 11:31:23 ... we think we can have lunck break, demo time, tc reviews now 11:31:25 are we calling it Range-Mapping? 11:31:31 are you against? 11:31:36 silence = approval :-) 11:31:40 I honestly don't care :) 11:31:43 but we didn't vote 11:32:09 Content-Range-Equivalent was also just signifying the mapping :) 11:32:22 Proposal: Call the only new introduced header 'Range-Mapping' 11:32:37 conrad has joined #mediafrag 11:33:01 ok, I will make the change 11:33:12 Proposal: call the only new introduced header: 'Content-Range-Mapping' 11:33:32 rrsagent, draft minutes 11:33:32 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html erik 11:34:31 +1 11:34:35 +1 for Content-Range-Mapping 11:34:40 +1 for Content-Range-Mapping 11:34:53 +1 for 'Content-Range-mapping' 11:35:12 +1 11:35:12 +1 for "Content-Range-mapping" 11:35:24 +0 11:35:50 Jack: I may have opinion on the syntax of this new header 11:36:00 ... I have no opinion on the name 11:37:36 RESOLUTION: (pending no objection from Conrad+Philippe) A new header named 'Content-Range-Mapping' will be introduced, used in sections 5.2.2 and 5.2.4 at least, which purpose is to expressed a mapping of a Content Range between 2 units (e.g. bytes and seconds) 11:39:04 note that 5.2.3 also uses Content-Range-Mapping to signal back to the UA which range the provided byte range maps to 11:39:21 even 5.2.1 may use CRM 11:39:25 as metainformation 11:39:56 Raphael: I agree with both remarks 11:39:58 but it reminds me that we should probably add a Cache-Control: no-store=" least, which purpose" 11:40:16 but it reminds me that we should probably add a Cache-Control: no-store="Content-Range-Mapping" 11:40:38 Yves: if we used CRM in 5.2.1, that would destroy cachability, right? 11:40:54 why? 11:41:08 it's meta-information, nothing more 11:41:09 because of the extra header 11:41:13 and old caches will ignore it 11:41:23 no, see the cache-control directive ;) 11:41:36 "don't store the header" 11:42:41 ok, so is 5.2.2 cachable then? 11:43:38 I guess because we use the new fragment dimensions on the Range header, they are not? 11:43:41 Raphael: Conrad, I want to clarify one of your wrong asumption in one of your email for yesterday night 11:44:07 ... you wrote, don't use comma separated value for selecting multiple tracks in the Content-Range headers 11:44:16 ... but we can, since Content-Range header cannot be split 11:44:19 http://www.ietf.org/rfc/rfc2617.txt (about the use of ',' in headers, and splitting) 11:44:28 ... similar to Authorization 11:45:04 ... so: "Content-Range: track audio1,audio2" will be valid 11:45:18 ... hope it clarifies this objection you have 11:45:38 Yves: I will have some clarification about that from HTTPbis in our meeting in 2 weeks 11:45:58 ... if this changes, I will warn you 11:46:47 Conrad, would you like an action to add your use case in the UC document? 11:48:21 raphael, yes 11:48:57 ACTION: davy to draw diagrams to include in the spec, similar to Yves's email, that shows which bytes from the headers and body of the media file are sent 11:48:57 Created ACTION-155 - Draw diagrams to include in the spec, similar to Yves's email, that shows which bytes from the headers and body of the media file are sent [on Davy Van Deursen - due 2010-03-16]. 11:49:19 ACTION: Conrad to add a "bandwidth conservation use case" 11:49:19 Created ACTION-156 - Add a "bandwidth conservation use case" [on Conrad Parker - due 2010-03-16]. 11:49:23 raphael, concerning the comma, i object more strongly to using Content-Range for that anyway :-) 11:49:58 Conrad, to use Content-range for track? 11:50:02 ie. i prefer a new header for time ranges etc., for which comma and header combining is allowed 11:50:37 Conrad, you want Range and Content-Range only used with the bytes unit? 11:50:38 raphael, to use Content-Range for bytes (no change to existing implementations) and to use a new header to advertise the time range of the representation 11:50:43 raphael, yes 11:50:53 206 requires a CR 11:51:05 s/CR/Content-Range/ 11:51:55 (or a multipart byterange, that contains Content-Range headers) 11:52:40 in fact it's not even sure that we can do the range mapping in another header 11:52:52 generally i would like us to specify things so that the responses are cacheable with existing proxies, and i think that is well possible 11:53:12 Conrad, see section 5.2.3 11:53:14 yes, use byte ranges 11:54:11 ok, will review 11:59:11 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html raphael 12:01:00 tmichel has joined #mediafrag 12:01:56 ACTION: Silvia to propagate the changes in the spec document now we have the new header 'Content-Range-Mapping' 12:01:56 Created ACTION-157 - Propagate the changes in the spec document now we have the new header 'Content-Range-Mapping' [on Silvia Pfeiffer - due 2010-03-16]. 12:02:40 Jack: I'm warning everybody that it is likely we go in LC with the non-possibility of combining dimensions in a fragment URI 12:02:46 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html raphael 12:03:35 my action has already been done and committed 12:03:35 s/in a fragement URI/in the HTTP protocol 12:03:51 close ACTION-157 12:03:51 ACTION-157 Propagate the changes in the spec document now we have the new header 'Content-Range-Mapping' closed 12:03:54 raphael: why add them back? 12:05:11 we cannot define the syntax in one single layer unless we can come up with the syntax for expressing "any string that after percent-decoding and decoding UTF-8 is equal to the unicode string x" 12:06:22 WD 12:06:40 Jack confused me :) 12:07:16 and then LC in June as expected 12:10:20 Yves: can you explain what changes you want to revert and why? 12:10:49 It is obvious that there is no common understanding of how things ought to work 12:11:46 maybe he has a syntax 12:12:31 that would be great, but I'd like to know or we'll just do this all over again later. 12:14:14 I want to have generic syntax + serialization ones 12:14:35 so for the URI serialization, it shouldn't contradict your algorithm 12:14:42 ok, what is the generic syntax? 12:15:06 basically, unencoded name=value 12:15:27 unencoded? 12:15:38 well, raw strings in utf-8 12:16:19 I'll do that tonight 12:16:26 probably by email first 12:17:25 on the URI fragment/query component level the data is percent-encoded bytes, how can a generic syntax be in terms of something unencoded? 12:19:56 is the mediafragment production I added not the generic syntax? even though we should perhaps rename it to something like namevalues to avoid confusion 12:20:58 URI fragment/query is part of the URI serialization 12:21:14 so it will be encoded 12:21:38 Yes, sure 12:21:50 but can that be expressed in declarative syntax? 12:22:40 I just want to know that there is actually some change and not just putting back the old syntax which doesn't match what we want implementations to match against. 12:26:40 Raphael: I suggest Yves send by email tonight what he intends to change to finalize the discussion 12:30:46 Topic: 3. Implementation Report 12:30:51 I have made the request to generate http://www.w3.org/2010/03/09-mediafrag-minutes.html raphael 12:31:03 Raphael: we will first start with a demo from Davy 12:33:10 -WG-Room 12:33:11 IA_MFWG(F2F)2:00AM has ended 12:33:12 Attendees were WG_room, mhausenblas, +329331aaaa, silvia, foolip, Raphael, Jack, Franck, Yves, Davy 12:33:48 Davy: I will first show slides 12:34:03 ... URL to be provided soon 12:34:33 ... room laughing at the title 12:34:56 ..." Development of a flash player supporting media fragments: frustrations and results" 12:36:12 ... requirements: flash media frgaments player, could be used in any browser supporting Flash, communication with Ninsuna or any Media Fragments compliant server 12:36:23 ... we want to finally play the media fragments in the UA 12:36:51 ... how to integrate Flash video player with Media Fragments servers, 3 possible solutions 12:37:02 s/frgaments/fragments 12:37:37 ... 1st approach: trivial use of the Flash video component 12:37:50 ... takes an input a URI pointing to a MP4 file 12:38:03 ... problem: no possibility to change the HTTP headers, so does not work 12:38:21 ... 2nd approach: use the HTTP communication component 12:38:45 ... make use of URLLoader component, possibility to add/set HTTP headers 12:39:17 ... problem: browsers only allow modifications of non-standard HTTP headers 12:39:32 ... it might be different with JavaScript (Philip, HELP !!!) 12:40:13 ... URLLoader and video component are not integrated 12:40:47 ... workaround: save received byte stram in a file ... not possible in an AIR application, no progressive play possible 12:43:17 ... IE, Firefox and Safari all show the same behavior, communication between the flash api and the browser, my parameters are blocked and the browser prohibit to change the standard HTTP header 12:43:48 ... 3rd approach: write an own flash video component, take as input the URLLoader component, requires a huge effort 12:44:06 ... or modify existing flash video component 12:44:15 ... only possible with help from Adobe 12:45:17 Raphael: Philip, it would be very great if you could react on that, based on your experience with Opera, is this possible at all for a browser plugin to interact with the browser and change the HTTP headers 12:45:42 ... e.g. a plugin that catchs up the media fragment URI syntax, and just send a bytes range request 12:46:13 ... that is NOT possible for sure with a Flash component interacting with a browser according to Davy experiment 12:46:14 No, it's not possible to add arbitrary HTTP headers, and as far as I know not any headers at all, not via the netscape plugin API at least. 12:46:40 Raphael: Davy said you can add non standard headers, you cannot modify the default ones! 12:47:27 Perhaps flash has its own HTTP stack that completely bypasses the browser, or there is more to the netscape API than I have seen. 12:47:30 Davy: conclusion is in order to support Media Fragments, players MUST be modified 12:47:32 foolip: XMLHttpRequest allows setting HTTP headers 12:48:07 Raphael: Silvia, can you override the ones from browser? 12:48:20 Davy: Media Fragments flash player 12:48:29 raphael: yes 12:48:30 silvia: Is that actually implemented by most browsers? In either case, this shouldn't be available to plugins. 12:48:30 ... able to play any mp4 file 12:48:59 foolip: I don't know if plugins can use it, but you can write it in a Web page 12:49:00 Raphael: Philip, are you suggesting then that the code of the browsers will need to be modified? 12:49:56 Davy: demo = http://ninsuna.elis.ugent.be/MediaFragmentsPlayer 12:50:38 I doubt it will ever be possible from plugins if it doesn't already work. I'm sure it doesn't work in Opera via plugins because byte ranges weren't very well supported before