riff: Mark jpeg as parsed

This is needed so that autoplugging works with avidemux and JPEG decoders that
need parsed sink caps (eg rockchip 'mppjpegdec' decoder). It also works fine
with 'jpegdec' decoder regardless.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3175>
This commit is contained in:
Julian Bouzas 2022-10-13 11:21:42 -04:00
parent 4e03c5f885
commit 9197235539
3 changed files with 20 additions and 8 deletions

File diff suppressed because one or more lines are too long

View file

@ -172,7 +172,9 @@ gst_riff_create_video_caps (guint32 codec_fcc,
case GST_RIFF_dmb1:
case GST_MAKE_FOURCC ('A', 'C', 'D', 'V'):
case GST_MAKE_FOURCC ('Q', 'I', 'V', 'G'):
caps = gst_caps_new_empty_simple ("image/jpeg");
caps =
gst_caps_new_simple ("image/jpeg", "parsed", G_TYPE_BOOLEAN, TRUE,
NULL);
if (codec_name)
*codec_name = g_strdup ("Motion JPEG");
break;
@ -180,7 +182,9 @@ gst_riff_create_video_caps (guint32 codec_fcc,
case GST_RIFF_JPEG: /* generic (mostly RGB) MJPEG */
case GST_RIFF_jpeg:
case GST_MAKE_FOURCC ('j', 'p', 'e', 'g'): /* generic (mostly RGB) MJPEG */
caps = gst_caps_new_empty_simple ("image/jpeg");
caps =
gst_caps_new_simple ("image/jpeg", "parsed", G_TYPE_BOOLEAN, TRUE,
NULL);
if (codec_name)
*codec_name = g_strdup ("JPEG Still Image");
break;
@ -188,25 +192,33 @@ gst_riff_create_video_caps (guint32 codec_fcc,
case GST_MAKE_FOURCC ('P', 'I', 'X', 'L'): /* Miro/Pinnacle fourccs */
case GST_RIFF_VIXL: /* Miro/Pinnacle fourccs */
case GST_RIFF_vixl:
caps = gst_caps_new_empty_simple ("image/jpeg");
caps =
gst_caps_new_simple ("image/jpeg", "parsed", G_TYPE_BOOLEAN, TRUE,
NULL);
if (codec_name)
*codec_name = g_strdup ("Miro/Pinnacle Motion JPEG");
break;
case GST_MAKE_FOURCC ('C', 'J', 'P', 'G'):
caps = gst_caps_new_empty_simple ("image/jpeg");
caps =
gst_caps_new_simple ("image/jpeg", "parsed", G_TYPE_BOOLEAN, TRUE,
NULL);
if (codec_name)
*codec_name = g_strdup ("Creative Webcam JPEG");
break;
case GST_MAKE_FOURCC ('S', 'L', 'M', 'J'):
caps = gst_caps_new_empty_simple ("image/jpeg");
caps =
gst_caps_new_simple ("image/jpeg", "parsed", G_TYPE_BOOLEAN, TRUE,
NULL);
if (codec_name)
*codec_name = g_strdup ("SL Motion JPEG");
break;
case GST_MAKE_FOURCC ('J', 'P', 'G', 'L'):
caps = gst_caps_new_empty_simple ("image/jpeg");
caps =
gst_caps_new_simple ("image/jpeg", "parsed", G_TYPE_BOOLEAN, TRUE,
NULL);
if (codec_name)
*codec_name = g_strdup ("Pegasus Lossless JPEG");
break;

File diff suppressed because one or more lines are too long