зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1390748 - Remove ChannelMediaDecoder::CloneImpl() and remove subclasses of ChannelMediaDecoder. r=jwwang
MozReview-Commit-ID: 6nlBArYgwEJ --HG-- extra : rebase_source : 5a669544b7a9c6f2d4d27a47c621c21b9317f789
This commit is contained in:
Родитель
fa780c5329
Коммит
d22c79dd24
|
@ -11,15 +11,6 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
ChannelMediaDecoder*
|
||||
ADTSDecoder::CloneImpl(MediaDecoderInit& aInit)
|
||||
{
|
||||
if (!IsEnabled())
|
||||
return nullptr;
|
||||
|
||||
return new ADTSDecoder(aInit);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
ADTSDecoder::IsEnabled()
|
||||
{
|
||||
|
|
|
@ -13,22 +13,13 @@ namespace mozilla {
|
|||
|
||||
class MediaContainerType;
|
||||
|
||||
class ADTSDecoder : public ChannelMediaDecoder
|
||||
class ADTSDecoder
|
||||
{
|
||||
public:
|
||||
// MediaDecoder interface.
|
||||
explicit ADTSDecoder(MediaDecoderInit& aInit)
|
||||
: ChannelMediaDecoder(aInit)
|
||||
{
|
||||
}
|
||||
|
||||
// Returns true if the ADTS backend is pref'ed on, and we're running on a
|
||||
// platform that is likely to have decoders for the format.
|
||||
static bool IsEnabled();
|
||||
static bool IsSupportedType(const MediaContainerType& aContainerType);
|
||||
|
||||
private:
|
||||
ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) override;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -174,10 +174,10 @@ ChannelMediaDecoder::CanClone()
|
|||
already_AddRefed<ChannelMediaDecoder>
|
||||
ChannelMediaDecoder::Clone(MediaDecoderInit& aInit)
|
||||
{
|
||||
if (!mResource) {
|
||||
if (!mResource || !DecoderTraits::IsSupportedType(aInit.mContainerType)) {
|
||||
return nullptr;
|
||||
}
|
||||
RefPtr<ChannelMediaDecoder> decoder = CloneImpl(aInit);
|
||||
RefPtr<ChannelMediaDecoder> decoder = new ChannelMediaDecoder(aInit);
|
||||
if (!decoder) {
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -88,7 +88,6 @@ private:
|
|||
// Create a new state machine to run this decoder.
|
||||
MediaDecoderStateMachine* CreateStateMachine();
|
||||
|
||||
virtual ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) = 0;
|
||||
nsresult OpenResource(nsIStreamListener** aStreamListener);
|
||||
nsresult Load(BaseMediaResource* aOriginal);
|
||||
|
||||
|
|
|
@ -233,36 +233,8 @@ InstantiateDecoder(MediaDecoderInit& aInit,
|
|||
RefPtr<ChannelMediaDecoder> decoder;
|
||||
|
||||
const MediaContainerType& type = aInit.mContainerType;
|
||||
|
||||
#ifdef MOZ_FMP4
|
||||
if (MP4Decoder::IsSupportedType(type, aDiagnostics)) {
|
||||
decoder = new MP4Decoder(aInit);
|
||||
return decoder.forget();
|
||||
}
|
||||
#endif
|
||||
if (MP3Decoder::IsSupportedType(type)) {
|
||||
decoder = new MP3Decoder(aInit);
|
||||
return decoder.forget();
|
||||
}
|
||||
if (ADTSDecoder::IsSupportedType(type)) {
|
||||
decoder = new ADTSDecoder(aInit);
|
||||
return decoder.forget();
|
||||
}
|
||||
if (OggDecoder::IsSupportedType(type)) {
|
||||
decoder = new OggDecoder(aInit);
|
||||
return decoder.forget();
|
||||
}
|
||||
if (WaveDecoder::IsSupportedType(type)) {
|
||||
decoder = new WaveDecoder(aInit);
|
||||
return decoder.forget();
|
||||
}
|
||||
if (FlacDecoder::IsSupportedType(type)) {
|
||||
decoder = new FlacDecoder(aInit);
|
||||
return decoder.forget();
|
||||
}
|
||||
|
||||
if (WebMDecoder::IsSupportedType(type)) {
|
||||
decoder = new WebMDecoder(aInit);
|
||||
if (DecoderTraits::IsSupportedType(type)) {
|
||||
decoder = new ChannelMediaDecoder(aInit);
|
||||
return decoder.forget();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,16 +11,6 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
ChannelMediaDecoder*
|
||||
FlacDecoder::CloneImpl(MediaDecoderInit& aInit)
|
||||
{
|
||||
if (!IsEnabled()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return new FlacDecoder(aInit);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
FlacDecoder::IsEnabled()
|
||||
{
|
||||
|
|
|
@ -13,22 +13,13 @@ namespace mozilla {
|
|||
|
||||
class MediaContainerType;
|
||||
|
||||
class FlacDecoder : public ChannelMediaDecoder
|
||||
class FlacDecoder
|
||||
{
|
||||
public:
|
||||
// MediaDecoder interface.
|
||||
explicit FlacDecoder(MediaDecoderInit& aInit)
|
||||
: ChannelMediaDecoder(aInit)
|
||||
{
|
||||
}
|
||||
|
||||
// Returns true if the Flac backend is pref'ed on, and we're running on a
|
||||
// platform that is likely to have decoders for the format.
|
||||
static bool IsEnabled();
|
||||
static bool IsSupportedType(const MediaContainerType& aContainerType);
|
||||
|
||||
private:
|
||||
ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) override;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -25,11 +25,6 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
MP4Decoder::MP4Decoder(MediaDecoderInit& aInit)
|
||||
: ChannelMediaDecoder(aInit)
|
||||
{
|
||||
}
|
||||
|
||||
static bool
|
||||
IsWhitelistedH264Codec(const nsAString& aCodec)
|
||||
{
|
||||
|
|
|
@ -15,11 +15,9 @@ namespace mozilla {
|
|||
class MediaContainerType;
|
||||
|
||||
// Decoder that uses a bundled MP4 demuxer and platform decoders to play MP4.
|
||||
class MP4Decoder : public ChannelMediaDecoder
|
||||
class MP4Decoder
|
||||
{
|
||||
public:
|
||||
explicit MP4Decoder(MediaDecoderInit& aInit);
|
||||
|
||||
// Returns true if aContainerType is an MP4 type that we think we can render
|
||||
// with the a platform decoder backend.
|
||||
// If provided, codecs are checked for support.
|
||||
|
@ -45,14 +43,6 @@ public:
|
|||
static already_AddRefed<dom::Promise>
|
||||
IsVideoAccelerated(layers::KnowsCompositor* aKnowsCompositor, nsIGlobalObject* aParent);
|
||||
|
||||
private:
|
||||
ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) override
|
||||
{
|
||||
if (!IsEnabled()) {
|
||||
return nullptr;
|
||||
}
|
||||
return new MP4Decoder(aInit);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -13,15 +13,6 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
ChannelMediaDecoder*
|
||||
MP3Decoder::CloneImpl(MediaDecoderInit& aInit)
|
||||
{
|
||||
if (!IsEnabled()) {
|
||||
return nullptr;
|
||||
}
|
||||
return new MP3Decoder(aInit);
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool
|
||||
MP3Decoder::IsEnabled() {
|
||||
|
|
|
@ -12,22 +12,13 @@ namespace mozilla {
|
|||
|
||||
class MediaContainerType;
|
||||
|
||||
class MP3Decoder : public ChannelMediaDecoder
|
||||
class MP3Decoder
|
||||
{
|
||||
public:
|
||||
// MediaDecoder interface.
|
||||
explicit MP3Decoder(MediaDecoderInit& aInit)
|
||||
: ChannelMediaDecoder(aInit)
|
||||
{
|
||||
}
|
||||
|
||||
// Returns true if the MP3 backend is preffed on, and we're running on a
|
||||
// platform that is likely to have decoders for the format.
|
||||
static bool IsEnabled();
|
||||
static bool IsSupportedType(const MediaContainerType& aContainerType);
|
||||
|
||||
private:
|
||||
ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) override;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -37,7 +37,7 @@ OggDecoder::IsSupportedType(const MediaContainerType& aContainerType)
|
|||
// Verify that all the codecs specified are ones that we expect that
|
||||
// we can play.
|
||||
for (const auto& codec : codecs.Range()) {
|
||||
if ((IsOpusEnabled() && codec.EqualsLiteral("opus")) ||
|
||||
if ((MediaDecoder::IsOpusEnabled() && codec.EqualsLiteral("opus")) ||
|
||||
codec.EqualsLiteral("vorbis") ||
|
||||
(MediaPrefs::FlacInOgg() && codec.EqualsLiteral("flac"))) {
|
||||
continue;
|
||||
|
|
|
@ -12,26 +12,13 @@ namespace mozilla {
|
|||
|
||||
class MediaContainerType;
|
||||
|
||||
class OggDecoder : public ChannelMediaDecoder
|
||||
class OggDecoder
|
||||
{
|
||||
public:
|
||||
explicit OggDecoder(MediaDecoderInit& aInit)
|
||||
: ChannelMediaDecoder(aInit)
|
||||
{}
|
||||
|
||||
// Returns true if aContainerType is an Ogg type that we think we can render
|
||||
// with an enabled platform decoder backend.
|
||||
// If provided, codecs are checked for support.
|
||||
static bool IsSupportedType(const MediaContainerType& aContainerType);
|
||||
|
||||
private:
|
||||
ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) override
|
||||
{
|
||||
if (!IsOggEnabled()) {
|
||||
return nullptr;
|
||||
}
|
||||
return new OggDecoder(aInit);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -11,16 +11,10 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
ChannelMediaDecoder*
|
||||
WaveDecoder::CloneImpl(MediaDecoderInit& aInit)
|
||||
{
|
||||
return new WaveDecoder(aInit);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
WaveDecoder::IsSupportedType(const MediaContainerType& aContainerType)
|
||||
{
|
||||
if (!IsWaveEnabled()) {
|
||||
if (!MediaDecoder::IsWaveEnabled()) {
|
||||
return false;
|
||||
}
|
||||
if (aContainerType.Type() == MEDIAMIMETYPE("audio/wave")
|
||||
|
|
|
@ -12,21 +12,12 @@ namespace mozilla {
|
|||
|
||||
class MediaContainerType;
|
||||
|
||||
class WaveDecoder : public ChannelMediaDecoder
|
||||
class WaveDecoder
|
||||
{
|
||||
public:
|
||||
// MediaDecoder interface.
|
||||
explicit WaveDecoder(MediaDecoderInit& aInit)
|
||||
: ChannelMediaDecoder(aInit)
|
||||
{
|
||||
}
|
||||
|
||||
// Returns true if the Wave backend is pref'ed on, and we're running on a
|
||||
// platform that is likely to have decoders for the format.
|
||||
static bool IsSupportedType(const MediaContainerType& aContainerType);
|
||||
|
||||
private:
|
||||
ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) override;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -12,27 +12,15 @@ namespace mozilla {
|
|||
|
||||
class MediaContainerType;
|
||||
|
||||
class WebMDecoder : public ChannelMediaDecoder
|
||||
class WebMDecoder
|
||||
{
|
||||
public:
|
||||
explicit WebMDecoder(MediaDecoderInit& aInit)
|
||||
: ChannelMediaDecoder(aInit)
|
||||
{
|
||||
}
|
||||
|
||||
// Returns true if aContainerType is a WebM type that we think we can render
|
||||
// with an enabled platform decoder backend.
|
||||
// If provided, codecs are checked for support.
|
||||
static bool IsSupportedType(const MediaContainerType& aContainerType);
|
||||
|
||||
private:
|
||||
ChannelMediaDecoder* CloneImpl(MediaDecoderInit& aInit) override
|
||||
{
|
||||
if (!IsWebMEnabled()) {
|
||||
return nullptr;
|
||||
}
|
||||
return new WebMDecoder(aInit);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
Загрузка…
Ссылка в новой задаче