Bug 1187118 part 4 - [WIP] Integrated the GIFDataDecoder into AgnosticDecoderModule; draft
authorKaku Kuo <kaku@mozilla.com>
Wed, 22 Feb 2017 11:55:09 +0800
changeset 488568 6cdb98f04f518bdc45eeda6b675ecfe536d81c02
parent 488567 4d506d9c2c7c08285b4628e307be26950f987abc
child 488569 00d7f8cd84cd160d8ed179130bfd334ebfa10d3c
push id46579
push userbmo:kaku@mozilla.com
push dateThu, 23 Feb 2017 10:26:35 +0000
bugs1187118
milestone54.0a1
Bug 1187118 part 4 - [WIP] Integrated the GIFDataDecoder into AgnosticDecoderModule; MozReview-Commit-ID: 7zX4NmZRrGK
dom/media/platforms/agnostic/AgnosticDecoderModule.cpp
--- a/dom/media/platforms/agnostic/AgnosticDecoderModule.cpp
+++ b/dom/media/platforms/agnostic/AgnosticDecoderModule.cpp
@@ -1,15 +1,16 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* 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 "AgnosticDecoderModule.h"
+#include "GIFDataDecoder.h"
 #include "OpusDecoder.h"
 #include "TheoraDecoder.h"
 #include "VPXDecoder.h"
 #include "VorbisDecoder.h"
 #include "WAVDecoder.h"
 #include "mozilla/Logging.h"
 
 namespace mozilla {
@@ -19,31 +20,34 @@ AgnosticDecoderModule::SupportsMimeType(
   const nsACString& aMimeType,
   DecoderDoctorDiagnostics* aDiagnostics) const
 {
   bool supports =
     VPXDecoder::IsVPX(aMimeType)
     || OpusDataDecoder::IsOpus(aMimeType)
     || VorbisDataDecoder::IsVorbis(aMimeType)
     || WaveDataDecoder::IsWave(aMimeType)
-    || TheoraDecoder::IsTheora(aMimeType);
+    || TheoraDecoder::IsTheora(aMimeType)
+    || GIFDataDecoder::IsGIF(aMimeType);
   MOZ_LOG(sPDMLog, LogLevel::Debug, ("Agnostic decoder %s requested type",
         supports ? "supports" : "rejects"));
   return supports;
 }
 
 already_AddRefed<MediaDataDecoder>
 AgnosticDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams)
 {
   RefPtr<MediaDataDecoder> m;
 
   if (VPXDecoder::IsVPX(aParams.mConfig.mMimeType)) {
     m = new VPXDecoder(aParams);
   } else if (TheoraDecoder::IsTheora(aParams.mConfig.mMimeType)) {
     m = new TheoraDecoder(aParams);
+  } else if (GIFDataDecoder::IsGIF(aParams.mConfig.mMimeType)) {
+    m = new GIFDataDecoder(aParams);
   }
 
   return m.forget();
 }
 
 already_AddRefed<MediaDataDecoder>
 AgnosticDecoderModule::CreateAudioDecoder(const CreateDecoderParams& aParams)
 {