rtpjpegpay: Allow different quantization tables for components 2 and 3

RFC 2435 mentions in section 4.1 that U/V use table number 1, but this seems
just like an example. Some encoders are not following that and there seems to
be no reason to reject their streams.

https://bugzilla.gnome.org/show_bug.cgi?id=761345
This commit is contained in:
Sebastian Dröge 2016-01-31 11:08:38 +11:00
parent 284d723a9a
commit 3549aa7924

View file

@ -558,21 +558,6 @@ gst_rtp_jpeg_pay_read_sof (GstRtpJPEGPay * pay, const guint8 * data,
if (!(info[2].samp == 0x11))
goto invalid_comp;
/* the other components are free to use any quant table but they have to
* have the same table id */
if (info[1].qt != info[2].qt) {
/* Some MJPG (like the one from the Logitech C-920 camera) uses different
* quant tables for component 1 and 2 but both tables contain the exact
* same data, so we could consider them as being the same tables */
if (!(info[1].qt < tables_elements &&
info[2].qt < tables_elements &&
tables[info[1].qt].size > 0 &&
tables[info[1].qt].size == tables[info[2].qt].size &&
memcmp (tables[info[1].qt].data, tables[info[2].qt].data,
tables[info[1].qt].size) == 0))
goto invalid_comp;
}
return TRUE;
/* ERRORS */