Browse Source

Move old radio and attachment diagnostics out of debug

master
evgeny 1 week ago
parent
commit
5b78ec04f6
  1. 24
      src/radio/radio_audio.c
  2. 26
      tools/chatgui/src/media_blocks.cpp

24
src/radio/radio_audio.c

@ -492,7 +492,7 @@ int radio_audio_capture_start(uint64_t group_id, int capture_channels, int vad_e
DEBUG_WARN(DEBUG_CATEGORY_RADIO, "%s: silero_vad_create_default failed — VAD auto-PTT disabled", RADIO_AUDIO_ID);
}
if (!g_vad_mode && g_vad_compressor) { audio_compressor_destroy(g_vad_compressor); g_vad_compressor = NULL; }
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "VAD config group=%016llx requested=%d ready=%d ch=%d threshold=%.3f confirm=%dx32ms "
DEBUG_INFO(DEBUG_CATEGORY_VAD, "VAD config group=%016llx requested=%d ready=%d ch=%d threshold=%.3f confirm=%dx32ms "
"hangover=%dms busy_hold=%dms prefetch=%dms compressor=%s max_gain=%.0fdB target=%.1fdBFS "
"history=%dms rise=%.1fx release=%.1fx block=%dms buffering=%dms", (unsigned long long)group_id,
vad_enabled, g_vad_mode, capture_channels, g_vad_threshold, RADIO_VAD_CONFIRM_WINDOWS,
@ -529,7 +529,7 @@ int radio_audio_capture_start(uint64_t group_id, int capture_channels, int vad_e
void radio_audio_capture_stop(void) {
radio_tx_lock();
if (g_encoder) {
if (g_vad_mode) DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "VAD capture stop group=%016llx windows=%llu talking=%d manual=%d "
if (g_vad_mode) DEBUG_INFO(DEBUG_CATEGORY_VAD, "VAD capture stop group=%016llx windows=%llu talking=%d manual=%d "
"transmitting=%d confirm=%d window_tail=%d pcm_tail=%d gain=%.1fdB",
(unsigned long long)g_group_id, (unsigned long long)g_vad_diag.total_windows,
g_vad_fsm.talking, g_vad_manual_ptt, g_transmitting, g_vad_fsm.confirm_count,
@ -630,7 +630,7 @@ static void radio_audio_talk(void* arg) {
if (talk->begin) {
uint64_t age_tb = get_time_tb() - talk->created_tb;
if (!current || age_tb > 2000) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "VAD/PTT BEGIN discarded group=%016llx generation=%llu burst=%llu "
DEBUG_WARN(DEBUG_CATEGORY_RADIO, "VAD/PTT BEGIN discarded group=%016llx generation=%llu burst=%llu "
"owner=%d current=%d queue_age=%.1fms limit=200ms", (unsigned long long)talk->group_id,
(unsigned long long)talk->generation, (unsigned long long)talk->burst, owner, current, age_tb / 10.0);
return;
@ -638,10 +638,10 @@ static void radio_audio_talk(void* arg) {
int rc = radio_talk_begin(talk->inst, talk->group_id);
if (rc == 0) {
g_net_generation = talk->generation; g_net_burst = talk->burst; g_net_group = talk->group_id;
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "VAD/PTT BEGIN dispatched group=%016llx generation=%llu burst=%llu queue_age=%.1fms",
DEBUG_DEBUG(DEBUG_CATEGORY_RADIO, "VAD/PTT BEGIN dispatched group=%016llx generation=%llu burst=%llu queue_age=%.1fms",
(unsigned long long)talk->group_id, (unsigned long long)talk->generation,
(unsigned long long)talk->burst, age_tb / 10.0);
} else DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "VAD/PTT BEGIN failed group=%016llx rc=%d queue_age=%.1fms",
} else DEBUG_WARN(DEBUG_CATEGORY_RADIO, "VAD/PTT BEGIN failed group=%016llx rc=%d queue_age=%.1fms",
(unsigned long long)talk->group_id, rc, age_tb / 10.0);
} else if (g_net_generation == talk->generation && g_net_burst == talk->burst && g_net_group == talk->group_id) {
if (owner) radio_talk_end(talk->inst, talk->group_id);
@ -786,7 +786,7 @@ static void radio_audio_update_transmission(void) {
}
if (radio_audio_post_talk(g_inst ? g_inst->ua : NULL, g_group_id, desired) != 0) { u_free(prefetch); return; }
g_transmitting = desired;
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: TX %s generation=%llu burst=%llu manual=%d vad=%d", RADIO_AUDIO_ID,
DEBUG_INFO(DEBUG_CATEGORY_RADIO, "%s: TX %s generation=%llu burst=%llu manual=%d vad=%d", RADIO_AUDIO_ID,
desired ? "BEGIN" : "FIN", (unsigned long long)g_tx_generation, (unsigned long long)g_tx_burst,
g_vad_manual_ptt, g_vad_fsm.talking);
if (desired && g_vad_mode) radio_audio_send_prefetch(prefetch);
@ -795,7 +795,7 @@ static void radio_audio_update_transmission(void) {
void radio_audio_capture_discontinuity(uint64_t group_id) {
radio_tx_lock();
if (g_active && g_group_id == group_id && g_encoder) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "%s: capture discontinuity tail=%d transmitting=%d vad_tail=%d vad_gain=%.1fdB",
DEBUG_WARN(DEBUG_CATEGORY_RADIO, "%s: capture discontinuity tail=%d transmitting=%d vad_tail=%d vad_gain=%.1fdB",
RADIO_AUDIO_ID, g_tx_pcm_frames, g_transmitting, g_vad_pcm_frames, audio_compressor_gain_db(g_vad_compressor));
radio_audio_flush_tx();
g_vad_win_len = g_vad_decimation = 0; g_vad_sum = 0;
@ -844,7 +844,7 @@ static void radio_audio_vad_sample(const int16_t* frame) {
if (gap_tb > g_vad_diag.max_gap_tb) g_vad_diag.max_gap_tb = gap_tb;
if (result != 0) {
++g_vad_diag.errors;
DEBUG_ERROR(DEBUG_CATEGORY_DEBUG, "VAD inference failed group=%016llx window=%llu rc=%d inference=%.1fms",
DEBUG_ERROR(DEBUG_CATEGORY_VAD, "VAD inference failed group=%016llx window=%llu rc=%d inference=%.1fms",
(unsigned long long)g_group_id, (unsigned long long)g_vad_diag.total_windows, result, inference_tb / 10.0);
}
struct radio_vad_fsm before = g_vad_fsm;
@ -861,7 +861,7 @@ static void radio_audio_vad_sample(const int16_t* frame) {
radio_audio_update_transmission();
if (transition || busy != g_vad_diag.last_busy || before.confirm_count != g_vad_fsm.confirm_count ||
!!before.silence_since_tb != !!g_vad_fsm.silence_since_tb) {
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "VAD decision group=%016llx window=%llu reason=%s probability=%.3f threshold=%.3f "
DEBUG_DEBUG(DEBUG_CATEGORY_VAD, "VAD decision group=%016llx window=%llu reason=%s probability=%.3f threshold=%.3f "
"talking=%d->%d confirm=%d->%d/%d silence=%.1f/%dms busy=%d rx_node=%016llx rx_age=%lldms "
"manual=%d transmitting=%d input=%.1fdBFS model=%.1fdBFS gain=%.1fdB inference=%.1fms gap=%.1fms",
(unsigned long long)g_group_id, (unsigned long long)g_vad_diag.total_windows, reason, probability, g_vad_threshold,
@ -871,7 +871,7 @@ static void radio_audio_vad_sample(const int16_t* frame) {
20.0f * log10f(fmaxf(model_rms, 0.000001f)), audio_compressor_gain_db(g_vad_compressor),
inference_tb / 10.0, gap_tb / 10.0);
}
DEBUG_TRACE(DEBUG_CATEGORY_DEBUG, "VAD window=%llu reason=%s probability=%.4f model_rms=%.6f peak=%.6f "
DEBUG_TRACE(DEBUG_CATEGORY_VAD, "VAD window=%llu reason=%s probability=%.4f model_rms=%.6f peak=%.6f "
"input_rms=%.6f agc_rms=%.6f confirm=%d talking=%d busy=%d manual=%d tx=%d inference=%.1fms gap=%.1fms",
(unsigned long long)g_vad_diag.total_windows, reason, probability, model_rms, peak, g_vad_input_rms, g_vad_output_rms,
g_vad_fsm.confirm_count, g_vad_fsm.talking, busy, g_vad_manual_ptt, g_transmitting, inference_tb / 10.0, gap_tb / 10.0);
@ -885,7 +885,7 @@ static void radio_audio_vad_sample(const int16_t* frame) {
if (model_rms > g_vad_diag.max_model_rms) g_vad_diag.max_model_rms = model_rms;
if (!g_vad_diag.stats_tb) g_vad_diag.stats_tb = now;
if (now - g_vad_diag.stats_tb >= RADIO_AUDIO_STATS_TB) {
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "VAD summary group=%016llx span=%.1fms windows=%u audio=%ums speech=%u "
DEBUG_DEBUG(DEBUG_CATEGORY_VAD, "VAD summary group=%016llx span=%.1fms windows=%u audio=%ums speech=%u "
"busy=%u confirm_resets=%u errors=%u probability=%.3f..%.3f threshold=%.3f reason=%s "
"input_peak=%.1fdBFS model_peak=%.1fdBFS gain=%.1fdB clips=%u inference_max=%.1fms gap_max=%.1fms "
"manual=%d talking=%d tx=%d tx_pending=%u control_pending=%u dropped=%u",
@ -916,7 +916,7 @@ static void radio_audio_vad_feed(const int16_t* frame) {
g_vad_input_rms = sqrtf((float)(g_vad_input_sum_sq / count));
g_vad_pcm_frames = 0; g_vad_input_sum_sq = 0;
if (audio_compressor_process_frame(g_vad_compressor, g_vad_pcm, g_vad_pcm, count) != 0) {
DEBUG_ERROR(DEBUG_CATEGORY_DEBUG, "%s: VAD compressor frame failed count=%d — auto-PTT disabled until capture restart",
DEBUG_ERROR(DEBUG_CATEGORY_VAD, "%s: VAD compressor frame failed count=%d — auto-PTT disabled until capture restart",
RADIO_AUDIO_ID, count);
g_vad_mode = 0; g_prefetch_write = g_prefetch_frames = 0;
radio_vad_fsm_reset(&g_vad_fsm);

26
tools/chatgui/src/media_blocks.cpp

@ -40,7 +40,7 @@ void MediaBlockReader::initFromAttrs(const QString& mediaDir,
for (const auto& v : bl) m_blocks.append(v.toInt());
m_complete = (m_blocks.size() == totalBlocks);
}
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MediaBlockReader: mode=%s complete=%d path=%s blocks=%d/%d",
DEBUG_DEBUG(DEBUG_CATEGORY_MEDIA, "MediaBlockReader: mode=%s complete=%d path=%s blocks=%d/%d",
m_mode == SINGLE_FILE ? "single" : "frag", m_complete,
qPrintable(debugPath()), m_blocks.size(), totalBlocks);
}
@ -53,7 +53,7 @@ MediaBlockReader MediaBlockReader::fromLegacyFile(const QString& filePath) {
QFileInfo fi(filePath);
r.m_fileSize = fi.size();
r.m_complete = fi.exists() && r.m_fileSize > 0;
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MediaBlockReader: legacy file=%s size=%lld valid=%d",
DEBUG_DEBUG(DEBUG_CATEGORY_MEDIA, "MediaBlockReader: legacy file=%s size=%lld valid=%d",
qPrintable(filePath), (long long)r.m_fileSize, r.m_valid);
return r;
}
@ -72,14 +72,14 @@ QString MediaBlockReader::blockFilePath(int n) const {
QByteArray MediaBlockReader::readAll() {
if (!m_valid || !m_complete || m_mode == NONE) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "MediaBlockReader::readAll: invalid/incomplete");
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "MediaBlockReader::readAll: invalid/incomplete");
return {};
}
if (m_mode == SINGLE_FILE) {
QFile f(m_filePath);
if (!f.open(QIODevice::ReadOnly)) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "MediaBlockReader::readAll: cannot open %s", qPrintable(m_filePath));
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "MediaBlockReader::readAll: cannot open %s", qPrintable(m_filePath));
return {};
}
QByteArray data = f.readAll();
@ -94,7 +94,7 @@ QByteArray MediaBlockReader::readAll() {
QString path = blockFilePath(n);
QFile f(path);
if (!f.open(QIODevice::ReadOnly)) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "MediaBlockReader::readAll: cannot open block %d: %s", n, qPrintable(path));
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "MediaBlockReader::readAll: cannot open block %d: %s", n, qPrintable(path));
return {};
}
qint64 sz = blockSizeForN(n);
@ -168,7 +168,7 @@ bool MediaBlockReader::saveToFile(const QString& destPath) {
QFile f(destPath);
if (!f.open(QIODevice::WriteOnly)) return false;
f.write(data);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "MediaBlockReader: saved to %s (%lld bytes)", qPrintable(destPath), (long long)data.size());
DEBUG_INFO(DEBUG_CATEGORY_MEDIA, "MediaBlockReader: saved to %s (%lld bytes)", qPrintable(destPath), (long long)data.size());
return true;
}
@ -180,7 +180,7 @@ QString MediaBlockReader::assembleAndCleanup() {
QFile af(assembledPath);
if (!af.open(QIODevice::WriteOnly)) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "MediaBlockReader::assemble: cannot create %s", qPrintable(assembledPath));
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "MediaBlockReader::assemble: cannot create %s", qPrintable(assembledPath));
return {};
}
@ -200,7 +200,7 @@ QString MediaBlockReader::assembleAndCleanup() {
m_filePath = assembledPath;
m_fileSize = m_totalSize;
m_blocks.clear();
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "MediaBlockReader: assembled %s", qPrintable(assembledPath));
DEBUG_INFO(DEBUG_CATEGORY_MEDIA, "MediaBlockReader: assembled %s", qPrintable(assembledPath));
return assembledPath;
}
@ -238,13 +238,13 @@ MediaBlockInfo media_split_to_blocks(const QString& srcFile,
MediaBlockInfo info;
QFileInfo fi(srcFile);
if (!fi.exists()) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "media_split_to_blocks: src not found: %s", qPrintable(srcFile));
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "media_split_to_blocks: src not found: %s", qPrintable(srcFile));
return info;
}
info.fileSize = fi.size();
if (info.fileSize == 0) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "media_split_to_blocks: empty file: %s", qPrintable(srcFile));
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "media_split_to_blocks: empty file: %s", qPrintable(srcFile));
return info;
}
@ -262,7 +262,7 @@ MediaBlockInfo media_split_to_blocks(const QString& srcFile,
QFile src(srcFile);
if (!src.open(QIODevice::ReadOnly)) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "media_split_to_blocks: cannot open src: %s", qPrintable(srcFile));
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "media_split_to_blocks: cannot open src: %s", qPrintable(srcFile));
return info;
}
@ -273,7 +273,7 @@ MediaBlockInfo media_split_to_blocks(const QString& srcFile,
.arg(mediaDir, info.dt).arg(n).arg(info.basename, info.suffix, info.ext);
QFile dst(path);
if (!dst.open(QIODevice::WriteOnly)) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "media_split_to_blocks: cannot create block %d: %s", n, qPrintable(path));
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "media_split_to_blocks: cannot create block %d: %s", n, qPrintable(path));
src.close(); return info;
}
dst.write(src.read(chunk));
@ -284,7 +284,7 @@ MediaBlockInfo media_split_to_blocks(const QString& srcFile,
if (removeSrc) QFile::remove(srcFile);
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "media_split_to_blocks: %s -> %d blocks (%lld bytes each) in %s",
DEBUG_DEBUG(DEBUG_CATEGORY_MEDIA, "media_split_to_blocks: %s -> %d blocks (%lld bytes each) in %s",
qPrintable(fi.fileName()), info.numBlocks, (long long)info.blockSize, qPrintable(mediaDir));
return info;
}

Loading…
Cancel
Save