Repository navigation
fix(calls): スピーカー追加・交代時の音声断と再生再開要求を修正 - #83
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (7)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughCallsの音声出力を、個別の音声要素から共有出力コントローラーへ移行しました。受信トラックの再利用、トラック置換時の削除判定、音量設定、再生再開、終了処理を更新し、関連するテストと調査報告を追加しました。 Changes通話音声出力
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant CallsSession
participant CallsAudioOutput
participant AudioContext
participant HTMLAudioElement
CallsSession->>CallsAudioOutput: add(id, track)
CallsAudioOutput->>AudioContext: 入力ソースとゲインを出力ストリームへ接続
CallsSession->>CallsAudioOutput: play()
CallsAudioOutput->>AudioContext: resume()
CallsAudioOutput->>HTMLAudioElement: 出力ストリームを設定してplay()
Merge Risk: ⚪ Minimal · up to The audio changes are ready for normal merge checks; Safari and multi-device testing remain useful follow-up validation. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 6 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Warning Some tools did not complete. Review the errors below. 🔧 ESLint
packages/frontend/src/utility/calls-audio-output.tsESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox. packages/frontend/src/utility/calls-media.tsESLint skipped: the matched ESLint configuration already failed (missing-dependency). packages/frontend/src/utility/calls-session.tsESLint skipped: the matched ESLint configuration already failed (missing-dependency).
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 話者の声が集まります Comment |
🖥 Frontend Diagnostics Report(No significant changes) Requests by resource type
V8 heap snapshot statistics
📦 Bundle StatsChunk size diff (0 updated, 0 added, 0 removed)
Startup chunk size (0 updated, 0 added, 0 removed)
Startup chunks are the Vite entry for
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
What
Callsのスピーカー追加・交代時に音声を維持する修正です。
Why
「スピーカーが増えると誰かが聞こえなくなる」「iPhoneで話者追加ごとに音声再生の再開が必要になる」という報告への対応です。受信トラックの停止と古いended通知による削除は、修正前ソースで回帰テストが失敗することを確認しました。
iPhoneの症状は、非同期の受信処理で再生先を毎回新しく作り、要素単位の再生許可を引き継げない経路と整合します。実機ログはないため、報告された全事例の原因を断定していません。
Additional info (optional)
原因・再現・検証レポート
flowchart LR A["既存話者の音声"] --> GA["個別音量"] B["追加話者の音声"] --> GB["個別音量"] GA --> M["固定の出力ストリーム"] GB --> M M --> E["一つの音声要素"] R["再開操作"] --> C["AudioContext.resume() と play()"] C --> E検証は通話関連unit test 3ファイル118件、frontendのvue-tsc、変更実装3ファイルのESLint、SPDX、locale safetyが成功しています。実ブラウザのスモークではChromium 153.0.8010.12で二人の信号が混ざること、一人の音量をゼロにしても他方が残ること、全音源を外した後の追加でも同じ出力が再生を続けることを確認しました。スモークの再実行コードも含めています。
iPhone/Safari実機とCloudflare SFU経由の複数端末E2Eは未実施です。初回の再生許可やOSによる中断後には、再開操作が必要になり得ます。DB・API・localeの変更はありません。CHANGELOGは明示依頼がないため変更せず、候補をレポートに記載しました。関連Issueは検索で見つからず、今回の報告を起点にしています。
Checklist