From ce17f6189989a431d4761a034d2211b3d698c09a Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 21 Oct 2021 17:18:46 +0100 Subject: [PATCH] Add decoder module PiperOrigin-RevId: 404810682 --- core_settings.gradle | 2 + extensions/av1/build.gradle | 2 + extensions/ffmpeg/build.gradle | 2 + extensions/flac/build.gradle | 2 + extensions/opus/build.gradle | 2 + extensions/vp9/build.gradle | 2 + library/all/build.gradle | 3 ++ library/core/build.gradle | 2 + library/decoder/README.md | 11 +++++ library/decoder/build.gradle | 47 +++++++++++++++++++ library/decoder/src/main/AndroidManifest.xml | 19 ++++++++ .../android/exoplayer2/decoder/Buffer.java | 0 .../exoplayer2/decoder/CryptoConfig.java | 0 .../exoplayer2/decoder/CryptoException.java | 0 .../exoplayer2/decoder/CryptoInfo.java | 0 .../android/exoplayer2/decoder/Decoder.java | 0 .../exoplayer2/decoder/DecoderException.java | 0 .../decoder/DecoderInputBuffer.java | 0 .../exoplayer2/decoder/OutputBuffer.java | 0 .../exoplayer2/decoder/SimpleDecoder.java | 0 .../decoder/SimpleOutputBuffer.java | 0 .../exoplayer2/decoder/package-info.java | 0 library/decoder/src/test/AndroidManifest.xml | 19 ++++++++ .../exoplayer2/decoder/CryptoInfoTest.java | 0 .../decoder/DecoderInputBufferTest.java | 0 library/extractor/build.gradle | 2 + 26 files changed, 115 insertions(+) create mode 100644 library/decoder/README.md create mode 100644 library/decoder/build.gradle create mode 100644 library/decoder/src/main/AndroidManifest.xml rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/Buffer.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/CryptoConfig.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/CryptoException.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/Decoder.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/DecoderException.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/OutputBuffer.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/SimpleOutputBuffer.java (100%) rename library/{common => decoder}/src/main/java/com/google/android/exoplayer2/decoder/package-info.java (100%) create mode 100644 library/decoder/src/test/AndroidManifest.xml rename library/{common => decoder}/src/test/java/com/google/android/exoplayer2/decoder/CryptoInfoTest.java (100%) rename library/{common => decoder}/src/test/java/com/google/android/exoplayer2/decoder/DecoderInputBufferTest.java (100%) diff --git a/core_settings.gradle b/core_settings.gradle index 06a4327aa7..8224ac9588 100644 --- a/core_settings.gradle +++ b/core_settings.gradle @@ -42,6 +42,8 @@ project(modulePrefix + 'library-transformer').projectDir = new File(rootDir, 'li include modulePrefix + 'library-ui' project(modulePrefix + 'library-ui').projectDir = new File(rootDir, 'library/ui') +include modulePrefix + 'library-decoder' +project(modulePrefix + 'library-decoder').projectDir = new File(rootDir, 'library/decoder') include modulePrefix + 'extension-av1' project(modulePrefix + 'extension-av1').projectDir = new File(rootDir, 'extensions/av1') include modulePrefix + 'extension-ffmpeg' diff --git a/extensions/av1/build.gradle b/extensions/av1/build.gradle index d7c6243c3b..9378f08d3f 100644 --- a/extensions/av1/build.gradle +++ b/extensions/av1/build.gradle @@ -44,6 +44,8 @@ if (project.file('src/main/jni/libgav1').exists()) { } dependencies { + implementation project(modulePrefix + 'library-decoder') + // TODO(b/203752526): Remove this dependency. implementation project(modulePrefix + 'library-core') implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion diff --git a/extensions/ffmpeg/build.gradle b/extensions/ffmpeg/build.gradle index a9edeaff6b..3bdf0a7600 100644 --- a/extensions/ffmpeg/build.gradle +++ b/extensions/ffmpeg/build.gradle @@ -21,6 +21,8 @@ if (project.file('src/main/jni/ffmpeg').exists()) { } dependencies { + implementation project(modulePrefix + 'library-decoder') + // TODO(b/203752526): Remove this dependency. implementation project(modulePrefix + 'library-core') implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion diff --git a/extensions/flac/build.gradle b/extensions/flac/build.gradle index 9aeeb83eb3..4f20bd24ee 100644 --- a/extensions/flac/build.gradle +++ b/extensions/flac/build.gradle @@ -24,6 +24,8 @@ android { } dependencies { + implementation project(modulePrefix + 'library-decoder') + // TODO(b/203752526): Remove this dependency. implementation project(modulePrefix + 'library-core') implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion diff --git a/extensions/opus/build.gradle b/extensions/opus/build.gradle index ba670037f6..7939292938 100644 --- a/extensions/opus/build.gradle +++ b/extensions/opus/build.gradle @@ -24,6 +24,8 @@ android { } dependencies { + implementation project(modulePrefix + 'library-decoder') + // TODO(b/203752526): Remove this dependency. implementation project(modulePrefix + 'library-core') implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion diff --git a/extensions/vp9/build.gradle b/extensions/vp9/build.gradle index 79d85a6ac5..4d5629837c 100644 --- a/extensions/vp9/build.gradle +++ b/extensions/vp9/build.gradle @@ -24,6 +24,8 @@ android { } dependencies { + implementation project(modulePrefix + 'library-decoder') + // TODO(b/203752526): Remove this dependency. implementation project(modulePrefix + 'library-core') implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion diff --git a/library/all/build.gradle b/library/all/build.gradle index 4ec8373e2f..965cdc11c4 100644 --- a/library/all/build.gradle +++ b/library/all/build.gradle @@ -14,6 +14,9 @@ apply from: "$gradle.ext.exoplayerSettingsDir/common_library_config.gradle" dependencies { + api project(modulePrefix + 'library-common') + api project(modulePrefix + 'library-decoder') + api project(modulePrefix + 'library-extractor') api project(modulePrefix + 'library-core') api project(modulePrefix + 'library-dash') api project(modulePrefix + 'library-hls') diff --git a/library/core/build.gradle b/library/core/build.gradle index 4aa74cc439..7d848f9ab5 100644 --- a/library/core/build.gradle +++ b/library/core/build.gradle @@ -36,6 +36,8 @@ android { dependencies { api project(modulePrefix + 'library-common') + // TODO(b/203754886): Revisit which modules are exported as API dependencies. + api project(modulePrefix + 'library-decoder') api project(modulePrefix + 'library-extractor') implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion implementation 'androidx.core:core:' + androidxCoreVersion diff --git a/library/decoder/README.md b/library/decoder/README.md new file mode 100644 index 0000000000..7524b959d4 --- /dev/null +++ b/library/decoder/README.md @@ -0,0 +1,11 @@ +# Decoder module + +Provides a decoder abstraction. Application code will not normally need to +depend on this module directly. + +## Links + +* [Javadoc][]: Classes matching `com.google.android.exoplayer2.decoder.*` belong to this + module. + +[Javadoc]: https://exoplayer.dev/doc/reference/index.html diff --git a/library/decoder/build.gradle b/library/decoder/build.gradle new file mode 100644 index 0000000000..48d8054c22 --- /dev/null +++ b/library/decoder/build.gradle @@ -0,0 +1,47 @@ +// Copyright (C) 2021 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. +apply from: "$gradle.ext.exoplayerSettingsDir/common_library_config.gradle" + +android { + defaultConfig { + multiDexEnabled true + } + + buildTypes { + debug { + testCoverageEnabled = true + } + } +} + +dependencies { + implementation project(modulePrefix + 'library-common') + implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion + compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion + testImplementation 'androidx.test:core:' + androidxTestCoreVersion + testImplementation 'androidx.test.ext:junit:' + androidxTestJUnitVersion + testImplementation 'com.google.truth:truth:' + truthVersion + testImplementation 'org.robolectric:robolectric:' + robolectricVersion +} + +ext { + javadocTitle = 'Decoder module' +} +apply from: '../../javadoc_library.gradle' + +ext { + releaseArtifactId = 'exoplayer-decoder' + releaseDescription = 'The ExoPlayer library decoder module.' +} +apply from: '../../publish.gradle' diff --git a/library/decoder/src/main/AndroidManifest.xml b/library/decoder/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..66cfd433a3 --- /dev/null +++ b/library/decoder/src/main/AndroidManifest.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/Buffer.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/Buffer.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/Buffer.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/Buffer.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/CryptoConfig.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/CryptoConfig.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/CryptoConfig.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/CryptoConfig.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/CryptoException.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/CryptoException.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/CryptoException.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/CryptoException.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/Decoder.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/Decoder.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/Decoder.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/Decoder.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/DecoderException.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderException.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/DecoderException.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderException.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/OutputBuffer.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/OutputBuffer.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/OutputBuffer.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/OutputBuffer.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/SimpleOutputBuffer.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/SimpleOutputBuffer.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/SimpleOutputBuffer.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/SimpleOutputBuffer.java diff --git a/library/common/src/main/java/com/google/android/exoplayer2/decoder/package-info.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/package-info.java similarity index 100% rename from library/common/src/main/java/com/google/android/exoplayer2/decoder/package-info.java rename to library/decoder/src/main/java/com/google/android/exoplayer2/decoder/package-info.java diff --git a/library/decoder/src/test/AndroidManifest.xml b/library/decoder/src/test/AndroidManifest.xml new file mode 100644 index 0000000000..66cfd433a3 --- /dev/null +++ b/library/decoder/src/test/AndroidManifest.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/library/common/src/test/java/com/google/android/exoplayer2/decoder/CryptoInfoTest.java b/library/decoder/src/test/java/com/google/android/exoplayer2/decoder/CryptoInfoTest.java similarity index 100% rename from library/common/src/test/java/com/google/android/exoplayer2/decoder/CryptoInfoTest.java rename to library/decoder/src/test/java/com/google/android/exoplayer2/decoder/CryptoInfoTest.java diff --git a/library/common/src/test/java/com/google/android/exoplayer2/decoder/DecoderInputBufferTest.java b/library/decoder/src/test/java/com/google/android/exoplayer2/decoder/DecoderInputBufferTest.java similarity index 100% rename from library/common/src/test/java/com/google/android/exoplayer2/decoder/DecoderInputBufferTest.java rename to library/decoder/src/test/java/com/google/android/exoplayer2/decoder/DecoderInputBufferTest.java diff --git a/library/extractor/build.gradle b/library/extractor/build.gradle index a82da78c2d..839d13c38a 100644 --- a/library/extractor/build.gradle +++ b/library/extractor/build.gradle @@ -26,6 +26,8 @@ android { dependencies { implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion implementation project(modulePrefix + 'library-common') + // TODO(b/203752187): Remove this dependency. + implementation project(modulePrefix + 'library-decoder') compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion compileOnly 'org.checkerframework:checker-compat-qual:' + checkerframeworkCompatVersion compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion