Update dependencies

This involves removing lots of unnecessary `unwrap()`s and simplifies
the `lookup_codecs()` function a bit.
This commit is contained in:
Sebastian Dröge 2021-11-20 23:10:39 +02:00 committed by Mathieu Duponchelle
parent d88786a824
commit e7a9c2b054
5 changed files with 183 additions and 351 deletions

237
Cargo.lock generated
View file

@ -4,9 +4,9 @@ version = 3
[[package]]
name = "anyhow"
version = "1.0.44"
version = "1.0.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1"
checksum = "38d9ff5d688f1c13395289f67db01d4826b46dd694e7580accdc3e8430f2d98e"
[[package]]
name = "async-channel"
@ -100,9 +100,9 @@ dependencies = [
[[package]]
name = "async-process"
version = "1.2.0"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b21b63ab5a0db0369deb913540af2892750e42d949faacc7a61495ac418a1692"
checksum = "83137067e3a2a6a06d67168e49e68a0957d215410473a740cea95a2425c0b7c6"
dependencies = [
"async-io",
"blocking",
@ -151,16 +151,16 @@ checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0"
[[package]]
name = "async-tungstenite"
version = "0.10.0"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39eca8dd578b18e557361e50ca767df55c5e62f690a5e53868c3c7a8123145b7"
checksum = "a0d06e9a20f1c0d64b6067ef6aa9fdf59e194ecde93575591fb4c78063692324"
dependencies = [
"async-native-tls",
"async-std",
"futures-io",
"futures-util",
"log",
"pin-project",
"pin-project-lite",
"tungstenite",
]
@ -178,9 +178,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
[[package]]
name = "base64"
version = "0.12.3"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
[[package]]
name = "bitflags"
@ -199,9 +199,9 @@ dependencies = [
[[package]]
name = "blocking"
version = "1.0.2"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9"
checksum = "046e47d4b2d391b1f6f8b407b1deb8dee56c1852ccd868becf2710f601b5f427"
dependencies = [
"async-channel",
"async-task",
@ -223,12 +223,6 @@ version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "bytes"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
[[package]]
name = "bytes"
version = "1.1.0"
@ -243,9 +237,9 @@ checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba"
[[package]]
name = "cc"
version = "1.0.71"
version = "1.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd"
checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee"
[[package]]
name = "cfg-expr"
@ -268,11 +262,8 @@ version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
"libc",
"num-integer",
"num-traits",
"time",
"winapi",
]
[[package]]
@ -509,17 +500,6 @@ dependencies = [
"version_check",
]
[[package]]
name = "getrandom"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
dependencies = [
"cfg-if",
"libc",
"wasi 0.9.0+wasi-snapshot-preview1",
]
[[package]]
name = "getrandom"
version = "0.2.3"
@ -528,13 +508,13 @@ checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
dependencies = [
"cfg-if",
"libc",
"wasi 0.10.2+wasi-snapshot-preview1",
"wasi",
]
[[package]]
name = "glib"
version = "0.15.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core#834ea60512aef1df6d861fb1efd06173b3d7083a"
source = "git+https://github.com/gtk-rs/gtk-rs-core#384457e9cabfb58ad6bd987da7c6a8f1291a0b02"
dependencies = [
"bitflags",
"futures-channel",
@ -552,7 +532,7 @@ dependencies = [
[[package]]
name = "glib-macros"
version = "0.15.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core#834ea60512aef1df6d861fb1efd06173b3d7083a"
source = "git+https://github.com/gtk-rs/gtk-rs-core#384457e9cabfb58ad6bd987da7c6a8f1291a0b02"
dependencies = [
"anyhow",
"heck",
@ -566,7 +546,7 @@ dependencies = [
[[package]]
name = "glib-sys"
version = "0.15.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core#834ea60512aef1df6d861fb1efd06173b3d7083a"
source = "git+https://github.com/gtk-rs/gtk-rs-core#384457e9cabfb58ad6bd987da7c6a8f1291a0b02"
dependencies = [
"libc",
"system-deps",
@ -588,7 +568,7 @@ dependencies = [
[[package]]
name = "gobject-sys"
version = "0.15.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core#834ea60512aef1df6d861fb1efd06173b3d7083a"
source = "git+https://github.com/gtk-rs/gtk-rs-core#384457e9cabfb58ad6bd987da7c6a8f1291a0b02"
dependencies = [
"glib-sys",
"libc",
@ -597,9 +577,9 @@ dependencies = [
[[package]]
name = "gst-plugin-version-helper"
version = "0.7.1"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "596a7ad516b556be91787f4f33823c75f10b8789aa8d85dc4a79ea1c30466334"
checksum = "83ff45096243abc52e3d3b525c622ea2aceb401433778fbfe3554129c50643bd"
dependencies = [
"chrono",
]
@ -607,7 +587,7 @@ dependencies = [
[[package]]
name = "gstreamer"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"bitflags",
"cfg-if",
@ -631,7 +611,7 @@ dependencies = [
[[package]]
name = "gstreamer-app"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"bitflags",
"futures-core",
@ -647,7 +627,7 @@ dependencies = [
[[package]]
name = "gstreamer-app-sys"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib-sys",
"gstreamer-base-sys",
@ -659,7 +639,7 @@ dependencies = [
[[package]]
name = "gstreamer-base"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"bitflags",
"cfg-if",
@ -672,7 +652,7 @@ dependencies = [
[[package]]
name = "gstreamer-base-sys"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib-sys",
"gobject-sys",
@ -684,7 +664,7 @@ dependencies = [
[[package]]
name = "gstreamer-rtp"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"bitflags",
"glib",
@ -696,7 +676,7 @@ dependencies = [
[[package]]
name = "gstreamer-rtp-sys"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib-sys",
"gstreamer-base-sys",
@ -708,7 +688,7 @@ dependencies = [
[[package]]
name = "gstreamer-sdp"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib",
"gstreamer",
@ -718,7 +698,7 @@ dependencies = [
[[package]]
name = "gstreamer-sdp-sys"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib-sys",
"gstreamer-sys",
@ -729,7 +709,7 @@ dependencies = [
[[package]]
name = "gstreamer-sys"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib-sys",
"gobject-sys",
@ -740,7 +720,7 @@ dependencies = [
[[package]]
name = "gstreamer-video"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"bitflags",
"cfg-if",
@ -757,7 +737,7 @@ dependencies = [
[[package]]
name = "gstreamer-video-sys"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib-sys",
"gobject-sys",
@ -770,7 +750,7 @@ dependencies = [
[[package]]
name = "gstreamer-webrtc"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib",
"gstreamer",
@ -782,7 +762,7 @@ dependencies = [
[[package]]
name = "gstreamer-webrtc-sys"
version = "0.18.0"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b43d785d837738a9071ad0690232e245e487dd53"
source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#1ffcea4da72eb2a021f5aa47b3eb3ad7f8cef813"
dependencies = [
"glib-sys",
"gstreamer-sdp-sys",
@ -814,7 +794,7 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b"
dependencies = [
"bytes 1.1.0",
"bytes",
"fnv",
"itoa",
]
@ -836,15 +816,6 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "input_buffer"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754"
dependencies = [
"bytes 0.5.6",
]
[[package]]
name = "instant"
version = "0.1.12"
@ -886,9 +857,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.105"
version = "0.2.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "869d572136620d55835903746bcb5cdc54cb2851fd0aeec53220b4bb65ef3013"
checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119"
[[package]]
name = "log"
@ -990,9 +961,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "openssl"
version = "0.10.36"
version = "0.10.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d9facdb76fec0b73c406f125d44d86fdad818d66fef0531eec9233ca425ff4a"
checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95"
dependencies = [
"bitflags",
"cfg-if",
@ -1010,9 +981,9 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a"
[[package]]
name = "openssl-sys"
version = "0.9.67"
version = "0.9.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69df2d8dfc6ce3aaf44b40dec6f487d5a886516cf6879c49e98e0710f310a058"
checksum = "7df13d165e607909b363a4757a6f133f8a818a74e9d3a98d09c6128e15fa4c73"
dependencies = [
"autocfg",
"cc",
@ -1038,9 +1009,9 @@ checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
[[package]]
name = "paste"
version = "1.0.5"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58"
checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5"
[[package]]
name = "percent-encoding"
@ -1048,26 +1019,6 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pin-project"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "pin-project-lite"
version = "0.2.7"
@ -1088,9 +1039,9 @@ checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f"
[[package]]
name = "polling"
version = "2.1.0"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25"
checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259"
dependencies = [
"cfg-if",
"libc",
@ -1175,19 +1126,6 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "rand"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [
"getrandom 0.1.16",
"libc",
"rand_chacha 0.2.2",
"rand_core 0.5.1",
"rand_hc 0.2.0",
]
[[package]]
name = "rand"
version = "0.8.4"
@ -1195,19 +1133,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.3",
"rand_hc 0.3.1",
]
[[package]]
name = "rand_chacha"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [
"ppv-lite86",
"rand_core 0.5.1",
"rand_chacha",
"rand_core",
"rand_hc",
]
[[package]]
@ -1217,16 +1145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.3",
]
[[package]]
name = "rand_core"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
dependencies = [
"getrandom 0.1.16",
"rand_core",
]
[[package]]
@ -1235,16 +1154,7 @@ version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
"getrandom 0.2.3",
]
[[package]]
name = "rand_hc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [
"rand_core 0.5.1",
"getrandom",
]
[[package]]
@ -1253,7 +1163,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
dependencies = [
"rand_core 0.6.3",
"rand_core",
]
[[package]]
@ -1332,9 +1242,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.68"
version = "1.0.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8"
checksum = "063bf466a64011ac24040a49009724ee60a57da1b437617ceb32e53ad61bfb19"
dependencies = [
"itoa",
"ryu",
@ -1408,9 +1318,9 @@ dependencies = [
[[package]]
name = "system-deps"
version = "5.0.0"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e"
checksum = "7b1487aaddaacbc5d60a2a507ba1617c5ca66c57dd0dd07d0c5efd5b693841d4"
dependencies = [
"cfg-expr",
"heck",
@ -1427,7 +1337,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
dependencies = [
"cfg-if",
"libc",
"rand 0.8.4",
"rand",
"redox_syscall",
"remove_dir_all",
"winapi",
@ -1453,21 +1363,11 @@ dependencies = [
"syn",
]
[[package]]
name = "time"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "tinyvec"
version = "1.5.0"
version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83b2a3d4d9091d0abd7eba4dc2710b1718583bd4d8992e2190720ea38f391f7"
checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2"
dependencies = [
"tinyvec_macros",
]
@ -1489,19 +1389,20 @@ dependencies = [
[[package]]
name = "tungstenite"
version = "0.11.1"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0308d80d86700c5878b9ef6321f020f29b1bb9d5ff3cab25e75e23f3a492a23"
checksum = "6ad3713a14ae247f22a728a0456a545df14acf3867f905adff84be99e23b3ad1"
dependencies = [
"base64",
"byteorder",
"bytes 0.5.6",
"bytes",
"http",
"httparse",
"input_buffer",
"log",
"rand 0.7.3",
"native-tls",
"rand",
"sha-1",
"thiserror",
"url",
"utf-8",
]
@ -1575,9 +1476,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "version-compare"
version = "0.0.11"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73"
[[package]]
name = "version_check"
@ -1591,12 +1492,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
[[package]]
name = "wasi"
version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"

View file

@ -20,7 +20,7 @@ smallvec = "1"
anyhow = "1"
futures = "0.3"
async-std = { version = "1", features = ["unstable"] }
async-tungstenite = { version = "0.10", features = ["async-std-runtime", "async-native-tls"] }
async-tungstenite = { version = "0.16", features = ["async-std-runtime", "async-native-tls"] }
serde = "1"
serde_derive = "1"
serde_json = "1"

View file

@ -345,7 +345,7 @@ impl ObjectSubclass for Signaller {
impl ObjectImpl for Signaller {
fn properties() -> &'static [glib::ParamSpec] {
static PROPERTIES: Lazy<Vec<glib::ParamSpec>> = Lazy::new(|| {
vec![glib::ParamSpec::new_string(
vec![glib::ParamSpecString::new(
"address",
"Address",
"Address of the signalling server",

View file

@ -247,10 +247,10 @@ fn setup_encoding(
.with_context(|| format!("Creating payloader {}", codec.payloader.name()))?;
let parse_filter = make_element("capsfilter", None)?;
pay.set_property("pt", codec.payload as u32).unwrap();
pay.set_property("pt", codec.payload as u32);
if let Some(ssrc) = ssrc {
pay.set_property("ssrc", ssrc).unwrap();
pay.set_property("ssrc", ssrc);
}
pipeline
@ -296,37 +296,35 @@ fn setup_encoding(
match codec.encoder.name().as_str() {
"vp8enc" | "vp9enc" => {
enc.set_property("deadline", 1i64).unwrap();
enc.set_property("threads", 12i32).unwrap();
enc.set_property("target-bitrate", 2560000i32).unwrap();
enc.set_property("cpu-used", -16i32).unwrap();
enc.set_property("keyframe-max-dist", 2000i32).unwrap();
enc.set_property_from_str("end-usage", "cbr").unwrap();
enc.set_property("buffer-initial-size", 100i32).unwrap();
enc.set_property("buffer-optimal-size", 120i32).unwrap();
enc.set_property("buffer-size", 300i32).unwrap();
enc.set_property("resize-allowed", true).unwrap();
enc.set_property("max-intra-bitrate", 250i32).unwrap();
enc.set_property("deadline", 1i64);
enc.set_property("threads", 12i32);
enc.set_property("target-bitrate", 2560000i32);
enc.set_property("cpu-used", -16i32);
enc.set_property("keyframe-max-dist", 2000i32);
enc.set_property_from_str("end-usage", "cbr");
enc.set_property("buffer-initial-size", 100i32);
enc.set_property("buffer-optimal-size", 120i32);
enc.set_property("buffer-size", 300i32);
enc.set_property("resize-allowed", true);
enc.set_property("max-intra-bitrate", 250i32);
pay.set_property_from_str("picture-id-mode", "15-bit")
.unwrap();
pay.set_property_from_str("picture-id-mode", "15-bit");
}
"x264enc" => {
enc.set_property("bitrate", 25608u32).unwrap();
enc.set_property_from_str("tune", "zerolatency").unwrap();
enc.set_property_from_str("speed-preset", "ultrafast")
.unwrap();
enc.set_property("threads", 12u32).unwrap();
enc.set_property("key-int-max", 2560u32).unwrap();
enc.set_property("b-adapt", false).unwrap();
enc.set_property("vbv-buf-capacity", 120u32).unwrap();
enc.set_property("bitrate", 25608u32);
enc.set_property_from_str("tune", "zerolatency");
enc.set_property_from_str("speed-preset", "ultrafast");
enc.set_property("threads", 12u32);
enc.set_property("key-int-max", 2560u32);
enc.set_property("b-adapt", false);
enc.set_property("vbv-buf-capacity", 120u32);
}
"nvh264enc" => {
enc.set_property("bitrate", 2048u32).unwrap();
enc.set_property("gop-size", 2560i32).unwrap();
enc.set_property_from_str("rc-mode", "cbr").unwrap();
enc.set_property("vbv-buffer-size", 120u32).unwrap();
enc.set_property("zerolatency", true).unwrap();
enc.set_property("bitrate", 2048u32);
enc.set_property("gop-size", 2560i32);
enc.set_property_from_str("rc-mode", "cbr");
enc.set_property("vbv-buffer-size", 120u32);
enc.set_property("zerolatency", true);
}
_ => (),
}
@ -340,11 +338,10 @@ fn setup_encoding(
if twcc {
let twcc_extension = gst_rtp::RTPHeaderExtension::create_from_uri(RTP_TWCC_URI).unwrap();
twcc_extension.set_id(1);
pay.emit_by_name("add-extension", &[&twcc_extension])
.unwrap();
pay.emit_by_name::<()>("add-extension", &[&twcc_extension]);
}
conv_filter.set_property("caps", conv_caps).unwrap();
conv_filter.set_property("caps", conv_caps);
let parse_caps = if codec_name == "video/x-h264" {
gst::Caps::builder(codec_name)
@ -359,7 +356,7 @@ fn setup_encoding(
gst::Caps::new_any()
};
parse_filter.set_property("caps", parse_caps).unwrap();
parse_filter.set_property("caps", parse_caps);
gst::Element::link_many(&[&parse_filter, &pay]).with_context(|| "Linking encoding elements")?;
@ -422,44 +419,24 @@ impl VideoEncoder {
fn bitrate(&self) -> i32 {
match self.factory_name.as_str() {
"vp8enc" | "vp9enc" => self
.element
.property("target-bitrate")
.unwrap()
.get::<i32>()
.unwrap(),
"x264enc" | "nvh264enc" => {
(self
.element
.property("bitrate")
.unwrap()
.get::<u32>()
.unwrap()
* 1000) as i32
}
"vp8enc" | "vp9enc" => self.element.property::<i32>("target-bitrate"),
"x264enc" | "nvh264enc" => (self.element.property::<u32>("bitrate") * 1000) as i32,
_ => unreachable!(),
}
}
fn set_bitrate(&self, element: &super::WebRTCSink, bitrate: i32) {
match self.factory_name.as_str() {
"vp8enc" | "vp9enc" => self
.element
.set_property("target-bitrate", bitrate)
.unwrap(),
"vp8enc" | "vp9enc" => self.element.set_property("target-bitrate", bitrate),
"x264enc" | "nvh264enc" => self
.element
.set_property("bitrate", (bitrate / 1000) as u32)
.unwrap(),
.set_property("bitrate", (bitrate / 1000) as u32),
_ => unreachable!(),
}
let mut s = self
.filter
.property("caps")
.unwrap()
.get::<gst::Caps>()
.unwrap()
.property::<gst::Caps>("caps")
.structure(0)
.unwrap()
.to_owned();
@ -492,7 +469,7 @@ impl VideoEncoder {
self.element
);
self.filter.set_property("caps", caps).unwrap();
self.filter.set_property("caps", caps);
}
}
@ -802,22 +779,14 @@ impl Consumer {
.request_pad_simple(&format!("sink_{}", media_idx))
.unwrap();
let transceiver = pad
.property("transceiver")
.unwrap()
.get::<gst_webrtc::WebRTCRTPTransceiver>()
.unwrap();
let transceiver = pad.property::<gst_webrtc::WebRTCRTPTransceiver>("transceiver");
transceiver
.set_property(
"direction",
gst_webrtc::WebRTCRTPTransceiverDirection::Sendonly,
)
.unwrap();
transceiver.set_property(
"direction",
gst_webrtc::WebRTCRTPTransceiverDirection::Sendonly,
);
transceiver
.set_property("codec-preferences", &payloader_caps)
.unwrap();
transceiver.set_property("codec-preferences", &payloader_caps);
self.webrtc_pads.insert(
ssrc,
@ -972,13 +941,13 @@ impl WebRTCSink {
/// Build an ordered map of Codecs, given user-provided audio / video caps */
fn lookup_codecs(&self) -> BTreeMap<i32, Codec> {
/* First gather all encoder and payloader factories */
let encoders = gst::ElementFactory::list_get_elements(
gst::ElementFactoryListType::ENCODER,
let encoders = gst::ElementFactory::factories_with_type(
gst::ElementFactoryType::ENCODER,
gst::Rank::Marginal,
);
let payloaders = gst::ElementFactory::list_get_elements(
gst::ElementFactoryListType::PAYLOADER,
let payloaders = gst::ElementFactory::factories_with_type(
gst::ElementFactoryType::PAYLOADER,
gst::Rank::Marginal,
);
@ -992,38 +961,34 @@ impl WebRTCSink {
.iter()
.map(|s| (true, s))
.chain(settings.audio_caps.iter().map(|s| (false, s)))
.filter_map(|(is_video, s)| {
.filter_map(move |(is_video, s)| {
let caps = gst::Caps::builder_full().structure(s.to_owned()).build();
gst::ElementFactory::list_filter(&encoders, &caps, gst::PadDirection::Src, false)
.get(0)
.zip(
gst::ElementFactory::list_filter(
&payloaders,
&caps,
gst::PadDirection::Sink,
false,
)
.get(0),
)
.map(|(encoder, payloader)| {
/* Assign a payload type to the codec */
if let Some(pt) = payload.next() {
Some(Codec {
is_video,
encoder: encoder.clone(),
payloader: payloader.clone(),
caps,
payload: pt,
})
} else {
gst_warning!(CAT, obj: &self.instance(),
Option::zip(
encoders
.iter()
.find(|factory| factory.can_src_any_caps(&caps)),
payloaders
.iter()
.find(|factory| factory.can_sink_any_caps(&caps)),
)
.and_then(|(encoder, payloader)| {
/* Assign a payload type to the codec */
if let Some(pt) = payload.next() {
Some(Codec {
is_video,
encoder: encoder.clone(),
payloader: payloader.clone(),
caps,
payload: pt,
})
} else {
gst_warning!(CAT, obj: &self.instance(),
"Too many formats for available payload type range, ignoring {}",
s);
None
}
})
.flatten()
None
}
})
})
.map(|codec| (codec.payload, codec))
.collect()
@ -1111,8 +1076,7 @@ impl WebRTCSink {
if let Some(consumer) = state.consumers.get(&peer_id) {
consumer
.webrtcbin
.emit_by_name("set-local-description", &[&offer, &None::<gst::Promise>])
.unwrap();
.emit_by_name::<()>("set-local-description", &[&offer, &None::<gst::Promise>]);
if let Err(err) = state.signaller.handle_sdp(element, &peer_id, &offer) {
gst_warning!(
@ -1189,8 +1153,7 @@ impl WebRTCSink {
consumer
.webrtcbin
.emit_by_name("create-offer", &[&None::<gst::Structure>, &promise])
.unwrap();
.emit_by_name::<()>("create-offer", &[&None::<gst::Structure>, &promise]);
} else {
gst_debug!(
CAT,
@ -1240,61 +1203,52 @@ impl WebRTCSink {
let webrtcbin = make_element("webrtcbin", None)?;
webrtcbin
.set_property_from_str("bundle-policy", "max-bundle")
.unwrap();
webrtcbin.set_property_from_str("bundle-policy", "max-bundle");
if let Some(stun_server) = settings.stun_server.as_ref() {
webrtcbin.set_property("stun-server", stun_server).unwrap();
webrtcbin.set_property("stun-server", stun_server);
}
if let Some(turn_server) = settings.turn_server.as_ref() {
webrtcbin.set_property("turn-server", turn_server).unwrap();
webrtcbin.set_property("turn-server", turn_server);
}
pipeline.add(&webrtcbin).unwrap();
let element_clone = element.downgrade();
let peer_id_clone = peer_id.to_owned();
webrtcbin
.connect("on-negotiation-needed", false, move |_| {
if let Some(element) = element_clone.upgrade() {
let this = Self::from_instance(&element);
this.on_negotiation_needed(&element, peer_id_clone.to_string());
}
webrtcbin.connect("on-negotiation-needed", false, move |_| {
if let Some(element) = element_clone.upgrade() {
let this = Self::from_instance(&element);
this.on_negotiation_needed(&element, peer_id_clone.to_string());
}
None
})
.unwrap();
None
});
let element_clone = element.downgrade();
let peer_id_clone = peer_id.to_owned();
webrtcbin
.connect("on-ice-candidate", false, move |values| {
if let Some(element) = element_clone.upgrade() {
let this = Self::from_instance(&element);
let sdp_mline_index = values[1].get::<u32>().expect("Invalid argument");
let candidate = values[2].get::<String>().expect("Invalid argument");
this.on_ice_candidate(
&element,
peer_id_clone.to_string(),
sdp_mline_index,
candidate,
);
}
None
})
.unwrap();
webrtcbin.connect("on-ice-candidate", false, move |values| {
if let Some(element) = element_clone.upgrade() {
let this = Self::from_instance(&element);
let sdp_mline_index = values[1].get::<u32>().expect("Invalid argument");
let candidate = values[2].get::<String>().expect("Invalid argument");
this.on_ice_candidate(
&element,
peer_id_clone.to_string(),
sdp_mline_index,
candidate,
);
}
None
});
let element_clone = element.downgrade();
let peer_id_clone = peer_id.to_owned();
webrtcbin.connect_notify(Some("connection-state"), move |webrtcbin, _pspec| {
if let Some(element) = element_clone.upgrade() {
let state = webrtcbin
.property("connection-state")
.unwrap()
.get::<gst_webrtc::WebRTCPeerConnectionState>()
.unwrap();
let state =
webrtcbin.property::<gst_webrtc::WebRTCPeerConnectionState>("connection-state");
match state {
gst_webrtc::WebRTCPeerConnectionState::Failed => {
@ -1325,10 +1279,7 @@ impl WebRTCSink {
webrtcbin.connect_notify(Some("ice-connection-state"), move |webrtcbin, _pspec| {
if let Some(element) = element_clone.upgrade() {
let state = webrtcbin
.property("ice-connection-state")
.unwrap()
.get::<gst_webrtc::WebRTCICEConnectionState>()
.unwrap();
.property::<gst_webrtc::WebRTCICEConnectionState>("ice-connection-state");
let this = Self::from_instance(&element);
match state {
@ -1373,11 +1324,8 @@ impl WebRTCSink {
let element_clone = element.downgrade();
let peer_id_clone = peer_id.to_owned();
webrtcbin.connect_notify(Some("ice-gathering-state"), move |webrtcbin, _pspec| {
let state = webrtcbin
.property("ice-gathering-state")
.unwrap()
.get::<gst_webrtc::WebRTCICEGatheringState>()
.unwrap();
let state =
webrtcbin.property::<gst_webrtc::WebRTCICEGatheringState>("ice-gathering-state");
if let Some(element) = element_clone.upgrade() {
gst_log!(
@ -1458,7 +1406,7 @@ impl WebRTCSink {
pipeline.set_state(gst::State::Ready)?;
element.emit_by_name("new-webrtcbin", &[&peer_id, &webrtcbin])?;
element.emit_by_name::<()>("new-webrtcbin", &[&peer_id, &webrtcbin]);
pipeline.set_state(gst::State::Playing)?;
@ -1559,9 +1507,7 @@ impl WebRTCSink {
}
});
webrtcbin
.emit_by_name("get-stats", &[&None::<gst::Pad>, &promise])
.unwrap();
webrtcbin.emit_by_name::<()>("get-stats", &[&None::<gst::Pad>, &promise]);
} else {
break;
}
@ -1594,11 +1540,7 @@ impl WebRTCSink {
gst_trace!(CAT, "adding ice candidate for peer {}", peer_id);
consumer
.webrtcbin
.emit_by_name(
"add-ice-candidate",
&[&sdp_mline_index, &candidate.to_string()],
)
.unwrap();
.emit_by_name::<()>("add-ice-candidate", &[&sdp_mline_index, &candidate]);
Ok(())
} else {
Err(anyhow!("No consumer with ID {}", peer_id))
@ -1665,8 +1607,7 @@ impl WebRTCSink {
consumer
.webrtcbin
.emit_by_name("set-remote-description", &[desc, &promise])
.unwrap();
.emit_by_name::<()>("set-remote-description", &[desc, &promise]);
Ok(())
} else {
@ -1700,9 +1641,9 @@ impl WebRTCSink {
pay.link(&sink)
.with_context(|| format!("Running discovery pipeline for caps {}", caps))?;
capsfilter.set_property("caps", caps).unwrap();
capsfilter.set_property("caps", caps);
src.set_property("num-buffers", 1).unwrap();
src.set_property("num-buffers", 1);
let mut stream = pipe.0.bus().unwrap().stream();
@ -1917,35 +1858,35 @@ impl ObjectImpl for WebRTCSink {
fn properties() -> &'static [glib::ParamSpec] {
static PROPERTIES: Lazy<Vec<glib::ParamSpec>> = Lazy::new(|| {
vec![
glib::ParamSpec::new_boxed(
glib::ParamSpecBoxed::new(
"video-caps",
"Video encoder caps",
"Governs what video codecs will be proposed",
gst::Caps::static_type(),
glib::ParamFlags::READWRITE | gst::PARAM_FLAG_MUTABLE_READY,
),
glib::ParamSpec::new_boxed(
glib::ParamSpecBoxed::new(
"audio-caps",
"Audio encoder caps",
"Governs what audio codecs will be proposed",
gst::Caps::static_type(),
glib::ParamFlags::READWRITE | gst::PARAM_FLAG_MUTABLE_READY,
),
glib::ParamSpec::new_string(
glib::ParamSpecString::new(
"stun-server",
"STUN Server",
"The STUN server of the form stun://hostname:port",
DEFAULT_STUN_SERVER,
glib::ParamFlags::READWRITE,
),
glib::ParamSpec::new_string(
glib::ParamSpecString::new(
"turn-server",
"TURN Server",
"The TURN server of the form turn(s)://username:password@host:port.",
None,
glib::ParamFlags::READWRITE,
),
glib::ParamSpec::new_enum(
glib::ParamSpecEnum::new(
"congestion-control",
"Congestion control",
"Defines how congestion is controlled, if at all",

View file

@ -55,14 +55,10 @@ impl StreamProducer {
gst_debug!(CAT, "Adding consumer");
consumer.set_property("max-buffers", 0u64).unwrap();
consumer.set_property("max-bytes", 0u64).unwrap();
consumer
.set_property("max-time", 500 * gst::ClockTime::MSECOND)
.unwrap();
consumer
.set_property_from_str("leaky-type", "downstream")
.unwrap();
consumer.set_property("max-buffers", 0u64);
consumer.set_property("max-bytes", 0u64);
consumer.set_property("max-time", 500 * gst::ClockTime::MSECOND);
consumer.set_property_from_str("leaky-type", "downstream");
// Forward force-keyunit events upstream to the appsink
let srcpad = consumer.static_pad("src").unwrap();