jpegdec: YUV->RGB conversion breaks decoding on some files
The file: Test.jpg
The app: Identity, uses playbin3
with gtk4paintablesink
(tested with all latest crates.io versions).
This is what happens:
0:00:00.168425527 51816 0x7f6ec40fdea0 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<filesrc0> pad not activated yet
0:00:00.168856034 51816 0x7f6ec40fdea0 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<filesrc0> pad not activated yet
0:00:00.180820209 51816 0x7f6ec4108d20 WARN videodecoder gstvideodecoder.c:2817:gst_video_decoder_chain:<jpegdec0> Received buffer without a new-segment. Assuming timestamps start from 0.
0:00:00.181474351 51816 0x7f6ec4108d20 WARN video-info video-info.c:760:gst_video_info_to_caps: invalid matrix 0 for RGB format, using RGB
0:00:00.185750787 51816 0x7f6ec4108d20 WARN videodecoder gstvideodecoder.c:4799:_gst_video_decoder_error:<jpegdec0> error: Failed to decode JPEG image
0:00:00.185775092 51816 0x7f6ec4108d20 WARN videodecoder gstvideodecoder.c:4801:_gst_video_decoder_error:<jpegdec0> error: Decode error #20: Improper call to JPEG library in state 205
0:00:00.185876224 51816 0x7f6ec4108d20 WARN videodecoder gstvideodecoder.c:1416:gst_video_decoder_sink_event_default:<jpegdec0> error: No valid frames decoded before end of stream
0:00:00.185893056 51816 0x7f6ec4108d20 WARN videodecoder gstvideodecoder.c:1416:gst_video_decoder_sink_event_default:<jpegdec0> error: no valid frames found
If I remove gtk4paintablesink
and let playbin3
create its own window, then there's no error.
GST_DEBUG=5
logs:
Original Identity issue: https://gitlab.gnome.org/YaLTeR/identity/-/issues/30