Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 859ebdcf authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Tuner JNI: getDemuxCaps" into rvc-dev am: f2a1de4c

Change-Id: Ibe2c72f4dc0575ba82d775143c866d9270f099bd
parents 752ab855 f2a1de4c
Loading
Loading
Loading
Loading
+40 −2
Original line number Diff line number Diff line
@@ -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) {
+1 −0
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@ struct JTuner : public RefBase {
    jobject openTimeFilter();
    jobject openDescrambler();
    jobject openDvr(DvrType type, jlong bufferSize);
    jobject getDemuxCaps();

protected:
    Result openDemux();