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;