react-native-theoplayer 1.6.1 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/android/build.gradle +76 -33
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/4.3.0/ads-wrapper-4.3.0.aar +0 -0
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/4.3.0/ads-wrapper-4.3.0.pom +9 -0
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +13 -0
- package/android/src/main/java/com/theoplayer/PlayerConfigHelper.java +40 -0
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.java +8 -3
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerView.java +131 -28
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerViewManager.java +14 -1
- package/android/src/main/java/com/theoplayer/SourceHelper.java +137 -86
- package/android/src/main/java/com/theoplayer/VideoEventEmitter.java +44 -12
- package/android/src/main/java/com/theoplayer/abr/ABRConfigurationAdapter.kt +72 -0
- package/android/src/main/java/com/theoplayer/ads/AdEventAdapter.java +92 -0
- package/android/src/main/java/com/theoplayer/ads/AdInfo.java +168 -0
- package/android/src/main/java/com/theoplayer/ads/AdsModule.java +152 -0
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionAdapter.kt +143 -0
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +273 -0
- package/android/src/main/java/com/theoplayer/drm/KeySystemAdapter.kt +22 -0
- package/android/src/main/java/com/theoplayer/drm/ProxyContentProtectionIntegration.kt +33 -0
- package/android/src/main/java/com/theoplayer/drm/ProxyContentProtectionIntegrationFactory.kt +19 -0
- package/android/src/main/java/com/theoplayer/drm/RequestMethodAdapter.kt +28 -0
- package/android/src/main/java/com/theoplayer/track/QualityListAdapter.java +54 -0
- package/android/src/main/java/com/theoplayer/track/QualityListFilter.java +40 -0
- package/android/src/main/java/com/theoplayer/track/TrackListInfo.java +10 -2
- package/android/src/main/java/com/theoplayer/util/TypeUtils.kt +17 -0
- package/android/src/main/java/com/theoplayer/util/ViewResolver.java +42 -0
- package/ios/THEOplayerRCTAdAggregator.swift +158 -0
- package/ios/THEOplayerRCTAdsAPI.swift +296 -0
- package/ios/THEOplayerRCTBridge.m +65 -0
- package/ios/THEOplayerRCTContentProtectionAPI.swift +359 -0
- package/ios/THEOplayerRCTContentProtectionAggregator.swift +119 -0
- package/ios/THEOplayerRCTDebug.swift +11 -5
- package/ios/THEOplayerRCTMetadataAggregator.swift +1 -1
- package/ios/THEOplayerRCTNetworkUtils.swift +54 -0
- package/ios/THEOplayerRCTProxyContentProtectionIntegration.swift +155 -0
- package/ios/THEOplayerRCTProxyContentProtectionIntegrationFactory.swift +32 -0
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +223 -30
- package/ios/THEOplayerRCTTypeUtils.swift +18 -0
- package/ios/THEOplayerRCTView.swift +109 -49
- package/ios/THEOplayerRCTViewAdEventHandler.swift +238 -0
- package/ios/{THEOplayerRCTViewEventHandler.swift → THEOplayerRCTViewMainEventHandler.swift} +7 -119
- package/ios/THEOplayerRCTViewTextTrackEventHandler.swift +134 -0
- package/ios/Theoplayer-Bridging-Header.h +3 -1
- package/ios/custom/Frameworks/ios/put_custom_ios_xcframework_here.txt +2 -0
- package/ios/custom/react-native-theoplayer_custom_ios.podspec +36 -0
- package/ios/custom/theofeatures.sh +14 -0
- package/lib/commonjs/api/THEOplayerView.js.map +1 -1
- package/lib/commonjs/api/abr/ABRConfiguration.js +2 -0
- package/lib/commonjs/api/abr/ABRConfiguration.js.map +1 -0
- package/lib/commonjs/api/abr/barrel.js +19 -0
- package/lib/commonjs/api/abr/barrel.js.map +1 -0
- package/lib/commonjs/api/ads/Ad.js +6 -0
- package/lib/commonjs/api/ads/Ad.js.map +1 -0
- package/lib/commonjs/api/ads/AdBreak.js +6 -0
- package/lib/commonjs/api/ads/AdBreak.js.map +1 -0
- package/lib/commonjs/api/ads/AdsAPI.js +6 -0
- package/lib/commonjs/api/ads/AdsAPI.js.map +1 -0
- package/lib/commonjs/api/ads/AdsConfiguration.js +6 -0
- package/lib/commonjs/api/ads/AdsConfiguration.js.map +1 -0
- package/lib/commonjs/api/ads/CompanionAd.js +2 -0
- package/lib/commonjs/api/ads/CompanionAd.js.map +1 -0
- package/lib/commonjs/api/ads/GoogleDai.js +2 -0
- package/lib/commonjs/api/ads/GoogleDai.js.map +1 -0
- package/lib/commonjs/api/ads/GoogleImaAd.js +6 -0
- package/lib/commonjs/api/ads/GoogleImaAd.js.map +1 -0
- package/lib/commonjs/api/ads/GoogleImaConfiguration.js +2 -0
- package/lib/commonjs/api/ads/GoogleImaConfiguration.js.map +1 -0
- package/lib/commonjs/api/ads/barrel.js +110 -0
- package/lib/commonjs/api/ads/barrel.js.map +1 -0
- package/lib/commonjs/api/barrel.js +58 -6
- package/lib/commonjs/api/barrel.js.map +1 -1
- package/lib/commonjs/api/config/PlayerConfiguration.js +4 -0
- package/lib/commonjs/api/config/PlayerConfiguration.js.map +1 -1
- package/lib/commonjs/api/drm/ContentProtectionAPI.js +6 -0
- package/lib/commonjs/api/drm/ContentProtectionAPI.js.map +1 -0
- package/lib/commonjs/api/drm/ContentProtectionIntegration.js +6 -0
- package/lib/commonjs/api/drm/ContentProtectionIntegration.js.map +1 -0
- package/lib/commonjs/api/drm/ContentProtectionIntegrationFactory.js +6 -0
- package/lib/commonjs/api/drm/ContentProtectionIntegrationFactory.js.map +1 -0
- package/lib/commonjs/api/drm/ContentProtectionRequest.js +2 -0
- package/lib/commonjs/api/drm/ContentProtectionRequest.js.map +1 -0
- package/lib/commonjs/api/drm/ContentProtectionResponse.js +6 -0
- package/lib/commonjs/api/drm/ContentProtectionResponse.js.map +1 -0
- package/lib/commonjs/api/drm/barrel.js +71 -0
- package/lib/commonjs/api/drm/barrel.js.map +1 -0
- package/lib/commonjs/api/event/AdEvent.js +89 -0
- package/lib/commonjs/api/event/AdEvent.js.map +1 -0
- package/lib/commonjs/api/event/barrel.js +13 -0
- package/lib/commonjs/api/event/barrel.js.map +1 -1
- package/lib/commonjs/api/source/SourceDescription.js.map +1 -1
- package/lib/commonjs/api/source/ads/FreeWheelAdDescription.js +6 -0
- package/lib/commonjs/api/source/ads/FreeWheelAdDescription.js.map +1 -0
- package/lib/commonjs/api/source/ads/IMAAdDescription.js +6 -0
- package/lib/commonjs/api/source/ads/IMAAdDescription.js.map +1 -0
- package/lib/commonjs/api/source/ads/SpotXAdDescription.js +6 -0
- package/lib/commonjs/api/source/ads/SpotXAdDescription.js.map +1 -0
- package/lib/commonjs/api/source/ads/THEOplayerAdDescription.js +6 -0
- package/lib/commonjs/api/source/ads/THEOplayerAdDescription.js.map +1 -0
- package/lib/commonjs/api/source/ads/barrel.js +84 -0
- package/lib/commonjs/api/source/ads/barrel.js.map +1 -0
- package/lib/commonjs/api/source/ads/ssai/GoogleDAIConfiguration.js +6 -0
- package/lib/commonjs/api/source/ads/ssai/GoogleDAIConfiguration.js.map +1 -0
- package/lib/commonjs/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js +6 -0
- package/lib/commonjs/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js.map +1 -0
- package/lib/commonjs/api/source/ads/ssai/ServerSideAdInsertionConfiguration.js +6 -0
- package/lib/commonjs/api/source/ads/ssai/ServerSideAdInsertionConfiguration.js.map +1 -0
- package/lib/commonjs/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js +6 -0
- package/lib/commonjs/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js.map +1 -0
- package/lib/commonjs/api/source/ads/ssai/barrel.js +58 -0
- package/lib/commonjs/api/source/ads/ssai/barrel.js.map +1 -0
- package/lib/commonjs/api/source/barrel.js +16 -3
- package/lib/commonjs/api/source/barrel.js.map +1 -1
- package/lib/commonjs/api/source/drm/DRMConfiguration.js.map +1 -1
- package/lib/commonjs/api/track/MediaTrack.js +29 -0
- package/lib/commonjs/api/track/MediaTrack.js.map +1 -1
- package/lib/commonjs/api/utils/TypeUtils.js +62 -0
- package/lib/commonjs/api/utils/TypeUtils.js.map +1 -0
- package/lib/commonjs/api/utils/barrel.js +19 -0
- package/lib/commonjs/api/utils/barrel.js.map +1 -0
- package/lib/commonjs/index.js +10 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.js +42 -3
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +41 -2
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/ads/THEOplayerNativeAdsAPI.js +54 -0
- package/lib/commonjs/internal/ads/THEOplayerNativeAdsAPI.js.map +1 -0
- package/lib/commonjs/internal/ads/THEOplayerNativeGoogleDAI.js +34 -0
- package/lib/commonjs/internal/ads/THEOplayerNativeGoogleDAI.js.map +1 -0
- package/lib/commonjs/internal/ads/THEOplayerWebAdsAPI.js +78 -0
- package/lib/commonjs/internal/ads/THEOplayerWebAdsAPI.js.map +1 -0
- package/lib/commonjs/internal/ads/THEOplayerWebGoogleDAI.js +32 -0
- package/lib/commonjs/internal/ads/THEOplayerWebGoogleDAI.js.map +1 -0
- package/lib/commonjs/internal/drm/ContentProtectionRegistry.js +214 -0
- package/lib/commonjs/internal/drm/ContentProtectionRegistry.js.map +1 -0
- package/lib/commonjs/internal/drm/ContentProtectionRegistry.web.js +20 -0
- package/lib/commonjs/internal/drm/ContentProtectionRegistry.web.js.map +1 -0
- package/lib/commonjs/internal/drm/NativeCertificateRequest.js +41 -0
- package/lib/commonjs/internal/drm/NativeCertificateRequest.js.map +1 -0
- package/lib/commonjs/internal/drm/NativeCertificateResponse.js +41 -0
- package/lib/commonjs/internal/drm/NativeCertificateResponse.js.map +1 -0
- package/lib/commonjs/internal/drm/NativeContentProtectionEvent.js +2 -0
- package/lib/commonjs/internal/drm/NativeContentProtectionEvent.js.map +1 -0
- package/lib/commonjs/internal/drm/NativeLicenseRequest.js +44 -0
- package/lib/commonjs/internal/drm/NativeLicenseRequest.js.map +1 -0
- package/lib/commonjs/internal/drm/NativeLicenseResponse.js +41 -0
- package/lib/commonjs/internal/drm/NativeLicenseResponse.js.map +1 -0
- package/lib/commonjs/internal/utils/TypeUtils.js +41 -0
- package/lib/commonjs/internal/utils/TypeUtils.js.map +1 -0
- package/lib/commonjs/internal/web/TrackUtils.js +19 -0
- package/lib/commonjs/internal/web/TrackUtils.js.map +1 -1
- package/lib/module/api/THEOplayerView.js.map +1 -1
- package/lib/module/api/abr/ABRConfiguration.js +2 -0
- package/lib/module/api/abr/ABRConfiguration.js.map +1 -0
- package/lib/module/api/abr/barrel.js +2 -0
- package/lib/module/api/abr/barrel.js.map +1 -0
- package/lib/module/api/ads/Ad.js +2 -0
- package/lib/module/api/ads/Ad.js.map +1 -0
- package/lib/module/api/ads/AdBreak.js +2 -0
- package/lib/module/api/ads/AdBreak.js.map +1 -0
- package/lib/module/api/ads/AdsAPI.js +2 -0
- package/lib/module/api/ads/AdsAPI.js.map +1 -0
- package/lib/module/api/ads/AdsConfiguration.js +2 -0
- package/lib/module/api/ads/AdsConfiguration.js.map +1 -0
- package/lib/module/api/ads/CompanionAd.js +2 -0
- package/lib/module/api/ads/CompanionAd.js.map +1 -0
- package/lib/module/api/ads/GoogleDai.js +2 -0
- package/lib/module/api/ads/GoogleDai.js.map +1 -0
- package/lib/module/api/ads/GoogleImaAd.js +2 -0
- package/lib/module/api/ads/GoogleImaAd.js.map +1 -0
- package/lib/module/api/ads/GoogleImaConfiguration.js +2 -0
- package/lib/module/api/ads/GoogleImaConfiguration.js.map +1 -0
- package/lib/module/api/ads/barrel.js +9 -0
- package/lib/module/api/ads/barrel.js.map +1 -0
- package/lib/module/api/barrel.js +5 -1
- package/lib/module/api/barrel.js.map +1 -1
- package/lib/module/api/config/PlayerConfiguration.js +1 -1
- package/lib/module/api/config/PlayerConfiguration.js.map +1 -1
- package/lib/module/api/drm/ContentProtectionAPI.js +2 -0
- package/lib/module/api/drm/ContentProtectionAPI.js.map +1 -0
- package/lib/module/api/drm/ContentProtectionIntegration.js +2 -0
- package/lib/module/api/drm/ContentProtectionIntegration.js.map +1 -0
- package/lib/module/api/drm/ContentProtectionIntegrationFactory.js +2 -0
- package/lib/module/api/drm/ContentProtectionIntegrationFactory.js.map +1 -0
- package/lib/module/api/drm/ContentProtectionRequest.js +2 -0
- package/lib/module/api/drm/ContentProtectionRequest.js.map +1 -0
- package/lib/module/api/drm/ContentProtectionResponse.js +2 -0
- package/lib/module/api/drm/ContentProtectionResponse.js.map +1 -0
- package/lib/module/api/drm/barrel.js +6 -0
- package/lib/module/api/drm/barrel.js.map +1 -0
- package/lib/module/api/event/AdEvent.js +82 -0
- package/lib/module/api/event/AdEvent.js.map +1 -0
- package/lib/module/api/event/barrel.js +1 -0
- package/lib/module/api/event/barrel.js.map +1 -1
- package/lib/module/api/source/SourceDescription.js.map +1 -1
- package/lib/module/api/source/ads/FreeWheelAdDescription.js +2 -0
- package/lib/module/api/source/ads/FreeWheelAdDescription.js.map +1 -0
- package/lib/module/api/source/ads/IMAAdDescription.js +2 -0
- package/lib/module/api/source/ads/IMAAdDescription.js.map +1 -0
- package/lib/module/api/source/ads/SpotXAdDescription.js +2 -0
- package/lib/module/api/source/ads/SpotXAdDescription.js.map +1 -0
- package/lib/module/api/source/ads/THEOplayerAdDescription.js +2 -0
- package/lib/module/api/source/ads/THEOplayerAdDescription.js.map +1 -0
- package/lib/module/api/source/ads/barrel.js +7 -0
- package/lib/module/api/source/ads/barrel.js.map +1 -0
- package/lib/module/api/source/ads/ssai/GoogleDAIConfiguration.js +2 -0
- package/lib/module/api/source/ads/ssai/GoogleDAIConfiguration.js.map +1 -0
- package/lib/module/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js +2 -0
- package/lib/module/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js.map +1 -0
- package/lib/module/api/source/ads/ssai/ServerSideAdInsertionConfiguration.js +2 -0
- package/lib/module/api/source/ads/ssai/ServerSideAdInsertionConfiguration.js.map +1 -0
- package/lib/module/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js +2 -0
- package/lib/module/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js.map +1 -0
- package/lib/module/api/source/ads/ssai/barrel.js +5 -0
- package/lib/module/api/source/ads/ssai/barrel.js.map +1 -0
- package/lib/module/api/source/barrel.js +1 -0
- package/lib/module/api/source/barrel.js.map +1 -1
- package/lib/module/api/source/drm/DRMConfiguration.js.map +1 -1
- package/lib/module/api/track/MediaTrack.js +23 -1
- package/lib/module/api/track/MediaTrack.js.map +1 -1
- package/lib/module/api/utils/TypeUtils.js +36 -0
- package/lib/module/api/utils/TypeUtils.js.map +1 -0
- package/lib/module/api/utils/barrel.js +2 -0
- package/lib/module/api/utils/barrel.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/internal/THEOplayerView.js +40 -3
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +42 -4
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/ads/THEOplayerNativeAdsAPI.js +43 -0
- package/lib/module/internal/ads/THEOplayerNativeAdsAPI.js.map +1 -0
- package/lib/module/internal/ads/THEOplayerNativeGoogleDAI.js +24 -0
- package/lib/module/internal/ads/THEOplayerNativeGoogleDAI.js.map +1 -0
- package/lib/module/internal/ads/THEOplayerWebAdsAPI.js +68 -0
- package/lib/module/internal/ads/THEOplayerWebAdsAPI.js.map +1 -0
- package/lib/module/internal/ads/THEOplayerWebGoogleDAI.js +23 -0
- package/lib/module/internal/ads/THEOplayerWebGoogleDAI.js.map +1 -0
- package/lib/module/internal/drm/ContentProtectionRegistry.js +188 -0
- package/lib/module/internal/drm/ContentProtectionRegistry.js.map +1 -0
- package/lib/module/internal/drm/ContentProtectionRegistry.web.js +9 -0
- package/lib/module/internal/drm/ContentProtectionRegistry.web.js.map +1 -0
- package/lib/module/internal/drm/NativeCertificateRequest.js +31 -0
- package/lib/module/internal/drm/NativeCertificateRequest.js.map +1 -0
- package/lib/module/internal/drm/NativeCertificateResponse.js +30 -0
- package/lib/module/internal/drm/NativeCertificateResponse.js.map +1 -0
- package/lib/module/internal/drm/NativeContentProtectionEvent.js +2 -0
- package/lib/module/internal/drm/NativeContentProtectionEvent.js.map +1 -0
- package/lib/module/internal/drm/NativeLicenseRequest.js +34 -0
- package/lib/module/internal/drm/NativeLicenseRequest.js.map +1 -0
- package/lib/module/internal/drm/NativeLicenseResponse.js +30 -0
- package/lib/module/internal/drm/NativeLicenseResponse.js.map +1 -0
- package/lib/module/internal/utils/TypeUtils.js +24 -0
- package/lib/module/internal/utils/TypeUtils.js.map +1 -0
- package/lib/module/internal/web/TrackUtils.js +15 -0
- package/lib/module/internal/web/TrackUtils.js.map +1 -1
- package/lib/typescript/lib/commonjs/api/abr/ABRConfiguration.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/abr/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/ads/Ad.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/ads/AdBreak.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/ads/AdsAPI.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/ads/AdsConfiguration.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/ads/CompanionAd.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/ads/GoogleDai.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/ads/GoogleImaAd.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/ads/GoogleImaConfiguration.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/ads/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/config/PlayerConfiguration.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/drm/ContentProtectionAPI.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/drm/ContentProtectionIntegration.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/drm/ContentProtectionIntegrationFactory.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/drm/ContentProtectionRequest.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/drm/ContentProtectionResponse.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/drm/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/event/AdEvent.d.ts +2 -0
- package/lib/typescript/lib/commonjs/api/source/ads/FreeWheelAdDescription.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/IMAAdDescription.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/SpotXAdDescription.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/THEOplayerAdDescription.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/ssai/GoogleDAIConfiguration.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/ssai/ServerSideAdInsertionConfiguration.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/source/ads/ssai/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/track/MediaTrack.d.ts +8 -0
- package/lib/typescript/lib/commonjs/api/utils/TypeUtils.d.ts +13 -0
- package/lib/typescript/lib/commonjs/api/utils/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/index.d.ts +2 -0
- package/lib/typescript/lib/commonjs/internal/THEOplayerView.d.ts +5 -0
- package/lib/typescript/lib/commonjs/internal/THEOplayerView.web.d.ts +4 -0
- package/lib/typescript/lib/commonjs/internal/ads/THEOplayerNativeAdsAPI.d.ts +14 -0
- package/lib/typescript/lib/commonjs/internal/ads/THEOplayerNativeGoogleDAI.d.ts +9 -0
- package/lib/typescript/lib/commonjs/internal/ads/THEOplayerWebAdsAPI.d.ts +14 -0
- package/lib/typescript/lib/commonjs/internal/ads/THEOplayerWebGoogleDAI.d.ts +9 -0
- package/lib/typescript/lib/commonjs/internal/drm/ContentProtectionRegistry.d.ts +14 -0
- package/lib/typescript/lib/commonjs/internal/drm/ContentProtectionRegistry.web.d.ts +5 -0
- package/lib/typescript/lib/commonjs/internal/drm/NativeCertificateRequest.d.ts +18 -0
- package/lib/typescript/lib/commonjs/internal/drm/NativeCertificateResponse.d.ts +21 -0
- package/lib/typescript/lib/commonjs/internal/drm/NativeContentProtectionEvent.d.ts +0 -0
- package/lib/typescript/lib/commonjs/internal/drm/NativeLicenseRequest.d.ts +20 -0
- package/lib/typescript/lib/commonjs/internal/drm/NativeLicenseResponse.d.ts +22 -0
- package/lib/typescript/lib/commonjs/internal/utils/TypeUtils.d.ts +6 -0
- package/lib/typescript/lib/commonjs/internal/web/TrackUtils.d.ts +2 -0
- package/lib/typescript/lib/module/api/abr/ABRConfiguration.d.ts +0 -0
- package/lib/typescript/lib/module/api/abr/barrel.d.ts +1 -0
- package/lib/typescript/lib/module/api/ads/Ad.d.ts +1 -0
- package/lib/typescript/lib/module/api/ads/AdBreak.d.ts +1 -0
- package/lib/typescript/lib/module/api/ads/AdsAPI.d.ts +1 -0
- package/lib/typescript/lib/module/api/ads/AdsConfiguration.d.ts +1 -0
- package/lib/typescript/lib/module/api/ads/CompanionAd.d.ts +0 -0
- package/lib/typescript/lib/module/api/ads/GoogleDai.d.ts +0 -0
- package/lib/typescript/lib/module/api/ads/GoogleImaAd.d.ts +1 -0
- package/lib/typescript/lib/module/api/ads/GoogleImaConfiguration.d.ts +0 -0
- package/lib/typescript/lib/module/api/ads/barrel.d.ts +5 -0
- package/lib/typescript/lib/module/api/barrel.d.ts +5 -1
- package/lib/typescript/lib/module/api/config/PlayerConfiguration.d.ts +1 -0
- package/lib/typescript/lib/module/api/config/barrel.d.ts +1 -1
- package/lib/typescript/lib/module/api/drm/ContentProtectionAPI.d.ts +1 -0
- package/lib/typescript/lib/module/api/drm/ContentProtectionIntegration.d.ts +1 -0
- package/lib/typescript/lib/module/api/drm/ContentProtectionIntegrationFactory.d.ts +1 -0
- package/lib/typescript/lib/module/api/drm/ContentProtectionRequest.d.ts +0 -0
- package/lib/typescript/lib/module/api/drm/ContentProtectionResponse.d.ts +1 -0
- package/lib/typescript/lib/module/api/drm/barrel.d.ts +4 -0
- package/lib/typescript/lib/module/api/event/AdEvent.d.ts +1 -0
- package/lib/typescript/lib/module/api/event/barrel.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/FreeWheelAdDescription.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/IMAAdDescription.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/SpotXAdDescription.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/THEOplayerAdDescription.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/barrel.d.ts +5 -0
- package/lib/typescript/lib/module/api/source/ads/ssai/GoogleDAIConfiguration.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/ssai/ServerSideAdInsertionConfiguration.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/ads/ssai/barrel.d.ts +4 -0
- package/lib/typescript/lib/module/api/source/barrel.d.ts +1 -0
- package/lib/typescript/lib/module/api/track/MediaTrack.d.ts +8 -1
- package/lib/typescript/lib/module/api/utils/TypeUtils.d.ts +12 -0
- package/lib/typescript/lib/module/api/utils/barrel.d.ts +1 -0
- package/lib/typescript/lib/module/index.d.ts +1 -0
- package/lib/typescript/lib/module/internal/THEOplayerView.d.ts +8 -0
- package/lib/typescript/lib/module/internal/THEOplayerView.web.d.ts +4 -0
- package/lib/typescript/lib/module/internal/ads/THEOplayerNativeAdsAPI.d.ts +13 -0
- package/lib/typescript/lib/module/internal/ads/THEOplayerNativeGoogleDAI.d.ts +8 -0
- package/lib/typescript/lib/module/internal/ads/THEOplayerWebAdsAPI.d.ts +13 -0
- package/lib/typescript/lib/module/internal/ads/THEOplayerWebGoogleDAI.d.ts +8 -0
- package/lib/typescript/lib/module/internal/drm/ContentProtectionRegistry.d.ts +13 -0
- package/lib/typescript/lib/module/internal/drm/ContentProtectionRegistry.web.d.ts +4 -0
- package/lib/typescript/lib/module/internal/drm/NativeCertificateRequest.d.ts +17 -0
- package/lib/typescript/lib/module/internal/drm/NativeCertificateResponse.d.ts +20 -0
- package/lib/typescript/lib/module/internal/drm/NativeContentProtectionEvent.d.ts +0 -0
- package/lib/typescript/lib/module/internal/drm/NativeLicenseRequest.d.ts +19 -0
- package/lib/typescript/lib/module/internal/drm/NativeLicenseResponse.d.ts +21 -0
- package/lib/typescript/lib/module/internal/utils/TypeUtils.d.ts +5 -0
- package/lib/typescript/lib/module/internal/web/TrackUtils.d.ts +2 -0
- package/lib/typescript/src/api/THEOplayerView.d.ts +25 -4
- package/lib/typescript/src/api/abr/ABRConfiguration.d.ts +95 -0
- package/lib/typescript/src/api/abr/barrel.d.ts +1 -0
- package/lib/typescript/src/api/ads/Ad.d.ts +238 -0
- package/lib/typescript/src/api/ads/AdBreak.d.ts +39 -0
- package/lib/typescript/src/api/ads/AdsAPI.d.ts +46 -0
- package/lib/typescript/src/api/ads/AdsConfiguration.d.ts +69 -0
- package/lib/typescript/src/api/ads/CompanionAd.d.ts +59 -0
- package/lib/typescript/src/api/ads/GoogleDai.d.ts +29 -0
- package/lib/typescript/src/api/ads/GoogleImaAd.d.ts +78 -0
- package/lib/typescript/src/api/ads/GoogleImaConfiguration.d.ts +13 -0
- package/lib/typescript/src/api/ads/barrel.d.ts +8 -0
- package/lib/typescript/src/api/barrel.d.ts +5 -1
- package/lib/typescript/src/api/config/PlayerConfiguration.d.ts +5 -0
- package/lib/typescript/src/api/drm/ContentProtectionAPI.d.ts +5 -0
- package/lib/typescript/src/api/drm/ContentProtectionIntegration.d.ts +86 -0
- package/lib/typescript/src/api/drm/ContentProtectionIntegrationFactory.d.ts +15 -0
- package/lib/typescript/src/api/drm/ContentProtectionRequest.d.ts +56 -0
- package/lib/typescript/src/api/drm/ContentProtectionResponse.d.ts +56 -0
- package/lib/typescript/src/api/drm/barrel.d.ts +5 -0
- package/lib/typescript/src/api/event/AdEvent.d.ts +13 -0
- package/lib/typescript/src/api/event/barrel.d.ts +1 -0
- package/lib/typescript/src/api/source/SourceDescription.d.ts +8 -0
- package/lib/typescript/src/api/source/ads/FreeWheelAdDescription.d.ts +85 -0
- package/lib/typescript/src/api/source/ads/IMAAdDescription.d.ts +25 -0
- package/lib/typescript/src/api/source/ads/SpotXAdDescription.d.ts +115 -0
- package/lib/typescript/src/api/source/ads/THEOplayerAdDescription.d.ts +32 -0
- package/lib/typescript/src/api/source/ads/barrel.d.ts +6 -0
- package/lib/typescript/src/api/source/ads/ssai/GoogleDAIConfiguration.d.ts +130 -0
- package/lib/typescript/src/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.d.ts +27 -0
- package/lib/typescript/src/api/source/ads/ssai/ServerSideAdInsertionConfiguration.d.ts +26 -0
- package/lib/typescript/src/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.d.ts +46 -0
- package/lib/typescript/src/api/source/ads/ssai/barrel.d.ts +4 -0
- package/lib/typescript/src/api/source/barrel.d.ts +1 -0
- package/lib/typescript/src/api/source/drm/DRMConfiguration.d.ts +0 -30
- package/lib/typescript/src/api/track/MediaTrack.d.ts +5 -2
- package/lib/typescript/src/api/utils/TypeUtils.d.ts +20 -0
- package/lib/typescript/src/api/utils/barrel.d.ts +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/internal/THEOplayerView.d.ts +10 -4
- package/lib/typescript/src/internal/THEOplayerView.web.d.ts +7 -2
- package/lib/typescript/src/internal/ads/THEOplayerNativeAdsAPI.d.ts +17 -0
- package/lib/typescript/src/internal/ads/THEOplayerNativeGoogleDAI.d.ts +10 -0
- package/lib/typescript/src/internal/ads/THEOplayerWebAdsAPI.d.ts +15 -0
- package/lib/typescript/src/internal/ads/THEOplayerWebGoogleDAI.d.ts +10 -0
- package/lib/typescript/src/internal/drm/ContentProtectionRegistry.d.ts +19 -0
- package/lib/typescript/src/internal/drm/ContentProtectionRegistry.web.d.ts +5 -0
- package/lib/typescript/src/internal/drm/NativeCertificateRequest.d.ts +13 -0
- package/lib/typescript/src/internal/drm/NativeCertificateResponse.d.ts +18 -0
- package/lib/typescript/src/internal/drm/NativeContentProtectionEvent.d.ts +5 -0
- package/lib/typescript/src/internal/drm/NativeLicenseRequest.d.ts +14 -0
- package/lib/typescript/src/internal/drm/NativeLicenseResponse.d.ts +18 -0
- package/lib/typescript/src/internal/utils/TypeUtils.d.ts +5 -0
- package/lib/typescript/src/internal/web/TrackUtils.d.ts +3 -1
- package/package.json +4 -3
- package/src/api/THEOplayerView.ts +29 -4
- package/src/api/abr/ABRConfiguration.ts +103 -0
- package/src/api/abr/barrel.ts +1 -0
- package/src/api/ads/Ad.ts +267 -0
- package/src/api/ads/AdBreak.ts +44 -0
- package/src/api/ads/AdsAPI.ts +53 -0
- package/src/api/ads/AdsConfiguration.ts +76 -0
- package/src/api/ads/CompanionAd.ts +65 -0
- package/src/api/ads/GoogleDai.ts +32 -0
- package/src/api/ads/GoogleImaAd.ts +86 -0
- package/src/api/ads/GoogleImaConfiguration.ts +13 -0
- package/src/api/ads/barrel.ts +8 -0
- package/src/api/barrel.ts +5 -1
- package/src/api/config/PlayerConfiguration.ts +7 -0
- package/src/api/drm/ContentProtectionAPI.ts +6 -0
- package/src/api/drm/ContentProtectionIntegration.ts +93 -0
- package/src/api/drm/ContentProtectionIntegrationFactory.ts +16 -0
- package/src/api/drm/ContentProtectionRequest.ts +60 -0
- package/src/api/drm/ContentProtectionResponse.ts +62 -0
- package/src/api/drm/barrel.ts +5 -0
- package/src/api/event/AdEvent.ts +117 -0
- package/src/api/event/barrel.ts +1 -0
- package/src/api/source/SourceDescription.ts +9 -0
- package/src/api/source/ads/FreeWheelAdDescription.ts +97 -0
- package/src/api/source/ads/IMAAdDescription.ts +26 -0
- package/src/api/source/ads/SpotXAdDescription.ts +126 -0
- package/src/api/source/ads/THEOplayerAdDescription.ts +34 -0
- package/src/api/source/ads/barrel.ts +6 -0
- package/src/api/source/ads/ssai/GoogleDAIConfiguration.ts +145 -0
- package/src/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.ts +30 -0
- package/src/api/source/ads/ssai/ServerSideAdInsertionConfiguration.ts +28 -0
- package/src/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.ts +51 -0
- package/src/api/source/ads/ssai/barrel.ts +4 -0
- package/src/api/source/barrel.ts +1 -0
- package/src/api/source/drm/DRMConfiguration.ts +0 -35
- package/src/api/track/MediaTrack.ts +22 -2
- package/src/api/utils/TypeUtils.ts +39 -0
- package/src/api/utils/barrel.ts +1 -0
- package/src/index.tsx +1 -0
- package/src/internal/THEOplayerView.tsx +49 -8
- package/src/internal/THEOplayerView.web.tsx +37 -7
- package/src/internal/ads/THEOplayerNativeAdsAPI.ts +44 -0
- package/src/internal/ads/THEOplayerNativeGoogleDAI.ts +23 -0
- package/src/internal/ads/THEOplayerWebAdsAPI.ts +51 -0
- package/src/internal/ads/THEOplayerWebGoogleDAI.ts +22 -0
- package/src/internal/drm/ContentProtectionRegistry.ts +173 -0
- package/src/internal/drm/ContentProtectionRegistry.web.ts +10 -0
- package/src/internal/drm/NativeCertificateRequest.ts +41 -0
- package/src/internal/drm/NativeCertificateResponse.ts +45 -0
- package/src/internal/drm/NativeContentProtectionEvent.ts +5 -0
- package/src/internal/drm/NativeLicenseRequest.ts +39 -0
- package/src/internal/drm/NativeLicenseResponse.ts +45 -0
- package/src/internal/utils/TypeUtils.ts +39 -0
- package/src/internal/web/TrackUtils.ts +22 -1
package/README.md
CHANGED
|
@@ -63,4 +63,8 @@ and discussed in the next section. Finally, an overview of features, limitations
|
|
|
63
63
|
- [The THEOplayerView component](./doc/theoplayerview-component.md)
|
|
64
64
|
- [The example application with React Native UI](./doc/example-app.md)
|
|
65
65
|
- [Features](./doc/features.md)
|
|
66
|
+
- Knowledge Base
|
|
67
|
+
- [Advertisements](./doc/ads.md)
|
|
68
|
+
- [Custom iOS framework](./doc/custom-ios-framework.md)
|
|
69
|
+
- [Digital Rights Management (DRM)](./doc/drm.md)
|
|
66
70
|
- [Limitations and known issues](./doc/limitations.md)
|
package/android/build.gradle
CHANGED
|
@@ -1,59 +1,62 @@
|
|
|
1
1
|
buildscript {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
2
|
+
repositories {
|
|
3
|
+
google()
|
|
4
|
+
mavenCentral()
|
|
5
|
+
}
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
dependencies {
|
|
8
|
+
classpath 'com.android.tools.build:gradle:4.2.2'
|
|
9
|
+
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10'
|
|
11
10
|
}
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
apply plugin: 'com.android.library'
|
|
14
|
+
apply plugin: 'kotlin-android'
|
|
15
15
|
|
|
16
16
|
def safeExtGet(prop, fallback) {
|
|
17
17
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
// Extensions
|
|
21
|
+
def enabledGoogleIMA = safeExtGet("THEOplayer_extensionGoogleIMA", 'false').toBoolean()
|
|
22
|
+
def enabledGoogleDAI = safeExtGet("THEOplayer_extensionGoogleDAI", 'false').toBoolean()
|
|
23
|
+
def enabledAds = enabledGoogleIMA || enabledGoogleDAI
|
|
24
|
+
def enabledCast = safeExtGet("THEOplayer_extensionCast", 'false').toBoolean()
|
|
21
25
|
|
|
22
26
|
android {
|
|
23
27
|
compileSdkVersion safeExtGet('THEOplayer_compileSdkVersion', 31)
|
|
28
|
+
|
|
24
29
|
defaultConfig {
|
|
25
30
|
minSdkVersion safeExtGet('THEOplayer_minSdkVersion', 21)
|
|
26
31
|
targetSdkVersion safeExtGet('THEOplayer_targetSdkVersion', 31)
|
|
27
32
|
versionCode 1
|
|
28
33
|
versionName "1.0"
|
|
34
|
+
|
|
35
|
+
// Optionally limit timeUpdate rate. Possible values:
|
|
36
|
+
// - "com.theoplayer.TimeUpdateRate.UNLIMITED"
|
|
37
|
+
// - "com.theoplayer.TimeUpdateRate.LIMITED_ONE_HZ"
|
|
38
|
+
// - "com.theoplayer.TimeUpdateRate.LIMITED_TWO_HZ"
|
|
39
|
+
// - "com.theoplayer.TimeUpdateRate.LIMITED_THREE_HZ"
|
|
40
|
+
def TimeUpdateRate = "com.theoplayer.TimeUpdateRate"
|
|
41
|
+
buildConfigField TimeUpdateRate, "TIMEUPDATE_RATE", safeExtGet('THEOplayer_timeUpdateRate', "${TimeUpdateRate}.UNLIMITED")
|
|
42
|
+
|
|
43
|
+
// Optionally log events to logcat
|
|
44
|
+
buildConfigField "boolean", "LOG_PLAYER_EVENTS", "${safeExtGet('THEOplayer_logPlayerEvents', 'false')}"
|
|
45
|
+
buildConfigField "boolean", "LOG_VIEW_EVENTS", "${safeExtGet('THEOplayer_logViewEvents', 'false')}"
|
|
46
|
+
|
|
47
|
+
// Extension buildConfig fields
|
|
48
|
+
buildConfigField "boolean", "EXTENSION_GOOGLE_IMA", "${enabledGoogleIMA}"
|
|
49
|
+
buildConfigField "boolean", "EXTENSION_GOOGLE_DAI", "${enabledGoogleDAI}"
|
|
50
|
+
buildConfigField "boolean", "EXTENSION_ADS", "${enabledAds}"
|
|
51
|
+
buildConfigField "boolean", "EXTENSION_CAST", "${enabledCast}"
|
|
29
52
|
}
|
|
30
53
|
|
|
31
54
|
buildTypes {
|
|
32
55
|
debug {
|
|
33
|
-
|
|
34
|
-
// - "com.theoplayer.TimeUpdateRate.UNLIMITED"
|
|
35
|
-
// - "com.theoplayer.TimeUpdateRate.LIMITED_ONE_HZ"
|
|
36
|
-
// - "com.theoplayer.TimeUpdateRate.LIMITED_TWO_HZ"
|
|
37
|
-
// - "com.theoplayer.TimeUpdateRate.LIMITED_THREE_HZ"
|
|
38
|
-
buildConfigField TimeUpdateRate, "TIMEUPDATE_RATE", safeExtGet('THEOplayer_timeUpdateRate', "${TimeUpdateRate}.UNLIMITED")
|
|
39
|
-
|
|
40
|
-
// Optionally log events to logcat
|
|
41
|
-
buildConfigField "boolean", "LOG_PLAYER_EVENTS", safeExtGet('THEOplayer_logPlayerEvents', "false")
|
|
42
|
-
buildConfigField "boolean", "LOG_VIEW_EVENTS", safeExtGet('THEOplayer_logViewEvents', "false")
|
|
56
|
+
minifyEnabled false
|
|
43
57
|
}
|
|
44
58
|
release {
|
|
45
59
|
minifyEnabled false
|
|
46
|
-
|
|
47
|
-
// Optionally limit timeUpdate rate, which could improve performance. Possible values:
|
|
48
|
-
// - "com.theoplayer.TimeUpdateRate.UNLIMITED"
|
|
49
|
-
// - "com.theoplayer.TimeUpdateRate.LIMITED_ONE_HZ"
|
|
50
|
-
// - "com.theoplayer.TimeUpdateRate.LIMITED_TWO_HZ"
|
|
51
|
-
// - "com.theoplayer.TimeUpdateRate.LIMITED_THREE_HZ"
|
|
52
|
-
buildConfigField TimeUpdateRate, "TIMEUPDATE_RATE", safeExtGet('THEOplayer_timeUpdateRate', "${TimeUpdateRate}.UNLIMITED")
|
|
53
|
-
|
|
54
|
-
// Optionally log events to logcat
|
|
55
|
-
buildConfigField "boolean", "LOG_PLAYER_EVENTS", safeExtGet('THEOplayer_logPlayerEvents', "false")
|
|
56
|
-
buildConfigField "boolean", "LOG_VIEW_EVENTS", safeExtGet('THEOplayer_logViewEvents', "false")
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
lintOptions {
|
|
@@ -69,6 +72,12 @@ android {
|
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
rootProject.allprojects {
|
|
76
|
+
repositories {
|
|
77
|
+
maven { url("$rootDir/../node_modules/react-native-theoplayer/android/local") }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
72
81
|
repositories {
|
|
73
82
|
mavenLocal()
|
|
74
83
|
maven {
|
|
@@ -77,13 +86,47 @@ repositories {
|
|
|
77
86
|
}
|
|
78
87
|
google()
|
|
79
88
|
mavenCentral()
|
|
89
|
+
maven { url("local") }
|
|
80
90
|
maven { url 'https://jitpack.io' }
|
|
81
91
|
}
|
|
82
92
|
|
|
83
93
|
dependencies {
|
|
84
94
|
//noinspection GradleDynamicVersion
|
|
85
95
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
|
86
|
-
implementation
|
|
87
|
-
implementation "com.theoplayer.theoplayer-sdk-android:
|
|
88
|
-
|
|
96
|
+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
|
|
97
|
+
implementation "com.theoplayer.theoplayer-sdk-android:ads-wrapper:4.3.0"
|
|
98
|
+
|
|
99
|
+
def THEOplayerVersion = safeExtGet('THEOplayer_sdk', '+')
|
|
100
|
+
|
|
101
|
+
println("Using THEOplayer v${THEOplayerVersion}")
|
|
102
|
+
implementation "com.theoplayer.theoplayer-sdk-android:unified:${THEOplayerVersion}"
|
|
103
|
+
|
|
104
|
+
if (enabledGoogleIMA) {
|
|
105
|
+
println('ENABLE THEOplayer IMA extension.')
|
|
106
|
+
implementation "com.theoplayer.theoplayer-sdk-android:unified-ads:${THEOplayerVersion}"
|
|
107
|
+
implementation "com.theoplayer.theoplayer-sdk-android:unified-ads-ima:${THEOplayerVersion}"
|
|
108
|
+
} else {
|
|
109
|
+
println('DISABLE THEOplayer IMA extension.')
|
|
110
|
+
compileOnly "com.theoplayer.theoplayer-sdk-android:unified-ads:${THEOplayerVersion}"
|
|
111
|
+
compileOnly "com.theoplayer.theoplayer-sdk-android:unified-ads-ima:${THEOplayerVersion}"
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// NOTE: The DAI extension module is available on Maven as of SDK v4.3.0
|
|
115
|
+
if (enabledGoogleDAI) {
|
|
116
|
+
println('ENABLE THEOplayer DAI extension.')
|
|
117
|
+
implementation "com.theoplayer.theoplayer-sdk-android:unified-ads:${THEOplayerVersion}"
|
|
118
|
+
implementation "com.theoplayer.theoplayer-sdk-android:unified-ads-dai:${THEOplayerVersion}"
|
|
119
|
+
} else {
|
|
120
|
+
println('DISABLE THEOplayer DAI extension.')
|
|
121
|
+
compileOnly "com.theoplayer.theoplayer-sdk-android:unified-ads:${THEOplayerVersion}"
|
|
122
|
+
compileOnly "com.theoplayer.theoplayer-sdk-android:unified-ads-dai:${THEOplayerVersion}"
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (enabledCast) {
|
|
126
|
+
println('ENABLE THEOplayer cast extension.')
|
|
127
|
+
implementation "com.theoplayer.theoplayer-sdk-android:unified-cast:${THEOplayerVersion}"
|
|
128
|
+
} else {
|
|
129
|
+
println('DISABLE THEOplayer cast extension.')
|
|
130
|
+
compileOnly "com.theoplayer.theoplayer-sdk-android:unified-cast:${THEOplayerVersion}"
|
|
131
|
+
}
|
|
89
132
|
}
|
package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/4.3.0/ads-wrapper-4.3.0.aar
ADDED
|
Binary file
|
package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/4.3.0/ads-wrapper-4.3.0.pom
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
4
|
+
<modelVersion>4.0.0</modelVersion>
|
|
5
|
+
<groupId>com.theoplayer.theoplayer-sdk-android</groupId>
|
|
6
|
+
<artifactId>ads-wrapper</artifactId>
|
|
7
|
+
<version>4.3.0</version>
|
|
8
|
+
<packaging>aar</packaging>
|
|
9
|
+
</project>
|
package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<metadata>
|
|
3
|
+
<groupId>com.theoplayer.theoplayer-sdk-android</groupId>
|
|
4
|
+
<artifactId>ads-wrapper</artifactId>
|
|
5
|
+
<versioning>
|
|
6
|
+
<latest>4.3.0</latest>
|
|
7
|
+
<release>4.3.0</release>
|
|
8
|
+
<versions>
|
|
9
|
+
<version>4.3.0</version>
|
|
10
|
+
</versions>
|
|
11
|
+
<lastUpdated>20221118111544</lastUpdated>
|
|
12
|
+
</versioning>
|
|
13
|
+
</metadata>
|
|
@@ -1,18 +1,32 @@
|
|
|
1
1
|
package com.theoplayer;
|
|
2
2
|
|
|
3
|
+
import android.text.TextUtils;
|
|
4
|
+
|
|
3
5
|
import androidx.annotation.Nullable;
|
|
4
6
|
|
|
5
7
|
import com.facebook.react.bridge.ReadableMap;
|
|
6
8
|
import com.theoplayer.android.api.THEOplayerConfig;
|
|
9
|
+
import com.theoplayer.android.api.ads.AdPreloadType;
|
|
10
|
+
import com.theoplayer.android.api.ads.AdsConfiguration;
|
|
11
|
+
import com.theoplayer.android.api.ads.GoogleImaConfiguration;
|
|
7
12
|
|
|
8
13
|
public class PlayerConfigHelper {
|
|
14
|
+
static final private String PROP_ADS_CONFIGURATION = "ads";
|
|
9
15
|
static final private String PROP_LICENSE = "license";
|
|
10
16
|
static final private String PROP_LICENSE_URL = "licenseUrl";
|
|
11
17
|
static final private String PROP_CHROMELESS = "chromeless";
|
|
18
|
+
static final private String PROP_PRELOAD = "preload";
|
|
19
|
+
static final private String PROP_UI_ENABLED = "uiEnabled";
|
|
20
|
+
static final private String PROP_GOOGLE_IMA_CONFIGURATION = "googleImaConfiguration";
|
|
21
|
+
static final private String PROP_USE_NATIVE_IMA = "useNativeIma";
|
|
12
22
|
|
|
13
23
|
static public THEOplayerConfig fromProps(@Nullable ReadableMap configProps) {
|
|
14
24
|
THEOplayerConfig.Builder configBuilder = new THEOplayerConfig.Builder();
|
|
15
25
|
if (configProps != null) {
|
|
26
|
+
AdsConfiguration adsConfig = adsConfigurationFromProps(configProps.getMap(PROP_ADS_CONFIGURATION));
|
|
27
|
+
if (adsConfig != null) {
|
|
28
|
+
configBuilder.ads(adsConfig);
|
|
29
|
+
}
|
|
16
30
|
String license = configProps.getString(PROP_LICENSE);
|
|
17
31
|
if (license != null) {
|
|
18
32
|
configBuilder.license(license);
|
|
@@ -27,4 +41,30 @@ public class PlayerConfigHelper {
|
|
|
27
41
|
}
|
|
28
42
|
return configBuilder.build();
|
|
29
43
|
}
|
|
44
|
+
|
|
45
|
+
static private AdsConfiguration adsConfigurationFromProps(@Nullable ReadableMap configProps) {
|
|
46
|
+
if (configProps == null) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
AdsConfiguration.Builder builder = new AdsConfiguration.Builder();
|
|
50
|
+
String preloadTypeString = configProps.getString(PROP_PRELOAD);
|
|
51
|
+
if (!TextUtils.isEmpty(preloadTypeString)) {
|
|
52
|
+
builder.preload(AdPreloadType.from(preloadTypeString));
|
|
53
|
+
}
|
|
54
|
+
builder.showCountdown(!configProps.hasKey(PROP_UI_ENABLED) || configProps.getBoolean(PROP_UI_ENABLED));
|
|
55
|
+
GoogleImaConfiguration googleImaConfiguration = googleImaConfigurationFromProps(configProps.getMap(PROP_GOOGLE_IMA_CONFIGURATION));
|
|
56
|
+
if (googleImaConfiguration != null) {
|
|
57
|
+
builder.googleImaConfiguration(googleImaConfiguration);
|
|
58
|
+
}
|
|
59
|
+
return builder.build();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static private GoogleImaConfiguration googleImaConfigurationFromProps(@Nullable ReadableMap configProps) {
|
|
63
|
+
if (configProps == null) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return new GoogleImaConfiguration.Builder()
|
|
67
|
+
.useNativeIma(configProps.hasKey(PROP_USE_NATIVE_IMA) && configProps.getBoolean(PROP_USE_NATIVE_IMA))
|
|
68
|
+
.build();
|
|
69
|
+
}
|
|
30
70
|
}
|
|
@@ -6,17 +6,22 @@ import com.facebook.react.ReactPackage;
|
|
|
6
6
|
import com.facebook.react.bridge.NativeModule;
|
|
7
7
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
8
8
|
import com.facebook.react.uimanager.ViewManager;
|
|
9
|
-
import com.theoplayer.
|
|
9
|
+
import com.theoplayer.ads.AdsModule;
|
|
10
|
+
import com.theoplayer.drm.ContentProtectionModule;
|
|
10
11
|
|
|
12
|
+
import java.util.ArrayList;
|
|
11
13
|
import java.util.Arrays;
|
|
12
|
-
import java.util.Collections;
|
|
13
14
|
import java.util.List;
|
|
14
15
|
|
|
15
16
|
public class ReactTHEOplayerPackage implements ReactPackage {
|
|
17
|
+
|
|
16
18
|
@NonNull
|
|
17
19
|
@Override
|
|
18
20
|
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
|
|
19
|
-
|
|
21
|
+
List<NativeModule> modules = new ArrayList<>();
|
|
22
|
+
modules.add(new AdsModule(reactContext));
|
|
23
|
+
modules.add(new ContentProtectionModule(reactContext));
|
|
24
|
+
return modules;
|
|
20
25
|
}
|
|
21
26
|
|
|
22
27
|
@NonNull
|
|
@@ -14,19 +14,30 @@ import androidx.annotation.Nullable;
|
|
|
14
14
|
|
|
15
15
|
import com.facebook.react.bridge.Arguments;
|
|
16
16
|
import com.facebook.react.bridge.LifecycleEventListener;
|
|
17
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
17
18
|
import com.facebook.react.bridge.ReadableMap;
|
|
18
19
|
import com.facebook.react.bridge.WritableArray;
|
|
19
20
|
import com.facebook.react.bridge.WritableMap;
|
|
20
21
|
import com.facebook.react.uimanager.ThemedReactContext;
|
|
22
|
+
import com.google.ads.interactivemedia.v3.api.AdsRenderingSettings;
|
|
23
|
+
import com.google.ads.interactivemedia.v3.api.ImaSdkFactory;
|
|
24
|
+
import com.theoplayer.android.api.ads.dai.GoogleDaiIntegration;
|
|
25
|
+
import com.theoplayer.android.api.ads.dai.GoogleDaiIntegrationFactory;
|
|
26
|
+
import com.theoplayer.abr.ABRConfigurationAdapter;
|
|
21
27
|
import com.theoplayer.android.api.THEOplayerConfig;
|
|
22
28
|
import com.theoplayer.android.api.THEOplayerView;
|
|
23
29
|
import com.theoplayer.android.api.ads.ima.GoogleImaIntegration;
|
|
24
30
|
import com.theoplayer.android.api.ads.ima.GoogleImaIntegrationFactory;
|
|
31
|
+
import com.theoplayer.android.api.ads.wrapper.AdsApiWrapper;
|
|
32
|
+
import com.theoplayer.android.api.cast.CastIntegration;
|
|
33
|
+
import com.theoplayer.android.api.cast.CastIntegrationFactory;
|
|
34
|
+
import com.theoplayer.android.api.error.THEOplayerException;
|
|
25
35
|
import com.theoplayer.android.api.player.Player;
|
|
26
36
|
import com.theoplayer.android.api.player.RequestCallback;
|
|
27
37
|
import com.theoplayer.android.api.player.track.mediatrack.MediaTrack;
|
|
28
38
|
import com.theoplayer.android.api.player.track.mediatrack.MediaTrackList;
|
|
29
39
|
import com.theoplayer.android.api.player.track.mediatrack.quality.AudioQuality;
|
|
40
|
+
import com.theoplayer.android.api.player.track.mediatrack.quality.QualityList;
|
|
30
41
|
import com.theoplayer.android.api.player.track.mediatrack.quality.VideoQuality;
|
|
31
42
|
import com.theoplayer.android.api.player.track.texttrack.TextTrack;
|
|
32
43
|
import com.theoplayer.android.api.player.track.texttrack.TextTrackList;
|
|
@@ -34,7 +45,11 @@ import com.theoplayer.android.api.player.track.texttrack.TextTrackMode;
|
|
|
34
45
|
import com.theoplayer.android.api.player.track.texttrack.cue.TextTrackCue;
|
|
35
46
|
import com.theoplayer.android.api.source.SourceDescription;
|
|
36
47
|
import com.theoplayer.android.api.timerange.TimeRanges;
|
|
48
|
+
import com.theoplayer.track.QualityListFilter;
|
|
37
49
|
import com.theoplayer.track.TrackListInfo;
|
|
50
|
+
import com.theoplayer.util.TypeUtils;
|
|
51
|
+
|
|
52
|
+
import java.util.Collections;
|
|
38
53
|
|
|
39
54
|
@SuppressLint("ViewConstructor")
|
|
40
55
|
public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventListener {
|
|
@@ -49,8 +64,14 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
49
64
|
|
|
50
65
|
private THEOplayerView playerView;
|
|
51
66
|
|
|
52
|
-
private
|
|
67
|
+
private GoogleDaiIntegration daiIntegration;
|
|
68
|
+
|
|
69
|
+
private GoogleImaIntegration imaIntegration;
|
|
70
|
+
|
|
71
|
+
private final AdsApiWrapper adsApi;
|
|
53
72
|
|
|
73
|
+
private Player player;
|
|
74
|
+
private ReadableMap abrConfig;
|
|
54
75
|
private boolean paused;
|
|
55
76
|
private boolean muted = false;
|
|
56
77
|
private boolean fullscreen = false;
|
|
@@ -65,12 +86,18 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
65
86
|
this.reactContext = context;
|
|
66
87
|
this.eventEmitter = new VideoEventEmitter(context, this);
|
|
67
88
|
reactContext.addLifecycleEventListener(this);
|
|
89
|
+
adsApi = new AdsApiWrapper();
|
|
68
90
|
}
|
|
69
91
|
|
|
70
92
|
public void initialize(@Nullable ReadableMap configProps) {
|
|
71
93
|
createViews(PlayerConfigHelper.fromProps(configProps));
|
|
72
94
|
}
|
|
73
95
|
|
|
96
|
+
@Nullable
|
|
97
|
+
public GoogleDaiIntegration getDaiIntegration() {
|
|
98
|
+
return daiIntegration;
|
|
99
|
+
}
|
|
100
|
+
|
|
74
101
|
@NonNull
|
|
75
102
|
public WritableArray getTextTrackInfo() {
|
|
76
103
|
if (player != null) {
|
|
@@ -112,7 +139,7 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
112
139
|
}
|
|
113
140
|
|
|
114
141
|
public double getDuration() {
|
|
115
|
-
return player != null? 1e03 * player.getDuration() : Double.NaN;
|
|
142
|
+
return TypeUtils.INSTANCE.encodeInfNan(player != null? 1e03 * player.getDuration() : Double.NaN);
|
|
116
143
|
}
|
|
117
144
|
|
|
118
145
|
public void getSeekableRange(RequestCallback<TimeRanges> callback) {
|
|
@@ -165,13 +192,43 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
165
192
|
playerView.setLayoutParams(layoutParams);
|
|
166
193
|
|
|
167
194
|
addView(playerView, 0, layoutParams);
|
|
168
|
-
addIntegrations(playerView);
|
|
195
|
+
addIntegrations(playerView, playerConfig);
|
|
169
196
|
}
|
|
170
197
|
|
|
171
|
-
private void addIntegrations(@NonNull final THEOplayerView playerView) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
198
|
+
private void addIntegrations(@NonNull final THEOplayerView playerView, @NonNull THEOplayerConfig playerConfig) {
|
|
199
|
+
try {
|
|
200
|
+
if (BuildConfig.EXTENSION_GOOGLE_IMA) {
|
|
201
|
+
imaIntegration = GoogleImaIntegrationFactory.createGoogleImaIntegration(playerView);
|
|
202
|
+
imaIntegration.setAdsRenderingSettings(createRenderSettings(playerConfig));
|
|
203
|
+
playerView.getPlayer().addIntegration(imaIntegration);
|
|
204
|
+
}
|
|
205
|
+
} catch (Exception ignore) {
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
if (BuildConfig.EXTENSION_GOOGLE_DAI) {
|
|
209
|
+
daiIntegration = GoogleDaiIntegrationFactory.createGoogleDaiIntegration(playerView);
|
|
210
|
+
daiIntegration.setAdsRenderingSettings(createRenderSettings(playerConfig));
|
|
211
|
+
playerView.getPlayer().addIntegration(daiIntegration);
|
|
212
|
+
}
|
|
213
|
+
} catch (Exception ignore) {
|
|
214
|
+
}
|
|
215
|
+
try {
|
|
216
|
+
if (BuildConfig.EXTENSION_CAST) {
|
|
217
|
+
CastIntegration castIntegration = CastIntegrationFactory.createCastIntegration(playerView);
|
|
218
|
+
playerView.getPlayer().addIntegration(castIntegration);
|
|
219
|
+
}
|
|
220
|
+
// Add other future integrations here.
|
|
221
|
+
} catch (Exception ignore) {
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
private AdsRenderingSettings createRenderSettings(@NonNull THEOplayerConfig playerConfig) {
|
|
226
|
+
AdsRenderingSettings renderingSettings = ImaSdkFactory.getInstance().createAdsRenderingSettings();
|
|
227
|
+
if (playerConfig.getAds() != null && !playerConfig.getAds().isShowCountdown()) {
|
|
228
|
+
renderingSettings.setUiElements(Collections.emptySet());
|
|
229
|
+
renderingSettings.setDisableUi(true);
|
|
230
|
+
}
|
|
231
|
+
return renderingSettings;
|
|
175
232
|
}
|
|
176
233
|
|
|
177
234
|
@Override
|
|
@@ -189,10 +246,6 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
189
246
|
Log.d(TAG, "onDetachedFromWindow");
|
|
190
247
|
}
|
|
191
248
|
super.onDetachedFromWindow();
|
|
192
|
-
/* We want to be able to continue playing audio when switching tabs.
|
|
193
|
-
* Leave this here in case it causes issues.
|
|
194
|
-
*/
|
|
195
|
-
// stopPlayback();
|
|
196
249
|
}
|
|
197
250
|
|
|
198
251
|
private void initializePlayer() {
|
|
@@ -200,23 +253,38 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
200
253
|
new Handler().postDelayed(() -> {
|
|
201
254
|
if (player == null) {
|
|
202
255
|
player = playerView.getPlayer();
|
|
256
|
+
ABRConfigurationAdapter.INSTANCE.applyABRConfigurationFromProps(player, abrConfig);
|
|
257
|
+
if (BuildConfig.EXTENSION_ADS) {
|
|
258
|
+
adsApi.initialize(player, imaIntegration, daiIntegration);
|
|
259
|
+
}
|
|
203
260
|
eventEmitter.attachListeners(player);
|
|
204
|
-
player.setMuted(
|
|
205
|
-
player.setVolume(
|
|
206
|
-
player.setPlaybackRate(
|
|
207
|
-
|
|
261
|
+
player.setMuted(muted);
|
|
262
|
+
player.setVolume(volume);
|
|
263
|
+
player.setPlaybackRate(playbackRate);
|
|
264
|
+
|
|
265
|
+
setSource(sourceDescription);
|
|
208
266
|
|
|
209
267
|
if (!this.paused) {
|
|
210
268
|
player.play();
|
|
211
269
|
}
|
|
212
270
|
|
|
213
|
-
if (
|
|
214
|
-
seekTo(
|
|
271
|
+
if (seekTime != TIME_UNSET) {
|
|
272
|
+
seekTo(seekTime);
|
|
215
273
|
}
|
|
216
274
|
}
|
|
217
275
|
}, 1);
|
|
218
276
|
}
|
|
219
277
|
|
|
278
|
+
@Nullable
|
|
279
|
+
public Player getPlayer() {
|
|
280
|
+
return player;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
@NonNull
|
|
284
|
+
public AdsApiWrapper getAdsApi() {
|
|
285
|
+
return adsApi;
|
|
286
|
+
}
|
|
287
|
+
|
|
220
288
|
@Override
|
|
221
289
|
public void onHostResume() {
|
|
222
290
|
if (BuildConfig.LOG_VIEW_EVENTS) {
|
|
@@ -242,34 +310,54 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
242
310
|
if (BuildConfig.LOG_VIEW_EVENTS) {
|
|
243
311
|
Log.d(TAG, "onHostDestroy");
|
|
244
312
|
}
|
|
245
|
-
|
|
246
|
-
if (playerView != null) {
|
|
247
|
-
playerView.onDestroy();
|
|
248
|
-
}
|
|
313
|
+
cleanUpResources();
|
|
249
314
|
}
|
|
250
315
|
|
|
251
316
|
public void cleanUpResources() {
|
|
252
317
|
if (BuildConfig.LOG_VIEW_EVENTS) {
|
|
253
318
|
Log.d(TAG, "cleanUpResources");
|
|
254
319
|
}
|
|
255
|
-
stopPlayback();
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
private void stopPlayback() {
|
|
259
320
|
releasePlayer();
|
|
260
321
|
}
|
|
261
322
|
|
|
262
323
|
private void releasePlayer() {
|
|
263
324
|
if (player != null) {
|
|
264
325
|
eventEmitter.removeListeners(player);
|
|
326
|
+
|
|
327
|
+
if (adsApi != null) {
|
|
328
|
+
adsApi.destroy();
|
|
329
|
+
}
|
|
330
|
+
|
|
265
331
|
player.stop();
|
|
266
332
|
player = null;
|
|
267
333
|
}
|
|
334
|
+
|
|
335
|
+
if (playerView != null) {
|
|
336
|
+
playerView.onDestroy();
|
|
337
|
+
}
|
|
338
|
+
|
|
268
339
|
reactContext.removeLifecycleEventListener(this);
|
|
269
340
|
}
|
|
270
341
|
|
|
342
|
+
public void setSource(@Nullable final ReadableMap source) {
|
|
343
|
+
try {
|
|
344
|
+
setSource(new SourceHelper().parseSourceFromJS(source));
|
|
345
|
+
} catch (THEOplayerException exception) {
|
|
346
|
+
Log.e(TAG, exception.getMessage());
|
|
347
|
+
eventEmitter.emitError(exception);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
public void setABRConfig(@Nullable ReadableMap abrConfigProps) {
|
|
352
|
+
abrConfig = abrConfigProps;
|
|
353
|
+
ABRConfigurationAdapter.INSTANCE.applyABRConfigurationFromProps(player, abrConfig);
|
|
354
|
+
}
|
|
355
|
+
|
|
271
356
|
public void setSource(@Nullable final SourceDescription sourceDescription) {
|
|
272
357
|
this.sourceDescription = sourceDescription;
|
|
358
|
+
if (adsApi != null) {
|
|
359
|
+
adsApi.setSource(sourceDescription);
|
|
360
|
+
}
|
|
273
361
|
if (player != null && sourceDescription != null) {
|
|
274
362
|
player.setSource(sourceDescription);
|
|
275
363
|
}
|
|
@@ -281,7 +369,7 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
281
369
|
final boolean playerIsPaused = player.isPaused();
|
|
282
370
|
if (!paused && playerIsPaused) {
|
|
283
371
|
player.play();
|
|
284
|
-
} else if (paused && !playerIsPaused) {
|
|
372
|
+
} else if (paused && (!playerIsPaused || adsApi.isPlaying())) {
|
|
285
373
|
player.pause();
|
|
286
374
|
}
|
|
287
375
|
}
|
|
@@ -335,8 +423,8 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
335
423
|
for (final TextTrack track: player.getTextTracks()) {
|
|
336
424
|
if (track.getUid() == uid) {
|
|
337
425
|
track.setMode(TextTrackMode.SHOWING);
|
|
338
|
-
} else {
|
|
339
|
-
track.setMode(TextTrackMode.
|
|
426
|
+
} else if (track.getMode() == TextTrackMode.SHOWING) {
|
|
427
|
+
track.setMode(TextTrackMode.DISABLED);
|
|
340
428
|
}
|
|
341
429
|
}
|
|
342
430
|
}
|
|
@@ -386,6 +474,21 @@ public class ReactTHEOplayerView extends FrameLayout implements LifecycleEventLi
|
|
|
386
474
|
}
|
|
387
475
|
}
|
|
388
476
|
|
|
477
|
+
public void setTargetVideoQualities(ReadableArray uids) {
|
|
478
|
+
MediaTrack<VideoQuality> currentVideoTrack = getSelectedVideoTrack();
|
|
479
|
+
if (currentVideoTrack != null) {
|
|
480
|
+
if (uids.size() == 0) {
|
|
481
|
+
// Reset target qualities when passing empty list.
|
|
482
|
+
currentVideoTrack.setTargetQuality(null);
|
|
483
|
+
} else {
|
|
484
|
+
QualityList<VideoQuality> qualities = currentVideoTrack.getQualities();
|
|
485
|
+
if (qualities != null) {
|
|
486
|
+
currentVideoTrack.setTargetQualities(new QualityListFilter<>(qualities).filterQualityList(uids));
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
389
492
|
@SuppressLint("ObsoleteSdkInt")
|
|
390
493
|
public void setFullscreen(boolean fullscreen) {
|
|
391
494
|
if (fullscreen == this.fullscreen) {
|
|
@@ -3,6 +3,7 @@ package com.theoplayer;
|
|
|
3
3
|
import androidx.annotation.NonNull;
|
|
4
4
|
import androidx.annotation.Nullable;
|
|
5
5
|
|
|
6
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
6
7
|
import com.facebook.react.bridge.ReadableMap;
|
|
7
8
|
import com.facebook.react.common.MapBuilder;
|
|
8
9
|
import com.facebook.react.uimanager.ThemedReactContext;
|
|
@@ -15,6 +16,7 @@ public class ReactTHEOplayerViewManager extends ViewGroupManager<ReactTHEOplayer
|
|
|
15
16
|
public static final String REACT_CLASS = "THEOplayerRCTView";
|
|
16
17
|
|
|
17
18
|
private static final String PROP_CONFIG = "config";
|
|
19
|
+
private static final String PROP_ABR_CONFIG = "abrConfig";
|
|
18
20
|
private static final String PROP_SRC = "src";
|
|
19
21
|
private static final String PROP_SEEK = "seek";
|
|
20
22
|
private static final String PROP_PAUSED = "paused";
|
|
@@ -25,6 +27,7 @@ public class ReactTHEOplayerViewManager extends ViewGroupManager<ReactTHEOplayer
|
|
|
25
27
|
private static final String PROP_SELECTED_TEXTTRACK = "selectedTextTrack";
|
|
26
28
|
private static final String PROP_SELECTED_AUDIOTRACK = "selectedAudioTrack";
|
|
27
29
|
private static final String PROP_SELECTED_VIDEOTRACK = "selectedVideoTrack";
|
|
30
|
+
private static final String PROP_TARGET_VIDEOQUALITY = "targetVideoQuality";
|
|
28
31
|
|
|
29
32
|
@Override
|
|
30
33
|
@NonNull
|
|
@@ -48,9 +51,14 @@ public class ReactTHEOplayerViewManager extends ViewGroupManager<ReactTHEOplayer
|
|
|
48
51
|
videoView.initialize(config);
|
|
49
52
|
}
|
|
50
53
|
|
|
54
|
+
@ReactProp(name = PROP_ABR_CONFIG)
|
|
55
|
+
public void setABRConfig(final ReactTHEOplayerView videoView, @Nullable ReadableMap config) {
|
|
56
|
+
videoView.setABRConfig(config);
|
|
57
|
+
}
|
|
58
|
+
|
|
51
59
|
@ReactProp(name = PROP_SRC)
|
|
52
60
|
public void setSource(final ReactTHEOplayerView videoView, @Nullable ReadableMap src) {
|
|
53
|
-
videoView.setSource(
|
|
61
|
+
videoView.setSource(src);
|
|
54
62
|
}
|
|
55
63
|
|
|
56
64
|
@ReactProp(name = PROP_SEEK)
|
|
@@ -102,6 +110,11 @@ public class ReactTHEOplayerViewManager extends ViewGroupManager<ReactTHEOplayer
|
|
|
102
110
|
}
|
|
103
111
|
}
|
|
104
112
|
|
|
113
|
+
@ReactProp(name = PROP_TARGET_VIDEOQUALITY)
|
|
114
|
+
public void setTargetVideoQuality(final ReactTHEOplayerView videoView, final ReadableArray uid) {
|
|
115
|
+
videoView.setTargetVideoQualities(uid);
|
|
116
|
+
}
|
|
117
|
+
|
|
105
118
|
@Override
|
|
106
119
|
public @Nullable
|
|
107
120
|
Map<String, Object> getExportedCustomDirectEventTypeConstants() {
|