]> git.sesse.net Git - nageru/commitdiff
Make the audio resampler panic message slightly more readable.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 7 May 2016 23:59:07 +0000 (01:59 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 7 May 2016 23:59:22 +0000 (01:59 +0200)
mixer.cpp
resampling_queue.cpp
resampling_queue.h

index fa3a6de81086d4aa03bd7a8a83c3133f3909e151..1d71ac897bf3bceeb9966eb6c85678decc03bf83 100644 (file)
--- a/mixer.cpp
+++ b/mixer.cpp
@@ -853,9 +853,7 @@ void Mixer::process_audio_one_frame(int64_t frame_pts_int, int num_samples)
                samples_card.resize(num_samples * 2);
                {
                        unique_lock<mutex> lock(cards[card_index].audio_mutex);
-                       if (!cards[card_index].resampling_queue->get_output_samples(double(frame_pts_int) / TIMEBASE, &samples_card[0], num_samples)) {
-                               printf("Card %d reported previous underrun.\n", card_index);
-                       }
+                       cards[card_index].resampling_queue->get_output_samples(double(frame_pts_int) / TIMEBASE, &samples_card[0], num_samples);
                }
                if (card_index == selected_audio_card) {
                        samples_out = move(samples_card);
index ab20b410623b348d3fab0b6ff65753f128e1747e..9e8fb7d58da6d85049c3a895780c9bc2eed8578b 100644 (file)
@@ -26,8 +26,8 @@
 #include <string.h>
 #include <zita-resampler/vresampler.h>
 
-ResamplingQueue::ResamplingQueue(unsigned freq_in, unsigned freq_out, unsigned num_channels)
-       : freq_in(freq_in), freq_out(freq_out), num_channels(num_channels),
+ResamplingQueue::ResamplingQueue(unsigned card_num, unsigned freq_in, unsigned freq_out, unsigned num_channels)
+       : card_num(card_num), freq_in(freq_in), freq_out(freq_out), num_channels(num_channels),
          ratio(double(freq_out) / double(freq_in))
 {
        vresampler.setup(ratio, num_channels, /*hlen=*/32);
@@ -129,8 +129,8 @@ bool ResamplingQueue::get_output_samples(double pts, float *samples, ssize_t num
                if (buffer.empty()) {
                        // This should never happen unless delay is set way too low,
                        // or we're dropping a lot of data.
-                       fprintf(stderr, "PANIC: Out of input samples to resample, still need %d output samples!\n",
-                               int(vresampler.out_count));
+                       fprintf(stderr, "Card %u: PANIC: Out of input samples to resample, still need %d output samples! (correction factor is %f)\n",
+                               card_num, int(vresampler.out_count), rcorr);
                        memset(vresampler.out_data, 0, vresampler.out_count * 2 * sizeof(float));
                        return false;
                }
index c085eceb6755838ea12001cf6aa6d39a6f21e1d5..e43e0ea073767e45b787b2d5c9913df36eb4b22e 100644 (file)
@@ -47,7 +47,8 @@
 
 class ResamplingQueue {
 public:
-       ResamplingQueue(unsigned freq_in, unsigned freq_out, unsigned num_channels = 2);
+       // card_num is for debugging outputs only.
+       ResamplingQueue(unsigned card_num, unsigned freq_in, unsigned freq_out, unsigned num_channels = 2);
 
        // Note: pts is always in seconds.
        void add_input_samples(double pts, const float *samples, ssize_t num_samples);
@@ -58,6 +59,7 @@ private:
 
        VResampler vresampler;
 
+       unsigned card_num;
        unsigned freq_in, freq_out, num_channels;
 
        bool first_input = true, first_output = true;