commit: 791a1edd422a657a8dc61f166db003d6c2c61161
Author: Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 15 12:40:32 2017 +0000
Commit: Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Thu Jun 15 12:43:25 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=791a1edd
media-sound/sonic-visualiser: regenerate capnproto files
Package-Manager: Portage-2.3.6, Repoman-2.3.2
media-sound/sonic-visualiser/files/piper.capnp | 364 +++++++++++++++++++++
.../sonic-visualiser/sonic-visualiser-3.0.2.ebuild | 8 +
2 files changed, 372 insertions(+)
diff --git a/media-sound/sonic-visualiser/files/piper.capnp
b/media-sound/sonic-visualiser/files/piper.capnp
new file mode 100644
index 00000000000..6e99ff6849d
--- /dev/null
+++ b/media-sound/sonic-visualiser/files/piper.capnp
@@ -0,0 +1,364 @@
+
+# Piper audio feature extraction: schema for low-level operation
+#
+# This file is formatted to 130 characters width, in order to fit the
+# comments next to the schema definitions.
+#
+# Copyright (c) 2015-2017 Queen Mary, University of London, provided
+# under a BSD-style licence. See the file COPYING for details.
+
+@0xc4b1c6c44c999206;
+
+using Cxx = import "/capnp/c++.capnp";
+$Cxx.namespace("piper");
+
+struct Basic {
+ # Basic metadata common to many Piper structures.
+
+ identifier @0 :Text; # A computer-readable
string. Must match the regex /^[a-zA-Z0-9_-]+$/.
+ name @1 :Text; # A short human-readable
name or label. Must be present.
+ description @2 :Text; # An optional human-readable
descriptive text that may accompany the name.
+}
+
+struct ParameterDescriptor {
+ # Properties of an adjustable parameter. A parameter's value is just a
single
+ # float, but the descriptor explains how to interpret and present that
value.
+ # A Piper feature extractor has a static list of parameters. The
properties of
+ # a given parameter never change, in contrast to output descriptors, which
+ # may have different properties depending on the configuration of the
extractor.
+
+ basic @0 :Basic; # Basic metadata about the
parameter.
+ unit @1 :Text; # Human-recognisable unit of
the parameter (e.g. Hz). May be left empty.
+ minValue @2 :Float32 = 0.0; # Minimum value. Must be
provided.
+ maxValue @3 :Float32 = 0.0; # Maximum value. Must be
provided.
+ defaultValue @4 :Float32 = 0.0; # Default if the parameter
is not set to anything else. Must be provided.
+ isQuantized @5 :Bool = false; # True if parameter values
are quantized to a particular resolution.
+ quantizeStep @6 :Float32 = 0.0; # Quantization resolution,
if isQuantized.
+ valueNames @7 :List(Text) = []; # Optional human-readable
labels for the values, if isQuantized.
+}
+
+enum SampleType {
+ # How returned features are spaced on the input timeline.
+
+ oneSamplePerStep @0; # Each process input returns
a feature aligned with that input's timestamp.
+ fixedSampleRate @1; # Features are equally
spaced at a given sample rate.
+ variableSampleRate @2; # Features have their own
individual timestamps.
+}
+
+struct StaticOutputDescriptor {
+
+ # Properties of an output, that is, a single stream of features
+ # produced in response to process and finish requests. A feature
+ # extractor may have any number of outputs, and it always
+ # calculates and returns features from all of them when
+ # processing; this is useful in cases where more than one feature
+ # can be easily calculated using a single method.
+ #
+ # This structure contains the properties of an output that are
+ # static, i.e. that do not depend on the parameter values provided
+ # at configuration, excluding the Basic struct parameters like id
+ # and description. The Basic struct properties are not included
+ # for historical reasons: they were already referenced separately
+ # in the OutputDescriptor and ExtractorStaticData before this
+ # struct was introduced.
+
+ typeURI @0 :Text; # URI indicating the sort of
feature that this output returns (see docs).
+}
+
+struct ConfiguredOutputDescriptor {
+ # Properties of an output, that is, a single stream of features produced
+ # in response to process and finish requests. A feature extractor may
+ # have any number of outputs, and it always calculates and returns features
+ # from all of them when processing; this is useful in cases where more
+ # than one feature can be easily calculated using a single method.
+ # This structure contains the properties of an output that are not static,
+ # i.e. that may depend on the parameter values provided at configuration.
+
+ unit @0 :Text; # Human-recognisable unit of
the bin values in output features. May be empty.
+ hasFixedBinCount @1 :Bool = false; # True if this output has an
equal number of values in each returned feature.
+ binCount @2 :Int32 = 0; # Number of values per
feature for this output, if hasFixedBinCount.
+ binNames @3 :List(Text) = []; # Optional human-readable
labels for the value bins, if hasFixedBinCount.
+ hasKnownExtents @4 :Bool = false; # True if all feature values
fall within the same fixed min/max range.
+ minValue @5 :Float32 = 0.0; # Minimum value in range for
any value from this output, if hasKnownExtents.
+ maxValue @6 :Float32 = 0.0; # Maximum value in range for
any value from this output, if hasKnownExtents.
+ isQuantized @7 :Bool = false; # True if feature values are
quantized to a particular resolution.
+ quantizeStep @8 :Float32 = 0.0; # Quantization resolution,
if isQuantized.
+ sampleType @9 :SampleType; # How returned features from
this output are spaced on the input timeline.
+ sampleRate @10 :Float32 = 0.0; # Sample rate (features per
second) if sampleType == fixedSampleRate.
+ hasDuration @11 :Bool = false; # True if features returned
from this output will have a duration.
+}
+
+struct OutputDescriptor {
+ # All the properties of an output, both static (the basic metadata and
static
+ # descriptor) and potentially dependent on configuration parameters (the
+ # configured descriptor).
+
+ basic @0 :Basic; # Basic metadata about the
output.
+ configured @1 :ConfiguredOutputDescriptor; # Properties of the
output that may depend on configuration parameters.
+ static @2 :StaticOutputDescriptor; # Properties (other
than Basic) that do not depend on parameters.
+}
+
+enum InputDomain {
+ # Whether a feature extractor requires time-domain audio input (i.e.
+ # "normal" or "unprocessed" audio samples) or frequency-domain input
+ # (i.e. resulting from windowed, usually overlapping, short-time
+ # Fourier transforms).
+
+ timeDomain @0; # The plugin requires
time-domain audio samples as input.
+ frequencyDomain @1; # The plugin requires input
to have been pre-processed using windowed STFTs.
+}
+
+struct ExtractorStaticData {
+ # Static properties of a feature extractor. That is, metadata about the
+ # extractor that are the same regardless of how you configure or run it.
+
+ key @0 :Text; # String that "globally"
identifies the extractor, used to load it (see docs).
+ basic @1 :Basic; # Basic metadata about the
extractor.
+ maker @2 :Text; # Human-readable text naming
the author or vendor of the extractor.
+ rights @3 :Text; # Human-readable summary of
copyright and/or licensing terms for the extractor.
+ version @4 :Int32; # Version number of
extractor; must increase if new algorithm changes results.
+ category @5 :List(Text); # List of general->specific
category labels for this extractor (see docs).
+ minChannelCount @6 :Int32; # Minimum number of input
channels of audio this extractor can accept.
+ maxChannelCount @7 :Int32; # Maximum number of input
channels of audio this extractor can accept.
+ parameters @8 :List(ParameterDescriptor); # List of
configurable parameter properties for the feature extractor.
+ programs @9 :List(Text); # List of predefined
programs. For backward-compatibility, not recommended.
+ inputDomain @10 :InputDomain; # Whether the extractor
requires time-domain or frequency-domain input audio.
+ basicOutputInfo @11 :List(Basic); # Basic metadata about all
of the outputs of the extractor.
+
+ struct SOPair {
+ # A mapping between output identifier and static descriptor for
+ # that output.
+
+ output @0 :Text; # Output id, matching the
output's descriptor's basic identifier.
+ static @1 :StaticOutputDescriptor;
+ }
+
+ staticOutputInfo @12 :List(SOPair); # Static descriptors for all
outputs that have any static metadata.
+}
+
+struct RealTime {
+ # Time structure. When used as a timestamp, this is relative to "start
+ # of audio".
+
+ sec @0 :Int32 = 0; # Number of seconds.
+ nsec @1 :Int32 = 0; # Number of nanoseconds.
Must have same sign as sec unless sec == 0.
+}
+
+struct ProcessInput {
+ # Audio and timing input data provided to a process request.
+
+ inputBuffers @0 :List(List(Float32)); # A single block of audio
data (time or frequency domain) for each channel.
+ timestamp @1 :RealTime; # Time of start of block
(time-domain) or "centre" of it (frequency-domain).
+}
+
+struct Feature {
+ # A single feature calculated and returned from a process or finish
request.
+
+ hasTimestamp @0 :Bool = false; # True if feature has a
timestamp. Must be true for a variableSampleRate output.
+ timestamp @1 :RealTime; # Timestamp of feature, if
hasTimestamp.
+ hasDuration @2 :Bool = false; # True if feature has a
duration. Must be true if output's hasDuration is true.
+ duration @3 :RealTime; # Duration of feature, if
hasDuration.
+ label @4 :Text; # Optional human-readable
text attached to feature.
+ featureValues @5 :List(Float32) = []; # The feature values
themselves (of size binCount, if output hasFixedBinCount).
+}
+
+struct FeatureSet {
+ # The set of all features, across all outputs, calculated and returned from
+ # a single process or finish request.
+
+ struct FSPair {
+ # A mapping between output identifier and ordered list of features for
+ # that output.
+
+ output @0 :Text; # Output id, matching the
output's descriptor's basic identifier.
+ features @1 :List(Feature) = []; # Features calculated for
that output during the current request, in time order.
+ }
+
+ featurePairs @0 :List(FSPair); # The feature lists for all
outputs for which any features have been calculated.
+}
+
+struct Framing {
+ # Determines how audio should be split up into individual buffers for
input.
+ # If the feature extractor accepts frequency-domain input, then this
+ # applies prior to the STFT transform.
+ #
+ # These values are sometimes mandatory, but in other contexts one or both
may
+ # be set to zero to mean "don't care". See documentation for structures
that
+ # include a framing field for details.
+
+ blockSize @0 :Int32; # Number of time-domain
audio samples per buffer (on each channel).
+ stepSize @1 :Int32; # Number of samples to
advance between buffers: equals blockSize for no overlap.
+}
+
+struct Configuration {
+ # Bundle of parameter values and other configuration data for a feature-
+ # extraction procedure.
+
+ struct PVPair {
+ # A mapping between parameter identifier and value.
+
+ parameter @0 :Text; # Parameter id, matching the
parameter's descriptor's basic identifier.
+ value @1 :Float32; # Value to set parameter to
(within constraints given in parameter descriptor).
+ }
+
+ parameterValues @0 :List(PVPair); # Values for all parameters,
or at least any that are to change from defaults.
+ currentProgram @1 :Text; # Selection of predefined
program. For backward-compatibility, not recommended.
+ channelCount @2 :Int32; # Number of audio channels
of input.
+ framing @3 :Framing; # Step and block size for
framing the input.
+}
+
+enum AdapterFlag {
+ # Flags that may be used when requesting a server to load a feature
+ # extractor, to ask the server to do some of the work of framing and input
+ # conversion instead of leaving it to the client side. These affect the
+ # apparent behaviour of the loaded extractor.
+
+ adaptInputDomain @0; # Input-domain conversion,
so the extractor always expects time-domain input.
+ adaptChannelCount @1; # Channel mixing or
duplication, so any number of input channels is acceptable.
+ adaptBufferSize @2; # Framing, so the extractor
accepts any blockSize of non-overlapping buffers.
+}
+
+const adaptAllSafe :List(AdapterFlag) =
+ [ adaptInputDomain, adaptChannelCount ];
+ # The set of adapter flags that can always be applied, leaving results
unchanged.
+
+const adaptAll :List(AdapterFlag) =
+ [ adaptInputDomain, adaptChannelCount, adaptBufferSize ];
+ # The set of adapter flags that may cause "equivalent" results to be
returned (see documentation).
+
+struct ListRequest {
+ # Request a server to provide a list of available feature extractors.
+
+ from @0 :List(Text); # If non-empty, provide only
extractors found in the given list of "libraries".
+}
+
+struct ListResponse {
+ # Response to a successful list request.
+
+ available @0 :List(ExtractorStaticData); # List of static
data about available feature extractors.
+}
+
+struct LoadRequest {
+ # Request a server to load a feature extractor and return a handle to it.
+
+ key @0 :Text; # Key as found in the
extractor's static data structure.
+ inputSampleRate @1 :Float32; # Sample rate for input
audio. Properties of the extractor may depend on this.
+ adapterFlags @2 :List(AdapterFlag); # Set of optional flags to
make any framing and input conversion requests.
+}
+
+struct LoadResponse {
+ # Response to a successful load request.
+
+ handle @0 :Int32; # Handle to be used to refer
to the loaded feature extractor in future requests.
+ staticData @1 :ExtractorStaticData; # Static data about this
feature extractor, identical to that in list response.
+ defaultConfiguration @2 :Configuration; # Extractor's default
parameter values and preferred input framing.
+}
+
+struct ConfigurationRequest {
+ # Request a server to configure a loaded feature extractor and prepare
+ # it for use. This request must be carried out on a feature extractor
+ # before any process request can be made.
+
+ handle @0 :Int32; # Handle as returned in the
load response from the loading of this extractor.
+ configuration @1 :Configuration; # Bundle of parameter values
to set, and client's preferred input framing.
+}
+
+struct ConfigurationResponse {
+ # Response to a successful configuration request.
+
+ handle @0 :Int32; # Handle of extractor, as
passed in the configuration request.
+ outputs @1 :List(OutputDescriptor); # Full set of
properties of all outputs following configuration.
+ framing @2 :Framing; # Input framing that must be
used for subsequent process requests.
+}
+
+struct ProcessRequest {
+ # Request a server to process a buffer of audio using a loaded and
+ # configured feature extractor.
+
+ handle @0 :Int32; # Handle as returned in the
load response from the loading of this extractor.
+ processInput @1 :ProcessInput; # Audio in the input domain,
with framing as in the configuration response.
+}
+
+struct ProcessResponse {
+ # Response to a successful process request.
+
+ handle @0 :Int32; # Handle of extractor, as
passed in the process request.
+ features @1 :FeatureSet; # All features across all
outputs calculated during this process request.
+}
+
+struct FinishRequest {
+ # Request a server to finish processing and unload a loaded feature
+ # extractor. This request may be made at any time -- the extractor does
+ # not have to have been configured or used. The extractor handle cannot
+ # be used again with this server afterwards.
+
+ handle @0 :Int32; # Handle as returned in the
load response from the loading of this extractor.
+}
+
+struct FinishResponse {
+ # Response to a successful finish request.
+
+ handle @0 :Int32; # Handle of extractor, as
passed in the finish request. May not be used again.
+ features @1 :FeatureSet; # Features the extractor has
calculated now that it knows all input has ended.
+}
+
+struct Error {
+ # Response to any request that fails.
+
+ code @0 :Int32; # Error code.
+ message @1 :Text; # Error message.
+}
+
+struct RpcRequest {
+ # Request bundle for use when using Cap'n Proto serialisation without
+ # Cap'n Proto RPC layer. For Cap'n Proto RPC, see piper.rpc.capnp.
+
+ id :union {
+ # Identifier used solely to associate a response packet with its
+ # originating request. Server does not examine the contents of this,
+ # it just copies the request id structure into the response.
+
+ number @0 :Int32;
+ tag @1 :Text;
+ none @2 :Void;
+ }
+
+ request :union {
+ # For more details, see the documentation for the individual
+ # request structures.
+
+ list @3 :ListRequest; # Provide a list of available
feature extractors.
+ load @4 :LoadRequest; # Load a feature extractor
and return a handle to it.
+ configure @5 :ConfigurationRequest; # Configure a loaded feature
extractor, set parameters, and prepare it for use.
+ process @6 :ProcessRequest; # Process a single fixed-size
buffer of audio and return calculated features.
+ finish @7 :FinishRequest; # Get any remaining features
and unload the extractor.
+ }
+}
+
+struct RpcResponse {
+ # Response bundle for use when using Cap'n Proto serialisation without
+ # Cap'n Proto RPC layer. For Cap'n Proto RPC, see piper.rpc.capnp.
+
+ id :union {
+ # Identifier used solely to associate a response packet with its
+ # originating request. Server does not examine the contents of this,
+ # it just copies the request id structure into the response.
+
+ number @0 :Int32;
+ tag @1 :Text;
+ none @2 :Void;
+ }
+
+ response :union {
+ # For more details, see the documentation for the individual
+ # response structures.
+
+ error @3 :Error; # The request (of whatever
type) failed.
+ list @4 :ListResponse; # List succeeded: here is
static data about the requested extractors.
+ load @5 :LoadResponse; # Load succeeded: here is a
handle for the loaded extractor.
+ configure @6 :ConfigurationResponse;# Configure succeeded: ready
to process, here are values such as block size.
+ process @7 :ProcessResponse; # Process succeeded: here are
all features calculated from this input block.
+ finish @8 :FinishResponse; # Finish succeeded: extractor
unloaded, here are all remaining features.
+ }
+}
+
diff --git a/media-sound/sonic-visualiser/sonic-visualiser-3.0.2.ebuild
b/media-sound/sonic-visualiser/sonic-visualiser-3.0.2.ebuild
index 30abc7213af..b15eff6a367 100644
--- a/media-sound/sonic-visualiser/sonic-visualiser-3.0.2.ebuild
+++ b/media-sound/sonic-visualiser/sonic-visualiser-3.0.2.ebuild
@@ -66,6 +66,14 @@ src_prepare() {
use pulseaudio || sv_disable_opt libpulse
eautoreconf
+
+ # Those need to be regenerated as they must match current capnproto
version
+ einfo "Regenerating piper capnproto files"
+ rm -f piper-cpp/vamp-capnp/piper.capnp.* || die
+ mkdir -p piper/capnp || die
+ cp "${FILESDIR}/piper.capnp" piper/capnp/ || die
+ cd piper-cpp
+ emake vamp-capnp/piper.capnp.h
}
src_configure() {