diff options
14 files changed, 305 insertions, 122 deletions
diff --git a/media/java/android/media/tv/tuner/FilterEvent.java b/media/java/android/media/tv/tuner/FilterEvent.java deleted file mode 100644 index 7c165cecd6de..000000000000 --- a/media/java/android/media/tv/tuner/FilterEvent.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tuner; - -import android.os.NativeHandle; - -/** - * Demux filter event. - * - * @hide - */ -public abstract class FilterEvent { - - /** - * Section event. - */ - public static class SectionEvent extends FilterEvent { - private int mTableId; - private int mVersion; - private int mSectionNum; - private int mDataLength; - } - - /** - * Media event. - */ - public static class MediaEvent extends FilterEvent { - private int mStreamId; - private boolean mIsPtsPresent; - private long mPts; - private int mDataLength; - private NativeHandle mHandle; - private boolean mIsSecureMemory; - private int mMpuSequenceNumber; - private boolean mIsPrivateData; - private AudioExtraMetaData mExtraMetaData; - } - - /** - * PES event. - */ - public static class PesEvent extends FilterEvent { - private int mStreamId; - private int mDataLength; - private int mMpuSequenceNumber; - } - - /** - * TS record event. - */ - public static class TsRecordEvent extends FilterEvent { - private int mTpid; - private int mIndexMask; - private long mByteNumber; - } - - /** - * MMPT record event. - */ - public static class MmtpRecordEvent extends FilterEvent { - private int mScHevcIndexMask; - private long mByteNumber; - } - - /** - * Download event. - */ - public static class DownloadEvent extends FilterEvent { - private int mItemId; - private int mMpuSequenceNumber; - private int mItemFragmentIndex; - private int mLastItemFragmentIndex; - private int mDataLength; - } - - /** - * IP payload event. - */ - public static class IpPayloadEvent extends FilterEvent { - private int mDataLength; - } - - /** - * TEMI event. - */ - public static class TemiEvent extends FilterEvent { - private long mPts; - private byte mDescrTag; - private byte[] mDescrData; - } - - /** - * Extra Meta Data from AD (Audio Descriptor) according to - * ETSI TS 101 154 V2.1.1. - */ - public static class AudioExtraMetaData { - private byte mAdFade; - private byte mAdPan; - private byte mVersionTextTag; - private byte mAdGainCenter; - private byte mAdGainFront; - private byte mAdGainSurround; - } -} diff --git a/media/java/android/media/tv/tuner/FilterSettings.java b/media/java/android/media/tv/tuner/FilterSettings.java index 673b3d9d8bcc..4ee61a8feee8 100644 --- a/media/java/android/media/tv/tuner/FilterSettings.java +++ b/media/java/android/media/tv/tuner/FilterSettings.java @@ -40,6 +40,10 @@ public abstract class FilterSettings { @FilterType public abstract int getType(); + public Settings getSettings() { + return mSettings; + } + // TODO: more builders and getters /** diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java index e75bb88197d4..9493581ca546 100644 --- a/media/java/android/media/tv/tuner/Tuner.java +++ b/media/java/android/media/tv/tuner/Tuner.java @@ -21,6 +21,7 @@ import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.content.Context; +import android.media.tv.tuner.FilterSettings.Settings; import android.media.tv.tuner.TunerConstants.DemuxPidType; import android.media.tv.tuner.TunerConstants.FilterSubtype; import android.media.tv.tuner.TunerConstants.FilterType; @@ -29,6 +30,7 @@ import android.media.tv.tuner.TunerConstants.LnbPosition; import android.media.tv.tuner.TunerConstants.LnbTone; import android.media.tv.tuner.TunerConstants.LnbVoltage; import android.media.tv.tuner.TunerConstants.Result; +import android.media.tv.tuner.filter.FilterEvent; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -488,8 +490,9 @@ public final class Tuner implements AutoCloseable { */ public int configure(FilterSettings settings) { int subType = -1; - if (settings.mSettings != null) { - subType = settings.mSettings.getType(); + Settings s = settings.getSettings(); + if (s != null) { + subType = s.getType(); } return nativeConfigureFilter(settings.getType(), subType, settings); } diff --git a/media/java/android/media/tv/tuner/TunerUtils.java b/media/java/android/media/tv/tuner/TunerUtils.java index b3bd78076b60..a7ccb0288e03 100644 --- a/media/java/android/media/tv/tuner/TunerUtils.java +++ b/media/java/android/media/tv/tuner/TunerUtils.java @@ -30,14 +30,26 @@ import android.media.tv.tuner.TunerConstants.FilterType; public final class TunerUtils { private static final String PERMISSION = android.Manifest.permission.ACCESS_TV_TUNER; - static void checkTunerPermission(Context context) { + /** + * Checks whether the caller has permission to access tuner. + * + * @param context context of the caller. + * @throws SecurityException if the caller doesn't have the permission. + */ + public static void checkTunerPermission(Context context) { if (context.checkCallingOrSelfPermission(PERMISSION) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Caller must have " + PERMISSION + " permission."); } } - static int getFilterSubtype(@FilterType int mainType, @FilterSubtype int subtype) { + /** + * Gets the corresponding filter subtype constant defined in tuner HAL. + * + * @param mainType filter main type. + * @param subtype filter subtype. + */ + public static int getFilterSubtype(@FilterType int mainType, @FilterSubtype int subtype) { if (mainType == TunerConstants.FILTER_TYPE_TS) { switch (subtype) { case TunerConstants.FILTER_SUBTYPE_UNDEFINED: diff --git a/media/java/android/media/tv/tuner/filter/AudioExtraMetaData.java b/media/java/android/media/tv/tuner/filter/AudioExtraMetaData.java new file mode 100644 index 000000000000..306de84fe130 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/AudioExtraMetaData.java @@ -0,0 +1,31 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * Extra Meta Data from AD (Audio Descriptor) according to + * ETSI TS 101 154 V2.1.1. + * @hide + */ +public class AudioExtraMetaData { + private byte mAdFade; + private byte mAdPan; + private byte mVersionTextTag; + private byte mAdGainCenter; + private byte mAdGainFront; + private byte mAdGainSurround; +} diff --git a/media/java/android/media/tv/tuner/filter/DownloadEvent.java b/media/java/android/media/tv/tuner/filter/DownloadEvent.java new file mode 100644 index 000000000000..548fa777f765 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/DownloadEvent.java @@ -0,0 +1,30 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * Download event. + * @hide + */ +public class DownloadEvent extends FilterEvent { + private int mItemId; + private int mMpuSequenceNumber; + private int mItemFragmentIndex; + private int mLastItemFragmentIndex; + private int mDataLength; +} + diff --git a/media/java/android/media/tv/tuner/filter/FilterEvent.java b/media/java/android/media/tv/tuner/filter/FilterEvent.java new file mode 100644 index 000000000000..0a4fa8652e52 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/FilterEvent.java @@ -0,0 +1,25 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * Demux filter event. + * + * @hide + */ +public abstract class FilterEvent { +} diff --git a/media/java/android/media/tv/tuner/filter/IpPayloadEvent.java b/media/java/android/media/tv/tuner/filter/IpPayloadEvent.java new file mode 100644 index 000000000000..4da1d21e3c44 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/IpPayloadEvent.java @@ -0,0 +1,25 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * IP payload event. + * @hide + */ +public class IpPayloadEvent extends FilterEvent { + private int mDataLength; +} diff --git a/media/java/android/media/tv/tuner/filter/MediaEvent.java b/media/java/android/media/tv/tuner/filter/MediaEvent.java new file mode 100644 index 000000000000..5e45350950b6 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/MediaEvent.java @@ -0,0 +1,35 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +import android.os.NativeHandle; + +/** + * Media event. + * @hide + */ +public class MediaEvent { + private int mStreamId; + private boolean mIsPtsPresent; + private long mPts; + private int mDataLength; + private NativeHandle mHandle; + private boolean mIsSecureMemory; + private int mMpuSequenceNumber; + private boolean mIsPrivateData; + private AudioExtraMetaData mExtraMetaData; +} diff --git a/media/java/android/media/tv/tuner/filter/MmtpRecordEvent.java b/media/java/android/media/tv/tuner/filter/MmtpRecordEvent.java new file mode 100644 index 000000000000..dbd8c77d7ea3 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/MmtpRecordEvent.java @@ -0,0 +1,26 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * MMPT record event. + * @hide + */ +public class MmtpRecordEvent extends FilterEvent { + private int mScHevcIndexMask; + private long mByteNumber; +} diff --git a/media/java/android/media/tv/tuner/filter/PesEvent.java b/media/java/android/media/tv/tuner/filter/PesEvent.java new file mode 100644 index 000000000000..16536e225472 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/PesEvent.java @@ -0,0 +1,27 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * PES event. + * @hide + */ +public class PesEvent extends FilterEvent { + private int mStreamId; + private int mDataLength; + private int mMpuSequenceNumber; +} diff --git a/media/java/android/media/tv/tuner/filter/SectionEvent.java b/media/java/android/media/tv/tuner/filter/SectionEvent.java new file mode 100644 index 000000000000..5b5f8c91ce55 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/SectionEvent.java @@ -0,0 +1,29 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * Section event. + * @hide + */ +public class SectionEvent { + // TODO: add constructor and getters + private int mTableId; + private int mVersion; + private int mSectionNum; + private int mDataLength; +} diff --git a/media/java/android/media/tv/tuner/filter/TemiEvent.java b/media/java/android/media/tv/tuner/filter/TemiEvent.java new file mode 100644 index 000000000000..384160443a00 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/TemiEvent.java @@ -0,0 +1,27 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * TEMI event. + * @hide + */ +public class TemiEvent extends FilterEvent { + private long mPts; + private byte mDescrTag; + private byte[] mDescrData; +} diff --git a/media/java/android/media/tv/tuner/filter/TsRecordEvent.java b/media/java/android/media/tv/tuner/filter/TsRecordEvent.java new file mode 100644 index 000000000000..875b5bd2980d --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/TsRecordEvent.java @@ -0,0 +1,27 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media.tv.tuner.filter; + +/** + * TS record event. + * @hide + */ +public class TsRecordEvent extends FilterEvent { + private int mTpid; + private int mIndexMask; + private long mByteNumber; +} |