gst-plugins-rs/net
François Laignel 4259d284bd webrtc: add android webrtcsrc example
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>
2024-05-24 16:14:13 +00:00
..
aws aws: Update to base32 0.5 2024-05-17 07:50:51 +00:00
hlssink3 net/hlssink3: Refactor out HlsBaseSink & hlscmafsink from hlssink3 2024-05-09 21:50:32 +05:30
ndi Fix a couple of compiler/clippy warnings with --no-default-features 2024-02-08 13:02:55 +02:00
onvif onvifmetadataparse: Reset state in PAUSED->READY after pad deactivation 2024-04-05 15:19:37 +00:00
quinn net/quinn: Enable client to keep QUIC conn alive 2024-05-11 08:51:00 +02:00
raptorq Use workspace features for crates metadata/deps 2024-02-05 15:34:31 +01:00
reqwest reqwest: Update to reqwest 0.12 2024-03-23 14:30:31 +02:00
rtp rtp: basedepay: Reset last used ext seqnum on discontinuities 2024-05-24 10:23:06 +03:00
rtsp Fix clippy warnings after upgrade to Rust 1.77 2024-03-21 17:33:32 +00:00
webrtc webrtc: add android webrtcsrc example 2024-05-24 16:14:13 +00:00
webrtchttp webrtchttp: Update to reqwest 0.12 2024-04-06 11:07:16 +03:00