Loading media/java/android/media/tv/tuner/Tuner.java +62 −7 Original line number Diff line number Diff line Loading @@ -443,26 +443,81 @@ public final class Tuner implements AutoCloseable { * <p> Descrambler is a hardware component used to descramble data. * * <p> This class controls the TIS interaction with Tuner HAL. * * TODO: make it static and extends Closable. */ public class Descrambler { private long mNativeContext; private native boolean nativeAddPid(int pidType, int pid, Filter filter); private native boolean nativeRemovePid(int pidType, int pid, Filter filter); private native int nativeAddPid(int pidType, int pid, Filter filter); private native int nativeRemovePid(int pidType, int pid, Filter filter); private native int nativeSetKeyToken(byte[] keyToken); private native int nativeClose(); private Descrambler() {} /** @hide */ public boolean addPid(@DemuxPidType int pidType, int pid, Filter filter) { /** * Add packets' PID to the descrambler for descrambling. * * The descrambler will start descrambling packets with this PID. Multiple PIDs can be added * into one descrambler instance because descambling can happen simultaneously on packets * from different PIDs. * * If the Descrambler previously contained a filter for the PID, the old filter is replaced * by the specified filter. * * @param pidType the type of the PID. * @param pid the PID of packets to start to be descrambled. * @param filter an optional filter instance to identify upper stream. * @return result status of the operation. * * @hide */ public int addPid(@DemuxPidType int pidType, int pid, @Nullable Filter filter) { return nativeAddPid(pidType, pid, filter); } /** @hide */ public boolean removePid(@DemuxPidType int pidType, int pid, Filter filter) { /** * Remove packets' PID from the descrambler * * The descrambler will stop descrambling packets with this PID. * * @param pidType the type of the PID. * @param pid the PID of packets to stop to be descrambled. * @param filter an optional filter instance to identify upper stream. * @return result status of the operation. * * @hide */ public int removePid(@DemuxPidType int pidType, int pid, @Nullable Filter filter) { return nativeRemovePid(pidType, pid, filter); } /** * Set a key token to link descrambler to a key slot * * A descrambler instance can have only one key slot to link, but a key slot can hold a few * keys for different purposes. * * @param keyToken the token to be used to link the key slot. * @return result status of the operation. * * @hide */ public int setKeyToken(byte[] keyToken) { return nativeSetKeyToken(keyToken); } /** * Release the descrambler instance. * * @return result status of the operation. * * @hide */ public int close() { return nativeClose(); } } /** Loading media/jni/android_media_tv_Tuner.cpp +16 −6 Original line number Diff line number Diff line Loading @@ -785,7 +785,7 @@ static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz return tuner->openDescrambler(); } static bool android_media_tv_Tuner_add_pid( static int android_media_tv_Tuner_add_pid( JNIEnv *env, jobject descrambler, jint pidType, jint pid, jobject filter) { sp<IDescrambler> descramblerSp = getDescrambler(env, descrambler); if (descramblerSp == NULL) { Loading @@ -793,10 +793,10 @@ static bool android_media_tv_Tuner_add_pid( } sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); Result result = descramblerSp->addPid(getDemuxPid((int)pidType, (int)pid), filterSp); return result == Result::SUCCESS; return (int)result; } static bool android_media_tv_Tuner_remove_pid( static int android_media_tv_Tuner_remove_pid( JNIEnv *env, jobject descrambler, jint pidType, jint pid, jobject filter) { sp<IDescrambler> descramblerSp = getDescrambler(env, descrambler); if (descramblerSp == NULL) { Loading @@ -804,7 +804,15 @@ static bool android_media_tv_Tuner_remove_pid( } sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); Result result = descramblerSp->removePid(getDemuxPid((int)pidType, (int)pid), filterSp); return result == Result::SUCCESS; return (int)result; } static int android_media_tv_Tuner_set_key_token(JNIEnv, jobject, jbyteArray) { return 0; } static int android_media_tv_Tuner_close_descrambler(JNIEnv, jobject) { return 0; } static jobject android_media_tv_Tuner_open_dvr(JNIEnv *env, jobject thiz, jint type, jint bufferSize) { Loading Loading @@ -905,10 +913,12 @@ static const JNINativeMethod gFilterMethods[] = { }; static const JNINativeMethod gDescramblerMethods[] = { { "nativeAddPid", "(IILandroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeAddPid", "(IILandroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_add_pid }, { "nativeRemovePid", "(IILandroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeRemovePid", "(IILandroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_remove_pid }, { "nativeSetKeyToken", "([B)I", (void *)android_media_tv_Tuner_set_key_token }, { "nativeClose", "()V", (void *)android_media_tv_Tuner_close_descrambler }, }; static const JNINativeMethod gDvrMethods[] = { Loading Loading
media/java/android/media/tv/tuner/Tuner.java +62 −7 Original line number Diff line number Diff line Loading @@ -443,26 +443,81 @@ public final class Tuner implements AutoCloseable { * <p> Descrambler is a hardware component used to descramble data. * * <p> This class controls the TIS interaction with Tuner HAL. * * TODO: make it static and extends Closable. */ public class Descrambler { private long mNativeContext; private native boolean nativeAddPid(int pidType, int pid, Filter filter); private native boolean nativeRemovePid(int pidType, int pid, Filter filter); private native int nativeAddPid(int pidType, int pid, Filter filter); private native int nativeRemovePid(int pidType, int pid, Filter filter); private native int nativeSetKeyToken(byte[] keyToken); private native int nativeClose(); private Descrambler() {} /** @hide */ public boolean addPid(@DemuxPidType int pidType, int pid, Filter filter) { /** * Add packets' PID to the descrambler for descrambling. * * The descrambler will start descrambling packets with this PID. Multiple PIDs can be added * into one descrambler instance because descambling can happen simultaneously on packets * from different PIDs. * * If the Descrambler previously contained a filter for the PID, the old filter is replaced * by the specified filter. * * @param pidType the type of the PID. * @param pid the PID of packets to start to be descrambled. * @param filter an optional filter instance to identify upper stream. * @return result status of the operation. * * @hide */ public int addPid(@DemuxPidType int pidType, int pid, @Nullable Filter filter) { return nativeAddPid(pidType, pid, filter); } /** @hide */ public boolean removePid(@DemuxPidType int pidType, int pid, Filter filter) { /** * Remove packets' PID from the descrambler * * The descrambler will stop descrambling packets with this PID. * * @param pidType the type of the PID. * @param pid the PID of packets to stop to be descrambled. * @param filter an optional filter instance to identify upper stream. * @return result status of the operation. * * @hide */ public int removePid(@DemuxPidType int pidType, int pid, @Nullable Filter filter) { return nativeRemovePid(pidType, pid, filter); } /** * Set a key token to link descrambler to a key slot * * A descrambler instance can have only one key slot to link, but a key slot can hold a few * keys for different purposes. * * @param keyToken the token to be used to link the key slot. * @return result status of the operation. * * @hide */ public int setKeyToken(byte[] keyToken) { return nativeSetKeyToken(keyToken); } /** * Release the descrambler instance. * * @return result status of the operation. * * @hide */ public int close() { return nativeClose(); } } /** Loading
media/jni/android_media_tv_Tuner.cpp +16 −6 Original line number Diff line number Diff line Loading @@ -785,7 +785,7 @@ static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz return tuner->openDescrambler(); } static bool android_media_tv_Tuner_add_pid( static int android_media_tv_Tuner_add_pid( JNIEnv *env, jobject descrambler, jint pidType, jint pid, jobject filter) { sp<IDescrambler> descramblerSp = getDescrambler(env, descrambler); if (descramblerSp == NULL) { Loading @@ -793,10 +793,10 @@ static bool android_media_tv_Tuner_add_pid( } sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); Result result = descramblerSp->addPid(getDemuxPid((int)pidType, (int)pid), filterSp); return result == Result::SUCCESS; return (int)result; } static bool android_media_tv_Tuner_remove_pid( static int android_media_tv_Tuner_remove_pid( JNIEnv *env, jobject descrambler, jint pidType, jint pid, jobject filter) { sp<IDescrambler> descramblerSp = getDescrambler(env, descrambler); if (descramblerSp == NULL) { Loading @@ -804,7 +804,15 @@ static bool android_media_tv_Tuner_remove_pid( } sp<IFilter> filterSp = getFilter(env, filter)->getIFilter(); Result result = descramblerSp->removePid(getDemuxPid((int)pidType, (int)pid), filterSp); return result == Result::SUCCESS; return (int)result; } static int android_media_tv_Tuner_set_key_token(JNIEnv, jobject, jbyteArray) { return 0; } static int android_media_tv_Tuner_close_descrambler(JNIEnv, jobject) { return 0; } static jobject android_media_tv_Tuner_open_dvr(JNIEnv *env, jobject thiz, jint type, jint bufferSize) { Loading Loading @@ -905,10 +913,12 @@ static const JNINativeMethod gFilterMethods[] = { }; static const JNINativeMethod gDescramblerMethods[] = { { "nativeAddPid", "(IILandroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeAddPid", "(IILandroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_add_pid }, { "nativeRemovePid", "(IILandroid/media/tv/tuner/Tuner$Filter;)Z", { "nativeRemovePid", "(IILandroid/media/tv/tuner/Tuner$Filter;)I", (void *)android_media_tv_Tuner_remove_pid }, { "nativeSetKeyToken", "([B)I", (void *)android_media_tv_Tuner_set_key_token }, { "nativeClose", "()V", (void *)android_media_tv_Tuner_close_descrambler }, }; static const JNINativeMethod gDvrMethods[] = { Loading