aboutsummaryrefslogtreecommitdiff
path: root/plugins/rtp/src/codec_util.vala
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2021-11-09 22:06:46 +0100
committerfiaxh <git@lightrise.org>2021-11-10 11:05:34 +0100
commit72569ea52faf9895b4a897feffd37fa7fe3e2116 (patch)
treec5e506ce605a13748d3445cadc7a85ff2db142b2 /plugins/rtp/src/codec_util.vala
parentaae13b9ea6a3ac3e35164704bb7966d646833686 (diff)
downloaddino-72569ea52faf9895b4a897feffd37fa7fe3e2116.tar.gz
dino-72569ea52faf9895b4a897feffd37fa7fe3e2116.zip
Improve codec support
Diffstat (limited to 'plugins/rtp/src/codec_util.vala')
-rw-r--r--plugins/rtp/src/codec_util.vala11
1 files changed, 7 insertions, 4 deletions
diff --git a/plugins/rtp/src/codec_util.vala b/plugins/rtp/src/codec_util.vala
index 417dc4be..8299fc51 100644
--- a/plugins/rtp/src/codec_util.vala
+++ b/plugins/rtp/src/codec_util.vala
@@ -146,7 +146,7 @@ public class Dino.Plugins.Rtp.CodecUtil {
// VP8
if (encode == "msdkvp8enc") return " rate-control=vbr";
if (encode == "vaapivp8enc") return " rate-control=vbr";
- if (encode == "vp8enc") return " deadline=1 error-resilient=1";
+ if (encode == "vp8enc") return " deadline=1 error-resilient=3 lag-in-frames=0 resize-allowed=true threads=8 dropframe-threshold=30";
// OPUS
if (encode == "opusenc") {
@@ -159,7 +159,8 @@ public class Dino.Plugins.Rtp.CodecUtil {
public static string? get_encode_suffix(string media, string codec, string encode, JingleRtp.PayloadType? payload_type) {
// H264
- if (media == "video" && codec == "h264") return " ! video/x-h264,profile=constrained-baseline ! h264parse";
+ if (media == "video" && codec == "h264") return " ! capsfilter caps=video/x-h264,profile=constrained-baseline ! h264parse";
+ if (media == "video" && codec == "vp8" && encode == "vp8enc") return " ! capsfilter caps=video/x-vp8,profile=(string)1";
return null;
}
@@ -171,17 +172,18 @@ public class Dino.Plugins.Rtp.CodecUtil {
if (encode_name == null) return 0;
Gst.Element encode = encode_bin.get_by_name(@"$(encode_bin.name)_encode");
- bitrate = uint.min(2048000, bitrate);
-
switch (encode_name) {
case "msdkh264enc":
case "vaapih264enc":
case "x264enc":
+ case "msdkvp9enc":
+ case "vaapivp9enc":
case "msdkvp8enc":
case "vaapivp8enc":
bitrate = uint.min(2048000, bitrate);
encode.set("bitrate", bitrate);
return bitrate;
+ case "vp9enc":
case "vp8enc":
bitrate = uint.min(2147483, bitrate);
encode.set("target-bitrate", bitrate * 1000);
@@ -198,6 +200,7 @@ public class Dino.Plugins.Rtp.CodecUtil {
public static string? get_decode_args(string media, string codec, string decode, JingleRtp.PayloadType? payload_type) {
if (decode == "opusdec" && payload_type != null && payload_type.parameters.has("useinbandfec", "1")) return " use-inband-fec=true";
if (decode == "vaapivp9dec" || decode == "vaapivp8dec" || decode == "vaapih264dec") return " max-errors=100";
+ if (decode == "vp8dec") return " threads=8";
return null;
}