diff --git a/src/modules/module-netjack2-driver.c b/src/modules/module-netjack2-driver.c index 633374bac..da7236b1d 100644 --- a/src/modules/module-netjack2-driver.c +++ b/src/modules/module-netjack2-driver.c @@ -810,6 +810,20 @@ static void update_timer(struct impl *impl, uint64_t timeout) pw_loop_update_timer(impl->main_loop, impl->timer, &value, &interval, false); } +static bool encoding_supported(uint32_t encoder) +{ + switch (encoder) { + case NJ2_ENCODER_FLOAT: + case NJ2_ENCODER_INT: + return true; +#ifdef HAVE_OPUS + case NJ2_ENCODER_OPUS: + return true; +#endif + } + return false; +} + static int handle_follower_setup(struct impl *impl, struct nj2_session_params *params, struct sockaddr_storage *addr, socklen_t addr_len) { @@ -829,9 +843,7 @@ static int handle_follower_setup(struct impl *impl, struct nj2_session_params *p peer->params.recv_midi_channels < 0 || peer->params.sample_rate == 0 || peer->params.period_size == 0 || - (peer->params.sample_encoder != NJ2_ENCODER_FLOAT && - peer->params.sample_encoder != NJ2_ENCODER_OPUS && - peer->params.sample_encoder != NJ2_ENCODER_INT)) { + !encoding_supported(peer->params.sample_encoder)) { pw_log_warn("invalid follower setup"); return -EINVAL; } diff --git a/src/modules/module-netjack2-manager.c b/src/modules/module-netjack2-manager.c index b054b6d4c..7b9d26a41 100644 --- a/src/modules/module-netjack2-manager.c +++ b/src/modules/module-netjack2-manager.c @@ -60,7 +60,7 @@ * placed per stream. * - `netjack2.sample-rate`: the sample rate to use, default 48000 * - `netjack2.period-size`: the buffer size to use, default 1024 - * - `netjack2.encoding`: the encoding, float|opus, default float + * - `netjack2.encoding`: the encoding, float|opus|int, default float * - `netjack2.kbps`: the number of kilobits per second when encoding, default 64 * - `audio.channels`: the number of audio ports. Can also be added to the stream props. * - `midi.ports`: the number of midi ports. Can also be added to the stream props. @@ -1327,15 +1327,19 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) DEFAULT_PERIOD_SIZE); if ((str = pw_properties_get(impl->props, "netjack2.encoding")) == NULL) str = DEFAULT_ENCODING; - if (spa_streq(str, "float")) + if (spa_streq(str, "float")) { impl->encoding = NJ2_ENCODER_FLOAT; + } else if (spa_streq(str, "opus")) { #ifdef HAVE_OPUS - else if (spa_streq(str, "opus")) impl->encoding = NJ2_ENCODER_OPUS; +#else + pw_log_error("OPUS support is disabled"); + res = -EINVAL; + goto error; #endif - else if (spa_streq(str, "int")) + } else if (spa_streq(str, "int")) { impl->encoding = NJ2_ENCODER_INT; - else { + } else { pw_log_error("invalid netjack2.encoding '%s'", str); res = -EINVAL; goto error;