Refactor Tuner JNI and move the interaction with IDescrambler into DescramblerClient
Test: atest android.media.tv.tuner.cts on Cuttlefish
Bug: 174095851
Change-Id: Ie6c465324bbec71b080f9fdead003f3c56d79010
diff --git a/media/jni/tuner/TunerClient.cpp b/media/jni/tuner/TunerClient.cpp
index 69cd3d3..e469aa3 100644
--- a/media/jni/tuner/TunerClient.cpp
+++ b/media/jni/tuner/TunerClient.cpp
@@ -161,9 +161,11 @@
if (mTuner != NULL) {
// TODO: pending aidl interface
sp<DemuxClient> demuxClient = new DemuxClient();
- sp<IDemux> hidlDemux = openHidlDemux();
+ int demuxId;
+ sp<IDemux> hidlDemux = openHidlDemux(demuxId);
if (hidlDemux != NULL) {
demuxClient->setHidlDemux(hidlDemux);
+ demuxClient->setId(demuxId);
return demuxClient;
}
}
@@ -177,8 +179,24 @@
}
sp<DescramblerClient> TunerClient::openDescrambler(int /*descramblerHandle*/) {
- return NULL;
-}
+ if (mTunerService != NULL) {
+ // TODO: handle error code
+ /*shared_ptr<ITunerDescrambler> tunerDescrambler;
+ mTunerService->openDescrambler(demuxHandle, &tunerDescrambler);
+ return new DescramblerClient(tunerDescrambler);*/
+ }
+
+ if (mTuner != NULL) {
+ // TODO: pending aidl interface
+ sp<DescramblerClient> descramblerClient = new DescramblerClient();
+ sp<IDescrambler> hidlDescrambler = openHidlDescrambler();
+ if (hidlDescrambler != NULL) {
+ descramblerClient->setHidlDescrambler(hidlDescrambler);
+ return descramblerClient;
+ }
+ }
+
+ return NULL;}
sp<LnbClient> TunerClient::openLnb(int lnbHandle) {
if (mTunerService != NULL) {
@@ -272,12 +290,13 @@
return res;
}
-sp<IDemux> TunerClient::openHidlDemux() {
+sp<IDemux> TunerClient::openHidlDemux(int& demuxId) {
sp<IDemux> demux;
Result res;
- mTuner->openDemux([&](Result result, uint32_t /*id*/, const sp<IDemux>& demuxSp) {
+ mTuner->openDemux([&](Result result, uint32_t id, const sp<IDemux>& demuxSp) {
demux = demuxSp;
+ demuxId = id;
res = result;
});
if (res != Result::SUCCESS || demux == nullptr) {
@@ -318,6 +337,22 @@
return lnb;
}
+sp<IDescrambler> TunerClient::openHidlDescrambler() {
+ sp<IDescrambler> descrambler;
+ Result res;
+
+ mTuner->openDescrambler([&](Result r, const sp<IDescrambler>& descramblerSp) {
+ res = r;
+ descrambler = descramblerSp;
+ });
+
+ if (res != Result::SUCCESS || descrambler == NULL) {
+ return NULL;
+ }
+
+ return descrambler;
+}
+
FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerServiceFrontendInfo aidlFrontendInfo) {
FrontendInfo hidlFrontendInfo {
.type = static_cast<FrontendType>(aidlFrontendInfo.type),