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()13 GonkDecoderModule::GonkDecoderModule()
14 {
15 }
16 
~GonkDecoderModule()17 GonkDecoderModule::~GonkDecoderModule()
18 {
19 }
20 
21 already_AddRefed<MediaDataDecoder>
CreateVideoDecoder(const CreateDecoderParams & aParams)22 GonkDecoderModule::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)31 GonkDecoderModule::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) const40 GonkDecoderModule::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) const50 GonkDecoderModule::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