Merge "libwriterfuzzerbase : Bug Fix" into main
diff --git a/media/libstagefright/writer_fuzzers/WriterFuzzerBase.cpp b/media/libstagefright/writer_fuzzers/WriterFuzzerBase.cpp
index b97f347..2016b2a 100644
--- a/media/libstagefright/writer_fuzzers/WriterFuzzerBase.cpp
+++ b/media/libstagefright/writer_fuzzers/WriterFuzzerBase.cpp
@@ -192,7 +192,9 @@
sp<MetaData> trackMeta = new MetaData;
convertMessageToMetaData(format, trackMeta);
mCurrentTrack[trackIndex] = new MediaAdapter(trackMeta);
- mWriter->addSource(mCurrentTrack[trackIndex]);
+ if (mWriter->addSource(mCurrentTrack[trackIndex]) != OK) {
+ mCurrentTrack[trackIndex] = nullptr;
+ }
}
void WriterFuzzerBase::start() {
@@ -202,13 +204,14 @@
void WriterFuzzerBase::sendBuffersToWriter(sp<MediaAdapter> ¤tTrack, int32_t trackIndex,
int32_t startFrameIndex, int32_t endFrameIndex) {
+ if (!mCurrentTrack[trackIndex]) {
+ return;
+ }
vector<FrameData> bufferInfo = mBufferSource->getFrameList(trackIndex);
for (int idx = startFrameIndex; idx < endFrameIndex; ++idx) {
sp<ABuffer> buffer = new ABuffer((void *)bufferInfo[idx].buf, bufferInfo[idx].size);
MediaBuffer *mediaBuffer = new MediaBuffer(buffer);
- // Released in MediaAdapter::signalBufferReturned().
- mediaBuffer->add_ref();
mediaBuffer->set_range(buffer->offset(), buffer->size());
MetaDataBase &sampleMetaData = mediaBuffer->meta_data();
sampleMetaData.setInt64(kKeyTime, bufferInfo[idx].timeUs);
@@ -219,8 +222,13 @@
sampleMetaData.setInt32(kKeyIsSyncFrame, true);
}
+ // Released in MediaAdapter::signalBufferReturned().
+ mediaBuffer->add_ref();
+
// This pushBuffer will wait until the mediaBuffer is consumed.
- currentTrack->pushBuffer(mediaBuffer);
+ if (currentTrack->pushBuffer(mediaBuffer) != OK) {
+ mediaBuffer->release();
+ }
}
}