Changeset 252134 in webkit
- Timestamp:
- Nov 6, 2019 1:39:01 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r252127 r252134 1 2019-11-06 Philippe Normand <philn@igalia.com> 2 3 REGRESSION(r249428): [GStreamer] VP9 video rendered green 4 https://bugs.webkit.org/show_bug.cgi?id=201422 5 <rdar://problem/55945741> 6 7 Reviewed by Carlos Garcia Campos. 8 9 Enable the texture upload GStreamer meta code path. Until 10 GStreamer 1.16.2 this workaround is needed to fix VP9 (vp9dec) 11 rendering. For downstream users cherry-picking the corresponding 12 GStreamer patch[0], an environment variable can be set to bypass 13 the reintroduced slow color conversion: $WEBKIT_GST_NO_RGBA_CONVERSION. 14 15 [0] https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/commit/8d32de090554cf29fe359f83aa46000ba658a693 16 17 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: 18 (WebCore::MediaPlayerPrivateGStreamerBase::createVideoSinkGL): 19 1 20 2019-11-06 youenn fablet <youenn@apple.com> 2 21 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
r251838 r252134 1207 1207 result &= gst_element_link_many(upload, colorconvert, appsink, nullptr); 1208 1208 1209 GRefPtr<GstPad> pad = adoptGRef(gst_element_get_static_pad(upload, "sink")); 1210 gst_element_add_pad(videoSink, gst_ghost_pad_new("sink", pad.get())); 1209 // Workaround until we can depend on GStreamer 1.16.2. 1210 // https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/commit/8d32de090554cf29fe359f83aa46000ba658a693 1211 // Forcing a color conversion to RGBA here allows glupload to internally use 1212 // an uploader that adds a VideoMeta, through the TextureUploadMeta caps 1213 // feature, without needing the patch above. However this specific caps 1214 // feature is going to be removed from GStreamer so it is considered a 1215 // short-term workaround. This code path most likely will have a negative 1216 // performance impact on embedded platforms as well. Downstream embedders 1217 // are highly encouraged to cherry-pick the patch linked above in their BSP 1218 // and set the WEBKIT_GST_NO_RGBA_CONVERSION environment variable until 1219 // GStreamer 1.16.2 is released. 1220 // See also https://bugs.webkit.org/show_bug.cgi?id=201422 1221 if (webkitGstCheckVersion(1, 16, 2) || getenv("WEBKIT_GST_NO_RGBA_CONVERSION")) { 1222 GRefPtr<GstPad> pad = adoptGRef(gst_element_get_static_pad(upload, "sink")); 1223 gst_element_add_pad(videoSink, gst_ghost_pad_new("sink", pad.get())); 1224 } else { 1225 GstElement* capsFilter = gst_element_factory_make("capsfilter", nullptr); 1226 GRefPtr<GstCaps> caps = adoptGRef(gst_caps_from_string("video/x-raw, format=RGBA")); 1227 g_object_set(capsFilter, "caps", caps.get(), nullptr); 1228 1229 GstElement* videoconvert = gst_element_factory_make("videoconvert", nullptr); 1230 gst_bin_add_many(GST_BIN_CAST(videoSink), capsFilter, videoconvert, nullptr); 1231 result &= gst_element_link_many(capsFilter, videoconvert, upload, nullptr); 1232 1233 GRefPtr<GstPad> pad = adoptGRef(gst_element_get_static_pad(capsFilter, "sink")); 1234 gst_element_add_pad(videoSink, gst_ghost_pad_new("sink", pad.get())); 1235 } 1211 1236 1212 1237 if (!result) {
Note: See TracChangeset
for help on using the changeset viewer.