diff --git a/video_receive_stream.h b/video_receive_stream.h
index 5e5ece5..a8003c1 100644
--- a/video_receive_stream.h
+++ b/video_receive_stream.h
@@ -36,32 +36,27 @@
   // TODO(mflodman) Move all these settings to VideoDecoder and move the
   // declaration to common_types.h.
   struct Decoder {
-    Decoder()
-        : decoder(NULL),
-          payload_type(0),
-          is_renderer(false),
-          expected_delay_ms(0) {}
     std::string ToString() const;
 
     // The actual decoder instance.
-    VideoDecoder* decoder;
+    VideoDecoder* decoder = nullptr;
 
     // Received RTP packets with this payload type will be sent to this decoder
     // instance.
-    int payload_type;
+    int payload_type = 0;
 
     // Name of the decoded payload (such as VP8). Maps back to the depacketizer
     // used to unpack incoming packets.
     std::string payload_name;
 
     // 'true' if the decoder handles rendering as well.
-    bool is_renderer;
+    bool is_renderer = false;
 
     // The expected delay for decoding and rendering, i.e. the frame will be
     // delivered this many milliseconds, if possible, earlier than the ideal
     // render time.
     // Note: Ignored if 'renderer' is false.
-    int expected_delay_ms;
+    int expected_delay_ms = 0;
   };
 
   struct Stats {
@@ -90,13 +85,6 @@
   };
 
   struct Config {
-    Config()
-        : renderer(NULL),
-          render_delay_ms(10),
-          audio_channel_id(-1),
-          pre_decode_callback(NULL),
-          pre_render_callback(NULL),
-          target_delay_ms(0) {}
     std::string ToString() const;
 
     // Decoders for every payload that we can receive.
@@ -104,32 +92,25 @@
 
     // Receive-stream specific RTP settings.
     struct Rtp {
-      Rtp()
-          : remote_ssrc(0),
-            local_ssrc(0),
-            rtcp_mode(newapi::kRtcpCompound),
-            remb(false) {}
       std::string ToString() const;
 
       // Synchronization source (stream identifier) to be received.
-      uint32_t remote_ssrc;
+      uint32_t remote_ssrc = 0;
       // Sender SSRC used for sending RTCP (such as receiver reports).
-      uint32_t local_ssrc;
+      uint32_t local_ssrc = 0;
 
       // See RtcpMode for description.
-      newapi::RtcpMode rtcp_mode;
+      newapi::RtcpMode rtcp_mode = newapi::kRtcpCompound;
 
       // Extended RTCP settings.
       struct RtcpXr {
-        RtcpXr() : receiver_reference_time_report(false) {}
-
         // True if RTCP Receiver Reference Time Report Block extension
         // (RFC 3611) should be enabled.
-        bool receiver_reference_time_report;
+        bool receiver_reference_time_report = false;
       } rtcp_xr;
 
       // See draft-alvestrand-rmcat-remb for information.
-      bool remb;
+      bool remb = false;
 
       // See NackConfig for description.
       NackConfig nack;
@@ -140,13 +121,11 @@
       // RTX settings for incoming video payloads that may be received. RTX is
       // disabled if there's no config present.
       struct Rtx {
-        Rtx() : ssrc(0), payload_type(0) {}
-
         // SSRCs to use for the RTX streams.
-        uint32_t ssrc;
+        uint32_t ssrc = 0;
 
         // Payload type to use for the RTX stream.
-        int payload_type;
+        int payload_type = 0;
       };
 
       // Map from video RTP payload type -> RTX config.
@@ -157,33 +136,33 @@
       std::vector<RtpExtension> extensions;
     } rtp;
 
-    // VideoRenderer will be called for each decoded frame. 'NULL' disables
+    // VideoRenderer will be called for each decoded frame. 'nullptr' disables
     // rendering of this stream.
-    VideoRenderer* renderer;
+    VideoRenderer* renderer = nullptr;
 
     // Expected delay needed by the renderer, i.e. the frame will be delivered
     // this many milliseconds, if possible, earlier than the ideal render time.
     // Only valid if 'renderer' is set.
-    int render_delay_ms;
+    int render_delay_ms = 10;
 
     // Audio channel corresponding to this video stream, used for audio/video
     // synchronization. 'audio_channel_id' is ignored if no VoiceEngine is set
     // when creating the VideoEngine instance. '-1' disables a/v sync.
-    int audio_channel_id;
+    int audio_channel_id = -1;
 
     // Called for each incoming video frame, i.e. in encoded state. E.g. used
     // when
-    // saving the stream to a file. 'NULL' disables the callback.
-    EncodedFrameObserver* pre_decode_callback;
+    // saving the stream to a file. 'nullptr' disables the callback.
+    EncodedFrameObserver* pre_decode_callback = nullptr;
 
     // Called for each decoded frame. E.g. used when adding effects to the
     // decoded
-    // stream. 'NULL' disables the callback.
-    I420FrameCallback* pre_render_callback;
+    // stream. 'nullptr' disables the callback.
+    I420FrameCallback* pre_render_callback = nullptr;
 
     // Target delay in milliseconds. A positive value indicates this stream is
     // used for streaming instead of a real-time call.
-    int target_delay_ms;
+    int target_delay_ms = 0;
   };
 
   virtual void Start() = 0;
