Merge "Connect TunerTimeFilter/TunerDemux with TimeFilterClient/DemuxClient" into sc-dev
This commit is contained in:
@@ -88,12 +88,19 @@ sp<FilterClient> DemuxClient::openFilter(DemuxFilterType type, int bufferSize,
|
|||||||
}
|
}
|
||||||
|
|
||||||
sp<TimeFilterClient> DemuxClient::openTimeFilter() {
|
sp<TimeFilterClient> DemuxClient::openTimeFilter() {
|
||||||
// TODO: pending aidl interface
|
if (mTunerDemux != NULL) {
|
||||||
|
shared_ptr<ITunerTimeFilter> tunerTimeFilter;
|
||||||
|
Status s = mTunerDemux->openTimeFilter(&tunerTimeFilter);
|
||||||
|
if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return new TimeFilterClient(tunerTimeFilter);
|
||||||
|
}
|
||||||
|
|
||||||
if (mDemux != NULL) {
|
if (mDemux != NULL) {
|
||||||
sp<ITimeFilter> hidlTimeFilter = openHidlTimeFilter();
|
sp<ITimeFilter> hidlTimeFilter = openHidlTimeFilter();
|
||||||
if (hidlTimeFilter != NULL) {
|
if (hidlTimeFilter != NULL) {
|
||||||
sp<TimeFilterClient> timeFilterClient = new TimeFilterClient();
|
sp<TimeFilterClient> timeFilterClient = new TimeFilterClient(NULL);
|
||||||
timeFilterClient->setHidlTimeFilter(hidlTimeFilter);
|
timeFilterClient->setHidlTimeFilter(hidlTimeFilter);
|
||||||
return timeFilterClient;
|
return timeFilterClient;
|
||||||
}
|
}
|
||||||
@@ -103,7 +110,14 @@ sp<TimeFilterClient> DemuxClient::openTimeFilter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int DemuxClient::getAvSyncHwId(sp<FilterClient> filterClient) {
|
int DemuxClient::getAvSyncHwId(sp<FilterClient> filterClient) {
|
||||||
// pending aidl interface
|
if (mTunerDemux != NULL) {
|
||||||
|
int hwId;
|
||||||
|
Status s = mTunerDemux->getAvSyncHwId(filterClient->getAidlFilter(), &hwId);
|
||||||
|
if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
|
||||||
|
return INVALID_AV_SYNC_HW_ID;
|
||||||
|
}
|
||||||
|
return hwId;
|
||||||
|
}
|
||||||
|
|
||||||
if (mDemux != NULL) {
|
if (mDemux != NULL) {
|
||||||
uint32_t avSyncHwId;
|
uint32_t avSyncHwId;
|
||||||
@@ -119,11 +133,18 @@ int DemuxClient::getAvSyncHwId(sp<FilterClient> filterClient) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return INVALID_AV_SYNC_HW_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
long DemuxClient::getAvSyncTime(int avSyncHwId) {
|
long DemuxClient::getAvSyncTime(int avSyncHwId) {
|
||||||
// pending aidl interface
|
if (mTunerDemux != NULL) {
|
||||||
|
int64_t time;
|
||||||
|
Status s = mTunerDemux->getAvSyncTime(avSyncHwId, &time);
|
||||||
|
if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
|
||||||
|
return INVALID_AV_SYNC_TIME;
|
||||||
|
}
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
if (mDemux != NULL) {
|
if (mDemux != NULL) {
|
||||||
uint64_t time;
|
uint64_t time;
|
||||||
@@ -138,7 +159,7 @@ long DemuxClient::getAvSyncTime(int avSyncHwId) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return INVALID_AV_SYNC_TIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
sp<DvrClient> DemuxClient::openDvr(DvrType dvbType, int bufferSize, sp<DvrClientCallback> cb) {
|
sp<DvrClient> DemuxClient::openDvr(DvrType dvbType, int bufferSize, sp<DvrClientCallback> cb) {
|
||||||
@@ -167,7 +188,10 @@ sp<DvrClient> DemuxClient::openDvr(DvrType dvbType, int bufferSize, sp<DvrClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result DemuxClient::connectCiCam(int ciCamId) {
|
Result DemuxClient::connectCiCam(int ciCamId) {
|
||||||
// pending aidl interface
|
if (mTunerDemux != NULL) {
|
||||||
|
Status s = mTunerDemux->connectCiCam(ciCamId);
|
||||||
|
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||||
|
}
|
||||||
|
|
||||||
if (mDemux != NULL) {
|
if (mDemux != NULL) {
|
||||||
return mDemux->connectCiCam(static_cast<uint32_t>(ciCamId));
|
return mDemux->connectCiCam(static_cast<uint32_t>(ciCamId));
|
||||||
@@ -177,7 +201,10 @@ Result DemuxClient::connectCiCam(int ciCamId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result DemuxClient::disconnectCiCam() {
|
Result DemuxClient::disconnectCiCam() {
|
||||||
// pending aidl interface
|
if (mTunerDemux != NULL) {
|
||||||
|
Status s = mTunerDemux->disconnectCiCam();
|
||||||
|
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||||
|
}
|
||||||
|
|
||||||
if (mDemux != NULL) {
|
if (mDemux != NULL) {
|
||||||
return mDemux->disconnectCiCam();
|
return mDemux->disconnectCiCam();
|
||||||
|
|||||||
@@ -31,7 +31,9 @@
|
|||||||
|
|
||||||
using Status = ::ndk::ScopedAStatus;
|
using Status = ::ndk::ScopedAStatus;
|
||||||
using ::aidl::android::media::tv::tuner::ITunerDemux;
|
using ::aidl::android::media::tv::tuner::ITunerDemux;
|
||||||
|
using ::aidl::android::media::tv::tuner::ITunerTimeFilter;
|
||||||
|
|
||||||
|
using ::android::hardware::tv::tuner::V1_0::IDemux;
|
||||||
using ::android::hardware::tv::tuner::V1_0::DemuxFilterType;
|
using ::android::hardware::tv::tuner::V1_0::DemuxFilterType;
|
||||||
using ::android::hardware::tv::tuner::V1_0::DvrType;
|
using ::android::hardware::tv::tuner::V1_0::DvrType;
|
||||||
using ::android::hardware::tv::tuner::V1_0::IDemux;
|
using ::android::hardware::tv::tuner::V1_0::IDemux;
|
||||||
@@ -39,6 +41,9 @@ using ::android::hardware::tv::tuner::V1_0::ITimeFilter;
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
const int64_t INVALID_AV_SYNC_TIME = -1;
|
||||||
|
const int INVALID_AV_SYNC_HW_ID = -1;
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
struct DemuxClient : public RefBase {
|
struct DemuxClient : public RefBase {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#include <android-base/logging.h>
|
#include <android-base/logging.h>
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
|
|
||||||
|
#include "ClientHelper.h"
|
||||||
#include "TimeFilterClient.h"
|
#include "TimeFilterClient.h"
|
||||||
|
|
||||||
using ::android::hardware::tv::tuner::V1_0::Result;
|
using ::android::hardware::tv::tuner::V1_0::Result;
|
||||||
@@ -28,13 +29,12 @@ namespace android {
|
|||||||
|
|
||||||
/////////////// TimeFilterClient ///////////////////////
|
/////////////// TimeFilterClient ///////////////////////
|
||||||
|
|
||||||
// TODO: pending aidl interface
|
TimeFilterClient::TimeFilterClient(shared_ptr<ITunerTimeFilter> tunerTimeFilter) {
|
||||||
TimeFilterClient::TimeFilterClient() {
|
mTunerTimeFilter = tunerTimeFilter;
|
||||||
//mTunerTimeFilter = tunerTimeFilter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeFilterClient::~TimeFilterClient() {
|
TimeFilterClient::~TimeFilterClient() {
|
||||||
//mTunerTimeFilter = NULL;
|
mTunerTimeFilter = NULL;
|
||||||
mTimeFilter = NULL;
|
mTimeFilter = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +44,10 @@ void TimeFilterClient::setHidlTimeFilter(sp<ITimeFilter> timeFilter) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result TimeFilterClient::setTimeStamp(long timeStamp) {
|
Result TimeFilterClient::setTimeStamp(long timeStamp) {
|
||||||
// TODO: pending aidl interface
|
if (mTunerTimeFilter != NULL) {
|
||||||
|
Status s = mTunerTimeFilter->setTimeStamp(timeStamp);
|
||||||
|
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||||
|
}
|
||||||
|
|
||||||
if (mTimeFilter != NULL) {
|
if (mTimeFilter != NULL) {
|
||||||
return mTimeFilter->setTimeStamp(timeStamp);
|
return mTimeFilter->setTimeStamp(timeStamp);
|
||||||
@@ -54,7 +57,10 @@ Result TimeFilterClient::setTimeStamp(long timeStamp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result TimeFilterClient::clearTimeStamp() {
|
Result TimeFilterClient::clearTimeStamp() {
|
||||||
// TODO: pending aidl interface
|
if (mTunerTimeFilter != NULL) {
|
||||||
|
Status s = mTunerTimeFilter->clearTimeStamp();
|
||||||
|
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||||
|
}
|
||||||
|
|
||||||
if (mTimeFilter != NULL) {
|
if (mTimeFilter != NULL) {
|
||||||
return mTimeFilter->clearTimeStamp();
|
return mTimeFilter->clearTimeStamp();
|
||||||
@@ -64,7 +70,14 @@ Result TimeFilterClient::clearTimeStamp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
long TimeFilterClient::getTimeStamp() {
|
long TimeFilterClient::getTimeStamp() {
|
||||||
// TODO: pending aidl interface
|
if (mTunerTimeFilter != NULL) {
|
||||||
|
int64_t timeStamp;
|
||||||
|
Status s = mTunerTimeFilter->getTimeStamp(&timeStamp);
|
||||||
|
if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
|
||||||
|
return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
|
||||||
|
}
|
||||||
|
return timeStamp;
|
||||||
|
}
|
||||||
|
|
||||||
if (mTimeFilter != NULL) {
|
if (mTimeFilter != NULL) {
|
||||||
Result res;
|
Result res;
|
||||||
@@ -84,27 +97,37 @@ long TimeFilterClient::getTimeStamp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
long TimeFilterClient::getSourceTime() {
|
long TimeFilterClient::getSourceTime() {
|
||||||
// TODO: pending aidl interface
|
if (mTunerTimeFilter != NULL) {
|
||||||
|
int64_t sourceTime;
|
||||||
|
Status s = mTunerTimeFilter->getTimeStamp(&sourceTime);
|
||||||
|
if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
|
||||||
|
return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
|
||||||
|
}
|
||||||
|
return sourceTime;
|
||||||
|
}
|
||||||
|
|
||||||
if (mTimeFilter != NULL) {
|
if (mTimeFilter != NULL) {
|
||||||
Result res;
|
Result res;
|
||||||
long timestamp;
|
long sourceTime;
|
||||||
mTimeFilter->getSourceTime(
|
mTimeFilter->getSourceTime(
|
||||||
[&](Result r, uint64_t t) {
|
[&](Result r, uint64_t t) {
|
||||||
res = r;
|
res = r;
|
||||||
timestamp = t;
|
sourceTime = t;
|
||||||
});
|
});
|
||||||
if (res != Result::SUCCESS) {
|
if (res != Result::SUCCESS) {
|
||||||
return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
|
return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
|
||||||
}
|
}
|
||||||
return timestamp;
|
return sourceTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
|
return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result TimeFilterClient::close() {
|
Result TimeFilterClient::close() {
|
||||||
// TODO: pending aidl interface
|
if (mTunerTimeFilter != NULL) {
|
||||||
|
Status s = mTunerTimeFilter->close();
|
||||||
|
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||||
|
}
|
||||||
|
|
||||||
if (mTimeFilter != NULL) {
|
if (mTimeFilter != NULL) {
|
||||||
return mTimeFilter->close();
|
return mTimeFilter->close();
|
||||||
|
|||||||
@@ -17,12 +17,13 @@
|
|||||||
#ifndef _ANDROID_MEDIA_TV_TIME_FILTER_CLIENT_H_
|
#ifndef _ANDROID_MEDIA_TV_TIME_FILTER_CLIENT_H_
|
||||||
#define _ANDROID_MEDIA_TV_TIME_FILTER_CLIENT_H_
|
#define _ANDROID_MEDIA_TV_TIME_FILTER_CLIENT_H_
|
||||||
|
|
||||||
//#include <aidl/android/media/tv/tuner/ITunerTimeFilter.h>
|
#include <aidl/android/media/tv/tuner/ITunerTimeFilter.h>
|
||||||
#include <android/hardware/tv/tuner/1.0/ITimeFilter.h>
|
#include <android/hardware/tv/tuner/1.0/ITimeFilter.h>
|
||||||
#include <android/hardware/tv/tuner/1.1/types.h>
|
#include <android/hardware/tv/tuner/1.1/types.h>
|
||||||
|
|
||||||
//using ::aidl::android::media::tv::tuner::ITunerTimeFilter;
|
using ::aidl::android::media::tv::tuner::ITunerTimeFilter;
|
||||||
|
|
||||||
|
using Status = ::ndk::ScopedAStatus;
|
||||||
using ::android::hardware::Return;
|
using ::android::hardware::Return;
|
||||||
using ::android::hardware::Void;
|
using ::android::hardware::Void;
|
||||||
using ::android::hardware::hidl_vec;
|
using ::android::hardware::hidl_vec;
|
||||||
@@ -36,8 +37,7 @@ namespace android {
|
|||||||
struct TimeFilterClient : public RefBase {
|
struct TimeFilterClient : public RefBase {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// TODO: add TunerTimeFilter as parameter.
|
TimeFilterClient(shared_ptr<ITunerTimeFilter> tunerTimeFilter);
|
||||||
TimeFilterClient();
|
|
||||||
~TimeFilterClient();
|
~TimeFilterClient();
|
||||||
|
|
||||||
// TODO: remove after migration to Tuner Service is done.
|
// TODO: remove after migration to Tuner Service is done.
|
||||||
@@ -73,8 +73,7 @@ private:
|
|||||||
* An AIDL Tuner TimeFilter Singleton assigned at the first time the Tuner Client
|
* An AIDL Tuner TimeFilter Singleton assigned at the first time the Tuner Client
|
||||||
* opens an TimeFilter. Default null when time filter is not opened.
|
* opens an TimeFilter. Default null when time filter is not opened.
|
||||||
*/
|
*/
|
||||||
// TODO: pending on aidl interface
|
shared_ptr<ITunerTimeFilter> mTunerTimeFilter;
|
||||||
//shared_ptr<ITunerTimeFilter> mTunerTimeFilter;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A TimeFilter HAL interface that is ready before migrating to the TunerTimeFilter.
|
* A TimeFilter HAL interface that is ready before migrating to the TunerTimeFilter.
|
||||||
|
|||||||
@@ -200,7 +200,14 @@ sp<DemuxClient> TunerClient::openDemux(int demuxHandle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
shared_ptr<DemuxCapabilities> TunerClient::getDemuxCaps() {
|
shared_ptr<DemuxCapabilities> TunerClient::getDemuxCaps() {
|
||||||
// pending aidl interface
|
if (mTunerService != NULL) {
|
||||||
|
TunerDemuxCapabilities aidlCaps;
|
||||||
|
Status s = mTunerService->getDemuxCaps(&aidlCaps);
|
||||||
|
if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return make_shared<DemuxCapabilities>(getHidlDemuxCaps(aidlCaps));
|
||||||
|
}
|
||||||
|
|
||||||
if (mTuner != NULL) {
|
if (mTuner != NULL) {
|
||||||
Result res;
|
Result res;
|
||||||
@@ -459,6 +466,26 @@ sp<IDescrambler> TunerClient::openHidlDescrambler() {
|
|||||||
return descrambler;
|
return descrambler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DemuxCapabilities TunerClient::getHidlDemuxCaps(TunerDemuxCapabilities& aidlCaps) {
|
||||||
|
DemuxCapabilities caps{
|
||||||
|
.numDemux = (uint32_t)aidlCaps.numDemux,
|
||||||
|
.numRecord = (uint32_t)aidlCaps.numRecord,
|
||||||
|
.numPlayback = (uint32_t)aidlCaps.numPlayback,
|
||||||
|
.numTsFilter = (uint32_t)aidlCaps.numTsFilter,
|
||||||
|
.numSectionFilter = (uint32_t)aidlCaps.numSectionFilter,
|
||||||
|
.numAudioFilter = (uint32_t)aidlCaps.numAudioFilter,
|
||||||
|
.numVideoFilter = (uint32_t)aidlCaps.numVideoFilter,
|
||||||
|
.numPesFilter = (uint32_t)aidlCaps.numPesFilter,
|
||||||
|
.numPcrFilter = (uint32_t)aidlCaps.numPcrFilter,
|
||||||
|
.numBytesInSectionFilter = (uint32_t)aidlCaps.numBytesInSectionFilter,
|
||||||
|
.filterCaps = (uint32_t)aidlCaps.filterCaps,
|
||||||
|
.bTimeFilter = aidlCaps.bTimeFilter,
|
||||||
|
};
|
||||||
|
caps.linkCaps.resize(aidlCaps.linkCaps.size());
|
||||||
|
copy(aidlCaps.linkCaps.begin(), aidlCaps.linkCaps.end(), caps.linkCaps.begin());
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
|
|
||||||
FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) {
|
FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) {
|
||||||
FrontendInfo hidlFrontendInfo {
|
FrontendInfo hidlFrontendInfo {
|
||||||
.type = static_cast<FrontendType>(aidlFrontendInfo.type),
|
.type = static_cast<FrontendType>(aidlFrontendInfo.type),
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
using Status = ::ndk::ScopedAStatus;
|
using Status = ::ndk::ScopedAStatus;
|
||||||
|
|
||||||
|
using ::aidl::android::media::tv::tuner::TunerDemuxCapabilities;
|
||||||
using ::aidl::android::media::tv::tuner::ITunerService;
|
using ::aidl::android::media::tv::tuner::ITunerService;
|
||||||
using ::aidl::android::media::tv::tuner::TunerFrontendInfo;
|
using ::aidl::android::media::tv::tuner::TunerFrontendInfo;
|
||||||
using ::aidl::android::media::tv::tunerresourcemanager::ITunerResourceManager;
|
using ::aidl::android::media::tv::tunerresourcemanager::ITunerResourceManager;
|
||||||
@@ -145,6 +146,7 @@ private:
|
|||||||
sp<ILnb> openHidlLnbByName(string name, LnbId& lnbId);
|
sp<ILnb> openHidlLnbByName(string name, LnbId& lnbId);
|
||||||
sp<IDescrambler> openHidlDescrambler();
|
sp<IDescrambler> openHidlDescrambler();
|
||||||
vector<int> getLnbHandles();
|
vector<int> getLnbHandles();
|
||||||
|
DemuxCapabilities getHidlDemuxCaps(TunerDemuxCapabilities& aidlCaps);
|
||||||
FrontendInfo FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo);
|
FrontendInfo FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo);
|
||||||
void updateTunerResources();
|
void updateTunerResources();
|
||||||
void updateFrontendResources();
|
void updateFrontendResources();
|
||||||
|
|||||||
Reference in New Issue
Block a user