Modified: trunk/Source/WebCore/ChangeLog (243169 => 243170)
--- trunk/Source/WebCore/ChangeLog 2019-03-19 20:56:31 UTC (rev 243169)
+++ trunk/Source/WebCore/ChangeLog 2019-03-19 21:39:05 UTC (rev 243170)
@@ -1,3 +1,19 @@
+2019-03-19 Thibault Saunier <[email protected]>
+
+ [GStreamer][WebRTC] Create sps/pps for all frames to please libwebrtc
+ https://bugs.webkit.org/show_bug.cgi?id=195677
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ * platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
+ (gst_webrtc_video_encoder_set_format):
+ (register_known_encoder):
+ (setup_x264enc):
+ (setup_openh264enc):
+ (setup_omxh264enc):
+ (set_bitrate_bit_per_sec):
+ (gst_webrtc_video_encoder_class_init):
+
2019-03-19 Timothy Hatcher <[email protected]>
REGRESSION (r239904): Update dark mode defines in a few places that got missed.
Modified: trunk/Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp (243169 => 243170)
--- trunk/Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp 2019-03-19 20:56:31 UTC (rev 243169)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp 2019-03-19 21:39:05 UTC (rev 243170)
@@ -43,7 +43,7 @@
typedef void (*SetBitrateFunc) (GObject * encoder, const gchar * propname,
gint bitrate);
-typedef void (*SetupEncoder) (GObject * encoder);
+typedef void (*SetupFunc) (GstWebrtcVideoEncoder * self);
typedef struct
{
gboolean avalaible;
@@ -52,7 +52,7 @@
const gchar *parser_name;
GstCaps *encoded_format;
SetBitrateFunc setBitrate;
- SetupEncoder setupEncoder;
+ SetupFunc setupEncoder;
const gchar *bitrate_propname;
const gchar *keyframe_interval_propname;
} EncoderDefinition;
@@ -168,11 +168,11 @@
GstPad *tmppad;
priv->encoderId = (EncoderId) i;
priv->encoder = gst_element_factory_make (encoders[i].name, NULL);
- encoders[priv->encoderId].setupEncoder (G_OBJECT (priv->encoder));
if (encoders[i].parser_name)
priv->parser = gst_element_factory_make (encoders[i].parser_name, NULL);
+ encoders[priv->encoderId].setupEncoder (self);
if (encoders[i].encoded_format) {
priv->capsfilter = gst_element_factory_make ("capsfilter", NULL);
g_object_set (priv->capsfilter, "caps", encoders[i].encoded_format,
@@ -245,7 +245,7 @@
static void
register_known_encoder (EncoderId encId, const gchar * name,
const gchar * parser_name, const gchar * caps, const gchar * encoded_format,
- SetupEncoder setupEncoder, const gchar * bitrate_propname,
+ SetupFunc setupEncoder, const gchar * bitrate_propname,
SetBitrateFunc setBitrate, const gchar * keyframe_interval_propname)
{
GstPluginFeature *feature =
@@ -273,20 +273,25 @@
}
static void
-setup_x264enc (GObject * encoder)
+setup_x264enc (GstWebrtcVideoEncoder * self)
{
- gst_util_set_object_arg (encoder, "tune", "zerolatency");
+ gst_util_set_object_arg (G_OBJECT (PRIV (self)->encoder), "tune",
+ "zerolatency");
+ g_object_set (PRIV (self)->parser, "config-interval", 1, NULL);
}
static void
-setup_openh264enc (GObject *)
+setup_openh264enc (GstWebrtcVideoEncoder * self)
{
+ g_object_set (PRIV (self)->parser, "config-interval", 1, NULL);
}
static void
-setup_omxh264enc (GObject * encoder)
+setup_omxh264enc (GstWebrtcVideoEncoder * self)
{
- gst_util_set_object_arg (encoder, "control-rate", "constant");
+ gst_util_set_object_arg (G_OBJECT (PRIV (self)->encoder), "control-rate",
+ "variable");
+ g_object_set (PRIV (self)->parser, "config-interval", 1, NULL);
}