Bug 36536
Summary: | multipart/x-mixed-replace does not show final frame in MJPEG over HTTP | ||
---|---|---|---|
Product: | WebKit | Reporter: | Riven <s.balk> |
Component: | Images | Assignee: | Nobody <webkit-unassigned> |
Status: | UNCONFIRMED | ||
Severity: | Minor | CC: | ap, christopher.stanton, elisjohn64, koivisto, mackyle, socket.h, thenarant |
Priority: | P1 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | PC | ||
OS: | Windows Vista | ||
URL: | http://indiespot.net/files/mjpeg.html |
Riven
the last frame of the MJPEG movie contains the text "END OF MESSAGE", which is not shown in WebKit
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Christopher Stanton
I have a custom MJPEG server which multiplexes various MJPEG camera streams to users. The when the stream terminates (upstream from the server/in the server), either due to a stream failure, the stream being disconnected, etc the last frame is used as a status frame to provide the user info and so they don't think the stream is hung.
For some reason WebKit (in Chrome) does not display the frame even though the stream is terminated by a valid terminating break.
Content-Type: multipart/mixed; boundary="MYBOUNDARY"
Boundaries between parts are "--MYBOUNDARY"
The end of the stream is signified by "--MYBOUNDARY--".
http://en.wikipedia.org/wiki/MIME
http://code.google.com/p/chromium/issues/detail?id=78622
Antti Koivisto
Run into this while making test for bug 139313.
The problem is that we rely on CachedImage::responseReceived to reset the image for each frame and then a synthetic call (from SubresourceLoader) to CachedImage::finishLoading to update the data. This fails for the last frame since there is no responseReceived call when the load is really finishing and the existing image decoder will be in closed state.