Projects
Essentials
pipewire-aptx
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 63
View file
pipewire-aptx.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Thu Mar 12 09:27:02 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.6.1 + +------------------------------------------------------------------- Thu Feb 19 11:24:56 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.6.0
View file
pipewire-aptx.spec
Changed
@@ -8,7 +8,7 @@ %define minimum_version 1.6.0 Name: pipewire-aptx -Version: 1.6.0 +Version: 1.6.1 Release: 0 Summary: PipeWire Bluetooth aptX codec plugin License: MIT
View file
_service:download_files:pipewire-1.6.0.tar.bz2/NEWS -> _service:download_files:pipewire-1.6.1.tar.bz2/NEWS
Changed
@@ -1,3 +1,35 @@ +# PipeWire 1.6.1 (2026-03-09) + +This is a bugfix release that is API and ABI compatible with the previous +1.6.x releases. + +## Highlights + - Fix socket activation, which could cause a failure to start PipeWire in + some setups. + - Fix crashes in many JACK apps when nodes/ports are quickly added/removed + such as when there are notifications (like when changing the volume in + KDE). + - Fix playback of encoded formats in pw-cat again. + - Some other smaller fixes and improvements. + +## Modules + - Fix socket activation. (#5140) + - Remove node.link-group from driver nodes. + +## SPA + - Fix the libcamera stop sequence. + +## JACK + - Never return NULL from jack_port_by_id(). (#3512) + +## GStreamer + - Improve the timestamps on buffers. + +## 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 @@ -95,8 +127,6 @@ - Add some more options to pw-cat to list supported containers and formats. (#5117) -Older versions: - # PipeWire 1.5.85 (2026-01-19) This is the fifth and hopefully last 1.6 release candidate that
View file
_service:download_files:pipewire-1.6.0.tar.bz2/meson.build -> _service:download_files:pipewire-1.6.1.tar.bz2/meson.build
Changed
@@ -1,5 +1,5 @@ project('pipewire', 'c' , - version : '1.6.0', + version : '1.6.1', license : 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' , meson_version : '>= 0.61.1', default_options : 'warning_level=3',
View file
_service:download_files:pipewire-1.6.0.tar.bz2/pipewire-jack/src/pipewire-jack.c -> _service:download_files:pipewire-1.6.1.tar.bz2/pipewire-jack/src/pipewire-jack.c
Changed
@@ -492,6 +492,8 @@ jack_position_t jack_position; jack_transport_state_t jack_state; struct frame_times jack_times; + + struct object dummy_port; }; #define return_val_if_fail(expr, val) \ @@ -4468,6 +4470,11 @@ 0, NULL, &client->info); client->info.change_mask = 0; + client->dummy_port.type = INTERFACE_Port; + snprintf(client->dummy_port.port.name, sizeof(client->dummy_port.port.name), "%s:dummy", client_name); + snprintf(client->dummy_port.port.alias1, sizeof(client->dummy_port.port.alias1), "%s:dummy", client_name); + snprintf(client->dummy_port.port.alias2, sizeof(client->dummy_port.port.alias2), "%s:dummy", client_name); + client->show_monitor = pw_properties_get_bool(client->props, "jack.show-monitor", true); client->show_midi = pw_properties_get_bool(client->props, "jack.show-midi", true); client->merge_monitor = pw_properties_get_bool(client->props, "jack.merge-monitor", true); @@ -5951,9 +5958,7 @@ { const char *name; struct client *c = o->client; - if (c == NULL) - return NULL; - if (c->default_as_system && is_port_default(c, o)) + if (c != NULL && c->default_as_system && is_port_default(c, o)) name = o->port.system; else name = o->port.name; @@ -6999,13 +7004,11 @@ pthread_mutex_lock(&c->context.lock); res = find_by_serial(c, port_id); - if (res && res->type != INTERFACE_Port) - res = NULL; - pw_log_debug("%p: port %d -> %p", c, port_id, res); pthread_mutex_unlock(&c->context.lock); + if (res == NULL || res->type != INTERFACE_Port) + res = &c->dummy_port; - if (res == NULL) - pw_log_info("%p: port %d not found", c, port_id); + pw_log_debug("%p: port %d -> %p", c, port_id, res); return object_to_port(res); }
View file
_service:download_files:pipewire-1.6.0.tar.bz2/spa/plugins/alsa/acp/acp.c -> _service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/alsa/acp/acp.c
Changed
@@ -485,13 +485,11 @@ if ((n_capture == 1 && n_playback == 1) || is_firewire) { PA_IDXSET_FOREACH(m, ap->output_mappings, idx) { pa_proplist_setf(m->output_proplist, "node.group", "pro-audio-%u", index); - pa_proplist_setf(m->output_proplist, "node.link-group", "pro-audio-%u", index); pa_proplist_setf(m->output_proplist, "api.alsa.auto-link", "true"); pa_proplist_setf(m->output_proplist, "api.alsa.disable-tsched", "true"); } PA_IDXSET_FOREACH(m, ap->input_mappings, idx) { pa_proplist_setf(m->input_proplist, "node.group", "pro-audio-%u", index); - pa_proplist_setf(m->input_proplist, "node.link-group", "pro-audio-%u", index); pa_proplist_setf(m->input_proplist, "api.alsa.auto-link", "true"); pa_proplist_setf(m->input_proplist, "api.alsa.disable-tsched", "true"); }
View file
_service:download_files:pipewire-1.6.0.tar.bz2/spa/plugins/libcamera/libcamera-source.cpp -> _service:download_files:pipewire-1.6.1.tar.bz2/spa/plugins/libcamera/libcamera-source.cpp
Changed
@@ -184,9 +184,6 @@ 0, nullptr, 0, this ); - if (source.fd >= 0) - spa_system_close(system, std::exchange(source.fd, -1)); - camera->requestCompleted.disconnect(this, &impl::requestComplete); if (int res = camera->stop(); res < 0) { @@ -194,6 +191,9 @@ camera->id().c_str(), spa_strerror(res)); } + if (source.fd >= 0) + spa_system_close(system, std::exchange(source.fd, -1)); + completed_requests_rb = SPA_RINGBUFFER_INIT(); active = false;
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/gst/gstpipewiresrc.c -> _service:download_files:pipewire-1.6.1.tar.bz2/src/gst/gstpipewiresrc.c
Changed
@@ -531,6 +531,7 @@ src->autoconnect = DEFAULT_AUTOCONNECT; src->min_latency = 0; src->max_latency = GST_CLOCK_TIME_NONE; + src->last_buffer_clock_time = GST_CLOCK_TIME_NONE; src->n_buffers = 0; src->flushing_on_remove_buffer = FALSE; src->on_disconnect = DEFAULT_ON_DISCONNECT; @@ -1598,16 +1599,31 @@ GST_LOG_OBJECT (pwsrc, "EOS, send last buffer"); break; } else if (timeout && pwsrc->last_buffer != NULL) { + buf = gst_buffer_copy (pwsrc->last_buffer); update_time = TRUE; - buf = gst_buffer_ref(pwsrc->last_buffer); GST_LOG_OBJECT (pwsrc, "timeout, send keepalive buffer"); break; } else { buf = dequeue_buffer (pwsrc); GST_LOG_OBJECT (pwsrc, "popped buffer %p", buf); if (buf != NULL) { - if (pwsrc->resend_last || pwsrc->keepalive_time > 0) - gst_buffer_replace (&pwsrc->last_buffer, buf); + if (pwsrc->resend_last || pwsrc->keepalive_time > 0) { + GstClock *clock; + GstBuffer *old; + + old = pwsrc->last_buffer; + pwsrc->last_buffer = gst_buffer_copy (buf); + gst_buffer_unref (old); + gst_buffer_add_parent_buffer_meta (pwsrc->last_buffer, buf); + + clock = gst_element_get_clock (GST_ELEMENT_CAST (pwsrc)); + if (clock != NULL) { + pwsrc->last_buffer_clock_time = gst_clock_get_time (clock); + gst_object_unref (clock); + } else { + pwsrc->last_buffer_clock_time = GST_CLOCK_TIME_NONE; + } + } break; } } @@ -1632,21 +1648,33 @@ if (update_time) { GstClock *clock; - GstClockTime pts, dts; + GstClockTime current_clock_time; clock = gst_element_get_clock (GST_ELEMENT_CAST (pwsrc)); if (clock != NULL) { - pts = dts = gst_clock_get_time (clock); + current_clock_time = gst_clock_get_time (clock); gst_object_unref (clock); } else { - pts = dts = GST_CLOCK_TIME_NONE; + current_clock_time = GST_CLOCK_TIME_NONE; } - GST_BUFFER_PTS (*buffer) = pts; - GST_BUFFER_DTS (*buffer) = dts; + if (GST_CLOCK_TIME_IS_VALID (current_clock_time) && + GST_CLOCK_TIME_IS_VALID (pwsrc->last_buffer_clock_time) && + GST_CLOCK_TIME_IS_VALID (GST_BUFFER_PTS (*buffer)) && + GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS (*buffer))) { + GstClockTime diff; + + diff = current_clock_time - pwsrc->last_buffer_clock_time; + + GST_BUFFER_PTS (*buffer) += diff; + GST_BUFFER_DTS (*buffer) += diff; + } else { + GST_BUFFER_PTS (*buffer) = GST_BUFFER_DTS (*buffer) = current_clock_time; + } GST_LOG_OBJECT (pwsrc, "Sending keepalive buffer pts/dts: %" GST_TIME_FORMAT - " (%" G_GUINT64_FORMAT ")", GST_TIME_ARGS (pts), pts); + " (%" G_GUINT64_FORMAT ")", GST_TIME_ARGS (current_clock_time), + current_clock_time); } return GST_FLOW_OK;
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/gst/gstpipewiresrc.h -> _service:download_files:pipewire-1.6.1.tar.bz2/src/gst/gstpipewiresrc.h
Changed
@@ -83,6 +83,7 @@ GstClockTime max_latency; GstBuffer *last_buffer; + GstClockTime last_buffer_clock_time; enum spa_meta_videotransform_value transform_value;
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/modules/module-ffado-driver.c -> _service:download_files:pipewire-1.6.1.tar.bz2/src/modules/module-ffado-driver.c
Changed
@@ -1556,8 +1556,6 @@ pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true"); if (pw_properties_get(props, PW_KEY_NODE_GROUP) == NULL) pw_properties_set(props, PW_KEY_NODE_GROUP, "ffado-group"); - if (pw_properties_get(props, PW_KEY_NODE_LINK_GROUP) == NULL) - pw_properties_set(props, PW_KEY_NODE_LINK_GROUP, "ffado-group"); if (pw_properties_get(props, PW_KEY_NODE_PAUSE_ON_IDLE) == NULL) pw_properties_set(props, PW_KEY_NODE_PAUSE_ON_IDLE, "false");
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/modules/module-netjack2-manager.c -> _service:download_files:pipewire-1.6.1.tar.bz2/src/modules/module-netjack2-manager.c
Changed
@@ -1393,8 +1393,6 @@ pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true"); if (pw_properties_get(props, PW_KEY_NODE_NETWORK) == NULL) pw_properties_set(props, PW_KEY_NODE_NETWORK, "true"); - if (pw_properties_get(props, PW_KEY_NODE_LINK_GROUP) == NULL) - pw_properties_set(props, PW_KEY_NODE_LINK_GROUP, "jack-group"); if (pw_properties_get(props, PW_KEY_NODE_ALWAYS_PROCESS) == NULL) pw_properties_set(props, PW_KEY_NODE_ALWAYS_PROCESS, "true"); if (pw_properties_get(props, PW_KEY_NODE_LOCK_QUANTUM) == NULL)
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/modules/module-protocol-native.c -> _service:download_files:pipewire-1.6.1.tar.bz2/src/modules/module-protocol-native.c
Changed
@@ -907,7 +907,7 @@ bool activated = false; { - int i, n = listen_fd(); + int i, n = listen_fds(); for (i = 0; i < n; ++i) { if (is_socket_unix(LISTEN_FDS_START + i, SOCK_STREAM, s->addr.sun_path) > 0) {
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/modules/module-protocol-pulse/server.c -> _service:download_files:pipewire-1.6.1.tar.bz2/src/modules/module-protocol-pulse/server.c
Changed
@@ -576,7 +576,7 @@ static int check_socket_activation(const char *path) { - const int n = listen_fd(); + const int n = listen_fds(); for (int i = 0; i < n; i++) { const int fd = LISTEN_FDS_START + i;
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/modules/network-utils.h -> _service:download_files:pipewire-1.6.1.tar.bz2/src/modules/network-utils.h
Changed
@@ -143,7 +143,7 @@ /* Returns the number of file descriptors passed for socket activation. * Returns 0 if none, -1 on error. */ -static inline int listen_fd(void) +static inline int listen_fds(void) { uint32_t n; int i, flags; @@ -161,8 +161,6 @@ return -1; } - unsetenv("LISTEN_FDS"); - return (int)n; } @@ -192,12 +190,10 @@ if (addr.sun_family != AF_UNIX) return 0; size_t length = strlen(path); - if (length > 0) { - if (len < offsetof(struct sockaddr_un, sun_path) + length) - return 0; - if (memcmp(addr.sun_path, path, length) != 0) - return 0; - } + if (len < offsetof(struct sockaddr_un, sun_path) + length + 1) + return 0; + if (memcmp(addr.sun_path, path, length + 1) != 0) + return 0; } return 1;
View file
_service:download_files:pipewire-1.6.0.tar.bz2/src/tools/pw-cat.c -> _service:download_files:pipewire-1.6.1.tar.bz2/src/tools/pw-cat.c
Changed
@@ -196,55 +196,60 @@ }; static const struct format_info { - const char *name; + const char *sf_name; int sf_format; + uint32_t sf_width; + const char *spa_name; uint32_t spa_format; - uint32_t width; + uint32_t spa_width; +#define FORMAT_ENCODED (1<<0) + uint32_t flags; } format_info = { - { "ulaw", SF_FORMAT_ULAW, SPA_AUDIO_FORMAT_ULAW, 1 }, - { "alaw", SF_FORMAT_ULAW, SPA_AUDIO_FORMAT_ALAW, 1 }, - { "s8", SF_FORMAT_PCM_S8, SPA_AUDIO_FORMAT_S8, 1 }, - { "u8", SF_FORMAT_PCM_U8, SPA_AUDIO_FORMAT_U8, 1 }, - { "s16", SF_FORMAT_PCM_16, SPA_AUDIO_FORMAT_S16, 2 }, - { "s24", SF_FORMAT_PCM_24, SPA_AUDIO_FORMAT_S24, 3 }, - { "s32", SF_FORMAT_PCM_32, SPA_AUDIO_FORMAT_S32, 4 }, - { "f32", SF_FORMAT_FLOAT, SPA_AUDIO_FORMAT_F32, 4 }, - { "f64", SF_FORMAT_DOUBLE, SPA_AUDIO_FORMAT_F32, 8 }, - - { "mp1", SF_FORMAT_MPEG_LAYER_I, SPA_AUDIO_FORMAT_F32, 1 }, - { "mp2", SF_FORMAT_MPEG_LAYER_II, SPA_AUDIO_FORMAT_F32, 1 }, - { "mp3", SF_FORMAT_MPEG_LAYER_III, SPA_AUDIO_FORMAT_F32, 1 }, - { "vorbis", SF_FORMAT_VORBIS, SPA_AUDIO_FORMAT_F32, 1 }, - { "opus", SF_FORMAT_OPUS, SPA_AUDIO_FORMAT_F32, 1 }, - - { "ima-adpcm", SF_FORMAT_IMA_ADPCM, SPA_AUDIO_FORMAT_F32, 1 }, - { "ms-adpcm", SF_FORMAT_MS_ADPCM, SPA_AUDIO_FORMAT_F32, 1 }, - { "nms-adpcm-16", SF_FORMAT_NMS_ADPCM_16, SPA_AUDIO_FORMAT_F32, 1 }, - { "nms-adpcm-24", SF_FORMAT_NMS_ADPCM_24, SPA_AUDIO_FORMAT_F32, 1 }, - { "nms-adpcm-32", SF_FORMAT_NMS_ADPCM_32, SPA_AUDIO_FORMAT_F32, 1 }, - - { "alac-16", SF_FORMAT_ALAC_16, SPA_AUDIO_FORMAT_F32, 1 }, - { "alac-20", SF_FORMAT_ALAC_20, SPA_AUDIO_FORMAT_F32, 1 }, - { "alac-24", SF_FORMAT_ALAC_24, SPA_AUDIO_FORMAT_F32, 1 }, - { "alac-32", SF_FORMAT_ALAC_32, SPA_AUDIO_FORMAT_F32, 1 }, - - { "gsm610", SF_FORMAT_GSM610, SPA_AUDIO_FORMAT_F32, 1 }, - { "g721-32", SF_FORMAT_G721_32, SPA_AUDIO_FORMAT_F32, 1 }, - { "g723-24", SF_FORMAT_G723_24, SPA_AUDIO_FORMAT_F32, 1 }, - { "g723-40", SF_FORMAT_G723_40, SPA_AUDIO_FORMAT_F32, 1 }, - { "dwvw-12", SF_FORMAT_DWVW_12, SPA_AUDIO_FORMAT_F32, 1 }, - { "dwvw-16", SF_FORMAT_DWVW_16, SPA_AUDIO_FORMAT_F32, 1 }, - { "dwvw-24", SF_FORMAT_DWVW_24, SPA_AUDIO_FORMAT_F32, 1 }, - { "vox", SF_FORMAT_VOX_ADPCM, SPA_AUDIO_FORMAT_F32, 1 }, - { "dpcm-16", SF_FORMAT_DPCM_16, SPA_AUDIO_FORMAT_F32, 1 }, - { "dpcm-8", SF_FORMAT_DPCM_8, SPA_AUDIO_FORMAT_F32, 1 }, + { "ulaw", SF_FORMAT_ULAW, 1, "ulaw", SPA_AUDIO_FORMAT_ULAW, 1, 0 }, + { "alaw", SF_FORMAT_ULAW, 1, "alaw", SPA_AUDIO_FORMAT_ALAW, 1, 0 }, + { "s8", SF_FORMAT_PCM_S8, 1, "s8", SPA_AUDIO_FORMAT_S8, 1, 0 }, + { "u8", SF_FORMAT_PCM_U8, 1, "u8", SPA_AUDIO_FORMAT_U8, 1, 0 }, + { "s16", SF_FORMAT_PCM_16, 2, "s16", SPA_AUDIO_FORMAT_S16, 2, 0 }, + /* we read and write S24 as S32 with sndfile */ + { "s24", SF_FORMAT_PCM_24, 3, "s32", SPA_AUDIO_FORMAT_S32, 4, 0 }, + { "s32", SF_FORMAT_PCM_32, 4, "s32", SPA_AUDIO_FORMAT_S32, 4, 0 }, + { "f32", SF_FORMAT_FLOAT, 4, "f32", SPA_AUDIO_FORMAT_F32, 4, 0 }, + { "f64", SF_FORMAT_DOUBLE, 8, "f64", SPA_AUDIO_FORMAT_F32, 8, 0 }, + + { "mp1", SF_FORMAT_MPEG_LAYER_I, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "mp2", SF_FORMAT_MPEG_LAYER_II, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "mp3", SF_FORMAT_MPEG_LAYER_III, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "vorbis", SF_FORMAT_VORBIS, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "opus", SF_FORMAT_OPUS, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + + { "ima-adpcm", SF_FORMAT_IMA_ADPCM, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "ms-adpcm", SF_FORMAT_MS_ADPCM, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "nms-adpcm-16", SF_FORMAT_NMS_ADPCM_16, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "nms-adpcm-24", SF_FORMAT_NMS_ADPCM_24, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "nms-adpcm-32", SF_FORMAT_NMS_ADPCM_32, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + + { "alac-16", SF_FORMAT_ALAC_16, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "alac-20", SF_FORMAT_ALAC_20, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "alac-24", SF_FORMAT_ALAC_24, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "alac-32", SF_FORMAT_ALAC_32, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + + { "gsm610", SF_FORMAT_GSM610, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "g721-32", SF_FORMAT_G721_32, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "g723-24", SF_FORMAT_G723_24, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "g723-40", SF_FORMAT_G723_40, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "dwvw-12", SF_FORMAT_DWVW_12, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "dwvw-16", SF_FORMAT_DWVW_16, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "dwvw-24", SF_FORMAT_DWVW_24, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "vox", SF_FORMAT_VOX_ADPCM, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "dpcm-16", SF_FORMAT_DPCM_16, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, + { "dpcm-8", SF_FORMAT_DPCM_8, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED }, }; static const struct format_info *format_info_by_name(const char *str) { SPA_FOR_EACH_ELEMENT_VAR(format_info, i) - if (spa_streq(str, i->name)) + if (spa_streq(str, i->sf_name)) return i; return NULL; } @@ -263,7 +268,7 @@ fprintf(stdout, _("Supported formats:\n")); SPA_FOR_EACH_ELEMENT_VAR(format_info, i) - fprintf(stdout, " %s\n", i->name); + fprintf(stdout, " %s\n", i->sf_name); } static int sf_playback_fill_x8(struct data *d, void *dest, unsigned int n_frames, bool *null_frame) @@ -1676,8 +1681,13 @@ if (info == NULL) return -EINVAL; + if (info->flags & FORMAT_ENCODED) { + fprintf(stderr, "raw: raw encoded format %s not supported\n", info->sf_name); + return -ENOTSUP; + } + data->spa_format = info->spa_format; - data->stride = info->width * data->channels; + data->stride = info->spa_width * data->channels; data->fill = data->mode == mode_playback ? raw_play : raw_record; if (spa_streq(data->filename, "-")) { @@ -1696,7 +1706,7 @@ if (data->verbose) fprintf(stderr, "raw: rate=%u channels=%u fmt=%s samplesize=%u stride=%u\n", data->rate, data->channels, - info->name, info->width, data->stride); + info->spa_name, info->spa_width, data->stride); return 0; } @@ -2034,14 +2044,10 @@ if (data->verbose) fprintf(stderr, "PCM: fmt:%s rate:%u channels:%u width:%u\n", - fi->name, data->rate, data->channels, fi->width); - - /* we read and write S24 as S32 with sndfile */ - if (fi->spa_format == SPA_AUDIO_FORMAT_S24) - fi = format_info_by_sf_format(SF_FORMAT_PCM_32); + fi->spa_name, data->rate, data->channels, fi->spa_width); data->spa_format = fi->spa_format; - data->stride = fi->width * data->channels; + data->stride = fi->spa_width * data->channels; data->fill = data->mode == mode_playback ? playback_fill_fn(data->spa_format) : record_fill_fn(data->spa_format);
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
.