Changeset 243170 in webkit


Ignore:
Timestamp:
Mar 19, 2019 2:39:05 PM (5 years ago)
Author:
commit-queue@webkit.org
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 <tsaunier@igalia.com> 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):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r243169 r243170  
     12019-03-19  Thibault Saunier  <tsaunier@igalia.com>
     2
     3        [GStreamer][WebRTC] Create sps/pps for all frames to please libwebrtc
     4        https://bugs.webkit.org/show_bug.cgi?id=195677
     5
     6        Reviewed by Xabier Rodriguez-Calvar.
     7
     8        * platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
     9        (gst_webrtc_video_encoder_set_format):
     10        (register_known_encoder):
     11        (setup_x264enc):
     12        (setup_openh264enc):
     13        (setup_omxh264enc):
     14        (set_bitrate_bit_per_sec):
     15        (gst_webrtc_video_encoder_class_init):
     16
    1172019-03-19  Timothy Hatcher  <timothy@apple.com>
    218
  • trunk/Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp

    r242894 r243170  
    4444typedef void (*SetBitrateFunc) (GObject * encoder, const gchar * propname,
    4545    gint bitrate);
    46 typedef void (*SetupEncoder) (GObject * encoder);
     46typedef void (*SetupFunc) (GstWebrtcVideoEncoder * self);
    4747typedef struct
    4848{
     
    5353  GstCaps *encoded_format;
    5454  SetBitrateFunc setBitrate;
    55   SetupEncoder setupEncoder;
     55  SetupFunc setupEncoder;
    5656  const gchar *bitrate_propname;
    5757  const gchar *keyframe_interval_propname;
     
    169169      priv->encoderId = (EncoderId) i;
    170170      priv->encoder = gst_element_factory_make (encoders[i].name, NULL);
    171       encoders[priv->encoderId].setupEncoder (G_OBJECT (priv->encoder));
    172171
    173172      if (encoders[i].parser_name)
    174173        priv->parser = gst_element_factory_make (encoders[i].parser_name, NULL);
    175174
     175      encoders[priv->encoderId].setupEncoder (self);
    176176      if (encoders[i].encoded_format) {
    177177        priv->capsfilter = gst_element_factory_make ("capsfilter", NULL);
     
    246246register_known_encoder (EncoderId encId, const gchar * name,
    247247    const gchar * parser_name, const gchar * caps, const gchar * encoded_format,
    248     SetupEncoder setupEncoder, const gchar * bitrate_propname,
     248    SetupFunc setupEncoder, const gchar * bitrate_propname,
    249249    SetBitrateFunc setBitrate, const gchar * keyframe_interval_propname)
    250250{
     
    274274
    275275static void
    276 setup_x264enc (GObject * encoder)
    277 {
    278   gst_util_set_object_arg (encoder, "tune", "zerolatency");
    279 }
    280 
    281 static void
    282 setup_openh264enc (GObject *)
    283 {
    284 }
    285 
    286 static void
    287 setup_omxh264enc (GObject * encoder)
    288 {
    289   gst_util_set_object_arg (encoder, "control-rate", "constant");
     276setup_x264enc (GstWebrtcVideoEncoder * self)
     277{
     278  gst_util_set_object_arg (G_OBJECT (PRIV (self)->encoder), "tune",
     279      "zerolatency");
     280  g_object_set (PRIV (self)->parser, "config-interval", 1, NULL);
     281}
     282
     283static void
     284setup_openh264enc (GstWebrtcVideoEncoder * self)
     285{
     286  g_object_set (PRIV (self)->parser, "config-interval", 1, NULL);
     287}
     288
     289static void
     290setup_omxh264enc (GstWebrtcVideoEncoder * self)
     291{
     292  gst_util_set_object_arg (G_OBJECT (PRIV (self)->encoder), "control-rate",
     293      "variable");
     294  g_object_set (PRIV (self)->parser, "config-interval", 1, NULL);
    290295}
    291296
Note: See TracChangeset for help on using the changeset viewer.