Siavash Sameni
dbbab0decf
T5.8: Tier G response policy — Verdict enum + ResponsePolicy + typed Hangup::PolicyViolation + 9 tests
2026-05-12 15:13:20 +04:00
Siavash Sameni
5fda5ecc52
T5.7: Tier F audio scorer — IAT CoV + silence fraction + bitrate + Q-flag + bimodality + 11 tests
2026-05-12 15:09:28 +04:00
Siavash Sameni
2bbb664df4
T5.6: Per-receiver layer selection at SFU — ReceiverState + hysteresis + forwarding filter
2026-05-12 15:05:32 +04:00
Siavash Sameni
2f1a9f74d5
T5.5: 3-layer simulcast at sender — SimulcastEncoder + tick_simulcast() + 10 tests
2026-05-12 14:56:48 +04:00
Siavash Sameni
b197651557
T5.4: H.265 encoder/decoder wrappers — VideoToolbox + MediaCodec, CodecId::H265Main
2026-05-12 14:50:20 +04:00
Siavash Sameni
9c41d1acdd
T5.3 status: Approved (reviewer update)
2026-05-12 14:50:12 +04:00
Siavash Sameni
e34c40dc0f
T5.1.1: PriorityMode default = AudioFirst, QualityProfile backward-compat JSON, SetPriorityMode roundtrip
2026-05-12 14:50:06 +04:00
Siavash Sameni
c48cb6fbcb
T5.3: EncoderMode::SlideFallback — SD-floor detection + VideoEncoder::set_mode() trait hook
2026-05-12 12:40:53 +04:00
Siavash Sameni
2e0bdc5904
T5.2: VideoQualityController with per-mode allocation gates + 8-step target table
2026-05-12 12:34:32 +04:00
Siavash Sameni
276ecc660e
T5.1: PriorityMode enum + SetPriorityMode signal; extend QualityProfile with video fields
2026-05-12 12:21:40 +04:00
Siavash Sameni
001d94f9ae
T4.7 rework: make should_forward_pli take now: Instant + 6 unit tests
...
- Refactor should_forward_pli(room, stream_id) -> should_forward_pli(room, stream_id, now: Instant)
so the 200 ms dedup window is deterministically testable.
- Update the one caller in run_participant_signals to pass Instant::now().
- Add 6 PLI unit tests covering:
* first PLI forwards
* duplicate within 200 ms suppressed
* after 200 ms forwards again
* different streams independent
* different rooms independent
* no stream owner returns None
Addresses reviewer CR on T4.7 (line drawn at T4.6 — stateful relay features must
have state-transition tests).
wzp-relay tests: 93 -> 99 pass.
2026-05-12 11:39:35 +04:00
Siavash Sameni
36b0421d68
T4.7: PLI suppression at SFU — 200 ms dedup window per (room, stream_id)
2026-05-12 11:25:25 +04:00
Siavash Sameni
828fbea2ea
T4.6: SFU keyframe cache — per-(room,sender,stream) I-frame replay on join
2026-05-12 10:54:04 +04:00
Siavash Sameni
cc5aef2534
T4.5: I-frame FEC ratio boost — keyframe-aware repair ratio in RaptorQFecEncoder
...
- Add add_source_symbol_with_keyframe() default method to FecEncoder trait
- RaptorQFecEncoder tracks has_keyframe per block, uses keyframe_ratio
when generating repair symbols for keyframe blocks
- AdaptiveFec gains keyframe_repair_ratio (default 0.5) and wires it
through build_encoder()
- 3 new tests: keyframe boost, non-keyframe nominal ratio, finalize clears flag
- Update status board T4.5 -> Pending Review
2026-05-12 10:36:18 +04:00
Siavash Sameni
397f9d2141
T4.3.1: MediaCodec AMediaCodec wiring via ndk crate (Android); fix wzp-android build on non-Android
2026-05-12 10:03:43 +04:00
Siavash Sameni
410c2a4335
T4.2.1: Real VideoToolbox VTCompressionSession / VTDecompressionSession wiring (macOS)
2026-05-12 09:51:34 +04:00
Siavash Sameni
81042ac190
T4.4: SignalMessage::Nack + PictureLossIndication; NACK sender/receiver state machines
2026-05-12 09:25:29 +04:00
Siavash Sameni
e177e63843
T4.3: MediaCodec H.264 encoder/decoder stub (Android)
2026-05-12 09:15:06 +04:00
Siavash Sameni
1f7d130de9
fix: T4.2 status board → Pending Review
2026-05-12 09:10:50 +04:00
Siavash Sameni
3356ba94c6
T4.2: VideoToolbox H.264 encoder/decoder traits (macOS, MVP)
2026-05-12 09:09:57 +04:00
Siavash Sameni
bb153a331d
fix: T4.1 status board → Pending Review
2026-05-12 07:23:15 +04:00
Siavash Sameni
490d2d31c6
T4.1: wzp-video crate scaffold + H.264 NAL framer + depacketizer
2026-05-12 07:22:54 +04:00
Siavash Sameni
db69f7e9d1
fix: T3.5 status board → Pending Review
2026-05-12 06:46:28 +04:00
Siavash Sameni
f1b86e0fed
T3.5: Tier E per-session token bucket
2026-05-12 06:45:56 +04:00
Siavash Sameni
8454835c18
fix: T3.4 status board → Pending Review
2026-05-12 06:25:17 +04:00
Siavash Sameni
017c371611
T3.4: Tier D per-codec payload size sanity
2026-05-12 06:24:40 +04:00
Siavash Sameni
3220bd6151
fix: T3.2 status board — Committed → Pending Review
2026-05-12 06:14:07 +04:00
Siavash Sameni
e73f8a7150
T3.3: SignalMessage version field
2026-05-12 06:11:59 +04:00
Siavash Sameni
1b4f7b0772
T3.2: Document timestamp_ms monotonic across rekey + test
2026-05-11 21:19:03 +04:00
Siavash Sameni
f3398adb95
T3.1: RoomManager concurrency — Arc<RwLock<Room>> per room
2026-05-11 21:12:04 +04:00
Siavash Sameni
54c1a35186
T2.3-T2.6: BWE guard, relay conformance Tier A/B/C, Prometheus metrics
2026-05-11 20:50:22 +04:00
Siavash Sameni
3de56cf1f9
T2.2: BandwidthEstimator with cwnd/REMB target_send_bps
2026-05-11 19:16:25 +04:00
Siavash Sameni
fe1f9484bd
T2.1: Add SignalMessage::TransportFeedback
2026-05-11 19:06:45 +04:00
Siavash Sameni
0ef1f574ff
T1.8: Per-stream anti-replay window with configurable size
2026-05-11 16:56:09 +04:00
Siavash Sameni
b1c5837495
T1.7: Move QualityReport trailer inside AEAD payload
2026-05-11 16:42:25 +04:00
Siavash Sameni
6f81487778
T1.6: Protocol version negotiation in handshake
2026-05-11 15:53:04 +04:00
Siavash Sameni
5cdb50160a
T1.5.2: Workspace clippy hygiene + document pre-existing debt
2026-05-11 12:59:14 +04:00
Siavash Sameni
30d26fc7f6
T1.5.1: Remove unwrap() from encode_compact
2026-05-11 12:57:35 +04:00
Siavash Sameni
c93d302656
T1.5: Migrate emit/parse sites to v2 wire format
2026-05-11 12:37:32 +04:00
Siavash Sameni
9680b6ff34
T1.4.1: Add rustdoc on MiniHeaderV2 and MiniFrameContextV2 public items
2026-05-11 11:38:04 +04:00
Siavash Sameni
6b15b8f97c
T1.1.2: Address review — fix remaining stale 272 audio tests references
2026-05-11 11:35:15 +04:00
Siavash Sameni
6385b93391
T1.2.1: Add rustdoc on MediaType variants and methods
2026-05-11 11:33:58 +04:00
Siavash Sameni
6eb94f079d
T1.1.1: Address review — add rustdoc on impl MediaHeaderV2 constants and methods
2026-05-11 11:32:00 +04:00
Siavash Sameni
5580b794a4
T1.1.2: Refresh stale test-count figures in docs
2026-05-11 11:29:18 +04:00
Siavash Sameni
7c9ede9227
T1.1.1: Add rustdoc on MediaHeaderV2 fields
2026-05-11 11:22:21 +04:00
Siavash Sameni
e8866c6632
T1.4: Add v2 MiniHeader with seq_delta
2026-05-11 11:18:15 +04:00
Siavash Sameni
8c6e88ea68
T1.3: Widen CodecId wire representation to u8
2026-05-11 11:11:42 +04:00
Siavash Sameni
ffb92237be
T1.2: Add MediaType enum
2026-05-11 11:09:43 +04:00
Siavash Sameni
6af0539a72
T1.1: Add v2 MediaHeader type
2026-05-11 11:00:51 +04:00
Siavash Sameni
217567383d
fix(ui): timestamps in logs, proper call debounce, no cross-calling
...
- Copy/Share log now includes HH:MM:SS timestamps
- callInProgress stays true until call resolves (setup or hangup),
preventing multiple taps from firing multiple place_call offers
- Block place_call when there's a pending incoming call
- leaveVoice clears all call state (callInProgress, pendingCallId)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 19:16:20 +04:00