stagefright: reuse buffers instead of cloning
In buffer array mode, the buffer reference is kept in clients of
MediaCodec, so allocating new buffer for new input/output does not
work in that case.
Bug: 32577275
Bug: 32579231
Test: use screenrecord and investigate the output file.
Test: cts-tradefed run cts-dev -m CtsMediaTestCases -t android.media.cts.EncodeDecodeTest
Change-Id: I26d89f6b5735094062b8a2027bcab4754576d574
diff --git a/include/media/MediaCodecBuffer.h b/include/media/MediaCodecBuffer.h
index 05aaa14..501c00b 100644
--- a/include/media/MediaCodecBuffer.h
+++ b/include/media/MediaCodecBuffer.h
@@ -58,13 +58,13 @@
sp<AMessage> meta();
sp<AMessage> format();
- virtual sp<MediaCodecBuffer> clone(const sp<AMessage> &format);
+ void setFormat(const sp<AMessage> &format);
private:
MediaCodecBuffer() = delete;
const sp<AMessage> mMeta;
- const sp<AMessage> mFormat;
+ sp<AMessage> mFormat;
const sp<ABuffer> mBuffer;
MediaBufferBase *mMediaBufferBase;
};