- From: Adam Bergkvist <adam.bergkvist@ericsson.com>
- Date: Fri, 24 Aug 2012 10:40:55 +0200
- To: "robert@ocallahan.org" <robert@ocallahan.org>
- CC: Travis Leithead <travis.leithead@microsoft.com>, Adam Barth <w3c@adambarth.com>, "public-media-capture@w3.org" <public-media-capture@w3.org>, Anant Narayanan <anant@mozilla.com>
On 2012-08-24 00:17, Robert O'Callahan wrote: > On Fri, Aug 24, 2012 at 4:54 AM, Travis Leithead > <travis.leithead@microsoft.com <mailto:travis.leithead@microsoft.com>> > wrote: > > There seems to be a lot of concerns about lifetime problems. Can you > elaborate on this? I would expect "lifetime problems" to plague all > users of createObjectURL (such as FileAPI), which is one reason for > the current behavior of defaulting to "autoRevoke" = true in > http://www.w3.org/TR/FileAPI/#creating-revoking. Do you have another > concern? > > autoRevoke helps but it's not as good as automatic garbage collection. > For example, making code asynchronous breaks autoRevoke URLs. This works: > var url = URL.createObjectURL(stream, {autoRevoke:true}); > element.src = url; > But this doesn't: > var url = URL.createObjectURL(stream, {autoRevoke:true}); > stream.onplaying = function() { element.src = url; }; This was interesting. I thought the URL was auto revoked after the first usage (in which case your async example would have been fine). Perhaps that's the old behavior. /Adam > > Whereas changing > element.srcObject = stream; > to > stream.onplaying = function() { element.srcObject = stream; } > is completely safe (as well as being simpler code). > > Also, once you've set an element's 'src' to an autoRevoke URL, it's a > useless magical string for most of the rest of the lifetime of the page. > For example it gives you no way to create another media element with the > same source. With 'srcObject', you can do element2.srcObject = > element.srcObject at any time. (element2.src = element.src would have > worked for all kinds of sources until Adam thwarted our evil plans > (actually IIRC it was Hixie's plan originally), but "element2.src = > element.src; element2.srcObject = element.srcObject;" will do.) > > [Aside: it seems unlikely autoRevoke change to default to true for > createObjectURL(url) given FF, IE10 and I think Chrome are all shipping > implementations of createObjectURL(url) which do not autoRevoke! The > likelihood of breaking content by changing the autoRevoke default seems > high.] > > Rob > -- > “You have heard that it was said, ‘Love your neighbor and hate your > enemy.’ But I tell you, love your enemies and pray for those who > persecute you, that you may be children of your Father in heaven. ... If > you love those who love you, what reward will you get? Are not even the > tax collectors doing that? And if you greet only your own people, what > are you doing more than others?" [Matthew 5:43-47] >
Received on Friday, 24 August 2012 08:41:23 UTC