]> git.sesse.net Git - nageru/blobdiff - mixer.cpp
Make sure no frames are lost in storage on shutdown.
[nageru] / mixer.cpp
index 74d2bf6f19b79466f1e8d7858563e0f7d64fdd77..1a4a3f9d3c292f4d4aaa85a4415c8420bc1083b7 100644 (file)
--- a/mixer.cpp
+++ b/mixer.cpp
@@ -204,7 +204,7 @@ float find_peak(const float *samples, size_t num_samples)
 {
        float m = fabs(samples[0]);
        for (size_t i = 1; i < num_samples; ++i) {
-               m = std::max(m, fabs(samples[i]));
+               m = max(m, fabs(samples[i]));
        }
        return m;
 }
@@ -312,11 +312,12 @@ void Mixer::bm_frame(unsigned card_index, uint16_t timecode,
                if (card->should_quit) return;
        }
 
+       size_t expected_length = width * (height + extra_lines_top + extra_lines_bottom) * 2;
        if (video_frame.len - video_offset == 0 ||
-           video_frame.len - video_offset != size_t(width * (height + extra_lines_top + extra_lines_bottom) * 2)) {
+           video_frame.len - video_offset != expected_length) {
                if (video_frame.len != 0) {
-                       printf("Card %d: Dropping video frame with wrong length (%ld)\n",
-                               card_index, video_frame.len - video_offset);
+                       printf("Card %d: Dropping video frame with wrong length (%ld; expected %ld)\n",
+                               card_index, video_frame.len - video_offset, expected_length);
                }
                if (video_frame.owner) {
                        video_frame.owner->release_frame(video_frame);
@@ -352,6 +353,8 @@ void Mixer::bm_frame(unsigned card_index, uint16_t timecode,
                clock_gettime(CLOCK_MONOTONIC, &frame_upload_start);
        }
        userdata->last_interlaced = interlaced;
+       userdata->last_frame_rate_nom = frame_rate_nom;
+       userdata->last_frame_rate_den = frame_rate_den;
        RefCountedFrame new_frame(video_frame);
 
        // Upload the textures.