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); }