Title: [243170] trunk/Source/WebCore
Revision
243170
Author
[email protected]
Date
2019-03-19 14:39:05 -0700 (Tue, 19 Mar 2019)

Log Message

[GStreamer][WebRTC] Create sps/pps for all frames to please libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=195677

Patch by Thibault Saunier <[email protected]> on 2019-03-19
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):

Modified Paths

Diff

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);
 }
 
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to