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_RIFF_dmb1:
case GST_MAKE_FOURCC ('A', 'C', 'D', 'V'): case GST_MAKE_FOURCC ('A', 'C', 'D', 'V'):
case GST_MAKE_FOURCC ('Q', 'I', 'V', 'G'): 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) if (codec_name)
*codec_name = g_strdup ("Motion JPEG"); *codec_name = g_strdup ("Motion JPEG");
break; 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: /* generic (mostly RGB) MJPEG */
case GST_RIFF_jpeg: case GST_RIFF_jpeg:
case GST_MAKE_FOURCC ('j', 'p', 'e', 'g'): /* generic (mostly RGB) MJPEG */ 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) if (codec_name)
*codec_name = g_strdup ("JPEG Still Image"); *codec_name = g_strdup ("JPEG Still Image");
break; 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_MAKE_FOURCC ('P', 'I', 'X', 'L'): /* Miro/Pinnacle fourccs */
case GST_RIFF_VIXL: /* Miro/Pinnacle fourccs */ case GST_RIFF_VIXL: /* Miro/Pinnacle fourccs */
case GST_RIFF_vixl: 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) if (codec_name)
*codec_name = g_strdup ("Miro/Pinnacle Motion JPEG"); *codec_name = g_strdup ("Miro/Pinnacle Motion JPEG");
break; break;
case GST_MAKE_FOURCC ('C', 'J', 'P', 'G'): 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) if (codec_name)
*codec_name = g_strdup ("Creative Webcam JPEG"); *codec_name = g_strdup ("Creative Webcam JPEG");
break; break;
case GST_MAKE_FOURCC ('S', 'L', 'M', 'J'): 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) if (codec_name)
*codec_name = g_strdup ("SL Motion JPEG"); *codec_name = g_strdup ("SL Motion JPEG");
break; break;
case GST_MAKE_FOURCC ('J', 'P', 'G', 'L'): 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) if (codec_name)
*codec_name = g_strdup ("Pegasus Lossless JPEG"); *codec_name = g_strdup ("Pegasus Lossless JPEG");
break; break;

File diff suppressed because one or more lines are too long