Граф коммитов

77 Коммитов

Автор SHA1 Сообщение Дата
Mathieu Duponchelle 3e5538c361 address nightly clippy warnings 2022-05-26 18:33:08 +02:00
Mathieu Duponchelle b4c71d9b85 Dockerfile: update to use monorepo 2022-05-26 18:33:08 +02:00
Mathieu Duponchelle d8aef952d0 server: replace our StreamProducer implementation with the upstream one
We still keep a wrapper around it as we need our implementation to
keep track of consumer ids.
2022-05-26 18:33:08 +02:00
Mathieu Duponchelle 1376a0aeea Refresh all outdated dependencies 2022-05-26 18:33:08 +02:00
Mathieu Duponchelle 205bd41de3 Refresh all outdated dependencies 2022-02-27 04:02:32 +01:00
Mathieu Duponchelle 92e07782a6 Implement support for basic stream type selection
As `fallbacksrc` doesn't allow for in-depth stream selection, this
only adds support for connecting audio and video streams independently,
and enabling and disabling video or audio for each node type.
2022-02-21 23:54:05 +01:00
Mathieu Duponchelle 102f8bef98 PipelineManager: dump to dot on state change 2022-02-21 23:54:05 +01:00
Mathieu Duponchelle 3b40b04f83 API: remove Graph / Node sublevels [API break] 2021-08-19 02:58:46 +02:00
Mathieu Duponchelle 371bdc9828 MixerInfo: extend to include current settings [API break] 2021-08-19 02:58:46 +02:00
Mathieu Duponchelle e05e9ad597 mixer: implement RemoveControlPoint 2021-08-19 02:58:46 +02:00
Mathieu Duponchelle 31e6f55d75 property_controller: add support for enum properties 2021-08-19 02:58:46 +02:00
Mathieu Duponchelle 7cba130938 API: Implement support for node control points [API break]
+ Switch Mixer to accept optional settings through a standardized
  API

+ Make Mixer sample rate non-controllable, changing the sample
  rate on the fly has limited interest, and the implementation
  wasn't really useful either.
2021-08-19 02:58:46 +02:00
Mathieu Duponchelle baebf8fb0d mixer: remove SetSlotVolume command [API break]
This can be done with the connect configuration and the
control-point API
2021-08-19 02:58:46 +02:00
Mathieu Duponchelle 327b2d1788 node: implement initial configuration for consumer slots [API break] 2021-08-19 02:58:46 +02:00
Mathieu Duponchelle a0f9b72821 API: add new LocalPlayback destination family 2021-08-19 02:58:46 +02:00
Mathieu Duponchelle 90dc481bc3 chore: update server application blurb 2021-08-07 18:44:29 +02:00
Mathieu Duponchelle ff1b5ef41c chore: split up utils into multiple source files 2021-08-04 06:10:21 +02:00
Mathieu Duponchelle 55c6422a25 mixer: output pixel format with alpha
This lets compositor select an alpha-capable format to perform
mixing in, enabling usage of mixers to implement overlays.
2021-08-01 18:37:38 +02:00
Mathieu Duponchelle dd1bebcd64 Expose API to control properties over time
This initial version only supports controlling properties of mixer
slots, the API is generic however and should be easy to implement
for other nodes (eg Filter nodes when implemented).

Any property exposed by the mixer pads can be controlled through
that API, provided it is writable, readable if interpolating,
numerically-typed, or boolean / string if mode is "Set".

+ Update MixerInfo to include control points [API break]

+ Add sample script to demonstrate usage, `crossfade.py`
2021-07-31 00:29:43 +02:00
Mathieu Duponchelle 2612b9054e PipelineManager: set base and start time at creation
Otherwise the pipeline might go to PLAYING before the manager
is actually started
2021-07-17 01:23:22 +02:00
Mathieu Duponchelle 32b3781810 source: set PLAYING state synchronously
The state change will be immediate anyway, and it eliminates
a potential race that occured during CI where by the time set_state
PLAYING was called the source had been rescheduled, and we tried
to connect pads to appsinks that had been moved to another pipeline.
2021-07-13 01:46:14 +02:00
Mathieu Duponchelle 2a47d7d6d9 tests: harden get_now() implementation
This is really quite unfortunate, but Instant::now()
is actually *not* monotonic on certain systems.
2021-07-13 01:42:50 +02:00
Mathieu Duponchelle 5be7906ee0 destination: implement basic test 2021-07-13 01:41:58 +02:00
Mathieu Duponchelle f81c48ed0d source: enable now opt-in immmediate-fallback 2021-07-03 00:42:14 +02:00
Mathieu Duponchelle 2572567aec check in Dockerfile 2021-07-02 19:19:30 +02:00
Mathieu Duponchelle 7eec04faa9 chore: fix clippy warnings 2021-07-02 19:00:44 +02:00
Mathieu Duponchelle 50ac48da54 chore: rename to Auteur 2021-06-25 03:18:13 +02:00
Mathieu Duponchelle ece1c45e46 tests: add test asset 2021-06-25 03:02:45 +02:00
Mathieu Duponchelle 030d166d14 extend node status message 2021-06-20 02:44:58 +02:00
Mathieu Duponchelle c5bcace793 controller: tidy up CommandResult [API break] 2021-06-20 01:50:19 +02:00
Mathieu Duponchelle 83d82ea393 rename Status command to GetInfo [API break] 2021-06-20 00:22:56 +02:00
Mathieu Duponchelle 62c1649a79 tests: support unit tests with synthetic times
+ make use of tokio::time::pause()

+ implement a test-specific method to retrieve "now" so that
  time-aware unit tests can complete immediately yet deterministically
2021-06-14 22:04:24 +02:00
Mathieu Duponchelle a52c1e5773 chore: add unit tests [new API] 2021-06-14 03:12:03 +02:00
Mathieu Duponchelle 362908edab refactor: factor out state machine as Schedulable trait 2021-06-13 18:45:05 +02:00
Mathieu Duponchelle cde53eab47 refactor: rename node::NodeStatus -> node::State [API break] 2021-06-12 16:36:21 +02:00
Mathieu Duponchelle ecff80137a refactor: unify stopped message [API break] 2021-06-12 05:15:49 +02:00
Mathieu Duponchelle c3bb2e4e0a refactor: unify start command [API break] 2021-06-12 04:59:18 +02:00
Mathieu Duponchelle 6191f4af8e refactoring: switch to shared Status enum [API break] 2021-06-12 04:34:12 +02:00
Mathieu Duponchelle 96a2be43f7 chore: document 2021-06-12 01:26:05 +02:00
Mathieu Duponchelle fa94258f7e tracing: make use of ActorInstrument 2021-06-11 20:10:56 +02:00
Mathieu Duponchelle f98e3fc85b channel.rs: remove, obsolete now 2021-06-11 20:10:11 +02:00
Mathieu Duponchelle f3bdfd6365 implement basic audio monitoring on sources and mixers
and play around with tracing_appender, the previous implementation
was blocking on stdout at high tracing levels, also implement
tracing to file
2021-06-08 03:39:02 +02:00
Mathieu Duponchelle 2fe2cf12b8 destination: add local file family
As we output to MP4, this required shuffling things around in
order to propagate EOS to the muxer, both on regular scheduled
stop, and on program interruption (eg SIGINT).
2021-06-08 00:15:22 +02:00
Mathieu Duponchelle 3407f57249 destination: surface rtmp2sink statistics 2021-06-06 02:55:50 +02:00
Mathieu Duponchelle 90778fc4b7 source: surface urisourcebin statistics 2021-06-06 02:23:49 +02:00
Mathieu Duponchelle 94b1000667 StreamConsumer: log when appsrc is dropping data
This can raise "false" positives with destinations that are slow
to set up, eg rtmp, so the level is only trace for now. This
can be revisited to warn if destination also get a "prerolling"
status.
2021-06-05 02:38:19 +02:00
Mathieu Duponchelle 5175fccd88 chore: don't unwrap on MailBox errors 2021-06-05 01:55:44 +02:00
Mathieu Duponchelle 75d0220bfb use nvh264enc in priority over x264enc 2021-06-05 01:30:58 +02:00
Mathieu Duponchelle 8843afba58 implement method to retrieve status of one or all nodes 2021-06-05 00:56:37 +02:00
Mathieu Duponchelle 92f720fc60 mixer: add support for setting per-slot volume 2021-06-04 20:39:06 +02:00