diff --git a/src/gst/gstpipewirepool.c b/src/gst/gstpipewirepool.c index ac462afbe..5638a0b7b 100644 --- a/src/gst/gstpipewirepool.c +++ b/src/gst/gstpipewirepool.c @@ -224,7 +224,14 @@ set_config (GstBufferPool * pool, GstStructure * config) return FALSE; } - has_video = gst_video_info_from_caps (&p->video_info, caps); + if (g_str_has_prefix (gst_structure_get_name ( + gst_caps_get_structure (caps, 0)), + "video/")) { + has_video = TRUE; + gst_video_info_from_caps (&p->video_info, caps); + } else { + has_video = FALSE; + } p->add_metavideo = has_video && gst_buffer_pool_config_has_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META); diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c index 4ef48cdcc..91630dcb6 100644 --- a/src/gst/gstpipewiresrc.c +++ b/src/gst/gstpipewiresrc.c @@ -1028,6 +1028,11 @@ handle_format_change (GstPipeWireSrc *pwsrc, if (pwsrc->caps && gst_caps_is_fixed (pwsrc->caps)) { pwsrc->negotiated = TRUE; + if (g_str_has_prefix (gst_structure_get_name ( + gst_caps_get_structure (pwsrc->caps, 0)), + "video/")) { + pwsrc->is_video = TRUE; + #ifdef HAVE_GSTREAMER_DMA_DRM if (gst_video_is_dma_drm_caps (pwsrc->caps)) { if (!gst_video_info_dma_drm_from_caps (&pwsrc->drm_info, pwsrc->caps)) { @@ -1042,13 +1047,12 @@ handle_format_change (GstPipeWireSrc *pwsrc, pw_stream_set_error (pwsrc->stream, -EINVAL, "internal error"); return; } - - pwsrc->is_video = TRUE; } else { gst_video_info_dma_drm_init (&pwsrc->drm_info); #endif - pwsrc->is_video = gst_video_info_from_caps (&pwsrc->video_info, - pwsrc->caps); + gst_video_info_from_caps (&pwsrc->video_info, + pwsrc->caps); + } #ifdef HAVE_GSTREAMER_DMA_DRM } #endif