Skip to content

Commit 15d104e

Browse files
committed
format
1 parent c8ca2eb commit 15d104e

File tree

4 files changed

+32
-40
lines changed

4 files changed

+32
-40
lines changed

examples/local_audio/db_meter.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@ def format_dual_meters(mic_db: float, room_db: float) -> str:
136136
return f"{mic_meter}{room_meter}"
137137

138138

139-
def display_dual_db_meters(mic_db_receiver, room_db_receiver, room_name: str = "Audio Levels Monitor") -> None:
139+
def display_dual_db_meters(
140+
mic_db_receiver, room_db_receiver, room_name: str = "Audio Levels Monitor"
141+
) -> None:
140142
"""
141143
Display dual dB meters continuously until interrupted.
142144
@@ -152,7 +154,9 @@ def display_dual_db_meters(mic_db_receiver, room_db_receiver, room_name: str = "
152154

153155
print() # Start on a new line
154156
print(f"\x1b[92mRoom [{room_name}]\x1b[0m")
155-
print("\x1b[2m────────────────────────────────────────────────────────────────────────────────\x1b[0m")
157+
print(
158+
"\x1b[2m────────────────────────────────────────────────────────────────────────────────\x1b[0m"
159+
)
156160

157161
while True:
158162
# Check for new data (non-blocking)
@@ -174,7 +178,11 @@ def display_dual_db_meters(mic_db_receiver, room_db_receiver, room_name: str = "
174178
current_time = time.time()
175179
if current_time - last_update >= DB_METER_UPDATE_INTERVAL_MS / 1000.0:
176180
# Clear current line and display meters in place
177-
print(f"\r\x1b[K{format_dual_meters(current_mic_db, current_room_db)}", end="", flush=True)
181+
print(
182+
f"\r\x1b[K{format_dual_meters(current_mic_db, current_room_db)}",
183+
end="",
184+
flush=True,
185+
)
178186
last_update = current_time
179187

180188
# Small sleep to prevent busy waiting

examples/local_audio/full_duplex.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def on_track_unsubscribed(
8282
target=display_single_db_meter,
8383
args=(mic_db_queue,),
8484
kwargs={"label": "Mic Level: "},
85-
daemon=True
85+
daemon=True,
8686
)
8787
meter_thread.start()
8888

@@ -91,9 +91,7 @@ def on_track_unsubscribed(
9191

9292
# Monitor microphone dB levels
9393
async def monitor_mic_db():
94-
mic_stream = rtc.AudioStream(
95-
track, sample_rate=48000, num_channels=1
96-
)
94+
mic_stream = rtc.AudioStream(track, sample_rate=48000, num_channels=1)
9795
try:
9896
async for frame_event in mic_stream:
9997
frame = frame_event.frame

examples/local_audio/publish_mic.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,13 @@ async def main() -> None:
5757

5858
# Start dB meter display in a separate thread
5959
meter_thread = threading.Thread(
60-
target=display_single_db_meter,
61-
args=(mic_db_queue, "Mic: "),
62-
daemon=True
60+
target=display_single_db_meter, args=(mic_db_queue, "Mic: "), daemon=True
6361
)
6462
meter_thread.start()
6563

6664
# Monitor microphone dB levels
6765
async def monitor_mic_db():
68-
mic_stream = rtc.AudioStream(
69-
track, sample_rate=48000, num_channels=1
70-
)
66+
mic_stream = rtc.AudioStream(track, sample_rate=48000, num_channels=1)
7167
try:
7268
async for frame_event in mic_stream:
7369
frame = frame_event.frame

livekit-rtc/livekit/rtc/media_devices.py

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def __init__(
149149
self._play_task: Optional[asyncio.Task] = None
150150
self._running = False
151151
self._delay_estimator = delay_estimator
152-
152+
153153
# Internal mixer for add_track/remove_track API
154154
self._mixer: Optional[AudioMixer] = None
155155
self._track_streams: dict[str, AudioStream] = {} # track.sid -> AudioStream
@@ -223,21 +223,14 @@ def add_track(self, track: Track) -> None:
223223
"""
224224
if track.sid in self._track_streams:
225225
raise ValueError(f"Track {track.sid} already added to player")
226-
226+
227227
# Create mixer on first track addition
228228
if self._mixer is None:
229-
self._mixer = AudioMixer(
230-
sample_rate=self._sample_rate,
231-
num_channels=self._num_channels
232-
)
233-
229+
self._mixer = AudioMixer(sample_rate=self._sample_rate, num_channels=self._num_channels)
230+
234231
# Create audio stream for this track
235-
stream = AudioStream(
236-
track,
237-
sample_rate=self._sample_rate,
238-
num_channels=self._num_channels
239-
)
240-
232+
stream = AudioStream(track, sample_rate=self._sample_rate, num_channels=self._num_channels)
233+
241234
self._track_streams[track.sid] = stream
242235
self._mixer.add_stream(stream)
243236

@@ -252,13 +245,13 @@ async def remove_track(self, track: Track) -> None:
252245
stream = self._track_streams.pop(track.sid, None)
253246
if stream is None:
254247
return
255-
248+
256249
if self._mixer is not None:
257250
try:
258251
self._mixer.remove_stream(stream)
259252
except Exception:
260253
pass
261-
254+
262255
try:
263256
await stream.aclose()
264257
except Exception:
@@ -276,13 +269,10 @@ async def start(self) -> None:
276269
"""
277270
if self._play_task is not None and not self._play_task.done():
278271
raise RuntimeError("Playback already started")
279-
272+
280273
if self._mixer is None:
281-
self._mixer = AudioMixer(
282-
sample_rate=self._sample_rate,
283-
num_channels=self._num_channels
284-
)
285-
274+
self._mixer = AudioMixer(sample_rate=self._sample_rate, num_channels=self._num_channels)
275+
286276
async def _playback_loop():
287277
"""Internal playback loop that consumes frames from the mixer."""
288278
self._running = True
@@ -300,40 +290,40 @@ async def _playback_loop():
300290
self._stream.close()
301291
except Exception:
302292
pass
303-
293+
304294
self._play_task = asyncio.create_task(_playback_loop())
305295

306296
async def aclose(self) -> None:
307297
"""Stop playback and close the output stream.
308-
298+
309299
This also cleans up all added tracks and the internal mixer.
310300
"""
311301
self._running = False
312-
302+
313303
# Cancel playback task if running
314304
if self._play_task is not None and not self._play_task.done():
315305
self._play_task.cancel()
316306
try:
317307
await self._play_task
318308
except asyncio.CancelledError:
319309
pass
320-
310+
321311
# Clean up all track streams
322312
for stream in list(self._track_streams.values()):
323313
try:
324314
await stream.aclose()
325315
except Exception:
326316
pass
327317
self._track_streams.clear()
328-
318+
329319
# Close mixer
330320
if self._mixer is not None:
331321
try:
332322
await self._mixer.aclose()
333323
except Exception:
334324
pass
335325
self._mixer = None
336-
326+
337327
# Close output stream
338328
try:
339329
self._stream.stop()

0 commit comments

Comments
 (0)