Skip to content

obs-moq v0.6.17

Choose a tag to compare

@github-actions github-actions released this 17 Oct 21:13
· 966 commits to main since this release
dc937cd

What's Changed

  • fix(ffi): refuse destroyed binding arguments by @kixelated in #5644
  • feat(quic)!: run moq-tokio and moq-uring on moq-quic by @kixelated in #5664
  • quest(test): abandon the unreproduced auth serve signal flake by @kixelated in #5707
  • fix(moq-mux): judge a source's clock on slack the floors saw by @kixelated in #5714
  • feat(js)!: read time and arm timers through @moq/clock by @kixelated in #5706
  • quest: abandon moq-transport subgroups by @kixelated in #5704
  • test(cli): keep the TS resume capture on its media clock by @kixelated in #5710
  • feat(relay): expose announce metrics by @kixelated in #5696
  • quest: settle stats prefix track wire shape by @kixelated in #5719
  • docs(quest): finish the hard fork epic by @kixelated in #5728
  • fix: preserve internal teardown and import error causes by @kixelated in #5692
  • bench(net): measure group delivery and retire a no-win refresh candidate by @kixelated in #5698
  • fix(publish): stamp a resumed video reader's first frame on the capture clock by @kixelated in #5712
  • quest: plan Platform queue fixes and fail-loud follow-ups by @kixelated in #5737
  • perf(net): count track demand incrementally by @kixelated in #5670
  • fix(watch): drop video queued before a playhead skip by @kixelated in #5649
  • feat(hls)!: serve range-addressed playlists by @kixelated in #5705
  • fix(tokio): reload TLS only when the watched files change by @kixelated in #5716
  • feat(archive)!: record and replay untimed tracks untimed by @kixelated in #5720
  • test(net): pin draft-16 refusal of moxygen's unregistered filter type by @kixelated in #5709
  • fix(video): trim orphan leading pictures after delivery breaks by @kixelated in #5666
  • fix(net): prove native futures Send at the default recursion limit by @kixelated in #5682
  • fix(publish): propagate camera rotation by @kixelated in #5646
  • quest: settle private PES timing and headers by @kixelated in #5718
  • fix(ts): keep the program tables within TBsys and Bsys by @t0ms in #5606
  • feat(quic): hold connection credit until the receiver releases it by @kixelated in #5675
  • fix(quic): fail a dial at once when the peer has no route by @kixelated in #5668
  • ci: drop disk cleanup and skip the Rust cache for lint-only runs by @kixelated in #5683
  • quest: plan per-package MIGRATE.md and the release API-diff check by @kixelated in #5742
  • quest: plan unbounded groups and frames by @kixelated in #5750
  • docs(quest): narrow the next release and reconcile stale plans by @kixelated in #5679
  • fix(auth): distinguish expired credentials by @kixelated in #5641
  • fix(ts): start an export on a whole group and count every drop by @kixelated in #5713
  • quest(m1): plan the public model surface by @kixelated in #5717
  • docs: note that release is stable and packages follow semver by @kixelated in #5754
  • quest: plan a minimum reader version for the hang catalog by @kixelated in #5756
  • fix(play): never resubscribe to a track that already finished by @kixelated in #5764
  • feat(quic)!: shard the relay's QUIC endpoint per core by default by @kixelated in #5688
  • feat(quic)!: reliable reset from a send-stream checkpoint by @kixelated in #5690
  • quest(m1): plan a regression net for moq-quic by @kixelated in #5767
  • test: link each crate's integration tests into one binary by @kixelated in #5689
  • fix(sock): gate the Linux-only shard test helper by @kixelated in #5769
  • test(browser): run media QA with alternate player engines by @kixelated in #5640
  • chore(quest): close merged bench bucket backport by @kixelated in #5738
  • bench(net): give held readers distinct demand preferences by @kixelated in #5747
  • quest: reopen the WASM IETF read and BBR marking flakes by @kixelated in #5751
  • docs(agents): prioritize moq-net and moq-lite over moq-transport by @kixelated in #5753
  • build(rs): add just rs coverage and a nightly moq-quic report by @kixelated in #5772
  • fix(quic): announce stream limits that arrive after a refused open by @kixelated in #5774
  • feat(ffi)!: namespace native codecs by @kixelated in #5694
  • quest: stats tracks fail loud on an oversized frame by @kixelated in #5739
  • test(relay): reserve the unavailable auth endpoint by @kixelated in #5768
  • chore(uniffi-bindgen): skip the generator fork in a plain check by @kixelated in #5776
  • test(quic): fuzz moq-quic like moq-net by @kixelated in #5779
  • fix(gst): never resubscribe to a track that already finished by @kixelated in #5775
  • test: link the remaining multi-file test suites into one binary by @kixelated in #5787
  • quest(m1): plan refresh, new groups on demand by byte ratio by @kixelated in #5734
  • docs(quest): finish WebTransport refusal delivery verification by @kixelated in #5743
  • quest(m0): finish the Kotlin wrapper POM release by @kixelated in #5789
  • Enforce fetch age budgets by @kixelated in #5680
  • fix(watch,publish): keep the delay across a rename and close frames read during teardown; cover renames in media QA by @kixelated in #5635
  • chore(moq-ffi): drop unused uniffi build-dependency by @kixelated in #5786
  • refactor(quic)!: delete the unused NewReno controller by @kixelated in #5791
  • quest(m0): finish smoke-stitcher by @kixelated in #5793
  • feat(quic)!: hierarchical send groups, one per subscription by @kixelated in #5711
  • ci(dart): build moq-ffi once in the Dart check by @kixelated in #5797
  • fix(net): judge a pending tail by recorded arrivals, and error a short one by @kixelated in #5802
  • quest(ci): record the first Nightly after FFI reuse by @kixelated in #5799
  • fix(ts): hold audio behind a stale start group's next keyframe by @kixelated in #5810
  • quest: pin benchmark cores and fold moq-quic into bench CI by @kixelated in #5814
  • quest(m1): plan the audio rename estimate and the update-after-finish race by @kixelated in #5788
  • test(net): cover a repeated Lite SETUP parameter by @kixelated in #5790
  • bench(quic): Criterion sweeps of streams, receive, routing, and wire by @kixelated in #5812
  • feat(hang): define media stats and viewer feedback schemas by @kixelated in #5643
  • feat(auth): carry nested bitrate caps and refuse unenforced grants by @kixelated in #5697
  • feat(archive)!: declare per-track durations by @kixelated in #5715
  • fix(ietf): refuse a compact-form subgroup other than 0 by @kixelated in #5792
  • fix(net): close the session on malformed moq-transport input by @kixelated in #5800
  • quest(m2): map GPU health sources and settle the snapshot API by @kixelated in #5730
  • fix(shaper): keep forwarding after a peer's port goes away by @kixelated in #5796
  • test(ts): grade the export over a lossy path, finish the T-STD epic by @kixelated in #5805
  • quest(m1): build TS recovery on #5713's whole-group start by @kixelated in #5746
  • test(quic): seeded, impaired simulation in Pair, BBR3 by default, and property tests by @kixelated in #5780
  • chore(quest): finish one enter per turn by @kixelated in #5813
  • feat(net): bare track handles are lazy by @kixelated in #5820
  • fix(play)!: drain clean encoder segments before resuming by @kixelated in #5687
  • fix(audio-quality): flush the build before the first row by @kixelated in #5807
  • fix(stats): end a stats track whose frame outgrows the cache by @kixelated in #5826
  • fix(ci): limit Discord alerts to cron and publishing failures by @kixelated in #5828
  • fix(import): require a servable track before announcing by @kixelated in #5642
  • quest: delete the refusal-close release backport quests by @kixelated in #5831
  • test(net): verify the front expiry index and close its duplicate quest by @kixelated in #5763
  • feat(quic)!: schedule datagrams in their send group by @kixelated in #5770
  • feat(obs): back an internal Opus encoder with moq-audio by @kixelated in #5835
  • feat(obs): decode MoQ Source audio with moq-audio instead of FFmpeg by @kixelated in #5837
  • feat(cpp): reuse validated shared FFI native inputs by @kixelated in #5740
  • fix(net): a subscribe update racing a finished track ends it cleanly by @kixelated in #5833
  • quest(m1): plan fuzz crypto, richer sim workloads, and a relay drill flake by @kixelated in #5785
  • ci(nightly): split the Rust benchmarks into two legs by @kixelated in #5823
  • fix(watch): keep the audio arrival estimate across a rename by @kixelated in #5824
  • feat(net): relay moq-transport NEW_GROUP_REQUEST to DYNAMIC_GROUPS publishers by @kixelated in #5708
  • quest: prove complete and fresh route handoff by @kixelated in #5701
  • feat(hang): video rendition preference by @kixelated in #5840
  • doc(lib): a layers page maps each Rust crate to every binding by @kixelated in #5829
  • quest: recommend a hosted Go module proxy for moq-ffi by @kixelated in #5853
  • bench: pin hybrid-CPU runs to the performance cores by @kixelated in #5825
  • test(quic): characterize moq-quic behavior by @kixelated in #5781
  • Forward subscribe drops early by @kixelated in #5691
  • feat(mux): export whole-PES tracks at their placement by @kixelated in #5832
  • feat(ffi)!: media subscribe and fetch take a catalog rendition by @kixelated in #5834
  • feat(obs)!: follow the bandwidth grant in the OBS video encoder by @kixelated in #5845
  • perf(uring): remove avoidable copies on egress, streams, and datagram receive by @kixelated in #5843
  • feat(net)!: let live announcements renew their auth by @kixelated in #5695
  • feat(stats): count refused and failed sessions by @kixelated in #5659
  • fix(ci): get the Nightly workloads green by @kixelated in #5841
  • quest(m2): poll-native async spike results, plan the moq-ffi migration by @kixelated in #5851
  • fix(rtc): pace a pending WHEP switch to the new rung by @kixelated in #5852
  • test(ts): grade the passthrough export packet by packet against its source by @kixelated in #5856
  • bench(browser): real-browser transport, CMAF, and publish/watch benchmarks by @kixelated in #5847
  • feat(mux): import fMP4 TTML captions onto the catalog clock by @kixelated in #5855
  • feat(relay): automatic ACME (Let's Encrypt) certificates by @kixelated in #5858
  • Migrate network timing onto moq-clock by @kixelated in #5681
  • feat(ffi): configure and observe audio playout delay in every binding by @kixelated in #5844
  • feat(dart): ship codecs and expose audio and video namespaces by @kixelated in #5839
  • feat: grade native moq play in the audio quality lane by @kixelated in #5860
  • feat(relay): widen QUIC limits for cluster peers by @kixelated in #5674
  • feat(e2ee): add the @moq/e2ee TypeScript core by @kixelated in #5818
  • feat(video)!: Color carries primaries and transfer, decoded pictures keep their stream's colour by @kixelated in #5808
  • fix(net): give requests one fatal create-to-answer deadline by @kixelated in #5741
  • fix(uring): close connections when the last session handle drops by @kixelated in #5748
  • fix(ts): grade PCR rate on the read floor, between lag steps by @kixelated in #5749
  • fix(mux): put a live export's budget on its first SUBSCRIBE by @kixelated in #5854
  • fix(mux): preserve unknown TS stream-type bytes by @kixelated in #5778
  • test(archive): exercise recording proof through S3 HTTP by @kixelated in #5760
  • feat(tokio): WebRTC data channel transport over str0m by @kixelated in #5702
  • feat(ffi): report the session's negotiated version and reconnect failure for OBS by @kixelated in #5723
  • bench(ffi-gen): compare BoltFFI with UniFFI on a moq-ffi slice by @kixelated in #5736
  • fix(quic): isolate BBR loss samples from ACK state by @kixelated in #5757
  • test(wasm): pace the read case's publisher by its reader by @kixelated in #5827
  • fix(mux): populate display aspect across known-SPS importers by @kixelated in #5755
  • feat(stats): requested prefix tracks with rollup, self, and children by @kixelated in #5811
  • feat(mux)!: mark a data track's break with an object of no bytes by @kixelated in #5815
  • feat(bench): one relay profiling recipe with lock, cpu, and heap modes by @kixelated in #5830
  • test(mux): reproduce the live export's burst loss over a session by @kixelated in #5857
  • test(net): cover the 64 KiB cap in the default poll_read_buf by @kixelated in #5744
  • feat(bench): measure Swift Dart and C++ binding overhead by @kixelated in #5745
  • feat(relay): serve moq-transport from the io_uring workers by @kixelated in #5821
  • refactor(net): narrow the model and mark what sessions reach by @kixelated in #5794
  • test(gst): refuse the redial on the live listener instead of rebinding its port by @kixelated in #5870
  • fix(net): apply and answer draft 14-16 request updates by @kixelated in #5798
  • test(wasm): choose UniFFI-generated moq-ffi as the browser binding by @kixelated in #5838
  • moq-video: two decoders for warmup renditions in decode::Consumer by @kixelated in #5842
  • feat(ffi,obs): client settings parity for OBS by @kixelated in #5726
  • fix(quic): report unreachable sends through moq-quic by @kixelated in #5868
  • fix(relay): share connection lifecycle across runtimes by @kixelated in #5761
  • feat(hang): catalog colour model, filled from bitstream then container by @kixelated in #5846
  • fix(net): gate incoming requests at dispatch by @kixelated in #5782
  • feat(hang)!: refuse a catalog that needs a newer reader by @kixelated in #5806
  • feat(stats): collect owned transport wire counters by @kixelated in #5773
  • feat(net): announce consumers report when they have synced by @kixelated in #5724
  • feat(net)!: a finished broadcast stays up until its media is stale by @kixelated in #5795
  • quest: plan the TS export's remaining MP2 join hole by @kixelated in #5874
  • test(clock): drive a bindings runtime from a Python test clock by @kixelated in #5733
  • quest: plan HLS end drain, relay peer address, RTMP errors, usage-rs 7 by @kixelated in #5877
  • feat(cpp)!: generate unprefixed names and one moq::expected by @kixelated in #5727
  • docs(net): spell out route-change semantics for agents by @kixelated in #5866
  • feat(net): a timed track refuses a group that rewinds by @kixelated in #5803
  • fix(ts): split and buffer-model DVB E-AC-3 access units by @kixelated in #5758
  • refactor(quic)!: one Limits type for both QUIC runtimes by @kixelated in #5871
  • Follow epochless restarts in exports and bindings by @kixelated in #5700
  • fix(net): request PROBE only while consumers are held by @kixelated in #5777
  • feat(net)!: carry group ranges on track::Subscription by @kixelated in #5732
  • fix(moq-c): hold the wait so the end-gap follow test sees the gap by @kixelated in #5886
  • quest: plan follow-ups from the Oct 17 merge run by @kixelated in #5884

Full Changelog: obs-moq-v0.6.16...obs-moq-v0.6.17