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