From e7c3d03bb4cccf5f126b2469153e0d076e545587 Mon Sep 17 00:00:00 2001 From: Laurent Sauvage Date: Wed, 18 Oct 2023 23:38:30 +0200 Subject: [PATCH 1/3] Add H264 hardware decoding for Marvell chips --- .../src/main/java/org/webrtc/MediaCodecUtils.java | 5 ++++- .../main/java/org/webrtc/MediaCodecVideoDecoderFactory.java | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecUtils.java b/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecUtils.java index 5417fec4d..64af8b4ca 100644 --- a/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecUtils.java +++ b/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecUtils.java @@ -29,6 +29,7 @@ class MediaCodecUtils { static final String INTEL_PREFIX = "OMX.Intel."; static final String NVIDIA_PREFIX = "OMX.Nvidia."; static final String QCOM_PREFIX = "OMX.qcom."; + static final String MARVELL_PREFIX = "OMX.Marvell."; static final String[] SOFTWARE_IMPLEMENTATION_PREFIXES = { "OMX.google.", "OMX.SEC.", "c2.android"}; @@ -40,7 +41,9 @@ class MediaCodecUtils { static final int COLOR_QCOM_FORMATYUV420PackedSemiPlanar32m = 0x7FA30C04; // Color formats supported by hardware decoder - in order of preference. - static final int[] DECODER_COLOR_FORMATS = new int[] {CodecCapabilities.COLOR_FormatYUV420Planar, + static final int[] DECODER_COLOR_FORMATS = new int[] { + MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Flexible, + CodecCapabilities.COLOR_FormatYUV420Planar, CodecCapabilities.COLOR_FormatYUV420SemiPlanar, CodecCapabilities.COLOR_QCOM_FormatYUV420SemiPlanar, MediaCodecUtils.COLOR_QCOM_FORMATYVU420PackedSemiPlanar32m4ka, diff --git a/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecVideoDecoderFactory.java b/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecVideoDecoderFactory.java index 9a73bc49f..de45b53fa 100644 --- a/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecVideoDecoderFactory.java +++ b/stream-webrtc-android/src/main/java/org/webrtc/MediaCodecVideoDecoderFactory.java @@ -12,6 +12,7 @@ import static org.webrtc.MediaCodecUtils.EXYNOS_PREFIX; import static org.webrtc.MediaCodecUtils.QCOM_PREFIX; +import static org.webrtc.MediaCodecUtils.MARVELL_PREFIX; import android.media.MediaCodecInfo; import android.media.MediaCodecInfo.CodecCapabilities; @@ -127,8 +128,8 @@ private boolean isCodecAllowed(MediaCodecInfo info) { private boolean isH264HighProfileSupported(MediaCodecInfo info) { String name = info.getName(); - // Support H.264 HP decoding on QCOM chips. - if (name.startsWith(QCOM_PREFIX)) { + // Support H.264 HP decoding on QCOM and Marvell chips + if (name.startsWith(QCOM_PREFIX) || name.startsWith(MARVELL_PREFIX)) { return true; } // Support H.264 HP decoding on Exynos chips for Android M and above. From ba07d1dc1e705afe310d952b2eaad1e58d6ac6af Mon Sep 17 00:00:00 2001 From: Laurent Sauvage Date: Wed, 18 Oct 2023 23:57:17 +0200 Subject: [PATCH 2/3] Ignore publish stuff in build.gradle so stream-webrtc-android can be submodule --- stream-webrtc-android/build.gradle.kts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/stream-webrtc-android/build.gradle.kts b/stream-webrtc-android/build.gradle.kts index dd7f64e2b..0aa8babcf 100644 --- a/stream-webrtc-android/build.gradle.kts +++ b/stream-webrtc-android/build.gradle.kts @@ -1,6 +1,6 @@ @file:Suppress("UnstableApiUsage") -import io.getstream.Configurations +//import io.getstream.Configurations @Suppress("DSL_SCOPE_VIOLATION") plugins { @@ -8,6 +8,7 @@ plugins { id(libs.plugins.kotlin.android.get().pluginId) } +/* rootProject.extra.apply { set("PUBLISH_GROUP_ID", Configurations.artifactGroup) set("PUBLISH_ARTIFACT_ID", "stream-webrtc-android") @@ -15,13 +16,14 @@ rootProject.extra.apply { } apply(from ="${rootDir}/scripts/publish-module.gradle") +*/ android { namespace = "org.webrtc" - compileSdk = Configurations.compileSdk + compileSdk = 34 //Configurations.compileSdk defaultConfig { - minSdk = Configurations.minSdk + minSdk = 26 //Configurations.minSdk consumerProguardFiles("consumer-rules.pro") } @@ -39,6 +41,9 @@ android { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } + kotlinOptions { + jvmTarget = "11" + } } tasks.withType(JavaCompile::class.java).configureEach { From e23a11fa85361dc106692d537bb078c209583312 Mon Sep 17 00:00:00 2001 From: Laurent Sauvage Date: Thu, 14 Dec 2023 17:00:09 +0100 Subject: [PATCH 3/3] minSdk 21 --- stream-webrtc-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream-webrtc-android/build.gradle.kts b/stream-webrtc-android/build.gradle.kts index 0aa8babcf..1fbd1849b 100644 --- a/stream-webrtc-android/build.gradle.kts +++ b/stream-webrtc-android/build.gradle.kts @@ -23,7 +23,7 @@ android { compileSdk = 34 //Configurations.compileSdk defaultConfig { - minSdk = 26 //Configurations.minSdk + minSdk = 21 //Configurations.minSdk consumerProguardFiles("consumer-rules.pro") }