1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim:set ts=2 sw=2 sts=2 et cindent: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 #include "GonkDecoderModule.h" 7 #include "GonkVideoDecoderManager.h" 8 #include "GonkAudioDecoderManager.h" 9 #include "mozilla/DebugOnly.h" 10 #include "GonkMediaDataDecoder.h" 11 12 namespace mozilla { GonkDecoderModule()13GonkDecoderModule::GonkDecoderModule() 14 { 15 } 16 ~GonkDecoderModule()17GonkDecoderModule::~GonkDecoderModule() 18 { 19 } 20 21 already_AddRefed<MediaDataDecoder> CreateVideoDecoder(const CreateDecoderParams & aParams)22GonkDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams) 23 { 24 RefPtr<MediaDataDecoder> decoder = 25 new GonkMediaDataDecoder(new GonkVideoDecoderManager(aParams.mImageContainer, aParams.VideoConfig()), 26 aParams.mCallback); 27 return decoder.forget(); 28 } 29 30 already_AddRefed<MediaDataDecoder> CreateAudioDecoder(const CreateDecoderParams & aParams)31GonkDecoderModule::CreateAudioDecoder(const CreateDecoderParams& aParams) 32 { 33 RefPtr<MediaDataDecoder> decoder = 34 new GonkMediaDataDecoder(new GonkAudioDecoderManager(aParams.AudioConfig()), 35 aParams.mCallback); 36 return decoder.forget(); 37 } 38 39 PlatformDecoderModule::ConversionRequired DecoderNeedsConversion(const TrackInfo & aConfig) const40GonkDecoderModule::DecoderNeedsConversion(const TrackInfo& aConfig) const 41 { 42 if (aConfig.IsVideo()) { 43 return ConversionRequired::kNeedAnnexB; 44 } else { 45 return ConversionRequired::kNeedNone; 46 } 47 } 48 49 bool SupportsMimeType(const nsACString & aMimeType,DecoderDoctorDiagnostics * aDiagnostics) const50GonkDecoderModule::SupportsMimeType(const nsACString& aMimeType, 51 DecoderDoctorDiagnostics* aDiagnostics) const 52 { 53 return aMimeType.EqualsLiteral("audio/mp4a-latm") || 54 aMimeType.EqualsLiteral("audio/3gpp") || 55 aMimeType.EqualsLiteral("audio/amr-wb") || 56 aMimeType.EqualsLiteral("audio/mpeg") || 57 aMimeType.EqualsLiteral("video/mp4") || 58 aMimeType.EqualsLiteral("video/mp4v-es") || 59 aMimeType.EqualsLiteral("video/avc") || 60 aMimeType.EqualsLiteral("video/3gpp"); 61 } 62 63 } // namespace mozilla 64