#!/bin/bash

# Verificar que jq esté instalado
if ! command -v jq &> /dev/null
then
    echo "El comando jq no está instalado. Por favor, instálalo e intenta nuevamente."
    exit 1
fi

# Función para extraer las tasas de muestreo de los sinks de audio
extraer_tasas() {
    echo "$1" | jq -r '
        .[] 
        | select(.info.props."media.class" == "Audio/Sink") 
        | .info.params.Format[].rate' | sort -u
}

# Obtener las tasas iniciales
json_inicial=$(pw-dump)
tasas_previas=$(extraer_tasas "$json_inicial")
echo "Tasa(s) inicial(es): $tasas_previas"

# Suscribirse a los eventos en tiempo real con pw-dump -m
pw-dump -m | while read -r linea; do
    # Verificar si la línea contiene un objeto JSON completo
    if [[ "$linea" =~ ^\{.*\}$ ]]; then
        tasas_actuales=$(extraer_tasas "$linea")
        # Comparar con las tasas previas
        if [[ "$tasas_actuales" != "$tasas_previas" ]]; then
            echo "¡Cambio detectado en la tasa de muestreo!"
            echo "Tasa anterior(s): $tasas_previas"
            echo "Nueva tasa(s): $tasas_actuales"
            # Actualizar las tasas previas
            tasas_previas="$tasas_actuales"
        fi
    fi
done

