From 9c7408ab0710a9e36fd2a258098afde863cb6544 Mon Sep 17 00:00:00 2001 From: Harish Mahendrakar Date: Wed, 19 Oct 2022 18:17:07 -0700 Subject: [PATCH] Codec2 decoders: Invalidate allocated graphic buffer in stop() Bug: 243583691 Test: atest CtsMediaV2TestCases -- --module-arg \ CtsMediaV2TestCases:instrumentation-arg:codec-prefix:=c2.android. Change-Id: I312c106350b2eb072f0e6f2f9a83f16eb8424cb2 --- media/codec2/components/avc/C2SoftAvcDec.cpp | 3 +++ media/codec2/components/hevc/C2SoftHevcDec.cpp | 3 +++ media/codec2/components/mpeg2/C2SoftMpeg2Dec.cpp | 3 +++ media/codec2/components/mpeg4_h263/C2SoftMpeg4Dec.cpp | 4 +++- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/media/codec2/components/avc/C2SoftAvcDec.cpp b/media/codec2/components/avc/C2SoftAvcDec.cpp index 953afc57cd..96a4c4a756 100644 --- a/media/codec2/components/avc/C2SoftAvcDec.cpp +++ b/media/codec2/components/avc/C2SoftAvcDec.cpp @@ -671,6 +671,9 @@ status_t C2SoftAvcDec::resetDecoder() { void C2SoftAvcDec::resetPlugin() { mSignalledOutputEos = false; mTimeStart = mTimeEnd = systemTime(); + if (mOutBlock) { + mOutBlock.reset(); + } } status_t C2SoftAvcDec::deleteDecoder() { diff --git a/media/codec2/components/hevc/C2SoftHevcDec.cpp b/media/codec2/components/hevc/C2SoftHevcDec.cpp index 5a660c5ca1..7d3b9d9399 100644 --- a/media/codec2/components/hevc/C2SoftHevcDec.cpp +++ b/media/codec2/components/hevc/C2SoftHevcDec.cpp @@ -664,6 +664,9 @@ status_t C2SoftHevcDec::resetDecoder() { void C2SoftHevcDec::resetPlugin() { mSignalledOutputEos = false; mTimeStart = mTimeEnd = systemTime(); + if (mOutBlock) { + mOutBlock.reset(); + } } status_t C2SoftHevcDec::deleteDecoder() { diff --git a/media/codec2/components/mpeg2/C2SoftMpeg2Dec.cpp b/media/codec2/components/mpeg2/C2SoftMpeg2Dec.cpp index 9a4191025f..439323c76e 100644 --- a/media/codec2/components/mpeg2/C2SoftMpeg2Dec.cpp +++ b/media/codec2/components/mpeg2/C2SoftMpeg2Dec.cpp @@ -732,6 +732,9 @@ status_t C2SoftMpeg2Dec::resetDecoder() { void C2SoftMpeg2Dec::resetPlugin() { mSignalledOutputEos = false; mTimeStart = mTimeEnd = systemTime(); + if (mOutBlock) { + mOutBlock.reset(); + } } status_t C2SoftMpeg2Dec::deleteDecoder() { diff --git a/media/codec2/components/mpeg4_h263/C2SoftMpeg4Dec.cpp b/media/codec2/components/mpeg4_h263/C2SoftMpeg4Dec.cpp index 54a1d0e354..3bf9c48dc3 100644 --- a/media/codec2/components/mpeg4_h263/C2SoftMpeg4Dec.cpp +++ b/media/codec2/components/mpeg4_h263/C2SoftMpeg4Dec.cpp @@ -256,7 +256,9 @@ c2_status_t C2SoftMpeg4Dec::onStop() { mFramesConfigured = false; mSignalledOutputEos = false; mSignalledError = false; - + if (mOutBlock) { + mOutBlock.reset(); + } return C2_OK; }