Allow Descrambler.add/removePid to pass a nullable optional filter

Test: make
Bug: 184851519
Change-Id: Icf7d9526fa15dc11b23e9f73dbfceee748640772
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 7562d39..cb1c126 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -3970,7 +3970,7 @@
     if (descramblerClient == NULL) {
         return (jint) Result::NOT_INITIALIZED;
     }
-    sp<FilterClient> filterClient = getFilterClient(env, filter);
+    sp<FilterClient> filterClient = (filter == NULL) ? NULL : getFilterClient(env, filter);
     Result result = descramblerClient->addPid(getDemuxPid((int)pidType, (int)pid), filterClient);
     return (jint) result;
 }
@@ -3981,7 +3981,7 @@
     if (descramblerClient == NULL) {
         return (jint) Result::NOT_INITIALIZED;
     }
-    sp<FilterClient> filterClient = getFilterClient(env, filter);
+    sp<FilterClient> 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 07be5cf..3e4ed82 100644
--- a/media/jni/tuner/DescramblerClient.cpp
+++ b/media/jni/tuner/DescramblerClient.cpp
@@ -73,26 +73,33 @@
 
 Result DescramblerClient::addPid(DemuxPid pid, sp<FilterClient> optionalSourceFilter) {
     if (mTunerDescrambler != NULL) {
-        Status s = mTunerDescrambler->addPid(
-                getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter());
+        shared_ptr<ITunerFilter> 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<IFilter> 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<FilterClient> optionalSourceFilter) {
     if (mTunerDescrambler != NULL) {
-        Status s = mTunerDescrambler->removePid(
-                getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter());
+        shared_ptr<ITunerFilter> 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<IFilter> halFilter = (optionalSourceFilter == NULL)
+                ? NULL : optionalSourceFilter->getHalFilter();
+        return mDescrambler->removePid(pid, halFilter);
     }
 
     return Result::INVALID_STATE;