Bug 1471588 - Trace track and stream media consumers. r?padenot draft
authorAndreas Pehrson <pehrsons@mozilla.com>
Wed, 27 Jun 2018 18:25:49 +0200
changeset 819616 e430563150fdd74c5df994a2f1e6ab2a0bee4eb8
parent 819615 209e27cc11d0921624f5436df1eb46aec60a7cf3
push id116598
push userbmo:apehrson@mozilla.com
push dateWed, 18 Jul 2018 08:46:17 +0000
reviewerspadenot
bugs1471588
milestone63.0a1
Bug 1471588 - Trace track and stream media consumers. r?padenot MozReview-Commit-ID: DDkVUEHi0dg
dom/media/VideoFrameContainer.cpp
dom/media/encoder/MediaEncoder.cpp
dom/media/encoder/moz.build
media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
--- a/dom/media/VideoFrameContainer.cpp
+++ b/dom/media/VideoFrameContainer.cpp
@@ -2,16 +2,17 @@
 /* vim:set ts=2 sw=2 sts=2 et cindent: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "VideoFrameContainer.h"
 #include "mozilla/Telemetry.h"
 #include "MediaDecoderOwner.h"
+#include "Tracing.h"
 
 using namespace mozilla::layers;
 
 namespace mozilla {
 static LazyLogModule gVideoFrameContainerLog("VideoFrameContainer");
 #define CONTAINER_LOG(type, msg) MOZ_LOG(gVideoFrameContainerLog, type, msg)
 
 #define NS_DispatchToMainThread(...) CompileError_UseAbstractMainThreadInstead
@@ -113,16 +114,18 @@ public:
     return NS_OK;
   }
 private:
   RefPtr<VideoFrameContainer> mVideoFrameContainer;
 };
 
 void VideoFrameContainer::SetCurrentFrames(const VideoSegment& aSegment)
 {
+  TRACE();
+
   if (aSegment.IsEmpty()) {
     return;
   }
 
   MutexAutoLock lock(mMutex);
   AutoTimer<Telemetry::VFC_SETVIDEOSEGMENT_LOCK_HOLD_MS> lockHold;
 
   // Collect any new frames produced in this iteration.
--- a/dom/media/encoder/MediaEncoder.cpp
+++ b/dom/media/encoder/MediaEncoder.cpp
@@ -22,16 +22,17 @@
 #include "mozilla/StaticPtr.h"
 #include "mozilla/TaskQueue.h"
 #include "mozilla/Unused.h"
 #include "nsIPrincipal.h"
 #include "nsMimeTypes.h"
 #include "OggWriter.h"
 #include "OpusTrackEncoder.h"
 #include "TimeUnits.h"
+#include "Tracing.h"
 
 #ifdef MOZ_WEBM_ENCODER
 #include "VP8TrackEncoder.h"
 #include "WebMWriter.h"
 #endif
 
 #ifdef LOG
 #undef LOG
@@ -84,16 +85,17 @@ public:
       mEncoderThread = nullptr;
     }
   }
 
   void NotifyQueuedChanges(MediaStreamGraph* aGraph,
                            StreamTime aTrackOffset,
                            const MediaSegment& aQueuedMedia) override
   {
+    TRACE_COMMENT("Encoder %p", mEncoder.get());
     MOZ_ASSERT(mEncoder);
     MOZ_ASSERT(mEncoderThread);
 
     if (mShutdown) {
       return;
     }
 
     if (!mInitialized) {
@@ -132,16 +134,17 @@ public:
     MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv));
     Unused << rv;
   }
 
   void NotifyRealtimeTrackData(MediaStreamGraph* aGraph,
                                StreamTime aTrackOffset,
                                const MediaSegment& aMedia) override
   {
+    TRACE_COMMENT("Encoder %p", mEncoder.get());
     MOZ_ASSERT(mEncoder);
     MOZ_ASSERT(mEncoderThread);
 
     if (mShutdown) {
       return;
     }
 
     const AudioSegment& audio = static_cast<const AudioSegment&>(aMedia);
@@ -244,16 +247,17 @@ public:
       mEncoderThread = nullptr;
     }
   }
 
   void NotifyQueuedChanges(MediaStreamGraph* aGraph,
                            StreamTime aTrackOffset,
                            const MediaSegment& aQueuedMedia) override
   {
+    TRACE_COMMENT("Encoder %p", mEncoder.get());
     MOZ_ASSERT(mEncoder);
     MOZ_ASSERT(mEncoderThread);
 
     if (mShutdown) {
       return;
     }
 
     if (!mInitialized) {
@@ -286,16 +290,17 @@ public:
           mEncoder, &VideoTrackEncoder::AdvanceCurrentTime,
           aQueuedMedia.GetDuration()));
     MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv));
     Unused << rv;
   }
 
   void SetCurrentFrames(const VideoSegment& aMedia) override
   {
+    TRACE_COMMENT("Encoder %p", mEncoder.get());
     MOZ_ASSERT(mEncoder);
     MOZ_ASSERT(mEncoderThread);
 
     if (mShutdown) {
       return;
     }
 
     VideoSegment copy;
--- a/dom/media/encoder/moz.build
+++ b/dom/media/encoder/moz.build
@@ -24,16 +24,18 @@ UNIFIED_SOURCES += [
 
 if CONFIG['MOZ_WEBM_ENCODER']:
     EXPORTS += ['VP8TrackEncoder.h',
     ]
     UNIFIED_SOURCES += ['VP8TrackEncoder.cpp',
     ]
     LOCAL_INCLUDES += ['/media/libyuv/libyuv/include']
 
+DEFINES['TRACING'] = True
+
 FINAL_LIBRARY = 'xul'
 
 # These includes are from Android JB, for use of MediaCodec.
 LOCAL_INCLUDES += ['/ipc/chromium/src']
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
 # Suppress some GCC warnings being treated as errors:
--- a/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
+++ b/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
@@ -1725,16 +1725,18 @@ MediaPipelineTransmit::PipelineListener:
 {
   CSFLogDebug(LOGTAG, "MediaPipeline::NotifyQueuedChanges()");
 
   if (aQueuedMedia.GetType() == MediaSegment::VIDEO) {
     // We always get video from SetCurrentFrames().
     return;
   }
 
+  TRACE_AUDIO_CALLBACK_COMMENT("Audio");
+
   if (mDirectConnect) {
     // ignore non-direct data if we're also getting direct data
     return;
   }
 
   size_t rate;
   if (aGraph) {
     rate = aGraph->GraphRate();