Commit graph

93 commits

Author SHA1 Message Date
Wim Taymans
9b6e504c19 clean up some more array iterations 2022-10-03 09:20:42 +02:00
Thomas Weißschuh
bbb3cdc185 pw-cat: clean up resource correctly on EIO
The core has already been connected and the loop is running so we also
have to clean those up.

Fixes #2651
2022-08-19 07:34:02 +00:00
Wim Taymans
d030983212 pw-cat: don't print useless error
getopt has already printed a much better error for us.

See #2558
2022-07-17 16:47:24 +02:00
Wim Taymans
d1ee783322 pw-cat: read and write raw formats correctly
We need to transform the number of bytes into frames.
2022-06-29 17:29:16 +02:00
Wim Taymans
b9fa0e6f28 pw-cat: also set rate/latency for pipe
Move the latency and rate properties to a separate function so that
we can call it in all cases and not just for sndfile io.
Simplify format handling.
2022-06-15 12:35:56 +02:00
Wim Taymans
81eee88dd8 pw-cat: support stdin/stdout for input/output
A - filename will read or write from the stdin/out.

Fixes #2387
2022-05-20 08:03:03 +02:00
Wim Taymans
6ed91ae0d8 pw-cat: add -P option
Add -P option to pass custom properties to the stream.
2022-05-18 17:31:18 +02:00
Wim Taymans
c48a4bc166 pw-cat: fix DSF playback again
Make the DSD buffers a little bigger because we scale down the rate.
Read an interleaved number of samples to fill one quantum.
2022-04-28 12:32:08 +02:00
Wim Taymans
d9871f36c1 pw-cat: support saving to other file formats
Use the extension to find the file format and save to it instead of
forcing wav.

See #2328
2022-04-25 20:43:18 +02:00
Wim Taymans
32b2377de3 pw-cat: don't start drain on 0 request size
When the stream requests a 0 size buffer, don't start the drain but
simply queue a 0 size buffer.

Sometimes, switching quantums and drivers might request a 0 buffer
async and this should not cause a drain operation.
2022-04-19 18:29:47 +02:00
Wim Taymans
ecff225b11 pw-cat: remove code to list targets
Introspection of default devices should be done elsewhere.
2022-04-13 16:02:46 +02:00
Wim Taymans
5d31ec74ac stream: report queued and dequeued buffers in pw_time 2022-03-31 10:19:05 +02:00
Wim Taymans
0503ced8ab pw-cat: set buffer size field in frames
So that we get a meaningful value for the pw_time.queued field.
2022-03-31 10:16:15 +02:00
Wim Taymans
5ec7a9f40c pw-cat: start timer when playing 2022-03-31 10:15:57 +02:00
Wim Taymans
5a9d2679ca stream: add pw_stream_get_time_n()
Deprecate pw_stream_get_time() in favour of _get_time_n() that contains
the size of the pw_time structure. Make the old one fill in the fields
up to the buffered field. Make the new one use the size to decide how
much info to fill in.

Add a new buffered field in pw_time that contains the buffered data
inside the converter/resampler. This leaves the queued field with
purely the user provided size in the buffers.

Use get_time_n() in places.
2022-03-29 17:30:38 +02:00
Wim Taymans
46d1328e1c pw-cat: improve output 2022-03-29 12:47:16 +02:00
Wim Taymans
7e42c905a8 remove the rate_match io
Now that the stream provides us with a requested size, we don't need to
use the rate_match anymore.
2022-03-29 09:57:49 +02:00
Pauli Virtanen
c66bb65c7a pipewire: don't setlocale from pw_init, let parent app set it
Library code generally shouldn't modify global state, so pw_init()
should not result to changing the C locale.

Instead, set the C locale in main() for tools and daemons.

We'll still setlocale for LC_MESSAGES, to get translated UI elements in
wireplumber. This workaround should be removed eventually...
2022-03-22 21:32:35 +02:00
Wim Taymans
a6304b47f6 pw-cat: improve DSD file reading
Support reading non-multiples of the blocksize.
Stop reading at the end of the file.
2022-03-03 16:05:03 +01:00
Wim Taymans
ce2f1b3737 dsffile: fix negative interleave 2022-03-03 14:01:32 +01:00
Wim Taymans
3db14600b2 remove some listeners 2022-02-09 12:33:52 +01:00
Wim Taymans
afc88a12e5 tools: cleanup up printf
Make all tools output to stdout (pw-mon mostly) so that we can pipe the
output around.
Send errors to stderr.
fprintf(stdout, ...)  -> printf(...)
setlinebuf for stdout so that pipe works better.

See #2110
2022-02-07 17:03:46 +01:00
Wim Taymans
8415fa525f pw-cat: print "monitor" when recording from a sink 2022-01-17 14:47:27 +01:00
Wim Taymans
c46113faa3 json: spa_json_get_string() writes up to len chars or fail 2022-01-04 10:42:32 +01:00
Wim Taymans
2f4c589d5b pw-cat: also list additional targets in record mode
Also list the sink and output stream nodes because we can also record
from them.

Fixes #1952
2022-01-03 16:59:21 +01:00
Wim Taymans
45d9c2c9df pw-cat: use default metadata for default source/sink 2021-10-20 11:40:33 +02:00
Wim Taymans
d8aec1c7b4 pw-play: move dsdplay into pw-cat 2021-09-21 12:29:41 +02:00
Julian Bouzas
34b1ecc244 pw-cat: calculate number of samples properly with io_rate_match
Fixes wrong buffer sizes when adapter is configured in passthrough mode.
2021-08-25 19:23:23 +00:00
Wim Taymans
0bad741d45 pw-cat: suggest samplerate as graph rate 2021-08-18 09:44:53 +02:00
Wim Taymans
49c1c0386f pw-cat: fix raw read
raw read needs bytes, so use the stride to calculate it from frames.
Move ulaw/alaw to packed formats.
2021-08-17 17:56:31 +02:00
Wim Taymans
f7c91491cb pw-cat: support ulaw/alaw formats 2021-08-17 17:35:31 +02:00
Barnabás Pőcze
f5d51162c4 treewide: mark things static and const
Mark some structures, arrays static/const at various places.
In some cases this prevents unnecessary initialization
when a function is entered.

All in all, the text segments across all shared
libraries are reduced by about 2 KiB. However,
the total size increases by about 2 KiB as well.
2021-06-30 14:44:08 +02:00
Wim Taymans
5497d2d907 pw-cat: fix format string 2021-06-28 17:21:28 +02:00
George Kiagiadakis
59407d2f08 includes: update all references to extensions to point to pipewire/extensions
This also brings the advantage that all tools, examples, modules, components
can also be compiled standalone out-of-tree using libpipewire from the system
2021-06-18 17:54:18 +03:00
Wim Taymans
6971d11901 pw-cat: support u8 format as well 2021-06-03 10:10:18 +02:00
Peter Hutterer
e0471c6757 pipewire: allow NULL pointers in pw_properties_free()
Just like the real free() we should just ignore a NULL pointer, makes the
caller code easier for those instances where properties are optional.

Patch generated with concinelle with a few manual fixes.
2021-06-02 10:56:46 +00:00
Wim Taymans
f383ac21dd pw-cat: remove debug 2021-05-27 15:26:09 +02:00
Wim Taymans
b9b89b92b2 spa: add some latency helpers
Add more fields to the latency object.
Add methods to create, parse and process latency info.
2021-05-27 15:26:09 +02:00
Peter Hutterer
95a84e797a treewide: replace !strcmp() with spa_streq()
This change is only done in source files for now, header files will be done
separately.
2021-05-18 22:10:27 +10:00
Peter Hutterer
7697ed0757 treewide: replace strcmp() == 0 with spa_streq()
This change is only done in source files for now, header files will be done
separately.
2021-05-18 22:10:27 +10:00
Wim Taymans
aea55f662a i18n: move to separate .h file
So that we can include it where needed and don't cause redefined _()
macros for other projects.

Fixes #1120
2021-04-30 09:57:30 +02:00
Wim Taymans
036c54b043 Add i18n support for some more user-visible strings 2021-04-15 17:56:40 +02:00
Wim Taymans
c8fd34a41d metadata: store default-nodes as JSON
Don't just store the id in the metadata but a JSON object with
the node name. This makes it possible to easily introspect the
metadata and also extend the metadata with more fields later.

Instead of matching the metadata id to the global ids we now
have to match it against the name.
2021-03-05 17:37:12 +01:00
Wim Taymans
fc90a4e48a Implement config/state file handling
Make methods to load_config and load/save state. For now the config
and state directories are the same but it might not be. Implement
the search path for all config/state files as:

  $XDG_CONFIG_HOME/[$prefix]/$name
  $HOME/.config/[$prefix]/$name
  $PIPEWIRE_CONFIG_DIR/pipewire/[$prefix]/$name
  /etc/pipewire/[$prefix]/$name

Make some config files for jack and RT clients. Make pw-cat use the
client-rt config.

Use core state and config management in media-session.
Move all session manager state and config files to the build dir and
set the PIPEWIRE_CONFIG_DIR to this build dir.
2021-02-12 10:25:11 +01:00
Wim Taymans
379cbeaa5d pw-cat: fix option for playback
Fixes #665
2021-02-02 15:17:38 +01:00
Wim Taymans
84eed9ef6f pw-cat: use none as default latency for record
Don't force the record latency to the large latency we use for playback
(100ms) but set it to none, which means use defaults.
2021-01-08 16:30:57 +01:00
Gabriel Ebner
7bdcfb6383 pw-cat: report delay 2020-12-23 19:13:29 +00:00
Wim Taymans
97ec1ce209 pw-cat: handle stream error
Exit when the stream is in error

See #430
2020-12-01 09:39:16 +01:00
Wim Taymans
b3aa346063 handle core error better
Use the PW_ID_CORE constant
Quit the mainloop when server disconnected in the tools

See #395
2020-11-20 12:29:51 +01:00
Wim Taymans
bb8bd3d76d pw-cat: don't put empty strings in metadata 2020-10-21 11:03:36 +02:00