Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c762e963 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "libwriterfuzzerbase : Bug Fix" into main

parents 34bf59f5 e015595a
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -192,7 +192,9 @@ void WriterFuzzerBase::addWriterSource(int32_t trackIndex) {
    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::start() {

void WriterFuzzerBase::sendBuffersToWriter(sp<MediaAdapter> &currentTrack, 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 @@ void WriterFuzzerBase::sendBuffersToWriter(sp<MediaAdapter> &currentTrack, int32
            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();
        }
    }
}