From 316b045b9a7641c201ddfd74a1b430f1fff37d0e Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Thu, 8 Apr 2021 12:24:04 -0700 Subject: [PATCH] Allow Descrambler.add/removePid to pass a nullable optional filter Test: make Bug: 184851519 Change-Id: Icf7d9526fa15dc11b23e9f73dbfceee748640772 --- media/jni/android_media_tv_Tuner.cpp | 4 ++-- media/jni/tuner/DescramblerClient.cpp | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index 7562d3955ef74..cb1c126c056f9 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -3970,7 +3970,7 @@ static jint android_media_tv_Tuner_descrambler_add_pid( if (descramblerClient == NULL) { return (jint) Result::NOT_INITIALIZED; } - sp filterClient = getFilterClient(env, filter); + sp filterClient = (filter == NULL) ? NULL : getFilterClient(env, filter); Result result = descramblerClient->addPid(getDemuxPid((int)pidType, (int)pid), filterClient); return (jint) result; } @@ -3981,7 +3981,7 @@ static jint android_media_tv_Tuner_descrambler_remove_pid( if (descramblerClient == NULL) { return (jint) Result::NOT_INITIALIZED; } - sp filterClient = getFilterClient(env, filter); + sp filterClient = (filter == NULL) ? NULL : getFilterClient(env, filter); Result result = descramblerClient->removePid(getDemuxPid((int)pidType, (int)pid), filterClient); return (jint) result; } diff --git a/media/jni/tuner/DescramblerClient.cpp b/media/jni/tuner/DescramblerClient.cpp index 07be5cf33764c..3e4ed8280ee64 100644 --- a/media/jni/tuner/DescramblerClient.cpp +++ b/media/jni/tuner/DescramblerClient.cpp @@ -73,26 +73,33 @@ Result DescramblerClient::setKeyToken(vector keyToken) { Result DescramblerClient::addPid(DemuxPid pid, sp optionalSourceFilter) { if (mTunerDescrambler != NULL) { - Status s = mTunerDescrambler->addPid( - getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter()); + shared_ptr aidlFilter = (optionalSourceFilter == NULL) + ? NULL : optionalSourceFilter->getAidlFilter(); + Status s = mTunerDescrambler->addPid(getAidlDemuxPid(pid), aidlFilter); return ClientHelper::getServiceSpecificErrorCode(s); } if (mDescrambler != NULL) { - return mDescrambler->addPid(pid, optionalSourceFilter->getHalFilter()); + sp halFilter = (optionalSourceFilter == NULL) + ? NULL : optionalSourceFilter->getHalFilter(); + return mDescrambler->addPid(pid, halFilter); } - return Result::INVALID_STATE;} + return Result::INVALID_STATE; +} Result DescramblerClient::removePid(DemuxPid pid, sp optionalSourceFilter) { if (mTunerDescrambler != NULL) { - Status s = mTunerDescrambler->removePid( - getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter()); + shared_ptr aidlFilter = (optionalSourceFilter == NULL) + ? NULL : optionalSourceFilter->getAidlFilter(); + Status s = mTunerDescrambler->removePid(getAidlDemuxPid(pid), aidlFilter); return ClientHelper::getServiceSpecificErrorCode(s); } if (mDescrambler != NULL) { - return mDescrambler->removePid(pid, optionalSourceFilter->getHalFilter()); + sp halFilter = (optionalSourceFilter == NULL) + ? NULL : optionalSourceFilter->getHalFilter(); + return mDescrambler->removePid(pid, halFilter); } return Result::INVALID_STATE;