Add datasource module
PiperOrigin-RevId: 404897119
This commit is contained in:
parent
37b5847681
commit
2ee72076e5
@ -51,6 +51,8 @@ project(modulePrefix + 'library-ui').projectDir = new File(rootDir, 'library/ui'
|
|||||||
include modulePrefix + 'extension-leanback'
|
include modulePrefix + 'extension-leanback'
|
||||||
project(modulePrefix + 'extension-leanback').projectDir = new File(rootDir, 'extensions/leanback')
|
project(modulePrefix + 'extension-leanback').projectDir = new File(rootDir, 'extensions/leanback')
|
||||||
|
|
||||||
|
include modulePrefix + 'library-datasource'
|
||||||
|
project(modulePrefix + 'library-datasource').projectDir = new File(rootDir, 'library/datasource')
|
||||||
include modulePrefix + 'extension-cronet'
|
include modulePrefix + 'extension-cronet'
|
||||||
project(modulePrefix + 'extension-cronet').projectDir = new File(rootDir, 'extensions/cronet')
|
project(modulePrefix + 'extension-cronet').projectDir = new File(rootDir, 'extensions/cronet')
|
||||||
include modulePrefix + 'extension-rtmp'
|
include modulePrefix + 'extension-rtmp'
|
||||||
|
@ -22,6 +22,7 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
api "com.google.android.gms:play-services-cronet:17.0.1"
|
api "com.google.android.gms:play-services-cronet:17.0.1"
|
||||||
implementation project(modulePrefix + 'library-common')
|
implementation project(modulePrefix + 'library-common')
|
||||||
|
implementation project(modulePrefix + 'library-datasource')
|
||||||
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||||
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
||||||
compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
|
compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
|
||||||
|
@ -17,6 +17,7 @@ android.defaultConfig.minSdkVersion 21
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(modulePrefix + 'library-common')
|
implementation project(modulePrefix + 'library-common')
|
||||||
|
implementation project(modulePrefix + 'library-datasource')
|
||||||
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||||
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
||||||
compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
|
compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
|
||||||
|
@ -15,6 +15,7 @@ apply from: "$gradle.ext.exoplayerSettingsDir/common_library_config.gradle"
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(modulePrefix + 'library-common')
|
implementation project(modulePrefix + 'library-common')
|
||||||
|
implementation project(modulePrefix + 'library-datasource')
|
||||||
implementation 'net.butterflytv.utils:rtmp-client:3.1.0'
|
implementation 'net.butterflytv.utils:rtmp-client:3.1.0'
|
||||||
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||||
compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
|
compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
|
||||||
|
@ -15,6 +15,7 @@ apply from: "$gradle.ext.exoplayerSettingsDir/common_library_config.gradle"
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api project(modulePrefix + 'library-common')
|
api project(modulePrefix + 'library-common')
|
||||||
|
api project(modulePrefix + 'library-datasource')
|
||||||
api project(modulePrefix + 'library-decoder')
|
api project(modulePrefix + 'library-decoder')
|
||||||
api project(modulePrefix + 'library-extractor')
|
api project(modulePrefix + 'library-extractor')
|
||||||
api project(modulePrefix + 'library-core')
|
api project(modulePrefix + 'library-core')
|
||||||
|
@ -14,19 +14,11 @@
|
|||||||
apply from: "$gradle.ext.exoplayerSettingsDir/common_library_config.gradle"
|
apply from: "$gradle.ext.exoplayerSettingsDir/common_library_config.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
|
||||||
multiDexEnabled true
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
debug {
|
debug {
|
||||||
testCoverageEnabled = true
|
testCoverageEnabled = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
androidTest.assets.srcDir '../../testdata/src/test/assets/'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@ -56,7 +48,6 @@ dependencies {
|
|||||||
testImplementation 'androidx.test.ext:junit:' + androidxTestJUnitVersion
|
testImplementation 'androidx.test.ext:junit:' + androidxTestJUnitVersion
|
||||||
testImplementation 'junit:junit:' + junitVersion
|
testImplementation 'junit:junit:' + junitVersion
|
||||||
testImplementation 'com.google.truth:truth:' + truthVersion
|
testImplementation 'com.google.truth:truth:' + truthVersion
|
||||||
testImplementation 'com.squareup.okhttp3:mockwebserver:' + okhttpVersion
|
|
||||||
testImplementation 'org.robolectric:robolectric:' + robolectricVersion
|
testImplementation 'org.robolectric:robolectric:' + robolectricVersion
|
||||||
testImplementation project(modulePrefix + 'library-core')
|
testImplementation project(modulePrefix + 'library-core')
|
||||||
testImplementation project(modulePrefix + 'testutils')
|
testImplementation project(modulePrefix + 'testutils')
|
||||||
|
@ -1,16 +1,5 @@
|
|||||||
# Proguard rules specific to the common module.
|
# Proguard rules specific to the common module.
|
||||||
|
|
||||||
# Constant folding for resource integers may mean that a resource passed to this method appears to be unused. Keep the method to prevent this from happening.
|
|
||||||
-keepclassmembers class com.google.android.exoplayer2.upstream.RawResourceDataSource {
|
|
||||||
public static android.net.Uri buildRawResourceUri(int);
|
|
||||||
}
|
|
||||||
|
|
||||||
# Constructors accessed via reflection in DefaultDataSource
|
|
||||||
-dontnote com.google.android.exoplayer2.ext.rtmp.RtmpDataSource
|
|
||||||
-keepclassmembers class com.google.android.exoplayer2.ext.rtmp.RtmpDataSource {
|
|
||||||
<init>();
|
|
||||||
}
|
|
||||||
|
|
||||||
# Don't warn about checkerframework and Kotlin annotations
|
# Don't warn about checkerframework and Kotlin annotations
|
||||||
-dontwarn org.checkerframework.**
|
-dontwarn org.checkerframework.**
|
||||||
-dontwarn kotlin.annotations.jvm.**
|
-dontwarn kotlin.annotations.jvm.**
|
||||||
|
@ -37,6 +37,7 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
api project(modulePrefix + 'library-common')
|
api project(modulePrefix + 'library-common')
|
||||||
// TODO(b/203754886): Revisit which modules are exported as API dependencies.
|
// TODO(b/203754886): Revisit which modules are exported as API dependencies.
|
||||||
|
api project(modulePrefix + 'library-datasource')
|
||||||
api project(modulePrefix + 'library-decoder')
|
api project(modulePrefix + 'library-decoder')
|
||||||
api project(modulePrefix + 'library-extractor')
|
api project(modulePrefix + 'library-extractor')
|
||||||
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||||
|
12
library/datasource/README.md
Normal file
12
library/datasource/README.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# DataSource module
|
||||||
|
|
||||||
|
Provides a `DataSource` abstraction and a number of concrete implementations for
|
||||||
|
reading data from different sources. Application code will not normally need to
|
||||||
|
depend on this module directly.
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
* [Javadoc][]: Classes matching `com.google.android.exoplayer2.upstream.*` belong to this
|
||||||
|
module.
|
||||||
|
|
||||||
|
[Javadoc]: https://exoplayer.dev/doc/reference/index.html
|
65
library/datasource/build.gradle
Normal file
65
library/datasource/build.gradle
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
// Copyright (C) 2020 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
androidTest.assets.srcDir '../../testdata/src/test/assets/'
|
||||||
|
test.assets.srcDir '../../testdata/src/test/assets/'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation project(modulePrefix + 'library-common')
|
||||||
|
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||||
|
compileOnly 'com.google.code.findbugs:jsr305:' + jsr305Version
|
||||||
|
compileOnly 'com.google.errorprone:error_prone_annotations:' + errorProneVersion
|
||||||
|
compileOnly 'org.checkerframework:checker-compat-qual:' + checkerframeworkCompatVersion
|
||||||
|
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
||||||
|
compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
|
||||||
|
androidTestImplementation 'androidx.test:runner:' + androidxTestRunnerVersion
|
||||||
|
androidTestImplementation 'com.linkedin.dexmaker:dexmaker:' + dexmakerVersion
|
||||||
|
androidTestImplementation 'com.linkedin.dexmaker:dexmaker-mockito:' + dexmakerVersion
|
||||||
|
androidTestImplementation(project(modulePrefix + 'testutils')) {
|
||||||
|
exclude module: modulePrefix.substring(1) + 'library-core'
|
||||||
|
}
|
||||||
|
testImplementation 'org.mockito:mockito-core:' + mockitoVersion
|
||||||
|
testImplementation 'androidx.test:core:' + androidxTestCoreVersion
|
||||||
|
testImplementation 'androidx.test.ext:junit:' + androidxTestJUnitVersion
|
||||||
|
testImplementation 'com.google.truth:truth:' + truthVersion
|
||||||
|
testImplementation 'com.squareup.okhttp3:mockwebserver:' + okhttpVersion
|
||||||
|
testImplementation 'org.robolectric:robolectric:' + robolectricVersion
|
||||||
|
testImplementation project(modulePrefix + 'testutils')
|
||||||
|
}
|
||||||
|
|
||||||
|
ext {
|
||||||
|
javadocTitle = 'DataSource module'
|
||||||
|
}
|
||||||
|
apply from: '../../javadoc_library.gradle'
|
||||||
|
|
||||||
|
ext {
|
||||||
|
releaseArtifactId = 'exoplayer-datasource'
|
||||||
|
releaseDescription = 'The ExoPlayer library DataSource module.'
|
||||||
|
}
|
||||||
|
apply from: '../../publish.gradle'
|
12
library/datasource/proguard-rules.txt
Normal file
12
library/datasource/proguard-rules.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Proguard rules specific to the DataSource module.
|
||||||
|
|
||||||
|
# Constant folding for resource integers may mean that a resource passed to this method appears to be unused. Keep the method to prevent this from happening.
|
||||||
|
-keepclassmembers class com.google.android.exoplayer2.upstream.RawResourceDataSource {
|
||||||
|
public static android.net.Uri buildRawResourceUri(int);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Constructors accessed via reflection in DefaultDataSource
|
||||||
|
-dontnote com.google.android.exoplayer2.ext.rtmp.RtmpDataSource
|
||||||
|
-keepclassmembers class com.google.android.exoplayer2.ext.rtmp.RtmpDataSource {
|
||||||
|
<init>();
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Copyright (C) 2016 The Android Open Source Project
|
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="com.google.android.exoplayer2.common.test">
|
package="com.google.android.exoplayer2.upstream.test">
|
||||||
|
|
||||||
<uses-sdk/>
|
<uses-sdk/>
|
||||||
|
|
||||||
@ -29,7 +29,7 @@
|
|||||||
</application>
|
</application>
|
||||||
|
|
||||||
<instrumentation
|
<instrumentation
|
||||||
android:targetPackage="com.google.android.exoplayer2.common.test"
|
android:targetPackage="com.google.android.exoplayer2.upstream.test"
|
||||||
android:name="androidx.test.runner.AndroidJUnitRunner"/>
|
android:name="androidx.test.runner.AndroidJUnitRunner"/>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
@ -19,8 +19,8 @@ import android.content.res.Resources;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
import com.google.android.exoplayer2.common.test.R;
|
|
||||||
import com.google.android.exoplayer2.testutil.DataSourceContractTest;
|
import com.google.android.exoplayer2.testutil.DataSourceContractTest;
|
||||||
|
import com.google.android.exoplayer2.upstream.test.R;
|
||||||
import com.google.android.exoplayer2.util.Util;
|
import com.google.android.exoplayer2.util.Util;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
19
library/datasource/src/main/AndroidManifest.xml
Normal file
19
library/datasource/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<manifest package="com.google.android.exoplayer2.upstream">
|
||||||
|
<uses-sdk/>
|
||||||
|
</manifest>
|
@ -13,14 +13,12 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.google.android.exoplayer2.upstream.crypto;
|
package com.google.android.exoplayer2.upstream;
|
||||||
|
|
||||||
import static com.google.android.exoplayer2.util.Util.castNonNull;
|
import static com.google.android.exoplayer2.util.Util.castNonNull;
|
||||||
import static java.lang.Math.min;
|
import static java.lang.Math.min;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.upstream.DataSink;
|
|
||||||
import com.google.android.exoplayer2.upstream.DataSpec;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
|
|
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.google.android.exoplayer2.upstream.crypto;
|
package com.google.android.exoplayer2.upstream;
|
||||||
|
|
||||||
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
||||||
import static com.google.android.exoplayer2.util.Util.castNonNull;
|
import static com.google.android.exoplayer2.util.Util.castNonNull;
|
||||||
@ -21,9 +21,6 @@ import static com.google.android.exoplayer2.util.Util.castNonNull;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.upstream.DataSource;
|
|
||||||
import com.google.android.exoplayer2.upstream.DataSpec;
|
|
||||||
import com.google.android.exoplayer2.upstream.TransferListener;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.google.android.exoplayer2.upstream.crypto;
|
package com.google.android.exoplayer2.upstream;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.util.Assertions;
|
import com.google.android.exoplayer2.util.Assertions;
|
19
library/datasource/src/test/AndroidManifest.xml
Normal file
19
library/datasource/src/test/AndroidManifest.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<manifest package="com.google.android.exoplayer2.upstream">
|
||||||
|
<uses-sdk/>
|
||||||
|
</manifest>
|
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.google.android.exoplayer2.upstream.crypto;
|
package com.google.android.exoplayer2.upstream;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static java.lang.Math.min;
|
import static java.lang.Math.min;
|
Loading…
x
Reference in New Issue
Block a user