LCOV - code coverage report
Current view: top level - dom/media - MediaStreamListener.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 1 50 2.0 %
Date: 2017-07-14 16:53:18 Functions: 2 7 28.6 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
       4             :  * You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #include "MediaStreamListener.h"
       7             : 
       8             : #include "AudioSegment.h"
       9             : #include "VideoSegment.h"
      10             : #include "StreamTracks.h"
      11             : 
      12             : namespace mozilla {
      13             : 
      14             : #ifdef LOG
      15             : #undef LOG
      16             : #endif
      17             : 
      18             : #define LOG(type, msg) MOZ_LOG(gMediaStreamGraphLog, type, msg)
      19             : 
      20             : void
      21           0 : DirectMediaStreamTrackListener::MirrorAndDisableSegment(AudioSegment& aFrom,
      22             :                                                         AudioSegment& aTo)
      23             : {
      24           0 :   aTo.Clear();
      25           0 :   aTo.AppendNullData(aFrom.GetDuration());
      26           0 : }
      27             : 
      28             : void
      29           0 : DirectMediaStreamTrackListener::MirrorAndDisableSegment(VideoSegment& aFrom,
      30             :                                                         VideoSegment& aTo,
      31             :                                                         DisabledTrackMode aMode)
      32             : {
      33           0 :   aTo.Clear();
      34           0 :   if (aMode == DisabledTrackMode::SILENCE_BLACK) {
      35           0 :     for (VideoSegment::ChunkIterator it(aFrom); !it.IsEnded(); it.Next()) {
      36           0 :       aTo.AppendFrame(do_AddRef(it->mFrame.GetImage()),
      37             :                       it->GetDuration(),
      38           0 :                       it->mFrame.GetIntrinsicSize(),
      39           0 :                       it->GetPrincipalHandle(),
      40           0 :                       true);
      41             :     }
      42           0 :   } else if (aMode == DisabledTrackMode::SILENCE_FREEZE) {
      43           0 :     aTo.AppendNullData(aFrom.GetDuration());
      44             :   }
      45           0 : }
      46             : 
      47             : void
      48           0 : DirectMediaStreamTrackListener::NotifyRealtimeTrackDataAndApplyTrackDisabling(MediaStreamGraph* aGraph,
      49             :                                                                              StreamTime aTrackOffset,
      50             :                                                                              MediaSegment& aMedia)
      51             : {
      52           0 :   if (mDisabledFreezeCount == 0 && mDisabledBlackCount == 0) {
      53           0 :     NotifyRealtimeTrackData(aGraph, aTrackOffset, aMedia);
      54           0 :     return;
      55             :   }
      56             : 
      57           0 :   DisabledTrackMode mode = mDisabledBlackCount > 0
      58           0 :                            ? DisabledTrackMode::SILENCE_BLACK
      59           0 :                            : DisabledTrackMode::SILENCE_FREEZE;
      60           0 :   if (!mMedia) {
      61           0 :     mMedia = aMedia.CreateEmptyClone();
      62             :   }
      63           0 :   if (aMedia.GetType() == MediaSegment::AUDIO) {
      64             :     MirrorAndDisableSegment(static_cast<AudioSegment&>(aMedia),
      65           0 :                             static_cast<AudioSegment&>(*mMedia));
      66           0 :   } else if (aMedia.GetType() == MediaSegment::VIDEO) {
      67             :     MirrorAndDisableSegment(static_cast<VideoSegment&>(aMedia),
      68           0 :                             static_cast<VideoSegment&>(*mMedia),
      69           0 :                             mode);
      70             :   } else {
      71           0 :     MOZ_CRASH("Unsupported media type");
      72             :   }
      73           0 :   NotifyRealtimeTrackData(aGraph, aTrackOffset, *mMedia);
      74             : }
      75             : 
      76             : void
      77           0 : DirectMediaStreamTrackListener::IncreaseDisabled(DisabledTrackMode aMode)
      78             : {
      79           0 :   if (aMode == DisabledTrackMode::SILENCE_FREEZE) {
      80           0 :     ++mDisabledFreezeCount;
      81           0 :   } else if (aMode == DisabledTrackMode::SILENCE_BLACK) {
      82           0 :     ++mDisabledBlackCount;
      83             :   } else {
      84           0 :     MOZ_ASSERT(false, "Unknown disabled mode");
      85             :   }
      86             : 
      87           0 :   LOG(LogLevel::Debug, ("DirectMediaStreamTrackListener %p increased disabled "
      88             :                         "mode %s. Current counts are: freeze=%d, black=%d",
      89             :                         this,
      90             :                         aMode == DisabledTrackMode::SILENCE_FREEZE ? "freeze" : "black",
      91             :                         int32_t(mDisabledFreezeCount),
      92             :                         int32_t(mDisabledBlackCount)));
      93           0 : }
      94             : 
      95             : void
      96           0 : DirectMediaStreamTrackListener::DecreaseDisabled(DisabledTrackMode aMode)
      97             : {
      98           0 :   if (aMode == DisabledTrackMode::SILENCE_FREEZE) {
      99           0 :     --mDisabledFreezeCount;
     100           0 :     MOZ_ASSERT(mDisabledFreezeCount >= 0, "Double decrease");
     101           0 :   } else if (aMode == DisabledTrackMode::SILENCE_BLACK) {
     102           0 :     --mDisabledBlackCount;
     103           0 :     MOZ_ASSERT(mDisabledBlackCount >= 0, "Double decrease");
     104             :   } else {
     105           0 :     MOZ_ASSERT(false, "Unknown disabled mode");
     106             :   }
     107             : 
     108           0 :   LOG(LogLevel::Debug, ("DirectMediaStreamTrackListener %p decreased disabled "
     109             :                         "mode %s. Current counts are: freeze=%d, black=%d",
     110             :                         this,
     111             :                         aMode == DisabledTrackMode::SILENCE_FREEZE ? "freeze" : "black",
     112             :                         int32_t(mDisabledFreezeCount),
     113             :                         int32_t(mDisabledBlackCount)));
     114           0 : }
     115             : 
     116           9 : } // namespace mozilla

Generated by: LCOV version 1.13