LCOV - code coverage report
Current view: top level - dom/media/webm - WebMWriter.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 41 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 6 0.0 %
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 "WebMWriter.h"
       7             : #include "EbmlComposer.h"
       8             : #include "GeckoProfiler.h"
       9             : #include "OpusTrackEncoder.h"
      10             : 
      11             : namespace mozilla {
      12             : 
      13           0 : WebMWriter::WebMWriter(uint32_t aTrackTypes) : ContainerWriter()
      14             : {
      15           0 :   mMetadataRequiredFlag = aTrackTypes;
      16           0 :   mEbmlComposer = new EbmlComposer();
      17           0 : }
      18             : 
      19           0 : WebMWriter::~WebMWriter()
      20             : {
      21             :   // Out-of-line dtor so mEbmlComposer nsAutoPtr can delete a complete type.
      22           0 : }
      23             : 
      24             : nsresult
      25           0 : WebMWriter::WriteEncodedTrack(const EncodedFrameContainer& aData,
      26             :                               uint32_t aFlags)
      27             : {
      28           0 :   AUTO_PROFILER_LABEL("WebMWriter::WriteEncodedTrack", OTHER);
      29           0 :   for (uint32_t i = 0 ; i < aData.GetEncodedFrames().Length(); i++) {
      30           0 :     mEbmlComposer->WriteSimpleBlock(aData.GetEncodedFrames().ElementAt(i).get());
      31             :   }
      32           0 :   return NS_OK;
      33             : }
      34             : 
      35             : nsresult
      36           0 : WebMWriter::GetContainerData(nsTArray<nsTArray<uint8_t> >* aOutputBufs,
      37             :                              uint32_t aFlags)
      38             : {
      39           0 :   AUTO_PROFILER_LABEL("WebMWriter::GetContainerData", OTHER);
      40           0 :   mEbmlComposer->ExtractBuffer(aOutputBufs, aFlags);
      41           0 :   if (aFlags & ContainerWriter::FLUSH_NEEDED) {
      42           0 :     mIsWritingComplete = true;
      43             :   }
      44           0 :   return NS_OK;
      45             : }
      46             : 
      47             : nsresult
      48           0 : WebMWriter::SetMetadata(TrackMetadataBase* aMetadata)
      49             : {
      50           0 :   MOZ_ASSERT(aMetadata);
      51           0 :   AUTO_PROFILER_LABEL("WebMWriter::SetMetadata", OTHER);
      52             : 
      53           0 :   if (aMetadata->GetKind() == TrackMetadataBase::METADATA_VP8) {
      54           0 :     VP8Metadata* meta = static_cast<VP8Metadata*>(aMetadata);
      55           0 :     MOZ_ASSERT(meta, "Cannot find vp8 encoder metadata");
      56           0 :     mEbmlComposer->SetVideoConfig(meta->mWidth, meta->mHeight,
      57           0 :                                   meta->mDisplayWidth, meta->mDisplayHeight);
      58           0 :     mMetadataRequiredFlag = mMetadataRequiredFlag & ~ContainerWriter::CREATE_VIDEO_TRACK;
      59             :   }
      60             : 
      61           0 :   if (aMetadata->GetKind() == TrackMetadataBase::METADATA_VORBIS) {
      62           0 :     VorbisMetadata* meta = static_cast<VorbisMetadata*>(aMetadata);
      63           0 :     MOZ_ASSERT(meta, "Cannot find vorbis encoder metadata");
      64           0 :     mEbmlComposer->SetAudioConfig(meta->mSamplingFrequency, meta->mChannels);
      65           0 :     mEbmlComposer->SetAudioCodecPrivateData(meta->mData);
      66           0 :     mMetadataRequiredFlag = mMetadataRequiredFlag & ~ContainerWriter::CREATE_AUDIO_TRACK;
      67             :   }
      68             : 
      69           0 :   if (aMetadata->GetKind() == TrackMetadataBase::METADATA_OPUS) {
      70           0 :     OpusMetadata* meta = static_cast<OpusMetadata*>(aMetadata);
      71           0 :     MOZ_ASSERT(meta, "Cannot find Opus encoder metadata");
      72           0 :     mEbmlComposer->SetAudioConfig(meta->mSamplingFrequency, meta->mChannels);
      73           0 :     mEbmlComposer->SetAudioCodecPrivateData(meta->mIdHeader);
      74           0 :     mMetadataRequiredFlag = mMetadataRequiredFlag & ~ContainerWriter::CREATE_AUDIO_TRACK;
      75             :   }
      76             : 
      77           0 :   if (!mMetadataRequiredFlag) {
      78           0 :     mEbmlComposer->GenerateHeader();
      79             :   }
      80           0 :   return NS_OK;
      81             : }
      82             : 
      83             : } // namespace mozilla

Generated by: LCOV version 1.13