Merge "Init shared memory handle when opening Filter in the Tuner JNI" into sc-dev
This commit is contained in:
@@ -1737,6 +1737,8 @@ jobject JTuner::openFilter(DemuxFilterType type, int bufferSize) {
|
|||||||
fId = static_cast<uint64_t>(id);
|
fId = static_cast<uint64_t>(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filterClient->getAvSharedHandleInfo();
|
||||||
|
|
||||||
JNIEnv *env = AndroidRuntime::getJNIEnv();
|
JNIEnv *env = AndroidRuntime::getJNIEnv();
|
||||||
jobject filterObj =
|
jobject filterObj =
|
||||||
env->NewObject(
|
env->NewObject(
|
||||||
|
|||||||
@@ -62,6 +62,9 @@ FilterClient::~FilterClient() {
|
|||||||
mFilter_1_1 = NULL;
|
mFilter_1_1 = NULL;
|
||||||
mAvSharedHandle = NULL;
|
mAvSharedHandle = NULL;
|
||||||
mAvSharedMemSize = 0;
|
mAvSharedMemSize = 0;
|
||||||
|
mIsMediaFilter = false;
|
||||||
|
mFilterMQ = NULL;
|
||||||
|
mFilterMQEventFlag = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: remove after migration to Tuner Service is done.
|
// TODO: remove after migration to Tuner Service is done.
|
||||||
@@ -81,7 +84,7 @@ int FilterClient::read(int8_t* buffer, int size) {
|
|||||||
SharedHandleInfo FilterClient::getAvSharedHandleInfo() {
|
SharedHandleInfo FilterClient::getAvSharedHandleInfo() {
|
||||||
handleAvShareMemory();
|
handleAvShareMemory();
|
||||||
SharedHandleInfo info{
|
SharedHandleInfo info{
|
||||||
.sharedHandle = mAvSharedHandle,
|
.sharedHandle = mIsMediaFilter ? mAvSharedHandle : NULL,
|
||||||
.size = mAvSharedMemSize,
|
.size = mAvSharedMemSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -259,9 +262,10 @@ Result FilterClient::setDataSource(sp<FilterClient> filterClient){
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result FilterClient::close() {
|
Result FilterClient::close() {
|
||||||
if (mFilterMQEventFlag != NULL) {
|
if (mFilterMQEventFlag) {
|
||||||
EventFlag::deleteEventFlag(&mFilterMQEventFlag);
|
EventFlag::deleteEventFlag(&mFilterMQEventFlag);
|
||||||
}
|
}
|
||||||
|
mFilterMQEventFlag = NULL;
|
||||||
mFilterMQ = NULL;
|
mFilterMQ = NULL;
|
||||||
|
|
||||||
if (mTunerFilter != NULL) {
|
if (mTunerFilter != NULL) {
|
||||||
@@ -943,7 +947,7 @@ Result FilterClient::getFilterMq() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int FilterClient::copyData(int8_t* buffer, int size) {
|
int FilterClient::copyData(int8_t* buffer, int size) {
|
||||||
if (mFilter == NULL || mFilterMQ == NULL || mFilterMQEventFlag == NULL) {
|
if (mFilterMQ == NULL || mFilterMQEventFlag == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -964,6 +968,7 @@ void FilterClient::checkIsMediaFilter(DemuxFilterType type) {
|
|||||||
if (type.subType.mmtpFilterType() == DemuxMmtpFilterType::AUDIO ||
|
if (type.subType.mmtpFilterType() == DemuxMmtpFilterType::AUDIO ||
|
||||||
type.subType.mmtpFilterType() == DemuxMmtpFilterType::VIDEO) {
|
type.subType.mmtpFilterType() == DemuxMmtpFilterType::VIDEO) {
|
||||||
mIsMediaFilter = true;
|
mIsMediaFilter = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -971,15 +976,17 @@ void FilterClient::checkIsMediaFilter(DemuxFilterType type) {
|
|||||||
if (type.subType.tsFilterType() == DemuxTsFilterType::AUDIO ||
|
if (type.subType.tsFilterType() == DemuxTsFilterType::AUDIO ||
|
||||||
type.subType.tsFilterType() == DemuxTsFilterType::VIDEO) {
|
type.subType.tsFilterType() == DemuxTsFilterType::VIDEO) {
|
||||||
mIsMediaFilter = true;
|
mIsMediaFilter = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mIsMediaFilter = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FilterClient::handleAvShareMemory() {
|
void FilterClient::handleAvShareMemory() {
|
||||||
if (mAvSharedHandle != NULL) {
|
if (mAvSharedHandle != NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mTunerFilter != NULL && mIsMediaFilter) {
|
if (mTunerFilter != NULL && mIsMediaFilter) {
|
||||||
TunerFilterSharedHandleInfo aidlHandleInfo;
|
TunerFilterSharedHandleInfo aidlHandleInfo;
|
||||||
Status s = mTunerFilter->getAvSharedHandleInfo(&aidlHandleInfo);
|
Status s = mTunerFilter->getAvSharedHandleInfo(&aidlHandleInfo);
|
||||||
@@ -1001,8 +1008,13 @@ void FilterClient::handleAvShareMemory() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FilterClient::closeAvSharedMemory() {
|
void FilterClient::closeAvSharedMemory() {
|
||||||
|
if (mAvSharedHandle == NULL) {
|
||||||
|
mAvSharedMemSize = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
native_handle_close(mAvSharedHandle);
|
native_handle_close(mAvSharedHandle);
|
||||||
native_handle_delete(mAvSharedHandle);
|
native_handle_delete(mAvSharedHandle);
|
||||||
mAvSharedMemSize = 0;
|
mAvSharedMemSize = 0;
|
||||||
|
mAvSharedHandle = NULL;
|
||||||
}
|
}
|
||||||
} // namespace android
|
} // namespace android
|
||||||
|
|||||||
@@ -264,8 +264,8 @@ private:
|
|||||||
*/
|
*/
|
||||||
sp<::android::hardware::tv::tuner::V1_1::IFilter> mFilter_1_1;
|
sp<::android::hardware::tv::tuner::V1_1::IFilter> mFilter_1_1;
|
||||||
|
|
||||||
AidlMQ* mFilterMQ;
|
AidlMQ* mFilterMQ = NULL;
|
||||||
EventFlag* mFilterMQEventFlag;
|
EventFlag* mFilterMQEventFlag = NULL;
|
||||||
|
|
||||||
native_handle_t* mAvSharedHandle;
|
native_handle_t* mAvSharedHandle;
|
||||||
uint64_t mAvSharedMemSize;
|
uint64_t mAvSharedMemSize;
|
||||||
|
|||||||
Reference in New Issue
Block a user