Open
Bug 667206
Opened 13 years ago
Updated 2 years ago
DrawImage fails on Motion JPG (mjpg)
Categories
(Core :: Graphics: Canvas2D, defect)
Tracking
()
NEW
People
(Reporter: humph, Unassigned)
References
Details
Attachments
(1 file)
607 bytes,
text/html
|
Details |
Using an image element with a mjpg as the source for a drawImage() call results in us silently doing nothing. I think it's related to bug 667203, and how we consider the loading state of such images. From nsCanvasRenderingContext2D::DrawImage, we bail in 3323: 3315 if (!imgsurf) { 3316 // The canvas spec says that drawImage should draw the first frame 3317 // of animated images 3318 PRUint32 sfeFlags = nsLayoutUtils::SFE_WANT_FIRST_FRAME; 3319 nsLayoutUtils::SurfaceFromElementResult res = 3320 nsLayoutUtils::SurfaceFromElement(imgElt, sfeFlags); 3321 if (!res.mSurface) { 3322 // Spec says to silently do nothing if the element is still loading. 3323 return res.mIsStillLoading ? NS_OK : NS_ERROR_NOT_AVAILABLE; 3324 } Chrome and Safari happily draw the image into the canvas. As I said in bug 667203, they also both consider the image loaded upon the first frame coming down. I've attached a test case. If/when the network stream interrupts the transfer of frames, the canvas will suddenly get drawn, otherwise it remains white in Firefox.
Comment 1•13 years ago
|
||
See bug 666855.
Reporter | ||
Comment 2•13 years ago
|
||
(In reply to comment #1) > See bug 666855. The spec says Firefox is right (or trying to be right, I still don't get a poster frame or first frame drawn). I've filed a bug on the spec: http://www.w3.org/Bugs/Public/show_bug.cgi?id=13060
Comment 3•13 years ago
|
||
This is a different situation from the animated gif situation. The issue here is that the spec says: If the image argument is an HTMLImageElement object that is not fully decodable then the implementation must return without drawing anything. where "fully decodable" is defined as: When an img element is in the completely available state and the user agent can completely decode the media data without errors, then the img element is said to be fully decodable. and "Completely available" is defined as: The user agent has obtained all of the image data. whereas the test we use internally is: (status & imgIRequest::STATUS_LOAD_COMPLETE) == 0 which is not true for an mjpeg while a new frame is loading.... so if frames are coming down the wire continuously, this will never test true.
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•