xref: /aosp_15_r20/frameworks/av/services/tuner/TunerDescrambler.cpp (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker /**
2*ec779b8eSAndroid Build Coastguard Worker  * Copyright 2021, The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker  *
4*ec779b8eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker  *
8*ec779b8eSAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker  *
10*ec779b8eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker  * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker  */
16*ec779b8eSAndroid Build Coastguard Worker 
17*ec779b8eSAndroid Build Coastguard Worker #define LOG_TAG "TunerDescrambler"
18*ec779b8eSAndroid Build Coastguard Worker 
19*ec779b8eSAndroid Build Coastguard Worker #include "TunerDescrambler.h"
20*ec779b8eSAndroid Build Coastguard Worker 
21*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/hardware/tv/tuner/IFilter.h>
22*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/hardware/tv/tuner/Result.h>
23*ec779b8eSAndroid Build Coastguard Worker #include <utils/Log.h>
24*ec779b8eSAndroid Build Coastguard Worker 
25*ec779b8eSAndroid Build Coastguard Worker #include "TunerDemux.h"
26*ec779b8eSAndroid Build Coastguard Worker #include "TunerFilter.h"
27*ec779b8eSAndroid Build Coastguard Worker 
28*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::IFilter;
29*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::Result;
30*ec779b8eSAndroid Build Coastguard Worker 
31*ec779b8eSAndroid Build Coastguard Worker using namespace std;
32*ec779b8eSAndroid Build Coastguard Worker 
33*ec779b8eSAndroid Build Coastguard Worker namespace aidl {
34*ec779b8eSAndroid Build Coastguard Worker namespace android {
35*ec779b8eSAndroid Build Coastguard Worker namespace media {
36*ec779b8eSAndroid Build Coastguard Worker namespace tv {
37*ec779b8eSAndroid Build Coastguard Worker namespace tuner {
38*ec779b8eSAndroid Build Coastguard Worker 
TunerDescrambler(shared_ptr<IDescrambler> descrambler)39*ec779b8eSAndroid Build Coastguard Worker TunerDescrambler::TunerDescrambler(shared_ptr<IDescrambler> descrambler) {
40*ec779b8eSAndroid Build Coastguard Worker     mDescrambler = descrambler;
41*ec779b8eSAndroid Build Coastguard Worker }
42*ec779b8eSAndroid Build Coastguard Worker 
~TunerDescrambler()43*ec779b8eSAndroid Build Coastguard Worker TunerDescrambler::~TunerDescrambler() {
44*ec779b8eSAndroid Build Coastguard Worker     if (!isClosed) {
45*ec779b8eSAndroid Build Coastguard Worker         close();
46*ec779b8eSAndroid Build Coastguard Worker     }
47*ec779b8eSAndroid Build Coastguard Worker     mDescrambler = nullptr;
48*ec779b8eSAndroid Build Coastguard Worker }
49*ec779b8eSAndroid Build Coastguard Worker 
setDemuxSource(const shared_ptr<ITunerDemux> & in_tunerDemux)50*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerDescrambler::setDemuxSource(
51*ec779b8eSAndroid Build Coastguard Worker         const shared_ptr<ITunerDemux>& in_tunerDemux) {
52*ec779b8eSAndroid Build Coastguard Worker     return mDescrambler->setDemuxSource((static_cast<TunerDemux*>(in_tunerDemux.get()))->getId());
53*ec779b8eSAndroid Build Coastguard Worker }
54*ec779b8eSAndroid Build Coastguard Worker 
setKeyToken(const vector<uint8_t> & in_keyToken)55*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerDescrambler::setKeyToken(const vector<uint8_t>& in_keyToken) {
56*ec779b8eSAndroid Build Coastguard Worker     return mDescrambler->setKeyToken(in_keyToken);
57*ec779b8eSAndroid Build Coastguard Worker }
58*ec779b8eSAndroid Build Coastguard Worker 
addPid(const DemuxPid & in_pid,const shared_ptr<ITunerFilter> & in_optionalSourceFilter)59*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerDescrambler::addPid(
60*ec779b8eSAndroid Build Coastguard Worker         const DemuxPid& in_pid, const shared_ptr<ITunerFilter>& in_optionalSourceFilter) {
61*ec779b8eSAndroid Build Coastguard Worker     shared_ptr<IFilter> halFilter =
62*ec779b8eSAndroid Build Coastguard Worker             (in_optionalSourceFilter == nullptr)
63*ec779b8eSAndroid Build Coastguard Worker                     ? nullptr
64*ec779b8eSAndroid Build Coastguard Worker                     : static_cast<TunerFilter*>(in_optionalSourceFilter.get())->getHalFilter();
65*ec779b8eSAndroid Build Coastguard Worker 
66*ec779b8eSAndroid Build Coastguard Worker     return mDescrambler->addPid(in_pid, halFilter);
67*ec779b8eSAndroid Build Coastguard Worker }
68*ec779b8eSAndroid Build Coastguard Worker 
removePid(const DemuxPid & in_pid,const shared_ptr<ITunerFilter> & in_optionalSourceFilter)69*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerDescrambler::removePid(
70*ec779b8eSAndroid Build Coastguard Worker         const DemuxPid& in_pid, const shared_ptr<ITunerFilter>& in_optionalSourceFilter) {
71*ec779b8eSAndroid Build Coastguard Worker     shared_ptr<IFilter> halFilter =
72*ec779b8eSAndroid Build Coastguard Worker             (in_optionalSourceFilter == nullptr)
73*ec779b8eSAndroid Build Coastguard Worker                     ? nullptr
74*ec779b8eSAndroid Build Coastguard Worker                     : static_cast<TunerFilter*>(in_optionalSourceFilter.get())->getHalFilter();
75*ec779b8eSAndroid Build Coastguard Worker 
76*ec779b8eSAndroid Build Coastguard Worker     return mDescrambler->removePid(in_pid, halFilter);
77*ec779b8eSAndroid Build Coastguard Worker }
78*ec779b8eSAndroid Build Coastguard Worker 
close()79*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerDescrambler::close() {
80*ec779b8eSAndroid Build Coastguard Worker     isClosed = true;
81*ec779b8eSAndroid Build Coastguard Worker     return mDescrambler->close();
82*ec779b8eSAndroid Build Coastguard Worker }
83*ec779b8eSAndroid Build Coastguard Worker 
84*ec779b8eSAndroid Build Coastguard Worker }  // namespace tuner
85*ec779b8eSAndroid Build Coastguard Worker }  // namespace tv
86*ec779b8eSAndroid Build Coastguard Worker }  // namespace media
87*ec779b8eSAndroid Build Coastguard Worker }  // namespace android
88*ec779b8eSAndroid Build Coastguard Worker }  // namespace aidl
89