Commit graph

308 commits

Author SHA1 Message Date
Pauli Virtanen 8159797f89 doc: reorganize Doxygen groups/modules to make more sense
The Doxygen "Modules" page is not very illuminative, as different parts
of the API are mixed together and not all parts are included.

Try to address this:

Put all parts of the public API to some Doxygen group, usually one group
per header file. Use short, systematic names.

Make these groups sub-groups of a few top-level groups, roughly
corresponding to the different logical parts of the API (core, impl,
stream, filter, spa, utilities).
2021-10-03 15:39:27 +03:00
Pauli Virtanen 43a84c4a2c doc: include files in Doxygen groups
File is included in all groups for which it contains \addtogroup
2021-10-03 15:02:39 +03:00
Pauli Virtanen cd94eff5f2 doc: add Doxygen filter that adds docs to struct *method macros
Add an input filter that tries to link e.g.

 #define pw_core_add_listener(...) pw_core_method(c,add_listener,...)

to the corresponding declaration in struct pw_core_methods.
2021-10-03 00:40:52 +03:00
Pauli Virtanen 4cb24531b3 doc: ignore symbols due to Doxygen mis-parsing
Ignore some symbols appearing as "Variables", which seem to be due to
some mis-parsing.
2021-10-03 00:40:52 +03:00
Pauli Virtanen c345d1e11d doc: make Doxygen to show only symbols defined in headers
Make Doxygen data structure etc. lists less cluttered by hiding
non-public stuff.

Add a Doxygen input filter that marks symbols declared in C files
private, so that they won't appear in the output unless the symbol is
also declared in a header.

The "spa static inline" hack is then also not needed any more.
2021-10-03 00:40:52 +03:00
Wim Taymans d90799c14e doc: add link to wiki 2021-09-30 13:31:08 +02:00
Peter Hutterer e3b216c026 media-session: add log topics to all modules
Media-session itself uses ms.core, there are only two files that could
have a sub-topic but right now they don't use it (match-rules and
metadata).

The modules use the ms.mod.* namespace, so it's trivial to filter on
those.
2021-09-28 09:35:39 +02:00
Peter Hutterer 52bd80aaa4 log: add topic loggers and a default topic
pw_log_log/logv now go through the topic-based logger using the
"default" topic. Log topics themselves can be allocated by the call
sites. The simplest way to use a topic from e.g. a module:

    PW_LOG_TOPIC_STATIC(mod_topic, "mod.foo");
    #define PW_LOG_TOPIC_DEFAULT mod_topic
    ...
    void pipewire__module_init() {
  	  PW_LOG_TOPIC_INIT(mod_topic);
  	  ...
    }

With the #define all pw_log_foo() are now routed through the custom
topic. For the cases where the log topic must be specified, a
pw_logt_foo() set of macros is available.

Log topics are enabled through the PIPEWIRE_DEBUG environment variable
which now supports globs, e.g. PIPEWIRE_DEBUG="*:I;mod.access:D"
to enable global INFO but DEBUG for the access module.

Namespaces documented are "pw", "mod" and "conn", for pipewire-internal
stuff, modules and connection dumping. The latter is special-cased to
avoid spamming the log files, it requires an expcit "conn.<glob>"
pattern to enable.

The "default" topic always exists and is the fallback for any
pw_log_foo() invocation that does not use a topic.
2021-09-28 09:35:38 +02:00
Peter Hutterer 92c7c8354d pipewire: don't log the location if PIPEWIRE_LOG_LINE=false
Default remains enabled, but sometimes it's easier to not have this.
2021-09-28 07:24:23 +00:00
Peter Hutterer 9a6b929eb1 doc: document the two other log enviroment variables 2021-09-28 07:24:23 +00:00
Peter Hutterer e46a30562f Promote media-session to its own subdirectory
media-session is past the point of being a mere example, let's promote
it out of the subdirectory.

pw-reserve is moved to tools/
2021-09-22 08:53:08 +02:00
Peter Hutterer 6f43aba91d doc: check if the media_session_sources variable exists
When building with -Dexamples=disabled, the whole src/examples is
skipped, so we never declare that variable.

Fixes #1551
2021-09-22 13:58:11 +10:00
Peter Hutterer e1672f9762 pipewire: allow for log level names in PIPEWIRE_DEBUG
Allow one of "XEWIDT" to refer to none, errors, warnings, info, debug
and trace, respectively because they're immediately recognizable. Well,
except maybe the X.

PIPEWIRE_DEBUG="I" is equivalent to PIPEWIRE_DEBUG="3" for example.
2021-09-10 07:38:20 +00:00
Wim Taymans 954befccff doc: define HAVE_DOT to generate dot files
Fixes #1585
2021-09-09 13:01:29 +02:00
Peter Hutterer 0596b388fe doc: fix example for the PIPEWIRE_DEBUG format 2021-09-09 09:31:52 +10:00
Peter Hutterer 2306124f49 doc: fix listing of the new No DSP media-session module
And copy the text from the comment into the public documentation, better
than just having an empty page there.
2021-09-07 07:52:45 +00:00
Peter Hutterer 7d13c7750d doc: document the portal negotation process with graphs
This is a multi-step process involving 4 processes and two modules.
Let's add some graphs to make this slightly easier to comprehend for
those not familiar with how portals work.
2021-09-06 07:29:28 +00:00
Peter Hutterer 83ed6e0be3 doc: swap two @ doxygen tags for the backslash ones 2021-09-06 07:29:28 +00:00
columbarius 63521c1063 doc: add section about v4l2 dmabuf sharing 2021-09-03 09:34:26 +00:00
Simon Ser 7a618390ec doc: add warning about mapping DMA-BUFs
A list of reasons why DMA-BUFs have to be treated specially. This
should make it clearer why mmaping DMA-BUFs should be avoided and hint
clients on how treat them correctly

Co-authored-by: columbarius <co1umbarius@protonmail.com>
2021-09-03 09:34:26 +00:00
columbarius 112d50c8b9 doc: clarify format negotiation
Describing different behaviour for modifier-less and modifier-aware case
and how a EnumFormat with modifier should be fixated. Also adding a Note
about `SPA_PARAM_BUFFERS_blocks`, which is important for multiplane
DMA-BUFS.
2021-09-03 09:34:26 +00:00
Nils Tonnätt dd12910769 Revert "[Meson] Fix all deprecation warnings"
This reverts commit f7e1175ef0.
2021-08-08 19:18:40 +00:00
Nils Tonnätt f7e1175ef0 [Meson] Fix all deprecation warnings 2021-08-06 07:56:16 +00:00
Pauli Virtanen 76bae0cac4 media-session: add bluez-autoswitch module
Add module that switches bluez device profile to HFP/HSP if an input
stream (non-monitor, autoconnect) appears, and the current default
output device is bluez one that does not have input route.

When all input streams are gone, switch all changed profiles back.

Pending restore state is saved to session manager state files, in order
to restore it if e.g. devices get disconnected.  This usually is not
currently necessary since the bluez5 plugin prefers to connect to A2DP
over HFP, but might matter in future with backchannel-enabled A2DP
codecs.
2021-08-05 11:27:06 +00:00
Peter Hutterer 127781cfc8 doc: ignore all function attributes in doxygen 2021-08-05 09:51:40 +00:00
Peter Hutterer d8f6033b9d spa: document the spa_interface and how it works 2021-08-05 09:51:40 +00:00
Peter Hutterer 1be939c672 doc: add a meson example to the tutorial
The vast majority of users will want to build with a build system, so
let's add a minimal example there to avoid guesswork.
2021-08-05 09:51:40 +00:00
Wim Taymans 4841156b74 doc: clarify JSON usage
Mention that the config format can be pure JSON or with some
simplifications and additions.
2021-08-04 11:47:31 +02:00
Peter Hutterer f0baffbc84 doc: ignore SPA_EXPORT and SPA_PRINTF_FUNC
This caused doxygen to include a rather random assortment of variables
and link to them from various pages (e.g. "arg", "res", "buffer", NAME,
etc.)
2021-08-04 07:49:53 +00:00
Peter Hutterer 5561531751 doc: document the core/implementation API split a bit better
Still missing a proper review of the linked objects, but at least this
now explains why those two are split.
2021-08-04 07:49:53 +00:00
Peter Hutterer 3370a56e3e doc: move the error reporting blurb to the library page
Let's keep the daemon page higher-level and leave API behaviors
elsewhere.
2021-08-04 07:49:53 +00:00
Peter Hutterer 710caf9d75 doc: fix a subsection name 2021-08-04 07:49:53 +00:00
Peter Hutterer 4c760e473d doc: add a nice graph to illustrate how the daemon a bit 2021-08-04 07:49:53 +00:00
Peter Hutterer 13ffc549c9 doc: add basic docs for the session manager 2021-08-04 07:49:53 +00:00
Peter Hutterer fc85b33e80 doc: drop the header priority in media-session.dox
This way the two subheaders won't show up in the sidebar
2021-08-02 08:27:51 +00:00
Peter Hutterer 310b4611c8 media-session: add stub docs for all media-session modules
Same basic approach as for the pipewire modules
2021-08-02 08:27:51 +00:00
Peter Hutterer 602bed7a98 doc: add minimal documentation for the alsa endpoint SM module 2021-08-02 08:27:51 +00:00
Peter Hutterer c2fef6caa2 doc: format the objects design page
Mostly replacing the lists so they actually render as lists
2021-08-02 08:27:51 +00:00
Peter Hutterer 25d15765b7 doc: better output formatting for the midi page 2021-08-02 08:27:51 +00:00
Peter Hutterer 8d39940350 doc: some more polishing of the access docs 2021-08-02 08:27:51 +00:00
Peter Hutterer 82e427745d doc: structure the portal documentation a bit better 2021-07-30 07:24:24 +00:00
Peter Hutterer 0261b78870 doc: expand the module doc a bit
Makes it feel slightly more complete, even if the example modules are
currently undocumented.
2021-07-30 07:24:24 +00:00
Peter Hutterer c753f45598 doc: remove the PipeWire prefix from the nested pages
They're structured below PipeWire in the doxygen output, so we don't
need this as part of the header.
2021-07-30 07:24:24 +00:00
Simon Ser 6773ea7e5e doc: add DMA-BUF docs 2021-07-29 19:18:49 +00:00
Peter Hutterer 4496aed5a6 doc: revamp the pipewire-access page
Rewording, linking to the various things, etc.
2021-07-29 16:06:36 +10:00
Peter Hutterer d1c80183d9 doc: add a media-session header file with the access-flatpak module
This adds a new top-level documentation entry for pipewire-media-session
with a list of modules (currently only one). Similar setup to the
pipewire modules, it allows us to document all modules in-place.
2021-07-29 16:06:36 +10:00
Peter Hutterer c03fedbac2 doc: reword the Design page 2021-07-29 14:43:40 +10:00
Peter Hutterer 6da0ee6cb5 doc: move the overview page out to its own page
This is a good first (top) page to have in the docs, let's move it out
from the pipewire heading.

This doesn't change any of the links and the renaming isn't required
(subpage controls whether it's a top-level item and the meson.build
 order decides its spot in he list). Still, better to have the filenames
represent the layout.
2021-07-29 14:33:09 +10:00
Peter Hutterer 85435cd525 doc: improve the pipewire-audio page for readability
Typos, some header changes, etc.
2021-07-29 14:26:01 +10:00
Peter Hutterer 7871f33da6 doc: remove the Pipewire prefix from some of the doc pages 2021-07-29 14:26:01 +10:00
Peter Hutterer f0152b6a0a doc: add the new documentation pages to the docs
And make them a subpage of the Pipewire topic
2021-07-29 14:25:01 +10:00
Wim Taymans ab99f4d027 doc: add general audio configuration 2021-07-26 09:35:05 +02:00
Wim Taymans 0346c616e2 doc: add midi doc
Reorganize the docs a little. First a short intro, then list the use
cases, then the responsabilities of the various components, then
the implementation in various places.
2021-07-23 11:05:59 +02:00
Wim Taymans 762e549027 doc: add portal document 2021-07-23 09:57:45 +02:00
Wim Taymans 79233aee52 doc: document access control
A first stab at the basics of access control documentation and the
use cases solved by the session manager.
2021-07-22 14:52:57 +02:00
Peter Hutterer 765bd417de doc: link the most recent modules as subpages
This sorts them correctly in the navigation bar
2021-07-05 08:57:41 +00:00
Peter Hutterer d6bb69f2bd doc: add the configuration file format to the online documentation
Mostly copied from the man page but with a more applicable example.
2021-07-05 08:57:41 +00:00
Niklāvs Koļesņikovs 0436793299 doc/meson.build: pruning of unused find_program() 2021-06-29 17:23:37 +00:00
Niklāvs Koļesņikovs e062c4d8de meson.build: adds summary() to optional programs 2021-06-29 17:23:37 +00:00
Peter Hutterer f181232a61 doc: add the documentation infrastructure for pipewire modules
All empty pages for now but at least this makes them show up in the
documentation.
2021-06-25 08:42:24 +00:00
Peter Hutterer 9956637ce5 doc: drop unused variable from meson.build 2021-06-25 08:42:24 +00:00
Peter Hutterer 50e015fa87 doc: add a reference to the PipeWire Under The Hood post
A good writeup that provides more details than our own documentation, so
let's at least link to it.
2021-06-24 10:54:13 +00:00
Peter Hutterer 0f0565175e doc: rework the SPA plugin documentation
Add more info to the main SPA page and split the design vs plugin pages up,
together with some more documentation to ideally lower make this easier to
understand on a glance.

Most of the actual plugin loading documentation are unmodified.
2021-06-24 10:54:13 +00:00
Peter Hutterer 8a25076c4e doc: define __USE_ISOC11 for doxygen to pick up the logger #defines
This way doxygen will pick up the #defines for spa_log_error, etc. Without
this define it uses the else part of the condition which uses macros to
construct function names.
2021-06-24 10:54:13 +00:00
Barnabás Pőcze a168e4261f doc: move color overrides into light color scheme block
Otherwise when a user is visiting with dark color scheme
preference, the code fragments would appear with far too
bright colors.
2021-06-15 17:58:06 +00:00
Peter Hutterer ed3f882fa9 test: add the pwtest test framework
Heavily inspired by libinput's litest framework (built around check), this is
a from-scratch framework that simplifies adding tests for various parts of
pipewire. See the pwtest.h documentation for details but the basics are:

- PW_TEST() and PWTEST_SUITE() specify the tests to be run
- Test are run in forked processes, any errors/signals are caught and printed
  to the log
- Tests have a custom pipewire daemon started on demand to talk to [1]. The
  daemon's log is available in the test output.
- Output is YAML to be processed into whatever format needed

[1] There are limits here, since we can't emulate devices yet there is only
so much we can rely on with the daemon.
2021-06-09 18:00:06 +10:00
Peter Hutterer b64f0d581f doc: switch from .md to .dox files and impose some general structure
This is an attempt of breaking up the documentation, currently spread across
several pages. We're left with a few high-level topics with various things
grouped underneath those.

Further refinement is necessary, but this can now be done in incremental steps
over massive reworks.
2021-05-26 10:02:10 +02:00
Peter Hutterer 46a39e0ba7 doc: switch the spa documentation to doxygen 2021-05-26 10:02:10 +02:00
Peter Hutterer 9ed9980fa2 doc: change the tutorials to doxygen sources
While doxygen can handle markdown pages, support for it is very limited:
markdown pages can only be included as a whole page, they get an automatic
title (custom titles are possible but aren't standard markdown) and it's not
possible to use \subpage without messing with the markdown again. Any markdown
page will thus end up as separate item in the doxygen output, not really
suitable for generating a good page hiearchy.

Let's switch the tutorial to use doxygen directly instead of markdown, short
of using code/endcode instead of markdown's ``` there isn't that much
difference anyway but it allows us to structure things nicer in the online
docs.
2021-05-26 10:02:10 +02:00
Peter Hutterer fce28ac59b doc: remove duplicate tutorial reference 2021-05-26 10:02:10 +02:00
Peter Hutterer 6cf819ab1c doc: namespace the pipewire md files 2021-05-26 10:02:10 +02:00
Peter Hutterer b00e524341 doc: rename design.txt to design.md
It's a valid markdown file, let's have only one file type here.
2021-05-26 10:02:10 +02:00
Peter Hutterer f8243f3cc1 doc: move spa/foo.md to spa-foo.md
Flatten the hierarchy a bit to make it easier to handle.
2021-05-26 10:02:10 +02:00
Peter Hutterer 851a64d8c8 doc: add spa to doxygen output
This requires a helper script: doxygen doesn't differ between static methods
and static inline methods. EXTRACT_STATIC defines whether it parses *any*
static method but we're currently using all C files as input files as well. We
cannot convince doxygen to just parse static inline functions in header files
so for SPA we hack around this: meson passes the spa headers to a shell script
with simply copies those changed to `/* static */ inline void (foo)` and doxygen
then runs on those header files.

The result: we get all spa functions added to your doxygen output at the cost
of a few sed calls.
2021-05-26 07:44:55 +00:00
Peter Hutterer 079b90bde5 doc: add a custom doxygen theme based on doxygen-awesome
Theme from doxygen-awesome-css with custom modifications based on the
pipewire.org website to use the same type of blue, grey, etc.

doxygen-awesome-css is MIT licensed, see
https://github.com/jothepro/doxygen-awesome-css
2021-05-21 16:08:46 +10:00
Peter Hutterer f47f85bbcb doc: fix broken references
These pages never existed, let's not try to reference them.
2021-05-21 15:04:22 +10:00
Peter Hutterer f0d3f1f9d2 doc: remove trailing whitespace
My vim/git setup wants to fix those on every commit which gets a bit annoying,
let's just remove them: sed -i 's/ *$//g' $(git ls-files doc)
2021-05-07 10:27:26 +10:00
Peter Hutterer ac05f6bb03 doc: add the various markdown prose docs to the doxygen output
Note that the order of the includes matters - that's how doxygen will sort
them. There is no specific structure other than the include order - one reason
why the headers are being changed. Without polluting the markdown files with
doxygen commands we cannot use \subpage, so all files convert to a regular
\page and are listed as flat hierarchy in the sidebar (and in Related Pages).

Changing the headers at least provides some visual grouping with comon
prefixes.
2021-05-07 10:27:26 +10:00
Peter Hutterer d10381dfc3 dox: keep the doxygen input files as array in meson
Keep all files as strings in an array so we can add them to the custom command
input list - this way meson will correctly rebuild documentation on changes.
2021-05-07 10:27:26 +10:00
Peter Hutterer 1fd56a6d26 doc: reduce the Doxyfile to only non-default options
This provides a much easier overview of what the actual changes are to
doxygen's default values.
2021-05-07 10:27:26 +10:00
Peter Hutterer 68080ec531 doc: fix a typo 2021-05-07 10:27:26 +10:00
Peter Hutterer 3234037a71 doc/spa: add more markdown tags to render better 2021-05-07 10:27:26 +10:00
Andrea Gelmini 85b136d8ce Fix typos
Signed-off-by: Andrea Gelmini <andrea.gelmini@gelma.net>
2021-04-30 16:27:34 +00:00
Andrea Gelmini 47ef2b6b09 Fix typos 2021-04-30 07:40:20 +00:00
Peter Hutterer 83ed03d4cf Remove .gitignore files in subdirectories
With meson we no longer have generated files messing up the tree, so we no
longer need these files.
2021-04-20 07:10:15 +00:00
Niklāvs Koļesņikovs 4bfa4a3964 doc: add docdir option
As patched in Gentoo.

Fixes #1057
2021-04-16 09:26:35 +02:00
Peter Hutterer 223f20709d meson: replace join_paths(a, b) with a / b
More readable and from the meson reference manual:
(since 0.49.0) Using the/ operator on strings is equivalent to calling join_paths.
2021-04-15 06:57:00 +00:00
insop a9c247bdab Minor typo fixes 2021-03-13 21:13:01 +00:00
Wim Taymans 0855b1bb4b doc: add link to LAC 2020 paper 2021-02-12 13:27:38 +01:00
jasker5183 0dad70eb48 Add buffer.md to fix link in tutorial4.md 2021-01-22 14:07:59 +01:00
Léo Stefanesco 7f3a878dd3 Fix typos in architecture.md 2020-12-22 09:15:21 +00:00
Wim Taymans 77791bd427 doc: fix some typos 2020-11-27 17:35:25 +01:00
Wim Taymans c4aec3ef4e doc: fix typo 2020-09-19 13:34:33 +02:00
Richard 4be4a0b250 Update overview.md 2020-09-19 10:56:51 +00:00
Siwon Kang f7b22b934c doc: fix typos
Signed-off-by: Siwon Kang <siwon.kang@daimler.com>
2020-09-14 20:00:59 +02:00
Emmanuel Gil Peyrot 14fdf07e8f Run codespell on the entire codebase
This tool detects and fixes common English spelling mistakes, with
generally very few mistakes.

Here is the command I used to generate this commit.  There were a few
changes that had to be done manually, and of course adding the ignore
file:
```shell
codespell -I .codespell-ignore -x .codespell-ignore -w
```

I didn’t add it to the CI, but this would be a good place for it.
2020-08-17 17:16:31 +00:00
Wim Taymans 2176874687 doc: fix some spelling errors 2020-08-11 21:24:19 +02:00
Wim Taymans e71936f870 Improve naming
master -> driving
priority_master -> priority_driver
segment_master -> segment_owner
2020-08-06 13:49:33 +02:00
Wim Taymans edb3968c5c docs: some small fixes and updates 2020-08-02 20:14:04 +02:00
Wim Taymans 6e2d3feb07 doc: clarify version field in events 2020-07-27 16:47:30 +02:00
Wim Taymans 0f1df5aee5 doc: add tutorial about binding objects 2020-06-23 15:44:01 +02:00
Wim Taymans 9c049f23ae doc: add video capture tutorial 2020-06-19 16:37:14 +02:00
Wim Taymans 2bcbf62443 docs: add some more links 2020-06-19 13:41:42 +02:00
Wim Taymans f2245ecbb1 doc: small fix 2020-06-16 12:28:22 +02:00
Wim Taymans 5778de090f doc: fix some typos 2020-06-13 21:31:32 +02:00
Wim Taymans 5e652612be doc: add tutorial for pw_stream playback 2020-06-13 21:26:21 +02:00
Wim Taymans cdda6ca329 doc: add index 2020-06-11 16:52:47 +02:00
Wim Taymans 205c4a58f9 doc: fix navigation 2020-06-11 16:38:26 +02:00
Wim Taymans 4d3647acbb doc: add cleanup 2020-06-11 16:36:55 +02:00
Wim Taymans 00ca566b18 doc: cleanups 2020-06-11 16:30:27 +02:00
Wim Taymans 9b245da5c0 docs: add tutorial 3 2020-06-11 16:25:47 +02:00
Wim Taymans 44efab6c31 docs: more tutorial 2020-06-11 15:32:52 +02:00
Wim Taymans 0ee5feab67 doc: add tutorial index 2020-06-11 13:43:29 +02:00
Wim Taymans 0a84a77a21 add index 2020-06-11 13:39:09 +02:00
Wim Taymans a33fac9f9a Update architecture.md 2020-06-11 11:33:29 +00:00
Wim Taymans 70ce1da29c doc: add some more docs 2020-06-11 13:29:30 +02:00
Wim Taymans 12afb23938 docs: add some more docs 2020-06-11 09:51:32 +02:00
Wim Taymans b71efadb7a doc: add some more info 2020-06-10 17:08:12 +02:00
Wim Taymans 2c8292bef0 docs: add some more info 2020-06-09 17:29:40 +02:00
Wim Taymans 8696ad4480 docs: add some doc about SPA design 2020-06-09 17:08:26 +02:00
Wim Taymans 2b7e6e19dc doc: annotate code block as c 2020-06-09 15:34:02 +02:00
Wim Taymans 9fd6428314 docs: fix some typos 2020-06-09 15:28:26 +02:00
Wim Taymans 8f251fc7d4 docs: add some docs about SPA POD 2020-06-09 09:06:07 +02:00
Wim Taymans c546167ad3 require meson 0.49 2020-05-20 15:26:35 +02:00
George Kiagiadakis 04b1881211 doc: add documentation about the design of media & session management objects 2020-02-21 14:15:27 +00:00
Arun Raghavan 8f1b840979 ci: Automate container building in Gitlab
This removes the need to manually build and push out the Docker images
for the build. This step is now in GitLab CI itself.
2019-11-21 17:24:21 +05:30
Arun Raghavan 5abab5d4da doc: Add some documentation on generating CI docker images 2019-11-19 14:45:53 +00:00
Wim Taymans c63f0ed562 doc: add session-manager <-> pulseaudio mapping 2019-11-08 15:53:14 +01:00
Wim Taymans 36ac8a6545 update docs 2017-09-05 13:35:25 +02:00
Wim Taymans 1acba78234 API cleanups
Fix docs
Add some more versions to interfaces
Make types for the various proxy object + inline methods that does type
checking and create proxys etc.
Set owner client of client-nodes in the properties
Pass type to bind to in create-node
Don't place global id in the info structs
Improve registration of marshal functions
Pass more types around as ids
2017-07-18 10:06:40 +02:00
Wim Taymans d1655196c3 move things around 2017-07-11 16:08:22 +02:00
Wim Taymans 68413d472f Update docs a little 2017-06-21 13:17:43 +02:00
AsciiWolf 8d5a3cdceb design: fix typo 2017-06-21 12:21:38 +02:00
Wim Taymans ab9b3ba85a docs: update 2017-06-16 16:25:19 +02:00
Wim Taymans 83964cec87 pinos -> pipewire 2017-05-23 19:15:33 +02:00
Wim Taymans 0398f997d7 cleanups
Update some docs
Remove special structs for some events
Remove some unused flags
Update some plugins
2017-01-19 18:10:00 +01:00
Wim Taymans 7e858ff694 Improve state handling
Improve the state handling in v4l2
Send buffers in one message
Update design doc
2016-08-25 17:07:40 +02:00
Wim Taymans de53315f6e Work on node creation
Implements the basics of the PORT_UPDATE control message
Add the ports to the proxy node with whe PORT_UPDATE control message.
Let the proxy node check the events and create dbus objects based on
added/removed ports.
2016-08-05 19:46:37 +02:00
Wim Taymans 3ace7e9648 More work on implementing remote protocol
Rework things so that we negotiate buffer pools beforehand and only pass
buffer ids around We can then remove the refcount of buffers, events and
commands.
More work on buffer reuse
Use the node state changes to trigger the next step in the configuration
sequence.
Move most of the client-node to a plugin
Do buffer allocation in the port link.
2016-08-02 16:34:44 +02:00
Wim Taymans 05829f33e6 Work on memory allocation
We now only allow per port preallocated buffers. We exchange the index
into the array instead of passing the buffers around. We still use the
refcount to track when a buffer can be reused.
Improve API a little, allow passing the node as the first argument of
the interface call.
Implement alloc_buffer in v4l2 and improve the test.
2016-07-30 20:35:34 +02:00
Wim Taymans 4cb90f3b86 Rework transport protocol
Remove the old PinosBuffer object and replace it with SpaControl, this
communication protocol is designed to make it possible to implement
remote nodes and so it is moved to Spa.
Move SpaBuffer into to API
Work on easier API to make formats, implement enumeration and support
for all formats in v4l2.
Improve format output in -inspect
2016-07-28 21:19:20 +02:00
Wim Taymans e167d30296 reintroduce channels
Bring back the channel object. Making a node and port on the client side
was rather awkward because of the async nature of many methods. It feels
better to have a specific communication channel object to interface with
a server side port.
Use port activate/deactivate to start/stop streams
Remove links from the ports. We let other objects install a callback on
the port to receive and route buffers.
2016-07-20 17:29:34 +02:00
Wim Taymans 4a5ed1e1f5 Rework how clients connect.
Add buffer flags. The idea is to make it possible to easily check when a
buffer contains control information that we need to parse to update the
port fields.
Make the client create remote nodes and ports and set up proxies for
them.
Make a port base class implementing most of the logic to pass buffers
locally and remotely.
Remove most code from stream.c, it's now in the port.
Make a portsink and portsrc that can write and read to/from any port. We
use these in the server to send and receive data.
Rework format negotiation. The final format is now sent in-line before
the data. The server will select a format on output ports.
2016-05-17 09:38:30 +02:00
Wim Taymans 8407430891 rework: make client and server nodes
work on making nodes and ports on the client.
2016-05-12 17:03:28 +02:00
Wim Taymans 91385a782e Remove vfunc from port
Update docs
Remove virtual functions from port, we don't want this to be changed.
2016-05-09 12:16:04 +02:00
Wim Taymans b885d40390 Introduce the concept of a Node
Make an object for a processing node.
Implement a sink node. Make it possible to implement Sink and Source
interfaces to provide input/output from the node.
Improve pinosdepay to track fds and handle format changes.
2016-05-05 13:31:18 +02:00
Wim Taymans d5e333ac4b add refresh message
Add a new refresh message to request a keyframe from the pinos server.
pinospay: pass the refresh-request message upstream
pinossink: turn refresh-request messages into events
pinossrc: turn a keyframe event into a refresh-request message
2016-04-13 13:04:32 +02:00
Wim Taymans 44f2c3602d add more debug statements 2016-04-11 15:26:15 +02:00
Wim Taymans 9bdc9d757a docs: update design docs
Update design docs with some info about how the lifecycle of fds
are managed.
2015-12-04 16:39:29 +01:00
Wim Taymans 48fdc1d37c doc updates 2015-09-30 13:00:14 +02:00
Wim Taymans fd276b4820 add continuation packet
Add continuation type packet that would make it possible to send
commands using a piece of shared memory.
2015-08-31 17:10:44 +02:00
Wim Taymans 8d1ad2ea63 More work on wire protocol
Make separate payload for the header.
Make release-fd payloads
capture_buffer -> peek_buffer to avoid a copy
remove release-buffer, we really need to release each fd in the buffer
separately.
provide_buffer -> send_buffer so that we can also use this to send the
release-fd messages.
in pinossrc, send back release-fd messages when the fd is no longer in
use.
2015-08-31 16:47:32 +02:00
Wim Taymans 0e03080002 Rework buffer API a little
Use BufferIter and BufferBuilder instead of Packet*
Make separate method to set the header so you can set it later and not
only at builder init time.
Add method to clear the builder if you want to abort.
Add method to add fd to builder instead of in _add_fd_payload. This
would make it easier to add multiple fd-payloads using data from the
same fd.
Pass PinosPacketFDPayload to add_fd_payload to make it symetric with the
parsing code. We should be able to get the size from the VERSION passed
when the builder was made.
Add ideas about releasing the fds back to the server.
2015-08-26 12:46:28 +02:00
Wim Taymans c47fcd8105 Rework the wire protocol
Send a command stream over the socket.
Implement a new buffer object that holds the data and commands.
Make iterator and builders to parse and construct buffers.
Rework gstreamer elements to use new API for creating and parsing
buffers.
Add _release_buffer to notify a stream when we are done processing the
buffer. This will eventually go all the way to the server and will allow
us to do more complicated buffer management.
2015-08-24 16:41:04 +02:00
Wim Taymans d0f3f3125b doc: add simple design doc 2015-08-21 11:46:29 +02:00
Wim Taymans 4b72848a1a Rename pulsevideo to pinos 2015-06-30 18:06:36 +02:00
Wim Taymans 4378f34664 docs: add dbus docs 2015-04-21 16:02:40 +02:00
Wim Taymans 3fba92fb74 Initial commit 2015-04-16 16:58:33 +02:00