Return zero size buffers in wrap() for nullptr input
Bug: 111662143
Bug: 111611824
Test: cts-tradefed run commandAndExit cts-dev -m CtsMediaTestCases \
-t android.media.cts.NativeDecoderTest#testDataSourceWithCallback
Change-Id: I6bca99d466c1377488eee73cb5ab74627a360795
(cherry picked from commit fe5b29a7b834eedd0227772d59ae2b3a6dbe7409)
diff --git a/media/sfplugin/CCodecBufferChannel.cpp b/media/sfplugin/CCodecBufferChannel.cpp
index a86552e..786c6fd 100644
--- a/media/sfplugin/CCodecBufferChannel.cpp
+++ b/media/sfplugin/CCodecBufferChannel.cpp
@@ -1169,11 +1169,13 @@
sp<Codec2Buffer> wrap(const std::shared_ptr<C2Buffer> &buffer) override {
if (buffer == nullptr) {
- return ConstGraphicBlockBuffer::AllocateEmpty(
+ sp<Codec2Buffer> c2buffer = ConstGraphicBlockBuffer::AllocateEmpty(
mFormat,
[lbp = mLocalBufferPool](size_t capacity) {
return lbp->newBuffer(capacity);
});
+ c2buffer->setRange(0, 0);
+ return c2buffer;
} else {
return ConstGraphicBlockBuffer::Allocate(
mFormat,