mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-12-23 18:40:32 +00:00
4259d284bd
This commit adds an Android `webrtcsrc` based example with the following features: * A first view allows retrieving the producer list from the signaller (peer ids are uuids which are too long to tap, especially using an onscreen keyboard). * Selecting a producer opens a second view. The first available video stream is rendered on a native Surface. All the audio streams are rendered using `autoaudiosink`. Available Settings: * Signaller URI. * A toggle to prefer hardware decoding for OPUS, otherwise the app defaults to raising `opusdec`'s rank. Hardware decoding was moved aside since it was found to crash the app on all tested devices (2 smartphones, 1 tv). **Warning**: in order to ease testing, this demonstration application enables unencrypted network communication. See `AndroidManifest.xml`. The application uses the technologies currenlty proposed by Android Studio when creating a new project: * Kotlin as the default language, which is fully interoperable with Java and uses the same SDK. * gradle 8.6. * kotlin dialect for gradle. The structure is mostly the same as the previously preferred dialect, for which examples can be found online readily. * However, JNI code generation still uses Makefiles (instead of CMake) due to the need to call [`gstreamer-1.0.mk`] for `gstreamer_android` generation. Note: on-going work on that front: - https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1466 - https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6794 Current limitations: * x86 support is currently discarded as `gstreamer_android` libs generation fails (observed with `gstreamer-1.0-android-universal-1.24.3`). * A selector could be added to let the user chose the video streams and possibly decide whether to render all audio streams or just select one. Nice to have: * Support for the synchronization features of the `webrtc-precise-sync-recv` example (NTP clock, RFC 7273). * It could be nice to use Rust for the specific native code. [`gstreamer-1.0.mk`]: https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/main/data/ndk-build/gstreamer-1.0.mk Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1578>
21 lines
No EOL
750 B
Prolog
21 lines
No EOL
750 B
Prolog
# Add project specific ProGuard rules here.
|
|
# You can control the set of applied configuration files using the
|
|
# proguardFiles setting in build.gradle.
|
|
#
|
|
# For more details, see
|
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
|
|
# If your project uses WebView with JS, uncomment the following
|
|
# and specify the fully qualified class name to the JavaScript interface
|
|
# class:
|
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
# public *;
|
|
#}
|
|
|
|
# Uncomment this to preserve the line number information for
|
|
# debugging stack traces.
|
|
#-keepattributes SourceFile,LineNumberTable
|
|
|
|
# If you keep the line number information, uncomment this to
|
|
# hide the original source file name.
|
|
#-renamesourcefileattribute SourceFile |