Bug 1325707: P1. Check returned value. r?gerald
This is really just for cleanliness perspective, as it can never happen, we always check that demuxing a packet succeeded first.
MozReview-Commit-ID: FQ1yz16m9Ix
--- a/dom/media/ogg/OggCodecState.cpp
+++ b/dom/media/ogg/OggCodecState.cpp
@@ -1300,16 +1300,19 @@ OpusState::PacketOutAsMediaRawData()
uint32_t frames = 0;
const int64_t endFrame = packet->granulepos;
if (packet->e_o_s) {
frames = GetOpusDeltaGP(packet);
}
RefPtr<MediaRawData> data = OggCodecState::PacketOutAsMediaRawData();
+ if (!data) {
+ return nullptr;
+ }
if (data->mEOS && mPrevPacketGranulepos != -1) {
// If this is the last packet, perform end trimming.
int64_t startFrame = mPrevPacketGranulepos;
frames -= std::max<int64_t>(
0, std::min(endFrame - startFrame, static_cast<int64_t>(frames)));
data->mDiscardPadding = frames;
}
--- a/dom/media/ogg/OggDemuxer.cpp
+++ b/dom/media/ogg/OggDemuxer.cpp
@@ -1337,16 +1337,19 @@ OggTrackDemuxer::NextSample()
ogg_packet* packet = mParent->GetNextPacket(mType);
if (!packet) {
return nullptr;
}
// Check the eos state in case we need to look for chained streams.
bool eos = packet->e_o_s;
OggCodecState* state = mParent->GetTrackCodecState(mType);
RefPtr<MediaRawData> data = state->PacketOutAsMediaRawData();
+ if (!data) {
+ return nullptr;
+ }
if (mType == TrackInfo::kAudioTrack) {
data->mTrackInfo = mParent->mSharedAudioTrackInfo;
}
if (eos) {
// We've encountered an end of bitstream packet; check for a chained
// bitstream following this one.
// This will also update mSharedAudioTrackInfo.
mParent->ReadOggChain(TimeUnit::FromMicroseconds(data->GetEndTime()));