mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
ahh!!
This commit is contained in:
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
+15
-14
@@ -1,25 +1,26 @@
|
|||||||
# Use the Google Voice HAT soundcard as the primary device by name (card id is "sndrpigooglevoi")
|
# Use the Google Voice HAT soundcard as the primary device by name (card id is "sndrpigooglevoi")
|
||||||
options snd_rpi_googlevoicehat_soundcard index=0
|
options snd_rpi_googlevoicehat_soundcard index=0
|
||||||
|
|
||||||
# Simple defaults: direct playback/capture on the voice HAT
|
# Software playback volume (adjust with: amixer -c0 sset 'SoftMaster' 70%)
|
||||||
|
pcm.softvol {
|
||||||
|
type softvol
|
||||||
|
slave.pcm "hw:0,0"
|
||||||
|
control {
|
||||||
|
name "SoftMaster"
|
||||||
|
card 0
|
||||||
|
}
|
||||||
|
min_dB -51.0
|
||||||
|
max_dB 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Defaults: playback through softvol, capture raw on the HAT
|
||||||
pcm.!default {
|
pcm.!default {
|
||||||
type asym
|
type asym
|
||||||
playback.pcm "plughw:0,0"
|
playback.pcm "softvol"
|
||||||
capture.pcm "plughw:0,0"
|
capture.pcm "hw:0,0"
|
||||||
}
|
}
|
||||||
|
|
||||||
ctl.!default {
|
ctl.!default {
|
||||||
type hw
|
type hw
|
||||||
card 0
|
card 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# Stable capture device for ffmpeg/roverd: exposes the HAT at fixed format/rate.
|
|
||||||
pcm.rovermic {
|
|
||||||
type plug
|
|
||||||
slave {
|
|
||||||
pcm "hw:0,0"
|
|
||||||
format S32_LE
|
|
||||||
rate 48000
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+1
-1
@@ -256,7 +256,7 @@ func clampFloat(value, min, max float64) float64 {
|
|||||||
|
|
||||||
func validateAudioConfig(cfg *AudioConfig) {
|
func validateAudioConfig(cfg *AudioConfig) {
|
||||||
if cfg.CaptureEnabled && cfg.CaptureDevice == "" {
|
if cfg.CaptureEnabled && cfg.CaptureDevice == "" {
|
||||||
cfg.CaptureDevice = "rovermic"
|
cfg.CaptureDevice = "hw:0,0"
|
||||||
}
|
}
|
||||||
if cfg.SampleRate <= 0 {
|
if cfg.SampleRate <= 0 {
|
||||||
cfg.SampleRate = 48000
|
cfg.SampleRate = 48000
|
||||||
|
|||||||
@@ -204,16 +204,6 @@ export default function VideoTile({
|
|||||||
: detail
|
: detail
|
||||||
? `${status} (${detail})`
|
? `${status} (${detail})`
|
||||||
: status;
|
: status;
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
useEffect(() => {
|
|
||||||
if (!audioSessionInfo?.url && !sessionInfo?.url) return;
|
|
||||||
console.info('VideoTile sessions', {
|
|
||||||
video: sessionInfo,
|
|
||||||
audio: audioSessionInfo,
|
|
||||||
status,
|
|
||||||
audioStatus,
|
|
||||||
});
|
|
||||||
}, [sessionInfo, audioSessionInfo, status, audioStatus]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col gap-0.5">
|
<div className="flex flex-col gap-0.5">
|
||||||
|
|||||||
@@ -99,8 +99,6 @@ export function useVideoRequests(sourceList = []) {
|
|||||||
socket.emit('video:request', payload, (resp = {}) => {
|
socket.emit('video:request', payload, (resp = {}) => {
|
||||||
if (cancelled) return;
|
if (cancelled) return;
|
||||||
if (!resp || resp.error || !resp.url || !resp.token) {
|
if (!resp || resp.error || !resp.url || !resp.token) {
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.warn('video:request failed', { entry, resp });
|
|
||||||
scheduleRetry(entry);
|
scheduleRetry(entry);
|
||||||
setSources((prev) => ({
|
setSources((prev) => ({
|
||||||
...prev,
|
...prev,
|
||||||
@@ -110,8 +108,6 @@ export function useVideoRequests(sourceList = []) {
|
|||||||
}
|
}
|
||||||
clearRetry(entry.key);
|
clearRetry(entry.key);
|
||||||
setSources((prev) => ({ ...prev, [entry.key]: resp }));
|
setSources((prev) => ({ ...prev, [entry.key]: resp }));
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.info('video:request ok', { entry, url: resp.url });
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,8 +82,7 @@ export class WhepPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pc.onconnectionstatechange = () => {
|
pc.onconnectionstatechange = () => {
|
||||||
const state = pc.connectionState;
|
this.notify(pc.connectionState);
|
||||||
this.notify(state);
|
|
||||||
};
|
};
|
||||||
pc.oniceconnectionstatechange = () => {
|
pc.oniceconnectionstatechange = () => {
|
||||||
const state = pc.iceConnectionState;
|
const state = pc.iceConnectionState;
|
||||||
|
|||||||
Reference in New Issue
Block a user