Rémi Bernon (@rbernon) commented about dlls/winegstreamer/wg_transform.c:
- || !append_element(transform->container, element, first, last)) + if (!(element = find_element(GST_ELEMENT_FACTORY_TYPE_DECODER, parsed_caps, sink_caps))) + goto done; + + /* We need to insert a capsfilter for avdec_h264 in order for it to use a byte-stream + * stream-format. Otherwise, when a drain request is made, the caps is fixated to AVC + * but no codec_data is provided to the decoder. This results in libav rejecting every + * packet it receives. + */ + if ((factory = gst_element_get_factory(element)) && + (shortname = gst_plugin_feature_get_name(GST_PLUGIN_FEATURE(factory))) && + !strcmp(shortname, "avdec_h264")) + { + if (!(capsfilter = create_element("capsfilter", "good")) || + !append_element(transform->container, capsfilter, first, last)) + goto done;
if (!(capsfilter = create_element("capsfilter", "good")) ||
!append_element(transform->container, capsfilter, first, last))
{
g_object_unref(element);
goto done;
}
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8719#note_112184