Projects
home:zaitor:branches:Essentials
pipewire-aptx
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Difference Between Revision 3 and
Essentials
/
pipewire-aptx
View file
pipewire-aptx.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Tue Mar 17 13:39:27 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.6.2 + +------------------------------------------------------------------- Thu Mar 12 09:27:02 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.6.1
View file
pipewire-aptx.spec
Changed
@@ -8,7 +8,7 @@ %define minimum_version 1.6.0 Name: pipewire-aptx -Version: 1.6.1 +Version: 1.6.2 Release: 0 Summary: PipeWire Bluetooth aptX codec plugin License: MIT
View file
_service:download_files:pipewire-1.6.1.tar.bz2/NEWS -> _service:download_files:pipewire-1.6.2.tar.bz2/NEWS
Changed
@@ -1,3 +1,39 @@ +# PipeWire 1.6.2 (2026-03-16) + +This is a bugfix release that is API and ABI compatible with the previous +1.6.x releases. + +## Highlights + - Fix a potential crash when the wrong memory was freed. + - Fix a optimization with shared memory over some links that could + cause errors later on. + - Fix SOFA filter and default control input in LADSPA and LV2. + - Some other small fixes and improvements. + + +## PipeWire + - Remove an optimization to skip share mem in links, it causes problems + later on. (#5159) + +## Modules + - Don't try to free invalid memory or close invalid fds when the client + aborted before allocating buffer memory. (#5162) + +## SPA + - support ACP_IGNORE_DB in udev. + - Use 0x as a prefix for hex values. + - Mark Props as write-only in libcamera. + - Small optimization in the audio mixer. + - Fix initialization of control properties for SOFA and biquads in the + filter-graph. (#5152) + - Fix min/max default values for LADSPA and LV2. + +## JACK + - Fix jack_port_type_id(). Return values that are compatible with JACK1/2. + + +Older versions: + # PipeWire 1.6.1 (2026-03-09) This is a bugfix release that is API and ABI compatible with the previous @@ -28,8 +64,6 @@ ## Tools - Fix playback of encoded formats. (#5155) -Older versions: - # PipeWire 1.6.0 (2026-02-19) This is the 1.6 release that is API and ABI compatible with previous
View file
_service:download_files:pipewire-1.6.1.tar.bz2/doc/DoxygenLayout.xml -> _service:download_files:pipewire-1.6.2.tar.bz2/doc/DoxygenLayout.xml
Changed
@@ -44,6 +44,7 @@ <tab type="usergroup" title="PipeWire Versions"> <tab type="user" url="https://docs.pipewire.org/1.2/" title="1.2.x"/> <tab type="user" url="https://docs.pipewire.org/1.4/" title="1.4.x"/> + <tab type="user" url="https://docs.pipewire.org/1.6/" title="1.6.x"/> <tab type="user" url="https://docs.pipewire.org/devel/" title="Development"/> </tab> </navindex>
View file
_service:download_files:pipewire-1.6.1.tar.bz2/doc/dox/internals/dma-buf.dox -> _service:download_files:pipewire-1.6.2.tar.bz2/doc/dox/internals/dma-buf.dox
Changed
@@ -349,10 +349,10 @@ paramsn_params++ = spa_pod_builder_pop(&b, &f); ``` -After having received the first \ref SPA_PARAM_PeerCapability param, if it contained the \ref -PW_CAPABILITY_DEVICE_ID set to `true`, the full set of formats can be sent using \ref -pw_stream_update_params following by activating the stream using -`pw_stream_set_active(stream, true)`. +After having received the first \ref SPA_PARAM_PeerCapability param, if it contained the +\ref PW_CAPABILITY_DEVICE_ID_NEGOTIATION set to a supported API version number, the full +set of formats can be sent using \ref pw_stream_update_params following by activating the +stream usina supported API version numberstream_set_active(stream, true)`. Note that the first \ref SPA_PARAM_Format received may be the result of the initial format negotian with bare minimum parameters, and will be superseded by the result of the format
View file
_service:download_files:pipewire-1.6.1.tar.bz2/meson.build -> _service:download_files:pipewire-1.6.2.tar.bz2/meson.build
Changed
@@ -1,5 +1,5 @@ project('pipewire', 'c' , - version : '1.6.1', + version : '1.6.2', license : 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' , meson_version : '>= 0.61.1', default_options : 'warning_level=3', @@ -116,6 +116,7 @@ '-Werror=old-style-definition', '-Werror=missing-parameter-type', '-Werror=strict-prototypes', + '-Werror=discarded-qualifiers', add_project_arguments(cc.get_supported_arguments(cc_flags), language: 'c') add_project_arguments(cc_native.get_supported_arguments(cc_flags),
View file
_service:download_files:pipewire-1.6.1.tar.bz2/pipewire-jack/src/meson.build -> _service:download_files:pipewire-1.6.2.tar.bz2/pipewire-jack/src/meson.build
Changed
@@ -55,7 +55,7 @@ pipewire_jackserver_sources, soversion : soversion, version : libjackversion, - c_args : pipewire_jack_c_args, + c_args : pipewire_jack_c_args + '-DLIBJACKSERVER', include_directories : configinc, jack_inc, dependencies : pipewire_dep, mathlib, install : true,
View file
_service:download_files:pipewire-1.6.1.tar.bz2/pipewire-jack/src/pipewire-jack.c -> _service:download_files:pipewire-1.6.2.tar.bz2/pipewire-jack/src/pipewire-jack.c
Changed
@@ -4887,9 +4887,21 @@ c->activation->pending_sync = true; spa_list_for_each(o, &c->context.objects, link) { +#if !defined(LIBJACKSERVER) if (o->type != INTERFACE_Port || o->port.port == NULL || o->port.port->client != c || !o->port.port->valid) continue; +#else + /* emits all foreign active ports, skips own (already announced via jack_port_register) */ + if (o->type != INTERFACE_Port || o->removed) + continue; + /* own ports are handled by jack_port_register */ + if (o->port.port != NULL && o->port.port->client == c) + continue; + /* only announce ports whose node is active */ + if (o->port.node != NULL && !node_is_active(c, o->port.node)) + continue; +#endif o->registered = 0; queue_notify(c, NOTIFY_TYPE_PORTREGISTRATION, o, 1, NULL); } @@ -5325,7 +5337,7 @@ pw_thread_loop_lock(c->context.loop); str = pw_properties_get(c->props, PW_KEY_NODE_GROUP); if (str != NULL) { - char *p = strstr(str, ",pipewire.freewheel"); + const char *p = strstr(str, ",pipewire.freewheel"); if (p == NULL) p = strstr(str, "pipewire.freewheel"); if (p == NULL && onoff) @@ -6012,7 +6024,16 @@ return_val_if_fail(o != NULL, 0); if (o->type != INTERFACE_Port) return TYPE_ID_OTHER; - return o->port.type_id; + + /* map internal type IDs to jack1/jack2 compatible public values */ + switch (o->port.type_id) { + case TYPE_ID_AUDIO: return 0; + case TYPE_ID_MIDI: + case TYPE_ID_OSC: + case TYPE_ID_UMP: return 1; /* all MIDI variants map to 1 */ + case TYPE_ID_VIDEO: return 3; /* video maps to 3 */ + default: return o->port.type_id; + } } SPA_EXPORT
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/alsa/alsa-udev.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/alsa/alsa-udev.c
Changed
@@ -538,6 +538,9 @@ if ((str = udev_device_get_property_value(udev_device, "ACP_PROFILE_SET")) && *str) itemsn_items++ = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PROFILE_SET, str); + if ((str = udev_device_get_property_value(udev_device, "ACP_IGNORE_DB")) && *str) + itemsn_items++ = SPA_DICT_ITEM_INIT(SPA_KEY_API_ALSA_IGNORE_DB, str); + if ((str = udev_device_get_property_value(udev_device, "SOUND_CLASS")) && *str) itemsn_items++ = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_CLASS, str);
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/audiomixer/audiomixer.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/audiomixer/audiomixer.c
Changed
@@ -725,7 +725,7 @@ port->io0 = info->data; port->io1 = info->data; } - if (!port->active) { + if (port->direction == SPA_DIRECTION_INPUT && !port->active) { spa_list_append(&info->impl->mix_list, &port->mix_link); port->active = true; }
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/audiomixer/mixer-dsp.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/audiomixer/mixer-dsp.c
Changed
@@ -718,7 +718,7 @@ port->io0 = info->data; port->io1 = info->data; } - if (!port->active) { + if (port->direction == SPA_DIRECTION_INPUT && !port->active) { spa_list_append(&info->impl->mix_list, &port->mix_link); port->active = true; }
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/bluez5/bluez5-dbus.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/bluez5/bluez5-dbus.c
Changed
@@ -720,14 +720,12 @@ /** Get feature name at \a i, or NULL if uuid doesn't match */ static const char *bap_features_get_name(struct bap_features *feat, size_t i, const char *uuid) { - char *pos; - if (i >= feat->dict.n_items) return NULL; if (!spa_streq(feat->dict.itemsi.value, uuid)) return NULL; - pos = strchr(feat->dict.itemsi.key, ':'); + const char *pos = strchr(feat->dict.itemsi.key, ':'); if (!pos) return NULL; return pos + 1; @@ -1336,7 +1334,6 @@ static int parse_modalias(const char *modalias, uint16_t *source, uint16_t *vendor, uint16_t *product, uint16_t *version) { - char *pos; unsigned int src, i, j, k; if (spa_strstartswith(modalias, "bluetooth:")) @@ -1346,7 +1343,7 @@ else return -EINVAL; - pos = strchr(modalias, ':'); + const char *pos = strchr(modalias, ':'); if (pos == NULL) return -EINVAL;
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/filter-graph/filter-graph.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/filter-graph/filter-graph.c
Changed
@@ -1035,8 +1035,8 @@ } } else if (SPA_FGA_IS_PORT_CONTROL(fp->flags)) { if (SPA_FGA_IS_PORT_INPUT(fp->flags)) { - spa_log_info(impl->log, "using port %lu ('%s') as control %d", p, - fp->name, desc->n_control); + spa_log_info(impl->log, "using port %lu ('%s') as control %d %f/%f/%f", p, + fp->name, desc->n_control, fp->def, fp->min, fp->max); desc->controldesc->n_control++ = p; } else if (SPA_FGA_IS_PORT_OUTPUT(fp->flags)) { @@ -1622,6 +1622,7 @@ goto error; } } + node->control_changed = true; } /* then link ports */
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/filter-graph/plugin_ladspa.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/filter-graph/plugin_ladspa.c
Changed
@@ -7,6 +7,7 @@ #include <dlfcn.h> #include <math.h> #include <limits.h> +#include <float.h> #include <spa/utils/result.h> #include <spa/utils/defs.h> @@ -113,8 +114,14 @@ LADSPA_PortRangeHintDescriptor hint = d->PortRangeHintsp.HintDescriptor; LADSPA_Data lower, upper; - lower = d->PortRangeHintsp.LowerBound; - upper = d->PortRangeHintsp.UpperBound; + if (hint & LADSPA_HINT_BOUNDED_BELOW) + lower = d->PortRangeHintsp.LowerBound; + else + lower = -FLT_MAX; + if (hint & LADSPA_HINT_BOUNDED_ABOVE) + upper = d->PortRangeHintsp.UpperBound; + else + upper = FLT_MAX; port->hint = 0; if (hint & LADSPA_HINT_TOGGLED)
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/filter-graph/plugin_lv2.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/filter-graph/plugin_lv2.c
Changed
@@ -560,6 +560,17 @@ fp->min = minsi; fp->max = maxesi; fp->def = controlsi; + + if (isnan(fp->min)) + fp->min = -FLT_MAX; + if (isnan(fp->max)) + fp->max = FLT_MAX; + if (isnan(fp->def)) + fp->def = 0.0f; + if (fp->max <= fp->min) + fp->max = FLT_MAX; + if (fp->def <= fp->min) + fp->min = -FLT_MAX; } return &desc->desc; }
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/libcamera/libcamera-source.cpp -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/libcamera/libcamera-source.cpp
Changed
@@ -2163,7 +2163,7 @@ &impl_node, this); paramsNODE_PropInfo = SPA_PARAM_INFO(SPA_PARAM_PropInfo, SPA_PARAM_INFO_READ); - paramsNODE_Props = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_READWRITE); + paramsNODE_Props = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_WRITE); paramsNODE_EnumFormat = SPA_PARAM_INFO(SPA_PARAM_EnumFormat, SPA_PARAM_INFO_READ); paramsNODE_Format = SPA_PARAM_INFO(SPA_PARAM_Format, SPA_PARAM_INFO_WRITE);
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/support/logger.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/support/logger.c
Changed
@@ -73,7 +73,7 @@ char timestamp18 = {0}; char topicstr32 = {0}; char filename64 = {0}; - char location1000 + RESERVED_LENGTH, *p, *s; + char location1000 + RESERVED_LENGTH, *p; static const char * const levels = { "-", "E", "W", "I", "D", "T", "*T*" }; const char *prefix = "", *suffix = ""; int size, len; @@ -118,7 +118,7 @@ if (impl->line && line != 0) { - s = strrchr(file, '/'); + const char *s = strrchr(file, '/'); spa_scnprintf(filename, sizeof(filename), "%16.16s:%5i %s()", s ? s + 1 : file, line, func); }
View file
_service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/v4l2/v4l2-device.c -> _service:download_files:pipewire-1.6.2.tar.bz2/spa/plugins/v4l2/v4l2-device.c
Changed
@@ -98,9 +98,9 @@ (this->dev.cap.version >> 8) & 0xFF, (this->dev.cap.version) & 0xFF); ADD_ITEM(SPA_KEY_API_V4L2_CAP_VERSION, version); - snprintf(capabilities, sizeof(capabilities), "%08x", this->dev.cap.capabilities); + snprintf(capabilities, sizeof(capabilities), "0x%08x", this->dev.cap.capabilities); ADD_ITEM(SPA_KEY_API_V4L2_CAP_CAPABILITIES, capabilities); - snprintf(device_caps, sizeof(device_caps), "%08x", this->dev.cap.device_caps); + snprintf(device_caps, sizeof(device_caps), "0x%08x", this->dev.cap.device_caps); ADD_ITEM(SPA_KEY_API_V4L2_CAP_DEVICE_CAPS, device_caps); #undef ADD_ITEM info.props = &SPA_DICT_INIT(items, n_items);
View file
_service:download_files:pipewire-1.6.1.tar.bz2/src/modules/module-client-node/client-node.c -> _service:download_files:pipewire-1.6.2.tar.bz2/src/modules/module-client-node/client-node.c
Changed
@@ -264,7 +264,8 @@ case SPA_DATA_DmaBuf: case SPA_DATA_SyncObj: pw_log_debug("%p: close fd:%d", impl, (int)d->fd); - close(d->fd); + if (d->fd != -1) + close(d->fd); break; } } @@ -864,8 +865,11 @@ memcpy(&b->datasj, d, sizeof(struct spa_data)); - if (flags & SPA_NODE_BUFFERS_FLAG_ALLOC) + if (flags & SPA_NODE_BUFFERS_FLAG_ALLOC) { + b->datasj.fd = -1; + b->datasj.data = SPA_UINT32_TO_PTR(SPA_ID_INVALID); continue; + } switch (d->type) { case SPA_DATA_DmaBuf:
View file
_service:download_files:pipewire-1.6.1.tar.bz2/src/pipewire/capabilities.h -> _service:download_files:pipewire-1.6.2.tar.bz2/src/pipewire/capabilities.h
Changed
@@ -21,11 +21,14 @@ * \{ */ -/**< Link capable of device ID negotiation. The value is either "true" or "false" */ +/**< Link capable of device ID negotiation. The value is to the version of the + * API specification. */ #define PW_CAPABILITY_DEVICE_ID_NEGOTIATION "pipewire.device-id-negotiation" /**< Link with device ID negotition capability supports negotiating with - * provided list of devices. The value consists of a JSON encoded string array - * of base64 encoded dev_t values. */ + * a specific set of devices. The value of API version 1 consists of a JSON + * object containing a single key "available-devices" that contain a list of + * hexadecimal encoded `dev_t` device IDs. + */ #define PW_CAPABILITY_DEVICE_IDS "pipewire.device-ids" #define PW_CAPABILITY_DEVICE_ID "pipewire.device-id" /**< Link capable of device Id negotation */
View file
_service:download_files:pipewire-1.6.1.tar.bz2/src/pipewire/impl-link.c -> _service:download_files:pipewire-1.6.2.tar.bz2/src/pipewire/impl-link.c
Changed
@@ -701,7 +701,10 @@ /* always enable async mode */ alloc_flags = PW_BUFFERS_FLAG_ASYNC; - if (output->node->remote || input->node->remote) + /* shared mem can only be used if both nodes are in the same process + * and we are sure that the buffers are never going to be shared + * because of the exclusive flag */ + if (output->node->remote || input->node->remote || !output->exclusive) alloc_flags |= PW_BUFFERS_FLAG_SHARED; if (output->node->driver)
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.