Loading media/java/android/media/tv/tuner/Tuner.java +138 −16 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ public final class Tuner implements AutoCloseable { private native int nativeTune(int type, FrontendSettings settings); private native int nativeStopTune(); private native int nativeScan(int settingsType, FrontendSettings settings, int scanType); private native int nativeStopScan(); private native int nativeSetLnb(int lnbId); private native int nativeSetLna(boolean enable); private native FrontendStatus[] nativeGetFrontendStatus(int[] statusTypes); Loading Loading @@ -285,6 +286,16 @@ public final class Tuner implements AutoCloseable { return nativeScan(settings.getType(), settings, scanType); } /** * Stops a previous scanning. * * If the method completes successfully, the frontend stop previous scanning. * @hide */ public int stopScan() { return nativeStopScan(); } /** * Sets Low-Noise Block downconverter (LNB) for satellite frontend. * Loading Loading @@ -356,10 +367,13 @@ public final class Tuner implements AutoCloseable { int mId; private native int nativeConfigureFilter(int type, int subType, FilterSettings settings); private native boolean nativeStartFilter(); private native boolean nativeStopFilter(); private native boolean nativeFlushFilter(); private native int nativeGetId(); private native int nativeSetDataSource(Filter source); private native int nativeStartFilter(); private native int nativeStopFilter(); private native int nativeFlushFilter(); private native int nativeRead(byte[] buffer, int offset, int size); private native int nativeClose(); private Filter(int id) { mId = id; Loading @@ -372,6 +386,12 @@ public final class Tuner implements AutoCloseable { } } /** * Configures the filter. * * @param settings the settings of the filter. * @return result status of the operation. */ public int configure(FilterSettings settings) { int subType = -1; if (settings.mSettings != null) { Loading @@ -380,15 +400,56 @@ public final class Tuner implements AutoCloseable { return nativeConfigureFilter(settings.getType(), subType, settings); } public boolean start() { /** * Gets the filter Id. * * @return the hardware resource Id for the filter. */ public int getId() { return nativeGetId(); } /** * Sets the filter's data source. * * A filter uses demux as data source by default. If the data was packetized * by multiple protocols, multiple filters may need to work together to * extract all protocols' header. Then a filter's data source can be output * from another filter. * * @param source the filter instance which provides data input. Switch to * use demux as data source if the filter instance is NULL. * @return result status of the operation. */ public int setDataSource(@Nullable Filter source) { return nativeSetDataSource(source); } /** * Starts the filter. * * @return result status of the operation. */ public int start() { return nativeStartFilter(); } public boolean stop() { /** * Stops the filter. * * @return result status of the operation. */ public int stop() { return nativeStopFilter(); } public boolean flush() { /** * Flushes the filter. * * @return result status of the operation. */ public int flush() { return nativeFlushFilter(); } Loading @@ -396,6 +457,15 @@ public final class Tuner implements AutoCloseable { size = Math.min(size, buffer.length - offset); return nativeRead(buffer, offset, size); } /** * Release the Filter instance. * * @return result status of the operation. */ public int close() { return nativeClose(); } } private Filter openFilter(@FilterType int mainType, @FilterSubtype int subType, int bufferSize, Loading Loading @@ -554,33 +624,85 @@ public final class Tuner implements AutoCloseable { private long mNativeContext; private DvrCallback mCallback; private native boolean nativeAttachFilter(Filter filter); private native boolean nativeDetachFilter(Filter filter); private native int nativeAttachFilter(Filter filter); private native int nativeDetachFilter(Filter filter); private native int nativeConfigureDvr(DvrSettings settings); private native boolean nativeStartDvr(); private native boolean nativeStopDvr(); private native boolean nativeFlushDvr(); private native int nativeStartDvr(); private native int nativeStopDvr(); private native int nativeFlushDvr(); private native int nativeClose(); private Dvr() {} public boolean attachFilter(Filter filter) { /** * Attaches a filter to DVR interface for recording. * * @param filter the filter to be attached. * @return result status of the operation. */ public int attachFilter(Filter filter) { return nativeAttachFilter(filter); } public boolean detachFilter(Filter filter) { /** * Detaches a filter from DVR interface. * * @param filter the filter to be detached. * @return result status of the operation. */ public int detachFilter(Filter filter) { return nativeDetachFilter(filter); } /** * Configures the DVR. * * @param settings the settings of the DVR interface. * @return result status of the operation. */ public int configure(DvrSettings settings) { return nativeConfigureDvr(settings); } public boolean start() { /** * Starts DVR. * * Starts consuming playback data or producing data for recording. * * @return result status of the operation. */ public int start() { return nativeStartDvr(); } public boolean stop() { /** * Stops DVR. * * Stops consuming playback data or producing data for recording. * * @return result status of the operation. */ public int stop() { return nativeStopDvr(); } public boolean flush() { /** * Flushed DVR data. * * @return result status of the operation. */ public int flush() { return nativeFlushDvr(); } /** * closes the DVR instance to release resources. * * @return result status of the operation. */ public int close() { return nativeClose(); } } private Dvr openDvr(int type, int bufferSize) { Loading media/jni/android_media_tv_Tuner.cpp +59 −27 Original line number Diff line number Diff line Loading @@ -609,7 +609,7 @@ static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, job return tuner->tune(getFrontendSettings(env, type, settings)); } static int android_media_tv_Tuner_stop_tune(JNIEnv, jobject) { static int android_media_tv_Tuner_stop_tune(JNIEnv*, jobject) { return 0; } Loading @@ -620,11 +620,15 @@ static int android_media_tv_Tuner_scan( env, settingsType, settings), static_cast<FrontendScanType>(scanType)); } static int android_media_tv_Tuner_set_lnb(JNIEnv, jobject, jint) { static int android_media_tv_Tuner_stop_scan(JNIEnv*, jobject) { return 0; } static int android_media_tv_Tuner_set_lna(JNIEnv, jobject, jint, jboolean) { static int android_media_tv_Tuner_set_lnb(JNIEnv*, jobject, jint) { return 0; } static int android_media_tv_Tuner_set_lna(JNIEnv*, jobject, jint, jboolean) { return 0; } Loading Loading @@ -747,31 +751,42 @@ static int android_media_tv_Tuner_configure_filter( return (int)res; } static bool android_media_tv_Tuner_start_filter(JNIEnv *env, jobject filter) { static int android_media_tv_Tuner_get_filter_id(JNIEnv*, jobject) { return 0; } static int android_media_tv_Tuner_set_filter_data_source(JNIEnv*, jobject, jobject) { return 0; } static int android_media_tv_Tuner_start_filter(JNIEnv *env, jobject filter) { sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (filterSp == NULL) { ALOGD("Failed to start filter: filter not found"); return false; } return filterSp->start() == Result::SUCCESS; Result r = filterSp->start(); return (int) r; } static bool android_media_tv_Tuner_stop_filter(JNIEnv *env, jobject filter) { static int android_media_tv_Tuner_stop_filter(JNIEnv *env, jobject filter) { sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (filterSp == NULL) { ALOGD("Failed to stop filter: filter not found"); return false; } return filterSp->stop() == Result::SUCCESS; Result r = filterSp->stop(); return (int) r; } static bool android_media_tv_Tuner_flush_filter(JNIEnv *env, jobject filter) { static int android_media_tv_Tuner_flush_filter(JNIEnv *env, jobject filter) { sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (filterSp == NULL) { ALOGD("Failed to flush filter: filter not found"); return false; } return filterSp->flush() == Result::SUCCESS; Result r = filterSp->flush(); return (int) r; } static int android_media_tv_Tuner_read_filter_fmq( Loading @@ -784,6 +799,10 @@ static int android_media_tv_Tuner_read_filter_fmq( return copyData(env, filterSp, buffer, offset, size); } static int android_media_tv_Tuner_close_filter(JNIEnv*, jobject) { return 0; } static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->openDescrambler(); Loading Loading @@ -824,24 +843,24 @@ static jobject android_media_tv_Tuner_open_dvr(JNIEnv *env, jobject thiz, jint t return tuner->openDvr(static_cast<DvrType>(type), bufferSize); } static bool android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) { static int android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; } Result result = dvrSp->attachFilter(filterSp); return result == Result::SUCCESS; return (int) result; } static bool android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobject filter) { static int android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; } Result result = dvrSp->detachFilter(filterSp); return result == Result::SUCCESS; return (int) result; } static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobject settings) { Loading @@ -854,31 +873,38 @@ static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobjec return (int)result; } static bool android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { static int android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to start dvr: dvr not found"); return false; } return dvrSp->start() == Result::SUCCESS; Result result = dvrSp->start(); return (int) result; } static bool android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { static int android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to stop dvr: dvr not found"); return false; } return dvrSp->stop() == Result::SUCCESS; Result result = dvrSp->stop(); return (int) result; } static bool android_media_tv_Tuner_flush_dvr(JNIEnv *env, jobject dvr) { static int android_media_tv_Tuner_flush_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to flush dvr: dvr not found"); return false; } return dvrSp->flush() == Result::SUCCESS; Result result = dvrSp->flush(); return (int) result; } static int android_media_tv_Tuner_close_dvr(JNIEnv*, jobject) { return 0; } static const JNINativeMethod gTunerMethods[] = { Loading @@ -893,6 +919,7 @@ static const JNINativeMethod gTunerMethods[] = { { "nativeStopTune", "()I", (void *)android_media_tv_Tuner_stop_tune }, { "nativeScan", "(ILandroid/media/tv/tuner/FrontendSettings;I)I", (void *)android_media_tv_Tuner_scan }, { "nativeStopScan", "()I", (void *)android_media_tv_Tuner_stop_scan }, { "nativeSetLnb", "(I)I", (void *)android_media_tv_Tuner_set_lnb }, { "nativeSetLna", "(Z)I", (void *)android_media_tv_Tuner_set_lna }, { "nativeGetFrontendStatus", "([I)[Landroid/media/tv/tuner/FrontendStatus;", Loading @@ -912,10 +939,14 @@ static const JNINativeMethod gTunerMethods[] = { static const JNINativeMethod gFilterMethods[] = { { "nativeConfigureFilter", "(IILandroid/media/tv/tuner/FilterSettings;)I", (void *)android_media_tv_Tuner_configure_filter }, { "nativeStartFilter", "()Z", (void *)android_media_tv_Tuner_start_filter }, { "nativeStopFilter", "()Z", (void *)android_media_tv_Tuner_stop_filter }, { "nativeFlushFilter", "()Z", (void *)android_media_tv_Tuner_flush_filter }, { "nativeGetId", "()I", (void *)android_media_tv_Tuner_get_filter_id }, { "nativeSetDataSource", "(Landroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_set_filter_data_source }, { "nativeStartFilter", "()I", (void *)android_media_tv_Tuner_start_filter }, { "nativeStopFilter", "()I", (void *)android_media_tv_Tuner_stop_filter }, { "nativeFlushFilter", "()I", (void *)android_media_tv_Tuner_flush_filter }, { "nativeRead", "([BII)I", (void *)android_media_tv_Tuner_read_filter_fmq }, { "nativeCloseFilter", "()I", (void *)android_media_tv_Tuner_close_filter }, }; static const JNINativeMethod gDescramblerMethods[] = { Loading @@ -928,15 +959,16 @@ static const JNINativeMethod gDescramblerMethods[] = { }; static const JNINativeMethod gDvrMethods[] = { { "nativeAttachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeAttachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_attach_filter }, { "nativeDetachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeDetachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_detach_filter }, { "nativeConfigureDvr", "(Landroid/media/tv/tuner/DvrSettings;)I", (void *)android_media_tv_Tuner_configure_dvr }, { "nativeStartDvr", "()Z", (void *)android_media_tv_Tuner_start_dvr }, { "nativeStopDvr", "()Z", (void *)android_media_tv_Tuner_stop_dvr }, { "nativeFlushDvr", "()Z", (void *)android_media_tv_Tuner_flush_dvr }, { "nativeStartDvr", "()I", (void *)android_media_tv_Tuner_start_dvr }, { "nativeStopDvr", "()I", (void *)android_media_tv_Tuner_stop_dvr }, { "nativeFlushDvr", "()I", (void *)android_media_tv_Tuner_flush_dvr }, { "nativeClose", "()I", (void *)android_media_tv_Tuner_close_dvr }, }; static bool register_android_media_tv_Tuner(JNIEnv *env) { Loading Loading
media/java/android/media/tv/tuner/Tuner.java +138 −16 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ public final class Tuner implements AutoCloseable { private native int nativeTune(int type, FrontendSettings settings); private native int nativeStopTune(); private native int nativeScan(int settingsType, FrontendSettings settings, int scanType); private native int nativeStopScan(); private native int nativeSetLnb(int lnbId); private native int nativeSetLna(boolean enable); private native FrontendStatus[] nativeGetFrontendStatus(int[] statusTypes); Loading Loading @@ -285,6 +286,16 @@ public final class Tuner implements AutoCloseable { return nativeScan(settings.getType(), settings, scanType); } /** * Stops a previous scanning. * * If the method completes successfully, the frontend stop previous scanning. * @hide */ public int stopScan() { return nativeStopScan(); } /** * Sets Low-Noise Block downconverter (LNB) for satellite frontend. * Loading Loading @@ -356,10 +367,13 @@ public final class Tuner implements AutoCloseable { int mId; private native int nativeConfigureFilter(int type, int subType, FilterSettings settings); private native boolean nativeStartFilter(); private native boolean nativeStopFilter(); private native boolean nativeFlushFilter(); private native int nativeGetId(); private native int nativeSetDataSource(Filter source); private native int nativeStartFilter(); private native int nativeStopFilter(); private native int nativeFlushFilter(); private native int nativeRead(byte[] buffer, int offset, int size); private native int nativeClose(); private Filter(int id) { mId = id; Loading @@ -372,6 +386,12 @@ public final class Tuner implements AutoCloseable { } } /** * Configures the filter. * * @param settings the settings of the filter. * @return result status of the operation. */ public int configure(FilterSettings settings) { int subType = -1; if (settings.mSettings != null) { Loading @@ -380,15 +400,56 @@ public final class Tuner implements AutoCloseable { return nativeConfigureFilter(settings.getType(), subType, settings); } public boolean start() { /** * Gets the filter Id. * * @return the hardware resource Id for the filter. */ public int getId() { return nativeGetId(); } /** * Sets the filter's data source. * * A filter uses demux as data source by default. If the data was packetized * by multiple protocols, multiple filters may need to work together to * extract all protocols' header. Then a filter's data source can be output * from another filter. * * @param source the filter instance which provides data input. Switch to * use demux as data source if the filter instance is NULL. * @return result status of the operation. */ public int setDataSource(@Nullable Filter source) { return nativeSetDataSource(source); } /** * Starts the filter. * * @return result status of the operation. */ public int start() { return nativeStartFilter(); } public boolean stop() { /** * Stops the filter. * * @return result status of the operation. */ public int stop() { return nativeStopFilter(); } public boolean flush() { /** * Flushes the filter. * * @return result status of the operation. */ public int flush() { return nativeFlushFilter(); } Loading @@ -396,6 +457,15 @@ public final class Tuner implements AutoCloseable { size = Math.min(size, buffer.length - offset); return nativeRead(buffer, offset, size); } /** * Release the Filter instance. * * @return result status of the operation. */ public int close() { return nativeClose(); } } private Filter openFilter(@FilterType int mainType, @FilterSubtype int subType, int bufferSize, Loading Loading @@ -554,33 +624,85 @@ public final class Tuner implements AutoCloseable { private long mNativeContext; private DvrCallback mCallback; private native boolean nativeAttachFilter(Filter filter); private native boolean nativeDetachFilter(Filter filter); private native int nativeAttachFilter(Filter filter); private native int nativeDetachFilter(Filter filter); private native int nativeConfigureDvr(DvrSettings settings); private native boolean nativeStartDvr(); private native boolean nativeStopDvr(); private native boolean nativeFlushDvr(); private native int nativeStartDvr(); private native int nativeStopDvr(); private native int nativeFlushDvr(); private native int nativeClose(); private Dvr() {} public boolean attachFilter(Filter filter) { /** * Attaches a filter to DVR interface for recording. * * @param filter the filter to be attached. * @return result status of the operation. */ public int attachFilter(Filter filter) { return nativeAttachFilter(filter); } public boolean detachFilter(Filter filter) { /** * Detaches a filter from DVR interface. * * @param filter the filter to be detached. * @return result status of the operation. */ public int detachFilter(Filter filter) { return nativeDetachFilter(filter); } /** * Configures the DVR. * * @param settings the settings of the DVR interface. * @return result status of the operation. */ public int configure(DvrSettings settings) { return nativeConfigureDvr(settings); } public boolean start() { /** * Starts DVR. * * Starts consuming playback data or producing data for recording. * * @return result status of the operation. */ public int start() { return nativeStartDvr(); } public boolean stop() { /** * Stops DVR. * * Stops consuming playback data or producing data for recording. * * @return result status of the operation. */ public int stop() { return nativeStopDvr(); } public boolean flush() { /** * Flushed DVR data. * * @return result status of the operation. */ public int flush() { return nativeFlushDvr(); } /** * closes the DVR instance to release resources. * * @return result status of the operation. */ public int close() { return nativeClose(); } } private Dvr openDvr(int type, int bufferSize) { Loading
media/jni/android_media_tv_Tuner.cpp +59 −27 Original line number Diff line number Diff line Loading @@ -609,7 +609,7 @@ static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, job return tuner->tune(getFrontendSettings(env, type, settings)); } static int android_media_tv_Tuner_stop_tune(JNIEnv, jobject) { static int android_media_tv_Tuner_stop_tune(JNIEnv*, jobject) { return 0; } Loading @@ -620,11 +620,15 @@ static int android_media_tv_Tuner_scan( env, settingsType, settings), static_cast<FrontendScanType>(scanType)); } static int android_media_tv_Tuner_set_lnb(JNIEnv, jobject, jint) { static int android_media_tv_Tuner_stop_scan(JNIEnv*, jobject) { return 0; } static int android_media_tv_Tuner_set_lna(JNIEnv, jobject, jint, jboolean) { static int android_media_tv_Tuner_set_lnb(JNIEnv*, jobject, jint) { return 0; } static int android_media_tv_Tuner_set_lna(JNIEnv*, jobject, jint, jboolean) { return 0; } Loading Loading @@ -747,31 +751,42 @@ static int android_media_tv_Tuner_configure_filter( return (int)res; } static bool android_media_tv_Tuner_start_filter(JNIEnv *env, jobject filter) { static int android_media_tv_Tuner_get_filter_id(JNIEnv*, jobject) { return 0; } static int android_media_tv_Tuner_set_filter_data_source(JNIEnv*, jobject, jobject) { return 0; } static int android_media_tv_Tuner_start_filter(JNIEnv *env, jobject filter) { sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (filterSp == NULL) { ALOGD("Failed to start filter: filter not found"); return false; } return filterSp->start() == Result::SUCCESS; Result r = filterSp->start(); return (int) r; } static bool android_media_tv_Tuner_stop_filter(JNIEnv *env, jobject filter) { static int android_media_tv_Tuner_stop_filter(JNIEnv *env, jobject filter) { sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (filterSp == NULL) { ALOGD("Failed to stop filter: filter not found"); return false; } return filterSp->stop() == Result::SUCCESS; Result r = filterSp->stop(); return (int) r; } static bool android_media_tv_Tuner_flush_filter(JNIEnv *env, jobject filter) { static int android_media_tv_Tuner_flush_filter(JNIEnv *env, jobject filter) { sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (filterSp == NULL) { ALOGD("Failed to flush filter: filter not found"); return false; } return filterSp->flush() == Result::SUCCESS; Result r = filterSp->flush(); return (int) r; } static int android_media_tv_Tuner_read_filter_fmq( Loading @@ -784,6 +799,10 @@ static int android_media_tv_Tuner_read_filter_fmq( return copyData(env, filterSp, buffer, offset, size); } static int android_media_tv_Tuner_close_filter(JNIEnv*, jobject) { return 0; } static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->openDescrambler(); Loading Loading @@ -824,24 +843,24 @@ static jobject android_media_tv_Tuner_open_dvr(JNIEnv *env, jobject thiz, jint t return tuner->openDvr(static_cast<DvrType>(type), bufferSize); } static bool android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) { static int android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; } Result result = dvrSp->attachFilter(filterSp); return result == Result::SUCCESS; return (int) result; } static bool android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobject filter) { static int android_media_tv_Tuner_detach_filter(JNIEnv *env, jobject dvr, jobject filter) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); if (dvrSp == NULL || filterSp == NULL) { return false; } Result result = dvrSp->detachFilter(filterSp); return result == Result::SUCCESS; return (int) result; } static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobject settings) { Loading @@ -854,31 +873,38 @@ static int android_media_tv_Tuner_configure_dvr(JNIEnv *env, jobject dvr, jobjec return (int)result; } static bool android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { static int android_media_tv_Tuner_start_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to start dvr: dvr not found"); return false; } return dvrSp->start() == Result::SUCCESS; Result result = dvrSp->start(); return (int) result; } static bool android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { static int android_media_tv_Tuner_stop_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to stop dvr: dvr not found"); return false; } return dvrSp->stop() == Result::SUCCESS; Result result = dvrSp->stop(); return (int) result; } static bool android_media_tv_Tuner_flush_dvr(JNIEnv *env, jobject dvr) { static int android_media_tv_Tuner_flush_dvr(JNIEnv *env, jobject dvr) { sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr(); if (dvrSp == NULL) { ALOGD("Failed to flush dvr: dvr not found"); return false; } return dvrSp->flush() == Result::SUCCESS; Result result = dvrSp->flush(); return (int) result; } static int android_media_tv_Tuner_close_dvr(JNIEnv*, jobject) { return 0; } static const JNINativeMethod gTunerMethods[] = { Loading @@ -893,6 +919,7 @@ static const JNINativeMethod gTunerMethods[] = { { "nativeStopTune", "()I", (void *)android_media_tv_Tuner_stop_tune }, { "nativeScan", "(ILandroid/media/tv/tuner/FrontendSettings;I)I", (void *)android_media_tv_Tuner_scan }, { "nativeStopScan", "()I", (void *)android_media_tv_Tuner_stop_scan }, { "nativeSetLnb", "(I)I", (void *)android_media_tv_Tuner_set_lnb }, { "nativeSetLna", "(Z)I", (void *)android_media_tv_Tuner_set_lna }, { "nativeGetFrontendStatus", "([I)[Landroid/media/tv/tuner/FrontendStatus;", Loading @@ -912,10 +939,14 @@ static const JNINativeMethod gTunerMethods[] = { static const JNINativeMethod gFilterMethods[] = { { "nativeConfigureFilter", "(IILandroid/media/tv/tuner/FilterSettings;)I", (void *)android_media_tv_Tuner_configure_filter }, { "nativeStartFilter", "()Z", (void *)android_media_tv_Tuner_start_filter }, { "nativeStopFilter", "()Z", (void *)android_media_tv_Tuner_stop_filter }, { "nativeFlushFilter", "()Z", (void *)android_media_tv_Tuner_flush_filter }, { "nativeGetId", "()I", (void *)android_media_tv_Tuner_get_filter_id }, { "nativeSetDataSource", "(Landroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_set_filter_data_source }, { "nativeStartFilter", "()I", (void *)android_media_tv_Tuner_start_filter }, { "nativeStopFilter", "()I", (void *)android_media_tv_Tuner_stop_filter }, { "nativeFlushFilter", "()I", (void *)android_media_tv_Tuner_flush_filter }, { "nativeRead", "([BII)I", (void *)android_media_tv_Tuner_read_filter_fmq }, { "nativeCloseFilter", "()I", (void *)android_media_tv_Tuner_close_filter }, }; static const JNINativeMethod gDescramblerMethods[] = { Loading @@ -928,15 +959,16 @@ static const JNINativeMethod gDescramblerMethods[] = { }; static const JNINativeMethod gDvrMethods[] = { { "nativeAttachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeAttachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_attach_filter }, { "nativeDetachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeDetachFilter", "(Landroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_detach_filter }, { "nativeConfigureDvr", "(Landroid/media/tv/tuner/DvrSettings;)I", (void *)android_media_tv_Tuner_configure_dvr }, { "nativeStartDvr", "()Z", (void *)android_media_tv_Tuner_start_dvr }, { "nativeStopDvr", "()Z", (void *)android_media_tv_Tuner_stop_dvr }, { "nativeFlushDvr", "()Z", (void *)android_media_tv_Tuner_flush_dvr }, { "nativeStartDvr", "()I", (void *)android_media_tv_Tuner_start_dvr }, { "nativeStopDvr", "()I", (void *)android_media_tv_Tuner_stop_dvr }, { "nativeFlushDvr", "()I", (void *)android_media_tv_Tuner_flush_dvr }, { "nativeClose", "()I", (void *)android_media_tv_Tuner_close_dvr }, }; static bool register_android_media_tv_Tuner(JNIEnv *env) { Loading