diff --git a/tv/tuner/1.1/default/Filter.cpp b/tv/tuner/1.1/default/Filter.cpp index 7d609ea3dc..e0c785eae4 100644 --- a/tv/tuner/1.1/default/Filter.cpp +++ b/tv/tuner/1.1/default/Filter.cpp @@ -532,7 +532,7 @@ uint16_t Filter::getTpid() { return mTpid; } -void Filter::updateFilterOutput(vector data) { +void Filter::updateFilterOutput(const vector& data) { std::lock_guard lock(mFilterOutputLock); mFilterOutput.insert(mFilterOutput.end(), data.begin(), data.end()); } @@ -542,7 +542,7 @@ void Filter::updatePts(uint64_t pts) { mPts = pts; } -void Filter::updateRecordOutput(vector data) { +void Filter::updateRecordOutput(const vector& data) { std::lock_guard lock(mRecordFilterOutputLock); mRecordFilterOutput.insert(mRecordFilterOutput.end(), data.begin(), data.end()); } @@ -689,9 +689,7 @@ Result Filter::startMediaFilterHandler() { Result result; if (mPts) { result = createMediaFilterEventWithIon(mFilterOutput); - if (result == Result::SUCCESS) { - mFilterOutput.clear(); - } + mFilterOutput.clear(); return result; } @@ -729,6 +727,7 @@ Result Filter::startMediaFilterHandler() { } result = createMediaFilterEventWithIon(mPesOutput); + mPesOutput.clear(); if (result != Result::SUCCESS) { return result; } @@ -739,7 +738,7 @@ Result Filter::startMediaFilterHandler() { return Result::SUCCESS; } -Result Filter::createMediaFilterEventWithIon(vector output) { +Result Filter::createMediaFilterEventWithIon(const vector& output) { if (mUsingSharedAvMem) { if (mSharedAvMemHandle.getNativeHandle() == nullptr) { return Result::UNKNOWN_ERROR; @@ -793,7 +792,7 @@ Result Filter::startTemiFilterHandler() { return Result::SUCCESS; } -bool Filter::writeSectionsAndCreateEvent(vector data) { +bool Filter::writeSectionsAndCreateEvent(const vector& data) { // TODO check how many sections has been read ALOGD("[Filter] section handler"); std::lock_guard lock(mFilterEventLock); @@ -874,7 +873,7 @@ native_handle_t* Filter::createNativeHandle(int fd) { return nativeHandle; } -Result Filter::createIndependentMediaEvents(vector output) { +Result Filter::createIndependentMediaEvents(const vector& output) { int av_fd = createAvIonFd(output.size()); if (av_fd == -1) { return Result::UNKNOWN_ERROR; @@ -912,8 +911,6 @@ Result Filter::createIndependentMediaEvents(vector output) { mFilterEvent.events.resize(size + 1); mFilterEvent.events[size].media(mediaEvent); - // Clear and log - output.clear(); mAvBufferCopyCount = 0; ::close(av_fd); if (DEBUG_FILTER) { @@ -922,7 +919,7 @@ Result Filter::createIndependentMediaEvents(vector output) { return Result::SUCCESS; } -Result Filter::createShareMemMediaEvents(vector output) { +Result Filter::createShareMemMediaEvents(const vector& output) { // copy the filtered data to the shared buffer uint8_t* sharedAvBuffer = getIonBuffer(mSharedAvMemHandle.getNativeHandle()->data[0], output.size() + mSharedAvMemOffset); @@ -955,8 +952,6 @@ Result Filter::createShareMemMediaEvents(vector output) { mFilterEvent.events.resize(size + 1); mFilterEvent.events[size].media(mediaEvent); - // Clear and log - output.clear(); if (DEBUG_FILTER) { ALOGD("[Filter] shared av data length %d", mediaEvent.dataLength); } diff --git a/tv/tuner/1.1/default/Filter.h b/tv/tuner/1.1/default/Filter.h index 659bebf178..1ea2f513a4 100644 --- a/tv/tuner/1.1/default/Filter.h +++ b/tv/tuner/1.1/default/Filter.h @@ -93,8 +93,8 @@ class Filter : public V1_1::IFilter { */ bool createFilterMQ(); uint16_t getTpid(); - void updateFilterOutput(vector data); - void updateRecordOutput(vector data); + void updateFilterOutput(const vector& data); + void updateRecordOutput(const vector& data); void updatePts(uint64_t pts); Result startFilterHandler(); Result startRecordFilterHandler(); @@ -177,7 +177,7 @@ class Filter : public V1_1::IFilter { void deleteEventFlag(); bool writeDataToFilterMQ(const std::vector& data); bool readDataFromMQ(); - bool writeSectionsAndCreateEvent(vector data); + bool writeSectionsAndCreateEvent(const vector& data); void maySendFilterStatusCallback(); DemuxFilterStatus checkFilterStatusChange(uint32_t availableToWrite, uint32_t availableToRead, uint32_t highThreshold, uint32_t lowThreshold); @@ -193,9 +193,9 @@ class Filter : public V1_1::IFilter { int createAvIonFd(int size); uint8_t* getIonBuffer(int fd, int size); native_handle_t* createNativeHandle(int fd); - Result createMediaFilterEventWithIon(vector output); - Result createIndependentMediaEvents(vector output); - Result createShareMemMediaEvents(vector output); + Result createMediaFilterEventWithIon(const vector& output); + Result createIndependentMediaEvents(const vector& output); + Result createShareMemMediaEvents(const vector& output); bool sameFile(int fd1, int fd2); DemuxFilterEvent createMediaEvent();