Bug 1434946 - Report resolution change in settings already on first frame. r?jib draft
authorAndreas Pehrson <pehrsons@mozilla.com>
Thu, 01 Feb 2018 16:58:35 +0100
changeset 750463 0fbfe6dcbced7dafcdc089d076763faad50973d7
parent 750462 e2b7322606e13754302318f7b095c0a9c8c1f8cc
child 750464 b69aacbaeb5cb23a6cf97cc44097b34f9726266b
push id97667
push userbmo:apehrson@mozilla.com
push dateFri, 02 Feb 2018 10:01:06 +0000
reviewersjib
bugs1434946
milestone60.0a1
Bug 1434946 - Report resolution change in settings already on first frame. r?jib MozReview-Commit-ID: IzhdiHgVKOc
dom/media/webrtc/MediaEngineRemoteVideoSource.cpp
--- a/dom/media/webrtc/MediaEngineRemoteVideoSource.cpp
+++ b/dom/media/webrtc/MediaEngineRemoteVideoSource.cpp
@@ -39,16 +39,18 @@ MediaEngineRemoteVideoSource::MediaEngin
   , mCapEngine(aCapEngine)
   , mScary(aScary)
   , mMutex("MediaEngineRemoteVideoSource::mMutex")
   , mRescalingBufferPool(/* zero_initialize */ false,
                          /* max_number_of_buffers */ 1)
   , mSettings(MakeAndAddRef<media::Refcountable<MediaTrackSettings>>())
 {
   MOZ_ASSERT(aMediaSource != MediaSourceEnum::Other);
+  mSettings->mWidth.Construct(0);
+  mSettings->mHeight.Construct(0);
   Init();
 }
 
 void
 MediaEngineRemoteVideoSource::Init()
 {
   LOG((__PRETTY_FUNCTION__));
   AssertIsOnOwningThread();
@@ -532,17 +534,18 @@ MediaEngineRemoteVideoSource::DeliverFra
             frame_num++, aProps.width(), aProps.height(), dst_width, dst_height,
             aProps.timeStamp(), aProps.ntpTimeMs(), aProps.renderTimeMs()));
 #endif
 
   bool sizeChanged = false;
   {
     MutexAutoLock lock(mMutex);
     // implicitly releases last image
-    sizeChanged = mImage && image && mImage->GetSize() != image->GetSize();
+    sizeChanged = (!mImage && image) ||
+                  (mImage && image && mImage->GetSize() != image->GetSize());
     mImage = image.forget();
     mImageSize = mImage->GetSize();
   }
 
   if (sizeChanged) {
     NS_DispatchToMainThread(NS_NewRunnableFunction(
         "MediaEngineRemoteVideoSource::FrameSizeChange",
         [settings = mSettings, dst_width, dst_height]() mutable {