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,