Bug 1302593 - Update mimetype for vp9 and opus. r=rillian
MozReview-Commit-ID: 8iIK128vW79
--- a/dom/media/fmp4/MP4Decoder.cpp
+++ b/dom/media/fmp4/MP4Decoder.cpp
@@ -87,18 +87,17 @@ MP4Decoder::CanHandleMediaType(const nsA
if (!IsEnabled()) {
return false;
}
// Whitelist MP4 types, so they explicitly match what we encounter on
// the web, as opposed to what we use internally (i.e. what our demuxers
// etc output).
const bool isMP4Audio = aMIMETypeExcludingCodecs.EqualsASCII("audio/mp4") ||
- aMIMETypeExcludingCodecs.EqualsASCII("audio/x-m4a") ||
- aMIMETypeExcludingCodecs.EqualsASCII("audio/opus");
+ aMIMETypeExcludingCodecs.EqualsASCII("audio/x-m4a");
const bool isMP4Video =
// On B2G, treat 3GPP as MP4 when Gonk PDM is available.
#ifdef MOZ_GONK_MEDIACODEC
aMIMETypeExcludingCodecs.EqualsASCII(VIDEO_3GPP) ||
#endif
aMIMETypeExcludingCodecs.EqualsASCII("video/mp4") ||
aMIMETypeExcludingCodecs.EqualsASCII("video/quicktime") ||
aMIMETypeExcludingCodecs.EqualsASCII("video/x-m4v");
--- a/dom/media/platforms/agnostic/OpusDecoder.cpp
+++ b/dom/media/platforms/agnostic/OpusDecoder.cpp
@@ -346,14 +346,13 @@ OpusDataDecoder::Flush()
}
/* static */
bool
OpusDataDecoder::IsOpus(const nsACString& aMimeType)
{
return aMimeType.EqualsLiteral("audio/webm; codecs=opus") ||
aMimeType.EqualsLiteral("audio/ogg; codecs=opus") ||
- aMimeType.EqualsLiteral("audio/mp4; codecs=opus") ||
- aMimeType.EqualsLiteral("audio/opus");
+ aMimeType.EqualsLiteral("audio/mp4; codecs=opus");
}
} // namespace mozilla
#undef OPUS_DEBUG
--- a/dom/media/platforms/agnostic/VPXDecoder.cpp
+++ b/dom/media/platforms/agnostic/VPXDecoder.cpp
@@ -223,17 +223,17 @@ VPXDecoder::Drain()
bool
VPXDecoder::IsVPX(const nsACString& aMimeType, uint8_t aCodecMask)
{
return ((aCodecMask & VPXDecoder::VP8) &&
aMimeType.EqualsLiteral("video/webm; codecs=vp8")) ||
((aCodecMask & VPXDecoder::VP9) &&
aMimeType.EqualsLiteral("video/webm; codecs=vp9")) ||
((aCodecMask & VPXDecoder::VP9) &&
- aMimeType.EqualsLiteral("video/vp9"));
+ aMimeType.EqualsLiteral("video/mp4; codecs=vp9"));
}
/* static */
bool
VPXDecoder::IsVP8(const nsACString& aMimeType)
{
return IsVPX(aMimeType, VPXDecoder::VP8);
}
--- a/media/libstagefright/binding/DecoderData.cpp
+++ b/media/libstagefright/binding/DecoderData.cpp
@@ -190,17 +190,17 @@ MP4VideoInfo::Update(const MetaData* aMe
#ifdef MOZ_RUST_MP4PARSE
void
MP4VideoInfo::Update(const mp4parse_track_info* track,
const mp4parse_track_video_info* video)
{
if (track->codec == MP4PARSE_CODEC_AVC) {
mMimeType = MEDIA_MIMETYPE_VIDEO_AVC;
} else if (track->codec == MP4PARSE_CODEC_VP9) {
- mMimeType = NS_LITERAL_CSTRING("video/vp9");
+ mMimeType = NS_LITERAL_CSTRING("video/mp4; codecs=vp9");
}
mTrackId = track->track_id;
mDuration = track->duration;
mMediaTime = track->media_time;
mDisplay.width = video->display_width;
mDisplay.height = video->display_height;
mImage.width = video->image_width;
mImage.height = video->image_height;
--- a/media/libstagefright/binding/MP4Metadata.cpp
+++ b/media/libstagefright/binding/MP4Metadata.cpp
@@ -235,28 +235,28 @@ bool MP4Metadata::ShouldPreferRust() con
}
// See if there's an Opus track.
uint32_t numTracks = mRust->GetNumberTracks(TrackInfo::kAudioTrack);
for (auto i = 0; i < numTracks; i++) {
auto info = mRust->GetTrackInfo(TrackInfo::kAudioTrack, i);
if (!info) {
return false;
}
- if (info->mMimeType.EqualsASCII("audio/opus")) {
+ if (info->mMimeType.EqualsASCII("audio/mp4; codecs=opus")) {
return true;
}
}
numTracks = mRust->GetNumberTracks(TrackInfo::kVideoTrack);
for (auto i = 0; i < numTracks; i++) {
auto info = mRust->GetTrackInfo(TrackInfo::kVideoTrack, i);
if (!info) {
return false;
}
- if (info->mMimeType.EqualsASCII("video/vp9")) {
+ if (info->mMimeType.EqualsASCII("video/mp4; codecs=vp9")) {
return true;
}
}
// Otherwise, fall back.
return false;
}
#endif // MOZ_RUST_MP4PARSE
@@ -673,17 +673,17 @@ MP4MetadataRust::GetTrackInfo(mozilla::T
mp4parse_track_audio_info audio;
auto rv = mp4parse_get_track_audio_info(mRustParser.get(), aTrackNumber, &audio);
if (rv != MP4PARSE_OK) {
MOZ_LOG(sLog, LogLevel::Warning, ("mp4parse_get_track_audio_info returned error %d", rv));
return nullptr;
}
auto track = mozilla::MakeUnique<mozilla::AudioInfo>();
if (info.codec == MP4PARSE_CODEC_OPUS) {
- track->mMimeType = NS_LITERAL_CSTRING("audio/opus");
+ track->mMimeType = NS_LITERAL_CSTRING("audio/mp4; codecs=opus");
// The Opus decoder expects the container's codec delay or
// pre-skip value, in microseconds, as a 64-bit int at the
// start of the codec-specific config blob.
MOZ_ASSERT(audio.codec_specific_config.data);
MOZ_ASSERT(audio.codec_specific_config.length >= 12);
uint16_t preskip =
LittleEndian::readUint16(audio.codec_specific_config.data + 10);
MOZ_LOG(sLog, LogLevel::Debug,