]> git.sesse.net Git - casparcg/commitdiff
[framerate_producer] Fixed bug when INFO was used on a not yet playing framerate...
authorHelge Norberg <helge.norberg@svt.se>
Tue, 17 Jan 2017 15:36:51 +0000 (16:36 +0100)
committerHelge Norberg <helge.norberg@svt.se>
Tue, 17 Jan 2017 15:36:51 +0000 (16:36 +0100)
CHANGELOG
core/producer/framerate/framerate_producer.cpp

index 9d97e91c61e9e0c980a3e41c3d05555bc1d88a7c..1d9deb884a0331f4d7cd4fdf215bd04655a2a877 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -37,6 +37,8 @@ Producers
   o FFmpeg producer:\r
     + Increased the max number of frames that audio/video can be badly\r
       interleaved with (Dimitry Ishenko).\r
+  o Framerate producer:\r
+    + Fixed bug when INFO was used on a not yet playing framerate producer.\r
 \r
 Mixer\r
 -----\r
index b6141cc0b1762fd87ca1967b63fb6b1a67fb0004..5125ebae3baeb7391775a0fdb6b0de5327dd8d50 100644 (file)
@@ -313,6 +313,9 @@ public:
 
        uint32_t nb_frames() const override
        {
+               if (!is_initialized())
+                       return std::numeric_limits<uint32_t>::max();
+
                auto source_nb_frames = source_->nb_frames();
                auto multiple = boost::rational_cast<double>(1 / get_speed() * (output_repeat_ != 0 ? 2 : 1));
 
@@ -321,6 +324,9 @@ public:
 
        uint32_t frame_number() const override
        {
+               if (!is_initialized())
+                       return 0;
+
                auto source_frame_number = source_->frame_number() - 1; // next frame already received
                auto multiple = boost::rational_cast<double>(1 / get_speed() * (output_repeat_ != 0 ? 2 : 1));
 
@@ -332,6 +338,11 @@ public:
                return source_->pixel_constraints();
        }
 private:
+       bool is_initialized() const
+       {
+               return source_framerate_ != -1;
+       }
+
        draw_frame do_render_progressive_frame(bool sound)
        {
                user_speed_.fetch_and_tick();