cmd/client/dec.go | 9 +++++++++ cmd/client/dec_complex.go | 9 +++++++++ cmd/client/main.go | 3 +++ doc/index.texi | 1 + doc/libopus.texi | 26 ++++++++++++++++++++++++++ mk-bin | 10 ++++++---- diff --git a/cmd/client/dec.go b/cmd/client/dec.go new file mode 100644 index 0000000000000000000000000000000000000000..f94b000a1df99ab6efc59f6ba734c0724e93034526cab0eb89dbe057be7863f3 --- /dev/null +++ b/cmd/client/dec.go @@ -0,0 +1,9 @@ +//go:build !decodersetcomplexity + +package main + +import "gopkg.in/hraban/opus.v2" + +func DecoderSetComplexity(dec *opus.Decoder, complexity int) error { + return nil +} diff --git a/cmd/client/dec_complex.go b/cmd/client/dec_complex.go new file mode 100644 index 0000000000000000000000000000000000000000..49aad0d4a2582e050192a204af232da3056f0f2827e30846e767c74145a16ac9 --- /dev/null +++ b/cmd/client/dec_complex.go @@ -0,0 +1,9 @@ +//go:build decodersetcomplexity + +package main + +import "gopkg.in/hraban/opus.v2" + +func DecoderSetComplexity(dec *opus.Decoder, complexity int) error { + return dec.SetComplexity(complexity) +} diff --git a/cmd/client/main.go b/cmd/client/main.go index 118a7fed55b076517fd8339680307bfa1ad0c03d59dc976006d5903715de0d1e..1cb65bfcc71e362dd577d73a251b181e23aaba930c05e185d6dee548f2c89438 100644 --- a/cmd/client/main.go +++ b/cmd/client/main.go @@ -318,6 +318,9 @@ dec, err := opus.NewDecoder(vors.Rate, 1) if err != nil { log.Fatal(err) } + if err = DecoderSetComplexity(dec, 10); err != nil { + log.Fatal(err) + } var player io.WriteCloser var cmd *exec.Cmd diff --git a/doc/index.texi b/doc/index.texi index f576f9db0e03ec2bca7b4d6b1c88e26e52d1acfcb1a1aef61a3a6d8e5d636735..f87061a6156ca8b32a9b268c8ff19d42c1b6a152e78b91d1fedd02575d7829b1 100644 --- a/doc/index.texi +++ b/doc/index.texi @@ -56,6 +56,7 @@ @include install.texi @include usage.texi @include vad.texi +@include libopus.texi @include proto.texi @bye diff --git a/doc/libopus.texi b/doc/libopus.texi new file mode 100644 index 0000000000000000000000000000000000000000..7a3c589c6cbc6374a1ce941e13df5ce8267afba2600d875544d6b871c7dc0530 --- /dev/null +++ b/doc/libopus.texi @@ -0,0 +1,26 @@ +@node libopus +@unnumbered libopus + +It is @strong{strongly} advisable to use the latest and much more +advanced version of @code{libopus}. +@url{https://wiki.hydrogenaud.io/index.php?title=Opus, Look} how many +features and optimisations it gains from version to version. + +Current latest version @url{https://opus-codec.org/demo/opus-1.5/, brings} +various ML-related enhancements for the decoder. Unfortunately Opus +wrapper library does not provide @code{Decoder.SetComplexity} call. +There is @url{git://git.stargrave.org/go-opus.git, fork} fork including +it. Clone it somewhere, add Go module replacement in your current's +@file{go.mod} file and build client with @code{decodersetcomplexity} tag +specified: + +@example +$ git clone git://git.stargrave.org/go-opus.git +$ realpath go-opus | read pth +$ echo "replace gopkg.in/hraban/opus.v2 => $pth" >> go.mod +$ ./mk-bin decodersetcomplexity +@end example + +Do not forget, that @code{libopus} must be built with +@code{--enable-deep-plc} and @code{--enable-osce} to enable use of those +advanced techniques. diff --git a/mk-bin b/mk-bin index 094a8539a295d64a2ba6a90e075589b54227de64db7d97bfd82d0c01c22e0a24..a3f54bcc2f92f914639a97c7ebb5f4e341f44da28c6b8f03ca9796e6e61cf253 100755 --- a/mk-bin +++ b/mk-bin @@ -3,7 +3,9 @@ mkdir -p bin [ -d vendor ] && $vendor="-mod=vendor" strip=-ldflags=-s -go build -C cmd/vad $strip $vendor $@ -o ../../bin/vors-vad -go build -C cmd/keygen $strip $vendor $@ -o ../../bin/vors-keygen -go build -C cmd/server $strip $vendor $@ -o ../../bin/vors-server -go build -C cmd/client -tags nolibopusfile $strip $vendor $@ -o ../../bin/vors-client +tags="nolibopusfile" +[ -z "$1" ] || tags="$tags,$1" +go build -C cmd/vad $strip $vendor -o ../../bin/vors-vad +go build -C cmd/keygen $strip $vendor -o ../../bin/vors-keygen +go build -C cmd/server $strip $vendor -o ../../bin/vors-server +go build -C cmd/client -tags $tags $strip $vendor -o ../../bin/vors-client