#465: dom/media/webm, MDSM

This commit is contained in:
Cameron Kaiser 2018-02-17 00:28:01 -08:00
parent b25a781014
commit e55a369b74
3 changed files with 21 additions and 21 deletions

View File

@ -1185,7 +1185,7 @@ void MediaDecoderStateMachine::MaybeStartPlayback()
MOZ_ASSERT(mState == DECODER_STATE_DECODING || MOZ_ASSERT(mState == DECODER_STATE_DECODING ||
mState == DECODER_STATE_COMPLETED); mState == DECODER_STATE_COMPLETED);
if (IsPlaying()) { if (MOZ_LIKELY(IsPlaying())) {
// Logging this case is really spammy - don't do it. // Logging this case is really spammy - don't do it.
return; return;
} }
@ -2443,7 +2443,7 @@ nsresult MediaDecoderStateMachine::RunStateMachine()
} }
case DECODER_STATE_DECODING: { case DECODER_STATE_DECODING: {
if (IsDecodingFirstFrame()) { if (MOZ_UNLIKELY(IsDecodingFirstFrame())) {
// We haven't completed decoding our first frames, we can't start // We haven't completed decoding our first frames, we can't start
// playback yet. // playback yet.
return NS_OK; return NS_OK;
@ -2623,7 +2623,7 @@ MediaDecoderStateMachine::CheckFrameValidity(VideoData* aData)
MOZ_ASSERT(OnTaskQueue()); MOZ_ASSERT(OnTaskQueue());
// Update corrupt-frames statistics // Update corrupt-frames statistics
if (aData->mImage && !aData->mImage->IsValid()) { if (aData->mImage && MOZ_UNLIKELY(!aData->mImage->IsValid())) {
FrameStatistics& frameStats = *mFrameStats; FrameStatistics& frameStats = *mFrameStats;
frameStats.NotifyCorruptFrame(); frameStats.NotifyCorruptFrame();
// If more than 10% of the last 30 frames have been corrupted, then try disabling // If more than 10% of the last 30 frames have been corrupted, then try disabling
@ -2792,7 +2792,7 @@ MediaDecoderStateMachine::DropAudioUpToSeekTarget(MediaData* aSample)
audio->mAudioData.get() + (framesToPrune.value() * channels), audio->mAudioData.get() + (framesToPrune.value() * channels),
frames * channels * sizeof(AudioDataValue)); frames * channels * sizeof(AudioDataValue));
CheckedInt64 duration = FramesToUsecs(frames, mInfo.mAudio.mRate); CheckedInt64 duration = FramesToUsecs(frames, mInfo.mAudio.mRate);
if (!duration.isValid()) { if (MOZ_UNLIKELY(!duration.isValid())) {
return NS_ERROR_FAILURE; return NS_ERROR_FAILURE;
} }
RefPtr<AudioData> data(new AudioData(audio->mOffset, RefPtr<AudioData> data(new AudioData(audio->mOffset,

View File

@ -88,24 +88,24 @@ SoftwareWebMVideoDecoder::DecodeVideoFrame(bool &aKeyframeSkip,
AbstractMediaDecoder::AutoNotifyDecoded a(mReader->GetDecoder()); AbstractMediaDecoder::AutoNotifyDecoded a(mReader->GetDecoder());
RefPtr<NesteggPacketHolder> holder(mReader->NextPacket(WebMReader::VIDEO)); RefPtr<NesteggPacketHolder> holder(mReader->NextPacket(WebMReader::VIDEO));
if (!holder) { if (MOZ_UNLIKELY(!holder)) {
return false; return false;
} }
nestegg_packet* packet = holder->Packet(); nestegg_packet* packet = holder->Packet();
unsigned int track = 0; unsigned int track = 0;
int r = nestegg_packet_track(packet, &track); int r = nestegg_packet_track(packet, &track);
if (r == -1) { if (MOZ_UNLIKELY(r == -1)) {
return false; return false;
} }
unsigned int count = 0; unsigned int count = 0;
r = nestegg_packet_count(packet, &count); r = nestegg_packet_count(packet, &count);
if (r == -1) { if (MOZ_UNLIKELY(r == -1)) {
return false; return false;
} }
if (count > 1) { if (MOZ_UNLIKELY(count > 1)) {
NS_WARNING("Packet contains more than one video frame"); NS_WARNING("Packet contains more than one video frame");
return false; return false;
} }
@ -130,7 +130,7 @@ SoftwareWebMVideoDecoder::DecodeVideoFrame(bool &aKeyframeSkip,
unsigned char* data; unsigned char* data;
size_t length; size_t length;
r = nestegg_packet_data(packet, 0, &data, &length); r = nestegg_packet_data(packet, 0, &data, &length);
if (r == -1) { if (MOZ_UNLIKELY(r == -1)) {
return false; return false;
} }
@ -153,7 +153,7 @@ SoftwareWebMVideoDecoder::DecodeVideoFrame(bool &aKeyframeSkip,
aKeyframeSkip = false; aKeyframeSkip = false;
} }
if (vpx_codec_decode(&mVPX, data, length, nullptr, 0)) { if (MOZ_UNLIKELY(vpx_codec_decode(&mVPX, data, length, nullptr, 0))) {
return false; return false;
} }
@ -217,7 +217,7 @@ SoftwareWebMVideoDecoder::DecodeVideoFrame(bool &aKeyframeSkip,
si.is_kf, si.is_kf,
-1, -1,
picture); picture);
if (!v) { if (MOZ_UNLIKELY(!v)) {
return false; return false;
} }
a.mParsed++; a.mParsed++;

View File

@ -417,7 +417,7 @@ bool WebMReader::DecodeAudioPacket(NesteggPacketHolder* aHolder)
int r = 0; int r = 0;
unsigned int count = 0; unsigned int count = 0;
r = nestegg_packet_count(aHolder->Packet(), &count); r = nestegg_packet_count(aHolder->Packet(), &count);
if (r == -1) { if (MOZ_UNLIKELY(r == -1)) {
return false; return false;
} }
@ -439,7 +439,7 @@ bool WebMReader::DecodeAudioPacket(NesteggPacketHolder* aHolder)
return false; return false;
} }
decoded_frames += mAudioFrames; decoded_frames += mAudioFrames;
if (!decoded_frames.isValid()) { if (MOZ_UNLIKELY(!decoded_frames.isValid())) {
NS_WARNING("Int overflow adding decoded_frames"); NS_WARNING("Int overflow adding decoded_frames");
return false; return false;
} }
@ -460,7 +460,7 @@ bool WebMReader::DecodeAudioPacket(NesteggPacketHolder* aHolder)
unsigned char* data; unsigned char* data;
size_t length; size_t length;
r = nestegg_packet_data(aHolder->Packet(), i, &data, &length); r = nestegg_packet_data(aHolder->Packet(), i, &data, &length);
if (r == -1) { if (MOZ_UNLIKELY(r == -1)) {
return false; return false;
} }
int64_t discardPadding = 0; int64_t discardPadding = 0;
@ -508,7 +508,7 @@ RefPtr<NesteggPacketHolder> WebMReader::NextPacket(TrackType aTrackType)
do { do {
RefPtr<NesteggPacketHolder> holder = DemuxPacket(); RefPtr<NesteggPacketHolder> holder = DemuxPacket();
if (!holder) { if (MOZ_UNLIKELY(!holder)) {
return nullptr; return nullptr;
} }
@ -530,13 +530,13 @@ WebMReader::DemuxPacket()
{ {
nestegg_packet* packet; nestegg_packet* packet;
int r = nestegg_read_packet(mContext, &packet); int r = nestegg_read_packet(mContext, &packet);
if (r <= 0) { if (MOZ_UNLIKELY(r <= 0)) {
return nullptr; return nullptr;
} }
unsigned int track = 0; unsigned int track = 0;
r = nestegg_packet_track(packet, &track); r = nestegg_packet_track(packet, &track);
if (r == -1) { if (MOZ_UNLIKELY(r == -1)) {
return nullptr; return nullptr;
} }
@ -548,7 +548,7 @@ WebMReader::DemuxPacket()
unsigned char* data; unsigned char* data;
size_t length; size_t length;
r = nestegg_packet_data(packet, 0, &data, &length); r = nestegg_packet_data(packet, 0, &data, &length);
if (r == -1) { if (MOZ_UNLIKELY(r == -1)) {
return nullptr; return nullptr;
} }
vpx_codec_stream_info_t si; vpx_codec_stream_info_t si;
@ -576,7 +576,7 @@ bool WebMReader::DecodeAudioData()
MOZ_ASSERT(OnTaskQueue()); MOZ_ASSERT(OnTaskQueue());
RefPtr<NesteggPacketHolder> holder(NextPacket(AUDIO)); RefPtr<NesteggPacketHolder> holder(NextPacket(AUDIO));
if (!holder) { if (MOZ_UNLIKELY(!holder)) {
return false; return false;
} }
@ -589,7 +589,7 @@ bool WebMReader::FilterPacketByTime(int64_t aEndTime, WebMPacketQueue& aOutput)
// than aEndTime. // than aEndTime.
while (true) { while (true) {
RefPtr<NesteggPacketHolder> holder(NextPacket(VIDEO)); RefPtr<NesteggPacketHolder> holder(NextPacket(VIDEO));
if (!holder) { if (MOZ_UNLIKELY(!holder)) {
break; break;
} }
int64_t tstamp = holder->Timestamp(); int64_t tstamp = holder->Timestamp();
@ -622,7 +622,7 @@ int64_t WebMReader::GetNextKeyframeTime(int64_t aTimeThreshold)
int64_t keyframeTime = -1; int64_t keyframeTime = -1;
while (!foundKeyframe) { while (!foundKeyframe) {
RefPtr<NesteggPacketHolder> holder(NextPacket(VIDEO)); RefPtr<NesteggPacketHolder> holder(NextPacket(VIDEO));
if (!holder) { if (MOZ_UNLIKELY(!holder)) {
break; break;
} }