+}
+#endif
+
+static void
+gst_jpeg_dec_negotiate (GstJpegDec * dec, gint width, gint height, gint clrspc,
+ gboolean interlaced)
+{
+ GstVideoCodecState *outstate;
+ GstVideoInfo *info;
+ GstVideoFormat format;
+
+#ifdef JCS_EXTENSIONS
+ if (dec->format_convert) {
+ format = dec->format;
+ } else
+#endif
+ {
+ switch (clrspc) {
+ case JCS_RGB:
+ format = GST_VIDEO_FORMAT_RGB;
+ break;
+ case JCS_GRAYSCALE:
+ format = GST_VIDEO_FORMAT_GRAY8;
+ break;
+ default:
+ format = GST_VIDEO_FORMAT_I420;
+ break;
+ }
+ }
+
+ /* Compare to currently configured output state */
+ outstate = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (dec));
+ if (outstate) {
+ info = &outstate->info;
+
+ if (width == GST_VIDEO_INFO_WIDTH (info) &&
+ height == GST_VIDEO_INFO_HEIGHT (info) &&
+ format == GST_VIDEO_INFO_FORMAT (info)) {
+ gst_video_codec_state_unref (outstate);
+ return;
+ }
+ gst_video_codec_state_unref (outstate);
+ }
+#ifdef JCS_EXTENSIONS
+ /* Determine if libjpeg-turbo direct format conversion can be used
+ * with current caps and if so, adjust $dec to enable it and $clrspc
+ * accordingly. */
+ gst_jpeg_turbo_parse_ext_fmt_convert (dec, &clrspc);