Bug 1453795 - DOM/Media - Initialize member fields in classes/ structures. r=jyavenard
authorAndi-Bogdan Postelnicu <bpostelnicu@mozilla.com>
Fri, 15 Jun 2018 10:25:02 +0300
changeset 422830 d7079fb3a17993021fd7908af2b22e363d3143e3
parent 422829 705644bd3788e039c147373182fa7fd19fec0e6d
child 422831 9b74b9f2939a7ae3a0ea6e711dc32ed5203e03ff
child 422854 ff4c7fc41c867621373ea7bc2eef5aa73ca5ecbc
push id34153
push usercsabou@mozilla.com
push dateMon, 18 Jun 2018 15:53:06 +0000
treeherdermozilla-central@9b74b9f2939a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjyavenard
bugs1453795
milestone62.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1453795 - DOM/Media - Initialize member fields in classes/ structures. r=jyavenard
dom/media/BufferReader.h
dom/media/DOMMediaStream.cpp
dom/media/GetUserMediaRequest.cpp
dom/media/MediaCache.cpp
dom/media/MediaCache.h
dom/media/MediaDecoderStateMachine.cpp
dom/media/MediaRecorder.cpp
dom/media/MediaStreamGraph.cpp
dom/media/StreamTracks.h
dom/media/Tracing.cpp
dom/media/VideoUtils.h
dom/media/eme/MediaKeyMessageEvent.cpp
dom/media/encoder/TrackEncoder.h
dom/media/gmp/GMPContentParent.cpp
dom/media/gmp/GMPTimerParent.h
dom/media/ipc/RemoteVideoDecoder.cpp
dom/media/mp4/Box.cpp
dom/media/mp4/MP4Demuxer.cpp
dom/media/mp4/MP4Metadata.cpp
dom/media/mp4/MoofParser.cpp
dom/media/ogg/OggWriter.cpp
dom/media/ogg/OpusParser.cpp
dom/media/platforms/agnostic/TheoraDecoder.cpp
dom/media/platforms/apple/AppleATDecoder.cpp
dom/media/wave/WaveDemuxer.cpp
dom/media/webm/EbmlComposer.cpp
dom/media/webm/NesteggPacketHolder.h
dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
dom/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
dom/media/webspeech/synth/ipc/SpeechSynthesisParent.h
dom/media/webspeech/synth/nsSynthVoiceRegistry.cpp
--- a/dom/media/BufferReader.h
+++ b/dom/media/BufferReader.h
@@ -14,17 +14,22 @@
 
 namespace mozilla {
 
 extern mozilla::LazyLogModule gMP4MetadataLog;
 
 class MOZ_RAII BufferReader
 {
 public:
-  BufferReader() : mPtr(nullptr), mRemaining(0) {}
+  BufferReader()
+    : mPtr(nullptr)
+    , mRemaining(0)
+    , mLength(0)
+  {
+  }
   BufferReader(const uint8_t* aData, size_t aSize)
     : mPtr(aData), mRemaining(aSize), mLength(aSize)
   {
   }
   template<size_t S>
   explicit BufferReader(const AutoTArray<uint8_t, S>& aData)
     : mPtr(aData.Elements()), mRemaining(aData.Length()), mLength(aData.Length())
   {
--- a/dom/media/DOMMediaStream.cpp
+++ b/dom/media/DOMMediaStream.cpp
@@ -422,17 +422,17 @@ NS_INTERFACE_MAP_END_INHERITING(DOMMedia
 
 DOMMediaStream::DOMMediaStream(nsPIDOMWindowInner* aWindow,
                                MediaStreamTrackSourceGetter* aTrackSourceGetter)
   : mLogicalStreamStartTime(0), mWindow(aWindow),
     mInputStream(nullptr), mOwnedStream(nullptr), mPlaybackStream(nullptr),
     mTracksPendingRemoval(0), mTrackSourceGetter(aTrackSourceGetter),
     mPlaybackTrackListener(MakeAndAddRef<PlaybackTrackListener>(this)),
     mTracksCreated(false), mNotifiedOfMediaStreamGraphShutdown(false),
-    mActive(false), mSetInactiveOnFinish(false)
+    mActive(false), mSetInactiveOnFinish(false), mCORSMode(CORS_NONE)
 {
   nsresult rv;
   nsCOMPtr<nsIUUIDGenerator> uuidgen =
     do_GetService("@mozilla.org/uuid-generator;1", &rv);
 
   if (NS_SUCCEEDED(rv) && uuidgen) {
     nsID uuid;
     memset(&uuid, 0, sizeof(uuid));
--- a/dom/media/GetUserMediaRequest.cpp
+++ b/dom/media/GetUserMediaRequest.cpp
@@ -27,18 +27,22 @@ GetUserMediaRequest::GetUserMediaRequest
   , mIsHandlingUserInput(aIsHandlingUserInput)
 {
 }
 
 GetUserMediaRequest::GetUserMediaRequest(
     nsPIDOMWindowInner* aInnerWindow,
     const nsAString& aRawId,
     const nsAString& aMediaSource)
-  : mRawID(aRawId)
+  : mInnerWindowID(0)
+  , mOuterWindowID(0)
+  , mRawID(aRawId)
   , mMediaSource(aMediaSource)
+  , mIsSecure(false)
+  , mIsHandlingUserInput(false)
 {
   if (aInnerWindow && aInnerWindow->GetOuterWindow()) {
     mOuterWindowID = aInnerWindow->GetOuterWindow()->WindowID();
   }
 }
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(GetUserMediaRequest)
 NS_IMPL_CYCLE_COLLECTING_ADDREF(GetUserMediaRequest)
--- a/dom/media/MediaCache.cpp
+++ b/dom/media/MediaCache.cpp
@@ -517,16 +517,17 @@ MediaCacheStream::MediaCacheStream(Chann
   : mMediaCache(nullptr)
   , mClient(aClient)
   , mIsTransportSeekable(false)
   , mCacheSuspended(false)
   , mChannelEnded(false)
   , mStreamOffset(0)
   , mPlaybackBytesPerSecond(10000)
   , mPinCount(0)
+  , mNotifyDataEndedStatus(NS_ERROR_NOT_INITIALIZED)
   , mMetadataInPartialBlockBuffer(false)
   , mIsPrivateBrowsing(aIsPrivateBrowsing)
 {
 }
 
 size_t MediaCacheStream::SizeOfExcludingThis(
                                 MallocSizeOf aMallocSizeOf) const
 {
--- a/dom/media/MediaCache.h
+++ b/dom/media/MediaCache.h
@@ -411,17 +411,22 @@ private:
 #else
     void Verify() {}
 #endif
 
     size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
 
   private:
     struct Entry : public nsUint32HashKey {
-      explicit Entry(KeyTypePointer aKey) : nsUint32HashKey(aKey) { }
+      explicit Entry(KeyTypePointer aKey)
+        : nsUint32HashKey(aKey)
+        , mNextBlock(0)
+        , mPrevBlock(0)
+      {
+      }
       Entry(const Entry& toCopy) : nsUint32HashKey(&toCopy.GetKey()),
         mNextBlock(toCopy.mNextBlock), mPrevBlock(toCopy.mPrevBlock) {}
 
       int32_t mNextBlock;
       int32_t mPrevBlock;
     };
     nsTHashtable<Entry> mEntries;
 
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -815,17 +815,20 @@ private:
  *   COMPLETED if the new playback position is the end of the media resource.
  *   NextFrameSeekingState if completing a NextFrameSeekingFromDormantState.
  *   DECODING otherwise.
  */
 class MediaDecoderStateMachine::SeekingState
   : public MediaDecoderStateMachine::StateObject
 {
 public:
-  explicit SeekingState(Master* aPtr) : StateObject(aPtr) { }
+  explicit SeekingState(Master* aPtr)
+    : StateObject(aPtr)
+    , mVisibility(static_cast<EventVisibility>(0))
+  { }
 
   RefPtr<MediaDecoder::SeekPromise> Enter(SeekJob&& aSeekJob,
                                           EventVisibility aVisibility)
   {
     mSeekJob = std::move(aSeekJob);
     mVisibility = aVisibility;
 
     // Suppressed visibility comes from two cases: (1) leaving dormant state,
--- a/dom/media/MediaRecorder.cpp
+++ b/dom/media/MediaRecorder.cpp
@@ -1251,29 +1251,35 @@ MediaRecorder::~MediaRecorder()
   UnRegisterActivityObserver();
 }
 
 MediaRecorder::MediaRecorder(DOMMediaStream& aSourceMediaStream,
                              nsPIDOMWindowInner* aOwnerWindow)
   : DOMEventTargetHelper(aOwnerWindow)
   , mAudioNodeOutput(0)
   , mState(RecordingState::Inactive)
+  , mAudioBitsPerSecond(0)
+  , mVideoBitsPerSecond(0)
+  , mBitsPerSecond(0)
 {
   MOZ_ASSERT(aOwnerWindow);
   mDOMStream = &aSourceMediaStream;
 
   RegisterActivityObserver();
 }
 
 MediaRecorder::MediaRecorder(AudioNode& aSrcAudioNode,
                              uint32_t aSrcOutput,
                              nsPIDOMWindowInner* aOwnerWindow)
   : DOMEventTargetHelper(aOwnerWindow)
   , mAudioNodeOutput(aSrcOutput)
   , mState(RecordingState::Inactive)
+  , mAudioBitsPerSecond(0)
+  , mVideoBitsPerSecond(0)
+  , mBitsPerSecond(0)
 {
   MOZ_ASSERT(aOwnerWindow);
 
   mAudioNode = &aSrcAudioNode;
 
   RegisterActivityObserver();
 }
 
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -3595,16 +3595,17 @@ ProcessedMediaStream::DestroyImpl()
   // MediaStreamGraphImpl::RemoveStreamGraphThread() will also call
   // SetStreamOrderDirty(), for other reasons.
 }
 
 MediaStreamGraphImpl::MediaStreamGraphImpl(GraphDriverType aDriverRequested,
                                            TrackRate aSampleRate,
                                            AbstractThread* aMainThread)
   : MediaStreamGraph(aSampleRate)
+  , mFirstCycleBreaker(0)
   , mPortCount(0)
   , mInputWanted(false)
   , mInputDeviceID(-1)
   , mOutputWanted(true)
   , mOutputDeviceID(-1)
   , mNeedAnotherIteration(false)
   , mGraphDriverAsleep(false)
   , mMonitor("MediaStreamGraphImpl")
--- a/dom/media/StreamTracks.h
+++ b/dom/media/StreamTracks.h
@@ -245,17 +245,22 @@ public:
 
   class MOZ_STACK_CLASS TrackIter final
   {
   public:
     /**
      * Iterate through the tracks of aBuffer in order of ID.
      */
     explicit TrackIter(const StreamTracks& aBuffer) :
-      mBuffer(&aBuffer.mTracks), mIndex(0), mMatchType(false) {}
+      mBuffer(&aBuffer.mTracks),
+      mIndex(0),
+      mType(static_cast<MediaSegment::Type>(0)),
+      mMatchType(false)
+      {
+      }
     /**
      * Iterate through the tracks of aBuffer with type aType, in order of ID.
      */
     TrackIter(const StreamTracks& aBuffer, MediaSegment::Type aType) :
       mBuffer(&aBuffer.mTracks), mIndex(0), mType(aType), mMatchType(true) { FindMatch(); }
     bool IsEnded() const { return mIndex >= mBuffer->Length(); }
     void Next()
     {
--- a/dom/media/Tracing.cpp
+++ b/dom/media/Tracing.cpp
@@ -56,16 +56,17 @@ AutoTracer::AutoTracer(AsyncLogger& aLog
                        const char* aLocation,
                        uint64_t aPID,
                        uint64_t aTID,
                        EventType aEventType,
                        uint64_t aFrames,
                        uint64_t aSampleRate)
   : mLogger(aLogger)
   , mLocation(aLocation)
+  , mComment(nullptr)
   , mEventType(aEventType)
   , mPID(aPID)
   , mTID(aTID)
 {
   MOZ_ASSERT(aEventType == EventType::BUDGET);
 
   if (aLogger.Enabled()) {
     float durationUS = (static_cast<float>(aFrames) / aSampleRate) * 1e6;
--- a/dom/media/VideoUtils.h
+++ b/dom/media/VideoUtils.h
@@ -481,16 +481,19 @@ public:
     DereferencedType operator*()
     {
       return Substring(mStart, mEnd);
     }
   private:
     friend class StringListRange;
     Iterator(const CharType* aRangeStart, uint32_t aLength)
       : mRangeEnd(aRangeStart + aLength)
+      , mStart(nullptr)
+      , mEnd(nullptr)
+      , mComma(nullptr)
     {
       SearchItemAt(aRangeStart);
     }
     void SearchItemAt(Pointer start)
     {
       // First, skip leading whitespace.
       for (Pointer p = start; ; ++p) {
         if (p >= mRangeEnd) {
--- a/dom/media/eme/MediaKeyMessageEvent.cpp
+++ b/dom/media/eme/MediaKeyMessageEvent.cpp
@@ -35,16 +35,17 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_IN
   mozilla::DropJSObjects(this);
 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MediaKeyMessageEvent)
 NS_INTERFACE_MAP_END_INHERITING(Event)
 
 MediaKeyMessageEvent::MediaKeyMessageEvent(EventTarget* aOwner)
   : Event(aOwner, nullptr, nullptr)
+  , mMessageType(static_cast<MediaKeyMessageType>(0))
 {
   mozilla::HoldJSObjects(this);
 }
 
 MediaKeyMessageEvent::~MediaKeyMessageEvent()
 {
   mMessage = nullptr;
   mozilla::DropJSObjects(this);
--- a/dom/media/encoder/TrackEncoder.h
+++ b/dom/media/encoder/TrackEncoder.h
@@ -218,16 +218,17 @@ protected:
 class AudioTrackEncoder : public TrackEncoder
 {
 public:
   explicit AudioTrackEncoder(TrackRate aTrackRate)
     : TrackEncoder(aTrackRate)
     , mChannels(0)
     , mSamplingRate(0)
     , mAudioBitrate(0)
+    , mDirectConnected(false)
   {}
 
   /**
    * Suspends encoding from mCurrentTime, i.e., all audio data until the next
    * Resume() will be dropped.
    */
   void Suspend(TimeStamp aTime) override;
 
--- a/dom/media/gmp/GMPContentParent.cpp
+++ b/dom/media/gmp/GMPContentParent.cpp
@@ -29,16 +29,17 @@ extern LogModule* GetGMPLog();
 #undef __CLASS__
 #endif
 #define __CLASS__ "GMPContentParent"
 
 namespace gmp {
 
 GMPContentParent::GMPContentParent(GMPParent* aParent)
   : mParent(aParent)
+  , mPluginId(0)
 {
   if (mParent) {
     SetDisplayName(mParent->GetDisplayName());
     SetPluginId(mParent->GetPluginId());
   }
 }
 
 GMPContentParent::~GMPContentParent()
--- a/dom/media/gmp/GMPTimerParent.h
+++ b/dom/media/gmp/GMPTimerParent.h
@@ -30,17 +30,18 @@ protected:
   void ActorDestroy(ActorDestroyReason aWhy) override;
 
 private:
   ~GMPTimerParent() {}
 
   static void GMPTimerExpired(nsITimer *aTimer, void *aClosure);
 
   struct Context {
-    Context() {
+    Context()
+      : mId(0) {
       MOZ_COUNT_CTOR(Context);
     }
     ~Context() {
       MOZ_COUNT_DTOR(Context);
     }
     nsCOMPtr<nsITimer> mTimer;
     RefPtr<GMPTimerParent> mParent; // Note: live timers keep the GMPTimerParent alive.
     uint32_t mId;
--- a/dom/media/ipc/RemoteVideoDecoder.cpp
+++ b/dom/media/ipc/RemoteVideoDecoder.cpp
@@ -20,16 +20,18 @@ namespace dom {
 using base::Thread;
 using namespace ipc;
 using namespace layers;
 using namespace gfx;
 
 RemoteVideoDecoder::RemoteVideoDecoder()
   : mActor(new VideoDecoderChild())
   , mDescription("RemoteVideoDecoder")
+  , mIsHardwareAccelerated(false)
+  , mConversion(MediaDataDecoder::ConversionRequired::kNeedNone)
 {
 }
 
 RemoteVideoDecoder::~RemoteVideoDecoder()
 {
   // We're about to be destroyed and drop our ref to
   // VideoDecoderChild. Make sure we put a ref into the
   // task queue for the VideoDecoderChild thread to keep
--- a/dom/media/mp4/Box.cpp
+++ b/dom/media/mp4/Box.cpp
@@ -118,16 +118,18 @@ Box::Box(BoxContext* aContext, uint64_t 
     return;
   }
 
   mRange = boxRange;
 }
 
 Box::Box()
   : mContext(nullptr)
+  , mBodyOffset(0)
+  , mChildOffset(0)
   , mParent(nullptr)
 {}
 
 Box
 Box::Next() const
 {
   MOZ_ASSERT(IsAvailable());
   return Box(mContext, mRange.mEnd, mParent);
--- a/dom/media/mp4/MP4Demuxer.cpp
+++ b/dom/media/mp4/MP4Demuxer.cpp
@@ -123,16 +123,17 @@ AccumulateSPSTelemetry(const MediaByteBu
   }
 
   return true;
 }
 
 MP4Demuxer::MP4Demuxer(MediaResource* aResource)
   : mResource(aResource)
   , mStream(new ResourceStream(aResource))
+  , mIsSeekable(false)
 {
   DDLINKCHILD("resource", aResource);
   DDLINKCHILD("stream", mStream.get());
 }
 
 RefPtr<MP4Demuxer::InitPromise>
 MP4Demuxer::Init()
 {
--- a/dom/media/mp4/MP4Metadata.cpp
+++ b/dom/media/mp4/MP4Metadata.cpp
@@ -21,16 +21,17 @@
 
 using mozilla::media::TimeUnit;
 
 namespace mozilla {
 LazyLogModule gMP4MetadataLog("MP4Metadata");
 
 IndiceWrapper::IndiceWrapper(Mp4parseByteData& aIndice)
 {
+  mIndice.data = nullptr;
   mIndice.length = aIndice.length;
   mIndice.indices = aIndice.indices;
 }
 
 size_t
 IndiceWrapper::Length() const
 {
   return mIndice.length;
--- a/dom/media/mp4/MoofParser.cpp
+++ b/dom/media/mp4/MoofParser.cpp
@@ -682,16 +682,17 @@ Moof::ParseTrun(Box& aBox, Tfhd& aTfhd, 
   mMaxRoundingError += roundTime;
 
   *aDecodeTime = decodeTime;
 
   return Ok();
 }
 
 Tkhd::Tkhd(Box& aBox)
+  : mTrackId(0)
 {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Tkhd, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
@@ -722,16 +723,20 @@ Tkhd::Parse(Box& aBox)
     MOZ_TRY_VAR(reserved, reader->ReadU32());
     NS_ASSERTION(!reserved, "reserved should be 0");
     MOZ_TRY_VAR(mDuration, reader->ReadU64());
   }
   return Ok();
 }
 
 Mvhd::Mvhd(Box& aBox)
+  : mCreationTime(0)
+  , mModificationTime(0)
+  , mTimescale(0)
+  , mDuration(0)
 {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Mvhd, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
@@ -764,16 +769,22 @@ Mvhd::Parse(Box& aBox)
 }
 
 Mdhd::Mdhd(Box& aBox)
   : Mvhd(aBox)
 {
 }
 
 Trex::Trex(Box& aBox)
+  : mFlags(0)
+  , mTrackId(0)
+  , mDefaultSampleDescriptionIndex(0)
+  , mDefaultSampleDuration(0)
+  , mDefaultSampleSize(0)
+  , mDefaultSampleFlags(0)
 {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Trex, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
@@ -788,16 +799,17 @@ Trex::Parse(Box& aBox)
   MOZ_TRY_VAR(mDefaultSampleSize, reader->ReadU32());
   MOZ_TRY_VAR(mDefaultSampleFlags, reader->ReadU32());
 
   return Ok();
 }
 
 Tfhd::Tfhd(Box& aBox, Trex& aTrex)
   : Trex(aTrex)
+  , mBaseDataOffset(0)
 {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Tfhd, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
@@ -827,16 +839,17 @@ Tfhd::Parse(Box& aBox)
   if (mFlags & 0x20) {
     MOZ_TRY_VAR(mDefaultSampleFlags, reader->ReadU32());
   }
 
   return Ok();
 }
 
 Tfdt::Tfdt(Box& aBox)
+  : mBaseMediaDecodeTime(0)
 {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Tfdt, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
@@ -994,16 +1007,17 @@ Saio::Parse(Box& aBox)
       MOZ_TRY_VAR(offset, reader->ReadU64());
       MOZ_ALWAYS_TRUE(mOffsets.AppendElement(offset, fallible));
     }
   }
   return Ok();
 }
 
 Sbgp::Sbgp(Box& aBox)
+  : mGroupingTypeParam(0)
 {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Sbgp, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
--- a/dom/media/ogg/OggWriter.cpp
+++ b/dom/media/ogg/OggWriter.cpp
@@ -6,17 +6,21 @@
 #include "prtime.h"
 #include "GeckoProfiler.h"
 
 #undef LOG
 #define LOG(args, ...)
 
 namespace mozilla {
 
-OggWriter::OggWriter() : ContainerWriter()
+OggWriter::OggWriter()
+  : ContainerWriter()
+  , mOggStreamState()
+  , mOggPage()
+  , mPacket()
 {
   if (NS_FAILED(Init())) {
     LOG("ERROR! Fail to initialize the OggWriter.");
   }
 }
 
 OggWriter::~OggWriter()
 {
--- a/dom/media/ogg/OpusParser.cpp
+++ b/dom/media/ogg/OpusParser.cpp
@@ -27,17 +27,18 @@ OpusParser::OpusParser():
   mPreSkip(0),
 #ifdef MOZ_SAMPLE_TYPE_FLOAT32
   mGain(1.0f),
 #else
   mGain_Q16(65536),
 #endif
   mChannelMapping(0),
   mStreams(0),
-  mCoupledStreams(0)
+  mCoupledStreams(0),
+  mPrevPacketGranulepos(0)
 { }
 
 bool OpusParser::DecodeHeader(unsigned char* aData, size_t aLength)
 {
     if (aLength < 19 || memcmp(aData, "OpusHead", 8)) {
       OPUS_LOG(LogLevel::Debug, ("Invalid Opus file: unrecognized header"));
       return false;
     }
--- a/dom/media/platforms/agnostic/TheoraDecoder.cpp
+++ b/dom/media/platforms/agnostic/TheoraDecoder.cpp
@@ -42,16 +42,18 @@ ogg_packet InitTheoraPacket(const unsign
   packet.packetno = aPacketNo;
   return packet;
 }
 
 TheoraDecoder::TheoraDecoder(const CreateDecoderParams& aParams)
   : mImageAllocator(aParams.mKnowsCompositor)
   , mImageContainer(aParams.mImageContainer)
   , mTaskQueue(aParams.mTaskQueue)
+  , mTheoraInfo{}
+  , mTheoraComment{}
   , mTheoraSetupInfo(nullptr)
   , mTheoraDecoderContext(nullptr)
   , mPacketCount(0)
   , mInfo(aParams.VideoConfig())
 {
   MOZ_COUNT_CTOR(TheoraDecoder);
 }
 
--- a/dom/media/platforms/apple/AppleATDecoder.cpp
+++ b/dom/media/platforms/apple/AppleATDecoder.cpp
@@ -23,16 +23,17 @@
 namespace mozilla {
 
 AppleATDecoder::AppleATDecoder(const AudioInfo& aConfig,
                                TaskQueue* aTaskQueue)
   : mConfig(aConfig)
   , mFileStreamError(false)
   , mTaskQueue(aTaskQueue)
   , mConverter(nullptr)
+  , mOutputFormat()
   , mStream(nullptr)
   , mParsedFramesForAACMagicCookie(0)
   , mErrored(false)
 {
   MOZ_COUNT_CTOR(AppleATDecoder);
   LOG("Creating Apple AudioToolbox decoder");
   LOG("Audio Decoder configuration: %s %d Hz %d channels %d bits per channel",
       mConfig.mMimeType.get(),
--- a/dom/media/wave/WaveDemuxer.cpp
+++ b/dom/media/wave/WaveDemuxer.cpp
@@ -72,20 +72,22 @@ WAVDemuxer::IsSeekable() const
 // WAVTrackDemuxer
 
 WAVTrackDemuxer::WAVTrackDemuxer(MediaResource* aSource)
   : mSource(aSource)
   , mOffset(0)
   , mFirstChunkOffset(0)
   , mNumParsedChunks(0)
   , mChunkIndex(0)
+  , mDataLength(0)
   , mTotalChunkLen(0)
   , mSamplesPerChunk(0)
   , mSamplesPerSecond(0)
   , mChannels(0)
+  , mSampleFormat(0)
 {
   DDLINKCHILD("source", aSource);
   Reset();
 }
 
 bool
 WAVTrackDemuxer::Init()
 {
--- a/dom/media/webm/EbmlComposer.cpp
+++ b/dom/media/webm/EbmlComposer.cpp
@@ -220,13 +220,15 @@ EbmlComposer::ExtractBuffer(nsTArray<nsT
 EbmlComposer::EbmlComposer()
   : mFlushState(FLUSH_NONE)
   , mClusterHeaderIndex(0)
   , mClusterLengthLoc(0)
   , mCodecDelay(0)
   , mClusterTimecode(0)
   , mWidth(0)
   , mHeight(0)
+  , mDisplayWidth(0)
+  , mDisplayHeight(0)
   , mSampleFreq(0)
   , mChannels(0)
 {}
 
 } // namespace mozilla
--- a/dom/media/webm/NesteggPacketHolder.h
+++ b/dom/media/webm/NesteggPacketHolder.h
@@ -19,16 +19,17 @@ namespace mozilla {
 class NesteggPacketHolder {
 public:
   NS_INLINE_DECL_THREADSAFE_REFCOUNTING(NesteggPacketHolder)
   NesteggPacketHolder()
     : mPacket(nullptr)
     , mOffset(-1)
     , mTimestamp(-1)
     , mDuration(-1)
+    , mTrack(0)
     , mIsKeyframe(false) {}
 
   bool Init(nestegg_packet* aPacket, int64_t aOffset, unsigned aTrack, bool aIsKeyframe)
   {
     uint64_t timestamp_ns;
     if (nestegg_packet_tstamp(aPacket, &timestamp_ns) == -1) {
       return false;
     }
--- a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
+++ b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
@@ -104,16 +104,17 @@ NS_INTERFACE_MAP_END
 NS_IMPL_CYCLE_COLLECTING_ADDREF(SpeechTaskCallback)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(SpeechTaskCallback)
 
 SpeechTaskCallback::SpeechTaskCallback(nsISpeechTask* aTask,
                                        NSSpeechSynthesizer* aSynth,
                                        const nsTArray<size_t>& aOffsets)
   : mTask(aTask)
   , mSpeechSynthesizer(aSynth)
+  , mCurrentIndex(0)
   , mOffsets(aOffsets)
 {
   mDelegate = [[SpeechDelegate alloc] initWithCallback:this];
   [mSpeechSynthesizer setDelegate:mDelegate];
   mStartingTime = TimeStamp::Now();
 }
 
 SpeechTaskCallback::~SpeechTaskCallback()
--- a/dom/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
+++ b/dom/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
@@ -157,16 +157,17 @@ SpeechSynthesisRequestChild::RecvOnMark(
   mTask->DispatchMarkImpl(aName, aElapsedTime, aCharIndex);
   return IPC_OK();
 }
 
 // SpeechTaskChild
 
 SpeechTaskChild::SpeechTaskChild(SpeechSynthesisUtterance* aUtterance, bool aIsChrome)
   : nsSpeechTask(aUtterance, aIsChrome)
+  , mActor(nullptr)
 {
 }
 
 NS_IMETHODIMP
 SpeechTaskChild::Setup(nsISpeechTaskCallback* aCallback)
 {
   MOZ_CRASH("Should never be called from child");
 }
--- a/dom/media/webspeech/synth/ipc/SpeechSynthesisParent.h
+++ b/dom/media/webspeech/synth/ipc/SpeechSynthesisParent.h
@@ -75,17 +75,21 @@ protected:
   mozilla::ipc::IPCResult Recv__delete__() override;
 };
 
 class SpeechTaskParent : public nsSpeechTask
 {
   friend class SpeechSynthesisRequestParent;
 public:
   SpeechTaskParent(float aVolume, const nsAString& aUtterance, bool aIsChrome)
-    : nsSpeechTask(aVolume, aUtterance, aIsChrome) {}
+    : nsSpeechTask(aVolume
+    , aUtterance, aIsChrome)
+    , mActor(nullptr)
+    {
+    }
 
   nsresult DispatchStartImpl(const nsAString& aUri) override;
 
   nsresult DispatchEndImpl(float aElapsedTime, uint32_t aCharIndex) override;
 
   nsresult DispatchPauseImpl(float aElapsedTime, uint32_t aCharIndex) override;
 
   nsresult DispatchResumeImpl(float aElapsedTime, uint32_t aCharIndex) override;
--- a/dom/media/webspeech/synth/nsSynthVoiceRegistry.cpp
+++ b/dom/media/webspeech/synth/nsSynthVoiceRegistry.cpp
@@ -113,17 +113,18 @@ private:
 public:
   GlobalQueueItem(VoiceData* aVoice, nsSpeechTask* aTask, const nsAString& aText,
                   const float& aVolume, const float& aRate, const float& aPitch)
     : mVoice(aVoice)
     , mTask(aTask)
     , mText(aText)
     , mVolume(aVolume)
     , mRate(aRate)
-    , mPitch(aPitch) {}
+    , mPitch(aPitch)
+    , mIsLocal(false) {}
 
   NS_INLINE_DECL_REFCOUNTING(GlobalQueueItem)
 
   RefPtr<VoiceData> mVoice;
 
   RefPtr<nsSpeechTask> mTask;
 
   nsString mText;