jpegparse: reset parse state when the SOI is not the first marker
authorHe Junyan <junyan.he@intel.com>
Sun, 12 Feb 2023 14:37:01 +0000 (22:37 +0800)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 7 Mar 2023 23:05:32 +0000 (23:05 +0000)
commit7af495072affd5de82287b28d39570e9a0ba5f1c
tree241e76e6b13d0a22c32151fa9d98b0b93c377722
parent6b3adff951bb7d56d52f340aa4554fa819119a18
jpegparse: reset parse state when the SOI is not the first marker

There may be garbage or some bits before a SOI comes in some problematic
mjpeg streams. For example, some network error may cause the EOI marker
of the previous frame lost, and when the new frame's SOI comes, we still
use the state of the last frame, which will generate errors.

For this kind of frames without EOI, if that frame already has some data
(the SOS segment is detected), we still push it as a frame with CORRUPTED
flag set. But if not, we just discard all the data before the new SOI.

Co-Authored-By: Víctor Jáquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4130>
subprojects/gst-plugins-bad/gst/jpegformat/gstjpegparse.c