Loading services/tuner/TunerDemux.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -124,4 +124,17 @@ Status TunerDemux::openDvr(int dvrType, int bufferSize, const shared_ptr<ITunerD *_aidl_return = ::ndk::SharedRefBase::make<TunerDvr>(hidlDvr, dvrType); return Status::ok(); } Status TunerDemux::close() { if (mDemux == nullptr) { ALOGE("IDemux is not initialized."); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res = mDemux->close(); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } return Status::ok(); } } // namespace android services/tuner/TunerDemux.h +1 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ public: Status openDvr( int dvbType, int bufferSize, const shared_ptr<ITunerDvrCallback>& cb, shared_ptr<ITunerDvr>* _aidl_return) override; Status close() override; private: sp<IDemux> mDemux; Loading services/tuner/TunerFilter.cpp +61 −7 Original line number Diff line number Diff line Loading @@ -16,16 +16,19 @@ #define LOG_TAG "TunerFilter" #include <aidlcommonsupport/NativeHandle.h> #include "TunerFilter.h" using ::android::hardware::hidl_handle; using ::android::hardware::tv::tuner::V1_0::DemuxFilterMainType; using ::android::hardware::tv::tuner::V1_0::DemuxFilterSettings; using ::android::hardware::tv::tuner::V1_0::DemuxMmtpFilterType; using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterSettings; using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterType; using ::android::hardware::tv::tuner::V1_0::Result; namespace android { TunerFilter::TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback) { TunerFilter::TunerFilter( sp<IFilter> filter, sp<IFilterCallback> callback) { mFilter = filter; mFilter_1_1 = ::android::hardware::tv::tuner::V1_1::IFilter::castFrom(filter); mFilterCallback = callback; Loading Loading @@ -103,6 +106,7 @@ Status TunerFilter::configure(const TunerFilterConfiguration& config) { break; } } halSettings.ts(ts); break; } } Loading @@ -113,6 +117,44 @@ Status TunerFilter::configure(const TunerFilterConfiguration& config) { return Status::ok(); } Status TunerFilter::getAvSharedHandleInfo(TunerFilterSharedHandleInfo* _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->getAvSharedHandle([&](Result r, hidl_handle avMemory, uint64_t avMemSize) { res = r; if (res == Result::SUCCESS) { TunerFilterSharedHandleInfo info{ .handle = dupToAidl(hidl_handle(avMemory.getNativeHandle())), .size = static_cast<int64_t>(avMemSize), }; *_aidl_return = std::move(info); } else { _aidl_return = NULL; } }); return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } Status TunerFilter::releaseAvHandle( const ::aidl::android::hardware::common::NativeHandle& handle, int64_t avDataId) { if (mFilter == nullptr) { ALOGE("IFilter is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res = mFilter->releaseAvHandle(hidl_handle(makeFromAidl(handle)), avDataId); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } return Status::ok(); } Status TunerFilter::start() { if (mFilter == nullptr) { ALOGE("IFilter is not initialized"); Loading Loading @@ -149,6 +191,18 @@ Status TunerFilter::flush() { return Status::ok(); } Status TunerFilter::close() { if (mFilter == nullptr) { ALOGE("IFilter is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res = mFilter->close(); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } return Status::ok(); } sp<IFilter> TunerFilter::getHalFilter() { return mFilter; } Loading @@ -164,8 +218,8 @@ void TunerFilter::FilterCallback::getMediaEvent( tunerMedia.streamId = static_cast<int>(mediaEvent.streamId); tunerMedia.isPtsPresent = mediaEvent.isPtsPresent; tunerMedia.pts = static_cast<long>(mediaEvent.pts); tunerMedia.dataLength = static_cast<long>(mediaEvent.dataLength); tunerMedia.offset = static_cast<long>(mediaEvent.offset); tunerMedia.dataLength = static_cast<int>(mediaEvent.dataLength); tunerMedia.offset = static_cast<int>(mediaEvent.offset); tunerMedia.isSecureMemory = mediaEvent.isSecureMemory; tunerMedia.avDataId = static_cast<long>(mediaEvent.avDataId); tunerMedia.mpuSequenceNumber = static_cast<int>(mediaEvent.mpuSequenceNumber); Loading @@ -187,7 +241,6 @@ Return<void> TunerFilter::FilterCallback::onFilterStatus(DemuxFilterStatus statu } Return<void> TunerFilter::FilterCallback::onFilterEvent(const DemuxFilterEvent& filterEvent) { ALOGD("FilterCallback::onFilterEvent"); std::vector<DemuxFilterEvent::Event> events = filterEvent.events; std::vector<TunerFilterEvent> tunerEvent; Loading @@ -203,7 +256,8 @@ Return<void> TunerFilter::FilterCallback::onFilterEvent(const DemuxFilterEvent& } } } mTunerFilterCallback->onFilterEvent(&tunerEvent); mTunerFilterCallback->onFilterEvent(tunerEvent); return Void(); } Loading services/tuner/TunerFilter.h +6 −1 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 <aidlcommonsupport/NativeHandle.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 @@ -29,6 +30,7 @@ using ::aidl::android::media::tv::tuner::ITunerFilterCallback; using ::aidl::android::media::tv::tuner::TunerFilterConfiguration; using ::aidl::android::media::tv::tuner::TunerFilterEvent; using ::aidl::android::media::tv::tuner::TunerFilterMediaEvent; using ::aidl::android::media::tv::tuner::TunerFilterSharedHandleInfo; using ::aidl::android::media::tv::tuner::TunerFilterSettings; using ::android::hardware::Return; using ::android::hardware::Void; Loading @@ -39,7 +41,6 @@ using ::android::hardware::tv::tuner::V1_0::DemuxFilterStatus; using ::android::hardware::tv::tuner::V1_0::IFilter; using ::android::hardware::tv::tuner::V1_0::IFilterCallback; namespace android { class TunerFilter : public BnTunerFilter { Loading @@ -50,9 +51,13 @@ public: Status getId(int32_t* _aidl_return) override; Status getId64Bit(int64_t* _aidl_return) override; Status configure(const TunerFilterConfiguration& config) override; Status getAvSharedHandleInfo(TunerFilterSharedHandleInfo* _aidl_return) override; Status releaseAvHandle(const ::aidl::android::hardware::common::NativeHandle& handle, int64_t avDataId) override; Status start() override; Status stop() override; Status flush() override; Status close() override; sp<IFilter> getHalFilter(); struct FilterCallback : public IFilterCallback { Loading services/tuner/TunerFrontend.cpp +211 −165 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
services/tuner/TunerDemux.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -124,4 +124,17 @@ Status TunerDemux::openDvr(int dvrType, int bufferSize, const shared_ptr<ITunerD *_aidl_return = ::ndk::SharedRefBase::make<TunerDvr>(hidlDvr, dvrType); return Status::ok(); } Status TunerDemux::close() { if (mDemux == nullptr) { ALOGE("IDemux is not initialized."); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res = mDemux->close(); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } return Status::ok(); } } // namespace android
services/tuner/TunerDemux.h +1 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ public: Status openDvr( int dvbType, int bufferSize, const shared_ptr<ITunerDvrCallback>& cb, shared_ptr<ITunerDvr>* _aidl_return) override; Status close() override; private: sp<IDemux> mDemux; Loading
services/tuner/TunerFilter.cpp +61 −7 Original line number Diff line number Diff line Loading @@ -16,16 +16,19 @@ #define LOG_TAG "TunerFilter" #include <aidlcommonsupport/NativeHandle.h> #include "TunerFilter.h" using ::android::hardware::hidl_handle; using ::android::hardware::tv::tuner::V1_0::DemuxFilterMainType; using ::android::hardware::tv::tuner::V1_0::DemuxFilterSettings; using ::android::hardware::tv::tuner::V1_0::DemuxMmtpFilterType; using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterSettings; using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterType; using ::android::hardware::tv::tuner::V1_0::Result; namespace android { TunerFilter::TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback) { TunerFilter::TunerFilter( sp<IFilter> filter, sp<IFilterCallback> callback) { mFilter = filter; mFilter_1_1 = ::android::hardware::tv::tuner::V1_1::IFilter::castFrom(filter); mFilterCallback = callback; Loading Loading @@ -103,6 +106,7 @@ Status TunerFilter::configure(const TunerFilterConfiguration& config) { break; } } halSettings.ts(ts); break; } } Loading @@ -113,6 +117,44 @@ Status TunerFilter::configure(const TunerFilterConfiguration& config) { return Status::ok(); } Status TunerFilter::getAvSharedHandleInfo(TunerFilterSharedHandleInfo* _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->getAvSharedHandle([&](Result r, hidl_handle avMemory, uint64_t avMemSize) { res = r; if (res == Result::SUCCESS) { TunerFilterSharedHandleInfo info{ .handle = dupToAidl(hidl_handle(avMemory.getNativeHandle())), .size = static_cast<int64_t>(avMemSize), }; *_aidl_return = std::move(info); } else { _aidl_return = NULL; } }); return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } Status TunerFilter::releaseAvHandle( const ::aidl::android::hardware::common::NativeHandle& handle, int64_t avDataId) { if (mFilter == nullptr) { ALOGE("IFilter is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res = mFilter->releaseAvHandle(hidl_handle(makeFromAidl(handle)), avDataId); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } return Status::ok(); } Status TunerFilter::start() { if (mFilter == nullptr) { ALOGE("IFilter is not initialized"); Loading Loading @@ -149,6 +191,18 @@ Status TunerFilter::flush() { return Status::ok(); } Status TunerFilter::close() { if (mFilter == nullptr) { ALOGE("IFilter is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result res = mFilter->close(); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } return Status::ok(); } sp<IFilter> TunerFilter::getHalFilter() { return mFilter; } Loading @@ -164,8 +218,8 @@ void TunerFilter::FilterCallback::getMediaEvent( tunerMedia.streamId = static_cast<int>(mediaEvent.streamId); tunerMedia.isPtsPresent = mediaEvent.isPtsPresent; tunerMedia.pts = static_cast<long>(mediaEvent.pts); tunerMedia.dataLength = static_cast<long>(mediaEvent.dataLength); tunerMedia.offset = static_cast<long>(mediaEvent.offset); tunerMedia.dataLength = static_cast<int>(mediaEvent.dataLength); tunerMedia.offset = static_cast<int>(mediaEvent.offset); tunerMedia.isSecureMemory = mediaEvent.isSecureMemory; tunerMedia.avDataId = static_cast<long>(mediaEvent.avDataId); tunerMedia.mpuSequenceNumber = static_cast<int>(mediaEvent.mpuSequenceNumber); Loading @@ -187,7 +241,6 @@ Return<void> TunerFilter::FilterCallback::onFilterStatus(DemuxFilterStatus statu } Return<void> TunerFilter::FilterCallback::onFilterEvent(const DemuxFilterEvent& filterEvent) { ALOGD("FilterCallback::onFilterEvent"); std::vector<DemuxFilterEvent::Event> events = filterEvent.events; std::vector<TunerFilterEvent> tunerEvent; Loading @@ -203,7 +256,8 @@ Return<void> TunerFilter::FilterCallback::onFilterEvent(const DemuxFilterEvent& } } } mTunerFilterCallback->onFilterEvent(&tunerEvent); mTunerFilterCallback->onFilterEvent(tunerEvent); return Void(); } Loading
services/tuner/TunerFilter.h +6 −1 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 <aidlcommonsupport/NativeHandle.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 @@ -29,6 +30,7 @@ using ::aidl::android::media::tv::tuner::ITunerFilterCallback; using ::aidl::android::media::tv::tuner::TunerFilterConfiguration; using ::aidl::android::media::tv::tuner::TunerFilterEvent; using ::aidl::android::media::tv::tuner::TunerFilterMediaEvent; using ::aidl::android::media::tv::tuner::TunerFilterSharedHandleInfo; using ::aidl::android::media::tv::tuner::TunerFilterSettings; using ::android::hardware::Return; using ::android::hardware::Void; Loading @@ -39,7 +41,6 @@ using ::android::hardware::tv::tuner::V1_0::DemuxFilterStatus; using ::android::hardware::tv::tuner::V1_0::IFilter; using ::android::hardware::tv::tuner::V1_0::IFilterCallback; namespace android { class TunerFilter : public BnTunerFilter { Loading @@ -50,9 +51,13 @@ public: Status getId(int32_t* _aidl_return) override; Status getId64Bit(int64_t* _aidl_return) override; Status configure(const TunerFilterConfiguration& config) override; Status getAvSharedHandleInfo(TunerFilterSharedHandleInfo* _aidl_return) override; Status releaseAvHandle(const ::aidl::android::hardware::common::NativeHandle& handle, int64_t avDataId) override; Status start() override; Status stop() override; Status flush() override; Status close() override; sp<IFilter> getHalFilter(); struct FilterCallback : public IFilterCallback { Loading
services/tuner/TunerFrontend.cpp +211 −165 File changed.Preview size limit exceeded, changes collapsed. Show changes