Loading media/java/android/media/tv/tuner/Tuner.java +2 −0 Original line number Diff line number Diff line Loading @@ -432,6 +432,7 @@ public class Tuner implements AutoCloseable { mFrontend = tuner.mFrontend; mIsSharedFrontend = true; } nativeShareFrontend(mFrontend.mId); } /** Loading Loading @@ -551,6 +552,7 @@ public class Tuner implements AutoCloseable { * Native method to open frontend of the given ID. */ private native Frontend nativeOpenFrontendByHandle(int handle); private native int nativeShareFrontend(int id); @Result private native int nativeTune(int type, FrontendSettings settings); private native int nativeStopTune(); Loading media/jni/android_media_tv_Tuner.cpp +26 −1 Original line number Diff line number Diff line Loading @@ -1173,6 +1173,8 @@ JTuner::JTuner(JNIEnv *env, jobject thiz) if (mTunerClient == NULL) { mTunerClient = new TunerClient(); } mSharedFeId = (int) Constant::INVALID_FRONTEND_ID; } JTuner::~JTuner() { Loading Loading @@ -1253,6 +1255,17 @@ jobject JTuner::openFrontendByHandle(int feHandle) { (jint) mFeId); } int JTuner::shareFrontend(int feId) { if (mFeClient != NULL) { ALOGE("Cannot share frontend:%d because this session is already holding %d", feId, mFeClient->getId()); return (int)Result::INVALID_STATE; } mSharedFeId = feId; return (int)Result::SUCCESS; } jobject JTuner::getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) { jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AnalogFrontendCapabilities"); jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V"); Loading Loading @@ -1605,7 +1618,9 @@ Result JTuner::openDemux(int handle) { return Result::UNKNOWN_ERROR; } if (mFeClient != NULL) { mDemuxClient->setFrontendDataSource(mFeClient); return mDemuxClient->setFrontendDataSource(mFeClient); } else if (mSharedFeId != (int) Constant::INVALID_FRONTEND_ID) { return mDemuxClient->setFrontendDataSourceById(mSharedFeId); } } Loading @@ -1629,6 +1644,8 @@ jint JTuner::close() { } mDemuxClient = NULL; } mSharedFeId = (int) Constant::INVALID_FRONTEND_ID; return (jint) res; } Loading Loading @@ -3229,6 +3246,12 @@ static jobject android_media_tv_Tuner_open_frontend_by_handle( return tuner->openFrontendByHandle(handle); } static int android_media_tv_Tuner_share_frontend( JNIEnv *env, jobject thiz, jint id) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->shareFrontend(id); } static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, jobject settings) { sp<JTuner> tuner = getTuner(env, thiz); FrontendSettings setting = getFrontendSettings(env, type, settings); Loading Loading @@ -4307,6 +4330,8 @@ static const JNINativeMethod gTunerMethods[] = { (void *)android_media_tv_Tuner_get_frontend_ids }, { "nativeOpenFrontendByHandle", "(I)Landroid/media/tv/tuner/Tuner$Frontend;", (void *)android_media_tv_Tuner_open_frontend_by_handle }, { "nativeShareFrontend", "(I)I", (void *)android_media_tv_Tuner_share_frontend }, { "nativeTune", "(ILandroid/media/tv/tuner/frontend/FrontendSettings;)I", (void *)android_media_tv_Tuner_tune }, { "nativeStopTune", "()I", (void *)android_media_tv_Tuner_stop_tune }, Loading media/jni/android_media_tv_Tuner.h +2 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,7 @@ struct JTuner : public RefBase { int unlinkCiCam(jint id); jobject getFrontendIds(); jobject openFrontendByHandle(int feHandle); int shareFrontend(int feId); jint closeFrontendById(int id); jobject getFrontendInfo(int id); int tune(const FrontendSettings& settings, const FrontendSettingsExt1_1& settingsExt1_1); Loading Loading @@ -210,6 +211,7 @@ private: static sp<TunerClient> mTunerClient; sp<FrontendClient> mFeClient; int mFeId; int mSharedFeId; sp<LnbClient> mLnbClient; sp<DemuxClient> mDemuxClient; static jobject getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); Loading media/jni/tuner/DemuxClient.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,15 @@ Result DemuxClient::setFrontendDataSource(sp<FrontendClient> frontendClient) { return Result::INVALID_STATE; } Result DemuxClient::setFrontendDataSourceById(int frontendId) { if (mTunerDemux != NULL) { Status s = mTunerDemux->setFrontendDataSourceById(frontendId); return ClientHelper::getServiceSpecificErrorCode(s); } return Result::INVALID_STATE; } sp<FilterClient> DemuxClient::openFilter(DemuxFilterType type, int bufferSize, sp<FilterClientCallback> cb) { if (mTunerDemux != NULL) { Loading media/jni/tuner/DemuxClient.h +5 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,11 @@ public: */ Result setFrontendDataSource(sp<FrontendClient> frontendClient); /** * Set a frontend resource by handle as data input of the demux. */ Result setFrontendDataSourceById(int frontendId); /** * Open a new filter client. */ Loading Loading
media/java/android/media/tv/tuner/Tuner.java +2 −0 Original line number Diff line number Diff line Loading @@ -432,6 +432,7 @@ public class Tuner implements AutoCloseable { mFrontend = tuner.mFrontend; mIsSharedFrontend = true; } nativeShareFrontend(mFrontend.mId); } /** Loading Loading @@ -551,6 +552,7 @@ public class Tuner implements AutoCloseable { * Native method to open frontend of the given ID. */ private native Frontend nativeOpenFrontendByHandle(int handle); private native int nativeShareFrontend(int id); @Result private native int nativeTune(int type, FrontendSettings settings); private native int nativeStopTune(); Loading
media/jni/android_media_tv_Tuner.cpp +26 −1 Original line number Diff line number Diff line Loading @@ -1173,6 +1173,8 @@ JTuner::JTuner(JNIEnv *env, jobject thiz) if (mTunerClient == NULL) { mTunerClient = new TunerClient(); } mSharedFeId = (int) Constant::INVALID_FRONTEND_ID; } JTuner::~JTuner() { Loading Loading @@ -1253,6 +1255,17 @@ jobject JTuner::openFrontendByHandle(int feHandle) { (jint) mFeId); } int JTuner::shareFrontend(int feId) { if (mFeClient != NULL) { ALOGE("Cannot share frontend:%d because this session is already holding %d", feId, mFeClient->getId()); return (int)Result::INVALID_STATE; } mSharedFeId = feId; return (int)Result::SUCCESS; } jobject JTuner::getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) { jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AnalogFrontendCapabilities"); jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V"); Loading Loading @@ -1605,7 +1618,9 @@ Result JTuner::openDemux(int handle) { return Result::UNKNOWN_ERROR; } if (mFeClient != NULL) { mDemuxClient->setFrontendDataSource(mFeClient); return mDemuxClient->setFrontendDataSource(mFeClient); } else if (mSharedFeId != (int) Constant::INVALID_FRONTEND_ID) { return mDemuxClient->setFrontendDataSourceById(mSharedFeId); } } Loading @@ -1629,6 +1644,8 @@ jint JTuner::close() { } mDemuxClient = NULL; } mSharedFeId = (int) Constant::INVALID_FRONTEND_ID; return (jint) res; } Loading Loading @@ -3229,6 +3246,12 @@ static jobject android_media_tv_Tuner_open_frontend_by_handle( return tuner->openFrontendByHandle(handle); } static int android_media_tv_Tuner_share_frontend( JNIEnv *env, jobject thiz, jint id) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->shareFrontend(id); } static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, jobject settings) { sp<JTuner> tuner = getTuner(env, thiz); FrontendSettings setting = getFrontendSettings(env, type, settings); Loading Loading @@ -4307,6 +4330,8 @@ static const JNINativeMethod gTunerMethods[] = { (void *)android_media_tv_Tuner_get_frontend_ids }, { "nativeOpenFrontendByHandle", "(I)Landroid/media/tv/tuner/Tuner$Frontend;", (void *)android_media_tv_Tuner_open_frontend_by_handle }, { "nativeShareFrontend", "(I)I", (void *)android_media_tv_Tuner_share_frontend }, { "nativeTune", "(ILandroid/media/tv/tuner/frontend/FrontendSettings;)I", (void *)android_media_tv_Tuner_tune }, { "nativeStopTune", "()I", (void *)android_media_tv_Tuner_stop_tune }, Loading
media/jni/android_media_tv_Tuner.h +2 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,7 @@ struct JTuner : public RefBase { int unlinkCiCam(jint id); jobject getFrontendIds(); jobject openFrontendByHandle(int feHandle); int shareFrontend(int feId); jint closeFrontendById(int id); jobject getFrontendInfo(int id); int tune(const FrontendSettings& settings, const FrontendSettingsExt1_1& settingsExt1_1); Loading Loading @@ -210,6 +211,7 @@ private: static sp<TunerClient> mTunerClient; sp<FrontendClient> mFeClient; int mFeId; int mSharedFeId; sp<LnbClient> mLnbClient; sp<DemuxClient> mDemuxClient; static jobject getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); Loading
media/jni/tuner/DemuxClient.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,15 @@ Result DemuxClient::setFrontendDataSource(sp<FrontendClient> frontendClient) { return Result::INVALID_STATE; } Result DemuxClient::setFrontendDataSourceById(int frontendId) { if (mTunerDemux != NULL) { Status s = mTunerDemux->setFrontendDataSourceById(frontendId); return ClientHelper::getServiceSpecificErrorCode(s); } return Result::INVALID_STATE; } sp<FilterClient> DemuxClient::openFilter(DemuxFilterType type, int bufferSize, sp<FilterClientCallback> cb) { if (mTunerDemux != NULL) { Loading
media/jni/tuner/DemuxClient.h +5 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,11 @@ public: */ Result setFrontendDataSource(sp<FrontendClient> frontendClient); /** * Set a frontend resource by handle as data input of the demux. */ Result setFrontendDataSourceById(int frontendId); /** * Open a new filter client. */ Loading