Merge "Connect TunerDescrambler and DescramblerClient" into sc-dev
This commit is contained in:
@@ -100,6 +100,11 @@ public:
|
||||
*/
|
||||
Result close();
|
||||
|
||||
/**
|
||||
* Get the Aidl demux to set as source.
|
||||
*/
|
||||
shared_ptr<ITunerDemux> getAidlDemux() { return mTunerDemux; }
|
||||
|
||||
void setId(int id) { mId = id; }
|
||||
int getId() { return mId; }
|
||||
|
||||
|
||||
@@ -27,13 +27,12 @@ namespace android {
|
||||
|
||||
/////////////// DescramblerClient ///////////////////////
|
||||
|
||||
// TODO: pending aidl interface
|
||||
DescramblerClient::DescramblerClient() {
|
||||
//mTunerDescrambler = tunerDescrambler;
|
||||
DescramblerClient::DescramblerClient(shared_ptr<ITunerDescrambler> tunerDescrambler) {
|
||||
mTunerDescrambler = tunerDescrambler;
|
||||
}
|
||||
|
||||
DescramblerClient::~DescramblerClient() {
|
||||
//mTunerDescrambler = NULL;
|
||||
mTunerDescrambler = NULL;
|
||||
mDescrambler = NULL;
|
||||
}
|
||||
|
||||
@@ -47,7 +46,10 @@ Result DescramblerClient::setDemuxSource(sp<DemuxClient> demuxClient) {
|
||||
return Result::INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
// TODO: pending aidl interface
|
||||
if (mTunerDescrambler != NULL) {
|
||||
Status s = mTunerDescrambler->setDemuxSource(demuxClient->getAidlDemux());
|
||||
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||
}
|
||||
|
||||
if (mDescrambler != NULL) {
|
||||
return mDescrambler->setDemuxSource(demuxClient->getId());
|
||||
@@ -57,7 +59,10 @@ Result DescramblerClient::setDemuxSource(sp<DemuxClient> demuxClient) {
|
||||
}
|
||||
|
||||
Result DescramblerClient::setKeyToken(vector<uint8_t> keyToken) {
|
||||
// TODO: pending aidl interface
|
||||
if (mTunerDescrambler != NULL) {
|
||||
Status s = mTunerDescrambler->setKeyToken(keyToken);
|
||||
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||
}
|
||||
|
||||
if (mDescrambler != NULL) {
|
||||
return mDescrambler->setKeyToken(keyToken);
|
||||
@@ -67,7 +72,11 @@ Result DescramblerClient::setKeyToken(vector<uint8_t> keyToken) {
|
||||
}
|
||||
|
||||
Result DescramblerClient::addPid(DemuxPid pid, sp<FilterClient> optionalSourceFilter) {
|
||||
// TODO: pending aidl interface
|
||||
if (mTunerDescrambler != NULL) {
|
||||
Status s = mTunerDescrambler->addPid(
|
||||
getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter());
|
||||
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||
}
|
||||
|
||||
if (mDescrambler != NULL) {
|
||||
return mDescrambler->addPid(pid, optionalSourceFilter->getHalFilter());
|
||||
@@ -76,16 +85,24 @@ Result DescramblerClient::addPid(DemuxPid pid, sp<FilterClient> optionalSourceFi
|
||||
return Result::INVALID_STATE;}
|
||||
|
||||
Result DescramblerClient::removePid(DemuxPid pid, sp<FilterClient> optionalSourceFilter) {
|
||||
// TODO: pending aidl interface
|
||||
|
||||
if (mDescrambler != NULL) {
|
||||
return mDescrambler->addPid(pid, optionalSourceFilter->getHalFilter());
|
||||
if (mTunerDescrambler != NULL) {
|
||||
Status s = mTunerDescrambler->removePid(
|
||||
getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter());
|
||||
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||
}
|
||||
|
||||
return Result::INVALID_STATE;}
|
||||
if (mDescrambler != NULL) {
|
||||
return mDescrambler->removePid(pid, optionalSourceFilter->getHalFilter());
|
||||
}
|
||||
|
||||
return Result::INVALID_STATE;
|
||||
}
|
||||
|
||||
Result DescramblerClient::close() {
|
||||
// TODO: pending aidl interface
|
||||
if (mTunerDescrambler != NULL) {
|
||||
Status s = mTunerDescrambler->close();
|
||||
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||
}
|
||||
|
||||
if (mDescrambler != NULL) {
|
||||
return mDescrambler->close();
|
||||
@@ -95,4 +112,16 @@ Result DescramblerClient::close() {
|
||||
|
||||
/////////////// DescramblerClient Helper Methods ///////////////////////
|
||||
|
||||
TunerDemuxPid DescramblerClient::getAidlDemuxPid(DemuxPid& pid) {
|
||||
TunerDemuxPid aidlPid;
|
||||
switch (pid.getDiscriminator()) {
|
||||
case DemuxPid::hidl_discriminator::tPid:
|
||||
aidlPid.set<TunerDemuxPid::tPid>((int)pid.tPid());
|
||||
break;
|
||||
case DemuxPid::hidl_discriminator::mmtpPid:
|
||||
aidlPid.set<TunerDemuxPid::mmtpPid>((int)pid.mmtpPid());
|
||||
break;
|
||||
}
|
||||
return aidlPid;
|
||||
}
|
||||
} // namespace android
|
||||
|
||||
@@ -17,14 +17,15 @@
|
||||
#ifndef _ANDROID_MEDIA_TV_DESCRAMBLER_CLIENT_H_
|
||||
#define _ANDROID_MEDIA_TV_DESCRAMBLER_CLIENT_H_
|
||||
|
||||
//#include <aidl/android/media/tv/tuner/ITunerDescrambler.h>
|
||||
#include <aidl/android/media/tv/tuner/ITunerDescrambler.h>
|
||||
#include <android/hardware/tv/tuner/1.0/IDescrambler.h>
|
||||
#include <android/hardware/tv/tuner/1.1/types.h>
|
||||
|
||||
#include "DemuxClient.h"
|
||||
#include "FilterClient.h"
|
||||
|
||||
//using ::aidl::android::media::tv::tuner::ITunerDescrambler;
|
||||
using ::aidl::android::media::tv::tuner::ITunerDescrambler;
|
||||
using ::aidl::android::media::tv::tuner::TunerDemuxPid;
|
||||
|
||||
using ::android::hardware::tv::tuner::V1_0::IDescrambler;
|
||||
using ::android::hardware::tv::tuner::V1_0::Result;
|
||||
@@ -37,8 +38,7 @@ namespace android {
|
||||
struct DescramblerClient : public RefBase {
|
||||
|
||||
public:
|
||||
// TODO: pending hidl interface
|
||||
DescramblerClient();
|
||||
DescramblerClient(shared_ptr<ITunerDescrambler> tunerDescrambler);
|
||||
~DescramblerClient();
|
||||
|
||||
// TODO: remove after migration to Tuner Service is done.
|
||||
@@ -70,12 +70,13 @@ public:
|
||||
Result close();
|
||||
|
||||
private:
|
||||
TunerDemuxPid getAidlDemuxPid(DemuxPid& pid);
|
||||
|
||||
/**
|
||||
* An AIDL Tuner Descrambler Singleton assigned at the first time the Tuner Client
|
||||
* opens a descrambler. Default null when descrambler is not opened.
|
||||
*/
|
||||
// TODO: pending on aidl interface
|
||||
//shared_ptr<ITunerDescrambler> mTunerDescrambler;
|
||||
shared_ptr<ITunerDescrambler> mTunerDescrambler;
|
||||
|
||||
/**
|
||||
* A Descrambler HAL interface that is ready before migrating to the TunerDescrambler.
|
||||
|
||||
@@ -224,17 +224,18 @@ shared_ptr<DemuxCapabilities> TunerClient::getDemuxCaps() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sp<DescramblerClient> TunerClient::openDescrambler(int /*descramblerHandle*/) {
|
||||
sp<DescramblerClient> TunerClient::openDescrambler(int descramblerHandle) {
|
||||
if (mTunerService != NULL) {
|
||||
// TODO: handle error code
|
||||
/*shared_ptr<ITunerDescrambler> tunerDescrambler;
|
||||
mTunerService->openDescrambler(demuxHandle, &tunerDescrambler);
|
||||
return new DescramblerClient(tunerDescrambler);*/
|
||||
shared_ptr<ITunerDescrambler> tunerDescrambler;
|
||||
Status s = mTunerService->openDescrambler(descramblerHandle, &tunerDescrambler);
|
||||
if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
return new DescramblerClient(tunerDescrambler);
|
||||
}
|
||||
|
||||
if (mTuner != NULL) {
|
||||
// TODO: pending aidl interface
|
||||
sp<DescramblerClient> descramblerClient = new DescramblerClient();
|
||||
sp<DescramblerClient> descramblerClient = new DescramblerClient(NULL);
|
||||
sp<IDescrambler> hidlDescrambler = openHidlDescrambler();
|
||||
if (hidlDescrambler != NULL) {
|
||||
descramblerClient->setHidlDescrambler(hidlDescrambler);
|
||||
|
||||
Reference in New Issue
Block a user