Loading media/jni/android_media_tv_Tuner.cpp +20 −12 Original line number Diff line number Diff line Loading @@ -97,6 +97,14 @@ void DvrCallback::setDvr(const jobject dvr) { mDvr = env->NewWeakGlobalRef(dvr); } /////////////// Dvr /////////////////////// Dvr::Dvr(sp<IDvr> sp, jweak obj) : mDvrSp(sp), mDvrObj(obj) {} sp<IDvr> Dvr::getIDvr() { return mDvrSp; } /////////////// FilterCallback /////////////////////// //TODO: implement filter callback Return<void> FilterCallback::onFilterEvent(const DemuxFilterEvent& /*filterEvent*/) { Loading Loading @@ -395,14 +403,14 @@ jobject JTuner::openDvr(DvrType type, int bufferSize) { return NULL; } } sp<IDvr> dvrSp; sp<IDvr> iDvrSp; sp<DvrCallback> callback = new DvrCallback(); mDemux->openDvr(type, bufferSize, callback, [&](Result, const sp<IDvr>& dvr) { dvrSp = dvr; iDvrSp = dvr; }); if (dvrSp == NULL) { if (iDvrSp == NULL) { return NULL; } Loading @@ -412,7 +420,7 @@ jobject JTuner::openDvr(DvrType type, int bufferSize) { env->FindClass("android/media/tv/tuner/Tuner$Dvr"), gFields.dvrInitID, mObject); sp<Dvr> dvrSp = new Dvr(iDvrSp, dvrObj); dvrSp->incStrong(dvrObj); env->SetLongField(dvrObj, gFields.dvrContext, (jlong)dvrSp.get()); Loading Loading @@ -532,8 +540,8 @@ static DvrSettings getDvrSettings(JNIEnv *env, jobject settings) { return dvrSettings; } static sp<IDvr> getDvr(JNIEnv *env, jobject dvr) { return (IDvr *)env->GetLongField(dvr, gFields.dvrContext); static sp<Dvr> getDvr(JNIEnv *env, jobject dvr) { return (Dvr *)env->GetLongField(dvr, gFields.dvrContext); } static void android_media_tv_Tuner_native_init(JNIEnv *env) { Loading Loading @@ -777,7 +785,7 @@ static jobject android_media_tv_Tuner_open_dvr(JNIEnv *env, jobject thiz, jint t } static bool android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; Loading @@ -787,7 +795,7 @@ static bool android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobje } static bool android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; Loading @@ -797,7 +805,7 @@ static bool android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobje } static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobject settings) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to configure dvr: dvr not found"); return (int)Result::INVALID_STATE; Loading @@ -807,7 +815,7 @@ static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobjec } static bool android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to start dvr: dvr not found"); return false; Loading @@ -816,7 +824,7 @@ static bool android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { } static bool android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to stop dvr: dvr not found"); return false; Loading @@ -825,7 +833,7 @@ static bool android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { } static bool android_media_tv_Tuner_flush_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to flush dvr: dvr not found"); return false; Loading media/jni/android_media_tv_Tuner.h +7 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,13 @@ private: jweak mDvr; }; struct Dvr : public RefBase { Dvr(sp<IDvr> sp, jweak obj); sp<IDvr> getIDvr(); sp<IDvr> mDvrSp; jweak mDvrObj; }; struct FilterCallback : public IFilterCallback { virtual Return<void> onFilterEvent(const DemuxFilterEvent& filterEvent); virtual Return<void> onFilterStatus(const DemuxFilterStatus status); Loading Loading
media/jni/android_media_tv_Tuner.cpp +20 −12 Original line number Diff line number Diff line Loading @@ -97,6 +97,14 @@ void DvrCallback::setDvr(const jobject dvr) { mDvr = env->NewWeakGlobalRef(dvr); } /////////////// Dvr /////////////////////// Dvr::Dvr(sp<IDvr> sp, jweak obj) : mDvrSp(sp), mDvrObj(obj) {} sp<IDvr> Dvr::getIDvr() { return mDvrSp; } /////////////// FilterCallback /////////////////////// //TODO: implement filter callback Return<void> FilterCallback::onFilterEvent(const DemuxFilterEvent& /*filterEvent*/) { Loading Loading @@ -395,14 +403,14 @@ jobject JTuner::openDvr(DvrType type, int bufferSize) { return NULL; } } sp<IDvr> dvrSp; sp<IDvr> iDvrSp; sp<DvrCallback> callback = new DvrCallback(); mDemux->openDvr(type, bufferSize, callback, [&](Result, const sp<IDvr>& dvr) { dvrSp = dvr; iDvrSp = dvr; }); if (dvrSp == NULL) { if (iDvrSp == NULL) { return NULL; } Loading @@ -412,7 +420,7 @@ jobject JTuner::openDvr(DvrType type, int bufferSize) { env->FindClass("android/media/tv/tuner/Tuner$Dvr"), gFields.dvrInitID, mObject); sp<Dvr> dvrSp = new Dvr(iDvrSp, dvrObj); dvrSp->incStrong(dvrObj); env->SetLongField(dvrObj, gFields.dvrContext, (jlong)dvrSp.get()); Loading Loading @@ -532,8 +540,8 @@ static DvrSettings getDvrSettings(JNIEnv *env, jobject settings) { return dvrSettings; } static sp<IDvr> getDvr(JNIEnv *env, jobject dvr) { return (IDvr *)env->GetLongField(dvr, gFields.dvrContext); static sp<Dvr> getDvr(JNIEnv *env, jobject dvr) { return (Dvr *)env->GetLongField(dvr, gFields.dvrContext); } static void android_media_tv_Tuner_native_init(JNIEnv *env) { Loading Loading @@ -777,7 +785,7 @@ static jobject android_media_tv_Tuner_open_dvr(JNIEnv *env, jobject thiz, jint t } static bool android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; Loading @@ -787,7 +795,7 @@ static bool android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobje } static bool android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; Loading @@ -797,7 +805,7 @@ static bool android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobje } static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobject settings) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to configure dvr: dvr not found"); return (int)Result::INVALID_STATE; Loading @@ -807,7 +815,7 @@ static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobjec } static bool android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to start dvr: dvr not found"); return false; Loading @@ -816,7 +824,7 @@ static bool android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { } static bool android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to stop dvr: dvr not found"); return false; Loading @@ -825,7 +833,7 @@ static bool android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { } static bool android_media_tv_Tuner_flush_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr); sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to flush dvr: dvr not found"); return false; Loading
media/jni/android_media_tv_Tuner.h +7 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,13 @@ private: jweak mDvr; }; struct Dvr : public RefBase { Dvr(sp<IDvr> sp, jweak obj); sp<IDvr> getIDvr(); sp<IDvr> mDvrSp; jweak mDvrObj; }; struct FilterCallback : public IFilterCallback { virtual Return<void> onFilterEvent(const DemuxFilterEvent& filterEvent); virtual Return<void> onFilterStatus(const DemuxFilterStatus status); Loading