From fe65288f74ee403d71b1f6f31947f1743af4557d Mon Sep 17 00:00:00 2001 From: Hongguang Date: Wed, 18 Aug 2021 17:42:42 -0700 Subject: [PATCH] MediaEvent should be sent when shared memory info is passed. Bug: 191825295 Test: atest android.media.tv.tuner.cts on both AIDL and HIDL HAL. Test: sampletunertvinput Change-Id: I4a6bcfd95bff7ecd0a12210f102d92a9b981eae2 --- media/jni/android_media_tv_Tuner.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index 5cbdc137b3c6d..f1c72f86e8008 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -633,7 +633,9 @@ void FilterClientCallbackImpl::getMediaEvent(jobjectArray &arr, const int size, offset, nullptr, isSecureMemory, avDataId, mpuSequenceNumber, isPesPrivateData, audioDescriptor); - if (mediaEvent.avMemory.fds.size() > 0 || mediaEvent.avDataId != 0) { + uint64_t avSharedMemSize = mFilterClient->getAvSharedHandleInfo().size; + if (mediaEvent.avMemory.fds.size() > 0 || mediaEvent.avDataId != 0 || + (dataLength > 0 && (dataLength + offset) < avSharedMemSize)) { sp mediaEventSp = new MediaEvent(mFilterClient, dupFromAidl(mediaEvent.avMemory), mediaEvent.avDataId, dataLength + offset, obj); @@ -1756,15 +1758,16 @@ jobject JTuner::openTimeFilter() { } jobject JTuner::openDvr(DvrType type, jlong bufferSize) { - ALOGD("JTuner::openDvr"); + ALOGV("JTuner::openDvr"); if (mDemuxClient == nullptr) { return nullptr; } + sp dvrClient; sp callback = new DvrClientCallbackImpl(); dvrClient = mDemuxClient->openDvr(type, (int) bufferSize, callback); - if (dvrClient == nullptr) { + ALOGD("Failed to open Dvr"); return nullptr; } @@ -4060,7 +4063,7 @@ static void android_media_tv_Tuner_dvr_set_fd(JNIEnv *env, jobject dvr, jint fd) ALOGD("Failed to set FD for dvr: dvr client not found"); return; } - dvrClient->setFd((int)fd); + dvrClient->setFd(fd); ALOGV("set fd = %d", fd); }