Fix Tuner#shareFrontendFromTuner()
Bug: 195154259
Bug: 195331006
Test: android.media.tv.tuner.cts.TunerTest (all 29 tests pass)
Change-Id: Ia1618b741b0d5bd2b03ef301d4950e020f9dc9fd
diff --git a/services/tuner/TunerDemux.cpp b/services/tuner/TunerDemux.cpp
index 1122368..99032ad 100644
--- a/services/tuner/TunerDemux.cpp
+++ b/services/tuner/TunerDemux.cpp
@@ -56,6 +56,19 @@
return Status::ok();
}
+Status TunerDemux::setFrontendDataSourceById(int frontendId) {
+ if (mDemux == nullptr) {
+ ALOGE("IDemux is not initialized");
+ return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE));
+ }
+
+ Result res = mDemux->setFrontendDataSource(frontendId);
+ if (res != Result::SUCCESS) {
+ return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
+ }
+ return Status::ok();
+}
+
Status TunerDemux::openFilter(
int type, int subType, int bufferSize, const std::shared_ptr<ITunerFilterCallback>& cb,
std::shared_ptr<ITunerFilter>* _aidl_return) {
diff --git a/services/tuner/TunerDemux.h b/services/tuner/TunerDemux.h
index 2a9836b..c2f91f0 100644
--- a/services/tuner/TunerDemux.h
+++ b/services/tuner/TunerDemux.h
@@ -43,6 +43,7 @@
TunerDemux(sp<IDemux> demux, int demuxId);
virtual ~TunerDemux();
Status setFrontendDataSource(const shared_ptr<ITunerFrontend>& frontend) override;
+ Status setFrontendDataSourceById(int frontendId) override;
Status openFilter(
int mainType, int subtype, int bufferSize, const shared_ptr<ITunerFilterCallback>& cb,
shared_ptr<ITunerFilter>* _aidl_return) override;
diff --git a/services/tuner/aidl/android/media/tv/tuner/ITunerDemux.aidl b/services/tuner/aidl/android/media/tv/tuner/ITunerDemux.aidl
index 73b00ae..b91b359 100644
--- a/services/tuner/aidl/android/media/tv/tuner/ITunerDemux.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/ITunerDemux.aidl
@@ -36,6 +36,11 @@
void setFrontendDataSource(in ITunerFrontend frontend);
/**
+ * Set a frontend resource by ID as data input of the demux
+ */
+ void setFrontendDataSourceById(in int frontendId);
+
+ /**
* Open a new filter in the demux
*/
ITunerFilter openFilter(
diff --git a/services/tuner/aidl/android/media/tv/tuner/ITunerService.aidl b/services/tuner/aidl/android/media/tv/tuner/ITunerService.aidl
index 755b152..44b369c 100644
--- a/services/tuner/aidl/android/media/tv/tuner/ITunerService.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/ITunerService.aidl
@@ -43,10 +43,10 @@
/**
* Retrieve the frontend's information.
*
- * @param frontendHandle the handle of the frontend granted by TRM.
+ * @param frontendId the ID of the frontend.
* @return the information of the frontend.
*/
- TunerFrontendInfo getFrontendInfo(in int frontendHandle);
+ TunerFrontendInfo getFrontendInfo(in int frontendId);
/**
* Get Dtmb Frontend Capabilities.