CCodec: flush reorder stash at flush
Bug: 127921288
Test: atest GtsExoPlayerTestCases:DashTest
Change-Id: I6be571e2ca640b86eb2d227d92492bc8f0466ff5
(cherry picked from commit 92df7718a2a0976da6b5c1ce32ad47c7eecf58a7)
diff --git a/media/sfplugin/CCodecBufferChannel.cpp b/media/sfplugin/CCodecBufferChannel.cpp
index 7328673..a199986 100644
--- a/media/sfplugin/CCodecBufferChannel.cpp
+++ b/media/sfplugin/CCodecBufferChannel.cpp
@@ -1526,6 +1526,11 @@
mKey = C2Config::ORDINAL;
}
+void CCodecBufferChannel::ReorderStash::flush() {
+ mPending.clear();
+ mStash.clear();
+}
+
void CCodecBufferChannel::ReorderStash::setDepth(uint32_t depth) {
mPending.splice(mPending.end(), mStash);
mDepth = depth;
@@ -2480,6 +2485,7 @@
ALOGV("[%s] stashed flushed codec config data (size=%u)", mName, view.capacity());
}
}
+ mReorderStash.lock()->flush();
{
Mutexed<std::unique_ptr<InputBuffers>>::Locked buffers(mInputBuffers);
(*buffers)->flush();
diff --git a/media/sfplugin/CCodecBufferChannel.h b/media/sfplugin/CCodecBufferChannel.h
index e354fd0..3e45e86 100644
--- a/media/sfplugin/CCodecBufferChannel.h
+++ b/media/sfplugin/CCodecBufferChannel.h
@@ -354,6 +354,7 @@
ReorderStash();
void clear();
+ void flush();
void setDepth(uint32_t depth);
void setKey(C2Config::ordinal_key_t key);
bool pop(Entry *entry);