Merge "Tuner JNI: getDemuxCaps" into rvc-dev am: f2a1de4c7d am: 859ebdcf73
Change-Id: I7de9db49c7df9a66897047851e857072779d0a6c
This commit is contained in:
@@ -40,6 +40,7 @@ using ::android::hardware::tv::tuner::V1_0::DataFormat;
|
||||
using ::android::hardware::tv::tuner::V1_0::DemuxAlpFilterSettings;
|
||||
using ::android::hardware::tv::tuner::V1_0::DemuxAlpFilterType;
|
||||
using ::android::hardware::tv::tuner::V1_0::DemuxAlpLengthType;
|
||||
using ::android::hardware::tv::tuner::V1_0::DemuxCapabilities;
|
||||
using ::android::hardware::tv::tuner::V1_0::DemuxFilterAvSettings;
|
||||
using ::android::hardware::tv::tuner::V1_0::DemuxFilterDownloadEvent;
|
||||
using ::android::hardware::tv::tuner::V1_0::DemuxFilterDownloadSettings;
|
||||
@@ -1382,6 +1383,42 @@ jobject JTuner::openDvr(DvrType type, jlong bufferSize) {
|
||||
return dvrObj;
|
||||
}
|
||||
|
||||
jobject JTuner::getDemuxCaps() {
|
||||
DemuxCapabilities caps;
|
||||
Result res;
|
||||
mTuner->getDemuxCaps([&](Result r, const DemuxCapabilities& demuxCaps) {
|
||||
caps = demuxCaps;
|
||||
res = r;
|
||||
});
|
||||
if (res != Result::SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
JNIEnv *env = AndroidRuntime::getJNIEnv();
|
||||
jclass clazz = env->FindClass("android/media/tv/tuner/DemuxCapabilities");
|
||||
jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIIIIIIJI[IZ)V");
|
||||
|
||||
jint numDemux = caps.numDemux;
|
||||
jint numRecord = caps.numRecord;
|
||||
jint numPlayback = caps.numPlayback;
|
||||
jint numTsFilter = caps.numTsFilter;
|
||||
jint numSectionFilter = caps.numSectionFilter;
|
||||
jint numAudioFilter = caps.numAudioFilter;
|
||||
jint numVideoFilter = caps.numVideoFilter;
|
||||
jint numPesFilter = caps.numPesFilter;
|
||||
jint numPcrFilter = caps.numPcrFilter;
|
||||
jlong numBytesInSectionFilter = caps.numBytesInSectionFilter;
|
||||
jint filterCaps = static_cast<jint>(caps.filterCaps);
|
||||
jboolean bTimeFilter = caps.bTimeFilter;
|
||||
|
||||
jintArray linkCaps = env->NewIntArray(caps.linkCaps.size());
|
||||
env->SetIntArrayRegion(
|
||||
linkCaps, 0, caps.linkCaps.size(), reinterpret_cast<jint*>(&caps.linkCaps[0]));
|
||||
|
||||
return env->NewObject(clazz, capsInit, numDemux, numRecord, numPlayback, numTsFilter,
|
||||
numSectionFilter, numAudioFilter, numVideoFilter, numPesFilter, numPcrFilter,
|
||||
numBytesInSectionFilter, filterCaps, linkCaps, bTimeFilter);
|
||||
}
|
||||
|
||||
} // namespace android
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -2739,8 +2776,9 @@ static jobject android_media_tv_Tuner_open_dvr_playback(
|
||||
return tuner->openDvr(DvrType::PLAYBACK, bufferSize);
|
||||
}
|
||||
|
||||
static jobject android_media_tv_Tuner_get_demux_caps(JNIEnv*, jobject) {
|
||||
return NULL;
|
||||
static jobject android_media_tv_Tuner_get_demux_caps(JNIEnv* env, jobject thiz) {
|
||||
sp<JTuner> tuner = getTuner(env, thiz);
|
||||
return tuner->getDemuxCaps();
|
||||
}
|
||||
|
||||
static int android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) {
|
||||
|
||||
@@ -185,6 +185,7 @@ struct JTuner : public RefBase {
|
||||
jobject openTimeFilter();
|
||||
jobject openDescrambler();
|
||||
jobject openDvr(DvrType type, jlong bufferSize);
|
||||
jobject getDemuxCaps();
|
||||
|
||||
protected:
|
||||
Result openDemux();
|
||||
|
||||
Reference in New Issue
Block a user