From 990ee76d7731121663c6d395ec1b174c41b84c59 Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Thu, 30 Jul 2020 17:24:37 -0700 Subject: [PATCH] Fix the media filter buffer issue in the Tuner default implementation The current implementation does not clear the previous memcopy before copying the next round of data into the buffer. This CL fixes the issue. Test: atest VtsHalTvTunerV1_0TargetTest Bug: 159027928 Change-Id: I3399c69ead046630d9c22e8fbe1e816f6ea529f9 --- tv/tuner/1.1/default/Dvr.cpp | 1 + tv/tuner/1.1/default/Filter.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tv/tuner/1.1/default/Dvr.cpp b/tv/tuner/1.1/default/Dvr.cpp index bf4c77e785..3a4ef1bee7 100644 --- a/tv/tuner/1.1/default/Dvr.cpp +++ b/tv/tuner/1.1/default/Dvr.cpp @@ -395,6 +395,7 @@ bool Dvr::processEsDataOnPlayback(bool isVirtualFrontend, bool isRecording) { mDemux->sendFrontendInputToRecord(frameData, pid, static_cast(esMeta[i].pts)); } startFilterDispatcher(isVirtualFrontend, isRecording); + frameData.clear(); } return true; diff --git a/tv/tuner/1.1/default/Filter.cpp b/tv/tuner/1.1/default/Filter.cpp index 2d6214d52c..4d08afe6f5 100644 --- a/tv/tuner/1.1/default/Filter.cpp +++ b/tv/tuner/1.1/default/Filter.cpp @@ -500,7 +500,12 @@ Result Filter::startMediaFilterHandler() { } if (mPts) { - return createMediaFilterEventWithIon(mFilterOutput); + Result result; + result = createMediaFilterEventWithIon(mFilterOutput); + if (result == Result::SUCCESS) { + mFilterOutput.clear(); + } + return result; } for (int i = 0; i < mFilterOutput.size(); i += 188) {