Skip to content

Commit

Permalink
Bug 1873663 - Remove legacy audio decoders (vorbis, opus, pcm). r=med…
Browse files Browse the repository at this point in the history
…ia-playback-reviewers,alwu

In addition, this removes prefs to decode mp3 using anything else than ffmpeg.
More patches to rationalize our decoder usage will follow.

Differential Revision: https://phabricator.services.mozilla.com/D198024

UltraBlame original commit: 172dfc1e0158e9efc502e6adc358a59b1369af27
  • Loading branch information
marco-c committed Jan 16, 2024
1 parent a49525f commit b0ba4f2
Show file tree
Hide file tree
Showing 25 changed files with 45 additions and 1,226 deletions.
9 changes: 9 additions & 0 deletions dom/media/VideoUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1216,4 +1216,13 @@ bool OnCellularConnection() {
return false;
}

bool IsWaveMimetype(const nsACString& aMimeType) {
return aMimeType.EqualsLiteral("audio/x-wav") ||
aMimeType.EqualsLiteral("audio/wave; codecs=1") ||
aMimeType.EqualsLiteral("audio/wave; codecs=3") ||
aMimeType.EqualsLiteral("audio/wave; codecs=6") ||
aMimeType.EqualsLiteral("audio/wave; codecs=7") ||
aMimeType.EqualsLiteral("audio/wave; codecs=65534");
}

}
2 changes: 2 additions & 0 deletions dom/media/VideoUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,8 @@ inline gfx::YUVColorSpace DefaultColorSpace(const gfx::IntSize& aSize) {
: gfx::YUVColorSpace::BT709;
}

bool IsWaveMimetype(const nsACString& aMimeType);

}

#endif
5 changes: 1 addition & 4 deletions dom/media/ipc/RemoteDecoderModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@
#ifdef MOZ_AV1
# include "AOMDecoder.h"
#endif
#include "OpusDecoder.h"
#include "RemoteAudioDecoder.h"
#include "RemoteDecoderManagerChild.h"
#include "RemoteMediaDataDecoder.h"
#include "RemoteVideoDecoder.h"
#include "VideoUtils.h"
#include "VorbisDecoder.h"
#include "WAVDecoder.h"
#include "gfxConfig.h"
#include "mozilla/RemoteDecodeUtils.h"

Expand Down Expand Up @@ -73,7 +70,7 @@ RemoteDecoderModule::AsyncCreateDecoder(const CreateDecoderParams& aParams) {



if (OpusDataDecoder::IsOpus(aParams.mConfig.mMimeType) &&
if (aParams.mConfig.mMimeType.Equals("audio/opus") &&
IsDefaultPlaybackDeviceMono()) {
CreateDecoderParams params = aParams;
params.mOptions += CreateDecoderParams::Option::DefaultPlaybackDeviceMono;
Expand Down
8 changes: 3 additions & 5 deletions dom/media/mediasource/MediaSourceDemuxer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@
#include "MediaSourceDemuxer.h"

#include "MediaSourceUtils.h"
#include "OpusDecoder.h"
#include "SourceBufferList.h"
#include "VorbisDecoder.h"
#include "VideoUtils.h"
#include "nsPrintfCString.h"

Expand Down Expand Up @@ -277,9 +275,9 @@ MediaSourceTrackDemuxer::MediaSourceTrackDemuxer(MediaSourceDemuxer* aParent,
mManager(aManager),
mReset(true),
mPreRoll(TimeUnit::FromMicroseconds(
OpusDataDecoder::IsOpus(mParent->GetTrackInfo(mType)->mMimeType) ||
VorbisDataDecoder::IsVorbis(
mParent->GetTrackInfo(mType)->mMimeType)
mParent->GetTrackInfo(mType)->mMimeType.EqualsLiteral("audio/opus") ||
mParent->GetTrackInfo(mType)->mMimeType.EqualsLiteral(
"audio/vorbis")
? 80000
: mParent->GetTrackInfo(mType)->mMimeType.EqualsLiteral(
"audio/mp4a-latm")
Expand Down
2 changes: 0 additions & 2 deletions dom/media/mp4/DecoderData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
#include "MP4Metadata.h"
#include "mozilla/Logging.h"


#include "OpusDecoder.h"
#include "mp4parse.h"

#define LOG(...) \
Expand Down
1 change: 0 additions & 1 deletion dom/media/ogg/OggCodecState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

#include "OggCodecState.h"
#include "OggRLBox.h"
#include "OpusDecoder.h"
#include "OpusParser.h"
#include "VideoUtils.h"
#include "XiphExtradata.h"
Expand Down
10 changes: 4 additions & 6 deletions dom/media/platforms/MediaCodecsSupport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,13 @@
#endif
#include "MediaCodecsSupport.h"
#include "MP4Decoder.h"
#include "OpusDecoder.h"
#include "PlatformDecoderModule.h"
#include "TheoraDecoder.h"
#include "VPXDecoder.h"
#include "VorbisDecoder.h"
#include "WAVDecoder.h"
#include "mozilla/AppShutdown.h"
#include "mozilla/gfx/gfxVars.h"
#include "nsTHashMap.h"
#include "VideoUtils.h"

using MediaCodecsSupport = mozilla::media::MediaCodecsSupport;

Expand Down Expand Up @@ -263,16 +261,16 @@ MediaCodec MCSInfo::GetMediaCodecFromMimeType(const nsACString& aMimeType) {
if (MP4Decoder::IsAAC(aMimeType)) {
return MediaCodec::AAC;
}
if (VorbisDataDecoder::IsVorbis(aMimeType)) {
if (aMimeType.EqualsLiteral("audio/vorbis")) {
return MediaCodec::Vorbis;
}
if (aMimeType.EqualsLiteral("audio/flac")) {
return MediaCodec::FLAC;
}
if (WaveDataDecoder::IsWave(aMimeType)) {
if (IsWaveMimetype(aMimeType)) {
return MediaCodec::Wave;
}
if (OpusDataDecoder::IsOpus(aMimeType)) {
if (aMimeType.EqualsLiteral("audio/opus")) {
return MediaCodec::Opus;
}
if (aMimeType.EqualsLiteral("audio/mpeg")) {
Expand Down
9 changes: 3 additions & 6 deletions dom/media/platforms/PDMFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,9 @@
#include "MP4Decoder.h"
#include "MediaChangeMonitor.h"
#include "MediaInfo.h"
#include "OpusDecoder.h"
#include "TheoraDecoder.h"
#include "VPXDecoder.h"
#include "VideoUtils.h"
#include "VorbisDecoder.h"
#include "WAVDecoder.h"
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/RemoteDecodeUtils.h"
#include "mozilla/RemoteDecoderManagerChild.h"
Expand Down Expand Up @@ -882,16 +879,16 @@ DecodeSupportSet PDMFactory::SupportsMimeType(
if (aMimeType.EqualsLiteral("audio/mpeg")) {
return MCSInfo::GetDecodeSupportSet(MediaCodec::MP3, aSupported);
}
if (OpusDataDecoder::IsOpus(aMimeType)) {
if (aMimeType.EqualsLiteral("audio/opus")) {
return MCSInfo::GetDecodeSupportSet(MediaCodec::Opus, aSupported);
}
if (VorbisDataDecoder::IsVorbis(aMimeType)) {
if (aMimeType.EqualsLiteral("audio/vorbis")) {
return MCSInfo::GetDecodeSupportSet(MediaCodec::Vorbis, aSupported);
}
if (aMimeType.EqualsLiteral("audio/flac")) {
return MCSInfo::GetDecodeSupportSet(MediaCodec::FLAC, aSupported);
}
if (WaveDataDecoder::IsWave(aMimeType)) {
if (IsWaveMimetype(aMimeType)) {
return MCSInfo::GetDecodeSupportSet(MediaCodec::Wave, aSupported);
}
}
Expand Down
26 changes: 2 additions & 24 deletions dom/media/platforms/agnostic/AgnosticDecoderModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@

#include "AgnosticDecoderModule.h"

#include "OpusDecoder.h"
#include "TheoraDecoder.h"
#include "VPXDecoder.h"
#include "VorbisDecoder.h"
#include "WAVDecoder.h"
#include "mozilla/Logging.h"
#include "mozilla/StaticPrefs_media.h"
#include "VideoUtils.h"
Expand Down Expand Up @@ -132,11 +129,7 @@ media::DecodeSupportSet AgnosticDecoderModule::Supports(
(AOMDecoder::IsAV1(mimeType) && IsAvailable(DecoderType::AV1)) ||
#endif
(VPXDecoder::IsVPX(mimeType) && IsAvailable(DecoderType::VPX)) ||
(TheoraDecoder::IsTheora(mimeType) && IsAvailable(DecoderType::Theora)) ||
(VorbisDataDecoder::IsVorbis(mimeType) &&
IsAvailable(DecoderType::Vorbis)) ||
(WaveDataDecoder::IsWave(mimeType) && IsAvailable(DecoderType::Wave)) ||
(OpusDataDecoder::IsOpus(mimeType) && IsAvailable(DecoderType::Opus));
(TheoraDecoder::IsTheora(mimeType) && IsAvailable(DecoderType::Theora));
MOZ_LOG(sPDMLog, LogLevel::Debug,
("Agnostic decoder %s requested type '%s'",
supports ? "supports" : "rejects", mimeType.BeginReading()));
Expand Down Expand Up @@ -180,22 +173,7 @@ already_AddRefed<MediaDataDecoder> AgnosticDecoderModule::CreateVideoDecoder(

already_AddRefed<MediaDataDecoder> AgnosticDecoderModule::CreateAudioDecoder(
const CreateDecoderParams& aParams) {
if (Supports(SupportDecoderParams(aParams), nullptr )
.isEmpty()) {
return nullptr;
}
RefPtr<MediaDataDecoder> m;

const TrackInfo& config = aParams.mConfig;
if (VorbisDataDecoder::IsVorbis(config.mMimeType)) {
m = new VorbisDataDecoder(aParams);
} else if (OpusDataDecoder::IsOpus(config.mMimeType)) {
m = new OpusDataDecoder(aParams);
} else if (WaveDataDecoder::IsWave(config.mMimeType)) {
m = new WaveDataDecoder(aParams);
}

return m.forget();
return nullptr;
}


Expand Down
Loading

0 comments on commit b0ba4f2

Please sign in to comment.