Loading services/tuner/TunerFilter.cpp +20 −0 Original line number Diff line number Diff line Loading @@ -24,11 +24,13 @@ namespace android { TunerFilter::TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback) { mFilter = filter; mFilter_1_1 = ::android::hardware::tv::tuner::V1_1::IFilter::castFrom(filter); mFilterCallback = callback; } TunerFilter::~TunerFilter() { mFilter = nullptr; mFilter_1_1 = nullptr; mFilterCallback = nullptr; } Loading @@ -50,6 +52,24 @@ Status TunerFilter::getId(int32_t* _aidl_return) { return Status::ok(); } Status TunerFilter::getId64Bit(int64_t* _aidl_return) { if (mFilter_1_1 == nullptr) { ALOGE("IFilter_1_1 is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res; mFilter_1_1->getId64Bit([&](Result r, uint64_t filterId) { res = r; mId64Bit = filterId; }); if (res != Result::SUCCESS) { return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res)); } *_aidl_return = mId64Bit; return Status::ok(); } /////////////// FilterCallback /////////////////////// Return<void> TunerFilter::FilterCallback::onFilterStatus(DemuxFilterStatus status) { Loading services/tuner/TunerFilter.h +4 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <aidl/android/media/tv/tuner/BnTunerFilter.h> #include <aidl/android/media/tv/tuner/ITunerFilterCallback.h> #include <android/hardware/tv/tuner/1.1/IFilter.h> #include <android/hardware/tv/tuner/1.0/ITuner.h> #include <media/stagefright/foundation/ADebug.h> Loading @@ -41,6 +42,7 @@ public: TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback); virtual ~TunerFilter(); Status getId(int32_t* _aidl_return) override; Status getId64Bit(int64_t* _aidl_return) override; struct FilterCallback : public IFilterCallback { FilterCallback(const std::shared_ptr<ITunerFilterCallback> tunerFilterCallback) Loading @@ -54,8 +56,10 @@ public: private: sp<IFilter> mFilter; sp<::android::hardware::tv::tuner::V1_1::IFilter> mFilter_1_1; sp<IFilterCallback> mFilterCallback; int32_t mId; int64_t mId64Bit; }; } // namespace android Loading services/tuner/aidl/android/media/tv/tuner/ITunerFilter.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,9 @@ interface ITunerFilter { * Get the filter Id. */ int getId(); /** * Get the 64-bit filter Id. */ long getId64Bit(); } Loading
services/tuner/TunerFilter.cpp +20 −0 Original line number Diff line number Diff line Loading @@ -24,11 +24,13 @@ namespace android { TunerFilter::TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback) { mFilter = filter; mFilter_1_1 = ::android::hardware::tv::tuner::V1_1::IFilter::castFrom(filter); mFilterCallback = callback; } TunerFilter::~TunerFilter() { mFilter = nullptr; mFilter_1_1 = nullptr; mFilterCallback = nullptr; } Loading @@ -50,6 +52,24 @@ Status TunerFilter::getId(int32_t* _aidl_return) { return Status::ok(); } Status TunerFilter::getId64Bit(int64_t* _aidl_return) { if (mFilter_1_1 == nullptr) { ALOGE("IFilter_1_1 is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res; mFilter_1_1->getId64Bit([&](Result r, uint64_t filterId) { res = r; mId64Bit = filterId; }); if (res != Result::SUCCESS) { return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res)); } *_aidl_return = mId64Bit; return Status::ok(); } /////////////// FilterCallback /////////////////////// Return<void> TunerFilter::FilterCallback::onFilterStatus(DemuxFilterStatus status) { Loading
services/tuner/TunerFilter.h +4 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <aidl/android/media/tv/tuner/BnTunerFilter.h> #include <aidl/android/media/tv/tuner/ITunerFilterCallback.h> #include <android/hardware/tv/tuner/1.1/IFilter.h> #include <android/hardware/tv/tuner/1.0/ITuner.h> #include <media/stagefright/foundation/ADebug.h> Loading @@ -41,6 +42,7 @@ public: TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback); virtual ~TunerFilter(); Status getId(int32_t* _aidl_return) override; Status getId64Bit(int64_t* _aidl_return) override; struct FilterCallback : public IFilterCallback { FilterCallback(const std::shared_ptr<ITunerFilterCallback> tunerFilterCallback) Loading @@ -54,8 +56,10 @@ public: private: sp<IFilter> mFilter; sp<::android::hardware::tv::tuner::V1_1::IFilter> mFilter_1_1; sp<IFilterCallback> mFilterCallback; int32_t mId; int64_t mId64Bit; }; } // namespace android Loading
services/tuner/aidl/android/media/tv/tuner/ITunerFilter.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,9 @@ interface ITunerFilter { * Get the filter Id. */ int getId(); /** * Get the 64-bit filter Id. */ long getId64Bit(); }